IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2023-170805プログラム、情報処理方法および情報処理装置
<>
  • 特開-プログラム、情報処理方法および情報処理装置 図1
  • 特開-プログラム、情報処理方法および情報処理装置 図2
  • 特開-プログラム、情報処理方法および情報処理装置 図3
  • 特開-プログラム、情報処理方法および情報処理装置 図4
  • 特開-プログラム、情報処理方法および情報処理装置 図5
  • 特開-プログラム、情報処理方法および情報処理装置 図6
  • 特開-プログラム、情報処理方法および情報処理装置 図7
  • 特開-プログラム、情報処理方法および情報処理装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023170805
(43)【公開日】2023-12-01
(54)【発明の名称】プログラム、情報処理方法および情報処理装置
(51)【国際特許分類】
   G06N 99/00 20190101AFI20231124BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022082844
(22)【出願日】2022-05-20
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】佐沢 真一
(57)【要約】
【課題】求解性能を向上する。
【解決手段】処理部12は、複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を取得する。処理部12は、問題情報に含まれる複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得する。処理部12は、複数の状態変数の何れかの状態変数の値を更新することによるエネルギー関数の値の変化量に基づいて複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、問題の解の探索において、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数を、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータに、
複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を取得し、
前記問題情報に含まれる前記複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、前記制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得し、
前記複数の状態変数の何れかの状態変数の値を更新することによる前記エネルギー関数の値の変化量に基づいて前記複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、前記問題の解の探索において、前記第1状態変数が前記第1バイナリ値に更新された場合に前記第1状態変数の前記第1バイナリ値からの更新を禁止する探索回数を、前記第1状態変数と前記第1バイナリ値とに対応する前記第2状態変数の数に基づいて決定する、
処理を実行させるプログラム。
【請求項2】
前記探索回数の決定では、前記第2状態変数の数が多いほど、前記探索回数を多くする、
請求項1記載のプログラム。
【請求項3】
前記探索回数の決定では、前記第2状態変数の数に正の係数を乗じることで、前記探索回数を算出する、
請求項1記載のプログラム。
【請求項4】
前記探索回数の決定では、前記係数の候補である複数の候補係数それぞれを前記第2状態変数の数に乗じることで前記探索回数の候補である複数の候補回数を算出し、前記複数の候補回数それぞれを用いて実行された前記探索により得られた解に対応する前記エネルギー関数の値に基づいて、前記複数の候補係数のうち、前記探索に用いる前記探索回数の算出に用いる前記係数を決定する、
請求項3記載のプログラム。
【請求項5】
前記問題情報は、他の制約条件を含み、
前記コンピュータに更に、
前記他の制約条件に基づいて、前記第1状態変数に前記第1バイナリ値を設定した場合に、前記他の制約条件を充足するための設定値が特定のバイナリ値に決定される第3状態変数の数を取得し、
前記第1状態変数と前記第1バイナリ値とに対応する前記第2状態変数の数と、前記第1状態変数と前記第1バイナリ値とに対応する前記第3状態変数の数との合計に基づいて、前記探索回数を決定する、
処理を実行させる請求項1記載のプログラム。
【請求項6】
前記コンピュータに更に、
前記探索を実行し、
前記探索において、前記第1状態変数を前記第1バイナリ値に更新すると、前記探索回数が経過するまで前記第1状態変数を更新候補から除外する、
処理を実行させる請求項1記載のプログラム。
【請求項7】
前記コンピュータに更に、
前記探索回数が経過していなくても、前記第1状態変数の値を更新することで前記探索により取得済である前記エネルギー関数の値の最良値が更新される場合、前記第1状態変数の値の更新を許容する、
処理を実行させる請求項6記載のプログラム。
【請求項8】
コンピュータが、
複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を取得し、
前記問題情報に含まれる前記複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、前記制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得し、
前記複数の状態変数の何れかの状態変数の値を更新することによる前記エネルギー関数の値の変化量に基づいて前記複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、前記問題の解の探索において、前記第1状態変数が前記第1バイナリ値に更新された場合に前記第1状態変数の前記第1バイナリ値からの更新を禁止する探索回数を、前記第1状態変数と前記第1バイナリ値とに対応する前記第2状態変数の数に基づいて決定する、
情報処理方法。
【請求項9】
複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を記憶する記憶部と、
前記問題情報に含まれる前記複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、前記制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得し、前記複数の状態変数の何れかの状態変数の値を更新することによる前記エネルギー関数の値の変化量に基づいて前記複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、前記問題の解の探索において、前記第1状態変数が前記第1バイナリ値に更新された場合に前記第1状態変数の前記第1バイナリ値からの更新を禁止する探索回数を、前記第1状態変数と前記第1バイナリ値とに対応する前記第2状態変数の数に基づいて決定する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【0002】
組合せ最適化問題の求解に情報処理装置が用いられることがある。組合せ最適化問題は、磁性体のスピンの振る舞いを表すモデルであるイジングモデルのエネルギー関数により定式化される。エネルギー関数は、評価関数や目的関数と呼ばれることもある。
【0003】
情報処理装置は、例えばエネルギー関数に含まれる状態変数の値の組合せのうち、エネルギー関数の値を最小化する組合せを探索する。この場合、エネルギー関数の値を最小化する状態変数の値の組合せは、状態変数の組により表される基底状態または最適解に相当する。実用的な時間で組合せ最適化問題の近似解を得る手法には、シミュレーテッドアニーリング(SA:Simulated Annealing)法やタブーサーチ法などがある。
【0004】
例えば、タブー探索ヒューリスティックにおいて局所探索アルゴリズムを実行することで、画像マッチング問題を解くシステムが提案されている。また、配電系統の配電損失最小化のため、遺伝的アルゴリズムやタブーサーチの手法により系統構成の最適化を行う配電系統制御装置の提案もある。
【0005】
更に、ビット列で表されるサンプルを所定の確率分布により発生させる量子プロセッサと、量子プロセッサで発生されたサンプルに基づいて古典的なヒューリスティック最適化アルゴリズムを実行するデジタルコンピュータとを有するシステムの提案もある。提案のシステムは、古典的なヒューリスティック最適化アルゴリズムとして、タブーサーチアルゴリズムやSAなどを用いる。提案のシステムは、タブー制約を課す場合、反転してはならないビットを識別するタブーリストを用いる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2010-525431号公報
【特許文献2】特開2003-219558号公報
【特許文献3】米国特許出願公開第2012/0045136号明細書
【特許文献4】米国特許出願公開第2016/0042294号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記のように、タブーサーチ法では、解の探索において、タブーリストにより状態変数の値の変化が制御される。タブーリストには、ある状態変数の値を変化させた場合に当該状態変数の値の変化を禁止する、タブーテニュアと呼ばれる期間が設定される。しかし、問題に対してタブーテニュアを適切に設定することは容易でない。例えば、タブーテニュアが長すぎると探索空間が制限されて良い解を得られる可能性が低下し得る。また、タブーテニュアが短すぎると局所解から脱出し難くなり探索が停滞し得る。
【0008】
1つの側面では、本発明は、求解性能を向上することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、プログラムが提供される。このプログラムは、コンピュータに、複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を取得し、問題情報に含まれる複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得し、複数の状態変数の何れかの状態変数の値を更新することによるエネルギー関数の値の変化量に基づいて複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、問題の解の探索において、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数を、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定する、処理を実行させる。
【0010】
また、1つの態様では、情報処理方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、求解性能を向上できる。
【図面の簡単な説明】
【0012】
図1】第1の実施の形態の情報処理装置を説明する図である。
図2】第2の実施の形態の情報処理装置のハードウェア例を示す図である。
図3】情報処理装置の機能例を示す図である。
図4】tt管理テーブルの例を示す図である。
図5】現状態テーブルおよびベスト解テーブルの例を示す図である。
図6】情報処理装置の処理例を示すフローチャートである。
図7】タブーサーチ実行の例を示すフローチャートである。
図8】情報処理装置の他の処理例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、タブーサーチ法による組合せ最適化問題の求解を支援する。情報処理装置10は、タブーサーチ法による求解を実行してもよい。情報処理装置10は、記憶部11および処理部12を有する。
【0015】
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、フラッシュメモリなどの不揮発性記憶装置でもよい。記憶部11は、レジスタなどの電子回路を含んでもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、GPU(Graphics Processing Unit)などの電子回路でもよい。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)でもよい。
【0016】
組合せ最適化問題は、イジング型のエネルギー関数により定式化され、例えばエネルギー関数の値を最小化する問題に置き換えられる。エネルギー関数は、複数の状態変数を含む。状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと表記されてもよい。エネルギー関数の値は、複数の状態変数の値により表される、イジングモデルの状態に対応するエネルギーを示す。組合せ最適化問題の解は、複数の状態変数の値により表される。エネルギーを最小化する解は、イジングモデルの基底状態を表し、組合せ最適化問題の最適解に対応する。
【0017】
イジング型のエネルギー関数は、式(1)で表される。
【0018】
【数1】
【0019】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化されたエネルギー関数である。なお、エネルギーを最大化する問題の場合には、エネルギー関数の符号を逆にすればよい。
【0020】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xは、i番目の状態変数である。xは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。
【0021】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。bは、i番目の状態変数に対するバイアスを示している。
状態変数xの値が変化して1-xとなると、状態変数xの増加分は、δx=(1-x)-x=1-2xと表せる。エネルギー関数E(x)に対して、状態変数xの変化に伴うエネルギーの変化量ΔEは、式(2)で表される。
【0022】
【数2】
【0023】
ΔE<0となる状態変数xが0から1、または、1から0に変化するとエネルギーE(x)は下がる。この場合、xの変化後の解は、現在の解を改良した改良解となる。
タブーサーチ法では、タブーリストを用いて解の探索が行われる。タブーリストは、複数の状態変数のうち、値の更新を禁止する状態変数を示す情報である。タブーリストは、複数の状態変数の各々に対して当該状態変数の値の変化を禁止する期間を示す情報を含む。
【0024】
ここで、タブーサーチ法は、貪欲法(Greedy Search)をベースとする探索手法である。貪欲法は、現状態について、全状態変数の値をそれぞれ変化させた場合のΔEを計算し、ΔEが最小となる状態変数xを選択し、xの値を反転させて次状態とする手順を繰り返す手法である。解の探索における初期状態、すなわち、初期解は予め与えられる。式(2)より、ΔE<0のとき次の候補状態のエネルギーEは低下する。現状態から最もエネルギーEが低下する次状態が選択される。現状態から次状態に遷移するまでの処理単位は、1イタレーション(1回分の探索)と定義される。当該イタレーションを一定回数繰り返した後に得られたベスト解、すなわち、エネルギーが最小の解が、最終的な解となる。
【0025】
なお、局所解、すなわち、全てのインデックスに対して、ΔEが正である状態の場合、どの状態変数の値を反転させてもエネルギーEが増大し、次の候補状態は何れも改悪解となる。現状態が局所解の場合、ΔEが最小、すなわち、ΔEが最も0に近い正の値となる候補状態が次状態として選択される。
【0026】
タブーサーチ法では、上記の貪欲法において、次のようにタブーリストが用いられる。タブーリストは、状態変数ごとに独立したイタレーションカウンタを有する。例えば、イタレーションカウンタは、該当の状態変数の値の更新を禁止する期間として、当該更新を禁止するイタレーション数の範囲の上限値を保持する。
【0027】
状態変数xに対応するイタレーションカウンタは、イタレーションカウンタ[i]と表記される。例えば、あるイタレーションにおいて、特定の状態変数xの値が更新されると、状態変数xに対応するイタレーションカウンタ[j]に、(現在のイタレーション数)+タブーテニュアが設定される。タブーテニュアは、ある状態変数の値の更新を禁止する期間を示す。例えば、当該期間は、ある状態変数をある値に変更した時点から該当の状態変数の値の更新を禁止するイタレーション数で表される。イタレーション数は探索回数と言われる。
【0028】
タブーサーチ法では、あるイタレーションにおいて、イタレーションカウンタ[i]≧現在のイタレーション数の場合、状態変数xは遷移候補とされない。一方、当該イタレーションにおいて、イタレーションカウンタ[i]<現在のイタレーション数の場合、状態変数xは遷移候補とされる。例えば、100イタレーションである局所解に到達し、101イタレーションで状態変数xの値を変化させて、改悪解に移動したとする。このとき、タブーテニュアを10とすると、イタレーションカウンタ[j]=101+10=111である。よって、イタレーション数>101+10=111になるまで、状態変数xは原則として更新候補から除外される。こうして、タブーリストを用いることで、改悪解から再び元の局所解に陥ることが抑制される。ただし、状態変数xの値の更新後にベスト解が更新される場合、イタレーションカウンタ[i]の値に関わらず、状態変数xは遷移候補とされる。そして、遷移候補の状態変数のうちΔEが最小の状態変数の値が更新される。
【0029】
例えば、各状態変数に対してタブーテニュアを一律の値や乱数値などとしても改悪解から再び元の局所解に陥ることがある程度は抑制されるが、問題における制約条件によっては十分に抑制できないこともある。制約条件は、問題に応じて各状態変数に対して課される制約を示す。
【0030】
そこで、処理部12は、タブーサーチ法で用いられるタブーテニュアを、問題情報に含まれる制約条件に基づいて状態変数の値ごとに決定する。処理部12により決定されるタブーテニュアは、tt(tabu tenure)と略記される。ttは、ある状態変数をあるバイナリ値に設定した場合に当該状態変数の値の更新を禁止する探索回数を示す。ttは、ある状態変数をあるバイナリ値に設定した場合に当該状態変数を更新候補から除外する期間であるとも言える。
【0031】
問題情報は、式(1)のイジング型のエネルギー関数で表される問題を示す情報であり、当該エネルギー関数の作成元となる情報である。例えば、問題情報は、問題において最小化すべきコストを示すコスト関数の情報や、問題に課される制約条件の情報や、目的関数および制約条件に含まれる定数や変数の情報を含む。制約条件は、エネルギー関数に含まれる全状態変数のうちの少なくとも一部の状態変数に対する数式によって表されるため、制約式と言われてもよい。例えば、エネルギー関数を最小化する問題の場合、エネルギー関数は、制約条件に違反する状態のエネルギーが非常に高くなるように定式化される。また、問題情報は、外部から情報処理装置10に入力される。処理部12は、入力された問題情報を記憶部11に格納する。
【0032】
処理部12は、問題情報に含まれる、複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得する。制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数は、副次的遷移数または含意(implication)の数と言われる。以下では、当該第2状態変数の数は、含意の数、すなわち、含意数と表記される。
【0033】
一例として、問題情報が、制約条件「x1+x2+x3-3*x4≦0」を含むと仮定する。例えば、処理部12はx4=0とする。「x4」は第1状態変数の一例である。「x4=0」の「0」は第1バイナリ値の一例である。制約条件「x1+x2+x3-3*x4≦0」によれば、x4=0のとき、当該制約条件を充足するためにはx1=0でなければならない。よって、処理部12は、第1状態変数x4=0に対する含意(x4=0->x1=0)を得る。含意(x4=0->x1=0)は、x4=0のとき、該当の制約条件を充足するためにはx1=0でなければならないことを示す。この場合、「x1」は第2状態変数の一例である。「x1=0」の「0」は特定のバイナリ値の一例である。
【0034】
例えば、処理部12は、制約条件に対する含意を次のようにして取得する。a,bは、バイナリ値、すなわち、0または1とする。まず、処理部12は、状態変数xp=aと固定する。次に、処理部12は、状態変数xq=bと固定する。そして、処理部12は、状態変数xp,xq以外の状態変数の値をどのように割り当てても制約条件が満たされないとき、含意(xp=a->xq!=b(i.e. xq=(1-b)))を得る。
【0035】
同様に、処理部12は、第1状態変数x4=0に対して、含意(x4=0->x2=0)および含意(x4=0->x3=0)を得る。「x2」および「x3」は何れも第2状態変数の一例である。よって、処理部12は、x4=0の場合、制約条件を充足するための設定が特定のバイナリ値に決定される状態変数の数n、すなわち、含意数nをn=3と取得する。
【0036】
処理部12は、第1状態変数x4=1に対する含意数や、第1状態変数をx1,x2,x3それぞれとした場合の各バイナリ値に対する含意数も同様にして取得する。なお、問題情報に複数の制約条件が含まれる場合、処理部12は、該当の第1状態変数の該当の第1バイナリ値に対して制約条件ごとに含意数を求め、制約条件ごとの含意数を合計することで、当該第1状態変数の当該第1バイナリ値に対する含意数を算出する。
【0037】
処理部12は、タブーサーチ法による解の探索において、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数を、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定する。第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数は、当該第1状態変数の当該第1バイナリ値に対応するttに相当する。処理部12は、ttを含意数nの関数tt(n)として求める。
【0038】
具体的には、処理部12は、含意数nが大きい程、ttを大きくする。一例では、処理部12は、含意数nに比例するようにttを求める。この場合、tt(n)=α*n+βである。ここで、αは正の実数である。βは0以上の実数である。α,βは予め与えられる。例えば、第1状態変数x4=0の含意数nがn=3のとき、処理部12は、第1状態変数x4が0に更新された場合に第1状態変数x4の更新を禁止する探索回数tt(n)をtt(n)=tt(3)と求める。同様に、処理部12は、x4が1に更新された場合にx4の更新を禁止する探索回数ttをx4=1の含意数に応じて求める。また、処理部12は、x1,x2,x3それぞれについても、設定されるバイナリ値ごとに、同様にしてttを求める。
【0039】
処理部12は、複数の状態変数それぞれについて、バイナリ値ごとに決定したttの情報を出力する。例えば、処理部12は、決定したttを、タブーサーチ法を実行する他の装置に入力してタブーサーチ法を実行させてもよい。あるいは、処理部12は、決定したttを用いてタブーサーチ法を実行してもよい。このタブーサーチ法では、複数の状態変数それぞれについてバイナリ値ごとに決定されたttを用いて、値の更新を禁止する探索回数が制御される。
【0040】
情報処理装置10によれば、問題情報に含まれる、複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数が取得される。複数の状態変数の何れかの状態変数の値を更新することによるエネルギー関数の値の変化量に基づいて複数の状態変数の何れかの状態変数の値を更新する処理を繰り返し行う、問題の解の探索において、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数が、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定される。これにより、情報処理装置10は求解性能を向上できる。
【0041】
例えば、タブーサーチ法による探索では、複数の状態変数の何れかの値を更新する場合のエネルギーの変化量が最良である状態変数の値を更新する処理が繰り返し行われる。例えば、タブーサーチ法による探索において、現タイミングが第1状態変数の値の更新を禁止する探索回数に属している場合、第1状態変数の値の更新は禁止されるため、第1状態変数は値の更新候補から除外される。この場合、第1状態変数以外の状態変数から値を更新する状態変数が選択されることになる。
【0042】
なお、エネルギーを最小化する問題の場合、エネルギーの変化量が「最良」とは当該変化量が最小であることを示す。エネルギーを最大化する問題の場合、エネルギーの変化量が「最良」とは当該変化量が最大であることを示す。
【0043】
ここで、問題に対してタブーテニュアを適切に設定することは容易でない。タブーテニュアの適切な設定が難しい問題の例として、固定費用制約問題が挙げられる。固定費用制約問題は、トラックおよび荷物それぞれにコストが定められている場合に、トラックを用いて荷物を運搬する際のコストを最小化する問題である。固定費用制約問題のコスト関数は、例えば式(3)で表される。
【0044】
【数3】
【0045】
Nは荷物の集合である。Kはトラックの集合である。δnkは荷物nがトラックkに詰め込み可能なとき1であり、それ以外では0である。なお、nはNの要素、すなわちn∈Nである。また、kはKの要素、すなわちk∈Kである。cは荷物のコストである。dはトラックのコストである。N,K,δnk,c,dは、入力として予め与えられる。また、状態変数xnkは、荷物nをトラックkで運ぶとき1であり、それ以外では0である。状態変数yは、トラックkを使うとき1であり、それ以外では0である。
【0046】
また、制約条件は、式(4)、(5)で表される。
【0047】
【数4】
【0048】
【数5】
【0049】
式(4)の制約条件は、全ての荷物はただ1つの詰め込み可能なトラックに割り当てられることを示す。式(5)の制約条件は、トラックkに割り当てられた荷物nがあればトラックkは使われることを示す。式(3)~(5)で表される固定費用制約問題のエネルギー関数は、式(6)のように定式化される。
【0050】
【数6】
【0051】
式(6)のγは、γ>0の実数であり、十分大きいペナルティ係数である。
ここで、例えば100個の荷物がトラック1,2のどちらにも積み込み可能であり、全てトラック1に割り当てられているとする。すなわち、次のような状態である。
【0052】
1,1=x2,1=…=x100,1=1
1,2=x2,2=…=x100,2=0
=1,y=0
この状態から、仮にy=0,y=1と遷移した時、非常に多くのxn,1≦y(=0)が制約違反になる。このとき、yのタブーテニュアが小さいと、制約違反を解消するため、すぐにyが1に戻ってしまう。
【0053】
上記のように、例えば、yに対して、x≦yの形の制約式があれば、yが0となるたびに、制約式に含まれるxに対してx=1ならば、制約を満たすためにはxを0としなければならない。このようにある遷移によって状態変数の値の固定が発生する制約は、当該遷移に対する副次的な制約と言われる。ある遷移に対する副次的な制約の数は、当該遷移に対応する含意数に相当する。
【0054】
タブーサーチ法では、ある状態変数をあるバイナリ値に更新する遷移が行われた場合、当該遷移に対応する含意が多い程、当該状態変数を当該バイナリ値に維持しながら、制約に違反する多くの遷移を経て初めて制約充足解になることが予想される。したがって、情報処理装置10は、該当の遷移に対応する含意数が大きい程、ttを大きくすることで、ある局所解から別状態に遷移した後に、同じ局所解に再び遷移する可能性を低減できる。このため、情報処理装置10は、局所解からの脱出を容易にすることができ、解の探索が停滞する可能性を低減できる。また、情報処理装置10は、該当の遷移に対応する含意数が小さい程、ttを小さくすることで、解の探索空間が過剰に制限されることを防ぎ、より良い解を発見する可能性を高められる。こうして、情報処理装置10は求解性能を向上できる。
【0055】
例えば、情報処理装置10は、決定したttを用いて、タブーサーチ法による解の探索を他の装置に実行させたり、情報処理装置10が当該探索を実行したりすることで、局所解からの脱出能力が高まり、短時間で優良な解を得ることが可能になる。
【0056】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
【0057】
情報処理装置100は、組合せ最適化問題の求解を、タブーサーチ法を用いて探索し、探索した解を出力する。組合せ最適化問題は、式(1)で表されるイジング型のエネルギー関数で定式化される。情報処理装置100は、CPU101、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0058】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0059】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0060】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0061】
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ21に画像を出力する。ディスプレイ21としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0062】
入力インタフェース105は、情報処理装置100に接続された入力デバイス22から入力信号を取得し、CPU101に出力する。入力デバイス22としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0063】
媒体リーダ106は、記録媒体23に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体23として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0064】
媒体リーダ106は、例えば、記録媒体23から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体23は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体23やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0065】
NIC107は、ネットワーク24に接続され、ネットワーク24を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC107は、無線通信インタフェースでもよい。
【0066】
図3は、情報処理装置の機能例を示す図である。
情報処理装置100は、記憶部110、含意算出部120、tt決定部130および探索部140を有する。記憶部110には、RAM102やHDD103の記憶領域が用いられる。含意算出部120、tt決定部130および探索部140は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
【0067】
記憶部110は、含意算出部120、tt決定部130および探索部140の処理に用いられる情報を記憶する。記憶部110は、求解対象の組合せ最適化問題を定義する問題情報を記憶する。問題情報は、問題において最小化すべきコストを示すコスト関数の情報や、問題に課される制約条件の情報や、目的関数および制約条件に含まれる定数や変数の情報を含む。例えば、求解対象の問題が前述の固定費用制約問題の場合、問題情報は、式(3)で表されるコスト関数の情報や式(4)、(5)で表される制約条件の情報や、式(3)~(5)に用いられる定数や変数を定義する情報を含む。
【0068】
また、記憶部110は、tt管理テーブルを記憶する。tt管理テーブルは、エネルギー関数に含まれる複数の状態変数それぞれのバイナリ値ごとのttを保持する。ttは、tt決定部130により決定される。更に、記憶部110は、探索部140による解の探索により得られた現在の状態や、現在までに得られた状態のうちの最良の解を管理する情報を記憶する。更に、記憶部110は、探索部140による解の探索に用いられるタブーリストを記憶する。タブーリストは、状態変数ごとに独立したイタレーションカウンタを有する。
【0069】
含意算出部120は、問題情報に含まれる制約条件に基づいて、状態変数のバイナリ値ごとの含意数を算出する。含意算出部120は、算出した含意数をtt管理テーブルに記録する。含意算出部120は、問題情報に複数の制約条件が含まれる場合、状態変数のバイナリ値に対して制約条件ごとに含意数を求め、制約条件ごとの含意数を合計することで、当該状態変数のバイナリ値に対する含意数を算出する。
【0070】
tt決定部130は、含意算出部120により算出された含意数に応じて、複数の状態変数それぞれに対し、バイナリ値ごとのttを決定する。tt決定部130は、決定したttをtt管理テーブルに記録する。tt決定部130は、含意数が大きい程、ttを大きくする。具体的には、tt決定部130は、tt=α*(含意数)とする。αは正の実数である。
【0071】
探索部140は、問題情報に基づいて作成されたエネルギー関数の情報に基づいて、タブーサーチ法による解の探索、すなわち、タブーサーチを実行する。エネルギー関数の情報は、問題情報とともに外部から情報処理装置100に入力されてもよいし、問題情報に基づいてCPU101により生成されてもよい。例えば、式(3)~(5)で表される固定費用制約問題のエネルギー関数Eは、式(6)のように定式化される。式(6)に相当するエネルギー関数Eは、式(1)のQUBO形式で表されてもよい。式(6)で各状態変数を識別するインデックスは、式(1)で用いられる各状態変数のインデックスに対応付けられてもよい。探索部140は、タブーサーチにおけるタブーリストの設定に用いられるttとして、tt管理テーブルに登録された値を使用する。前述のように、タブーリストは、状態変数ごとに独立したイタレーションカウンタを有する。
【0072】
例えば、探索部140は、タブーサーチにおいて、状態変数xを0に更新した場合、状態変数xに対応するイタレーションカウンタ[i]に、(現在のイタレーション数)+(状態変数xを0に更新した場合に対応するtt)を設定する。また、探索部140は、状態変数xを1に更新した場合、イタレーションカウンタ[i]に、(現在のイタレーション数)+(状態変数xを1に更新した場合に対応するtt)を設定する。
【0073】
探索部140は、探索の終了条件が満たされると、それまでに得られたベスト解を出力する。エネルギーを最小化する問題の場合、ベスト解は、それまでに得られたエネルギーが最小の解である。エネルギーを最大化する問題の場合、ベスト解は、それまでに得られたエネルギーが最大の解である。また、探索の終了条件は、例えば、一定イタレーション回数のイタレーションを実行したことである。探索の終了条件は、探索の開始時点から一定時間が経過したことや、目標とするエネルギーよりも良い解が得られたことなどでもよい。
【0074】
図4は、tt管理テーブルの例を示す図である。
tt管理テーブル111は、記憶部110に格納される。tt管理テーブル111は、変数、(0->1)含意数、(1->0)含意数、(0->1)ttおよび(1->0)ttの項目を含む。
【0075】
変数の項目には、状態変数の識別情報が登録される。(0->1)含意数の項目には、該当の状態変数に1を設定した場合の含意数が登録される。ここで、「(0->1)」の表記は、状態変数の設定値を「->」の左側のバイナリ値「0」から、「->」の右側のバイナリ値「1」に更新すること、すなわち、当該状態変数に1を設定することを示す。(1->0)含意数の項目には、該当の状態変数に0を設定した場合の含意数が登録される。(0->1)ttの項目には、該当の状態変数に1を設定した場合のttが登録される。(1->0)ttの項目には、該当の状態変数に0を設定した場合のttが登録される。
【0076】
ここで、tt算出に用いられる係数αを、一例としてα=10とする。この場合、例えば、tt管理テーブル111は、変数「x1」、(0->1)含意数=「1」、(1->0)含意数=「6」、(0->1)tt=「10」、(1->0)tt=「60」のレコードを有する。tt管理テーブル111は、他の状態変数に対しても、(0->1)含意数、(1->0)含意数、(0->1)ttおよび(1->0)ttを示すレコードを有する。
【0077】
図5は、現状態テーブルおよびベスト解テーブルの例を示す図である。
現状態テーブル112およびベスト解テーブル113は、探索部140による解の探索において探索された状態を管理するための情報である。現状態テーブル112およびベスト解テーブル113は、記憶部110に格納される。
【0078】
現状態テーブル112は、探索部140の探索における現在の状態を保持する。現状態テーブル112は、現状態およびエネルギーの項目を含む。現状態の項目には、現在の状態Xが登録される。Xは、例えばX=(1,0,…,1)のようにビット列で表される。エネルギーの項目には、現状態に対応するエネルギーE(X)が登録される。現状態のエネルギーは、例えば、初期状態のエネルギーに対して、式(2)で計算されるエネルギーの変化量を、状態遷移の実行ごとに積算することで計算される。
【0079】
ベスト解テーブル113は、探索部140の探索において現在までに得られたベスト解Xbestを保持する。Xbestは、Xと同様に、例えばXbest=(0,1,…,0)のようにビット列で表される。ベスト解テーブル113は、ベスト解およびエネルギーの項目を含む。ベスト解の項目には、現在までに得られたベスト解Xbestが登録される。エネルギーの項目には、ベスト解Xbestに対応するエネルギーE(Xbest)が登録される。
【0080】
次に、情報処理装置100の処理手順を説明する。
図6は、情報処理装置の処理例を示すフローチャートである。
(S10)含意算出部120は、問題情報を取得し、問題情報に含まれる各制約条件に対して含意算出を行い、全状態変数に対して、バイナリ値ごとの含意数を算出する。問題情報が複数の制約条件を含む場合、含意算出部120は、ある状態変数のあるバイナリ値に対して各制約条件で算出した含意数の合計を、当該状態変数の当該バイナリ値に対応する含意数とする。含意算出部120は、算出した含意数を、tt管理テーブル111に登録する。
【0081】
(S11)tt決定部130は、全状態変数に対して、状態変数のバイナリ値ごとの含意数を基に、該当の状態変数が該当のバイナリ値になったときのttを決定する。例えば、tt決定部130は、tt=α*(含意数)として、ttを決定する。tt決定部130は、決定したttを、tt管理テーブル111に登録する。αの値としては、例えばα=3やα=10など、予め与えられた値が用いられる。
【0082】
(S12)探索部140は、問題情報から作成されたエネルギー関数Eの情報およびtt管理テーブル111に基づいて、タブーサーチを実行する。探索部140は、タブーサーチにより得られた解を出力する。そして、情報処理装置100の処理が終了する。
【0083】
ここで、ステップS10では、含意算出部120は、ある制約条件に対して、例えば次のように含意を求める。a,bは、何れも0または1のバイナリ値である。
(1)含意算出部120は、状態変数xp=aを固定する。
【0084】
(2)含意算出部120は、状態変数xq=bを固定する。
(3)含意算出部120は、状態変数xp,xq以外の状態変数の値をどのように割り当てても該当の制約条件が満たされないとき、xp=aに対する含意(xp=a->xq!=b(i.e.xq=(1-b)))を生成する。
【0085】
そして、含意算出部120は、xp=aに対して生成された含意の数を、xp=aに対する含意数とする。
第1の例では、問題情報は、状態変数x1,x2,x3,x4に対して、制約条件「x1+x2+x3-3*x4≦0」を含む。この制約条件は、「x1≦x4、x2≦x4、x3≦x4」と同値である。例えば、x4=0と固定すると、制約条件は「x1+x2+x3≦0」となる。このとき、x1=1とすると、x2,x3をどのように割り当てても制約条件は満たされない。よって、含意(x4=0->x1=0)が生成される。こうして、含意算出部120は、x4=0に対して次の3つの含意を得る。
【0086】
(x4=0->x1=0)
(x4=0->x2=0)
(x4=0->x3=0)
したがって、含意算出部120は、該当の制約条件に関し、x4=0に対する含意数を3とする。含意算出部120は、他に制約条件がなければ、x4=0に対する含意数を3に確定する。他に制約条件があれば、含意算出部120は、各制約条件に対して得られたx4=0に対する含意数を合計した値を、x4=0に対する含意数として確定する。
【0087】
例えば、含意算出部120は、状態変数x4=0に対する含意数「3」を確定すると、状態変数x4に対して、(1->0)含意数=「3」をtt管理テーブル111に登録する。なお、第1の例の制約条件では、例えばx4=1に対する含意は存在しないので、x4=1に対する含意数は0である。含意算出部120は、x4=1に対する含意数「0」を確定すると、状態変数x4に対して、(0->1)含意数=「0」をtt管理テーブル111に登録する。含意算出部120は、状態変数x1,x2,x3に対しても同様に、上記(1)~(3)の手順でバイナリ値ごとの含意を取得して含意数を算出し、算出した含意数をtt管理テーブル111に登録する。
【0088】
第2の例では、問題情報は、状態変数x1,x2,x3,x4に対して、制約条件「x1+x2+x3+x4≦1」を含む。第2の例の制約条件は、クリーク不等式と呼ばれ、実問題において頻出する制約条件である。例えば、x4=1と固定すると、制約条件は「x1+x2+x3≦0」となる。このとき、x1=1とすると、x2,x3をどのように割り当てても制約条件は満たされない。よって、含意(x4=1->x1=0)が生成される。こうして、含意算出部120は、x4=1に対して次の3つの含意を得る。
【0089】
(x4=1->x1=0)
(x4=1->x2=0)
(x4=1->x3=0)
したがって、含意算出部120は、該当の制約条件に関し、x4=1に対する含意数を3とする。含意算出部120は、状態変数x4=1に対する含意数「3」を確定すると、(0->1)含意数=「3」を、tt管理テーブル111に登録する。なお、第2の例の制約条件では、例えばx4=0に対する含意は存在しないので、x4=0に対する含意数は0である。含意算出部120は、x4=0に対する含意数「0」を確定すると、状態変数x4に対して、(1->0)含意数=「0」をtt管理テーブル111に登録する。含意算出部120は、状態変数x1,x2,x3に対しても同様に、上記(1)~(3)の手順でバイナリ値ごとの含意を取得して含意数を算出し、算出した含意数をtt管理テーブル111に登録する。第2の例の制約条件の場合、状態変数x1,x2,x3についても、状態変数x4と同様の含意が得られる。
【0090】
そして、tt決定部130は、tt管理テーブル111に登録された状態変数のバイナリ値ごとの含意数に基づいて、当該状態変数のバイナリ値ごとのttを決定する。tt決定部130は、決定したttをtt管理テーブル111に登録する。前述のように、ttは、含意数が大きい程、大きい値とする。例えば、ステップS11で例示したように、tt決定部130は、含意数に比例するようにttを決定してもよい。
【0091】
次に、探索部140による、tt管理テーブル111に基づくタブーサーチ実行の手順を説明する。
図7は、タブーサーチ実行の例を示すフローチャートである。
【0092】
タブーサーチ実行は、ステップS12に相当する。
(S20)探索部140は、イタレーション数を示す変数itを、it=0に設定する。探索部140は、初期状態および初期状態のエネルギーを現状態テーブル112およびベスト解テーブル113に登録する。また、探索部140は、全ての状態変数に対して、タブーリストにおけるイタレーションカウンタを0に設定する。また、探索部140は、タブーサーチを行う総イタレーション数num_iterationの値を予め取得する。num_iterationは、タブーサーチを実行する全探索期間または全探索回数に相当し、情報処理装置100に予め与えられる。
【0093】
(S21)探索部140は、遷移先候補に遷移する場合のΔEを計算する。遷移先候補は、現在の状態から1つの更新候補の状態変数の値を更新することで得られる状態である。ΔEは、更新候補とする状態変数の値を現在のバイナリ値から異なるバイナリ値に変化させる場合のエネルギー関数Eの変化量として計算される。エネルギー関数Eが式(1)で表される場合、ΔEは式(2)により計算される。ステップS21では、探索部140は、全状態変数それぞれを更新候補とする場合に対してΔEを計算する。
【0094】
(S22)探索部140は、ステップS21で計算した遷移先候補ごとのΔEに基づいて、遷移先を決定する。具体的には、探索部140は、ΔEが最良の遷移先候補を遷移先として決定する。このとき、探索部140は、全遷移先候補のうち、イタレーションカウンタが現在のイタレーション数it以上である状態変数の値を更新して得られる状態を、遷移先候補から除外する。ただし、探索部140は、イタレーションカウンタが現在のイタレーション数it以上である状態変数の値を更新して得られる状態がベスト解テーブル113に保持されるベスト解のエネルギーよりも良い場合、当該状態を遷移先候補に加える。
【0095】
(S23)探索部140は、状態の更新を行う。具体的には、探索部140は、ステップS22で決定した今回の遷移先の状態と当該状態のエネルギーで、現状態テーブル112のレコードを更新する。このとき、探索部140は、値が更新された状態変数xと、当該状態変数xの更新後のバイナリ値とに対応するttをtt管理テーブル111から取得する。そして、探索部140は、タブーリストにおけるイタレーションカウンタ[j]に対し、イタレーションカウンタ[j]=it+ttと設定する。
【0096】
(S24)探索部140は、ベスト解の更新を行う。具体的には、探索部140は、ステップS22で決定した今回の遷移先の状態のエネルギーが、ベスト解テーブル113におけるベスト解のエネルギーよりも良い場合、今回の遷移先の状態と当該状態のエネルギーで、ベスト解テーブル113のレコードを更新する。
【0097】
(S25)探索部140は、itをインクリメントする。すなわち、探索部140は、it=it+1に設定する。
(S26)探索部140は、itが総イタレーション数num_iterationに達したか否か、すなわち、it==num_iterationであるか否かを判定する。itがnum_iterationに達した場合、すなわち、it==num_iterationの場合、探索部140は、ベスト解テーブル113に保持されるベスト解を出力して、タブーサーチを終了する。itがnum_iterationに達していない場合(it<num_iterationの場合)、ステップS21に処理が進む。
【0098】
このように、情報処理装置100は、tt管理テーブル111を用いて、タブーサーチを実行する。これにより、情報処理装置100は、局所解から容易に脱出可能となり、短時間で良い解を得られる可能性を高められる。
【0099】
次に、情報処理装置100によるtt決定の他の処理例を説明する。情報処理装置100は、図6の手順に代えて、例えば下記の手順を実行してもよい。
図8は、情報処理装置の他の処理例を示すフローチャートである。
【0100】
(S30)tt決定部130は、tt算出に用いられるパラメータαの候補α_1,α_2,…,α_Nと、タブーサーチの短期実行時間T0と長期実行時間T1とを決定する。ここで、例えば、α_1<α_2<…<α_Nである。また、T0<T1である。例えば、tt決定部130は、α_1,α_2,…,α_N,T0,T1として、外部から入力された値を取得してもよい。
【0101】
(S31)含意算出部120は、問題情報を取得し、問題情報に含まれる各制約条件に対して含意算出を行い、全状態変数に対して、バイナリ値ごとの含意数を算出する。含意算出部120は、算出した含意数を、tt管理テーブル111に登録する。
【0102】
(S32)tt決定部130は、パラメータαの候補を全て選択済であるか否かを判定する。全て選択済の場合、ステップS36に処理が進む。全て選択済でない場合、ステップS33に処理が進む。
【0103】
(S33)tt決定部130は、パラメータαの候補からα_kを選択する。例えば、tt決定部130は、パラメータαの未選択の候補の中から、α_1,α_2,…の順に、α_kを1つ選択してもよい。
【0104】
(S34)tt決定部130は、全ての状態変数に対してα_kを使い、状態変数のバイナリ値ごとの含意数を基に該当の状態変数が該当のバイナリ値になったときのttを決定する。tt決定部130は、ステップS34で決定したttを記憶部110に格納する。
【0105】
(S35)探索部140は、短期実行時間T0に応じてnum_iterationを決定し、タブーサーチを実行する。ステップS35のタブーサーチは、図7と同様の手順で実行される。ステップS35のタブーサーチでは、探索部140は、タブーリストにおけるイタレーションカウンタの設定に、ステップS34で決定されたttを用いる。探索部140は、今回のタブーサーチで得られたベスト解のコスト、すなわち、エネルギーを、α_kに対応付けて記憶部110に記録する。そして、ステップS32に処理が進む。なお、ステップS34で記憶部110に格納されたttの情報は、α_kに対応付けて保持されてもよいし、ステップS35の完了に応じて削除されてもよい。
【0106】
(S36)tt決定部130は、ステップS35を繰り返し実行することで記憶部110に記録されたαの各候補とコストとの情報を参照して、最もコストの低かったαの候補をα_minとする。
【0107】
(S37)tt決定部130は、各状態変数のttを、α_minに対応するttに決定する。記憶部110にα_minに対応するttが保持されている場合、tt決定部130は、当該ttをそのまま利用してもよい。記憶部110にα_minに対応するttが保持されていない場合、tt決定部130は、ステップS34と同様に、α_minを用いてttを再計算する。tt決定部130は、決定したttを、tt管理テーブル111に登録する。
【0108】
(S38)探索部140は、長期実行時間T1に応じてnum_iterationを決定し、タブーサーチを実行する。ステップS38ではステップS35よりも長い時間、タブーサーチが実行される。ステップS38のタブーサーチは、図7と同様の手順で実行される。ステップS38のタブーサーチでは、探索部140は、タブーリストにおけるイタレーションカウンタの設定に、ステップS37で決定され、tt管理テーブル111に登録されたttを用いる。探索部140は、ステップS38のタブーサーチの実行により得られたベスト解を出力する。そして、情報処理装置100の処理が終了する。
【0109】
このように、情報処理装置100は、αの複数の候補それぞれを用いて決定したttにより比較的短時間のタブーサーチを実行することで、問題に対して最適なαを決定してもよい。情報処理装置100は、αを適切に決定することで、より良い解に到達する可能性を高めることができ、求解性能を一層向上できる。
【0110】
以上説明したように、情報処理装置100は、次の処理を実行する。
含意算出部120は、イジング型のエネルギー関数、すなわち、複数の状態変数を含むエネルギー関数で表される問題を示す問題情報を取得する。含意算出部120は、問題情報に含まれる複数の状態変数の少なくとも一部に対する制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、制約条件を充足するための設定値が特定のバイナリ値に決定される第2状態変数の数を取得する。tt決定部130は、タブーサーチにおいて、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数を、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定する。タブーサーチは、複数の状態変数の何れかの状態変数の値を更新する場合のエネルギー関数の値の変化量が最良である状態変数の値を更新する処理を繰り返し行う、問題の解の探索の手法である。
【0111】
これにより、情報処理装置100は、求解性能を向上できる。例えば、情報処理装置100は、第1状態変数が第1バイナリ値に更新された場合に第1状態変数の第1バイナリ値からの更新を禁止する探索回数、すなわち、タブーテニュアの自動調整により、局所解からの脱出能力が高くなり、短時間で優良な解を得ることができる。なお、タブーテニュアに相当する期間は、秒や分などの時間の単位により定められてもよいし、イタレーション数により定められてもよい。
【0112】
tt決定部130は、タブーテニュアに相当する探索回数の決定では、第2状態変数の数が多いほど、当該探索回数を多くする。これにより、情報処理装置100は、第2状態変数の数に応じて、当該探索回数を適切に調整できる。例えば、情報処理装置100は、ある局所解から別状態に遷移した後に、同じ局所解に再び遷移する可能性を適切に低減でき、局所解からの脱出能力を高められる。また、情報処理装置100は、第2の状態変数の数が小さいほど、当該探索回数を少なくすることで、解の探索空間が過剰に制限されることを防ぎ、より良い解を発見する可能性を高められる。
【0113】
例えば、tt決定部130は、第2状態変数の数に正の係数αを乗じることで、タブーテニュアに相当する探索回数を算出してもよい。これにより、情報処理装置100は、第2の状態変数の数に応じて、当該探索回数を適切に調整できる。
【0114】
また、tt決定部130は、タブーテニュアに相当する探索回数の決定では、係数αの候補である複数の候補係数それぞれを第2状態変数の数に乗じることで当該探索回数の候補である複数の候補回数を算出してもよい。そして、tt決定部130は、複数の候補回数それぞれを用いて実行された探索により得られた解に対応するエネルギー関数の値に基づいて、複数の候補係数のうち、探索に用いるタブーテニュアに相当する探索回数の算出に用いる係数αを決定してもよい。
【0115】
これにより、情報処理装置100は、タブーテニュアに相当する探索回数を決定するために使用する係数を適切に決定できる。その結果、情報処理装置100は、タブーサーチによる求解性能を向上できる。例えば、tt決定部130は、複数の候補回数それぞれを用いて実行された探索により得られた解に対応するエネルギー関数の値が最良である候補回数を与えた候補係数を、本番の探索でのタブーテニュアに相当する探索回数の算出に用いる係数αとする。なお、前述のα_1,α_2,…,α_Nは、複数の候補係数の一例である。
【0116】
また、問題情報は、他の制約条件を含んでもよい。この場合、含意算出部120は、他の制約条件に基づいて、第1状態変数に第1バイナリ値を設定した場合に、他の制約条件を充足するための設定値が特定のバイナリ値に決定される第3状態変数の数を取得する。tt決定部130は、第1状態変数と第1バイナリ値とに対応する第2状態変数の数と、第1状態変数と第1バイナリ値とに対応する第3状態変数の数との合計に基づいて、タブーテニュアに相当する探索回数を決定する。
【0117】
これにより、情報処理装置100は、問題に課される複数の制約条件に応じて、状態変数のバイナリ値ごとに、タブーテニュアに相当する探索回数を適切に決定できる。その結果、情報処理装置100は、タブーサーチにおいて局所解からの脱出能力を向上させることができ、求解性能を向上できる。なお、ある制約条件(制約式)に含まれる複数の状態変数の集合と他の制約条件(制約式)に含まれる複数の状態変数の集合とは重複する部分と重複しない部分とを含み得る。
【0118】
また、情報処理装置100は、探索部140を更に有してもよい。探索部140は、タブーサーチ法による解の探索を実行する。探索部140は、探索において、第1状態変数を第1バイナリ値に更新すると、タブーテニュアに相当する探索回数が経過するまで第1状態変数を更新候補から除外する。当該探索回数は、tt決定部130により、第1状態変数と第1バイナリ値とに対応する第2状態変数の数に基づいて決定された探索回数である。これにより、情報処理装置100は、求解性能を向上できる。
【0119】
探索部140は、タブーテニュアに相当する探索回数が経過していなくても、第1状態変数の値を更新することで探索により取得済であるエネルギー関数の値の最良値が更新される場合、第1状態変数の値の更新を許容してもよい。これにより、情報処理装置100は、より良い解を発見する可能性を高めることができ、求解性能を向上できる。
【0120】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体23に記録できる。
【0121】
例えば、プログラムを記録した記録媒体23を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体23に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0122】
10 情報処理装置
11 記憶部
12 処理部
図1
図2
図3
図4
図5
図6
図7
図8