JPWO2020054046A1 - 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム - Google Patents
最適化装置、最適化装置の制御方法および最適化装置の制御プログラム Download PDFInfo
- Publication number
- JPWO2020054046A1 JPWO2020054046A1 JP2020546645A JP2020546645A JPWO2020054046A1 JP WO2020054046 A1 JPWO2020054046 A1 JP WO2020054046A1 JP 2020546645 A JP2020546645 A JP 2020546645A JP 2020546645 A JP2020546645 A JP 2020546645A JP WO2020054046 A1 JPWO2020054046 A1 JP WO2020054046A1
- Authority
- JP
- Japan
- Prior art keywords
- temperature
- annealing
- exchange
- annealed
- replica
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Feedback Control In General (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
演算を高速化すること。交換制御部(11)は、焼鈍部(1a0,…,1an)の各々を識別するレプリカ番号を、各焼鈍部(1a0,…,1an)の各々に割り当てられている温度の低い順または高い順に配列した対応情報(12)を保持する。交換制御部(11)は、対応情報(12)に基づいて、焼鈍部(1a0,…,1an)の各々による処理を温度の順に開始させる。交換制御部(11)は、2つの温度に対応する2つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、当該2つの焼鈍部に割り当てられている温度の交換を行うか否かを決定する。交換制御部(11)は、交換を行う場合、対応情報(12)を更新し、更新後の対応情報に基づいて、温度を表す温度情報を当該2つの焼鈍部に供給する。
Description
本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット(スピンビット)のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、解として求める。
例えば、拡張アンサンブル法と呼ばれる手法を用いて、確率的探索を行う情報処理装置が考えられている。提案の情報処理装置は、異なる温度が設定された複数のネットワーク(アンサンブルと呼ばれる)で確率的探索を行う。提案の情報処理装置は、温度が隣接して設定されているアンサンブル間で各アンサンブルのエネルギーの差分に応じ、各アンサンブルのノードの状態を交換する。これにより、局所解に陥ることが防止され、より高速に最適値に収束させる。
上記提案の情報処理装置は、全てのアンサンブルで確率的探索の処理を行った後に、アンサンブル間でノード状態を交換する。ノード状態を交換している間は、各アンサンブルによる確率的探索を行えずに待機することになり、演算が遅延し得る。
1つの側面では、本発明は、演算を高速化する最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。
1つの態様では、最適化装置が提供される。最適化装置は、複数の焼鈍部と交換制御部とを有する。複数の焼鈍部の各々は、エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、温度に対する複数の状態変数の各々の値を決定する処理を行う。交換制御部は、複数の焼鈍部を識別する複数の識別情報を複数の焼鈍部の各々に割り当てられている温度の低い順または高い順に配列した対応情報を保持し、対応情報に基づいて、温度に対応付けられた各焼鈍部による処理を温度の順に開始させ、2つの温度に対応する2つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、2つの焼鈍部に割り当てられている温度の交換を行うか否かを決定し、交換を行う場合、対応情報を更新し、更新後の対応情報に基づいて、温度を表す温度情報を2つの焼鈍部に供給する。
また、1つの態様では、最適化装置の制御方法が提供される。
また、1つの態様では、最適化装置の制御プログラムが提供される。
また、1つの態様では、最適化装置の制御プログラムが提供される。
1つの側面では、演算を高速化できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置10は、最適化問題に対する解の探索を行う。最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍の中で最小値をとる局所解と呼ばれる状態が非常に多数存在することである。
最適化装置10は、最適化問題に対する解の探索を行う。最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍の中で最小値をとる局所解と呼ばれる状態が非常に多数存在することである。
離散最適化問題を解く効率の良い一般解法は存在しない。そこで、問題に固有な性質を利用した近似解法や、問題の性質にあまり頼らないメタヒューリステックと呼ばれる方法が用いられる。
以下に説明する内容は、後者のうちマルコフ連鎖モンテカルロ法を用いた解法に関するものであり、特に交換モンテカルロ法、またはレプリカ交換法と呼ばれる広い意味での疑似焼き鈍し法に関するものである。
疑似焼き鈍し法は、乱数を用いて確率的に状態(変数ベクトルの値)を変化させることで最適解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
疑似焼き鈍し法においては、状態遷移の受け入れ(許容)確率を、その遷移に伴うエネルギー変化と温度とを用いて次の式(1),(2)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
ここでTは温度を表すパラメータであり、その初期値は問題に応じて十分大きくとり、十分ゆっくり下げていくことが望ましい。
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られる。しかし、現実には有限の反復回数で解を得る必要があるため、必ずしも最適解を求められるとは限らない。また、上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって、実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られる。しかし、現実には有限の反復回数で解を得る必要があるため、必ずしも最適解を求められるとは限らない。また、上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって、実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
実際の擬似焼き鈍し法では、初期状態から始めて、温度を下げながら上記反復が繰り返され、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたりしたとき、動作が終了する。出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度が0にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布をもっており、必ずしも最適値や良い解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
このように、疑似焼き鈍し法は、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的な熱分布のエネルギー範囲が広くなることから良い解の占有確率が上がらない。逆に速く下げ過ぎると、局所解を脱出する前に温度が下がり、悪い解に捕まったままになってしまうため、良い解が得られる確率が下がってしまう。
レプリカ交換法は複数の温度を用いたモンテカルロ探索(以下、確率的探索という)を同時に行い、ある反復回数ごとに、各温度に対する状態のエネルギーを比較し、適切な確率で2つの温度に対する状態を交換するという操作を行う方法である。
最適化装置10は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)などを用いて実現される。最適化装置10は、複数の焼鈍部(図1の焼鈍部1a0,1a1,…,1ai,…,1an)と交換制御部11とを有する。焼鈍部1a0,…,1anの各々は、レプリカと呼ばれることがある。ここで、nは、例えば1以上の奇数である。n+1は、最適化装置10が有する焼鈍部の数を示す。iは、0以上n以下の整数である。交換制御部11は、焼鈍部1a0,…,1anの各々に温度情報(以下では逆温度βi(Tの逆数))を与える。
焼鈍部1aiは、エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定する(確率的探索)。焼鈍部1aiは、確率的探索を所定回数反復することで、温度に対する複数の状態変数の各々の値を決定する処理を行う。
具体的には、焼鈍部1aiは、評価関数に含まれる複数の状態変数の値を保持する。焼鈍部1aiは、状態遷移の可否を示すフラグFと、そのフラグFが示す状態変数の識別番号(インデックス)Nに基づいて、複数の状態変数の値(上記変数ベクトルの値)である状態Siを更新する。
焼鈍部1aiは、状態変数の変化(状態遷移)に伴うエネルギー変化を計算する。例えば、評価関数が2つの状態変数間の結合で表されるイジングモデルで表され、かつ、一度に1つの状態変数の遷移のみを許す場合を考える。この場合、焼鈍部1aiは、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、識別番号Nと、フラグFとに基づいて、複数の状態変数のそれぞれの変化(状態遷移)に伴うエネルギー変化を計算する。エネルギー変化ΔEikは、k番目の状態変数の変化に伴うエネルギー変化を示す。なお、計算したい最適化問題に応じた結合係数の値は、最適化装置10が備えるメモリまたはレジスタなどに予め記憶されている。
評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。評価関数によるエネルギー変化の計算や状態遷移可否を判定する焼鈍部1aiの機能は、例えば、積和演算回路などの論理回路を用いて実現される。
焼鈍部1aiは、エネルギー変化ΔEikと交換制御部11により割り当てられた逆温度βiを用いて、k番目の状態変数の状態遷移の受け入れ確率を以下の式(3)により決定することで、確率的探索を行う。
なお、式(3)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。焼鈍部1aiは、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグFと、フラグFが示す状態遷移の番号(変化させる状態変数の識別番号)Nを用いてN番目の状態変数を遷移させ、状態Siを更新する。また、焼鈍部1aiは、エネルギー変化ΔEiNに基づいて、エネルギーEiを更新して出力する。確率的探索の1回分の処理は、k番目の状態変数の状態遷移の受け入れ確率の決定、受け入れ確率に基づく状態Siの更新、および、エネルギーEiの更新という一巡の処理に相当する。
交換制御部11は、確率的探索の一定の反復回数ごとに各焼鈍部におけるエネルギーEを観測する。そして、交換制御部11は、焼鈍部1a0,…,1anのうちの2つにおけるエネルギーEと逆温度βを用い、以下の式(4)で表される交換確率pijに基づいて2つの焼鈍部に供給される温度(あるいは、2つの焼鈍部における各状態変数の値)を交換する。
なお、式(4)では、βiを焼鈍部1aiに与えられた逆温度、βjを図示しないj番目の焼鈍部に与えられた逆温度、Eiを焼鈍部1aiにおけるエネルギー、Ejをj番目の焼鈍部におけるエネルギーとしている。また、式(4)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。
このような交換を行ってもそれぞれの温度の状態の確率分布はその温度に対するボルツマン分布に収束する。そして、この分布に収束するのに必要とされる緩和時間は、交換を行わない時より著しく短縮することができる。
なお、交換が行われる2つの焼鈍部は、交換確率が小さくなりすぎないように、供給される温度が比較的近いもの(例えば、隣接温度が供給されるもの)が選択される。
交換制御部11は、記憶部11aおよび処理回路11bを有する。
交換制御部11は、記憶部11aおよび処理回路11bを有する。
記憶部11aは、例えばレジスタなどの記憶回路である。記憶部11aは、RAM(Random Access Memory)などの揮発性メモリ、フラッシュメモリやEEPROM(Electrically Erasable Programmable Read Only Memory)などの不揮発性メモリでもよい。
記憶部11aは、対応情報12を保持する。対応情報12は、焼鈍部1a0,…,1anの各々に割り当てられている温度と、焼鈍部1a0,…,1anの各々を識別する識別情報(レプリカ番号と言う)との対応関係を示し、温度の低い順または高い順に、レプリカ番号を配列したものである。
図1の例では、温度T0,T1,…,Tnは、温度T0,T1,…,Tnの順に高くなっていく。したがって、図1の例では、対応情報12は、レプリカ番号を温度の低い順に配列したものであると言える。
なお、温度は、温度そのものではなく、温度を識別する情報で表されてもよい。その場合、記憶部11aは、温度を識別する情報と、温度との対応関係を示す他の対応情報を保持する。
処理回路11bは、対応情報12に基づいて、温度に対応付けられた焼鈍部1a0,…,1anの各々による処理を温度の順に開始させる。処理回路11bは、隣接する2つの温度に対応する2つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、2つの焼鈍部に割り当てられている温度の交換を行うか否かを決定する。処理回路11bは、交換を行う場合、対応情報12を更新し、更新後の対応情報12に基づいて、温度を表す温度情報を2つの焼鈍部に供給する。こうして、処理回路11bは、焼鈍部1a0,…,1anの各々による各状態変数の決定および2つの焼鈍部の間のレプリカ交換のパイプライン処理を制御する。
次に、処理回路11bによる処理を例示する。以下では、ある反復回数での確率的探索により、割り当てられた温度に対する各状態変数の値を決定する処理を「探索処理」と言うことがある。例えば、各焼鈍部は、自身に割り当てられた温度を用いて、各々が同じ反復回数の上限値まで確率的探索を行うことで探索処理を実行する。焼鈍部1a0,…,1anの各々による1つの探索処理の所要時間は、ほぼ同じ時間となる。ただし、各焼鈍部による反復回数の上限値は温度に応じて異なってもよい。
例えば、処理回路11bは、対応情報12に基づいて、温度の低い順に、各焼鈍部のレプリカ番号を読み出し、読み出したレプリカ番号に対応する焼鈍部による探索処理を、順次、開始させる。処理回路11bは、レプリカ交換の対象となる隣接温度が割り当てられた2つの焼鈍部による探索処理を、同じタイミングで開始させてもよい。
流れ図D1は、焼鈍部1a0,…,1anに関する探索処理およびレプリカ交換の流れの例を示す。流れ図D1において、左側から右側へ向かう方向が時間の正方向である。
一例では、対応情報12において、温度T0にレプリカ番号iが対応付けられている。処理回路11bは、まず、レプリカ番号iに対応する焼鈍部1aiによる探索処理を開始させる。焼鈍部1aiは、探索処理A0を開始する。
一例では、対応情報12において、温度T0にレプリカ番号iが対応付けられている。処理回路11bは、まず、レプリカ番号iに対応する焼鈍部1aiによる探索処理を開始させる。焼鈍部1aiは、探索処理A0を開始する。
また、対応情報12において、温度T1にレプリカ番号0が対応付けられている。したがって、処理回路11bは、次に、レプリカ番号0に対応する焼鈍部1a0による探索処理A1を開始させる。焼鈍部1a0は、探索処理A1を開始する。
こうして、処理回路11bは、温度の低い順(または高い順に)、各焼鈍部による探索処理(探索処理A0,A1,A2,A3,…,An−1,An)を、順次、開始させる。ここで、温度T0,…,Tnに対する一巡の探索処理(例えば、探索処理A0,…,An)を1つの「処理グループ」と称する。各焼鈍部による探索処理は、並列に実行される。前述のように、処理回路11bは、レプリカ交換の対象となる隣接する温度に対応する2つの探索処理(例えば、探索処理A0,A1のペア)を同時に開始させてもよい。
各焼鈍部による探索処理は、開始された順に完了する。上記の例では、探索処理A0,A1,…の順に、完了していく。処理回路11bは、探索処理A0,A1による処理が完了すると、他の焼鈍部による探索処理の完了を待たずに、探索処理A0,A1を各々実行した焼鈍部1ai,1a0に割り当てられている温度の交換を行うか否かを、式(4)により決定する。処理回路11bは、交換を行う場合、対応情報12におけるレプリカ番号i,0を交換することで、対応情報12を更新する。例えば、交換により、温度T0にレプリカ番号0が対応付けられ、温度T1にレプリカ番号iが対応付けられる。更に、処理回路11bは、焼鈍部1a0に交換後の温度T0を示す温度情報を供給し、焼鈍部1aiに交換後の温度T1を示す温度情報を供給する。そして、処理回路11bは、交換後の温度に応じた順で、焼鈍部1a0,1aiによる探索処理B0,B1を開始させる。処理回路11bは、他の焼鈍部による探索処理の完了を待たずに、焼鈍部1a0,1aiによる探索処理B0,B1を開始させてもよい。
処理回路11bは、隣接する2つの焼鈍部による探索処理が完了するたびに、上記温度交換の決定および決定に応じた温度交換(すなわち、レプリカ交換)を行い、交換後の温度に応じた順に、当該2つの焼鈍部による探索処理を開始させる。こうして、各焼鈍部は、探索処理A0,…,Anに引き続き、次の処理グループの探索処理B0,B1,B2,B3,…,Bn−1,Bnを実行する。
処理回路11bは、次の処理グループに対しては、隣接する温度のペアを、前回の処理グループとは異なるペアになるように変更して、2つの焼鈍部のレプリカ交換を行う。例えば、処理回路11bは、前回の処理グループでは、温度(T0,T1),(T2,T3),…,(Tn−1,Tn)の各ペア(偶数モードと呼ぶ)に対応する2つの焼鈍部でレプリカ交換を行ったとする。この場合、処理回路11bは、次の処理グループでは、温度(T1,T2),(T3,T4),…,(Tn−2,Tn−1)の各ペア(奇数モードと呼ぶ)に対応する2つの焼鈍部でレプリカ交換を行う。奇数モードでは、温度T0,Tnに対応する各焼鈍部は、レプリカ交換の非対象となる。
次に、最適化装置10による処理手順を説明する。
図2は、最適化装置の処理例を示すフローチャートである。
以下では、主に偶数モードについて説明するが、奇数モードの場合、処理回路11bは、温度T0に対応する焼鈍部による探索処理を開始させた後に、下記ステップS1からの手順を実行する。奇数モードの場合、処理回路11bは、温度Tn−1に対応する焼鈍部による探索処理の開始後に、温度Tnに対応する焼鈍部による探索処理を開始させる。
図2は、最適化装置の処理例を示すフローチャートである。
以下では、主に偶数モードについて説明するが、奇数モードの場合、処理回路11bは、温度T0に対応する焼鈍部による探索処理を開始させた後に、下記ステップS1からの手順を実行する。奇数モードの場合、処理回路11bは、温度Tn−1に対応する焼鈍部による探索処理の開始後に、温度Tnに対応する焼鈍部による探索処理を開始させる。
最適化装置10は、一連の手順PL0,PL1,…,PLmをパイプライン処理する。以下では、手順PL0を主に説明するが、手順PL1,…,PLmも対象となる温度および当該温度に対応する焼鈍部が異なる以外は同様の手順となる。ここで、前述のように、一例ではnは奇数である。このとき、偶数モードではm=(n+1)/2であり、奇数モードではm=((n+1)/2)−1である。
(S1)処理回路11bは、対応情報12に基づいて隣接する温度のペアを決定する。例えば、手順PL0において、偶数モードでは、隣接する温度T0,T1のペアが決定される。奇数モードでは、温度T1,T2のペアが決定される。
(S2)処理回路11bは、対応情報12に基づいて隣接する温度のペアに対応するレプリカ番号のペアを決定する。
(S3)処理回路11bは、決定したレプリカ番号のペア毎に、探索処理の開始を指示する。すなわち、処理回路11bは、決定したレプリカ番号のペアに対応する焼鈍部(レプリカ)のペアに対して、当該焼鈍部に割り当てられた温度での探索処理の開始を指示する。
(S3)処理回路11bは、決定したレプリカ番号のペア毎に、探索処理の開始を指示する。すなわち、処理回路11bは、決定したレプリカ番号のペアに対応する焼鈍部(レプリカ)のペアに対して、当該焼鈍部に割り当てられた温度での探索処理の開始を指示する。
(S4)探索処理の開始を指示された焼鈍部のペアは、探索処理を実行する。
(S5)焼鈍部のペアは、ステップS4の探索処理が完了すると、各々が保持するエネルギーを交換制御部11(具体的には、交換制御部11の処理回路11b)に送信する。
(S5)焼鈍部のペアは、ステップS4の探索処理が完了すると、各々が保持するエネルギーを交換制御部11(具体的には、交換制御部11の処理回路11b)に送信する。
(S6)処理回路11bは、ステップS5で送信された各焼鈍部のエネルギーの差および温度差による式(4)の交換確率に基づいて、該当のレプリカ番号のペアでレプリカ交換(レプリカ間における温度交換の決定および決定に応じた温度交換)を行う。
最適化装置10は、手順PL0,PL1,…,PLmの各々を1つのパイプラインとし、例えば、手順PL0,PL1,…,PLmを順次並列に実行することで、パイプライン処理を実現する。
これにより、流れ図D1で例示したように、探索処理とレプリカ交換とを合わせてパイプライン処理できるようになる。このため、全レプリカの探索処理の完了を待たずに、探索処理が完了したレプリカからレプリカ交換を行える。レプリカ交換によるレイテンシはパイプライン内に隠蔽される。よって、最適化装置10による演算を高速化できる。
また、最適化装置10は、処理グループ毎に偶数モードと奇数モードとを交互に繰り返す。これにより、全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
更に、最適化装置10は、今回の処理グループ(探索処理A0,…,An)において全レプリカの探索処理およびレプリカ交換の完了を待たずに、次回の処理グループ(探索処理B0,…,Bn)に属する探索処理を実行開始してもよい。これにより、最適化装置10による演算を一層高速化できる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図3は、第2の実施の形態の情報処理システムの例を示す図である。
次に、第2の実施の形態を説明する。
図3は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、情報処理装置20とクライアント30とを有する。情報処理装置20およびクライアント30は、ネットワーク40に接続されている。ネットワーク40は、例えば、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
情報処理装置20は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。
クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。
図4は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置20は、CPU(Central Processing Unit)21、DRAM(Dynamic Random Access Memory)22、記憶装置23、NIC(Network Interface Card)24、最適化装置25および媒体リーダ28を有する。CPU21、DRAM22、記憶装置23、NIC24、最適化装置25および媒体リーダ28は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
情報処理装置20は、CPU(Central Processing Unit)21、DRAM(Dynamic Random Access Memory)22、記憶装置23、NIC(Network Interface Card)24、最適化装置25および媒体リーダ28を有する。CPU21、DRAM22、記憶装置23、NIC24、最適化装置25および媒体リーダ28は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
CPU21は、DRAM22に格納されたプログラムの命令を実行するプロセッサである。CPU21は、記憶装置23に記憶されたプログラムやデータの少なくとも一部をDRAM22にロードし、プログラムを実行する。CPU21は、当該プログラムを実行することで発揮される機能により、最適化装置25に対する設定や動作の制御を行う。
DRAM22は、情報処理装置20の主記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを一時的に記憶する。
記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。
記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。
NIC24は、ネットワーク40に接続され、ネットワーク40を介してクライアント30と通信する通信インタフェースである。NIC24は、例えば、ネットワーク40に属するスイッチやルータなどの通信装置とケーブルで接続される。
最適化装置25は、CPU21の制御により、イジングモデルの基底状態を探索する。最適化装置25は、例えば、1以上のチップの半導体集積回路であり、FPGAなどを用いて実現される。最適化装置25は、第1の実施の形態の最適化装置10の一例である。
媒体リーダ28は、記録媒体41に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体41として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ28は、例えば、記録媒体41から読み取ったプログラムやデータを、DRAM22や記憶装置23などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU21によって実行される。なお、記録媒体41は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体41や記憶装置23を、コンピュータ読み取り可能な記録媒体と言うことがある。
なお、クライアント30はCPU、主記憶装置、補助記憶装置、NIC、マウスやキーボードなどの入力デバイスおよびディスプレイを有する。
図5は、最適化装置のハードウェア例を示すブロック図である。
図5は、最適化装置のハードウェア例を示すブロック図である。
最適化装置25は、焼鈍部50a0,50a1,…,50ai,…,50anと交換制御部50とを有する。焼鈍部50a0,…,50anの各々は、レプリカと呼ばれることがある。nは、例えば1以上の奇数である。n+1は、最適化装置25が有する焼鈍部の数を示す。iは、0以上n以下の整数である。
焼鈍部50a0,…,50anの各々は、イジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数を保持する。1つの状態変数は、例えば、0または1の2値を取るビット(スピンビット)である。複数の状態変数は、例えば、ビット列(スピンビット列)で表される。焼鈍部50a0,…,50anの各々は、複数の状態変数の何れかの値を変化させることで、イジングモデルの状態を遷移させる。
焼鈍部50a0,…,50anの各々は、複数の状態変数の何れかの値が変化する場合、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、温度に対する複数の状態変数の各々の値を決定する処理を行う。焼鈍部50a0,…,50anは、前述の確率的探索をある反復回数行うことで、温度に対する複数の状態変数の各々の値を決定する。以下では、ある反復回数で確率的探索を行うことで、割り当てられた温度に対する各状態変数の値を決定する処理を「アニール処理」と言うことがある。アニール処理は、第1の実施の形態の探索処理に相当する。
交換制御部50は、焼鈍部50a0,…,50anの各々に温度情報(例えば、逆温度βi(温度Tの逆数))を与える。交換制御部50は、第1対応情報保持部51、第2対応情報保持部52、交換演算部53、焼鈍順序決定部54およびレプリカペア決定部55を有する。第1対応情報保持部51および第2対応情報保持部52は、例えばレジスタなどの記憶回路である。第1対応情報保持部51および第2対応情報保持部52は、RAMなどの揮発性メモリ、フラッシュメモリやEEPROMなどの不揮発性メモリでもよい。
第1対応情報保持部51は、第1対応情報を保持する。第1対応情報は、焼鈍部50a0,…,50anの各々に割り当てられている温度の識別情報(温度識別情報)と、焼鈍部50a0,…,50anの各々の識別情報との対応関係を示す。例えば、温度識別情報は温度番号である。例えば、焼鈍部50a0,…,50anの各々の識別情報はレプリカ番号である。第1対応情報は、温度の低い順または高い順に、レプリカ番号を配列した情報である。
第2対応情報保持部52は、第2対応情報を保持する。第2対応情報は、温度番号と温度との対応関係を示す情報である。例えば、温度番号は、温度の低い順に、0,1,2,…のように昇順に、各温度に対応付けられている。
交換演算部53は、焼鈍部50a0,…,50anからエネルギーを受け付け、隣接する温度が割り当てられた2つの焼鈍部に関するレプリカ交換を行う。交換演算部53は、隣接する温度が割り当てられた2つの焼鈍部によるアニール処理後のエネルギーを受け付けるたびに、当該2つの焼鈍部に関するレプリカ交換を行う。
交換演算部53は、レプリカ交換による温度の交換確率を、式(4)により計算する。式(4)の関数fには、式(2)のメトロポリス法のものが用いられる。例えば、交換演算部53は、式(4)で計算される交換確率と、[0,1)の区間で発生された一様乱数との比較に応じて、隣接する温度が割り当てられた2つの焼鈍部における温度の交換を行うか否かを決定する。
交換演算部53は、温度の交換に応じて、第1対応情報保持部51に記憶される第1対応情報を更新する。交換演算部53は、温度の交換に応じて、第2対応情報保持部52に記憶される第2対応情報を参照して、温度交換対象の2つの焼鈍部に、交換後の温度を示す温度情報を供給する。交換演算部53は、当該2つの焼鈍部に対するレプリカ交換の処理が完了すると、焼鈍順序決定部54に当該処理の完了を通知する。
焼鈍順序決定部54は、焼鈍部50a0,…,50anの各々によるアニール処理の開始順序を、各焼鈍部に割り当てられた温度(温度番号)の順に決定する。焼鈍順序決定部54は、隣接温度番号ペア決定部54aおよびアニール処理指示部54bを有する。
隣接温度番号ペア決定部54aは、レプリカペア決定部55に隣接温度保証情報を出力する。隣接温度保証情報は、隣接する温度番号の組を示す情報である。例えば、隣接温度番号ペア決定部54aは、初回に偶数モードとし、次に奇数モードとし、以降、偶数モード、奇数モードを順番に切り替える。偶数モードの場合、隣接する温度番号の組は、(0,1)、(2,3)、(4,5)、…、(n−1,n)である。奇数モードの場合、隣接する温度番号の組は、(1,2)、(3,4)、(5,6)、…、(n−2,n−1)である。隣接温度番号ペア決定部54aは、今回のモードに応じた隣接温度保証情報により、隣接する温度番号の組を、順番に、レプリカペア決定部55に供給する。
アニール処理指示部54bは、次にアニール処理を開始すべきレプリカ番号の通知を、レプリカペア決定部55から受け、当該レプリカ番号に対応する焼鈍部に対してアニール処理の開始を指示する。
レプリカペア決定部55は、隣接温度番号ペア決定部54aから隣接温度保証情報を受け付ける。レプリカペア決定部55は、第1対応情報保持部51に記憶された第1対応情報を参照して、隣接温度保証情報に対応するレプリカ番号のペアを決定する。レプリカペア決定部55は、決定したペアに属するレプリカ番号を、アニール処理指示部54bに通知する。
次に、焼鈍部50a0,…,50anの例を説明する。焼鈍部50aiを主に説明するが、他の焼鈍部も同様の構成である。
図6は、焼鈍部のハードウェア例を示すブロック図である。
図6は、焼鈍部のハードウェア例を示すブロック図である。
焼鈍部50aiは、状態保持部61、評価関数計算部62および遷移制御部63を有する。
状態保持部61は、評価関数に含まれる複数の状態変数の値を保持する。状態保持部61は、状態遷移の可否を示すフラグFと、フラグFが示す状態変数の識別番号(インデックス)Nに基づいて、複数の状態変数の値である状態Siを更新する。
状態保持部61は、評価関数に含まれる複数の状態変数の値を保持する。状態保持部61は、状態遷移の可否を示すフラグFと、フラグFが示す状態変数の識別番号(インデックス)Nに基づいて、複数の状態変数の値である状態Siを更新する。
評価関数計算部62は、状態変数の変化(状態遷移)に伴うエネルギー変化を計算する。例えば、評価関数が2つの状態変数間の結合で表されるイジングモデルで表され、かつ、一度に1つの状態変数の遷移のみを許す場合を考える。この場合、評価関数計算部62は、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、識別番号Nと、フラグFとに基づいて、複数の状態変数のそれぞれの変化(状態遷移)に伴うエネルギー変化ΔEikを計算する。エネルギー変化ΔEikは、k番目の状態変数の変化に伴うエネルギー変化を示す。計算したい最適化問題に応じた結合係数の値は、最適化装置25が備えるメモリまたはレジスタなどに予め記憶される。評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。評価関数計算部62は、例えば、積和演算回路などの論理回路を用いて実現される。
遷移制御部63は、通常の擬似焼き鈍し法と同様に、エネルギー変化ΔEikと交換制御部50により割り当てられた逆温度βiを用いて、k番目の状態変数の状態遷移の受け入れ確率を式(3)により決定することで、確率的探索を行う。ここで、式(3)における関数fは、式(1)と同じものであり、例えば、式(2)のメトロポリス法のものが用いられる。遷移制御部63は、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグFと、フラグFに対応する状態変数(変化させる状態変数)を示す識別番号Nを出力する。また、遷移制御部63は、エネルギー変化ΔEiNに基づいて、エネルギーEiを更新して交換制御部50に出力する。
図7は、第1対応情報の例を示す図である。
第1対応情報71は、第1対応情報保持部51に保持される。第1対応情報71では、焼鈍部50a0,…,50anの数、すなわちレプリカ数が、16である場合を例示している。
第1対応情報71は、第1対応情報保持部51に保持される。第1対応情報71では、焼鈍部50a0,…,50anの数、すなわちレプリカ数が、16である場合を例示している。
第1対応情報71では、0から15までの温度番号の順に、各温度番号に対応する、0から15までのレプリカ番号が配列されている。一例として、温度の低い方から順に、温度番号0,1,2,…,15が割り当てられる。ただし、温度の高いほうから順に、温度番号0,1,2,…,15が割り当てられてもよい。
図8は、第2対応情報の例を示す図である。
第2対応情報72は、第2対応情報保持部52に保持される。第2対応情報72でも、焼鈍部50a0,…,50anの数、すなわちレプリカ数が、16である場合を例示している。
第2対応情報72は、第2対応情報保持部52に保持される。第2対応情報72でも、焼鈍部50a0,…,50anの数、すなわちレプリカ数が、16である場合を例示している。
第2対応情報72では、0から15までの温度番号の順に、各温度番号に対応する、T0からT15までの温度が配列されている。例えば、温度T0<T1<T2<…<T14<T15である。
このように、交換制御部50は、温度と温度識別情報(温度番号)との対応関係を示す第2対応情報72を保持する。交換制御部50は、第2対応情報72に基づいて、複数の焼鈍部の各々の識別情報(レプリカ番号)に対応する温度識別情報(温度番号)を、温度に変換する。
次に、最適化装置25によるアニール処理制御の手順を説明する。最適化装置25には、アニール処理における確率的探索の反復回数の上限値(後述される閾値)が予め設定される。例えば、反復回数の上限値は、焼鈍部50a0,…,50anの各々で同じ値である。
図9は、アニール処理制御の例を示すフローチャートである。
(S10)焼鈍部50a0,…,50anの各々は、確率的探索の反復回数を0に初期化する。
(S10)焼鈍部50a0,…,50anの各々は、確率的探索の反復回数を0に初期化する。
(S11)隣接温度番号ペア決定部54aは、今回のモードが偶数モードか奇数モードかに応じて、温度番号を初期化する。今回のモードが偶数モードの場合、隣接温度番号ペア決定部54aは、温度番号Kを0に初期化する。今回のモードが奇数モードの場合、隣接温度番号ペア決定部54aは、温度番号Kを1に初期化する。例えば、隣接温度番号ペア決定部54aは、温度番号Kをカウントするカウンタを有している。
なお、隣接温度番号ペア決定部54aは、ステップS10の実行後、ステップS11を実行する場合に、偶数モードと奇数モードとを切り替える。隣接温度番号ペア決定部54aは、前回が奇数モードの場合、今回を偶数モードとする。隣接温度番号ペア決定部54aは、前回が偶数モードの場合、今回を奇数モードとする。例えば、ステップS11を最初に実行する場合、隣接温度番号ペア決定部54aは今回を偶数モードとする。
(S12)隣接温度番号ペア決定部54aは、第1対応情報保持部51に記憶された第1対応情報71を参照して、温度番号の昇順に、温度番号のペア(温度番号(K,K+1)のペア)を1つ読み出す。隣接温度番号ペア決定部54aは、当該温度番号のペアを含む隣接温度保証情報を、レプリカペア決定部55に出力する。レプリカペア決定部55は、第1対応情報71を参照して、隣接温度保証情報で示される温度番号のペアに対応するレプリカ番号のペアを取得し、当該レプリカ番号のペアを、アニール処理指示部54bに供給する。アニール処理指示部54bは、レプリカペア決定部55から供給されたレプリカ番号のペアに対応する焼鈍部に対して、アニール処理の開始を指示する。
なお、隣接温度番号ペア決定部54aは、奇数モードに切り替えてからステップS12を最初に実行する場合、まずは、温度番号0をレプリカペア決定部55に供給する。レプリカペア決定部55は、第1対応情報71を参照して、温度番号0に対応するレプリカ番号を取得し、当該レプリカ番号をアニール処理指示部54bに供給する。アニール処理指示部54bは、温度番号0のレプリカ番号に対応する焼鈍部に対して、アニール処理の開始を指示する。その後、隣接温度番号ペア決定部54aは、温度番号(1,2)の組から、レプリカペア決定部55への隣接温度保証情報の供給を行う。また、奇数モードの場合、アニール処理を行う最後のレプリカの組は、最後の温度番号(図7の例では、温度番号15)に対応する焼鈍部のみを含む。
(S13)隣接温度番号ペア決定部54aは、ステップS12においてレプリカペア決定部55に供給した温度番号が、第1対応情報における最後の温度番号であるか否かを判定する。最後の温度番号である場合、ステップS15に処理が進む。最後の温度番号でない場合、ステップS14に処理が進む。
(S14)隣接温度番号ペア決定部54aは、温度番号を+2する(温度番号に2を加算する)。例えば、温度番号Kに2を加算し、K=K+2とする。そして、ステップS12に処理が進む。ステップS12が繰り返し実行されることで、所定の時間間隔で、レプリカの組によるアニール処理が順次開始される。
(S15)交換演算部53は、焼鈍部50a0,…,50anの各々による今回のアニール処理が終了すると、アニール処理の終了条件を満たすか否かを判定する。終了条件を満たす場合、アニール処理制御が終了する。終了条件を満たさない場合、ステップS10に処理が進む。終了条件には、上記のアニール処理制御を所定回数実行すること(偶数モード/奇数モードの切り替えを所定回数行ったこと)、何れかの焼鈍部のエネルギーが目標値を下回ること、などが考えられる。
このように、焼鈍順序決定部54は、温度番号の順(昇順または降順)で、各焼鈍部によるアニール処理を順次開始させる。アニール処理は各焼鈍部により並列に実行される。
例えば、ステップS15において終了条件が満たされて、焼鈍部50a0,…,50anの各々のアニール処理が終了すると、各焼鈍部によるエネルギーの最低値と当該最低値のときの各状態変数の値が、CPU21を介して、DRAM22に出力される。例えば、CPU21は、各状態変数の値を、ユーザにとって分かり易い結果情報に変換し、ネットワーク40を介して、クライアント30に結果情報を提供する。
例えば、ステップS15において終了条件が満たされて、焼鈍部50a0,…,50anの各々のアニール処理が終了すると、各焼鈍部によるエネルギーの最低値と当該最低値のときの各状態変数の値が、CPU21を介して、DRAM22に出力される。例えば、CPU21は、各状態変数の値を、ユーザにとって分かり易い結果情報に変換し、ネットワーク40を介して、クライアント30に結果情報を提供する。
次に、アニール処理およびレプリカ交換の実行手順を説明する。
図10は、アニール処理およびレプリカ交換の実行例を示すフローチャートである。
ステップS20は、交換制御部50によって実行される。
図10は、アニール処理およびレプリカ交換の実行例を示すフローチャートである。
ステップS20は、交換制御部50によって実行される。
(S20)レプリカペア決定部55は、ステップS12で隣接温度番号ペア決定部54aにより供給された温度番号を基に、アニール対象レプリカのレプリカ番号を2つ選択し、アニール処理指示部54bに供給する。アニール処理指示部54bは、当該レプリカ番号のペアに対応する2つの焼鈍部にアニール処理の開始を指示する。奇数モードの場合、ステップS12で説明したように、最初と最後のアニール対象レプリカは1つとなる。ステップS20は、ステップS12に相当する。
ステップS21〜S24は、焼鈍部50a0,…,50anの各々によって実行される。実行順は、前述のように焼鈍順序決定部54により温度順に決定される。以下では、焼鈍部50aiに着目して説明するが、他の焼鈍部も同様の手順を実行する。
(S21)焼鈍部50aiは、アニール処理指示部54bからアニール処理の開始の指示を受けると、交換演算部53により供給される温度を用いて、確率的探索を実行する。
(S22)焼鈍部50aiは、確率的探索の反復回数をインクリメントする(反復回数に1を加算する)。
(S22)焼鈍部50aiは、確率的探索の反復回数をインクリメントする(反復回数に1を加算する)。
(S23)焼鈍部50aiは、反復回数が閾値に達したか(すなわち、反復回数=閾値であるか否か)を判定する。反復回数が閾値に達した場合、焼鈍部50aiによる今回のアニール処理が終了し、ステップS24に処理が進む。反復回数が閾値に達していない場合、ステップS21に処理が進む。
(S24)焼鈍部50aiは、交換制御部50(より詳細には交換制御部50の交換演算部53)に、確率的探索の結果として得られたエネルギーを送信する。
ステップS25〜S28は、交換制御部50によって実行される。
ステップS25〜S28は、交換制御部50によって実行される。
(S25)交換演算部53は、隣接する温度が割り当てられた2つの焼鈍部からエネルギーを受け付けると、2つの温度と、2つのエネルギーとに基づいて、式(4),(2)により、交換確率を計算する。
(S26)交換演算部53は、計算した交換確率と乱数との比較により、隣接する温度が割り当てられた2つの焼鈍部における温度の交換可否を決定する。
(S27)交換演算部53は、ステップS26の結果、交換可である場合、ステップS28に処理を進める。交換不可である場合、交換が行われずに、該当の焼鈍部(レプリカ)のペアに対する交換演算部53の処理が終了する。
(S27)交換演算部53は、ステップS26の結果、交換可である場合、ステップS28に処理を進める。交換不可である場合、交換が行われずに、該当の焼鈍部(レプリカ)のペアに対する交換演算部53の処理が終了する。
(S28)交換演算部53は、第1対応情報71において、交換対象の2つの焼鈍部に対応するレプリカ番号を交換することで、第1対応情報71を更新する。これにより、第1対応情報71における交換後のレプリカ番号は、交換前とは異なる温度番号に対応付けられる。交換演算部53は、交換後の温度番号に対応する温度を第2対応情報72から読み出す。交換演算部53は、交換したレプリカ番号に対応する焼鈍部に、交換後の温度(または逆温度)を示す温度情報を供給する。そして、該当のレプリカのペアに対する交換演算部53の処理が終了する。
最適化装置25は、上記のステップS20〜S28の手順を焼鈍部のペア毎にパイプライン処理することで、演算を高速化できる。
ここで、交換制御部50は、2つの焼鈍部に割り当てられている温度の交換を行うか否かを決定した後、他の焼鈍部による処理の完了を待たずに、第1対応情報71に基づいて、当該2つの焼鈍部によるアニール処理を開始させてもよい。具体的には、交換制御部50は、ステップS25〜S28の後、当該2つの焼鈍部のアニール処理でステップS15の終了条件が満たされていない場合に、ステップS10に移り、当該2つの焼鈍部の反復回数を初期化させて、ステップS11以降を実行してもよい。
ここで、交換制御部50は、2つの焼鈍部に割り当てられている温度の交換を行うか否かを決定した後、他の焼鈍部による処理の完了を待たずに、第1対応情報71に基づいて、当該2つの焼鈍部によるアニール処理を開始させてもよい。具体的には、交換制御部50は、ステップS25〜S28の後、当該2つの焼鈍部のアニール処理でステップS15の終了条件が満たされていない場合に、ステップS10に移り、当該2つの焼鈍部の反復回数を初期化させて、ステップS11以降を実行してもよい。
このようにすると、最適化装置25は、今回の処理グループにおけるアニール処理およびレプリカ交換が全て完了する前に、次回の処理グループを開始できる。例えば、隣接温度番号ペア決定部54aは、今回の処理グループに対する温度番号K1のカウンタと、次回の処理グループに対する温度番号K2のカウンタとを有し、当該2つのカウンタにより2つの処理グループによるアニール処理の開始順序を制御する。隣接温度番号ペア決定部54aは、3以上のカウンタを用いて、3以上の処理グループの各々によるアニール処理の開始順序を制御してもよい。ここで、「処理グループ」は、前述のように、第1対応情報71に設定された温度番号0,…,15に対する一巡のアニール処理を示す。
例えば、ステップS11,S12では、交換制御部50は、今回の処理グループに属するアニール処理およびレプリカ交換を偶数モードで順次実行しながら、次回の処理グループを奇数モードで開始させる。あるいは、交換制御部50は、今回の処理グループに属するアニール処理およびレプリカ交換を奇数モードで順次実行しながら、次回の処理グループを偶数モードで開始させる。これにより、最適化装置25の演算を一層高速化できる。
図11は、温度の交換例を示す図である。
交換演算部53は、偶数モードおよび奇数モードの何れかに応じて、交換対象のレプリカ番号を変更する。前述のように、偶数モードでは、温度番号の組(0,1)、(2,3)、(4,5)、…を交換対象とする。奇数モードでは、温度番号の組(1,2)、(3,4)、(5,6)、…を交換対象とする。
交換演算部53は、偶数モードおよび奇数モードの何れかに応じて、交換対象のレプリカ番号を変更する。前述のように、偶数モードでは、温度番号の組(0,1)、(2,3)、(4,5)、…を交換対象とする。奇数モードでは、温度番号の組(1,2)、(3,4)、(5,6)、…を交換対象とする。
例えば、交換制御部50は、1回目の処理グループでは、偶数モードでレプリカ交換を行う。1回目の処理グループにおけるレプリカ交換を、「1回目の交換」と称する。第1対応情報71は、1回目の交換前を示す。第1対応情報71aは、1回目の交換後を示す。
例えば、1回目の交換では、温度番号2に対応するレプリカ番号14と、温度番号3に対応するレプリカ番号3とが交換される。交換後は、温度番号2にレプリカ番号3が対応付けられ、温度番号3にレプリカ番号14が対応付けられる。また、1回目の交換では、温度番号4に対応するレプリカ番号1と、温度番号5に対応するレプリカ番号0とが交換される。交換後は、温度番号4にレプリカ番号0が対応付けられ、温度番号5にレプリカ番号1が対応付けられる。更に、1回目の交換では、温度番号10に対応するレプリカ番号13と、温度番号11に対応するレプリカ番号11とが交換される。交換後は、温度番号10にレプリカ番号11が対応付けられ、温度番号11にレプリカ番号13が対応付けられる。
交換制御部50は、2回目の処理グループでは、奇数モードでレプリカ交換を行う。2回目の処理グループにおけるレプリカ交換を、「2回目の交換」と称する。第1対応情報71aは、2回目の交換前を示す。第1対応情報71bは、2回目の交換後を示す。
例えば、2回目の交換では、温度番号3に対応するレプリカ番号14と、温度番号4に対応するレプリカ番号0とが交換される。交換後は、温度番号3にレプリカ番号0が対応付けられ、温度番号4にレプリカ番号14が対応付けられる。また、2回目の交換では、温度番号7に対応するレプリカ番号9と、温度番号8に対応するレプリカ番号15とが交換される。交換後は、温度番号7にレプリカ番号15が対応付けられ、温度番号8にレプリカ番号9が対応付けられる。
交換制御部50は、3回目の処理グループでは、偶数モードでレプリカ交換を行う。3回目の処理グループにおけるレプリカ交換を、「3回目の交換」と称する。第1対応情報71bは、3回目の交換前を示す。3回目の交換後の第1対応情報の図示は省略されている。例えば、3回目の交換では、温度番号0に対応するレプリカ番号6と、温度番号1に対応するレプリカ番号8とが交換される。また、3回目の交換では、温度番号4に対応するレプリカ番号14と、温度番号5に対応するレプリカ番号1とが交換される。更に、3回目の交換では、温度番号12に対応するレプリカ番号5と、温度番号13に対応するレプリカ番号12とが交換される。
上記のように、交換制御部50は、温度の交換を行う場合、第1対応情報71,71a,71bにおいて隣接する2つの温度に対応付けられた2つの焼鈍部の各々のレプリカ番号を入れ替えることで、第1対応情報71,71a,71bを更新する。これにより、温度の昇順または降順で各レプリカにアニール処理を開始させる際に、第1対応情報71,71a,71bを温度番号でソートせずに済み、各レプリカによるアニール処理を高速に開始させることができる。
こうして、交換制御部50は、偶数モードおよび奇数モードを切り替えながら、レプリカ交換を行う。すなわち、交換制御部50は、複数の焼鈍部の各々による今回のアニール処理に対し、隣接する2つの温度の複数の第1のペアの各々に対応する焼鈍部のペアで温度の交換を行うか否かを決定する。交換制御部50は、複数の焼鈍部の各々による次回のアニール処理に対し、隣接する2つの温度の複数のペアであって、複数の第1のペアとは異なる複数の第2のペアの各々に対応する焼鈍部のペアで温度の交換を行うか否かを決定する。複数の第2のペアの各々は、複数の第1のペアの各々と異なるペアとなる。これにより、全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
図12は、パイプライン処理の例を示す図である。
温度番号の昇順に配列されたレプリカ番号を、RepA,RepB,RepC,RepD,…,RepM,RepNと表す。処理グループ81においてRepA,…,RepNの各々に代入されるレプリカ番号と、処理グループ81の次の処理グループ82においてRepA,…,RepNの各々に代入されるレプリカ番号とは、異なることがある。以下では、「アニール処理」を「アニール」と略記することがある。
温度番号の昇順に配列されたレプリカ番号を、RepA,RepB,RepC,RepD,…,RepM,RepNと表す。処理グループ81においてRepA,…,RepNの各々に代入されるレプリカ番号と、処理グループ81の次の処理グループ82においてRepA,…,RepNの各々に代入されるレプリカ番号とは、異なることがある。以下では、「アニール処理」を「アニール」と略記することがある。
処理グループ81は、各レプリカにより温度番号順に実行されるアニールX0,X1,X2,X3,…,Xn−1,Xnを含む。処理グループ82は、各レプリカにより温度番号順に実行されるアニールY0,Y1,Y2,Y3,…,Yn−1,Ynを含む。処理グループ81の各アニールに対するレプリカ交換は、偶数モードで実行される。処理グループ82の各アニールに対するレプリカ交換は、奇数モードで実行される。
例えば、アニールX0は、時刻t0に実行開始される。アニールX1は、時刻t1に実行開始される。例えば、時刻t1は、時刻t0よりも所定時間後の時刻である。ただし、アニールX1は、アニールX0と同時に実行開始されてもよい(t0=t1でもよい)。
アニールX2は、時刻t2に実行開始される。例えば、時刻t2は、時刻t1よりも所定時間後の時刻である。アニールX3は、時刻t3に実行開始される。例えば、時刻t3は、時刻t2よりも所定時間後の時刻である。ただし、アニールX3は、アニールX2と同時に実行開始されてもよい(t2=t3でもよい)。以降、順次、温度番号順にアニールが実行開始される。
例えば、アニールX2,X3,…が実行中である時刻t4の前にアニールX0が完了し、時刻t4にアニールX1が完了する。すなわち、時刻t4には、アニールX0,X1が完了した状態となる。時刻t4(あるいは時刻t4にアニールX1が完了した直後)において、交換制御部50は、アニールX0を実行したレプリカ番号RepAの焼鈍部と、アニールX1を実行したレプリカ番号RepBの焼鈍部とのレプリカ交換を開始する。例えば、当該レプリカ交換は時刻t5に完了する。
ここで、例えば、アニールX3よりも後段のアニール処理が実行中である時刻t5の前にアニールX2が完了し、時刻t5にアニールX3が完了する。すなわち、時刻t5には、アニールX2,X3が完了した状態となる。時刻t5(あるいは時刻t5にアニールX3が完了した直後)において、交換制御部50は、アニールX2を実行したレプリカ番号RepCの焼鈍部と、アニールX3を実行したレプリカ番号RepDの焼鈍部とのレプリカ交換を開始する。
こうして、交換制御部50は、処理グループ81に属するアニールの組に対して、偶数モードで、順次、レプリカ交換を行う。交換制御部50は、処理グループ82に属するアニールの組に対しても同様に、奇数モードで、順次、レプリカ交換を行う。
このように、最適化装置25は、アニールとレプリカ交換とを合わせてパイプライン処理することで、全レプリカの探索処理の完了を待たずに、アニールが完了したレプリカからレプリカ交換を行える。これにより、レプリカ交換によるレイテンシがパイプライン内に隠蔽される。よって、最適化装置25による演算を高速化できる。
また、今回の処理グループ81における全レプリカのアニールおよびレプリカ交換の完了を待たずに、次回の処理グループ82のアニールおよびレプリカ交換のパイプライン実行を継続できる。これにより、最適化装置25の演算を一層高速化できる。
なお、交換制御部50によるレプリカ交換を複数のステージ(例えば、図10のステップS25〜S28の各々に対応するステージ)に分割して、パイプライン化することも考えられる。
図13は、パイプライン処理の他の例を示す図である。
温度番号の昇順に配列されたレプリカ番号を、RepA,RepB,RepC,RepD,…,RepM,RepNと表す。処理グループ91においてRepA,…,RepNの各々に代入されるレプリカ番号と、処理グループ91の次の処理グループ92においてRepA,…,RepNの各々に代入されるレプリカ番号とは、異なることがある。
温度番号の昇順に配列されたレプリカ番号を、RepA,RepB,RepC,RepD,…,RepM,RepNと表す。処理グループ91においてRepA,…,RepNの各々に代入されるレプリカ番号と、処理グループ91の次の処理グループ92においてRepA,…,RepNの各々に代入されるレプリカ番号とは、異なることがある。
最適化装置25は、交換制御部50によるレプリカ交換の処理を複数のステージに分割して、次のようなパイプライン処理を行ってもよい。例えば、レプリカ交換を前半ステージおよび後半ステージに分けるとする(ただし、3以上のステージに分けてもよい)。
処理グループ91は、各レプリカにより温度番号順に実行されるアニールX0,X1,X2,X3,…,Xn−1,Xnを含む。処理グループ92は、各レプリカにより温度番号順に実行されるアニールY0,Y1,Y2,Y3,…,Yn−1,Ynを含む。処理グループ91の各アニールに対するレプリカ交換は、偶数モードで実行される。処理グループ92の各アニールに対するレプリカ交換は、奇数モードで実行される。
例えば、アニールX0は、時刻t0aに実行開始される。アニールX1は、時刻t1aに実行開始される。例えば、時刻t1aは、時刻t0aよりも所定時間後の時刻である。ただし、アニールX1は、アニールX0と同時に実行開始されてもよい(t0a=t1aでもよい)。
アニールX2は、時刻t2aに実行開始される。例えば、時刻t2aは、時刻t1aよりも所定時間後の時刻である。アニールX3は、時刻t3aに実行開始される。例えば、時刻t3aは、時刻t2aよりも所定時間後の時刻である。ただし、アニールX3は、アニールX2と同時に実行開始されてもよい(t2a=t3aでもよい)。以降、順次、温度番号順にアニールが実行開始される。
例えば、アニールX2,X3,…が実行中である時刻t4aの前にアニールX0が完了し、時刻t4aにアニールX1が完了する。すなわち、時刻t4aには、アニールX0,X1が完了した状態となる。時刻t4a(あるいは時刻t4aにアニールX1が完了した直後)において、交換制御部50は、アニールX0を実行したレプリカ番号RepAの焼鈍部と、アニールX1を実行したレプリカ番号RepBの焼鈍部とのレプリカ交換の前半ステージを開始する。例えば、交換制御部50は、当該レプリカ交換の前半ステージを時刻t5aに完了し、時刻t5aの直後に当該レプリカ交換の後半ステージを開始する。
例えば、アニールX3よりも後段のアニール処理が実行中である時刻t5aの前にアニールX2が完了し、時刻t5aにアニールX3が完了する。すなわち、時刻t5aには、アニールX2,X3が完了した状態となる。時刻t5a(あるいは時刻t5aにアニールX3が完了した直後)において、交換制御部50は、アニールX2を実行したレプリカ番号RepCの焼鈍部と、アニールX3を実行したレプリカ番号RepDの焼鈍部とのレプリカ交換の前半ステージを開始する。
このように、最適化装置25は、レプリカ交換についても、パイプラインにより並列に処理することができる。これにより、最適化装置25の演算をより一層高速化できる。
図14は、比較例を示す図である。
図14は、比較例を示す図である。
図14では、n+1個のレプリカを考える。各レプリカのレプリカ番号をRep0,Rep1,…,Rep(n−1),Rep(n)とする。各レプリカには、温度番号が対応付けられる。
図14(A)は、ソフトウェアによるレプリカ交換の比較例を示す。例えば、CPU21により、DRAM22に記憶されたプログラムを実行することで、比較例のレプリカ交換の機能を発揮し得る。図14(A)の比較例では、例えば、DRAM22は、レプリカ番号と温度との対応情報を保持する。
図14(A)の比較例では、任意の順番で(例えば、レプリカ番号の順に)、各レプリカは自身に割り当てられた温度情報を用いて、アニールを行う。処理グループ101は、レプリカ番号Rep0,…,Rep(n)の各レプリカによるアニールを示す。処理グループ101が完了すると、CPU21は、交換ステップ102を実行する。
具体的には、CPU21は、各レプリカからエネルギーを読み出してDRAM22に格納し、CPU21が実行するソフトウェアの機能により、隣接する温度が割り当てられたレプリカ間のレプリカ交換を行う。CPU21は、レプリカ交換の結果をDRAM22の対応情報に反映させ、交換後の温度情報を、各レプリカに書き戻す。そして、交換ステップ102が完了すると、次の処理グループ103が開始される。
交換ステップ102では、CPU21がレプリカ交換を実行する。交換ステップ102による遅延は数十ms(ミリ秒)程度となる。
図14(B)は、ハードウェアによるレプリカ交換の比較例を示す。処理グループ111は、レプリカ番号Rep0,…,Rep(n)の各レプリカによるアニールを示す。処理グループ111が完了すると、比較例の最適化装置は、自装置において、交換ステップ112を実行する。すなわち、図14(B)の比較例では、レプリカ交換を、CPU21などが実行するソフトウェアではなく、所定のハードウェア(交換回路と称する)により実行する点が、図14(A)の比較例と異なる。図14(B)の比較例でも、図14(A)の比較例と同様に、交換回路がレプリカ番号と温度との対応情報を保持し、隣接する温度が割り当てられたレプリカ間のレプリカ交換を、例えば温度番号順に行う。交換回路は、レプリカ交換の結果を交換回路が保持する対応情報に反映させ、交換後の温度情報を、各レプリカに供給する。交換ステップ112が完了すると、次の処理グループ113が開始される。
図14(B)は、ハードウェアによるレプリカ交換の比較例を示す。処理グループ111は、レプリカ番号Rep0,…,Rep(n)の各レプリカによるアニールを示す。処理グループ111が完了すると、比較例の最適化装置は、自装置において、交換ステップ112を実行する。すなわち、図14(B)の比較例では、レプリカ交換を、CPU21などが実行するソフトウェアではなく、所定のハードウェア(交換回路と称する)により実行する点が、図14(A)の比較例と異なる。図14(B)の比較例でも、図14(A)の比較例と同様に、交換回路がレプリカ番号と温度との対応情報を保持し、隣接する温度が割り当てられたレプリカ間のレプリカ交換を、例えば温度番号順に行う。交換回路は、レプリカ交換の結果を交換回路が保持する対応情報に反映させ、交換後の温度情報を、各レプリカに供給する。交換ステップ112が完了すると、次の処理グループ113が開始される。
交換ステップ112では、所定の交換回路がレプリカ交換を実行する。交換ステップ112では、レプリカ数をN(=n+1)とすると、合計でNサイクルを要する。具体的には、{(2つのレプリカからのエネルギーの読み出しに要する1サイクル)+(2つのレプリカへの温度の書き込みに要する1サイクル)}×N/2=Nサイクルである。交換ステップ112による遅延は、数百ns(ナノ秒)程度となる。
これに対して、最適化装置25は、探索処理とレプリカ交換とを合わせてパイプライン処理することで、全レプリカの探索処理の完了を待たずに、探索処理が完了したレプリカからレプリカ交換を行える。これにより、レプリカ交換による遅延がパイプライン内に隠蔽される。このため、交換ステップ102や交換ステップ112による遅延を低減できる。よって、最適化装置25による演算を高速化できる。
また、今回の処理グループにおける全レプリカのレプリカ交換の完了を待たずに、次回の処理グループのアニールおよびレプリカ交換のパイプライン実行を継続できる。これにより、最適化装置25の演算を一層高速化できる。
更に、最適化装置25は、処理グループ毎に偶数モードと奇数モードとを交互に切り替えることで全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
図15は、最適解を得るためのシステムの例を示す図である。ユーザはクライアント30を用いて、ネットワーク40を介して、解くべき最適化問題を情報処理装置20に入力する。情報処理装置20は、ネットワーク40からCPU21に入力された最適化問題をイジングモデルに置き換え、イジングモデルの基底状態を探索することにより、解くべき最適化問題の解を出力する。クライアント30と、ネットワーク40と、CPU21とにより、最適化装置25における温度と温度識別情報とを入力する入力部、および、品質情報をユーザに対して通知する通知部が実現される。
次に、最適解を得るための実行手順を説明する。
図16は、最適解を得るための実行例を示すフローチャートである。
(S30)CPU21は、クライアント30から入力された最適化問題をイジングモデルに変換する。その過程で生成された初期スピン変数、結合係数、初期エネルギーを最適化装置25内の焼鈍部50a0,…,50anに入力する。また、CPU21は、最適化問題の種類に応じた初期温度設定を最適化装置25内の第2対応情報保持部52に入力する。
図16は、最適解を得るための実行例を示すフローチャートである。
(S30)CPU21は、クライアント30から入力された最適化問題をイジングモデルに変換する。その過程で生成された初期スピン変数、結合係数、初期エネルギーを最適化装置25内の焼鈍部50a0,…,50anに入力する。また、CPU21は、最適化問題の種類に応じた初期温度設定を最適化装置25内の第2対応情報保持部52に入力する。
(S31)最適化装置25はステップS30で入力された設定をもとに、レプリカ交換法を用いたアニール処理を実行する。
(S32)所定の反復回数のアニール処理およびレプリカ交換処理が実行された後、CPU21はクライアント30に処理完了を通知する。その後、ユーザはクライアント30からCPU21に、アニールの結果データ(エネルギー、スピン変数)および温度情報を取得するよう要求する。CPU21は、焼鈍部50a0,…,50anからエネルギーとスピン変数を、第2対応情報保持部52から温度情報を、それぞれ取得してクライアント30に通知する。
(S32)所定の反復回数のアニール処理およびレプリカ交換処理が実行された後、CPU21はクライアント30に処理完了を通知する。その後、ユーザはクライアント30からCPU21に、アニールの結果データ(エネルギー、スピン変数)および温度情報を取得するよう要求する。CPU21は、焼鈍部50a0,…,50anからエネルギーとスピン変数を、第2対応情報保持部52から温度情報を、それぞれ取得してクライアント30に通知する。
(S33)CPU21は、ステップS32で取得されたエネルギーの結果データを所定のエネルギー閾値と比較し、最適化問題の解として十分な品質を保持しているか検査する。エネルギーの結果データが所定のエネルギー閾値以下である場合、十分な品質であるとして処理を終了する。そうでない場合、すなわち、エネルギーの結果データが所定のエネルギー閾値よりも大きい場合は品質が十分でないとしてクライアント30に対してその旨を通知するとともにステップS34に進む。
(S34)CPU21は、ステップS32で取得された温度設定に対し、隣接温度の間隔を調整することで新たな温度設定を生成する。CPU21は、生成された温度設定をステップS30と同様の手順で最適化装置に入力し、その他パラメータは前回のアニール処理と同じものを用いてステップS31に進む。
図17は、ステップS34の温度調整の実行例を示す図である。
第2対応情報72は、タイミングT1における初期の温度設定を示している(具体的なβの値の例も表している)。CPU21は、この温度設定でアニール処理を行った結果、得られた解の品質が不十分である場合、すなわち、エネルギーの結果データが所定のエネルギー閾値よりも大きい場合は、品質が十分でないとしてクライアント30に対してその旨を通知するとともに、例えば、第2対応情報72の温度番号1,5,11における温度を変更する。図中の「=>」の記号は温度の変更を示し、当該記号の左側の数値(例えば、「90」)が変更前、右側の数値(例えば、「92」)が変更後である。これにより、温度番号(0,1)(1,2)(4,5)(5,6)(10,11)(11,12)の間での交換確率を調整し、エネルギーの結果データの改善を試みる。第2対応情報72aは、タイミングT1における温度の変更結果を例示する。
第2対応情報72は、タイミングT1における初期の温度設定を示している(具体的なβの値の例も表している)。CPU21は、この温度設定でアニール処理を行った結果、得られた解の品質が不十分である場合、すなわち、エネルギーの結果データが所定のエネルギー閾値よりも大きい場合は、品質が十分でないとしてクライアント30に対してその旨を通知するとともに、例えば、第2対応情報72の温度番号1,5,11における温度を変更する。図中の「=>」の記号は温度の変更を示し、当該記号の左側の数値(例えば、「90」)が変更前、右側の数値(例えば、「92」)が変更後である。これにより、温度番号(0,1)(1,2)(4,5)(5,6)(10,11)(11,12)の間での交換確率を調整し、エネルギーの結果データの改善を試みる。第2対応情報72aは、タイミングT1における温度の変更結果を例示する。
それでも、エネルギーの結果データが所定のエネルギー閾値よりも大きく、解の品質が不十分である場合は、CPU21は、さらにタイミングT2において、品質が十分でないとしてクライアント30に対してその旨を通知するとともに、例えば、第2対応情報72aの温度番号4,6,12における温度を変更する。これにより、温度番号(3,4)(4,5)(5,6)(6,7)(11,12)(12,13)の間での交換確率を調整し、エネルギーの結果データの改善を試みる。このような処理を繰り返すことにより、解くべき最適化問題ごとに適した温度設定を得ることができる。その結果として、十分な品質の解を求めることができる。
なお、第1の実施の形態の最適化装置10の制御は、最適化装置10を制御するコンピュータが備えるプロセッサがプログラムを実行することで実現されてもよい。例えば、プログラムは当該コンピュータが備えるRAMに格納される。第2の実施の形態の最適化装置25の制御は、CPU21にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体41に記録できる。
例えば、プログラムを記録した記録媒体41を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体41に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM22や記憶装置23に格納し(インストールし)、DRAM22や記憶装置23からプログラムを読み込んで実行してもよい。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
10 最適化装置
1a0,1a1,…,1ai,…,1an 焼鈍部
11 交換制御部
11a 記憶部
11b 処理回路
12 対応情報
D1 流れ図
1a0,1a1,…,1ai,…,1an 焼鈍部
11 交換制御部
11a 記憶部
11b 処理回路
12 対応情報
D1 流れ図
Claims (10)
- エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部と、
前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持し、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、2つの温度に対応する2つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記2つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定し、交換を行う場合、前記対応情報を更新し、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記2つの焼鈍部に供給する交換制御部と、
を有する最適化装置。 - 前記交換制御部は、
前記複数の焼鈍部の各々による今回の前記処理に対し、前記2つの温度の複数の第1のペアの各々に対応する焼鈍部のペアで前記温度の交換を行うか否かを決定し、
前記複数の焼鈍部の各々による次回の前記処理に対し、前記2つの温度の複数のペアであって、前記複数の第1のペアとは異なる複数の第2のペアの各々に対応する焼鈍部のペアで前記温度の交換を行うか否かを決定する、
請求項1記載の最適化装置。 - 前記交換制御部は、前記2つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定した後、前記他の焼鈍部による前記処理の完了を待たずに、前記対応情報に基づいて、前記2つの焼鈍部による前記処理を開始させる、
請求項1記載の最適化装置。 - 前記交換制御部は、前記温度の交換を行う場合、前記2つの温度に対応付けられた前記2つの焼鈍部の各々の識別情報を入れ替えることで、前記対応情報を更新する、
請求項1記載の最適化装置。 - 前記交換制御部は、前記温度の交換を行う場合、前記対応情報において隣接する2つの温度に対応付けられた前記2つの焼鈍部の各々の識別情報を入れ替えることで、前記対応情報を更新する、
請求項4記載の最適化装置。 - 前記対応情報における前記温度は、前記温度を識別する温度識別情報で表され、
前記交換制御部は、前記温度と前記温度識別情報との対応関係を示す他の対応情報を保持し、前記他の対応情報に基づいて、前記複数の焼鈍部の各々の識別情報に対応する前記温度識別情報を、前記温度に変換する、
請求項1記載の最適化装置。 - 前記最適化装置はさらに、
前記交換制御部が有する保持部が保持する、前記温度と、前記温度を識別する温度識別情報とを入力する入力部を有する、
請求項1乃至6のいずれか一項に記載の最適化装置。 - 前記最適化装置はさらに、
前記複数の焼鈍部による前記処理後のエネルギーの結果データが、所定のエネルギー閾値よりも大きい場合は、品質が十分でない旨を通知する通知部を有する、
請求項1乃至7のいずれか一項に記載の最適化装置。 - エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部、
を有する最適化装置の制御方法において、
交換制御部が、前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持し、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、2つの温度に対応する2つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記2つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定し、交換を行う場合、前記対応情報を更新し、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記2つの焼鈍部に供給する、
最適化装置の制御方法。 - エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部、
を有する最適化装置の制御プログラムにおいて、
交換制御部に、前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持させ、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、2つの温度に対応する2つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記2つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定させ、交換を行わせる場合、前記対応情報を更新させ、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記2つの焼鈍部に供給させる、
最適化装置の制御プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/034122 WO2020054046A1 (ja) | 2018-09-14 | 2018-09-14 | 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2020054046A1 true JPWO2020054046A1 (ja) | 2021-05-13 |
JP6997404B2 JP6997404B2 (ja) | 2022-01-17 |
Family
ID=69777716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020546645A Active JP6997404B2 (ja) | 2018-09-14 | 2018-09-14 | 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210150356A1 (ja) |
EP (1) | EP3852027A4 (ja) |
JP (1) | JP6997404B2 (ja) |
CA (1) | CA3108047C (ja) |
WO (1) | WO2020054046A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023041098A (ja) * | 2021-09-13 | 2023-03-24 | 富士通株式会社 | データ処理装置、データ処理方法およびプログラム |
CN116151171B (zh) * | 2023-04-17 | 2023-07-18 | 华南理工大学 | 一种基于并行回火的全连接伊辛模型退火处理电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05250346A (ja) * | 1992-03-04 | 1993-09-28 | Nec Corp | ニューラルネットワークシミュレーション装置 |
JPH09231197A (ja) * | 1996-02-22 | 1997-09-05 | Fujitsu Ltd | 温度並列シミュレーティド・アニーリング用恒温槽装置及び温度並列シミュレーティド・アニーリング方法 |
WO2014192153A1 (ja) * | 2013-05-31 | 2014-12-04 | 株式会社日立製作所 | 半導体装置 |
JP2018005541A (ja) * | 2016-07-01 | 2018-01-11 | 富士通株式会社 | 情報処理装置、イジング装置及び情報処理装置の制御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5250346B2 (ja) | 2008-09-04 | 2013-07-31 | デルタ工業株式会社 | トリムのクリップ止め構造および車両用シート |
-
2018
- 2018-09-14 WO PCT/JP2018/034122 patent/WO2020054046A1/ja unknown
- 2018-09-14 CA CA3108047A patent/CA3108047C/en active Active
- 2018-09-14 EP EP18933132.5A patent/EP3852027A4/en active Pending
- 2018-09-14 JP JP2020546645A patent/JP6997404B2/ja active Active
-
2021
- 2021-01-28 US US17/160,480 patent/US20210150356A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05250346A (ja) * | 1992-03-04 | 1993-09-28 | Nec Corp | ニューラルネットワークシミュレーション装置 |
JPH09231197A (ja) * | 1996-02-22 | 1997-09-05 | Fujitsu Ltd | 温度並列シミュレーティド・アニーリング用恒温槽装置及び温度並列シミュレーティド・アニーリング方法 |
WO2014192153A1 (ja) * | 2013-05-31 | 2014-12-04 | 株式会社日立製作所 | 半導体装置 |
JP2018005541A (ja) * | 2016-07-01 | 2018-01-11 | 富士通株式会社 | 情報処理装置、イジング装置及び情報処理装置の制御方法 |
Non-Patent Citations (1)
Title |
---|
福島 孝治 KOJI HUKUSHIMA: "マルコフ連鎖モンテカルロ法の新展開 Recent Developments in Markov-chain Monte Carlo Method", 電子情報通信学会技術研究報告 VOL.110 NO.76 IEICE TECHNICAL REPORT, vol. 第110巻 第76号, JPN6021045364, 7 June 2010 (2010-06-07), JP, pages 113 - 116, ISSN: 0004641261 * |
Also Published As
Publication number | Publication date |
---|---|
EP3852027A4 (en) | 2022-05-18 |
US20210150356A1 (en) | 2021-05-20 |
CA3108047A1 (en) | 2020-03-19 |
CA3108047C (en) | 2023-07-11 |
EP3852027A1 (en) | 2021-07-21 |
JP6997404B2 (ja) | 2022-01-17 |
WO2020054046A1 (ja) | 2020-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7108185B2 (ja) | 最適化装置および最適化装置の制御方法 | |
JP6465231B1 (ja) | 最適化装置及び最適化装置の制御方法 | |
JP7007585B2 (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
JP6468254B2 (ja) | 情報処理装置、イジング装置及び情報処理装置の制御方法 | |
JP7248907B2 (ja) | 最適化装置および最適化装置の制御方法 | |
JP7239826B2 (ja) | サンプリング装置およびサンプリング方法 | |
JP6997404B2 (ja) | 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム | |
JP7319539B2 (ja) | 組合せ最適化装置、組合せ最適化方法および組合せ最適化プログラム | |
JP2020173661A (ja) | 最適化装置及び最適化装置の制御方法 | |
JP7201911B2 (ja) | 最適化装置および最適化装置の制御方法 | |
JP7137064B2 (ja) | 最適化装置及び最適化装置の制御方法 | |
JP7417078B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7181454B2 (ja) | 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム | |
JP7004906B2 (ja) | 最適化装置及び最適化装置の制御方法 | |
US20210334332A1 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program | |
US11886780B2 (en) | Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program | |
JP7206492B2 (ja) | 最適化装置及び最適化装置の制御方法 | |
CN105528303A (zh) | 用于管理存储系统的方法和装置 | |
EP4235518A1 (en) | Data processing program, data processing device, and data processing method | |
JP2024077351A (ja) | データ処理装置、プログラム及びデータ処理方法 | |
JP2003162706A (ja) | 遺伝的アルゴリズムを用いた最適化装置およびその方法 | |
Whiteson et al. | Sample-efficient evolutionary function approximation for reinforcement learning | |
JP2023056471A (ja) | プログラム、データ処理装置及びデータ処理方法 | |
JP2023079015A (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN116302905A (zh) | 测试用例的生成方法、装置和计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201105 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211129 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6997404 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |