(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174616
(43)【公開日】2022-11-24
(54)【発明の名称】プログラム、情報処理方法および情報処理装置
(51)【国際特許分類】
G06N 99/00 20190101AFI20221116BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2021080535
(22)【出願日】2021-05-11
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】土手 暁
(57)【要約】
【課題】解探索を効率化する。
【解決手段】処理部12は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択し、選択した変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。処理部12は、変化候補の状態変数の値を変化させると判定した場合、変化候補の状態変数の値を変化させる。処理部12は、変化候補の状態変数の値を変化させないと連続して判定した回数をカウントし、当該回数が所定回数に達すると、新たに選択される変化候補の状態変数の値の変化に対応するエネルギー関数の変化量をオフセット値により補正する。処理部12は、補正後の変化量に基づいて、当該新たに選択される変化候補の状態変数の値を変化させるか否かの判定を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理をコンピュータに実行させるプログラムであって、前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記プログラムは前記コンピュータに、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行させ、
前記探索処理は更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理と、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、新たに選択される前記変化候補の状態変数の値の変化に対応する前記エネルギー関数の前記変化量をオフセット値により補正する補正処理と
を有し、
前記補正処理によって前記変化量が補正された後の前記判定処理において、補正後の前記変化量に基づいて、新たに選択される前記変化候補の状態変数の値を変化させるか否かの判定を行う、
処理を前記コンピュータに実行させるプログラム。
【請求項2】
前記変化量の補正では、前記変化量から前記オフセット値を減算する補正を行う処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項3】
補正後の前記変化量に基づいて前記変化候補の状態変数の値を変化させると、前記オフセット値による補正を中止する処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項4】
前記所定の順序による前記変化候補の状態変数の一巡の選択に要する選択回数を、前記所定回数とする処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項5】
前記変化量を前記オフセット値により補正することで、前記変化候補の状態変数の値を変化させると判定する確率を上げる処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項6】
前記回数が前記所定回数に達する間に、各々の前記変化候補の状態変数に対して得られた前記変化量のうちの最小値を、前記オフセット値とし、
前記変化量から前記オフセット値を減算する補正を行うことで、前記最小値に対応する前記変化候補の状態変数の値を変化させると判定する確率を1にする、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項7】
前記変化候補の状態変数の値を変化させるか否かの一回の判定に対して選択する前記変化候補の状態変数の数を、1つまたは複数とする処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項8】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する情報処理装置が実行する情報処理方法であって、前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記情報処理装置が、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行し、
前記情報処理装置が更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理と、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、新たに選択される前記変化候補の状態変数の値の変化に対応する前記エネルギー関数の前記変化量をオフセット値により補正する補正処理と
を実行し、
前記補正処理によって前記変化量が補正された後の前記判定処理において、補正後の前記変化量に基づいて、新たに選択される前記変化候補の状態変数の値を変化させるか否かの判定を行う、
情報処理方法。
【請求項9】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する情報処理装置であって、
前記複数の状態変数の値を記憶する記憶部と、
前記探索処理を実行する処理部とを有し、
前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記処理部は、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行し、
前記処理部は更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理と、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、新たに選択される前記変化候補の状態変数の値の変化に対応する前記エネルギー関数の前記変化量をオフセット値により補正する補正処理と
を実行し、
前記補正処理によって前記変化量が補正された後の前記判定処理において、補正後の前記変化量に基づいて、新たに選択される前記変化候補の状態変数の値を変化させるか否かの判定を行う、
情報処理装置。
【請求項10】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理をコンピュータに実行させるプログラムであって、前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記プログラムは前記コンピュータに、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行させ、
前記探索処理は更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を有し、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、前記変化量と乱数値とに応じて計算される確率キー値に基づいて前記複数の状態変数から第1の状態変数を選択し、前記第1の状態変数の値を変化させる、
処理を前記コンピュータに実行させるプログラム。
【請求項11】
前記回数が前記所定回数に達する間に、各々の前記変化候補の状態変数に対して得られた前記変化量と前記乱数値とに応じた前記確率キー値を計算し、
計算した前記確率キー値のうちの最小値または最大値に対応する前記変化候補の状態変数を、前記第1の状態変数とする、
処理を前記コンピュータに実行させる請求項10記載のプログラム。
【請求項12】
前記変化量と前記乱数値と前記解の探索に用いられる温度値とに基づいて前記確率キー値を計算する処理を前記コンピュータに実行させる請求項10記載のプログラム。
【請求項13】
前記所定の順序による前記変化候補の状態変数の一巡の選択に要する選択回数を、前記所定回数とする処理を前記コンピュータに実行させる請求項10記載のプログラム。
【請求項14】
前記変化候補の状態変数の数を変化させるか否かの一回の判定に対して選択する前記変化候補の状態変数の数を、1つまたは複数とする処理を前記コンピュータに実行させる請求項10記載のプログラム。
【請求項15】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する情報処理装置が実行する情報処理方法であって、前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記情報処理装置が、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行し、
前記情報処理装置が更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を実行し、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、前記変化量と乱数値とに応じて計算される確率キー値に基づいて前記複数の状態変数から第1の状態変数を選択し、前記第1の状態変数の値を変化させる、
情報処理方法。
【請求項16】
複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する情報処理装置であって、
前記複数の状態変数の値を記憶する記憶部と、
前記探索処理を実行する処理部とを有し、
前記探索処理は、
前記複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、
前記選択処理において選択された前記変化候補の状態変数の値の変化に対応する、前記エネルギー関数の値の変化量に基づいて、前記変化候補の状態変数の値を変化させるか否かを判定する判定処理と、
前記判定処理において、前記変化候補の状態変数の値を変化させると判定された場合、前記変化候補の状態変数の値を変化させる状態変更処理と
を有し、
前記探索処理において、前記処理部は、前記選択処理と前記判定処理と前記状態変更処理を、前記所定の順序に沿って繰り返し実行し、
前記処理部は更に、
繰り返し実行される前記探索処理において前記変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を実行し、
前記カウント処理においてカウントされた前記回数が所定回数に達すると、前記変化量と乱数値とに応じて計算される確率キー値に基づいて前記複数の状態変数から第1の状態変数を選択し、前記第1の状態変数の値を変化させる、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【0002】
組合せ最適化問題の求解に情報処理装置が用いられることがある。情報処理装置は、組合せ最適化問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルのエネルギー関数に変換し、エネルギー関数に含まれる状態変数の値の組合せのうち、エネルギー関数を最小化または最大化する組合せを探索する。エネルギー関数を最小化または最大化する状態変数の値の組合せは、状態変数の組により表される基底状態または最適解に相当する。実用的な時間で組合せ最適化問題の近似解を得る手法には、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法を基に、シミュレーテッドアニーリング(SA:Simulated Annealing)法やレプリカ交換法などを組み合わせた手法がある。
【0003】
例えばMCMC法を実行する装置には、インデックス順(シーケンシャル)に状態変数を選択し、当該状態変数の値が変化する状態遷移を許容するかを判定するものや、複数の状態遷移を同時に遷移候補として1つの状態遷移を選択する並列探索を行うものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-135727号公報
【特許文献2】米国特許出願公開第2014/0279816号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のように、エネルギー関数で表される問題に対する求解において、状態変数のインデックスなどの所定の順序で状態変数を選択し、当該状態変数に係る状態遷移を許容するかを判定することが考えられる。この方法では、例えば複数の状態変数を一巡して何れの状態遷移も許容されない場合には次の一巡の判定を開始するというように、状態遷移が行われるまで、各状態変数に対する判定を繰り返し行うことになる。しかし、状態遷移が行われないまま当該繰り返しの回数が増すほど、求解に要する時間が増える。
【0006】
1つの側面では、本発明は、解探索を効率化するプログラム、情報処理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理をコンピュータに実行させるプログラムが提供される。探索処理は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する判定処理と、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる状態変更処理とを有する。探索処理において、プログラムはコンピュータに、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行させる。探索処理は更に、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理と、カウント処理においてカウントされた回数が所定回数に達すると、新たに選択される変化候補の状態変数の値の変化に対応するエネルギー関数の変化量をオフセット値により補正する補正処理とを有する。プログラムは、補正処理によって変化量が補正された後の判定処理において、補正後の変化量に基づいて、新たに選択される変化候補の状態変数の値を変化させるか否かの判定を行う、処理をコンピュータに実行させる。
【0008】
また、1つの態様では、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理をコンピュータに実行させるプログラムが提供される。探索処理は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する選択処理と、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する判定処理と、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる状態変更処理とを有する。探索処理において、プログラムはコンピュータに、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行させる。探索処理は更に、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を有する。プログラムは、カウント処理においてカウントされた回数が所定回数に達すると、変化量と乱数値とに応じて計算される確率キー値に基づいて複数の状態変数から第1の状態変数を選択し、第1の状態変数の値を変化させる、処理をコンピュータに実行させる。
【0009】
また、1つの態様では、情報処理方法が提供される。
また、1つの態様では、情報処理装置が提供される。
【発明の効果】
【0010】
1つの側面では、解探索を効率化できる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態の情報処理装置を説明する図である。
【
図3】第3の実施の形態の情報処理装置のハードウェア例を示す図である。
【
図6】情報処理装置の処理例を示すフローチャートである。
【
図9】第4の実施の形態のレプリカ更新部の機能例を示す図である。
【
図10】情報処理装置の処理例を示すフローチャートである。
【
図12】第5の実施の形態の情報処理装置の機能例を示す図である。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0013】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、GPU(Graphics Processing Unit)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)を含み得る。
【0014】
組合せ最適化問題は、イジング型のエネルギー関数により定式化され、例えばエネルギー関数の値を最小化する問題に置き換えられる。エネルギー関数は、目的関数や評価関数などと呼ばれることもある。エネルギー関数は、複数の状態変数を含む。状態変数は、0または1の値を取るバイナリ変数であり、ビットと呼ばれてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。エネルギー関数の値を最小化する解は、イジングモデルの基底状態を表し、組合せ最適化問題の最適解に対応する。ここで、エネルギー関数の値をエネルギーと言う。
【0015】
イジング型のエネルギー関数は、式(1)で表される。
【0016】
【0017】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化されたエネルギー関数である。エネルギーを最大化する問題の場合には、エネルギー関数の符号を逆にすればよい。状態ベクトルxに属する複数の状態変数の値は、記憶部11に記憶される。
【0018】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。
【0019】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアスを示している。
状態変数xiの値が変化して1-xiとなると、状態変数xiの増加分は、δxi=(1-xi)-xi=1-2xiと表せる。したがって、エネルギー関数E(x)に対して、状態変数xiの変化に伴うエネルギーの変化量ΔEiは、式(2)で表される。
【0020】
【0021】
処理部12は、解の探索において、エネルギーの変化量がΔEiとなる状態遷移、すなわち、状態変数xiの値の変化を許容するか否かを決定するためにメトロポリス法やギブス法を用いる。処理部12は、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移を確率的に許容する。例えば、エネルギーの変化量ΔEiの状態遷移を受入れる確率、すなわち、遷移受入れ確率Aiは、式(3)で表される。
【0022】
【0023】
βは温度値T(T>0)の逆数(β=1/T)であり、逆温度と呼ばれる。min演算子は、引数のうちの最小値を取ることを示す。式(3)の右辺上側はメトロポリス法に相当し、式(3)の右辺下側はギブス法に相当する。処理部12は、0<u<1である一様乱数uとAiとを比較し、u<Aiであれば状態変数xiの値の変化を受入れ、状態変数xiの値を変化させる。処理部12は、u<Aiでなければ状態変数xiの値の変化を受入れず、状態変数xiの値を変化させない。式(3)によれば、ΔEiが大きい値であるほど、Aiは小さくなる。また、βが小さい、すなわち、Tが大きいほど、ΔEiが大きい状態遷移も許容され易くなる。例えば、処理部12は、MCMC法の一種であるSA法、パラレルテンパリング(PT:Parallel Tempering)法またはポピュレーションアニーリング(PA:Population Annealing)法などを解の探索に用いることができる。PT法は、レプリカ交換法とも呼ばれる。
【0024】
処理部12は、複数の状態変数のうちの一部である変化候補の状態変数を、所定の順序で、すなわち、シーケンシャルに選択する。一例では、処理部12は、変化候補の状態変数を1つ選択する。選択された変化候補の状態変数xiは、次の遷移判定対象の状態変数となる。所定の順序を示す情報は、記憶部11に予め設定される。例えば、所定の順序は、インデックスiの順序でもよい。全ての状態変数の数をNとすると、インデックスiの順序は、i=1,2,…,N-1,N,1,2,…N,1,2,…となる。あるいは、所定の順序は、ランダム順列Π1,Π2,…,ΠN,Π1,Π2,…でもよい。ただし、{Πi}は、{1,…,N}の並べ替えである。なお、後述されるように、処理部12は、一度に選択する変化候補の状態変数の数を2つ以上としてもよい。
【0025】
処理部12は、上記のように、選択した状態変数xiの値を変化させる場合のエネルギーの変化量ΔEiに基づいて、状態変数xiの値を変化させるか否かを判定する。処理部12は、値を変化させると判定した場合、状態変数xiの値を変化させ、上記所定の順序に従って、次の判定対象の状態変数を選択する。
【0026】
一方、処理部12は、状態変数xiの値を変化させないと判定した場合、状態変数xiの値を変化させずに、判定対象の次の状態変数を選択する。処理部12は、状態変数の値を変化させないと連続して判定した回数を記憶部11に記録する。
【0027】
そして、処理部12は、状態変数の値を変化させないと連続して判定した回数が所定回数に達すると、エネルギーの変化量をオフセット値により補正し、補正後のエネルギーの変化量に基づいて、選択した状態変数の値を変化させるか否かの判定を行う。
【0028】
例えば、処理部12は、遷移受入れ確率Aiに含まれるΔEiを、オフセット値Eoff(Eoff>0)により補正することで、補正後の遷移受入れ確率A’iを得る。より具体的には、A’i=Ai(ΔEi-Eoff)である。メトロポリス法を用いる場合、遷移受入れ確率A’iは式(4)で表される。
【0029】
【0030】
逆温度βとオフセット値Eoffが正の場合、遷移受入れ確率A’i=A(ΔEi-Eoff)は、本来の遷移受入れ確率Ai=A(ΔEi)に対して、1以上の係数exp(β・Eoff)を乗じた確率となる。このため、遷移受入れ確率A’i=A(ΔEi-Eoff)が用いられる場合、本来の遷移受入れ確率Ai=A(ΔEi)を用いた場合に対して各状態遷移の遷移受入れ確率の相互の比率は変わらない。
【0031】
処理部12は、Aiに代えて、A’iを一様乱数uと比較して、状態変数xiの値の変化を受入れるかを判定する。すなわち、処理部12は、u<A’iであれば状態変数xiの値の変化を受入れ、状態変数xiの値を変化させる。処理部12は、u<A’iでなければ状態変数xiの値の変化を受入れず、状態変数xiの値を変化させない。各状態変数に関する遷移受入れ確率が向上するので、状態遷移が発生し易くなる。
【0032】
処理部12は、遷移受入れ確率A’iによる判定により、何れかの状態変数の値を変化させると、Eoff=0にリセットすることで補正量を0にする、すなわち、オフセット値による補正を中止する。その後、新たに選択される遷移候補の状態変数に対する遷移受入れ確率はAiが用いられる。そして、処理部12は、判定対象の次の状態変数を選択し、連続して状態変数の値を変化させないと判定した回数のカウントを0から新たに開始する。なお、遷移受入れ確率A’iに基づく状態変数xiに係る状態遷移の受入れ後における判定対象の次の状態変数は、上記所定の順序に従って選択される状態変数xiの次の状態変数でもよいし、当該順序における最初の状態変数でもよい。
【0033】
例えば、処理部12は、状態変数の値を変化させないと連続で判定した回数が、一巡の判定回数Zに達した場合に、エネルギーの変化量をオフセット値により補正してもよい。一度に選択する変化候補の状態変数の数を1つとする場合、一巡の判定回数Zは、Z=Nでもよい。
【0034】
図1では、情報処理装置10による処理例が示されている。例えば、状態ベクトル30は、状態変数x
1,x
2,…,x
Nを含む。一巡の判定回数Z=Nとする。処理部12は、x
1,x
2,…,x
Nと順番に1つずつ選択して、状態遷移を受入れるかの判定を行う。そして、処理部12は、状態変数の値を変化させないと連続で判定した回数が、Z=Nに達すると、ΔE
iをオフセット値E
offにより補正した遷移受入れ確率A’
iを用いて、状態変数x
iに係る状態遷移を受入れるかの判定を行う。グラフ40は、ある状態に対して、何れかの状態変数の値を変化させる場合の遷移受入れ確率A
i,A’
iを、状態変数ごとにプロットした例である。グラフ40で例示されるように、ΔE
iをオフセット値E
offで補正することで、補正しない場合よりも、遷移受入れ確率を大きくすることができる。
【0035】
また、処理部12は、Eoff=Eoff
*としてもよい。Eoff
*は、式(5)で表される。
【0036】
【0037】
max演算子は、引数のうちの最大値を取ることを示す。Eoff=Eoff
*とすることで、状態遷移が発生しなかった場合の全てのインデックスiに対するΔEiのうちの最小値ΔEmに対応する遷移受入れ確率A’mを、A’m=1とすることができる。すなわち、処理部12は、少なくともxmについて状態遷移を確実に受入れることができる。例えば、処理部12は、状態変数の値を変化させないと連続して判定している間に得られたエネルギーの変化量の最小値を記憶部11に保存しておくことで、Eoff
*を得ることができる。
【0038】
なお、処理部12は、一度に選択する変化候補の状態変数の数を2つ以上とし、一回の遷移判定に対して当該2つ以上の変化候補の状態変数の値を同時に変更してもよい。処理部12は、2つ以上の状態変数の値を変化させる場合のΔEを、当該2つ以上の状態変数の各々に対する、式(2)に基づくエネルギーの変化量から計算することができる。
【0039】
例えば、2つの状態変数を選択するシーケンスは、インデックスの組を用いて、(1,2),(1,3),…,(1,N),(2,3),(2,4),…,(2,N),…,(N-1,N)で表される順序でもよい。この場合、一巡の判定回数Z=(N-1)+(N-2)+…+1={N(N-1)}/2となる。
【0040】
あるいは、2つの状態変数を選択するシーケンスは、(Π1,Π2),(Π1,Π3),…,(ΠN-1,ΠN)で表される順序でもよい。ただし、{Πi}は{1,…,N}の並べ替えである。何れの場合も、一巡の中で同じ状態変数の組は2回以上選択されない、すなわち、一巡の中で選択される状態変数の組に重複はない。
【0041】
また、処理部12は、一度に選択する変化候補の状態変数の数を1つとする探索を行った後に、一度に選択する変化候補の状態変数の数を2つとする探索を行ってもよい。更に、処理部12は、所定のグループに属する状態変数のうちの1つだけが1になるといった制約を考慮した順序で、判定対象の状態変数を選択してもよい。
【0042】
情報処理装置10によれば、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理が実行される。探索処理は、選択処理と判定処理と状態変更処理とを有する。選択処理では、処理部12は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。判定処理では、処理部12は、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。状態変更処理では、処理部12は、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる。探索処理において、処理部12は、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行する。探索処理において、処理部12は更に、カウント処理と補正処理とを実行する。カウント処理では、処理部12は、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントする。補正処理では、処理部12は、カウント処理においてカウントされた回数が所定回数に達すると、新たに選択される変化候補の状態変数の値の変化に対応するエネルギー関数の変化量をオフセット値により補正する。処理部12は、補正処理によって変化量が補正された後の判定処理において、補正後の変化量に基づいて、新たに選択される変化候補の状態変数の値を変化させるか否かの判定を行う。
【0043】
これにより、情報処理装置10は解探索を効率化できる。
エネルギー関数で表される問題に対する求解において、上記のようにシーケンシャルに状態変数を選択し、当該状態変数に係る状態遷移を許容するかをエネルギーの変化量に基づいて判定することが考えられる。この方法では、例えば複数の状態変数を一巡して何れの状態遷移も許容されない場合には次の一巡の判定を開始するというように、状態遷移が行われるまで、各状態変数に対する判定を繰り返し行うことになる。しかし、状態遷移が行われないまま当該繰り返しの回数が増すほど、求解に要する時間が増える。例えば、全てのインデックスiに対してΔEi>0の場合、すなわち局所解に陥った場合や低温(β>>1)の場合に、全ての状態変数に対する一巡の判定を繰り返しても、状態遷移が起こらず、サンプリングの効率が悪くなり、求解に時間がかかることがある。
【0044】
そこで、情報処理装置10により、状態変数の値を変化させないと連続して判定された回数が所定回数に達すると、エネルギーの変化量をオフセット値Eoffにより補正することで、各状態変数に係る状態遷移が受入れられ易くなり、状態遷移が促進される。特に、情報処理装置10は、Eoff=Eoff
*とすることで、少なくとも1つの状態変数において、確実に状態遷移を生じさせ、状態遷移を促せる。こうして、状態遷移の停滞を防ぐことで、情報処理装置10は解探索を効率化できる。その結果、情報処理装置10は、短時間で良解に到達可能になる。例えば、反転候補の少ない問題、特にエネルギーが局所最小値をとる状態の多い組合せ最適化問題に対しても、効率よく良い解を探索することが可能となる。
【0045】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置を説明する図である。
【0046】
情報処理装置20は、情報処理装置10と同様に、組合せ最適化問題に対する解をMCMC法の一種であるSA法、PT法またはPA法などを用いて探索し、探索した解を出力する。情報処理装置20は、記憶部21および処理部22を有する。記憶部21は、RAMなどの揮発性記憶装置でもよいし、HDDやフラッシュメモリなどの不揮発性記憶装置でもよい。処理部22は、CPU、DSP、ASIC、FPGA、GPUなどを含み得る。処理部22はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)を含み得る。
【0047】
第1の実施の形態で説明したように、組合せ最適化問題は、式(1)のエネルギー関数を最小化する複数の状態変数の値の組を求める問題に置き換えられる。式(1)の状態ベクトルxに属する複数の状態変数の値は、記憶部21に記憶される。
【0048】
処理部22は、複数の状態変数のうちの一部である変化候補の状態変数を、所定の順序で、すなわち、シーケンシャルに選択する。一例では、処理部22は、変化候補の状態変数を1つ選択する。所定の順序を示す情報は、記憶部21に予め設定される。例えば、所定の順序は、インデックスiの順序でもよい。全ての状態変数の数をNとすると、インデックスiの順序は、i=1,2,…,N-1,N,1,2,…N,1,2,…となる。あるいは、所定の順序は、ランダム順列Π1,Π2,…,ΠN,Π1,Π2,…でもよい。ただし、{Πi}は、{1,…,N}の並べ替えである。なお、後述されるように、処理部22は、一度に選択する変化候補の状態変数の数を2つ以上としてもよい。
【0049】
処理部22は、式(2)で表されるエネルギーの変化量ΔEiに基づいて、選択した状態変数xiの値を変化させるか否かを判定する。より具体的には、処理部22は、式(3)で表される遷移受入れ確率Ai(ΔEi)と乱数u(0<u<1)との比較により当該判定を行う。当該判定の方法は処理部12による判定と同じである。処理部22は、値を変化させると判定した場合、状態変数xiの値を変化させ、上記所定の順序に従って、次の判定対象の状態変数を選択する。
【0050】
一方、処理部22は、状態変数xiの値を変化させないと判定した場合、状態変数xiの値を変化させずに、判定対象の次の状態変数を選択する。処理部22は、状態変数の値を変化させないと連続して判定した回数を記憶部21に記録する。
【0051】
そして、処理部22は、状態変数の値を変化させないと連続して判定した回数が所定回数に達すると、エネルギーの変化量と乱数とに応じて計算される確率キー(Key)値に基づいて、複数の状態変数のうち、値を変化させる状態変数を決定し、決定した状態変数の値を変化させる。
【0052】
例えば、処理部22は、値を変化させる状態変数を、式(6)の重み付き確率Piに基づいて選択することが考えられる。
【0053】
【0054】
重み付き確率Piは、何回かの試行を行って最終的に状態変数xiの値の変化が生じる確率を示す。この場合、処理部22は、式(7)の乱数rを計算し、式(8)を満たすインデックスkの状態変数xkの値を変化させると決定する。式(7)のrを確率キー値の一種と考えてもよい。
【0055】
【0056】
【0057】
あるいは、処理部22は、式(9)、式(10)、式(11)の何れかの式で表される確率キー値ki=ki(ΔEi,ui)を各状態変数に対して計算し、kiが最大値または最小値となる状態変数の値を変化させると決定してもよい。uiは、0<ui<1の互いに独立な一様乱数である。
【0058】
【0059】
【0060】
【0061】
式(9)、(10)を用いる場合、処理部22は、kiが最大値となる状態変数を選択する。式(11)を用いる場合、処理部22は、kiが最小値となる状態変数を選択する。式(11)はメトロポリス法に相当する。各式のlogは、自然対数である。式(10)の分母はAiであり、分子はlog(ui)である。
【0062】
これにより、状態遷移が滞る場合に、何れかの状態変数の値を適切に変化させ、解探索を促進できる。処理部22は、確率キー値により、何れかの状態変数の値を変化させると、判定対象の次の状態変数を選択し、連続して状態変数の値を変化させないと判定した回数のカウントを0から新たに開始する。なお、確率キー値に基づいて状態変数xiの値を変化させた後における判定対象の次の状態変数は、上記所定の順序に従って選択される状態変数xiの次の状態変数でもよいし、当該順序における最初の状態変数でもよい。
【0063】
例えば、処理部22は、状態変数の値を変化させないと連続で判定した回数が、一巡の判定回数Zに達した場合に、確率キー値に基づいて値を変化させる状態変数を選択してもよい。一度に選択する変化候補の状態変数の数を1つとする場合、一巡の判定回数Zは、Z=Nでもよい。
【0064】
図2では、情報処理装置20による処理例が示されている。例えば、状態ベクトル30は、状態変数x
1,x
2,…,x
Nを含む。一巡の判定回数Z=Nとする。処理部22は、x
1,x
2,…,x
Nと順番に1つずつ選択して、状態遷移を受入れるかの判定を行う。そして、処理部22は、状態変数の値を変化させないと連続で判定した回数が、Z=Nに達すると、確率キー値k
i(ΔE
i,u
i)を用いて、例えば、確率キー値k
M(ΔE
M,u
M)に対応する状態変数x
Mの値を変化させると決定し、状態変数x
Mの値を変化させる。例えば、処理部22は、式(9)~(11)の何れを用いるかに応じて、状態変数の値を変化させないと連続して判定している間に得られた確率キー値k
i(ΔE
i,u
i)の最大値または最小値を記憶部21に保存しておくことで、確率キー値k
M(ΔE
M,u
M)を得ることができる。
【0065】
なお、処理部22は、一度に選択する変化候補の状態変数の数を2つ以上とし、一回の遷移判定に対して当該2つ以上の変化候補の状態変数の値を同時に変更してもよい。処理部22は、2つ以上の状態変数の値を変化させる場合のΔEを、当該2つ以上の状態変数の各々に対する、式(2)に基づくエネルギーの変化量から計算することができる。
【0066】
例えば、2つの状態変数を選択するシーケンスは、インデックスの組を用いて、(1,2),(1,3),…,(1,N),(2,3),(2,4),…,(2,N),…,(N-1,N)で表される順序でもよい。この場合、一巡の判定回数Z=(N-1)+(N-2)+…+1={N(N-1)}/2となる。
【0067】
あるいは、2つの状態変数を選択するシーケンスは、(Π1,Π2),(Π1,Π3),…,(ΠN-1,ΠN)で表される順序でもよい。ただし、{Πi}は{1,…,N}の並べ替えである。何れの場合も、一巡の中で同じ状態変数の組は2回以上選択されない、すなわち、一巡の中で選択される状態変数の組に重複はない。一度に選択する変化候補の状態変数の数をa(aは1以上の整数)個とする場合、処理部22が確率キー値に基づいて選択する状態変数の数もa個となる。
【0068】
また、処理部22は、一度に選択する変化候補の状態変数の数を1つとする探索を行った後に、一度に選択する変化候補の状態変数の数を2つとする探索を行ってもよい。更に、処理部22は、所定のグループに属する状態変数のうちの1つだけが1になるといった制約を考慮した順序で、判定対象の状態変数を選択してもよい。
【0069】
情報処理装置20によれば、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理が実行される。探索処理は、選択処理と判定処理と状態変更処理とを有する。選択処理では、処理部22は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。判定処理では、処理部22は、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。状態変更処理では、処理部22は、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる。探索処理において、処理部22は、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行する。処理部22は、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を実行する。処理部22は、カウント処理においてカウントされた回数が所定回数に達すると、変化量と乱数値とに応じて計算される確率キー値に基づいて複数の状態変数から第1の状態変数を選択し、第1の状態変数の値を変化させる。
【0070】
これにより、情報処理装置20は解探索を効率化できる。
エネルギー関数で表される問題に対する求解において、上記のようにシーケンシャルに状態変数を選択し、当該状態変数に係る状態遷移を許容するかをエネルギーの変化量に基づいて判定することが考えられる。この方法では、例えば複数の状態変数を一巡して何れの状態遷移も許容されない場合には次の一巡の判定を開始するというように、状態遷移が行われるまで、各状態変数に対する判定を繰り返し行うことになる。しかし、状態遷移が行われないまま当該繰り返しの回数が増すほど、求解に要する時間が増える。例えば、全てのインデックスiに対してΔEi>0の場合、すなわち局所解に陥った場合や低温(β>>1)の場合に、全ての状態変数に対する一巡の判定を繰り返しても、状態遷移が起こらず、サンプリングの効率が悪くなり、求解に時間がかかることがある。
【0071】
そこで、情報処理装置20により、状態変数の値を変化させないと連続して判定された回数が所定回数に達すると、エネルギーの変化量と乱数値とに応じた確率キー値によって遷移対象の状態変数を決定し、当該状態変数の値を変化させることで、状態遷移を促せる。こうして、状態遷移の停滞を防ぐことで、情報処理装置20は解探索を効率化できる。その結果、情報処理装置20は、短時間で良解に到達可能になる。例えば、反転候補の少ない問題、特にエネルギーが局所最小値をとる状態の多い組合せ最適化問題に対しても、効率よく良い解を探索することが可能となる。
【0072】
以下では、情報処理装置10,20を更に具体的に説明する。
[第3の実施の形態]
次に、第3の実施の形態を説明する。
【0073】
図3は、第3の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置100は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。情報処理装置100は、CPU101、RAM102、アクセラレータカード103、HDD104、GPU105、入力IF(InterFace)106、媒体リーダ107およびNIC(Network Interface Card)108を有する。
【0074】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD104に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0075】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0076】
アクセラレータカード103は、式(1)で表されるイジング型のエネルギー関数で表される問題の解を、MCMC法を用いて探索するハードウェアアクセラレータである。アクセラレータカード103は、一定温度のMCMC法または複数温度間でイジングモデルの状態を交換するPT法を行うことで、該当温度におけるボルツマン分布に従う状態をサンプリングするサンプラーとして用いることができる。アクセラレータカード103は、組合せ最適化問題の求解のためには、PT法や温度値を徐々に下げるSA法などのアニーリングの処理を実行する。
【0077】
SA法は、サンプリング時に使用する温度値を高温から低温に下げる、すなわち、逆温度βを増やすことで、最適解を効率的に発見する方法である。低温側、すなわち、βの大きい場合でもある程度状態が変化することで、温度値を早く下げても良い解を発見できる可能性が高くなる。例えば、SA法を用いる場合、アクセラレータカード103は、一定の温度値での状態遷移の試行を一定回数繰り返した後に温度値を下げる、という動作を繰り返す。
【0078】
PT法は、複数の温度値を用いて独立してMCMC法を実行し、各温度値で得られた状態に対して、適宜、温度値を交換する手法である。低温でのMCMCによって状態空間の狭い範囲を探索し、高温でのMCMCによって状態空間の広い範囲を探索することで、効率的に良い解を発見することができる。例えば、PT法を用いる場合、アクセラレータカード103は、複数の温度値の各々での状態遷移の試行を並列して行い、一定回数の試行を行うごとに、各温度値で得られた状態に対して、所定の交換確率で温度値を交換する、という動作を繰り返す。
【0079】
アクセラレータカード103は、FPGA111およびRAM112を有する。FPGA111は、アクセラレータカード103における探索機能を実現する。当該探索機能は、GPUやASICなどの他の種類の集積回路により実現されてもよい。RAM112は、FPGA111での探索に用いられるデータやFPGA111により探索された解を保持する。
【0080】
アクセラレータカード103のようにイジング形式の問題の解を探索するハードウェアアクセラレータは、イジングマシンやボルツマンマシンなどと呼ばれることがある。情報処理装置100は、複数のアクセラレータカードを有してもよい。
【0081】
HDD104は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100はフラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0082】
GPU105は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0083】
入力IF106は、情報処理装置100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0084】
媒体リーダ107は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0085】
媒体リーダ107は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD104などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD104を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0086】
NIC108は、ネットワーク54に接続され、ネットワーク54を介して他のコンピュータと通信を行うインタフェースである。NIC108は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【0087】
ここで、FPGA111は、第1の実施の形態の処理部12および第2の実施の形態の処理部22の一例である。RAM112は、第1の実施の形態の記憶部11および第2の実施の形態の記憶部21の一例である。
【0088】
アクセラレータカード103の機能は、RAM102に記憶されたプログラムをCPU101に実行させることで実現されてもよい。この場合、CPU101は第1の実施の形態の処理部12および第2の実施の形態の処理部22の一例である。また、RAM102は第1の実施の形態の記憶部11および第2の実施の形態の記憶部21の一例である。
【0089】
図4は、情報処理装置の機能例を示す図である。
情報処理装置100は、係数保持部120、探索処理部130および制御部190を有する。係数保持部120には、RAM102やHDD104の記憶領域が用いられる。探索処理部130は、アクセラレータカード103により実現される。制御部190は、RAM102に記憶されたプログラムをCPU101に実行させることで実現される。
【0090】
係数保持部120は、エネルギー関数に含まれる2つの状態変数の全組合せに対応する重み係数{Wij}を保持する。
探索処理部130は、エネルギー関数および係数保持部120に記憶された重み係数に基づいて、イジングモデルの基底状態に対応する解を探索する。ここで、エネルギー関数に含まれる全ての状態変数の1セットをレプリカと称する。探索処理部130は、レプリカ更新部140、インデックス生成部150および乱数生成部160を有する。
【0091】
レプリカ更新部140は、SA法やPT法などを用いて単一のレプリカの更新を行う。レプリカ更新部140は、インデックス生成部150により入力されるインデックスに基づいて、状態遷移の候補となる状態変数をシーケンシャルに選択する。レプリカ更新部140の詳細は後述される。
【0092】
インデックス生成部150は、次の変化候補の状態変数を示すインデックスを生成し、レプリカ更新部140に入力する。インデックス生成部150は、制御部190により予め指定された所定の順序で、インデックスを生成し、レプリカ更新部140に入力する。一例では、一度の試行における変化候補の状態変数の数を1つとする。この場合、インデックス生成部150は、次の変化候補の状態変数を示す1つのインデックスをレプリカ更新部140に入力する。
【0093】
例えば、所定の順序は、インデックスiの順序でもよい。全ての状態変数の数をNとすると、インデックスiの順序は、i=1,2,…,N-1,N,1,2,…N,1,2,…となる。また、当該インデックスiの当該順序からランダムにインデックスを飛ばした順序としてもよい。このような方法として、例えば、下記の文献1が参考になる。
【0094】
文献1:Ren et al., “Acceleration of Markov chain Monte Carlo simulations through sequential updating,” J.Chem. Phys. Volume 124, Issue 6, 064109, 2006.
あるいは、所定の順序は、ランダム順列Π1,Π2,…,ΠN,Π1,Π2,…でもよい。ただし、{Πi}は、{1,…,N}の並べ替えである。{Πi}に対する{1,…,N}の並べ方の順序は、一巡ごと、または、何巡かごとの所定のタイミングで変更されてもよい。なお、後述されるように、一度の試行における変化候補の状態変数の数は2つ以上でもよい。この場合、インデックス生成部150は、次の変化候補の状態変数を示す2つ以上のインデックスをレプリカ更新部140に入力する。
【0095】
乱数生成部160は、式(3)の遷移受入れ確率Aiや式(4)の遷移受入れ確率A’iに基づく状態遷移の受入れ判定に用いられる一様乱数u(0<u<1)を生成し、レプリカ更新部140に入力する。
【0096】
制御部190は、ユーザにより入力された組合せ最適化問題の情報を取得し、当該組合せ最適化問題に対応するエネルギー関数の情報を生成する。制御部190は、組合せ最適化問題に応じた重み係数を係数保持部120に格納する。制御部190は、探索に用いられる温度値などのパラメータやインデックス生成部150により生成されるインデックスの順序などを探索処理部130に入力し、探索処理部130による解探索を開始させる。
【0097】
制御部190は、探索処理部130により探索された解を取得する。制御部190は、取得した解を組合せ最適化問題に対する解の形式に変換し、ディスプレイ51に表示させたり、ネットワーク54を介してユーザが利用する端末装置に送信したりすることで、当該解をユーザに提供する。
【0098】
なお、上記のようなシーケンシャルに遷移判定を行う方法には、例えば、下記の文献2が参考になる。
文献2:Manousiouthakis et al., “Strict Detailed Balance is Unnecessary in Monte Carlo Simulation,” J.Chem. Phys. Volume 110, Issue 6, pp.2753-2756, 1999.
図5は、レプリカ更新部の機能例を示す図である。
【0099】
レプリカ更新部140は、キャッシュ141、状態保持部142、ΔE計算部143、受入れ判定部144およびオフセット設定部145を有する。
キャッシュ141は、インデックス生成部150により入力された次の遷移候補のインデックスiに係る重み係数{W1i,W2i,…,WNi}を保持する。レプリカ更新部140は当該重み係数{W1i,W2i,…,WNi}をキャッシュ141にプリフェッチする。
【0100】
状態保持部142は、複数の状態変数の現在の値{x1,x2,…,xN}と、当該複数の状態変数の現在の値に対応するエネルギーEと、現在の温度値の逆数βとを保持する。また、状態保持部142は、状態変数x1,x2,…,xNに対応する局所場h1,h2,…,hNを保持する。局所場hiは、式(12)で表される。
【0101】
【0102】
状態保持部142は、インデックス生成部150により入力された次の遷移候補のインデックスiに係る局所場hiをΔE計算部143に出力する。
ΔE計算部143は、状態保持部142に保持される局所場hiに基づいて、式(13)によりエネルギーの変化量ΔEiを計算する。
【0103】
【0104】
ΔE計算部143は、計算したΔEiを受入れ判定部144に出力する。
受入れ判定部144は、ΔE計算部143より入力されるΔEiからオフセット設定部145より入力されるオフセット値Eoffを減算する補正を行う。受入れ判定部144は、補正後の変化量(ΔEi-Eoff)に基づいて、式(4)の遷移受入れ確率A’iを計算する。なお、通常時は、オフセット設定部145によりEoff=0とされる。Eoff=0の場合、遷移受入れ確率A’i=Aiである。
【0105】
受入れ判定部144は、乱数生成部160により入力される一様乱数uと、遷移受入れ確率A’iとの比較により、インデックスiの状態遷移を受入れるか否かを判定する。受入れ判定部144は、u<A’iであればインデックスiの状態遷移を受入れる。処理部12は、u<A’iでなければインデックスiの状態遷移を受入れない、すなわち、インデックスiの状態遷移を拒絶する。
【0106】
なお、受入れ判定部144は、u,A’iの自然対数を取り、log(u)<-β(ΔEi-Eoff)であればインデックスiの状態遷移を受入れ、そうでなければインデックスiの状態遷移を受入れないようにしてもよい。このようにすると、例えば受入れ判定部144は、log(u)の情報を保持して、判定式の左辺を計算すれば判定を行え、遷移受入れ確率A’iを計算しなくてもよいため、受入れ判定を高速に行える。
【0107】
状態保持部142は、インデックスiの状態遷移を受入れる場合、インデックスiの状態遷移を受入れることを状態保持部142に通知する。状態保持部142は、当該通知に基づいて、状態変数xiの値を反転させる。また、状態保持部142は、ΔEiに基づいて、E=E+ΔEiに更新する。更に、状態保持部142は、キャッシュ141に保持される重み係数に基づいて、局所場h1,h2,…,hNを更新する。
【0108】
ここで、状態変数xjの値を反転させる場合における局所場hiの変化量δhi
(j)は、式(14)で表される。
【0109】
【0110】
受入れ判定部144は、インデックスiの状態遷移を拒絶する場合、インデックスiの状態遷移を拒絶することをオフセット設定部145に通知する。
オフセット設定部145は、オフセット値Eoffを設定する。オフセット設定部145は、オフセット保持部145aおよびオフセット制御部145bを有する。
【0111】
オフセット保持部145aは、オフセット値Eoffを保持し、受入れ判定部144に出力する。オフセット保持部145aが保持するオフセット値Eoffは、オフセット制御部145bにより設定される。オフセット値Eoffのデフォルト値は0である。オフセット保持部145aが保持するオフセット値Eoffは、受入れ判定部144により状態遷移が受入れられると、受入れ判定部144により0にリセットされる。
【0112】
オフセット制御部145bは、受入れ判定部144により状態遷移が連続して拒絶された回数をカウントし、当該回数が遷移判定の一巡の判定回数Zに達すると、オフセット保持部145aに保持されるオフセット値Eoffを0からEoff
*に変更する。Eoff
*は式(5)で表される。例えば、一度に選択する変化候補の状態変数の数を1つとする場合、一巡の判定回数Zは、Z=Nでもよい。オフセット制御部145bは、状態遷移が連続して拒絶されている間に得られたエネルギーの変化量の最小値ΔEminを保持することで、連続して拒絶された回数がZに達した時に、Eoff
*=ΔEminとして、Eoff
*を得ることができる。
【0113】
レプリカ更新部140における演算機能やインデックス生成部150および乱数生成部160は、FPGA111により実現される。レプリカ更新部140におけるデータ保持には、RAM112が用いられる。
【0114】
探索処理部130は、RAM102に記憶されたプログラムをCPU101により実行させることで実現されてもよい。その場合、探索処理部130で保持される情報は、RAM102やCPU101のキャッシュに保持されてもよい。
【0115】
図6は、情報処理装置の処理例を示すフローチャートである。
(S10)制御部190は、係数保持部120に重み係数を格納し、レプリカ更新部140を初期化する。初期化では、制御部190は、SA法やPT法で用いられる初期温度値、探索における試行の繰り返し回数(規定回数)をレプリカ更新部140に設定し、状態変数を走査する順序をインデックス生成部150に設定する。制御部190は、レプリカ更新部140に初期解(状態変数x
1,x
2,…,x
Nの最初の値)、局所場の初期値およびエネルギーの初期値を設定してもよい。また、制御部190は、オフセット保持部145aに保持されるオフセット値E
offをE
off=0にリセットする。更に、制御部190は、オフセット制御部145bに保持される未更新カウンタnをn=0にリセットし、ΔE
minを比較的大きな初期値にリセットする。未更新カウンタnは、状態遷移が連続して拒絶された回数を計数するためのカウンタである。そして、制御部190は、探索処理部130による解探索を開始させる。
【0116】
(S11)レプリカ更新部140は、インデックス生成部150により生成された次のインデックスiを読込む。レプリカ更新部140は、インデックスiに対応する重み係数{W1i,W2i,…,WNi}をキャッシュ141にプリフェッチする。
【0117】
(S12)レプリカ更新部140は、ΔEiの計算、ΔEiに対するEoffの減算およびΔEminの更新を行う。前述のように、ΔEiの計算は、ΔE計算部143で行われる。ΔEiに対するEoffの減算は、受入れ判定部144で行われる。ΔEminの更新は、オフセット制御部145bで行われる。ΔEminの更新は、ΔEmin=min(ΔEmin,max(0,ΔEi))と表される。
【0118】
(S13)レプリカ更新部140は、乱数生成部160により入力される一様乱数uに基づいて、状態変数xiの値の反転を受入れるか否か、すなわち、インデックスiの状態遷移を受入れるか否かを判定する。状態変数xiの値の判定を受入れる、すなわち、インデックスiの状態遷移を受入れる場合、ステップS14に処理が進む。状態変数xiの値の反転を受入れない、すなわち、インデックスiの状態遷移を拒絶する場合、ステップS15に処理が進む。ステップS13の判定は、受入れ判定部144により行われる。前述のように、受入れ判定部144は、ステップS13の判定において、u<A’iの判定式が真であるかを判定してもよいし、log(u)<-β(ΔEi-Eoff)の判定式が真であるかを判定してもよい。
【0119】
(S14)レプリカ更新部140は、状態変数xiと局所場hiの更新を行う。また、レプリカ更新部140は、n=0、Eoff=0にリセットし、ΔEminをリセットする。具体的には、レプリカ更新部140は、状態保持部142に保持される状態変数xiの値を反転させてエネルギーをE=E+ΔEiに更新するとともに、当該反転に応じて局所場{h1,h2,…,hN}を更新する。そして、ステップS18に処理が進む。
【0120】
(S15)レプリカ更新部140は、未更新カウンタnが一巡の判定回数N以上、すなわち、n≧Nであるか否かを判定する。n≧Nの場合、ステップS16に処理が進む。n<Nの場合、ステップS17に処理が進む。ステップS15の判定は、オフセット制御部145bにより行われる。
【0121】
なお、ステップS15の判定は、未更新カウンタnが一巡の判定回数Nに達したか否か、すなわち、n=Nであるか否かを判定することであるとも言える。n=Nの場合、ステップS16に処理が進み、n≠Nの場合、ステップS17に処理が進む。
【0122】
(S16)レプリカ更新部140は、Eoff=ΔEminに設定する。具体的には、オフセット制御部145bは、オフセット保持部145aに保持されるオフセット値を、Eoff=ΔEminに設定する。そして、ステップS18に処理が進む。
【0123】
(S17)レプリカ更新部140は、未更新カウンタnをインクリメントする。具体的には、オフセット制御部145bは、n=n+1とする。そして、ステップS18に処理が進む。
【0124】
(S18)レプリカ更新部140は、規定回数だけ状態変数の値を更新したか否かを判定する。規定回数だけ更新した場合、処理が終了する。規定回数だけ更新していない場合、ステップS11に処理が進む。
【0125】
上記の手順によれば、反転が起こらないまま走査が一巡した場合には、次の走査では少なくともΔEiが最小値をとるインデックスではA’i=1となるため、次の走査で少なくとも1つの状態変数の値を反転させることができる。
【0126】
なお、前述のように、探索処理部130は、解探索にSA法やPT法などを用いることができる。SA法やPT法では、所定のタイミングでレプリカに対する温度値Tが変更される。このため、上記のステップS11~S18は、1つの温度値Tに対する一連の手順であると考えてもよい。例えば、探索処理部130は、ステップS18でYESの場合に、次の温度値Tに変更して、ステップS11~S18を繰り返すといった手順を繰り返し行い、状態保持部142により最終的に得られた複数の状態変数の値の組を、解として制御部190に出力する。探索処理部130は、当該解とともに解に対応するエネルギーを制御部190に出力してもよい。
【0127】
また、ステップS15では、未更新カウンタnに基づいて状態変数の値が反転せずに一巡したか否かを判定している。状態変数の走査が一巡することの判定方法には、次の2通りの方法が考えられる。第1の方法では、事前に生成したインデックスの順列を全て消費したときに一巡したと判断する。第2の方法では、直前の一巡の途中から数えて状態変数の数N分経過したときに一巡したと判断する。
図6のフローチャートは、第2の方法を例示しているが、第1の方法を用いてもよい。
【0128】
なお、探索処理部130は、一度に選択する変化候補の状態変数の数を2つ以上とし、一回の遷移判定に対して2つ以上の変化候補の状態変数の値を同時に変更してもよい。探索処理部130は、2つ以上の状態変数の値を変化させる場合のΔEを、2つ以上の状態変数の各々に対する、式(2)に基づくエネルギーの変化量から計算することができる。
【0129】
例えば、2つの状態変数を選択するシーケンスは、インデックスの組を用いて、(1,2),(1,3),…,(1,N),(2,3),(2,4),…,(2,N),…,(N-1,N)で表される順序でもよい。あるいは、2つの状態変数を選択するシーケンスは、(Π1,Π2),(Π1,Π3),…,(ΠN-1,ΠN)で表される順序でもよい。ただし、{Πi}は{1,…,N}の並べ替えである。探索処理部130は、{Πi}に対する{1,…,N}の並べ方の順序を、一巡ごと、または、何巡かごとの所定のタイミングで変更してもよい。
【0130】
また、探索処理部130は、一度に選択する変化候補の状態変数の数を1つとする探索を行った後に、一度に選択する変化候補の状態変数の数を2つとする探索を行ってもよい。更に、探索処理部130は、所定のグループに属する状態変数のうちの1つだけが1になるといった制約を考慮した順序で、判定対象の状態変数を選択してもよい。このような制約には、例えば1W1H(1-Way 1-Hot)や2W1H(2-Way 1-Hot)と呼ばれるものがある。
【0131】
なお、複数の状態遷移を同時に遷移候補として、その中から1つの状態遷移を選択する並列探索で例えば2つの状態変数を同時に変化させるとすると、遷移候補の組合せの数はN(N-1)通りに増える。このため、並列探索では、2つ以上の状態変数を同時に変化させる探索を行うことは現実的ではない。一方、シーケンシャルに状態変数を選択する方法では、2つ以上の状態変数を同時に変化させる探索を容易に行え、探索の自由度を向上できる。なお、並列探索の例として、特開2019-125155号公報が参考になる。
【0132】
ここで、エネルギー関数で表される問題に対する求解において、上記のようにシーケンシャルに状態変数を選択し、当該状態変数に係る状態遷移を許容するかをエネルギーの変化量に基づいて判定することが考えられる。この方法では、例えば複数の状態変数を一巡して何れの状態遷移も許容されない場合には次の一巡の判定を開始するというように、状態遷移が行われるまで、各状態変数に対する判定を繰り返し行うことになる。しかし、状態遷移が行われないまま当該繰り返しの回数が増すほど、求解に要する時間が増える。
【0133】
そこで、情報処理装置100により、状態変数の値を変化させないと連続して判定された回数が所定回数に達すると、エネルギーの変化量をオフセット値Eoffにより補正することで、各状態変数に係る状態遷移が受入れられ易くなり、状態遷移が促進される。特に、情報処理装置100は、Eoff=Eoff
*とすることで、少なくとも1つの状態変数において、確実に状態遷移を生じさせ、状態遷移を促せる。
【0134】
こうして、状態遷移の停滞を防ぐことで、情報処理装置100は解探索を効率化できる。その結果、情報処理装置100は、短時間で良解に到達可能になる。例えば、反転候補の少ない問題、特にエネルギーが局所最小値をとる状態の多い組合せ最適化問題に対しても、効率よく良い解を探索することが可能となる。
【0135】
図7は、求解結果の例(その1)を示す図である。
グラフG10は、強磁性イジングモデルに対する低温(T=0.01)での求解結果の例を示す。グラフG10は、乱数シードを変えて200回のシミュレーションを実行し、解に到達した試行回数と、その累積頻度をプロットしたものである。グラフG10の横軸は解に到達した試行回数である。グラフG10の縦軸は解に到達したrunの累積頻度を割合で示している。runは200回のシミュレーションのうちの1回分に相当する。
【0136】
ここで、問題に設定した強磁性イジングモデルの状態変数の数は32×32=1024個であり、周期境界条件を課した。探索の初期状態はランダムとし、基底状態(最低エネルギー状態)では状態変数は全て0または1である。この場合、理論上、2/3程度のrunは、局所解に囚われると推計される。
【0137】
グラフG10には、系列G11,G12,G13が示されている。
系列G11は、複数の状態遷移を同時に遷移候補として、その中から1つの状態遷移を選択する並列探索を用いた場合の結果である。
【0138】
系列G12は、シーケンシャルに状態変数を選択してオフセット値Eoffを適用せずに探索を行った場合の結果である。
系列G13は、シーケンシャルに状態変数を選択して、情報処理装置100の機能によりオフセット値Eoffを適用して探索を行った場合の結果である。
【0139】
系列G11,G12を比較すると、シーケンシャル方式は、複数の状態遷移を同時に遷移候補とする並列探索よりも3倍程度高速となることが分かる。
また、系列G12,G13を比較すると、シーケンシャル方式においてオフセット値を適用することで、解に到達するrunの割合が更に増加することが分かる。このように、オフセット値を用いることで、より多くのrunが比較的短時間で解に到達し、求解性能を向上することができる。
【0140】
図8は、求解結果の例(その2)を示す図である。
グラフG20は、2次割当て問題(QAP:Quadratic Assignment Problem)に対するPT法による求解結果の例を示す。グラフG20は、乱数シードを変えて200回のシミュレーションを実行し、解に到達した試行回数と、その累積頻度をプロットしたものである。グラフG20の横軸は解に到達した試行回数である。グラフG20の縦軸は解に到達したrunの累積頻度を、割合で示している。
【0141】
ここで、対象のQAPは、QAPLIBのesc16aである。状態変数の数は16×16=256個である。初期状態は全ての状態変数を0とした。なお、温度値Tの範囲は0.5~5.0である。レプリカ数は26である。温度値またはステート(状態)の交換を行うまでの試行回数、すなわち、交換間間隔は256である。
【0142】
グラフG20には、系列G21,G22,G23が示されている。
系列G21は、複数の状態遷移を同時に遷移候補として、その中から1つの状態遷移を選択する並列探索を用いた場合の結果である。
【0143】
系列G22は、シーケンシャルに状態変数を選択してオフセット値Eoffを適用せずに探索を行った場合の結果である。
系列G23は、シーケンシャルに状態変数を選択して、情報処理装置100の機能によりオフセット値Eoffを適用して探索を行った場合の結果である。
【0144】
系列G23を、系列G21,G22と比較すると、オフセット値Eoffにより解に到達するまでの試行回数が1/2程度に減少していることが分かる。このように、オフセット値Eoffにより少ない試行で局所解から脱出可能となり、オフセット値Eoffを用いない場合に比べて、数倍早く最適解に到達することができる。
【0145】
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0146】
図9は、第4の実施の形態のレプリカ更新部の機能例を示す図である。
情報処理装置100aは、情報処理装置100と同様のハードウェアにより実現される。また、情報処理装置100aは、情報処理装置100と同様に、
図4で例示される係数保持部120、探索処理部130および制御部190を有する。
図9では、探索処理部130に含まれるレプリカ更新部140a、インデックス生成部150および乱数生成部160を図示し、探索処理部130および制御部190の図示を省略している。
【0147】
情報処理装置100aは、探索処理部130においてレプリカ更新部140に代えて、レプリカ更新部140aを有する点が第3の実施の形態と異なる。
レプリカ更新部140aは、キャッシュ141、状態保持部142、ΔE計算部143、受入れ判定部144および確率キー設定部146を有する。キャッシュ141、状態保持部142、ΔE計算部143および受入れ判定部144は、
図5における同名の機能と同様の処理を行う。ただし、第4の実施の形態では、受入れ判定部144は、インデックスiの状態遷移を拒絶する場合、インデックスiの状態遷移を拒絶することを確率キー設定部146に通知する。
【0148】
確率キー設定部146は、式(11)に基づいて、インデックスiに対する確率キー値kiを求める。第4の実施の形態では、確率キー値を確率キーと略記する。
確率キー設定部146は、受入れ判定部144により状態遷移が連続して拒絶された回数をカウントし、当該回数が遷移判定の一巡の判定回数Zに達すると、確率キーkiに基づいて、値を変化させる状態変数を決定し、当該状態変数を状態保持部142に通知する。
【0149】
例えば、一度に選択する変化候補の状態変数の数を1つとする場合、一巡の判定回数Zは、Z=Nでもよい。確率キー設定部146は、状態遷移が連続して拒絶されている間に得られた確率キーの最小値kminとkminの計算に用いたΔEmとそのインデックスmを保持する。確率キー設定部146は、連続して拒絶された回数がZに達した時に、保持したkminに対応するインデックスmの状態変数を遷移対象として決定し、当該kminに対応する状態変数xmとΔEmとを状態保持部142に通知する。
【0150】
状態保持部142は、確率キー設定部146から受け付けた遷移対象の状態変数xmの値を反転させる。また、状態保持部142は、ΔEmに基づいて、E=E+ΔEmに更新する。更に、状態保持部142は、キャッシュ141に保持される重み係数に基づいて、局所場h1,h2,…,hNを更新する。
【0151】
なお、確率キー設定部146は、式(9)や式(10)に基づく確率キーkiに基づいて、値を変化させる状態変数を決定してもよい。この場合、前述のように、確率キー設定部146は、最大の確率キーを取る状態変数の値を変化させる。また、確率キー設定部146は、式(6)の重み付き確率Piに基づいて、値を変化させる状態変数を決定してもよい。この場合、確率キー設定部146は、式(7)の乱数rを計算し、式(8)を満たすインデックスkの状態変数xkの値を変化させると決定する。式(7)のrを乱数uと変化量ΔEiとに応じた確率キーと考えることもできる。
【0152】
探索処理部130あるいは探索処理部130に含まれるレプリカ更新部140a、インデックス生成部150および乱数生成部160は、情報処理装置100aが備えるアクセラレータカード103により実現される。レプリカ更新部140aにおける演算機能やインデックス生成部150および乱数生成部160は、FPGA111により実現される。レプリカ更新部140aにおけるデータ保持には、RAM112が用いられる。
【0153】
探索処理部130あるいは探索処理部130に含まれるレプリカ更新部140a、インデックス生成部150および乱数生成部160は、情報処理装置100aが備えるRAM102に記憶されたプログラムをCPU101により実行させることで実現されてもよい。その場合、探索処理部130で保持される情報は、RAM102やCPU101のキャッシュに保持されてもよい。
【0154】
図10は、情報処理装置の処理例を示すフローチャートである。
(S20)制御部190は、係数保持部120に重み係数を格納し、レプリカ更新部140aを初期化する。初期化では、制御部190は、SA法やPT法で用いられる初期温度値、探索における試行の繰り返し回数(規定回数)をレプリカ更新部140aに設定し、状態変数を走査する順序をインデックス生成部150に設定する。制御部190は、レプリカ更新部140aに初期解、局所場の初期値およびエネルギーの初期値を設定してもよい。また、制御部190は、確率キー設定部146に保持されるk
minを比較的大きな初期値にリセットする。更に、制御部190は、確率キー設定部146に保持される未更新カウンタnをn=0にリセットする。そして、制御部190は、探索処理部130による解探索を開始させる。
【0155】
(S21)レプリカ更新部140aは、インデックス生成部150により生成された次のインデックスiを読込む。レプリカ更新部140aは、インデックスiに対応する重み係数{W1i,W2i,…,WNi}をキャッシュ141にプリフェッチする。
【0156】
(S22)レプリカ更新部140aは、ΔEiの計算およびkminの更新を行う。前述のように、ΔEiの計算は、ΔE計算部143で行われる。kminの更新は、確率キー設定部146で行われる。kminの更新は、kmin=min(kmin,ki)と表される。kiは、式(11)で表される。確率キー設定部146は、kminに対応するΔEiおよびインデックスiも保持する。
【0157】
(S23)レプリカ更新部140aは、乱数生成部160により入力される一様乱数uに基づいて、状態変数xiの値の反転を受入れるか否か、すなわち、インデックスiの状態遷移を受入れるか否かを判定する。状態変数xiの値の判定を受入れる、すなわち、インデックスiの状態遷移を受入れる場合、ステップS24に処理が進む。状態変数xiの値の反転を受入れない、すなわち、インデックスiの状態遷移を拒絶する場合、ステップS25に処理が進む。ステップS23の判定は、受入れ判定部144により行われる。前述のように、受入れ判定部144は、ステップS23の判定において、u<A’iの判定式が真であるかを判定してもよいし、log(u)<-β(ΔEi-Eoff)の判定式が真であるかを判定してもよい。
【0158】
(S24)レプリカ更新部140aは、状態変数xiと局所場hiの更新を行う。また、レプリカ更新部140aは、n=0、Eoff=0にリセットし、ΔEminをリセットする。具体的には、レプリカ更新部140aは、状態保持部142に保持される状態変数xiの値を反転させてエネルギーをE=E+ΔEiに更新するとともに、当該反転に応じて局所場{h1,h2,…,hN}を更新する。そして、ステップS28に処理が進む。
【0159】
(S25)レプリカ更新部140aは、未更新カウンタnが一巡の判定回数N以上、すなわち、n≧Nであるか否かを判定する。n≧Nの場合、ステップS26に処理が進む。n<Nの場合、ステップS27に処理が進む。ステップS25の判定は、確率キー設定部146により行われる。
【0160】
なお、ステップS25の判定は、未更新カウンタnが一巡の判定回数Nに達したか否か、すなわち、n=Nであるか否かを判定することであるとも言える。n=Nの場合、ステップS26に処理が進み、n≠Nの場合、ステップS27に処理が進む。
【0161】
(S26)レプリカ更新部140aは、確率キーkminに対応する状態変数xmと局所場hiの更新を行う。また、レプリカ更新部140aは、n=0にリセットし、kminをリセットする。具体的には、レプリカ更新部140aは、状態保持部142に保持される状態変数xiの値を反転させてエネルギーをE=E+ΔEmに更新するとともに、当該反転に応じて局所場{h1,h2,…,hN}を更新する。そして、ステップS28に処理が進む。
【0162】
(S27)レプリカ更新部140aは、未更新カウンタnをインクリメントする。具体的には、確率キー設定部146は、n=n+1とする。そして、ステップS28に処理が進む。
【0163】
(S28)レプリカ更新部140aは、規定回数だけ状態変数の値を更新したか否かを判定する。規定回数だけ更新した場合、処理が終了する。規定回数だけ更新していない場合、ステップS21に処理が進む。
【0164】
上記の手順によれば、走査が一巡して反転が起こらなかった場合に、確率キーが最小値となったインデックスに対応する状態変数の値を反転させることができる。
なお、前述のように、探索処理部130は、解探索にSA法やPT法などを用いることができる。SA法やPT法では、所定のタイミングでレプリカに対する温度値Tが変更される。このため、上記のステップS21~S28は、1つの温度値Tに対する一連の手順であると考えてもよい。例えば、探索処理部130は、ステップS28でYESの場合に、次の温度値Tに変更して、ステップS21~S28を繰り返すといった手順を繰り返し行い、状態保持部142により最終的に得られた複数の状態変数の値の組を、解として制御部190に出力する。探索処理部130は、当該解とともに解に対応するエネルギーを制御部190に出力してもよい。
【0165】
また、ステップS25では、未更新カウンタnに基づいて状態変数の値が反転せずに一巡したか否かを判定している。状態変数の走査が一巡することの判定方法には、次の2通りの方法が考えられる。第1の方法では、事前に生成したインデックスの順列を全て消費したときに一巡したと判断する。第2の方法では、直前の一巡の途中から数えて状態変数の数N分経過したときに一巡したと判断する。
図10のフローチャートは、第2の方法を例示しているが、第1の方法を用いてもよい。
【0166】
なお、探索処理部130は、一度に選択する変化候補の状態変数の数を2つ以上とし、一回の遷移判定に対して2つ以上の変化候補の状態変数の値を同時に変更してもよい。探索処理部130は、2つ以上の状態変数の値を変化させる場合のΔEを、2つ以上の状態変数の各々に対する、式(2)に基づくエネルギーの変化量から計算することができる。
【0167】
例えば、2つの状態変数を選択するシーケンスは、インデックスの組を用いて、(1,2),(1,3),…,(1,N),(2,3),(2,4),…,(2,N),…,(N-1,N)で表される順序でもよい。あるいは、2つの状態変数を選択するシーケンスは、(Π1,Π2),(Π1,Π3),…,(ΠN-1,ΠN)で表される順序でもよい。ただし、{Πi}は{1,…,N}の並べ替えである。探索処理部130は、{Πi}に対する{1,…,N}の並べ方の順序を、一巡ごと、または、何巡かごとの所定のタイミングで変更してもよい。一度に選択する変化候補の状態変数の数をa(aは1以上の整数)個とする場合、レプリカ更新部140aが確率キーに基づいて選択する状態変数の数もa個となる。
【0168】
また、探索処理部130は、一度に選択する変化候補の状態変数の数を1つとする探索を行った後に、一度に選択する変化候補の状態変数の数を2つとする探索を行ってもよい。更に、探索処理部130は、所定のグループに属する状態変数のうちの1つだけが1になるといった制約を考慮した順序で、判定対象の状態変数を選択してもよい。このような制約には、例えば1W1Hや2W1Hと呼ばれるものがある。
【0169】
なお、複数の状態遷移を同時に遷移候補として、その中から1つの状態遷移を選択する並列探索で例えば2つの状態変数を同時に変化させるとすると、遷移候補の組合せの数はN(N-1)通りに増える。このため、並列探索では、2つ以上の状態変数を同時に変化させる探索を行うことは現実的ではない。一方、シーケンシャルに状態変数を選択する方法では、2つ以上の状態変数を同時に変化させる探索を容易に行え、探索の自由度を向上できる。
【0170】
ここで、エネルギー関数で表される問題に対する求解において、上記のようにシーケンシャルに状態変数を選択し、当該状態変数に係る状態遷移を許容するかをエネルギーの変化量に基づいて判定することが考えられる。この方法では、例えば複数の状態変数を一巡して何れの状態遷移も許容されない場合には次の一巡の判定を開始するというように、状態遷移が行われるまで、各状態変数に対する判定を繰り返し行うことになる。しかし、状態遷移が行われないまま当該繰り返しの回数が増すほど、求解に要する時間が増える。
【0171】
そこで、情報処理装置100aにより、状態変数の値を変化させないと連続して判定された回数が所定回数に達すると、エネルギーの変化量に応じた確率キーによって遷移対象の状態変数を決定し、当該状態変数の値を変化させることで、状態遷移を促せる。こうして、状態遷移の停滞を防ぐことで、情報処理装置100aは解探索を効率化できる。その結果、情報処理装置100aは、短時間で良解に到達可能になる。例えば、反転候補の少ない問題、特にエネルギーが局所最小値をとる状態の多い組合せ最適化問題に対しても、効率よく良い解を探索することが可能となる。
【0172】
次に、確率キーを用いた探索の比較例を説明する。比較例では、RF(Rejection Free)方式によるサンプリングを例示する。RF方式の例として、特開2020-135727号公報が参考になる。比較例では、N個の状態変数に対応するN個の確率キーの計算を並列に行い、当該N個の確率キーに基づいて、値を反転させる状態変数を選択する。なお、比較例の処理主体としてCPU101を例示する。
【0173】
図11は、比較例を示すフローチャートである。
(S30)CPU101は、探索処理の初期化を行う。当該初期化では、ステップS20と同様に初期温度値や繰り返しの規定回数が設定される。
【0174】
(S31)CPU101は、インデックスの読込を行う。
(S32)CPU101は、確率キーk1,k2,…,kNの計算を並列に行う。kiは、例えば式(11)により計算される。例えば、CPU101は、複数の探索処理部を並列に動作させて、各探索処理部により確率キーk1,k2,…,kNの各々を計算させる。
【0175】
(S33)CPU101は、確率キーk1,k2,…,kNの計算結果を取得し、最小のkiを探索する。
(S34)CPU101は、状態変数xiと局所場hi(すなわち、h1,h2,…,hN)の更新を行う。
【0176】
(S35)CPU101は、規定回数だけ状態変数の値を更新したか否かを判定する。規定回数だけ更新した場合、処理が終了する。規定回数だけ更新していない場合、ステップS31に処理が進む。
【0177】
なお、ステップS31~S35についても、
図10と同様に、SA法などにおける1つの温度値に対する手順であると考えてもよく、PT法やアニーリングなどで用いられる各温度値においてステップS31~S35を繰り返し実行すると考えてもよい。
【0178】
比較例の方法では、解きたい問題が1つの装置における並列度以下の場合は、ステップS31~S35のループを高速に実行可能である。しかし、問題規模が装置の並列度に対して大きい場合、次の方法を用いることになる。1番目の方法では、1つの装置が全インデックスを複数の部分に分け、時分割で各部分に対してステップS31~S33を実行して全インデックス中のkiの最小値を探索する。2番目の方法では、ある装置が部分的なインデックスを複数の装置に振り分けて各装置によりステップS31~S33を実行させ、各装置によるkiの取得結果を1つの装置で統合して、全インデックス中のkiの最小値を探索する。
【0179】
しかし、1番目の方法では、ステップS31~S35のループの繰り返し回数が非常に多くなり計算時間が増大する。また、2番目の方法では、複数の装置の間での通信のオーバーヘッドによって計算時間が増大する。
【0180】
一方、情報処理装置100aによれば、上記1,2番目の方法で生じる計算時間の増大を抑えることができ、比較的大規模な問題に対しても、短時間で良解に到達できる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第3,第4の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0181】
図12は、第5の実施の形態の情報処理装置の機能例を示す図である。
情報処理装置100bは、情報処理装置100と同様のハードウェアにより実現される。また、情報処理装置100bは、情報処理装置100と同様に、
図4で例示される係数保持部120、探索処理部130および制御部190に加えて、レプリカ制御部170を有する。
図12では、探索処理部130に含まれるレプリカ更新部140b1,140b2,…,140bnおよびインデックス生成部150を図示し、探索処理部130および制御部190の図示を省略している。
【0182】
情報処理装置100bは、探索処理部130においてレプリカ更新部140,140aに代えて、レプリカ更新部140b1,140b2,…,140bnを有する点が第3,第4の実施の形態と異なる。ここで、nは、レプリカ更新部の数であり、2以上の整数である。レプリカ更新部140b1,140b2,…,140bnの各々は、レプリカ更新部140またはレプリカ更新部140aと同じである。なお、
図12では、レプリカ更新部140b1,140b2,…,140bnの各々に一様乱数u(0<u<1)を供給する乱数生成部160の図示を省略している。
【0183】
情報処理装置100bは、アクセラレータカード103を含む複数のアクセラレータカードを有してもよい。この場合、複数のアクセラレータカードによりレプリカ更新部140b1,140b2,…,140bn、各々のレプリカ更新部140に対応するインデックス生成部および乱数生成部が実現されてもよい。また、レプリカ制御部170は、RAM102に記憶されたプログラムをCPU101に実行させることで実現されてもよいし、アクセラレータカード103により実現されてもよい。
【0184】
レプリカ更新部140b1,140b2,…,140bnの各々は、係数保持部120からインデックス生成部150より供給されるインデックスに対応する重み係数を係数保持部120から読み出して、当該インデックスに係る遷移判定を行う。レプリカ更新部140b1,140b2,…,140bnの各々は、遷移判定の結果に応じて、状態変数の値を変化させてエネルギーを更新するとともに、局所場を更新する。インデックス生成部150は、レプリカ更新部140b1,140b2,…,140bnの全てに対して同じインデックスを入力してもよいし、全てまたは幾つかのレプリカ更新部に対して異なるインデックスを入力してもよい。
【0185】
レプリカ制御部170は、レプリカ更新部140b1,140b2,…,140bnを用いたSA法やPT法などによる求解を制御する。レプリカ制御部170は、レプリカ更新部140b1,140b2,…,140bnの各々においてSA法における温度値の変更やPT法におけるレプリカ間での温度値の交換などを制御する。また、レプリカ制御部170は、レプリカ更新部140b1,140b2,…,140bnを用いてPA法を実行することで求解を行うこともできる。
【0186】
例えば、レプリカ制御部170あるいは制御部190は、レプリカ更新部140b1,140b2,…,140bnの各々で最終的に得られた解を取得し、最も良い解、すなわち、エネルギーが最小の解を選択してユーザに提供してもよい。
【0187】
このように、情報処理装置100bは、複数のレプリカ更新部の各々により、変化候補の状態変数を所定の順序で選択し、変化候補の状態変数に対する遷移判定を行って、解を探索する。複数のレプリカ更新部の各々は、状態遷移が連続して拒絶された回数が所定数に達すると、遷移判定に用いるエネルギーの変化量をオフセット値により補正する、あるいは、エネルギーの変化量に応じた確率キーに基づいて遷移対象の状態変数を決定する。
【0188】
こうして、情報処理装置100bは、第3,第4の実施の形態と同様に、解探索を効率化でき、求解性能を向上できる。また、情報処理装置100bは、例えば複数のレプリカ更新部の各々により、遷移判定を担当する状態変数のインデックス範囲を分散して割り当てることで、状態変数の数の多い比較的大規模な問題にも対応可能になる。
【0189】
ところで、複数の状態遷移を同時に遷移候補として、その中から1つの状態遷移を選択する並列探索では、現状態の近傍のN個の状態変数全てについてΔEiを計算することになる。このため、ハードウェアで可能な並列度以上の問題では、計算速度が低下する。例えば、100kビットの問題を1kビット並列の装置を用いて解く場合、100回並列判定を行った上で、どの1ビットを反転するかを判断することになり、時間がかかる。
【0190】
また、特開2020-140631号公報で例示されるように、並列探索かつシーケンシャルに状態変数の値を反転させる方法も考えられている。しかし、当該方法であっても、受入れ候補の少ない問題や、全てのΔEi>0である局所最小値が多数ある問題では、状態変数の値の反転が起こらずに良い解を短時間で見つけることが難しい。
【0191】
情報処理装置100,100a,100bでは、遷移候補をシーケンシャルに選択する手法において、状態遷移の停滞が観測された際にオフセット値や確率キーにより状態遷移を促進する。これにより、比較的大規模かつ反転候補の少ない問題、特にエネルギーが局所最小値をとる状態の多い組合せ最適化問題に対しても、効率よく良い解を探索することが可能となる。
【0192】
例えば、第3の実施の形態の情報処理装置100は次の処理を実行する。第5の実施の形態の情報処理装置100bも情報処理装置100と同様の処理を実行し得る。また、第1の実施の形態の処理部12も下記のレプリカ更新部140の処理を実行し得る。情報処理装置100は、複数の状態変数を含むエネルギー関数で表される問題の解を探索する。
【0193】
レプリカ更新部140は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。レプリカ更新部140は、選択した変化候補の状態変数に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。レプリカ更新部140は、変化候補の状態変数の値を変化させると判定した場合、変化候補の状態変数の値を変化させる。レプリカ更新部140は、変化候補の状態変数の値を変化させないと連続して判定した回数が所定回数に達すると、新たに選択される変化候補の状態変数に対応する変化量をオフセット値により補正する。レプリカ更新部140は、補正後の変化量に基づいて、変化候補の状態変数の値を変化させるか否かの判定を行う。
【0194】
これにより、情報処理装置100は、解探索を効率化できる。例えば、情報処理装置100は、シーケンシャル方式(シーケンシャルMCMC)での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。
【0195】
より具体的には、情報処理装置100は、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する。探索処理は、選択処理と判定処理と状態変更処理とを有する。選択処理では、レプリカ更新部140は、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。判定処理では、レプリカ更新部140は、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。状態変更処理では、レプリカ更新部140は、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる。探索処理において、レプリカ更新部140は、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行する。探索処理において、レプリカ更新部140は更に、カウント処理と補正処理とを実行する。カウント処理では、レプリカ更新部140は、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントする。補正処理では、レプリカ更新部140は、カウント処理においてカウントされた回数が所定回数に達すると、新たに選択される変化候補の状態変数の値の変化に対応するエネルギー関数の変化量をオフセット値により補正する。レプリカ更新部140は、補正処理によって変化量が補正された後の判定処理において、補正後の変化量に基づいて、新たに選択される変化候補の状態変数の値を変化させるか否かの判定を行う。
【0196】
これにより、情報処理装置100は、解探索を効率化できる。例えば、情報処理装置100は、シーケンシャル方式(シーケンシャルMCMC)での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。
【0197】
例えば、レプリカ更新部140は、エネルギー関数の値の変化量の補正では、当該変化量からオフセット値を減算する補正を行う。
これにより、エネルギーを最小化する問題の解の探索において、新たに選択される変化候補の状態変数の値が変化されると判定される確率を、オフセット値による補正を行わない場合よりも上げることができる。なお、エネルギーを最大化する問題の解を探索する場合、レプリカ更新部140は、エネルギーの変化量が大きい状態遷移を優先するかたちで確率的な選択を行うことが考えられる。この場合、レプリカ更新部140は、エネルギーの変化量の補正では、当該変化量に正のオフセット値を加算することで、状態遷移を促すことも考えられる。
【0198】
また、レプリカ更新部140は、補正後の変化量に基づいて変化候補の状態変数の値を変化させると、オフセット値による補正を中止する。
これにより、情報処理装置100は、通常のエネルギーの変化量による適切な探索を再開できる。例えば、オフセット値による補正の中止は、前述のオフセット値Eoff=0にリセットすることに相当する。
【0199】
また、レプリカ更新部140は、所定の順序による変化候補の状態変数の一巡の選択に要する選択回数を所定回数とする。
これにより、例えば、情報処理装置100は、シーケンシャル方式での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。一巡の選択に要する選択回数は、複数の状態変数から所定の順序で全ての変化候補の状態変数を選択するために要する、変化候補の状態変数の選択の回数である。一巡の選択に要する選択回数は、前述の一巡の判定回数Zに相当する。
【0200】
レプリカ更新部140は、エネルギーの変化量と乱数値との比較により変化候補の状態変数の値を変化させるか否かを確率的に判定する。レプリカ更新部140は、エネルギーの変化量をオフセット値により補正することで、変化候補の状態変数の値を変化させると判定する確率を、オフセット値による補正を行わない場合よりも上げる。
【0201】
これにより、情報処理装置100は、シーケンシャル方式での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。
例えば、レプリカ更新部140は、変化候補の状態変数の値を連続して変化させないと判定した回数が所定回数に達する間に、各々の変化候補の状態変数に対して得られた変化量のうちの最小値を、オフセット値とする。
【0202】
これにより、情報処理装置100は、最適なオフセット値を得ることができる。
より具体的には、レプリカ更新部140は、エネルギーの変化量からオフセット値を減算する補正を行うことで、上記最小値に対応する変化候補の状態変数の値を変化させると判定する確率を1にする。
【0203】
これにより、情報処理装置100は、少なくとも上記最小値に対応する変化候補の状態変数の値を変化させると判定することができ、確実に状態遷移を発生させることができる。
【0204】
また、レプリカ更新部140は、変化候補の状態変数の値を変化させるか否かの一回の判定に対して選択する変化候補の状態変数の数を1つまたは複数とする。
これにより、情報処理装置100は、探索の自由度を向上でき、問題に応じて解探索を一層効率化できる可能性を高められる。
【0205】
また、例えば、第4の実施の形態の情報処理装置100aは次の処理を実行する。第5の実施の形態の情報処理装置100bも情報処理装置100aと同様の処理を実行し得る。また、第2の実施の形態の処理部22も下記のレプリカ更新部140aの処理を実行し得る。情報処理装置100aは、複数の状態変数を含むエネルギー関数で表される問題の解を探索する。
【0206】
レプリカ更新部140aは、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。レプリカ更新部140aは、選択した変化候補の状態変数に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。レプリカ更新部140aは、変化候補の状態変数の値を変化させると判定した場合、変化候補の状態変数の値を変化させる。レプリカ更新部140aは、変化候補の状態変数の値を変化させないと連続して判定した回数が所定回数に達すると、変化量と乱数値とに応じて計算される確率キー値に基づいて複数の状態変数から第1の状態変数を選択し、第1の状態変数の値を変化させる。
【0207】
これにより、情報処理装置100aは、解探索を効率化できる。例えば、情報処理装置100aは、シーケンシャル方式での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。
【0208】
より具体的には、情報処理装置100aは、複数の状態変数を含むエネルギー関数で表される問題の解を探索する探索処理を実行する。探索処理は、選択処理と判定処理と状態変更処理とを有する。選択処理では、レプリカ更新部140aは、複数の状態変数のうちの一部である変化候補の状態変数を所定の順序で選択する。判定処理では、レプリカ更新部140aは、選択処理において選択された変化候補の状態変数の値の変化に対応する、エネルギー関数の値の変化量に基づいて、変化候補の状態変数の値を変化させるか否かを判定する。状態変更処理では、レプリカ更新部140aは、判定処理において、変化候補の状態変数の値を変化させると判定された場合、変化候補の状態変数の値を変化させる。探索処理において、レプリカ更新部140aは、選択処理と判定処理と状態変更処理を、所定の順序に沿って繰り返し実行する。レプリカ更新部140aは、繰り返し実行される探索処理において変化候補の状態変数の値を連続して変化させないと判定された回数をカウントするカウント処理を実行する。レプリカ更新部140aは、カウント処理においてカウントされた回数が所定回数に達すると、変化量と乱数値とに応じて計算される確率キー値に基づいて複数の状態変数から第1の状態変数を選択し、第1の状態変数の値を変化させる。
【0209】
これにより、情報処理装置100aは、解探索を効率化できる。例えば、情報処理装置100aは、シーケンシャル方式での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。
【0210】
レプリカ更新部140aは、変化候補の状態変数の値を連続して変化させないと判定した回数が所定回数に達する間に、各々の変化候補の状態変数に対して得られた変化量と乱数値とに応じた確率キー値を計算する。レプリカ更新部140aは、計算した確率キー値のうちの最小値または最大値に対応する変化候補の状態変数を、第1の状態変数とする。
【0211】
これにより、情報処理装置100aは、第1の状態変数を適切に得ることができる。なお、レプリカ更新部140aは、ある確率キー値の計算に用いる乱数値として、該当の確率キー値を計算するタイミングで生成されたものを用いてもよい。
【0212】
レプリカ更新部140aは、エネルギーの変化量と乱数値と解の探索に用いられる温度値とに基づいて確率キー値を計算する。
これにより、情報処理装置100aは、適切な基準(例えば、メトロポリス基準など)に従って、第1の状態変数を選択することができる。
【0213】
また、レプリカ更新部140aは、所定の順序による変化候補の状態変数の一巡の選択に要する選択回数を所定回数とする。
これにより、情報処理装置100aは、シーケンシャル方式での探索において局所解に陥った場合でも状態遷移を促すことができ、解探索を効率化できる。一巡の選択に要する選択回数は、複数の状態変数から所定の順序で全ての変化候補の状態変数を選択するために要する、変化候補の状態変数の選択の回数である。一巡の選択に要する選択回数は、前述の一巡の判定回数Zに相当する。
【0214】
レプリカ更新部140aは、変化候補の状態変数の値を変化させるか否かの一回の判定に対して選択する変化候補の状態変数の数を1つまたは複数とする。
これにより、情報処理装置100aは、探索の自由度を向上でき、問題に応じて解探索を一層効率化できる可能性を高められる。
【0215】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、処理部22にプログラムを実行させることで実現できる。また、第3~第5の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。情報処理装置10,20,100,100a,100bは、コンピュータによって実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体53に記録される。
【0216】
例えば、プログラムを記録した記録媒体53が配布されることで、プログラムが流通される。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムが配布されてもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD104などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0217】
10 情報処理装置
11 記憶部
12 処理部
30 状態ベクトル
40 グラフ