【0008】
次に、本発明の実施形態について図面を参照して詳細に説明する。
(第1の実施形態)
図1は本発明の第1の実施形態の構成管理装置1の構成を表すブロック図である。
図1を参照すると、本実施形態の構成管理装置1は、機器記憶部10と、暫定解記憶部11と、探索範囲記憶部12と、探索実行部13と、出力部14を含む。構成管理装置1は、初期解算出部15と、指標取得部16を含んでいてもよい。また、構成管理装置1には、端末2が接続されている。構成管理装置1には、ファイル31を含むサーバ3が接続されていてもよい。なお、サーバ3は存在せず、構成管理装置1がファイル31を含んでいてもよい。
本実施形態の構成管理装置1は、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。機器記憶部10と、暫定解記憶部11と、探索範囲記憶部12は、コンピュータが含むメモリやハードディスク装置により実現することができる。また、探索実行部13と、出力部14と、初期解算出部15と、指標取得部16は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。あるいは、機器記憶部10と、暫定解記憶部11と、探索範囲記憶部12と、探索実行部13と、出力部14と、初期解算出部15と、指標取得部16の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
機器記憶部10は、少なくとも2つの異なる指標を持つ複数の種類(J個の種類)の機器の、2つの指標を、種類毎に記憶する。機器は、例えばサーバなどの計算装置やCPU等である。2つの指標のうち、第1の指標(P1)は、例えば、機器の性能を表す指標である。性能を表す指標は、例えば、スループットや、MIPS値、FLOPS(Floating point number Operations Per Second)値等の指標である。また、第1の指標は、例えば、信頼性や可用性等を表す指標であってもよい。2つの指標のうち、第2の指標(P2)は、例えば、機器のコストを表す指標である。コストを表す指標は、例えば、価格、消費電力、排熱量、重量、設置スペース等の、システムの構築や運用の費用に影響する指標である。また、第2の指標は、例えば、機器を構成する部品数などの値であってもよい。複数の機器に対するこれらの2つの指標は、それぞれの機器の2つの指標を合計した値である。
例えば、機器が計算装置であり、第1の指標が性能を表し、第2の指標が価格である場合、複数種類の機器から選択した1台以上の機器の集合で構成される計算機システムの性能は、集合に含まれる機器の、第1の指標の合計で表される。また、この計算機システムの価格は、集合に含まれる機器の、第2の指標の合計である。
以下の説明では、第1の指標の合計が所定値(必要値)を上回る機器の集合(充足集合)のうち、第2の指標の合計が最小となる集合が、最小集合である。最小集合に属する機器の第2の指標の合計が最小合計である。必要値は、例えば、ユーザが、端末2が備える図示しない入力手段を介して、機器構成装置1に入力した値であればよい。また、後述の探索実行部13が、後述の探索を既に行った各充足集合の中で、第2の指標の合計が最小となる集合が暫定集合である。そして、暫定集合に属する機器の第2の指標の合計が暫定解である。
なお、本実施形態では、機器の集合が含みうる各種類の機器の台数に制限はない。一般に、機器の集合が含みうる各種類の機器の台数に制限を設けず、所定の条件下で最適な機器の組合せを導出する問題は、無制限問題と呼ばれる。例えば、複数種類の計算機から選択した1台以上の計算機で構成される情報処理システムを新たに導入する場合に、導入する各種類の機器の台数に制限がなければ、所定の性能を満たし、最もコストの安い計算機を導出する問題は、無制限問題である。
機器記憶部10が記憶する各機器の第1の指標及び第2の指標は、予め与えられていればよい。あるいは、後述するように、指標取得部16が、これらの指標をファイル31から取得してもよい。また、例えば、ユーザが、端末2を介して、これらの指標を構成管理装置1に入力し、機器記憶部10に記憶させてもよい。
初期解算出部15は、例えば、それなりによい解を高い確率で求める手法(ヒューリスティクス)を使って、暫定解の初期値(初期解)を算出する。ヒューリスティクスは、必ず最小合計を算出する方法である必要はない。ヒューリスティクスは、第1の指標の合計が必要値を上回る機器の集合を、最小合計を必ず算出する方法よりおおむね短時間で抽出できる方法であればよい。ヒューリスティクスは必ず最小合計を算出する手法ではないので、初期解算出部15が算出する暫定解の初期値は、最小合計以上の値である。初期解算出部15が使うヒューリスティクスの例については後述する。一般的なヒューリスティクスの例として、遺伝的アルゴリズムや焼きなまし法、ニューラルネットを利用したアルゴリズムなどがある。
初期解算出部15は、算出した暫定解の初期値と、対応する機器の集合(暫定集合の初期値)を表す情報を、暫定解記憶部11に格納する。
暫定解記憶部11は、暫定解と、暫定集合を表す情報を記憶する。暫定解記憶部11が初期状態で記憶する暫定解と、暫定集合を表す情報は、前述のように、例えば初期解算出部15が算出した暫定解の初期値と、暫定集合の初期値を表す情報であればよい。
暫定解記憶部11は、初期状態で、初期解算出部15が算出した暫定解の初期値を記憶せず、コンピュータ上で表現できる十分大きな値を、暫定解としてあらかじめ記憶していてもよい。この場合、暫定解記憶部11は、初期状態では暫定解に対応する暫定集合を記憶していなくてよい。さらに、この場合、初期解算出部15は存在しなくてもよい。ただし、この場合は、探索の効率が低下する可能性が高くなる。
探索範囲記憶部12は、1からj番目(jは1以上J−1以下の整数)の種類の機器の台数である、n(1)からn(j)を記憶する。後述の探索実行部13は、探索範囲記憶部12に格納されている機器の台数を読み出し、読み出した機器の台数に基づき定めた機器の集合を探索の対象とすることができる。例えば、探索範囲記憶部12に、1からj番目の種類の機器の台数であるn(1)からn(j)が格納されている場合、探索実行部13は、1からj番目の種類の機器の台数が、それぞれn(1)からn(j)である機器の集合を探索の対象とすればよい。この場合、探索範囲記憶部12が記憶するn(1)からn(j)は、探索の対象となる機器の集合の集まりである探索範囲を表す。
探索実行部13は、複数種類の機器で構成される機器の集合のうち、第1の指標の合計が必要値以上である集合(前述の充足集合)の集まりである探索範囲から、第2の指標の合計が暫定解以下となる機器の組合せを抽出する探索を行う。探索実行部13は、探索の際、探索範囲を複数の探索範囲に分割する。そして、探索実行部13は、分割した探索範囲毎に最小集合を含む可能性の有無を判定する。探索実行部13は、判定の結果最小集合を含む可能性がない探索範囲を、探索の対象から除外する。探索については、本実施形態の動作の説明において詳細に述べる。探索実行部13が、探索の対象から除外しなかった探索範囲全て対する探索を終了した後の暫定集合が、最小集合である。
出力部14は、探索実行部13による探索の終了後、暫定解記憶部11が記憶する暫定集合を表す情報を、最小集合を表す情報として、端末2に出力する。
端末2は、出力部14が出力する最小集合を表す情報を表示する。端末2による表示は、最小集合にどの種類の機器が何台含まれるか分かる形式であれば、どのような形式の表示であっても構わない。
指標取得部16は、例えばサーバ3が記憶するファイル31に含まれる各機器の第1の指標及び第2の指標を抽出し、機器記憶部10に格納する。
サーバ3は、構成管理装置1と同一の装置であってもよく、例えばネットワークで通信可能に接続された他の装置であってもよい。
ファイル31は、例えば、各機器のベンダがインタネット上で公開している、各機器の仕様が記載された1つ又は複数のウェブページを構成する1つ又は複数のファイルや、各機器の仕様を含むデータベースを構成するファイルである。
指標取得部16は、例えば、端末2の図示しない入力部等を介した、ウェブページ等を特定するURI(Uniform Resource Identifier)等を指定したユーザの指示により、ファイル31を取得する。指標取得部16は、ファイル31に含まれる各機器の第1の指標及び第2の指標を、例えば「性能」や「価格」、「消費電力」、「部品数」などの文字列をキーに抽出する。指標取得部16は、抽出した各機器の第1の指標及び第2の指標を、機器記憶部10に格納する。また、指標取得部16は、端末2の図示しない入力部等を介した、データベースに対するクエリ等を指定した指示により、データベースから第1の指標及び第2の指標を取得してもよい。指標取得部16は、ファイル31から、指標を得るための情報(例えば機器のCPUやクロック数等)を抽出してもよい。そして、指標取得部16は、抽出した情報を元に、指標が格納されているデータベースから第1の指標及び第2の指標を取得してもよい。
なお、指標取得部16、サーバ3及びファイル31は、存在しなくてもよい。その場合、機器記憶部10が、あらかじめ、少なくとも2つの異なる指標を持つ複数の種類(J個の種類)の機器の2つの指標を、種類毎に記憶していればよい。
次に、本実施形態の構成管理装置1の動作について、図面を参照して詳細に説明する。
図2は、本実施形態の構成管理装置1が機器の指標を取得する動作の例を表すフローチャートである。
図2を参照すると、指標取得部16は、まず、例えば端末2の図示しない入力部を介した指示を受け、機器の種類毎の第1の指標及び第2の指標を含むファイル31を取得する(ステップS61)。
指標取得部16は、次に、取得したファイル31から、機器の種類毎の第1の指標及び第2の指標を抽出する(ステップS62)。
指標抽出部16は、抽出した機器の種類毎の第1の指標及び第2の指標を、機器の種類に対応付けて機器記憶部10に格納する(ステップS63)。
図3は、本実施形態の構成管理装置1が最小集合(解)を抽出する動作の例の全体を表すフローチャートである。
図3を参照すると、構成管理装置1の探索実行部13が、まず、端末2の図示しない入力部などを介して、必要値Nを受信する(ステップS1)。
次に、初期解算出部15が、例えば探索実行部13から受信した必要値Nと、機器記憶部10から受信した機器の種類各々の第1の指標及び第2の指標をもとに、ヒューリスティクスを使って暫定解の初期値を算出する(ステップS2)。初期解算出部15は、暫定解に対応する暫定集合を表す情報と共に、暫定解記憶部11に格納する。
本実施形態の初期解算出部15が暫定解の初期値を算出するヒューリスティクスの例は、次の通りである。初期解算出部15は、例えば、機器の種類毎に第2の指標に対する第1の指標の比(指標比)を算出すればよい。そして、初期解算出部15は、指標比が最も大きい種類の機器のみで充足集合を構成した場合の機器の最小台数を算出すればよい。初期解算出部15は、算出した最小台数の、指標比が最も大きい種類の機器で構成される集合を暫定集合の初期値にすればよい。そして、初期解算出部15は、暫定集合の初期値の第2の指標の合計を暫定解の初期値にすればよい。なお、第1の指標が性能を表し、第2の指標がコストを表す場合、指標比はコストパフォーマンス(コスト性能比)を表す。
図5は、機器記憶部10が記憶する機器情報(機器の種類毎の第1の指標及び第2の指標)の一例を表す図である。
図5の例では、機器記憶部10は、機種Aから機種Cの3種類の機器の第1の指標及び第2の指標を記憶する。
初期解算出部15はこれらの指標を機器記憶部10から読み出し、機器の種類毎に指標比を算出する。
図6は、
図5に示す機器情報の例から算出した指標比を表す図である。
図6を参照すると、この場合、指標比が最も大きいのは機種Cであり、その指標比は0.88である。
例えば、必要値Nが15の場合、機種Cの第1の指標は7であり、15/7は約2.14なので、機種Cのみで必要値を満たすためには、3台の機種Cが必要である。3台の機種Cで構成される集合の第2の指標の合計は24である。この場合、初期解算出部15は、暫定解として24を、暫定解記憶部11に格納すればよい。そして、初期解算出部15は、暫定集合として3台の機種Cで構成される集合を表す情報を、暫定解記憶部11に格納すればよい。
図7は、暫定解が24、暫定集合が3台の機種Cで構成される集合である場合の、暫定解記憶部11が記憶する暫定解及び暫定集合を表す情報を表す図である。
次に、探索実行部13が、複数種類の機器をあわせて1台以上含み、第1の指標の合計値が必要値N以上である集合から、第2の指標の合計が最小である最小集合を抽出する処理である探索を行う(ステップS3)。
探索実行部13は、分枝限定法に基づいた探索を行う。詳細は
図4の説明で述べるが、分枝限定法に基づく探索は、概略以下の通りである。
探索実行部13は、機器の集合の集まりである探索範囲に対して網羅的に探索を行う前に、探索範囲を複数の探索範囲に分割する。そして、探索実行部13は、分割した探索範囲に最小集合が含まれる可能性の有無の判定を行う。探索実行部13は、探素範囲に含まれる機器の集合で、所定の一部の種類の機器の台数が同じ集合の集まりを、新たな探索範囲にすることで、探索範囲の分割を行えばよい。
前述のように、探索範囲記憶部12がn(1)からn(j)を記憶している場合、探索実行部13は、探索実行部13は、n(1)からn(j)を探索範囲記憶部12から読み出せばよい。そして、探索実行部13は、読み出したn(1)からn(j)によって探索範囲を定めればよい。探索実行部13は、1からj番目の種類の機器の台数がそれぞれn(1)からn(j)である機器の集合の集まりを探索範囲(探索範囲(j))にすればよい。
探索範囲記憶部12がn(1)からn(j)を記憶している場合にこのようにして定まる探索範囲(j)に対して、探索実行部13行う探索が、「探索(j)」である。探索(j)において、探索実行部13は、探索範囲記憶部12から読み出した、n(1)からn(j)によって定めた探索範囲(j)を、複数の探索範囲に分割する。そして、探索実行部13は、分割した探索範囲に最小集合が含まれる可能性の有無の判定を行う。探索実行部13は、たとえば、探索範囲(j)をj+1番目の種類の機器の台数が同じ集合の集まりに分割すればよい。たとえば、探索範囲(j)を分割して、j+1番目の種類の機器の台数n(j+1)がある値である機器の集合を新たな探索範囲にする場合、探索実行部13は、その値のであるn(j+1)を探索範囲記憶部12に記憶させればよい。この場合に探索範囲記憶部12が記憶するn(1)からn(j+1)で定まる探索範囲が探索範囲(j+1)である。また、探索範囲(j+1)に対して探索実行部13が行う探索が、探索(j+1)である。
また、探索(0)は、探索範囲記憶部12がいずれの種類の機器の台数も記憶していない場合の探索範囲に対して、探索実行部13が行う探索である。探索範囲記憶部12がいずれの種類の機器の台数も記憶していない場合の探索範囲は、探索範囲の初期値(探索範囲(0))である。探索範囲(0)については後述する。
探索実行部13は、探索範囲に最小集合が含まれる可能性の有無の判定を、その探索範囲が含む機器の第2の指標の理論上の下限値と暫定解の比較によって行えばよい。探索実行部13は、例えば緩和法を用いてこの下限値を算出すればよい。この下限値が暫定解より大きい場合、その探索範囲に、第2の指標の合計が暫定解より小さい値である集合が含まれる可能性はない。この場合、探索実行部13は、その探索範囲を探索の対象から除外し(枝刈り、pruning)、その探索範囲に対する探索を行わない。下限値が暫定解よりも小さい場合は、これらの集合に、第2の指標の合計が暫定解よる小さい値である集合が含まれる可能性がある。この場合、探索実行部13は、これらの集合に対して探索を実行する。この、探索を行うか否かを判定する判定処理が、限定操作である。
探索実行部13は、探索が必要と判定した探索範囲を、さらに複数の探索範囲に分割し、分割した各探索範囲で探索が必要か不要かを判定してもよい。探索実行部13は、さらに分割した各探索範囲のうち、探索が必要と判定した探索範囲のみで探索を実行すればよい。
探索実行部13は、第2の指標の合計が明らかに最小合計ではない充足集合を、探索範囲に含める必要はない。例えば、1番目の種類の機器のみで充足集合を構成した時の、機器の最小台数p(1)より多くの台数の1番目の種類の機器を含む充足集合の、第2の指標の合計は、明らかに最小合計ではない。探索実行部13は、このような集合を、探索範囲から除外しておけばよい。探索実行部13は、例えば、1番目の種類の機器のみで充足集合を構成した時の機器の最小台数p(1)を算出し、1番目の機器が0台以上p(1)台以下である充足集合の集まりを、探索範囲の初期値(探索範囲(0))にすればよい。探索実行部13が、1番目の種類の機器の第1の指標及び第2の指標を機器記憶部10から読み出し、必要値Nと、読み出した第1の指標及び第2の指標をもとに、p(1)を算出すればよい。なお、機器の種類の順番は任意の順番でよいが、指標比が大きい順または小さい順にすると探索効率が向上する場合がある。
ステップS3の処理については、
図4の説明において詳細に述べる。
出力部14は、探索実行部13による探索の終了後、暫定解記憶部11に格納されている暫定集合を表す情報を読み出し、端末2に対して出力する(ステップS4)。
例えば、暫定解記憶部11に格納されている暫定解が20であり、暫定集合を表す情報が、「機種Aが1台、機種Bが1台、機種Cが1台」であることを表す情報であった場合、出力部14は、暫定集合を表す情報を、例えば端末2に、所定の形式で出力すればよい。出力の形式は、例えば「((A,1),(B,1),(C,1))」のようなデータであっても、「機種A:1台、機種B:1台、機種C:1台」のような文字列であってもよい。また、出力部14は、暫定解を出力してもよい。
図4は、ステップS2の探索時の構成管理装置1の動作の例を表すフローチャートである。
図4を参照すると、探索実行部13は、機器の種類の順番を表すj(jは1以上J−1以下のいずれかの整数)を与えられて探索の処理を開始する。
探索範囲記憶部12は、探索の動作の開始時に、1乃至j番目の種類の機器の台数(それぞれn(1)からn(j))を記憶している。探索(j)における探索の対象となる機器の集合は、1番目からj番目の機器の台数がそれぞれn(1)からn(j)である機器の集合である。従って、探索(j)における探索の対象となる機器の集合の集まりである探索範囲(j)は、探索(j)の動作の開始時に探索範囲記憶部12が記憶している各種類の機器の台数n(1)からn(j)によって定まる。ただし、jが0である場合、探索範囲記憶部12に機器の台数は格納されていない。
jが0である場合(ステップS11、N)、探索範囲は初期値(探索範囲(0))である。
図3のステップS3の探索(0)は、探索実行部13が、探索範囲(0)に対して、
図4に示す処理を行うことを意味する。
jが0より大きい場合(ステップS11、Y)、探索実行部13は、探索範囲記憶部12から、1番目からj−1番目の種類の機器の台数n(1)からn(j)を読み出す(ステップS12)。この場合の探索範囲は、1番目からj番目の機器の台数がそれぞれn(1)からn(j)である機器の集合の集まりである。
次に、探索実行部13は、台数がそれぞれn(1)からn(j)の1乃至j番目の種類の機器とj+1番目の機器で充足集合を構成する場合の、j+1番目の機器の最小台数p(j+1)を算出する(ステップS13)。探索実行部13は、必要値Nと、n(1)からn(j)までの値と、機器記憶部10から読み出した1乃至j+1番目の種類の機器の第1の指標から、p(j+1)の算出を行えばよい。このように、n(1)からn(j)までの値に応じて、1乃至j+1番目の種類の機器のみで充足集合を構成する場合のj+1番目の種類の機器の最小台数p(j+1)を算出する方法が、「細かい方法」である。具体的には、探索実行部13は、まず、それぞれn(1)からn(j)台の1乃至j番目の種類の機器の、第1の指標の合計を算出すればよい。次に探索実行部13は、必要値Nと算出した第1の指標の合計の差を算出すればよい。探索実行部13は、算出した差をj+1番目の種類の機器の第1の指標の値で割り、小数点以下の端数を切り上げた値をp(j+1)にすればよい。探索実行部13は、1番目からj番目の種類の機器の台数がそれぞれn(1)からn(j)であり、j+1番目の種類の機器の台数がp(j+1)+1台以上である集合を、探索の対象にする必要はない。
次に、探索実行部13は、探索の対象となる集合が含むj+1番目の種類の機器の最大台数r(j+1)を算出する(ステップS14)。
本実施形態では、各種類の機器の台数に制限はないので、探索実行部13は、p(j+1)をr(j+1)にすればよい。なお、集合が含むことができるj+1種類の機器の台数に限りがある場合、探索実行部13は、p(j+1)とj+1番目の種類の機器の最大台数のいずれか小さい方を、r(j+1)にすればよい。この場合、r(j+1)の値はp(j+1)以下である。集合が含むことができる機器の種類毎の台数に限りがある場合については、後述の変形例1及び変形例2において詳細に説明する。
あるいは、探索実行部13は、j+1番目の機器のみで充足集合を構成した場合の機器の最小台数を算出し、r(j+1)にしてもよい。このように、機器の集合を構成する1乃至j番目の種類の機器の台数によらず、j+1番目の種類の機器のみで充足集合を構成した場合の最小台数を算出し、探索の対象とする機器の集合のj+1番目の種類の機器の最大台数とする方法が、「荒い方法」である。荒い方法でr(j+1)を算出する場合、探索実行部13は、必要値を各機種の第1の指標で割り、割り切れない場合は小数点以下を切り上げた値を、r(j+1)にすればよい。なお、集合が含むことができるj+1種類の機器の台数に限りがある場合、探索実行部13は、j+1番目の機器のみで充足集合を構成した場合の機器の最小台数とj+1番目の種類の機器の最大台数のいずれか小さい方を、r(j+1)にすればよい。荒い方法でr(j+1)を算出する場合、探索実行部13は、ステップS13の処理を行わなくてよい。
前述の細かい方法でr(j+1)を算出する場合、1番目からj番目の種類の機器の台数によってr(j+1)の値は異なる。しかし、荒い方法でr(j+1)の算出を行う場合、1番目からj番目の種類の機器の台数によらずr(j+1)の値は一定である。例えば、必要値が15である場合、j+1番目の種類の機器が前述の機種Aであれば、r(j+1)は、15/3=5なので、1番目からj番目の種類の機器の台数によらず5である。同様に、j+1番目の種類の機器が前述の機種Bであれば、r(j+1)は、15/5=3なので、1番目からj番目の種類の機器の台数によらず3である。また、j+1番目の種類の機器が前述の機種Cであれば、r(j+1)は、15/7=2.14...なので、1番目からj番目の種類の機器の台数によらず3である。荒い方法で算出したr(j+1)は、細かい方法で算出したr(j+1)以上の値である。
ところで、探索実行部13が探索の対象とする機器の集合を、探索木の形で図示することが可能である。探索実行部13は、探索の対象となる機器の集合を、既存の任意の形式の探索木のデータとして表し、処理を行うこともできる。探索実行部13は、探索時に、探索範囲を適宜探索木に展開し、例えば探索範囲記憶部12に格納してもよい。
図8は、
図5に示す機器の例における、探索木の例の一部を表す図である。
図8の機種A、機種B、機種Cが、それぞれ1乃至3番目の種類の機器に相当する。
図8の探索木において、円はノードを表し、ノード間を結ぶ線は枝を表す。この探索木は4つの階層をもち、最上部(第1階層)のノードが根ノード、最下層(第4階層)のノードが葉ノード、これらの間にあるノードが中間ノードである。
第2から第4の3つの階層は、1から3番目の種類の機器(順に、機種A、機種B、機種C)に対応する。
最上部以外の各階層のノードに表記された数字は、対応する機種の台数を表している。そして、根ノードから葉ノードへと至る各経路が、機種の集合に対応している。たとえば、
図5中の、根ノードから、機種Aの台数0、機種Bの台数0、機種Cの台数3に至る経路は、3台の機種Cの集合を表す。以降の説明では、便宜上、「0台の機種A」に対応するノードを(A,0)と表記し、機器の集合を((A,0),(B,0),(C,3))のように表記する。
例えば、ノード(A,0)に対応するのは、1番目の種類(機種A)の台数n(1)が0である機器の集合の集まりである。すなわち、ノード(A,0)は、n(1)=0で表される探索範囲を表す。同様に、「0台の機種A、0台の機種B」に対応するノード((A,0),(B,0))は、n(1)=0及びn(2)=0で表され、1番目の種類(機種A)の台数n(1)が0、2番目の種類(機種B)の台数n(2)が0である探索範囲を表す。
探索実行部13の動作は、根ノードから最後(J番目)の種類の機器に相当する根ノードまで、各ノードの一段下層のノードを順次展開しながら、機器の集合に相当する根ノードから各葉ノードにいたる経路を、順次探索して最小集合を抽出することに相当する。例えば、
図5の例の場合、探索実行部13は、全てのノードを展開するのであれば、まず根ノードで一段下層のノードである(A,0)から(A,5)のノードを展開する。探索実行部13は、次に、(A,0)のノードで一段下層のノードである((A,0),(B,0))から((A,0),(B,3))を展開する。探索実行部13は、ノード((A,0),(B,0))の一段下層のノードは葉ノードなので、一段下層のノードを展開して探索を行う。探索実行部13は、同様に((A,0),(B,1))から((A,0),(B,3))の一段下層のノードを展開して探索を行う。探索実行部13は、ノード(A,0)を含む経路上の全てのノードの展開及び探索が終了すると、同様にノード(A,1)を含む経路上の全てのノードの展開及び探索を行う。ただし、本実施形態の探索実行部13は、以下で説明するように、全てのノードの展開及び探索を行う訳ではない。
探索実行部13は、展開した各ノードにおいて、そのノードを通る経路全てに相当する機器の集合の集まりの、第2の指標の下限値を算出し、その下限値が暫定解を上回る場合は、そのノードを通る経路全てを探索の対象から除外する「枝刈り」を行う。探索実行部13は、途中のノードで枝刈りを行わずに葉ノードを展開した場合に、葉ノードまでの経路に相当する機器の集合の第2の指標の合計を算出し、暫定解と比較する。探索実行部13は、算出した第2の指標の合計が暫定解を下回った場合、その合計を新しい暫定解に、対応する機器の集合を新しい暫定集合にする。
以上の動作において、ステップS14は、各ノードで、一段下層のノードを展開する際の、一段下層のノードへの枝の数を算出することに相当する。
各ノードから一段下層のノードへの枝の数が分岐係数である。種類毎の機器の台数は0台の場合もあるので、例えばj−1番目の機器に対応するノードにおける分岐係数は、そのノードに対応する1乃至j−1番目の機器各々の台数から探索実行部13が算出したr(j)に1を加算した値である。
荒い方法で分岐係数を算出する場合、上位の各ノードから、1段下のノードに対応する機器の種類の分岐係数の数のノードが必ず分岐する。したがって、荒い方法で分岐係数を算出する場合、
図5に示す各機器に対応する探索木では、機器の組合せ総数に対応する葉ノードの数は、各機種の分岐係数を積算した6×4×4=96である。
一方、細かい方法は、2番目以上の種類の機器に対応する、第3の階層以下のノードの分枝係数を、根ノードからそのノードまでの経路上のノードに対応する台数の対応する機器の第1の指標の合計と、必要値との差に基づき算出する方法である。
たとえば(A,3)で表されるノードを通る経路に対応する集合の場合、そのノードに対応する3台の機種Aの第1の指標の合計は9である。荒い方法で分岐計数を算出したこのノードの分岐係数は、2番目の機器の種類である機種Bの第1の指標が5なので、15/5=3(前述の荒い方法で算出した機種Bのr(j))に1を加えた4である。しかし、ノード(A,3)以降のノードの第2の指標の合計は、必要値15とノード(A,3)の第1の指標の合計9との差である、6以上であれば充分である。細かい方法で算出した(A,3)で表されるノードの分岐係数は、6を機種Bの第1の指標である5で割った値の小数点以下を切り上げた値に、1を加えた値である3である。
細かい方法には、ノード毎に分岐係数を算出する必要があり、階層が多い場合(機器の種類が多い場合)組合せの総数を算出するのに多くの計算量が必要になるという特徴がある。細かい方法には、さらに、ノード数を削減し、探索効率を改善することができるという特徴がある。最小集合に対応する経路は、細かい方法で算出した分岐係数に基づく分岐のノード以外を通る可能性はない。従って、探索を行う必要があるのは、細かい方法で算出した分岐係数に基づき生成した分岐のノードを経由する経路だけである。
一方、荒い方法で算出する分岐係数は、細かい方法でノード毎に算出する分岐係数以上の値である。荒い方法は、ノード毎に分岐係数を算出する代わりに機器の種類毎に分岐係数を算出するので、分岐係数の算出のための計算量は、細かい方法より少なくなる。しかし、荒い方法で算出する分岐係数は、細かい方法でノード毎に算出した分岐係数以上の値になり、通常は細かい方法よりノード数が増え探索効率が悪い。
次に、探索実行部13は、j+1番目の種類の機器の台数を表すn(j+1)を、0からr(j+1)まで順次増加させながら、以下の処理を行う(ステップS15)。
まず、探索実行部13は、j+1番目の種類の機器の台数を表すn(j+1)を、探索範囲記憶部12に格納する(ステップS16)。探索実行部13は、例えばn(j+1)をj+1と対応付けて格納するなど、n(j+1)がj+1番目の種類の機器の台数を表すことが判別可能な形で、n(j+1)を探索範囲記憶部12に格納すればよい。探索範囲記憶部12に既に格納されている各種類の機器の台数と、n(j+1)が探索範囲(探索範囲(j+1))を表す。
次に、探索実行部13は、探索範囲記憶部12に格納されているn(1)からn(j+1)が表す探索範囲(j+1)に含まれる集合の、第2の指標の合計値の下限値を算出する(ステップS17)。
探索実行部13は、前述のように、緩和法により下限値の算出を行えばよい。緩和法は、元の問題の制約を緩和して説きやすくした緩和問題に対する最適解を算出する方法である。緩和問題の最適解は、一般に、元の問題の最適解よりよい解である。例えば、元の問題が最小値を算出する問題である場合、その問題の緩和問題の最適解である最小値は、一般に、元の問題の解である最小値より小さい。従って、緩和問題の解は、元の問題の解の下限値になりうる。典型的な緩和問題は、たとえば、機器は1台単位で使用し、機器の台数は整数であるという制限がもとの問題に課されている場合に、その制限を緩和し、1台の機器を分割して使用することを可能にして、機器の台数が実数であることを許容した問題である。
本実施形態の探索実行部13が下限値を算出する上での制約の緩和は、機器の台数は整数であるという制約を外し、実数の台数を許容することであってよい。ただし、機器の台数が整数でない場合も、第1の指標や第2の指標の合計は、台数が整数である場合と同様に、機器の種類毎のそれぞれの指標に、対応する種類の機器の台数を掛けた値である。
台数が実数である場合の、第1の指標の合計が所定値以上となる機器の集合の、第2の指標の合計の最小値は、第1の指標の合計が所定値となる、指標比が最も大きい種類の機器のみで構成される機器の集合の第2の指標の合計を算出することで得られる。第1の指標の合計が所定値以上となるいずれの機器の集合の第2の指標の合計も、この最小値を下回ることはない。
探索範囲(j+1)に含まれる集合の、1乃至j+1番目の種類の機器の台数は、それぞれn(1)台からn(j+1)台である。以下の説明で、それぞれn(1)台からn(j+1)台の1乃至j+1番目の種類の機器の、第1の指標の合計を、必要値から引いた値が、残存必要値である。また、j+2乃至J番目の種類の機器で、指標値が最も大きい機器の種類が機種Xである。
探索実行部13は、探索範囲(j+1)に含まれ、1乃至j+1番目の種類の機器と、残りの種類で最も指標比の大きい種類の機器(機種X)で構成される充足集合の、機種Xの最小台数を、機種Xの台数が整数であるという制約を外して算出すればよい。探索実行部13は、それぞれn(1)台からn(j+1)台の1乃至j+1番目の種類の機器と、算出した最小台数の機種Xの第2の指標の合計を、探索範囲(j+1)の第2の指標の合計の下限値にすればよい。
そのために、まず、探索実行部13は、機器記憶部10から、1乃至j+1番目の種類の機器の第1の指標を読み出せばよい。また、探索実行部13は、探索範囲記憶部12から、1乃至j+1番目の種類の機器の台数であるn(1)からn(j+1)を読み出せばよい。探索実行部13は、機器記憶部10から読み出した各種類の機器の第1の指標に、探索範囲記憶部12から読み出した対応する種類の機器の台数を掛けた値を足し合わせればよい。探索実行部13は、このようにして、それぞれn(1)台からn(j+1)台の1乃至j+1番目の種類の機器の第1の指標の合計を算出すればよい。
次に、探索実行部13は、機器記憶部10から、j+2乃至J番目の種類の機器の種類の各指標を読み出して、指標比を算出すればよい。あるいは、探索実行部13は、各種類の機器の指標比を予め算出し、例えば機器記憶部10に機器の種類に対応付けて格納しておいてもよい。そして、探索実行部13は、指標比が最も大きい種類の機器の選択の際、j+2乃至J番目の種類の機器の指標比を、機器記憶部10から読み出してもよい。探索実行部13は、j+2乃至J番目の種類の機器で、指標比が最も大きい種類の機器を選択する。
探索実行部13は、必要値と算出した第1の指標の合計との差を、指標比の最も大きい機器の種類の第1の指標で割った実数値(緩和台数)を算出する。
探索実行部13は、それぞれn(1)台からn(j+1)台の1乃至j+1番目の種類の機器と、算出した実数値を台数としたj+2番目の種類の機器の、第2の指標の合計を算出する。探索実行部13は、算出した合計を、探索範囲(j+1)の第2の指標の合計の下限値にする。探索実行部13は、算出した実数値をj+2番目の種類の機器の第2の指標に掛けた値を、算出した実数値を台数としたj+2番目の種類の機器の第2の指標の合計にすればよい。
例えば、
図8の中間ノード(A,0)では、必要値が15である場合、機種Aの台数は0なので、残存必要値は15である。残りの機器の種類のうち、指標比が最も大きい機器の種類は機種Cである。台数が実数であることを許容した場合の、第1の指標の合計が15となる機種Cの台数は、15/7である。15/7台の機種Cの、第2の指標の合計は15/7×8≒17.14である。機種Aの台数は0なので、これが中間ノード(A,0)以降の探索によって得られる第2の指標の合計に関する下限値である。機種Aを0台とした場合、第2の指標の合計に関して、17.14より小さな解を得ることは理論的に不可能である。従って、もし暫定解が、算出した下限値である17.14より小さい場合、中間ノード(A,0)を経由する経路における各ノードの第2の指標の合計が暫定解を下回る可能性はない。この場合、探索実行部13は、中間ノード(A,0)を経由する経路の探索を行わない。一方、暫定解が算出した下限値である17.14より大きい場合、中間ノード(A,0)を経由する経路のいずれかに、第2の指標の合計が暫定解を上回る経路が存在する可能性がある。この場合、探索実行部13は、中間ノード(A,0)を経由する経路の探索を行う。
次に、探索実行部13は、暫定解記憶部11から読み出した暫定解と、算出した探索範囲(j+1)の第2の指標の合計の下限値を比較する。
探索範囲が
図8の中間ノード(A,0)で表される場合、暫定解記憶部11が記憶する暫定解が24であれば、探索範囲の第2の指標の下限値は約17.14なので、下限値の方が暫定解より小さい。
比較の結果、暫定解が下限値を下回る場合(ステップS18、N)、探索範囲(j+1)に、第2の指標の合計が暫定解を下回る充足集合が含まれる可能性はない。この場合、探索実行部13は、探索範囲(j+1)では探索を行わず、ステップS15に戻る。
例えば、探索範囲が、
図8の中間ノード(A,2)で表される場合、2台の機種Aの第1の指標の合計は3×2=6である。必要値が15である場合、探索実行部13が算出する残存必要値は9である。機種Aの第2の指標は5、残りの機器の種類(機種B及び機種C)で最も指標比の大きい機種Cの第1の指標は7、第2の指標は8である。従って、探索実行部13が算出する下限値は、約20.29(=10+8×9/7)である。暫定解記憶部11が記憶する暫定解が20、対応する暫定集合が((A,1),(B,1),(C,1))で表される機器の集合である場合、探索実行部13は、ステップS18で、暫定解が下限値を下回ると判定する(ステップS18、N)。この場合、ノード(A,2)で表される探索範囲には最小集合は含まれる可能性がないので、探索実行部13は、ノード(A,2)で表される探索範囲に対する探索は行わない。探索実行部13は、同様に、ノード(A,3)、(A,4)、(A,5)の各々で表される探索範囲に対する探索も行わない。
比較の結果、暫定解が下限値を下回る場合(ステップS18、Y)、探索範囲(j+1)に、第2の指標の合計が暫定解を下回る充足集合が含まれる可能性がある。探索実行部13は、探索範囲(j+1)で、最小集合の探索を行う。探索集合の探索方法は任意である。
探索実行部13は、例えば、探索範囲(j+1)に含まれる全ての集合の第1の指標の合計を算出し、第1の指標の合計が必要値以上である場合、第2の指標の合計を算出して暫定解と比較することで、探索を行ってもよい。探索範囲(j+1)に含まれる全ての集合の生成において、探索実行部13は、例えば、まず、ステップS13と同様の処理によりp(j+2)を算出すればよい。探索実行部13は、0からp(j+2)までの整数を、探索範囲(j+1)に含まれる集合の、j+2番目の種類の機器の台数にすればよい。探索実行部13は、j+2番目の種類の機器の台数が0からp(j+2)までそれぞれの場合のp(j+3)を、ステップS13と同様の処理により算出すればよい。探索実行部13は、このようにステップS13と同様の処理を、j+2乃至J番目の種類の機器の台数の全ての組合せを導出するまで順次行えばよい。このようにして、探索実行部13は、探索範囲(j+1)に含まれる全ての集合を生成することができる。
また、探索実行部13は、以下のように探索を行ってもよい。
探索実行部13は、jがJ−2より小さい場合(ステップS19、Y)、jを1増加させ、
図4の探索の動作を再帰的に行う(ステップS20)。すなわち、探索範囲(j+1)に第2の指標の合計が暫定解を下回る暫定集合が含まれる可能性がある場合、探索範囲記憶部12に台数が格納されていない機器の種類が複数存在するなら、探索実行部13は、以上で述べた処理と同様にして、探索範囲(j+1)を更に分割する。そして、探索実行部13は、探索範囲(j+1)をj+2番目の種類の機器の台数に応じて分割したそれぞれの探索範囲(j+2)に、第2の指標の合計が暫定解を下回る集合が含まれる可能性の有無を判定する。そして、探索実行部13は、判定結果に応じて探索範囲(j+2)で探索を行う。このように、探索実行部13は、jがJ−2になるまでjを1ずつ増加させながら、再帰的に
図4の探索の動作を行えばよい。
例えば、探索範囲が前述の探索木の中間ノード(A,0)で表される場合、下限値が暫定解より小さく、また、jは0でありJは3であるので、jがJ−2より小さい。従って、探索実行部13は、ノード(A,0)で表される探索範囲(1)に対して、
図4の処理を最初から行えばよい。この場合、探索実行部13は、ノード(A,0)で表される探索範囲(1)を、2番目の機器の種類(機種B)の台数に応じて分割した、((A,0),(B,0)、((A,0),(B,1))、…で表される探索範囲(2)に対して、同様にステップS17以降の処理を行えばよい。
探索実行部13は、jがJ−2である場合(ステップS19、N)、探索範囲(j+1)で、第2の指標の合計が暫定解を下回る機器の集合が存在すれば、その集合の第2の指標の合計を新しい暫定解に、その集合を新しい暫定集合とする。新しい暫定解及び暫定集合が見つかった場合、探索実行部13は、新しい暫定解と、新しい暫定解を表す情報を、暫定解記憶部11に格納し、暫定解及び暫定集合の更新を行う(ステップS21)。
探索範囲(j+1)は、jがJ−2である場合、1番目乃至J−1番目の種類の機器の台数がそれぞれn(1)からn(J−1)である機器の集合の集まり(探索範囲(J−1))である。ステップS21で、探索実行部13は、まず、ステップS13と同様にしてp(J)を算出し、ステップS14と同様にしてr(J)を算出すればよい。
前述の細かい方法でp(J)を算出する場合、p(J)は、探索範囲(J−1)に含まれる集合で、第2の指標の合計が最小となる充足集合の、J番目の種類の機器の台数である。また、本実施形態では機器の台数に制限は無いので、r(J)はp(J)である。従って、探索実行部13は、J番目の種類の機器の台数がr(J)である場合の第2の指標の合計を算出し、算出した第2の指標の合計を、暫定解記憶部11から読み出した暫定解と比較すればよい。
一方、前述の荒い方法でr(J)を算出する場合、探索範囲(J−1)に含まれる充足集合における、J番目の種類の機器の最小値p(J)は、r(J)以下のいずれかの値である。この場合、探索実行部13は、J番目の種類の機器の台数n(J)を0から順次増加させながら、探索範囲(J−1)に含まれ、J番目の種類の機器の台数がn(J)である集合の、第1の指標の合計を算出する。探索実行部13は、算出した第1の指標の合計を必要値と比較し、最初に第1の指標の合計が必要値を上回った集合の、第2の指標の合計を算出する。探索実行部13は、算出した第2の指標の合計を、暫定解記憶部11から読み出した暫定解と比較すればよい。なお、第1の指標の合計が必要値を上回らないまま、n(J)がr(J)に達した場合、探索実行部13は暫定解及び暫定集合の更新を行わず、ステップS21の処理を終了すればよい。
比較の結果、算出した第2の指標の合計が暫定解を下回る場合、探索実行部13は、算出した第2の指標の合計を新しい暫定解にすればよい。また、探索実行部13は、探索範囲記憶部12が記憶している、探索範囲(J−1)を表す1乃至J−1番目の種類の機器の台数であるn(1)からn(J−1)と、J番目の種類の機器の台数r(J)で表される集合を、新しい暫定集合とすればよい。探索実行部13は、新しい暫定解及び暫定集合を表す情報を、暫定解記憶部11に格納する。
比較の結果、算出した第2の指標の合計が暫定解を上回る場合、探索実行部13は暫定解及び暫定集合を表す情報の更新は行わず、ステップS21の処理を終了する。
例えば、ステップS19で、探索範囲が前述の探索木のノード((A,0),(B,1))で表される探索範囲(2)である場合、j(=1)はJ−2(1)より小さくない(ステップS19、N)ので、探索実行部13は、ステップS21の処理を行う。
探索実行部13は、荒い方法でr(j)の算出を行う場合、((A,0),(B,1),(C,0))、((A,0),(B,1),(C,1))で表される機器の集合の第1の指標の合計の算出及び必要値との比較を、順に行う。機器記憶部10に格納されているこれらの機器の第1の指標及び第2の指標は、
図5の例の通りである。従って、これらの機器の集合の第1の指標の合計は、必要値より小さい。探索実行部13は、次に、((A,0),(B,1),(C,2))で表される機器の集合の第1の指標の合計を算出する。得られた合計である19は、必要値である15より大きいので、探索実行部13は、この機器の集合の第2の指標の合計を算出する。暫定解記憶部11に格納されている暫定解が24の場合、算出した第2の指標の合計である23は、暫定解より小さい。この場合、探索実行部13は、算出した第2の指標の合計23を新しい暫定解に、対応する((A,0),(B,1),(C,2))で表される機器の集合を新しい暫定集合にする。探索実行部13は、新しい暫定解及び暫定集合を表す情報を、暫定解記憶部11に格納する。
探索実行部13による探索の終了後、上述の
図3のステップS3の説明ように、出力部14が、暫定解記憶部11に格納されている暫定集合を表す情報を読み出し、端末2に対して出力すればよい。
以上で説明した本実施形態には、一方の指標の合計が所定値以上であるという条件を満たし、他方の指標の合計が最小となる、異なる2つの指標を持つ複数の種類の機器の組合せを、少ない計算量で導出することができるという効果がある。
その理由は、探索実行部13が、一部の種類の機器の台数によって表される探索範囲毎に、その探索範囲に最小集合が含まれる可能性の有無を判定するからである。そして、探索実行部13は、最小集合が含まれる可能性がない場合、その探索範囲における探索を行わないからである。
(第1の実施形態の第1の変形例)
次に、本発明の第1の実施形態の、第1の変形例について説明する。
前述の第1の実施形態では機器の種類毎の台数に制限は無かったのに対し、本変形例の機器の種類毎の台数は、1台又は0台である(01問題)。本変形例の構成管理装置1は、同じ種類の機器を2台以上含まない充足集合で、第2の指標の合計が最小となる集合を出力する。
まず、本変形例の構成管理装置1の構成について、図面を参照して詳細に説明する。
図1は、本変形例の構成管理装置1の構成を表す図である。本変形例の構成管理装置1の構成は、第1の実施形態の構成管理装置1の構成と同じである。したがって、構成に関する説明は省略する。
図3は、本変形例の構成管理装置1が最小集合を抽出する動作全体を動作の例を表すフローチャートである。
本変形例の構成管理装置1が最小集合を抽出する動作の例は、前述の第1の実施形態の構成管理装置1が最小集合を抽出する動作の例と、ステップS2における初期解の算出の方法と、ステップS3における探索の方法が異なる。
また、探索実行部13は、1番目の機器が0台以上1台以下である充足集合の集まりを、探索範囲の初期値(探索範囲(0))にすればよい。
本変形例の構成管理装置1のその他の動作は、第1の実施形態の構成管理装置1の動作と同じなので、説明を省略する。
図9は、本変形例の構成管理装置1が初期解を算出する動作の例を表すフローチャートである。
図9を参照すると、初期解算出部15は、機器記憶部10から全ての機器の種類の第1の指標及び第2の指標を読み出す(ステップS31)。
次に、初期解算出部15は、全ての機器の種類の指標比を算出する(ステップS32)。初期解算出部15は、算出した指標比が大きい順に、機器の種類をソートしてもよい。
次に、初期解算出部15は、未選択の機器の種類の中で、指標比が最も大きい機器の種類を1つ選択する(ステップS33)。
初期解算出部15は、例えば、暫定解記憶部11に格納されている暫定集合の情報を読み出せばよい。初期解算出部15は、読み出した暫定集合の情報に1台の選択した種類の機器の情報を追加する暫定集合の更新を行えばよい。初期解算出部15は、更新を行った暫定集合の情報を暫定解記憶部11に格納すればよい。初期解算出部15は、暫定解記憶部11に暫定集合の情報が格納されていない場合、1台の選択した種類の機器で構成される暫定集合の情報を生成すればよい。初期解算出部15は、その暫定集合の情報を、暫定解記憶部11に格納すればよい。
初期解算出部15は、既に選択した機器の種類の、第1の指標の累計を算出する(ステップS34)。
なお、初期解算出部15は、ステップS34の動作の実行時に、第2の指標の累計を算出してもよい。そして、初期解算出部15は、算出した第2の指標の累計を、暫定解として暫定解記憶部11に格納してもよい。初期解算出部15は、例えば、暫定解記憶部11から第2の指標の累計である暫定解を読み出せばよい。そして、初期解算出部15は、読み出した暫定解にステップS33で新しく選択した種類の機器の第2の指標を合算すればよい。そして、初期解算出部15は、合算した暫定解を暫定解記憶部11に格納すればよい。この場合、暫定解記憶部11に暫定解が記憶されてなければ、ステップS33で新しく選択した種類の機器の第2の指標を、暫定解として暫定解記憶部11に格納すればよい。
初期解算出部15は、選択済みの機器の種類の第1の指標の累計と必要値を比較する。初期解算出部15は、第1の指標の合計が必要値以上である場合(ステップS35、Y)、暫定解の初期値となる、選択済みの機器の種類の第2の指標の累計を算出する(ステップS36)。
初期解算出部15は、算出した第2の指標の累計を、暫定解の初期値として暫定解記憶部11に格納する(ステップS37)。
なお、ステップS34で、第2の指標の累計を暫定解として暫定解記憶部11に格納している場合、ステップS36では、選択済みの機器の種類の第2の指標の累計を暫定解の初期値として格納する必要はない。
第1の指標の累計が必要値以上でない場合(ステップS35、Y)、全ての機器の種類を選択されておらず、まだ選択されていない機器の種類が存在する場合(ステップS38、N)、ステップS33に戻る。
全ての機器の種類を選択されており、まだ選択されていない機器の種類が残っていない場合(ステップS38、Y)、初期解の算出の処理を終了する。この場合、機器の集合が機器記憶部10に各指標が格納されている全ての機器を含んでいても、その集合の第1の指標の合計は必要値未満なので、充足集合は存在しない。
図10は、本変形例の構成管理装置1の探索の詳細な動作の例を表すフローチャートである。
図10と
図4の第1の実施形態の探索の動作を表すフローチャートを比較すると、本変形例はステップS13及びステップS14を含まず、ステップS15の代わりにステップS22を含む点が異なる。本変形例では、各種類の機器の台数は最大1台なので、r(j+1)は常に1である。従って、r(j+1)を算出するためのステップS13及びステップS14は不要である。また、ステップS22は、r(j+1)が常に1である場合のステップS15に相当する。
また、本変形例の構成管理装置1の動作は、第1の実施形態の構成管理装置1の動作と比較して、ステップS17の緩和法によって下限値を算出する動作と、ステップS21の暫定解及び暫定集合を更新する動作が異なる。その他の点は第1の実施形態の動作と同じであるので、説明を省略する。
図11は、ステップS17で、本変形例の構成管理装置1の探索実行部13が下限値を算出する動作の例を表すフローチャートである。
図11を参照すると、探索実行部13は、機器記憶部10から読み出した第1の指標及び第2の指標をもとに、1乃至j+1番目の機器の第1の指標の合計を算出する(ステップS41)。
次に、探索実行部13は、必要値Nから、算出した1乃至j+1番目の機器の第1の指標の合計を引いた残存必要値を算出する(ステップS42)。
次に、探索実行部13は、j+2乃至J番目で未選択の機器の種類から、機器記憶部10から読み出した第1の指標及び第2の指標から算出した指標比が最も大きい機器の種類を選択する(ステップS43)。
探索実行部13は、選択した種類の機器の最大台数分の、第1の指標の和を算出する(ステップS44)。なお、本変形例では、全ての種類の機器の最大台数は1なので、算出する第1の指標の和は、ステップS43で選択した種類の機器の第1の指標そのものである。
探索実行部13は、算出した第1の指標の和が残存必要値より小さい場合(ステップS45、N)、j+2乃至J番目の機器の種類を既に全て選択しており、まだ選択されていない機器の種類が存在しないなら(ステップS49)、処理を終了すればよい。この場合、1乃至J番目の種類の機器を全て組み合わせても、第1の指標の合計が必要値に届かないことになる。
探索実行部13は、算出した第1の指標の和が残存必要値より小さい場合(ステップS45、N)、j+2乃至J番目の機器の種類に、まだ選択されていない機器の種類が存在するなら、残存必要値を更新する(ステップS50)。探索実行部13は、ステップS44で算出した第1の指標の和を残存必要値から減算して、新しい残存必要値とすることで、残存必要値の更新を行えばよい。
探索実行部13は、ステップS50の動作を行った後、ステップS43に戻る。
探索実行部13は、算出した第1の指標の和が残存必要値より大きい場合(ステップS45、Y)、残存必要値を、選択した種類の機器の第1の指標で割った実数値を算出する(ステップS46)。算出した実数値は、第1の指標の値が残存必要値となるように、台数が整数であるという制約を外して算出した、選択した種類の機器の台数(緩和台数)である。なお、本変形例では、各種類の機器の最大台数は1なので、探索実行部13が算出した緩和台数は0以上1以下の範囲に含まれる実数値である。
探索実行部13は、次に、選択した種類の機器の、算出した緩和台数分の第2の指標を算出する(ステップS47)。本変形例では、各種類の機器の最大台数は1なので、探索実行部13が算出した緩和台数分の第2の指標は、0以上で、選択した種類の機器の1台当たりの第2の指標以下の値である。
探索実行部13は、それぞれ最大台数の、最後に選択した機器を除く全ての選択済みの機器及び1乃至j+1番目の種類の機器と、算出した緩和台数分の最後に選択した機器の、第2の指標の合計を算出する。探索実行部13は、算出した合計を、下限値にする(ステップS48)。なお、前述のように、本変形例では、各機器の最大台数は1台である。
以上の処理は、例えば第1の指標が性能を表し、第2の指標がコストを表す場合、第1の指標の合計が必要値以上になるまで、コストパフォーマンスのよい種類の機器から順に、機器の種類を選択することに相当する。以上の処理は、さらに、第1の指標の合計が必要値を上回った場合、第1の指標の合計がちょうど必要値になるよう最後に選択した機器を分割し、分割した機器と、既に選択していた全ての機器の第2の指標の和を算出し、第2の指標の下限値にすることに相当する。
次に、本変形例の構成管理装置1の、
図10のステップS21の動作について説明する。
ステップS21で、探索実行部13は、まず、探索範囲(J−1)に含まれる充足集合の中で、第2の指標が最小となる充足集合の、J番目の種類の機器の台数p(J)を算出すればよい。そして、探索実行部13は、p(J)がJ番目の機器の最大台数以下(本変形例では0又は1)である場合、暫定解・暫定集合の更新を行えばよい。p(J)がJ番目の機器の最大台数である1より大きい場合は、探索範囲(J−1)に充足集合は含まれないので、探索実行部13は、暫定解・暫定集合の更新を行わない。
暫定解・暫定集合の更新を行う場合、探索実行部13は、第1の実施形態と同様に、J番目の種類の機器の台数がr(J)である場合の第2の指標の合計を算出すればよい。そして、探索実行部13は、算出した第2の指標の合計を、暫定解記憶部11から読み出した暫定解と比較すればよい。なお、暫定解・暫定集合の更新を行うのはp(J)がJ番目の機器の最大台数(本変形例では1)以下の場合であり、r(J)はJ番目の種類の最大台数とp(J)のいずれか小さい方の値であるので、この場合r(J)はp(J)である。
比較の結果、算出した第2の指標の合計が暫定解を下回る場合、探索実行部13は、算出した第2の指標の合計を新しい暫定解にすればよい。また、探索実行部13は、探索範囲記憶部12が記憶している、探索範囲(J−1)を表す1乃至J−1番目の種類の機器の台数であるn(1)からn(J−1)と、J番目の種類の機器の台数r(J)で表される集合を、新しい暫定集合とすればよい。探索実行部13は、新しい暫定解及び暫定集合を表す情報を、暫定解記憶部11に格納する。
図12は、本変形例の探索実行部13の探索の対象となる機器の集合を表す二分探索木を表す図である。
図12を
図8と比較すると、
図12の探索木の場合、各ノードの分岐係数が全て2であり、各種類の機器の最大台数が1に制限されている点が異なる。
以上で説明した本変形例には、各種類の機器の最大台数が1の場合に、一方の指標の合計が所定値以上であるという条件を満たし、他方の指標の合計が最小となる、異なる2つの指標を持つ複数の種類の機器の組合せを、少ない計算量で導出することができるという効果がある。
その理由は、探索実行部13が、各種類の機器の最大台数が1であるという条件のもとで、一部の種類の機器の台数によって表される探索範囲毎に、その探索範囲に最小集合が含まれる可能性の有無を判定するからである。そして、探索実行部13は、最小集合が含まれる可能性がない場合、その探索範囲における探索を行わないからである。
(第1の実施形態の第2の変形例)
次に、第1の実施形態の第2の変形例について、図面を参照して詳細に説明する。
第2の変形例では、機器の種類毎に最大台数が存在する。本変形例の構成管理装置1は、同じ種類の機器をその種類の機器の最大台数以上含まない充足集合で、第2の指標の合計が最小となる集合を出力する。
図1が、本変形例の構成管理装置1の構成を表す図である。本変形例の構成管理装置1の構成は、第1の実施形態の構成管理装置1の構成と同じである。
ただし、本変形例の機器記憶部10は、第1の指標及び第2の指標に加えて、機器の種類毎の最大台数を、機器の種類に対応付けて記憶する。各種類の機器の第1の指標、第2の指標及び最大台数は、予め機器記憶部10に格納されていればよい。あるいは、ファイル31に含まれている各種類の機器の第1の指標、第2の指標及び最大台数を、指標取得部16が抽出し、機器記憶部10に格納してもよい。
図13は、本変形例の機器記憶部10が記憶する、第1の指標、第2の指標、及び最大台数の一例を表す図である。
図13の例では、機種Aの最大台数は4台、機種Bの最大台数は3台、機種Cの最大台数は2台である。
本変形例の構成管理装置1の他の構成要素は、第1の実施形態の対応する構成要素と同じなので、説明を省略する。
次に、本変形例の動作について、図面を参照して詳細に説明する。
図3が、本変形例の構成管理装置1が最小集合を抽出する動作全体を動作の例を表すフローチャートである。
本変形例の構成管理装置1が最小集合を抽出する動作の例は、前述の第1の実施形態の構成管理装置1が最小集合を抽出する動作の例と比較すると、ステップS2における初期解の算出の方法と、ステップS3における探索の方法が異なる。
また、探索実行部13は、例えば、1番目の種類の機器のみで充足集合を構成した時の機器の最小台数p(1)を算出し、p(1)と1番目の種類の機器の最大台数のいずれか小さい方をr(1)にする。そして、探索実行部13は、1番目の機器が0台以上r(1)台以下である充足集合の集まりを、探索範囲の初期値(探索範囲(0))にすればよい。
本変形例の構成管理装置1のその他の動作は、第1の実施形態の構成管理装置1の動作と同じなので、説明を省略する。
図14は、本変形例の構成管理装置1が初期解を算出する動作の例を表すフローチャートである。
図14に示す本変形例の構成管理装置1の初期解を算出する動作は、
図4に示す第1の変形例の構成管理装置1の初期解を算出する動作と比較すると、ステップS33とステップS34の間にステップS39の動作を行う点が異なる。また、本変形例の、ステップS34の第1の指標の累計及び第2の指標の累計を算出する動作と、ステップS36の暫定解の初期値を算出する動作が、それぞれ対応する第1の変形例の動作と異なる。
本変形例の初期解算出部15は、未選択の機器の種類の中で指標比が最も大きい機器の種類を選択した(ステップS33)後、選択した機器の種類の最大台数を、機器記憶部10から読み出す(ステップS38)。
ステップS34で、初期解算出部15は、機器記憶部10から読み出した、既に選択した機器の種類各々の、第1の指標及び最大台数から、既に選択した機器の種類各々の最大台数分の第1の指標の累計を算出する。
ステップS36で、初期解算出部15は、最後に選択した種類の機器と、台数がそれぞれの種類の機器の最大台数である、最後に選択した機器の種類以外の既に選択した全ての種類の機器で構成される充足集合の、最後に選択した種類の機器の最小台数を算出する。初期解算出部15は、台数がそれぞれの種類の機器の最大台数である、最後に選択した機器の種類以外の既に選択した全ての種類の機器と、算出した最小台数の最後に選択した種類の機器で構成される集合を、暫定集合の初期値にする。初期解算出部15は、暫定集合の初期値の第2の指標の合計を算出し、暫定解の初期値にする。
図14における本変形例の構成管理装置1の他の動作は、
図4の第1の変形例の構成管理装置1の同一の符号を付したステップの動作と同じであるので、説明を省略する。
次に、本変形例の構成管理装置1の最小集合の探索時の動作について、図面を参照して詳細に説明する。
図4が、本変形例の構成管理装置1の最小集合の探索時の動作を表すフローチャートである。本変形例の構成管理装置1の最小集合の探索時の動作を表すフローチャートは、第1の実施形態のものと同じであるが、ステップS14のr(j+1)の算出方法と、ステップS17の下限値の算出方法と、ステップS21の暫定解・暫定集合の更新方法が異なる。
ステップS14で、探索実行部13は、ステップS14で算出したp(j+1)と、機器記憶部10から読み出したj+1番目の種類の機器の最大台数を比較し、大きい方をr(j+1)にする。
図11は、本変形例のステップS17において、探索実行部13が下限値を算出する動作を表すフローチャートである。本変形例の探索実行部13が下限値を算出する動作を表すフローチャートは、第1の変形例のものと同じである。しかし、第1の変形例では各種類の機器の最大台数は1台であったのに対し、本変形例の各種類の機器の最大台数は1台に限らず、機器の種類に対応付けて機器記憶部10に格納されている点が異なる。
ステップS44で、探索実行部13は、機器記憶部10から選択した種類の機器の最大台数分を読み出し、選択した種類の機器の最大台数分の、第1の指標の和を算出する。
ステップS46で、探索実行部13が算出する緩和台数は、0以上、機器記憶部10から読み出した、選択した機器の最大台数以下の範囲に含まれる実数値である。
ステップS48で、探索実行部13は、それぞれ機器記憶部10から読み出した最大台数の、最後に選択した機器を除く全ての選択済みの機器及び1乃至j+1番目の種類の機器と、算出した緩和台数分の最後に選択した機器の、第2の指標の合計を算出する。探索実行部13は、算出した合計を、下限値にする。
次に、本変形例の構成管理装置1の、
図4のステップS21の動作について説明する。
ステップS21で、探索実行部13は、まず、探索範囲(J−1)に含まれる充足集合の中で、第2の指標が最小となる充足集合の、J番目の種類の機器の台数p(J)を算出すればよい。そして、探索実行部13は、p(J)がJ番目の種類の機器の最大台数以下である場合、暫定解・暫定集合の更新を行えばよい。p(J)がJ番目の種類の機器の最大台数より大きい場合は、探索範囲(J−1)に充足集合は含まれないので、探索実行部13は、暫定解・暫定集合の更新を行わない。
暫定解・暫定集合の更新を行う場合、探索実行部13は、第1の実施形態と同様に、J番目の種類の機器の台数がr(J)である場合の第2の指標の合計を算出すればよい。そして、探索実行部13は、算出した第2の指標の合計を、暫定解記憶部11から読み出した暫定解と比較すればよい。なお、暫定解・暫定集合の更新を行うのはp(J)がJ番目の機器の最大台数以下の場合であり、r(J)はJ番目の種類の最大台数とp(J)のいずれか小さい方の値であるので、この場合r(J)はp(J)である。
比較の結果、算出した第2の指標の合計が暫定解を下回る場合、探索実行部13は、算出した第2の指標の合計を新しい暫定解にすればよい。また、探索実行部13は、探索範囲記憶部12が記憶している、探索範囲(J−1)を表す1乃至J−1番目の種類の機器の台数であるn(1)からn(J−1)と、J番目の種類の機器の台数r(J)で表される集合を、新しい暫定集合とすればよい。探索実行部13は、新しい暫定解及び暫定集合を表す情報を、暫定解記憶部11に格納する。
以上で説明した本変形例には、各種類の機器の最大台数がそれぞれ定まっている場合に、一方の指標の合計が所定値以上であるという条件を満たし、他方の指標の合計が最小となる、異なる2つの指標を持つ複数の種類の機器の組合せを、少ない計算量で導出することができるという効果がある。
その理由は、探索実行部13が、各種類の機器の最大台数が機器記憶部10に格納されている台数であるという条件のもとで、一部の種類の機器の台数によって表される探索範囲毎に、その探索範囲に最小集合が含まれる可能性の有無を判定するからである。そして、探索実行部13は、最小集合が含まれる可能性がない場合、その探索範囲における探索を行わないからである。
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
図15は、本実施形態の構成管理装置1Aの構成を表す図である。
図15を参照すると、本実施形態の構成管理装置1Aは、複数(J)の種類毎に第1の指標値P1と第2の指標値P2に関連付けられる機器で構成され、P1の合計が必要値N以上である機器の集合が充足集合、P2の合計の充足集合中の最小値が最小合計である場合に、機器の種類毎に、P1及びP2を記憶する機器記憶部10と、初期値が前記最小合計以上の値である暫定解と、P2の合計が前記暫定解となる機器の集合である暫定集合を表す情報を記憶する暫定解記憶部11と、1乃至j番目(jは1乃至J−1のいずれかの整数)の種類の機器の台数であるn(1)からn(j)を記憶する探索範囲記憶部12と、Nを入力して、n(j+1)を、0から、それぞれn(1)からn(j)台の1乃至j番目の種類の機器とj+1番目の種類の機器のみで充足集合を構成したときのj+1番目の種類の機器の最小台数p(j+1)以下の所定値(j+1)まで順次増加させながら、n(1+1)を探索範囲記憶部12に格納して、N及び1乃至j+1番目の種類の機器のP1及びP2から、1乃至j+1番目の種類の機器の台数が、探索範囲記憶部12に格納されているn(1)からn(j+1)である充足集合の集まりである前記探索範囲(j+1)に含まれる集合のP2の合計の下限値を、各機器の台数が整数であるとの制約を外して算出し、下限値が暫定解より小さい場合、探索範囲(j+1)から、P2の合計が暫定解より小さい充足集合を抽出し、抽出した充足集合のP2の合計及び抽出した充足集合を表す情報を、暫定解及び暫定集合として暫定解記憶部11に格納し、下限値が暫定解より大きい場合、探索範囲(j+1)の探索を行わない探索実行部13と、探索実行部13による探索の実行後、暫定集合を最小集合として出力する出力部14とを含む。
以上で説明した本実施形態には、一方の指標の合計が所定値以上であるという条件を満たし、他方の指標の合計が最小となる、異なる2つの指標を持つ複数の種類の機器の組合せを、少ない計算量で導出することができるという効果がある。
その理由は、探索実行部13が、一部の種類の機器の台数によって表される探索範囲毎に、その探索範囲に最小集合が含まれる可能性の有無を判定するからである。そして、探索実行部13は、最小集合が含まれる可能性がない場合、その探索範囲における探索を行わないからである。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
この出願は、2011年6月20日に出願された日本出願特願2011−136489を基礎とする優先権を主張し、その開示の全てをここに取り込む。