(57)【要約】  演算を高速化すること。  交換制御部（１１）は、焼鈍部（１ａ０，…，１ａｎ）の各々を識別するレプリカ番号を、各焼鈍部（１ａ０，…，１ａｎ）の各々に割り当てられている温度の低い順または高い順に配列した対応情報（１２）を保持する。交換制御部（１１）は、対応情報（１２）に基づいて、焼鈍部（１ａ０，…，１ａｎ）の各々による処理を温度の順に開始させる。交換制御部（１１）は、２つの温度に対応する２つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、当該２つの焼鈍部に割り当てられている温度の交換を行うか否かを決定する。交換制御部（１１）は、交換を行う場合、対応情報（１２）を更新し、更新後の対応情報に基づいて、温度を表す温度情報を当該２つの焼鈍部に供給する。
2020054046.tif 000002
【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部と、
前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持し、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、２つの温度に対応する２つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記２つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定し、交換を行う場合、前記対応情報を更新し、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記２つの焼鈍部に供給する交換制御部と、
を有する最適化装置。
【請求項２】
前記交換制御部は、
前記複数の焼鈍部の各々による今回の前記処理に対し、前記２つの温度の複数の第１のペアの各々に対応する焼鈍部のペアで前記温度の交換を行うか否かを決定し、
前記複数の焼鈍部の各々による次回の前記処理に対し、前記２つの温度の複数のペアであって、前記複数の第１のペアとは異なる複数の第２のペアの各々に対応する焼鈍部のペアで前記温度の交換を行うか否かを決定する、
請求項１記載の最適化装置。
【請求項３】
前記交換制御部は、前記２つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定した後、前記他の焼鈍部による前記処理の完了を待たずに、前記対応情報に基づいて、前記２つの焼鈍部による前記処理を開始させる、
請求項１記載の最適化装置。
【請求項４】
前記交換制御部は、前記温度の交換を行う場合、前記２つの温度に対応付けられた前記２つの焼鈍部の各々の識別情報を入れ替えることで、前記対応情報を更新する、
請求項１記載の最適化装置。
【請求項５】
前記交換制御部は、前記温度の交換を行う場合、前記対応情報において隣接する２つの温度に対応付けられた前記２つの焼鈍部の各々の識別情報を入れ替えることで、前記対応情報を更新する、
請求項４記載の最適化装置。
【請求項６】
前記対応情報における前記温度は、前記温度を識別する温度識別情報で表され、
前記交換制御部は、前記温度と前記温度識別情報との対応関係を示す他の対応情報を保持し、前記他の対応情報に基づいて、前記複数の焼鈍部の各々の識別情報に対応する前記温度識別情報を、前記温度に変換する、
請求項１記載の最適化装置。
【請求項７】
前記最適化装置はさらに、
前記交換制御部が有する保持部が保持する、前記温度と、前記温度を識別する温度識別情報とを入力する入力部を有する、
請求項１乃至６のいずれか一項に記載の最適化装置。
【請求項８】
前記最適化装置はさらに、
前記複数の焼鈍部による前記処理後のエネルギーの結果データが、所定のエネルギー閾値よりも大きい場合は、品質が十分でない旨を通知する通知部を有する、
請求項１乃至７のいずれか一項に記載の最適化装置。
【請求項９】
エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部、
を有する最適化装置の制御方法において、
交換制御部が、前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持し、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、２つの温度に対応する２つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記２つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定し、交換を行う場合、前記対応情報を更新し、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記２つの焼鈍部に供給する、
最適化装置の制御方法。
【請求項１０】
エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、前記複数の状態変数の各々の値の変化に伴う前記エネルギーの変化と温度とに基づいて、前記複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、前記温度に対する前記複数の状態変数の各々の値を決定する処理を行う複数の焼鈍部、
を有する最適化装置の制御プログラムにおいて、
交換制御部に、前記複数の焼鈍部を識別する複数の識別情報を前記複数の焼鈍部の各々に割り当てられている前記温度の低い順または高い順に配列した対応情報を保持させ、前記対応情報に基づいて、前記温度に対応付けられた各焼鈍部による前記処理を前記温度の順に開始させ、２つの温度に対応する２つの焼鈍部による前記処理が完了すると、他の焼鈍部による前記処理の完了を待たずに、前記２つの焼鈍部に割り当てられている前記温度の交換を行うか否かを決定させ、交換を行わせる場合、前記対応情報を更新させ、更新後の前記対応情報に基づいて、前記温度を表す温度情報を前記２つの焼鈍部に供給させる、
最適化装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。【０００３】
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット（スピンビット）のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の値（エネルギーと言う）の最小値が得られる各ビットの値の組合せを、解として求める。【０００４】
例えば、拡張アンサンブル法と呼ばれる手法を用いて、確率的探索を行う情報処理装置が考えられている。提案の情報処理装置は、異なる温度が設定された複数のネットワーク（アンサンブルと呼ばれる）で確率的探索を行う。提案の情報処理装置は、温度が隣接して設定されているアンサンブル間で各アンサンブルのエネルギーの差分に応じ、各アンサンブルのノードの状態を交換する。これにより、局所解に陥ることが防止され、より高速に最適値に収束させる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１８−５５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記提案の情報処理装置は、全てのアンサンブルで確率的探索の処理を行った後に、アンサンブル間でノード状態を交換する。ノード状態を交換している間は、各アンサンブルによる確率的探索を行えずに待機することになり、演算が遅延し得る。【０００７】
１つの側面では、本発明は、演算を高速化する最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、最適化装置が提供される。最適化装置は、複数の焼鈍部と交換制御部とを有する。複数の焼鈍部の各々は、エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、温度に対する複数の状態変数の各々の値を決定する処理を行う。交換制御部は、複数の焼鈍部を識別する複数の識別情報を複数の焼鈍部の各々に割り当てられている温度の低い順または高い順に配列した対応情報を保持し、対応情報に基づいて、温度に対応付けられた各焼鈍部による処理を温度の順に開始させ、２つの温度に対応する２つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、２つの焼鈍部に割り当てられている温度の交換を行うか否かを決定し、交換を行う場合、対応情報を更新し、更新後の対応情報に基づいて、温度を表す温度情報を２つの焼鈍部に供給する。【０００９】
また、１つの態様では、最適化装置の制御方法が提供される。
また、１つの態様では、最適化装置の制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、演算を高速化できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の最適化装置を示す図である。
【図２】最適化装置の処理例を示すフローチャートである。
【図３】第２の実施の形態の情報処理システムの例を示す図である。
【図４】情報処理装置のハードウェア例を示すブロック図である。
【図５】最適化装置のハードウェア例を示すブロック図である。
【図６】焼鈍部のハードウェア例を示すブロック図である。
【図７】第１対応情報の例を示す図である。
【図８】第２対応情報の例を示す図である。
【図９】アニール処理制御の例を示すフローチャートである。
【図１０】アニール処理およびレプリカ交換の実行例を示すフローチャートである。
【図１１】温度の交換例を示す図である。
【図１２】パイプライン処理の例を示す図である。
【図１３】パイプライン処理の他の例を示す図である。
【図１４】比較例を示す図である。
【図１５】最適解を得るためのシステムの例を示す図である。
【図１６】最適解を得るための実行例を示すフローチャートである。
【図１７】温度調整の実行例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１３】
図１は、第１の実施の形態の最適化装置を示す図である。
最適化装置１０は、最適化問題に対する解の探索を行う。最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍の中で最小値をとる局所解と呼ばれる状態が非常に多数存在することである。
【００１４】
離散最適化問題を解く効率の良い一般解法は存在しない。そこで、問題に固有な性質を利用した近似解法や、問題の性質にあまり頼らないメタヒューリステックと呼ばれる方法が用いられる。
【００１５】
以下に説明する内容は、後者のうちマルコフ連鎖モンテカルロ法を用いた解法に関するものであり、特に交換モンテカルロ法、またはレプリカ交換法と呼ばれる広い意味での疑似焼き鈍し法に関するものである。
【００１６】
疑似焼き鈍し法は、乱数を用いて確率的に状態（変数ベクトルの値）を変化させることで最適解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【００１７】
疑似焼き鈍し法においては、状態遷移の受け入れ（許容）確率を、その遷移に伴うエネルギー変化と温度とを用いて次の式（１），（２）のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
【００１８】
【数１】
2020054046.tif 000003
【００１９】
【数２】
2020054046.tif 000004
【００２０】
ここでＴは温度を表すパラメータであり、その初期値は問題に応じて十分大きくとり、十分ゆっくり下げていくことが望ましい。
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られる。しかし、現実には有限の反復回数で解を得る必要があるため、必ずしも最適解を求められるとは限らない。また、上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって、実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
【００２１】
実際の擬似焼き鈍し法では、初期状態から始めて、温度を下げながら上記反復が繰り返され、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたりしたとき、動作が終了する。出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度が０にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布をもっており、必ずしも最適値や良い解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００２２】
このように、疑似焼き鈍し法は、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的な熱分布のエネルギー範囲が広くなることから良い解の占有確率が上がらない。逆に速く下げ過ぎると、局所解を脱出する前に温度が下がり、悪い解に捕まったままになってしまうため、良い解が得られる確率が下がってしまう。
【００２３】
レプリカ交換法は複数の温度を用いたモンテカルロ探索（以下、確率的探索という）を同時に行い、ある反復回数ごとに、各温度に対する状態のエネルギーを比較し、適切な確率で２つの温度に対する状態を交換するという操作を行う方法である。
【００２４】
最適化装置１０は、例えば、１チップの半導体集積回路であり、ＦＰＧＡ（Field Programmable Gate Array）などを用いて実現される。最適化装置１０は、複数の焼鈍部（図１の焼鈍部１ａ０，１ａ１，…，１ａｉ，…，１ａｎ）と交換制御部１１とを有する。焼鈍部１ａ０，…，１ａｎの各々は、レプリカと呼ばれることがある。ここで、ｎは、例えば１以上の奇数である。ｎ＋１は、最適化装置１０が有する焼鈍部の数を示す。ｉは、０以上ｎ以下の整数である。交換制御部１１は、焼鈍部１ａ０，…，１ａｎの各々に温度情報（以下では逆温度βｉ（Ｔの逆数））を与える。
【００２５】
焼鈍部１ａｉは、エネルギーを表す評価関数に含まれる複数の状態変数の何れかの値の変化に対し、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定する（確率的探索）。焼鈍部１ａｉは、確率的探索を所定回数反復することで、温度に対する複数の状態変数の各々の値を決定する処理を行う。
【００２６】
具体的には、焼鈍部１ａｉは、評価関数に含まれる複数の状態変数の値を保持する。焼鈍部１ａｉは、状態遷移の可否を示すフラグＦと、そのフラグＦが示す状態変数の識別番号（インデックス）Ｎに基づいて、複数の状態変数の値（上記変数ベクトルの値）である状態Ｓｉを更新する。
【００２７】
焼鈍部１ａｉは、状態変数の変化（状態遷移）に伴うエネルギー変化を計算する。例えば、評価関数が２つの状態変数間の結合で表されるイジングモデルで表され、かつ、一度に１つの状態変数の遷移のみを許す場合を考える。この場合、焼鈍部１ａｉは、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、識別番号Ｎと、フラグＦとに基づいて、複数の状態変数のそれぞれの変化（状態遷移）に伴うエネルギー変化を計算する。エネルギー変化ΔＥｉｋは、ｋ番目の状態変数の変化に伴うエネルギー変化を示す。なお、計算したい最適化問題に応じた結合係数の値は、最適化装置１０が備えるメモリまたはレジスタなどに予め記憶されている。
【００２８】
評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。評価関数によるエネルギー変化の計算や状態遷移可否を判定する焼鈍部１ａｉの機能は、例えば、積和演算回路などの論理回路を用いて実現される。
【００２９】
焼鈍部１ａｉは、エネルギー変化ΔＥｉｋと交換制御部１１により割り当てられた逆温度βｉを用いて、ｋ番目の状態変数の状態遷移の受け入れ確率を以下の式（３）により決定することで、確率的探索を行う。
【００３０】
【数３】
2020054046.tif 000005
【００３１】
なお、式（３）において、関数ｆは式（１）と同じものであり、例えば式（２）のメトロポリス法のものが用いられる。焼鈍部１ａｉは、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグＦと、フラグＦが示す状態遷移の番号（変化させる状態変数の識別番号）Ｎを用いてＮ番目の状態変数を遷移させ、状態Ｓｉを更新する。また、焼鈍部１ａｉは、エネルギー変化ΔＥｉＮに基づいて、エネルギーＥｉを更新して出力する。確率的探索の１回分の処理は、ｋ番目の状態変数の状態遷移の受け入れ確率の決定、受け入れ確率に基づく状態Ｓｉの更新、および、エネルギーＥｉの更新という一巡の処理に相当する。
【００３２】
交換制御部１１は、確率的探索の一定の反復回数ごとに各焼鈍部におけるエネルギーＥを観測する。そして、交換制御部１１は、焼鈍部１ａ０，…，１ａｎのうちの２つにおけるエネルギーＥと逆温度βを用い、以下の式（４）で表される交換確率ｐｉｊに基づいて２つの焼鈍部に供給される温度（あるいは、２つの焼鈍部における各状態変数の値）を交換する。
【００３３】
【数４】
2020054046.tif 000006
【００３４】
なお、式（４）では、βｉを焼鈍部１ａｉに与えられた逆温度、βｊを図示しないｊ番目の焼鈍部に与えられた逆温度、Ｅｉを焼鈍部１ａｉにおけるエネルギー、Ｅｊをｊ番目の焼鈍部におけるエネルギーとしている。また、式（４）において、関数ｆは式（１）と同じものであり、例えば式（２）のメトロポリス法のものが用いられる。
【００３５】
このような交換を行ってもそれぞれの温度の状態の確率分布はその温度に対するボルツマン分布に収束する。そして、この分布に収束するのに必要とされる緩和時間は、交換を行わない時より著しく短縮することができる。
【００３６】
なお、交換が行われる２つの焼鈍部は、交換確率が小さくなりすぎないように、供給される温度が比較的近いもの（例えば、隣接温度が供給されるもの）が選択される。
交換制御部１１は、記憶部１１ａおよび処理回路１１ｂを有する。
【００３７】
記憶部１１ａは、例えばレジスタなどの記憶回路である。記憶部１１ａは、ＲＡＭ（Random Access Memory）などの揮発性メモリ、フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）などの不揮発性メモリでもよい。
【００３８】
記憶部１１ａは、対応情報１２を保持する。対応情報１２は、焼鈍部１ａ０，…，１ａｎの各々に割り当てられている温度と、焼鈍部１ａ０，…，１ａｎの各々を識別する識別情報（レプリカ番号と言う）との対応関係を示し、温度の低い順または高い順に、レプリカ番号を配列したものである。
【００３９】
図１の例では、温度Ｔ０，Ｔ１，…，Ｔｎは、温度Ｔ０，Ｔ１，…，Ｔｎの順に高くなっていく。したがって、図１の例では、対応情報１２は、レプリカ番号を温度の低い順に配列したものであると言える。
【００４０】
なお、温度は、温度そのものではなく、温度を識別する情報で表されてもよい。その場合、記憶部１１ａは、温度を識別する情報と、温度との対応関係を示す他の対応情報を保持する。
【００４１】
処理回路１１ｂは、対応情報１２に基づいて、温度に対応付けられた焼鈍部１ａ０，…，１ａｎの各々による処理を温度の順に開始させる。処理回路１１ｂは、隣接する２つの温度に対応する２つの焼鈍部による処理が完了すると、他の焼鈍部による処理の完了を待たずに、２つの焼鈍部に割り当てられている温度の交換を行うか否かを決定する。処理回路１１ｂは、交換を行う場合、対応情報１２を更新し、更新後の対応情報１２に基づいて、温度を表す温度情報を２つの焼鈍部に供給する。こうして、処理回路１１ｂは、焼鈍部１ａ０，…，１ａｎの各々による各状態変数の決定および２つの焼鈍部の間のレプリカ交換のパイプライン処理を制御する。
【００４２】
次に、処理回路１１ｂによる処理を例示する。以下では、ある反復回数での確率的探索により、割り当てられた温度に対する各状態変数の値を決定する処理を「探索処理」と言うことがある。例えば、各焼鈍部は、自身に割り当てられた温度を用いて、各々が同じ反復回数の上限値まで確率的探索を行うことで探索処理を実行する。焼鈍部１ａ０，…，１ａｎの各々による１つの探索処理の所要時間は、ほぼ同じ時間となる。ただし、各焼鈍部による反復回数の上限値は温度に応じて異なってもよい。
【００４３】
例えば、処理回路１１ｂは、対応情報１２に基づいて、温度の低い順に、各焼鈍部のレプリカ番号を読み出し、読み出したレプリカ番号に対応する焼鈍部による探索処理を、順次、開始させる。処理回路１１ｂは、レプリカ交換の対象となる隣接温度が割り当てられた２つの焼鈍部による探索処理を、同じタイミングで開始させてもよい。
【００４４】
流れ図Ｄ１は、焼鈍部１ａ０，…，１ａｎに関する探索処理およびレプリカ交換の流れの例を示す。流れ図Ｄ１において、左側から右側へ向かう方向が時間の正方向である。
一例では、対応情報１２において、温度Ｔ０にレプリカ番号ｉが対応付けられている。処理回路１１ｂは、まず、レプリカ番号ｉに対応する焼鈍部１ａｉによる探索処理を開始させる。焼鈍部１ａｉは、探索処理Ａ０を開始する。
【００４５】
また、対応情報１２において、温度Ｔ１にレプリカ番号０が対応付けられている。したがって、処理回路１１ｂは、次に、レプリカ番号０に対応する焼鈍部１ａ０による探索処理Ａ１を開始させる。焼鈍部１ａ０は、探索処理Ａ１を開始する。
【００４６】
こうして、処理回路１１ｂは、温度の低い順（または高い順に）、各焼鈍部による探索処理（探索処理Ａ０，Ａ１，Ａ２，Ａ３，…，Ａｎ−１，Ａｎ）を、順次、開始させる。ここで、温度Ｔ０，…，Ｔｎに対する一巡の探索処理（例えば、探索処理Ａ０，…，Ａｎ）を１つの「処理グループ」と称する。各焼鈍部による探索処理は、並列に実行される。前述のように、処理回路１１ｂは、レプリカ交換の対象となる隣接する温度に対応する２つの探索処理（例えば、探索処理Ａ０，Ａ１のペア）を同時に開始させてもよい。
【００４７】
各焼鈍部による探索処理は、開始された順に完了する。上記の例では、探索処理Ａ０，Ａ１，…の順に、完了していく。処理回路１１ｂは、探索処理Ａ０，Ａ１による処理が完了すると、他の焼鈍部による探索処理の完了を待たずに、探索処理Ａ０，Ａ１を各々実行した焼鈍部１ａｉ，１ａ０に割り当てられている温度の交換を行うか否かを、式（４）により決定する。処理回路１１ｂは、交換を行う場合、対応情報１２におけるレプリカ番号ｉ，０を交換することで、対応情報１２を更新する。例えば、交換により、温度Ｔ０にレプリカ番号０が対応付けられ、温度Ｔ１にレプリカ番号ｉが対応付けられる。更に、処理回路１１ｂは、焼鈍部１ａ０に交換後の温度Ｔ０を示す温度情報を供給し、焼鈍部１ａｉに交換後の温度Ｔ１を示す温度情報を供給する。そして、処理回路１１ｂは、交換後の温度に応じた順で、焼鈍部１ａ０，１ａｉによる探索処理Ｂ０，Ｂ１を開始させる。処理回路１１ｂは、他の焼鈍部による探索処理の完了を待たずに、焼鈍部１ａ０，１ａｉによる探索処理Ｂ０，Ｂ１を開始させてもよい。
【００４８】
処理回路１１ｂは、隣接する２つの焼鈍部による探索処理が完了するたびに、上記温度交換の決定および決定に応じた温度交換（すなわち、レプリカ交換）を行い、交換後の温度に応じた順に、当該２つの焼鈍部による探索処理を開始させる。こうして、各焼鈍部は、探索処理Ａ０，…，Ａｎに引き続き、次の処理グループの探索処理Ｂ０，Ｂ１，Ｂ２，Ｂ３，…，Ｂｎ−１，Ｂｎを実行する。
【００４９】
処理回路１１ｂは、次の処理グループに対しては、隣接する温度のペアを、前回の処理グループとは異なるペアになるように変更して、２つの焼鈍部のレプリカ交換を行う。例えば、処理回路１１ｂは、前回の処理グループでは、温度（Ｔ０，Ｔ１），（Ｔ２，Ｔ３），…，（Ｔｎ−１，Ｔｎ）の各ペア（偶数モードと呼ぶ）に対応する２つの焼鈍部でレプリカ交換を行ったとする。この場合、処理回路１１ｂは、次の処理グループでは、温度（Ｔ１，Ｔ２），（Ｔ３，Ｔ４），…，（Ｔｎ−２，Ｔｎ−１）の各ペア（奇数モードと呼ぶ）に対応する２つの焼鈍部でレプリカ交換を行う。奇数モードでは、温度Ｔ０，Ｔｎに対応する各焼鈍部は、レプリカ交換の非対象となる。
【００５０】
次に、最適化装置１０による処理手順を説明する。
図２は、最適化装置の処理例を示すフローチャートである。
以下では、主に偶数モードについて説明するが、奇数モードの場合、処理回路１１ｂは、温度Ｔ０に対応する焼鈍部による探索処理を開始させた後に、下記ステップＳ１からの手順を実行する。奇数モードの場合、処理回路１１ｂは、温度Ｔｎ−１に対応する焼鈍部による探索処理の開始後に、温度Ｔｎに対応する焼鈍部による探索処理を開始させる。
【００５１】
最適化装置１０は、一連の手順ＰＬ０，ＰＬ１，…，ＰＬｍをパイプライン処理する。以下では、手順ＰＬ０を主に説明するが、手順ＰＬ１，…，ＰＬｍも対象となる温度および当該温度に対応する焼鈍部が異なる以外は同様の手順となる。ここで、前述のように、一例ではｎは奇数である。このとき、偶数モードではｍ＝（ｎ＋１）／２であり、奇数モードではｍ＝（（ｎ＋１）／２）−１である。
【００５２】
（Ｓ１）処理回路１１ｂは、対応情報１２に基づいて隣接する温度のペアを決定する。例えば、手順ＰＬ０において、偶数モードでは、隣接する温度Ｔ０，Ｔ１のペアが決定される。奇数モードでは、温度Ｔ１，Ｔ２のペアが決定される。
【００５３】
（Ｓ２）処理回路１１ｂは、対応情報１２に基づいて隣接する温度のペアに対応するレプリカ番号のペアを決定する。
（Ｓ３）処理回路１１ｂは、決定したレプリカ番号のペア毎に、探索処理の開始を指示する。すなわち、処理回路１１ｂは、決定したレプリカ番号のペアに対応する焼鈍部（レプリカ）のペアに対して、当該焼鈍部に割り当てられた温度での探索処理の開始を指示する。
【００５４】
（Ｓ４）探索処理の開始を指示された焼鈍部のペアは、探索処理を実行する。
（Ｓ５）焼鈍部のペアは、ステップＳ４の探索処理が完了すると、各々が保持するエネルギーを交換制御部１１（具体的には、交換制御部１１の処理回路１１ｂ）に送信する。
【００５５】
（Ｓ６）処理回路１１ｂは、ステップＳ５で送信された各焼鈍部のエネルギーの差および温度差による式（４）の交換確率に基づいて、該当のレプリカ番号のペアでレプリカ交換（レプリカ間における温度交換の決定および決定に応じた温度交換）を行う。
【００５６】
最適化装置１０は、手順ＰＬ０，ＰＬ１，…，ＰＬｍの各々を１つのパイプラインとし、例えば、手順ＰＬ０，ＰＬ１，…，ＰＬｍを順次並列に実行することで、パイプライン処理を実現する。
【００５７】
これにより、流れ図Ｄ１で例示したように、探索処理とレプリカ交換とを合わせてパイプライン処理できるようになる。このため、全レプリカの探索処理の完了を待たずに、探索処理が完了したレプリカからレプリカ交換を行える。レプリカ交換によるレイテンシはパイプライン内に隠蔽される。よって、最適化装置１０による演算を高速化できる。
【００５８】
また、最適化装置１０は、処理グループ毎に偶数モードと奇数モードとを交互に繰り返す。これにより、全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
【００５９】
更に、最適化装置１０は、今回の処理グループ（探索処理Ａ０，…，Ａｎ）において全レプリカの探索処理およびレプリカ交換の完了を待たずに、次回の処理グループ（探索処理Ｂ０，…，Ｂｎ）に属する探索処理を実行開始してもよい。これにより、最適化装置１０による演算を一層高速化できる。
【００６０】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図３は、第２の実施の形態の情報処理システムの例を示す図である。
【００６１】
第２の実施の形態の情報処理システムは、情報処理装置２０とクライアント３０とを有する。情報処理装置２０およびクライアント３０は、ネットワーク４０に接続されている。ネットワーク４０は、例えば、ＬＡＮ（Local Area Network）でもよいし、ＷＡＮ（Wide Area Network）やインターネットなどでもよい。
【００６２】
情報処理装置２０は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント３０は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置２０への入力に用いられる。
【００６３】
図４は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置２０は、ＣＰＵ（Central Processing Unit）２１、ＤＲＡＭ（Dynamic Random Access Memory）２２、記憶装置２３、ＮＩＣ（Network Interface Card）２４、最適化装置２５および媒体リーダ２８を有する。ＣＰＵ２１、ＤＲＡＭ２２、記憶装置２３、ＮＩＣ２４、最適化装置２５および媒体リーダ２８は、情報処理装置２０のバス２９に接続されている。バス２９は、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）バスである。
【００６４】
ＣＰＵ２１は、ＤＲＡＭ２２に格納されたプログラムの命令を実行するプロセッサである。ＣＰＵ２１は、記憶装置２３に記憶されたプログラムやデータの少なくとも一部をＤＲＡＭ２２にロードし、プログラムを実行する。ＣＰＵ２１は、当該プログラムを実行することで発揮される機能により、最適化装置２５に対する設定や動作の制御を行う。
【００６５】
ＤＲＡＭ２２は、情報処理装置２０の主記憶装置であり、ＣＰＵ２１により実行されるプログラムや最適化装置２５に設定されるデータなどを一時的に記憶する。
記憶装置２３は、情報処理装置２０の補助記憶装置であり、ＣＰＵ２１により実行されるプログラムや最適化装置２５に設定されるデータなどを記憶する。記憶装置２３は、例えば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などである。
【００６６】
ＮＩＣ２４は、ネットワーク４０に接続され、ネットワーク４０を介してクライアント３０と通信する通信インタフェースである。ＮＩＣ２４は、例えば、ネットワーク４０に属するスイッチやルータなどの通信装置とケーブルで接続される。
【００６７】
最適化装置２５は、ＣＰＵ２１の制御により、イジングモデルの基底状態を探索する。最適化装置２５は、例えば、１以上のチップの半導体集積回路であり、ＦＰＧＡなどを用いて実現される。最適化装置２５は、第１の実施の形態の最適化装置１０の一例である。
【００６８】
媒体リーダ２８は、記録媒体４１に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体４１として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００６９】
媒体リーダ２８は、例えば、記録媒体４１から読み取ったプログラムやデータを、ＤＲＡＭ２２や記憶装置２３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ２１によって実行される。なお、記録媒体４１は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体４１や記憶装置２３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００７０】
なお、クライアント３０はＣＰＵ、主記憶装置、補助記憶装置、ＮＩＣ、マウスやキーボードなどの入力デバイスおよびディスプレイを有する。
図５は、最適化装置のハードウェア例を示すブロック図である。
【００７１】
最適化装置２５は、焼鈍部５０ａ０，５０ａ１，…，５０ａｉ，…，５０ａｎと交換制御部５０とを有する。焼鈍部５０ａ０，…，５０ａｎの各々は、レプリカと呼ばれることがある。ｎは、例えば１以上の奇数である。ｎ＋１は、最適化装置２５が有する焼鈍部の数を示す。ｉは、０以上ｎ以下の整数である。
【００７２】
焼鈍部５０ａ０，…，５０ａｎの各々は、イジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数を保持する。１つの状態変数は、例えば、０または１の２値を取るビット（スピンビット）である。複数の状態変数は、例えば、ビット列（スピンビット列）で表される。焼鈍部５０ａ０，…，５０ａｎの各々は、複数の状態変数の何れかの値を変化させることで、イジングモデルの状態を遷移させる。
【００７３】
焼鈍部５０ａ０，…，５０ａｎの各々は、複数の状態変数の何れかの値が変化する場合、複数の状態変数の各々の値の変化に伴うエネルギーの変化と温度とに基づいて、複数の状態変数の何れの値の変化を受け入れるかを確率的に決定し、温度に対する複数の状態変数の各々の値を決定する処理を行う。焼鈍部５０ａ０，…，５０ａｎは、前述の確率的探索をある反復回数行うことで、温度に対する複数の状態変数の各々の値を決定する。以下では、ある反復回数で確率的探索を行うことで、割り当てられた温度に対する各状態変数の値を決定する処理を「アニール処理」と言うことがある。アニール処理は、第１の実施の形態の探索処理に相当する。
【００７４】
交換制御部５０は、焼鈍部５０ａ０，…，５０ａｎの各々に温度情報（例えば、逆温度βｉ（温度Ｔの逆数））を与える。交換制御部５０は、第１対応情報保持部５１、第２対応情報保持部５２、交換演算部５３、焼鈍順序決定部５４およびレプリカペア決定部５５を有する。第１対応情報保持部５１および第２対応情報保持部５２は、例えばレジスタなどの記憶回路である。第１対応情報保持部５１および第２対応情報保持部５２は、ＲＡＭなどの揮発性メモリ、フラッシュメモリやＥＥＰＲＯＭなどの不揮発性メモリでもよい。
【００７５】
第１対応情報保持部５１は、第１対応情報を保持する。第１対応情報は、焼鈍部５０ａ０，…，５０ａｎの各々に割り当てられている温度の識別情報（温度識別情報）と、焼鈍部５０ａ０，…，５０ａｎの各々の識別情報との対応関係を示す。例えば、温度識別情報は温度番号である。例えば、焼鈍部５０ａ０，…，５０ａｎの各々の識別情報はレプリカ番号である。第１対応情報は、温度の低い順または高い順に、レプリカ番号を配列した情報である。
【００７６】
第２対応情報保持部５２は、第２対応情報を保持する。第２対応情報は、温度番号と温度との対応関係を示す情報である。例えば、温度番号は、温度の低い順に、０，１，２，…のように昇順に、各温度に対応付けられている。
【００７７】
交換演算部５３は、焼鈍部５０ａ０，…，５０ａｎからエネルギーを受け付け、隣接する温度が割り当てられた２つの焼鈍部に関するレプリカ交換を行う。交換演算部５３は、隣接する温度が割り当てられた２つの焼鈍部によるアニール処理後のエネルギーを受け付けるたびに、当該２つの焼鈍部に関するレプリカ交換を行う。
【００７８】
交換演算部５３は、レプリカ交換による温度の交換確率を、式（４）により計算する。式（４）の関数ｆには、式（２）のメトロポリス法のものが用いられる。例えば、交換演算部５３は、式（４）で計算される交換確率と、［０，１）の区間で発生された一様乱数との比較に応じて、隣接する温度が割り当てられた２つの焼鈍部における温度の交換を行うか否かを決定する。
【００７９】
交換演算部５３は、温度の交換に応じて、第１対応情報保持部５１に記憶される第１対応情報を更新する。交換演算部５３は、温度の交換に応じて、第２対応情報保持部５２に記憶される第２対応情報を参照して、温度交換対象の２つの焼鈍部に、交換後の温度を示す温度情報を供給する。交換演算部５３は、当該２つの焼鈍部に対するレプリカ交換の処理が完了すると、焼鈍順序決定部５４に当該処理の完了を通知する。
【００８０】
焼鈍順序決定部５４は、焼鈍部５０ａ０，…，５０ａｎの各々によるアニール処理の開始順序を、各焼鈍部に割り当てられた温度（温度番号）の順に決定する。焼鈍順序決定部５４は、隣接温度番号ペア決定部５４ａおよびアニール処理指示部５４ｂを有する。
【００８１】
隣接温度番号ペア決定部５４ａは、レプリカペア決定部５５に隣接温度保証情報を出力する。隣接温度保証情報は、隣接する温度番号の組を示す情報である。例えば、隣接温度番号ペア決定部５４ａは、初回に偶数モードとし、次に奇数モードとし、以降、偶数モード、奇数モードを順番に切り替える。偶数モードの場合、隣接する温度番号の組は、（０，１）、（２，３）、（４，５）、…、（ｎ−１，ｎ）である。奇数モードの場合、隣接する温度番号の組は、（１，２）、（３，４）、（５，６）、…、（ｎ−２，ｎ−１）である。隣接温度番号ペア決定部５４ａは、今回のモードに応じた隣接温度保証情報により、隣接する温度番号の組を、順番に、レプリカペア決定部５５に供給する。
【００８２】
アニール処理指示部５４ｂは、次にアニール処理を開始すべきレプリカ番号の通知を、レプリカペア決定部５５から受け、当該レプリカ番号に対応する焼鈍部に対してアニール処理の開始を指示する。
【００８３】
レプリカペア決定部５５は、隣接温度番号ペア決定部５４ａから隣接温度保証情報を受け付ける。レプリカペア決定部５５は、第１対応情報保持部５１に記憶された第１対応情報を参照して、隣接温度保証情報に対応するレプリカ番号のペアを決定する。レプリカペア決定部５５は、決定したペアに属するレプリカ番号を、アニール処理指示部５４ｂに通知する。
【００８４】
次に、焼鈍部５０ａ０，…，５０ａｎの例を説明する。焼鈍部５０ａｉを主に説明するが、他の焼鈍部も同様の構成である。
図６は、焼鈍部のハードウェア例を示すブロック図である。
【００８５】
焼鈍部５０ａｉは、状態保持部６１、評価関数計算部６２および遷移制御部６３を有する。
状態保持部６１は、評価関数に含まれる複数の状態変数の値を保持する。状態保持部６１は、状態遷移の可否を示すフラグＦと、フラグＦが示す状態変数の識別番号（インデックス）Ｎに基づいて、複数の状態変数の値である状態Ｓｉを更新する。
【００８６】
評価関数計算部６２は、状態変数の変化（状態遷移）に伴うエネルギー変化を計算する。例えば、評価関数が２つの状態変数間の結合で表されるイジングモデルで表され、かつ、一度に１つの状態変数の遷移のみを許す場合を考える。この場合、評価関数計算部６２は、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、識別番号Ｎと、フラグＦとに基づいて、複数の状態変数のそれぞれの変化（状態遷移）に伴うエネルギー変化ΔＥｉｋを計算する。エネルギー変化ΔＥｉｋは、ｋ番目の状態変数の変化に伴うエネルギー変化を示す。計算したい最適化問題に応じた結合係数の値は、最適化装置２５が備えるメモリまたはレジスタなどに予め記憶される。評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。評価関数計算部６２は、例えば、積和演算回路などの論理回路を用いて実現される。
【００８７】
遷移制御部６３は、通常の擬似焼き鈍し法と同様に、エネルギー変化ΔＥｉｋと交換制御部５０により割り当てられた逆温度βｉを用いて、ｋ番目の状態変数の状態遷移の受け入れ確率を式（３）により決定することで、確率的探索を行う。ここで、式（３）における関数ｆは、式（１）と同じものであり、例えば、式（２）のメトロポリス法のものが用いられる。遷移制御部６３は、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグＦと、フラグＦに対応する状態変数（変化させる状態変数）を示す識別番号Ｎを出力する。また、遷移制御部６３は、エネルギー変化ΔＥｉＮに基づいて、エネルギーＥｉを更新して交換制御部５０に出力する。
【００８８】
図７は、第１対応情報の例を示す図である。
第１対応情報７１は、第１対応情報保持部５１に保持される。第１対応情報７１では、焼鈍部５０ａ０，…，５０ａｎの数、すなわちレプリカ数が、１６である場合を例示している。
【００８９】
第１対応情報７１では、０から１５までの温度番号の順に、各温度番号に対応する、０から１５までのレプリカ番号が配列されている。一例として、温度の低い方から順に、温度番号０，１，２，…，１５が割り当てられる。ただし、温度の高いほうから順に、温度番号０，１，２，…，１５が割り当てられてもよい。
【００９０】
図８は、第２対応情報の例を示す図である。
第２対応情報７２は、第２対応情報保持部５２に保持される。第２対応情報７２でも、焼鈍部５０ａ０，…，５０ａｎの数、すなわちレプリカ数が、１６である場合を例示している。
【００９１】
第２対応情報７２では、０から１５までの温度番号の順に、各温度番号に対応する、Ｔ０からＴ１５までの温度が配列されている。例えば、温度Ｔ０＜Ｔ１＜Ｔ２＜…＜Ｔ１４＜Ｔ１５である。
【００９２】
このように、交換制御部５０は、温度と温度識別情報（温度番号）との対応関係を示す第２対応情報７２を保持する。交換制御部５０は、第２対応情報７２に基づいて、複数の焼鈍部の各々の識別情報（レプリカ番号）に対応する温度識別情報（温度番号）を、温度に変換する。
【００９３】
次に、最適化装置２５によるアニール処理制御の手順を説明する。最適化装置２５には、アニール処理における確率的探索の反復回数の上限値（後述される閾値）が予め設定される。例えば、反復回数の上限値は、焼鈍部５０ａ０，…，５０ａｎの各々で同じ値である。
【００９４】
図９は、アニール処理制御の例を示すフローチャートである。
（Ｓ１０）焼鈍部５０ａ０，…，５０ａｎの各々は、確率的探索の反復回数を０に初期化する。
【００９５】
（Ｓ１１）隣接温度番号ペア決定部５４ａは、今回のモードが偶数モードか奇数モードかに応じて、温度番号を初期化する。今回のモードが偶数モードの場合、隣接温度番号ペア決定部５４ａは、温度番号Ｋを０に初期化する。今回のモードが奇数モードの場合、隣接温度番号ペア決定部５４ａは、温度番号Ｋを１に初期化する。例えば、隣接温度番号ペア決定部５４ａは、温度番号Ｋをカウントするカウンタを有している。
【００９６】
なお、隣接温度番号ペア決定部５４ａは、ステップＳ１０の実行後、ステップＳ１１を実行する場合に、偶数モードと奇数モードとを切り替える。隣接温度番号ペア決定部５４ａは、前回が奇数モードの場合、今回を偶数モードとする。隣接温度番号ペア決定部５４ａは、前回が偶数モードの場合、今回を奇数モードとする。例えば、ステップＳ１１を最初に実行する場合、隣接温度番号ペア決定部５４ａは今回を偶数モードとする。
【００９７】
（Ｓ１２）隣接温度番号ペア決定部５４ａは、第１対応情報保持部５１に記憶された第１対応情報７１を参照して、温度番号の昇順に、温度番号のペア（温度番号（Ｋ，Ｋ＋１）のペア）を１つ読み出す。隣接温度番号ペア決定部５４ａは、当該温度番号のペアを含む隣接温度保証情報を、レプリカペア決定部５５に出力する。レプリカペア決定部５５は、第１対応情報７１を参照して、隣接温度保証情報で示される温度番号のペアに対応するレプリカ番号のペアを取得し、当該レプリカ番号のペアを、アニール処理指示部５４ｂに供給する。アニール処理指示部５４ｂは、レプリカペア決定部５５から供給されたレプリカ番号のペアに対応する焼鈍部に対して、アニール処理の開始を指示する。
【００９８】
なお、隣接温度番号ペア決定部５４ａは、奇数モードに切り替えてからステップＳ１２を最初に実行する場合、まずは、温度番号０をレプリカペア決定部５５に供給する。レプリカペア決定部５５は、第１対応情報７１を参照して、温度番号０に対応するレプリカ番号を取得し、当該レプリカ番号をアニール処理指示部５４ｂに供給する。アニール処理指示部５４ｂは、温度番号０のレプリカ番号に対応する焼鈍部に対して、アニール処理の開始を指示する。その後、隣接温度番号ペア決定部５４ａは、温度番号（１，２）の組から、レプリカペア決定部５５への隣接温度保証情報の供給を行う。また、奇数モードの場合、アニール処理を行う最後のレプリカの組は、最後の温度番号（図７の例では、温度番号１５）に対応する焼鈍部のみを含む。
【００９９】
（Ｓ１３）隣接温度番号ペア決定部５４ａは、ステップＳ１２においてレプリカペア決定部５５に供給した温度番号が、第１対応情報における最後の温度番号であるか否かを判定する。最後の温度番号である場合、ステップＳ１５に処理が進む。最後の温度番号でない場合、ステップＳ１４に処理が進む。
【０１００】
（Ｓ１４）隣接温度番号ペア決定部５４ａは、温度番号を＋２する（温度番号に２を加算する）。例えば、温度番号Ｋに２を加算し、Ｋ＝Ｋ＋２とする。そして、ステップＳ１２に処理が進む。ステップＳ１２が繰り返し実行されることで、所定の時間間隔で、レプリカの組によるアニール処理が順次開始される。
【０１０１】
（Ｓ１５）交換演算部５３は、焼鈍部５０ａ０，…，５０ａｎの各々による今回のアニール処理が終了すると、アニール処理の終了条件を満たすか否かを判定する。終了条件を満たす場合、アニール処理制御が終了する。終了条件を満たさない場合、ステップＳ１０に処理が進む。終了条件には、上記のアニール処理制御を所定回数実行すること（偶数モード／奇数モードの切り替えを所定回数行ったこと）、何れかの焼鈍部のエネルギーが目標値を下回ること、などが考えられる。
【０１０２】
このように、焼鈍順序決定部５４は、温度番号の順（昇順または降順）で、各焼鈍部によるアニール処理を順次開始させる。アニール処理は各焼鈍部により並列に実行される。
例えば、ステップＳ１５において終了条件が満たされて、焼鈍部５０ａ０，…，５０ａｎの各々のアニール処理が終了すると、各焼鈍部によるエネルギーの最低値と当該最低値のときの各状態変数の値が、ＣＰＵ２１を介して、ＤＲＡＭ２２に出力される。例えば、ＣＰＵ２１は、各状態変数の値を、ユーザにとって分かり易い結果情報に変換し、ネットワーク４０を介して、クライアント３０に結果情報を提供する。
【０１０３】
次に、アニール処理およびレプリカ交換の実行手順を説明する。
図１０は、アニール処理およびレプリカ交換の実行例を示すフローチャートである。
ステップＳ２０は、交換制御部５０によって実行される。
【０１０４】
（Ｓ２０）レプリカペア決定部５５は、ステップＳ１２で隣接温度番号ペア決定部５４ａにより供給された温度番号を基に、アニール対象レプリカのレプリカ番号を２つ選択し、アニール処理指示部５４ｂに供給する。アニール処理指示部５４ｂは、当該レプリカ番号のペアに対応する２つの焼鈍部にアニール処理の開始を指示する。奇数モードの場合、ステップＳ１２で説明したように、最初と最後のアニール対象レプリカは１つとなる。ステップＳ２０は、ステップＳ１２に相当する。
【０１０５】
ステップＳ２１〜Ｓ２４は、焼鈍部５０ａ０，…，５０ａｎの各々によって実行される。実行順は、前述のように焼鈍順序決定部５４により温度順に決定される。以下では、焼鈍部５０ａｉに着目して説明するが、他の焼鈍部も同様の手順を実行する。
【０１０６】
（Ｓ２１）焼鈍部５０ａｉは、アニール処理指示部５４ｂからアニール処理の開始の指示を受けると、交換演算部５３により供給される温度を用いて、確率的探索を実行する。
（Ｓ２２）焼鈍部５０ａｉは、確率的探索の反復回数をインクリメントする（反復回数に１を加算する）。
【０１０７】
（Ｓ２３）焼鈍部５０ａｉは、反復回数が閾値に達したか（すなわち、反復回数＝閾値であるか否か）を判定する。反復回数が閾値に達した場合、焼鈍部５０ａｉによる今回のアニール処理が終了し、ステップＳ２４に処理が進む。反復回数が閾値に達していない場合、ステップＳ２１に処理が進む。
【０１０８】
（Ｓ２４）焼鈍部５０ａｉは、交換制御部５０（より詳細には交換制御部５０の交換演算部５３）に、確率的探索の結果として得られたエネルギーを送信する。
ステップＳ２５〜Ｓ２８は、交換制御部５０によって実行される。
【０１０９】
（Ｓ２５）交換演算部５３は、隣接する温度が割り当てられた２つの焼鈍部からエネルギーを受け付けると、２つの温度と、２つのエネルギーとに基づいて、式（４），（２）により、交換確率を計算する。
【０１１０】
（Ｓ２６）交換演算部５３は、計算した交換確率と乱数との比較により、隣接する温度が割り当てられた２つの焼鈍部における温度の交換可否を決定する。
（Ｓ２７）交換演算部５３は、ステップＳ２６の結果、交換可である場合、ステップＳ２８に処理を進める。交換不可である場合、交換が行われずに、該当の焼鈍部（レプリカ）のペアに対する交換演算部５３の処理が終了する。
【０１１１】
（Ｓ２８）交換演算部５３は、第１対応情報７１において、交換対象の２つの焼鈍部に対応するレプリカ番号を交換することで、第１対応情報７１を更新する。これにより、第１対応情報７１における交換後のレプリカ番号は、交換前とは異なる温度番号に対応付けられる。交換演算部５３は、交換後の温度番号に対応する温度を第２対応情報７２から読み出す。交換演算部５３は、交換したレプリカ番号に対応する焼鈍部に、交換後の温度（または逆温度）を示す温度情報を供給する。そして、該当のレプリカのペアに対する交換演算部５３の処理が終了する。
【０１１２】
最適化装置２５は、上記のステップＳ２０〜Ｓ２８の手順を焼鈍部のペア毎にパイプライン処理することで、演算を高速化できる。
ここで、交換制御部５０は、２つの焼鈍部に割り当てられている温度の交換を行うか否かを決定した後、他の焼鈍部による処理の完了を待たずに、第１対応情報７１に基づいて、当該２つの焼鈍部によるアニール処理を開始させてもよい。具体的には、交換制御部５０は、ステップＳ２５〜Ｓ２８の後、当該２つの焼鈍部のアニール処理でステップＳ１５の終了条件が満たされていない場合に、ステップＳ１０に移り、当該２つの焼鈍部の反復回数を初期化させて、ステップＳ１１以降を実行してもよい。
【０１１３】
このようにすると、最適化装置２５は、今回の処理グループにおけるアニール処理およびレプリカ交換が全て完了する前に、次回の処理グループを開始できる。例えば、隣接温度番号ペア決定部５４ａは、今回の処理グループに対する温度番号Ｋ１のカウンタと、次回の処理グループに対する温度番号Ｋ２のカウンタとを有し、当該２つのカウンタにより２つの処理グループによるアニール処理の開始順序を制御する。隣接温度番号ペア決定部５４ａは、３以上のカウンタを用いて、３以上の処理グループの各々によるアニール処理の開始順序を制御してもよい。ここで、「処理グループ」は、前述のように、第１対応情報７１に設定された温度番号０，…，１５に対する一巡のアニール処理を示す。
【０１１４】
例えば、ステップＳ１１，Ｓ１２では、交換制御部５０は、今回の処理グループに属するアニール処理およびレプリカ交換を偶数モードで順次実行しながら、次回の処理グループを奇数モードで開始させる。あるいは、交換制御部５０は、今回の処理グループに属するアニール処理およびレプリカ交換を奇数モードで順次実行しながら、次回の処理グループを偶数モードで開始させる。これにより、最適化装置２５の演算を一層高速化できる。
【０１１５】
図１１は、温度の交換例を示す図である。
交換演算部５３は、偶数モードおよび奇数モードの何れかに応じて、交換対象のレプリカ番号を変更する。前述のように、偶数モードでは、温度番号の組（０，１）、（２，３）、（４，５）、…を交換対象とする。奇数モードでは、温度番号の組（１，２）、（３，４）、（５，６）、…を交換対象とする。
【０１１６】
例えば、交換制御部５０は、１回目の処理グループでは、偶数モードでレプリカ交換を行う。１回目の処理グループにおけるレプリカ交換を、「１回目の交換」と称する。第１対応情報７１は、１回目の交換前を示す。第１対応情報７１ａは、１回目の交換後を示す。
【０１１７】
例えば、１回目の交換では、温度番号２に対応するレプリカ番号１４と、温度番号３に対応するレプリカ番号３とが交換される。交換後は、温度番号２にレプリカ番号３が対応付けられ、温度番号３にレプリカ番号１４が対応付けられる。また、１回目の交換では、温度番号４に対応するレプリカ番号１と、温度番号５に対応するレプリカ番号０とが交換される。交換後は、温度番号４にレプリカ番号０が対応付けられ、温度番号５にレプリカ番号１が対応付けられる。更に、１回目の交換では、温度番号１０に対応するレプリカ番号１３と、温度番号１１に対応するレプリカ番号１１とが交換される。交換後は、温度番号１０にレプリカ番号１１が対応付けられ、温度番号１１にレプリカ番号１３が対応付けられる。
【０１１８】
交換制御部５０は、２回目の処理グループでは、奇数モードでレプリカ交換を行う。２回目の処理グループにおけるレプリカ交換を、「２回目の交換」と称する。第１対応情報７１ａは、２回目の交換前を示す。第１対応情報７１ｂは、２回目の交換後を示す。
【０１１９】
例えば、２回目の交換では、温度番号３に対応するレプリカ番号１４と、温度番号４に対応するレプリカ番号０とが交換される。交換後は、温度番号３にレプリカ番号０が対応付けられ、温度番号４にレプリカ番号１４が対応付けられる。また、２回目の交換では、温度番号７に対応するレプリカ番号９と、温度番号８に対応するレプリカ番号１５とが交換される。交換後は、温度番号７にレプリカ番号１５が対応付けられ、温度番号８にレプリカ番号９が対応付けられる。
【０１２０】
交換制御部５０は、３回目の処理グループでは、偶数モードでレプリカ交換を行う。３回目の処理グループにおけるレプリカ交換を、「３回目の交換」と称する。第１対応情報７１ｂは、３回目の交換前を示す。３回目の交換後の第１対応情報の図示は省略されている。例えば、３回目の交換では、温度番号０に対応するレプリカ番号６と、温度番号１に対応するレプリカ番号８とが交換される。また、３回目の交換では、温度番号４に対応するレプリカ番号１４と、温度番号５に対応するレプリカ番号１とが交換される。更に、３回目の交換では、温度番号１２に対応するレプリカ番号５と、温度番号１３に対応するレプリカ番号１２とが交換される。
【０１２１】
上記のように、交換制御部５０は、温度の交換を行う場合、第１対応情報７１，７１ａ，７１ｂにおいて隣接する２つの温度に対応付けられた２つの焼鈍部の各々のレプリカ番号を入れ替えることで、第１対応情報７１，７１ａ，７１ｂを更新する。これにより、温度の昇順または降順で各レプリカにアニール処理を開始させる際に、第１対応情報７１，７１ａ，７１ｂを温度番号でソートせずに済み、各レプリカによるアニール処理を高速に開始させることができる。
【０１２２】
こうして、交換制御部５０は、偶数モードおよび奇数モードを切り替えながら、レプリカ交換を行う。すなわち、交換制御部５０は、複数の焼鈍部の各々による今回のアニール処理に対し、隣接する２つの温度の複数の第１のペアの各々に対応する焼鈍部のペアで温度の交換を行うか否かを決定する。交換制御部５０は、複数の焼鈍部の各々による次回のアニール処理に対し、隣接する２つの温度の複数のペアであって、複数の第１のペアとは異なる複数の第２のペアの各々に対応する焼鈍部のペアで温度の交換を行うか否かを決定する。複数の第２のペアの各々は、複数の第１のペアの各々と異なるペアとなる。これにより、全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
【０１２３】
図１２は、パイプライン処理の例を示す図である。
温度番号の昇順に配列されたレプリカ番号を、ＲｅｐＡ，ＲｅｐＢ，ＲｅｐＣ，ＲｅｐＤ，…，ＲｅｐＭ，ＲｅｐＮと表す。処理グループ８１においてＲｅｐＡ，…，ＲｅｐＮの各々に代入されるレプリカ番号と、処理グループ８１の次の処理グループ８２においてＲｅｐＡ，…，ＲｅｐＮの各々に代入されるレプリカ番号とは、異なることがある。以下では、「アニール処理」を「アニール」と略記することがある。
【０１２４】
処理グループ８１は、各レプリカにより温度番号順に実行されるアニールＸ０，Ｘ１，Ｘ２，Ｘ３，…，Ｘｎ−１，Ｘｎを含む。処理グループ８２は、各レプリカにより温度番号順に実行されるアニールＹ０，Ｙ１，Ｙ２，Ｙ３，…，Ｙｎ−１，Ｙｎを含む。処理グループ８１の各アニールに対するレプリカ交換は、偶数モードで実行される。処理グループ８２の各アニールに対するレプリカ交換は、奇数モードで実行される。
【０１２５】
例えば、アニールＸ０は、時刻ｔ０に実行開始される。アニールＸ１は、時刻ｔ１に実行開始される。例えば、時刻ｔ１は、時刻ｔ０よりも所定時間後の時刻である。ただし、アニールＸ１は、アニールＸ０と同時に実行開始されてもよい（ｔ０＝ｔ１でもよい）。
【０１２６】
アニールＸ２は、時刻ｔ２に実行開始される。例えば、時刻ｔ２は、時刻ｔ１よりも所定時間後の時刻である。アニールＸ３は、時刻ｔ３に実行開始される。例えば、時刻ｔ３は、時刻ｔ２よりも所定時間後の時刻である。ただし、アニールＸ３は、アニールＸ２と同時に実行開始されてもよい（ｔ２＝ｔ３でもよい）。以降、順次、温度番号順にアニールが実行開始される。
【０１２７】
例えば、アニールＸ２，Ｘ３，…が実行中である時刻ｔ４の前にアニールＸ０が完了し、時刻ｔ４にアニールＸ１が完了する。すなわち、時刻ｔ４には、アニールＸ０，Ｘ１が完了した状態となる。時刻ｔ４（あるいは時刻ｔ４にアニールＸ１が完了した直後）において、交換制御部５０は、アニールＸ０を実行したレプリカ番号ＲｅｐＡの焼鈍部と、アニールＸ１を実行したレプリカ番号ＲｅｐＢの焼鈍部とのレプリカ交換を開始する。例えば、当該レプリカ交換は時刻ｔ５に完了する。
【０１２８】
ここで、例えば、アニールＸ３よりも後段のアニール処理が実行中である時刻ｔ５の前にアニールＸ２が完了し、時刻ｔ５にアニールＸ３が完了する。すなわち、時刻ｔ５には、アニールＸ２，Ｘ３が完了した状態となる。時刻ｔ５（あるいは時刻ｔ５にアニールＸ３が完了した直後）において、交換制御部５０は、アニールＸ２を実行したレプリカ番号ＲｅｐＣの焼鈍部と、アニールＸ３を実行したレプリカ番号ＲｅｐＤの焼鈍部とのレプリカ交換を開始する。
【０１２９】
こうして、交換制御部５０は、処理グループ８１に属するアニールの組に対して、偶数モードで、順次、レプリカ交換を行う。交換制御部５０は、処理グループ８２に属するアニールの組に対しても同様に、奇数モードで、順次、レプリカ交換を行う。
【０１３０】
このように、最適化装置２５は、アニールとレプリカ交換とを合わせてパイプライン処理することで、全レプリカの探索処理の完了を待たずに、アニールが完了したレプリカからレプリカ交換を行える。これにより、レプリカ交換によるレイテンシがパイプライン内に隠蔽される。よって、最適化装置２５による演算を高速化できる。
【０１３１】
また、今回の処理グループ８１における全レプリカのアニールおよびレプリカ交換の完了を待たずに、次回の処理グループ８２のアニールおよびレプリカ交換のパイプライン実行を継続できる。これにより、最適化装置２５の演算を一層高速化できる。
【０１３２】
なお、交換制御部５０によるレプリカ交換を複数のステージ（例えば、図１０のステップＳ２５〜Ｓ２８の各々に対応するステージ）に分割して、パイプライン化することも考えられる。
【０１３３】
図１３は、パイプライン処理の他の例を示す図である。
温度番号の昇順に配列されたレプリカ番号を、ＲｅｐＡ，ＲｅｐＢ，ＲｅｐＣ，ＲｅｐＤ，…，ＲｅｐＭ，ＲｅｐＮと表す。処理グループ９１においてＲｅｐＡ，…，ＲｅｐＮの各々に代入されるレプリカ番号と、処理グループ９１の次の処理グループ９２においてＲｅｐＡ，…，ＲｅｐＮの各々に代入されるレプリカ番号とは、異なることがある。
【０１３４】
最適化装置２５は、交換制御部５０によるレプリカ交換の処理を複数のステージに分割して、次のようなパイプライン処理を行ってもよい。例えば、レプリカ交換を前半ステージおよび後半ステージに分けるとする（ただし、３以上のステージに分けてもよい）。
【０１３５】
処理グループ９１は、各レプリカにより温度番号順に実行されるアニールＸ０，Ｘ１，Ｘ２，Ｘ３，…，Ｘｎ−１，Ｘｎを含む。処理グループ９２は、各レプリカにより温度番号順に実行されるアニールＹ０，Ｙ１，Ｙ２，Ｙ３，…，Ｙｎ−１，Ｙｎを含む。処理グループ９１の各アニールに対するレプリカ交換は、偶数モードで実行される。処理グループ９２の各アニールに対するレプリカ交換は、奇数モードで実行される。
【０１３６】
例えば、アニールＸ０は、時刻ｔ０ａに実行開始される。アニールＸ１は、時刻ｔ１ａに実行開始される。例えば、時刻ｔ１ａは、時刻ｔ０ａよりも所定時間後の時刻である。ただし、アニールＸ１は、アニールＸ０と同時に実行開始されてもよい（ｔ０ａ＝ｔ１ａでもよい）。
【０１３７】
アニールＸ２は、時刻ｔ２ａに実行開始される。例えば、時刻ｔ２ａは、時刻ｔ１ａよりも所定時間後の時刻である。アニールＸ３は、時刻ｔ３ａに実行開始される。例えば、時刻ｔ３ａは、時刻ｔ２ａよりも所定時間後の時刻である。ただし、アニールＸ３は、アニールＸ２と同時に実行開始されてもよい（ｔ２ａ＝ｔ３ａでもよい）。以降、順次、温度番号順にアニールが実行開始される。
【０１３８】
例えば、アニールＸ２，Ｘ３，…が実行中である時刻ｔ４ａの前にアニールＸ０が完了し、時刻ｔ４ａにアニールＸ１が完了する。すなわち、時刻ｔ４ａには、アニールＸ０，Ｘ１が完了した状態となる。時刻ｔ４ａ（あるいは時刻ｔ４ａにアニールＸ１が完了した直後）において、交換制御部５０は、アニールＸ０を実行したレプリカ番号ＲｅｐＡの焼鈍部と、アニールＸ１を実行したレプリカ番号ＲｅｐＢの焼鈍部とのレプリカ交換の前半ステージを開始する。例えば、交換制御部５０は、当該レプリカ交換の前半ステージを時刻ｔ５ａに完了し、時刻ｔ５ａの直後に当該レプリカ交換の後半ステージを開始する。
【０１３９】
例えば、アニールＸ３よりも後段のアニール処理が実行中である時刻ｔ５ａの前にアニールＸ２が完了し、時刻ｔ５ａにアニールＸ３が完了する。すなわち、時刻ｔ５ａには、アニールＸ２，Ｘ３が完了した状態となる。時刻ｔ５ａ（あるいは時刻ｔ５ａにアニールＸ３が完了した直後）において、交換制御部５０は、アニールＸ２を実行したレプリカ番号ＲｅｐＣの焼鈍部と、アニールＸ３を実行したレプリカ番号ＲｅｐＤの焼鈍部とのレプリカ交換の前半ステージを開始する。
【０１４０】
このように、最適化装置２５は、レプリカ交換についても、パイプラインにより並列に処理することができる。これにより、最適化装置２５の演算をより一層高速化できる。
図１４は、比較例を示す図である。
【０１４１】
図１４では、ｎ＋１個のレプリカを考える。各レプリカのレプリカ番号をＲｅｐ０，Ｒｅｐ１，…，Ｒｅｐ（ｎ−１），Ｒｅｐ（ｎ）とする。各レプリカには、温度番号が対応付けられる。
【０１４２】
図１４（Ａ）は、ソフトウェアによるレプリカ交換の比較例を示す。例えば、ＣＰＵ２１により、ＤＲＡＭ２２に記憶されたプログラムを実行することで、比較例のレプリカ交換の機能を発揮し得る。図１４（Ａ）の比較例では、例えば、ＤＲＡＭ２２は、レプリカ番号と温度との対応情報を保持する。
【０１４３】
図１４（Ａ）の比較例では、任意の順番で（例えば、レプリカ番号の順に）、各レプリカは自身に割り当てられた温度情報を用いて、アニールを行う。処理グループ１０１は、レプリカ番号Ｒｅｐ０，…，Ｒｅｐ（ｎ）の各レプリカによるアニールを示す。処理グループ１０１が完了すると、ＣＰＵ２１は、交換ステップ１０２を実行する。
【０１４４】
具体的には、ＣＰＵ２１は、各レプリカからエネルギーを読み出してＤＲＡＭ２２に格納し、ＣＰＵ２１が実行するソフトウェアの機能により、隣接する温度が割り当てられたレプリカ間のレプリカ交換を行う。ＣＰＵ２１は、レプリカ交換の結果をＤＲＡＭ２２の対応情報に反映させ、交換後の温度情報を、各レプリカに書き戻す。そして、交換ステップ１０２が完了すると、次の処理グループ１０３が開始される。
【０１４５】
交換ステップ１０２では、ＣＰＵ２１がレプリカ交換を実行する。交換ステップ１０２による遅延は数十ｍｓ（ミリ秒）程度となる。
図１４（Ｂ）は、ハードウェアによるレプリカ交換の比較例を示す。処理グループ１１１は、レプリカ番号Ｒｅｐ０，…，Ｒｅｐ（ｎ）の各レプリカによるアニールを示す。処理グループ１１１が完了すると、比較例の最適化装置は、自装置において、交換ステップ１１２を実行する。すなわち、図１４（Ｂ）の比較例では、レプリカ交換を、ＣＰＵ２１などが実行するソフトウェアではなく、所定のハードウェア（交換回路と称する）により実行する点が、図１４（Ａ）の比較例と異なる。図１４（Ｂ）の比較例でも、図１４（Ａ）の比較例と同様に、交換回路がレプリカ番号と温度との対応情報を保持し、隣接する温度が割り当てられたレプリカ間のレプリカ交換を、例えば温度番号順に行う。交換回路は、レプリカ交換の結果を交換回路が保持する対応情報に反映させ、交換後の温度情報を、各レプリカに供給する。交換ステップ１１２が完了すると、次の処理グループ１１３が開始される。
【０１４６】
交換ステップ１１２では、所定の交換回路がレプリカ交換を実行する。交換ステップ１１２では、レプリカ数をＮ（＝ｎ＋１）とすると、合計でＮサイクルを要する。具体的には、｛（２つのレプリカからのエネルギーの読み出しに要する１サイクル）＋（２つのレプリカへの温度の書き込みに要する１サイクル）｝×Ｎ／２＝Ｎサイクルである。交換ステップ１１２による遅延は、数百ｎｓ（ナノ秒）程度となる。
【０１４７】
これに対して、最適化装置２５は、探索処理とレプリカ交換とを合わせてパイプライン処理することで、全レプリカの探索処理の完了を待たずに、探索処理が完了したレプリカからレプリカ交換を行える。これにより、レプリカ交換による遅延がパイプライン内に隠蔽される。このため、交換ステップ１０２や交換ステップ１１２による遅延を低減できる。よって、最適化装置２５による演算を高速化できる。
【０１４８】
また、今回の処理グループにおける全レプリカのレプリカ交換の完了を待たずに、次回の処理グループのアニールおよびレプリカ交換のパイプライン実行を継続できる。これにより、最適化装置２５の演算を一層高速化できる。
【０１４９】
更に、最適化装置２５は、処理グループ毎に偶数モードと奇数モードとを交互に切り替えることで全てのレプリカが高温側と低温側とを行き来するようになることが期待され、適切な解を得られる可能性を高められる。
【０１５０】
図１５は、最適解を得るためのシステムの例を示す図である。ユーザはクライアント３０を用いて、ネットワーク４０を介して、解くべき最適化問題を情報処理装置２０に入力する。情報処理装置２０は、ネットワーク４０からＣＰＵ２１に入力された最適化問題をイジングモデルに置き換え、イジングモデルの基底状態を探索することにより、解くべき最適化問題の解を出力する。クライアント３０と、ネットワーク４０と、ＣＰＵ２１とにより、最適化装置２５における温度と温度識別情報とを入力する入力部、および、品質情報をユーザに対して通知する通知部が実現される。
【０１５１】
次に、最適解を得るための実行手順を説明する。
図１６は、最適解を得るための実行例を示すフローチャートである。
（Ｓ３０）ＣＰＵ２１は、クライアント３０から入力された最適化問題をイジングモデルに変換する。その過程で生成された初期スピン変数、結合係数、初期エネルギーを最適化装置２５内の焼鈍部５０ａ０，…，５０ａｎに入力する。また、ＣＰＵ２１は、最適化問題の種類に応じた初期温度設定を最適化装置２５内の第２対応情報保持部５２に入力する。
【０１５２】
（Ｓ３１）最適化装置２５はステップＳ３０で入力された設定をもとに、レプリカ交換法を用いたアニール処理を実行する。
（Ｓ３２）所定の反復回数のアニール処理およびレプリカ交換処理が実行された後、ＣＰＵ２１はクライアント３０に処理完了を通知する。その後、ユーザはクライアント３０からＣＰＵ２１に、アニールの結果データ（エネルギー、スピン変数）および温度情報を取得するよう要求する。ＣＰＵ２１は、焼鈍部５０ａ０，…，５０ａｎからエネルギーとスピン変数を、第２対応情報保持部５２から温度情報を、それぞれ取得してクライアント３０に通知する。
【０１５３】
（Ｓ３３）ＣＰＵ２１は、ステップＳ３２で取得されたエネルギーの結果データを所定のエネルギー閾値と比較し、最適化問題の解として十分な品質を保持しているか検査する。エネルギーの結果データが所定のエネルギー閾値以下である場合、十分な品質であるとして処理を終了する。そうでない場合、すなわち、エネルギーの結果データが所定のエネルギー閾値よりも大きい場合は品質が十分でないとしてクライアント３０に対してその旨を通知するとともにステップＳ３４に進む。
【０１５４】
（Ｓ３４）ＣＰＵ２１は、ステップＳ３２で取得された温度設定に対し、隣接温度の間隔を調整することで新たな温度設定を生成する。ＣＰＵ２１は、生成された温度設定をステップＳ３０と同様の手順で最適化装置に入力し、その他パラメータは前回のアニール処理と同じものを用いてステップＳ３１に進む。
【０１５５】
図１７は、ステップＳ３４の温度調整の実行例を示す図である。
第２対応情報７２は、タイミングＴ１における初期の温度設定を示している（具体的なβの値の例も表している）。ＣＰＵ２１は、この温度設定でアニール処理を行った結果、得られた解の品質が不十分である場合、すなわち、エネルギーの結果データが所定のエネルギー閾値よりも大きい場合は、品質が十分でないとしてクライアント３０に対してその旨を通知するとともに、例えば、第２対応情報７２の温度番号１，５，１１における温度を変更する。図中の「＝＞」の記号は温度の変更を示し、当該記号の左側の数値（例えば、「９０」）が変更前、右側の数値（例えば、「９２」）が変更後である。これにより、温度番号（０，１）（１，２）（４，５）（５，６）（１０，１１）（１１，１２）の間での交換確率を調整し、エネルギーの結果データの改善を試みる。第２対応情報７２ａは、タイミングＴ１における温度の変更結果を例示する。
【０１５６】
それでも、エネルギーの結果データが所定のエネルギー閾値よりも大きく、解の品質が不十分である場合は、ＣＰＵ２１は、さらにタイミングＴ２において、品質が十分でないとしてクライアント３０に対してその旨を通知するとともに、例えば、第２対応情報７２ａの温度番号４，６，１２における温度を変更する。これにより、温度番号（３，４）（４，５）（５，６）（６，７）（１１，１２）（１２，１３）の間での交換確率を調整し、エネルギーの結果データの改善を試みる。このような処理を繰り返すことにより、解くべき最適化問題ごとに適した温度設定を得ることができる。その結果として、十分な品質の解を求めることができる。
【０１５７】
なお、第１の実施の形態の最適化装置１０の制御は、最適化装置１０を制御するコンピュータが備えるプロセッサがプログラムを実行することで実現されてもよい。例えば、プログラムは当該コンピュータが備えるＲＡＭに格納される。第２の実施の形態の最適化装置２５の制御は、ＣＰＵ２１にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体４１に記録できる。
【０１５８】
例えば、プログラムを記録した記録媒体４１を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体４１に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＤＲＡＭ２２や記憶装置２３に格納し（インストールし）、ＤＲＡＭ２２や記憶装置２３からプログラムを読み込んで実行してもよい。
【０１５９】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１６０】
１０  最適化装置
１ａ０，１ａ１，…，１ａｉ，…，１ａｎ  焼鈍部
１１  交換制御部
１１ａ  記憶部
１１ｂ  処理回路
１２  対応情報
Ｄ１  流れ図
【図１】
2020054046.tif 000007
【図２】
2020054046.tif 000008
【図３】
2020054046.tif 000009
【図４】
2020054046.tif 000010
【図５】
2020054046.tif 000011
【図６】
2020054046.tif 000012
【図７】
2020054046.tif 000013
【図８】
2020054046.tif 000014
【図９】
2020054046.tif 000015
【図１０】
2020054046.tif 000016
【図１１】
2020054046.tif 000017
【図１２】
2020054046.tif 000018
【図１３】
2020054046.tif 000019
【図１４】
2020054046.tif 000020
【図１５】
2020054046.tif 000021
【図１６】
2020054046.tif 000022
【図１７】
2020054046.tif 000023
【国際調査報告】
2020054046.tif 000024
2020054046.tif 000025
2020054046.tif 000026
2020054046.tif 000027