(57)【要約】【課題】基底状態の探索を高速化すること。【解決手段】交換回数決定部１１は、探索部１ａ１〜１ａＮが決定した複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、探索部１ａ１〜１ａＮに設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する。温度制御部１２は、探索部１ａ１〜１ａＮの各々に対する温度をそれぞれ設定するとともに、探索部１ａ１〜１ａＮの間で交換回数決定部１１により決定された交換回数だけ、設定された温度を交換する。【選択図】図１
2020187453.tif 000002
【特許請求の範囲】
【請求項１】
複数の状態変数のうちの何れか２つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、前記２つの状態変数の値とに基づき、前記２つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、前記複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、前記複数の状態変数の値を決定し、前記複数の重み値に基づく前記複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される複数の探索部と、
前記複数の探索部が決定した前記複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、前記複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する交換回数決定部と、
前記複数の探索部の各々に対する温度をそれぞれ設定するとともに、前記複数の探索部の間で前記交換回数だけ、設定された温度を交換する温度制御部と、
を有する最適化装置。
【請求項２】
前記交換回数決定部は、前記差異が大きいほど、前記交換回数を多くする、請求項１記載の最適化装置。
【請求項３】
前記交換回数決定部は、前記最低温度から、前記最も低いエネルギー値に対応する探索部に設定された温度までの設定対象の温度の個数を前記差異として取得する、請求項１または２記載の最適化装置。
【請求項４】
前記交換回数決定部は、前記個数に係数を乗じて得られる値を前記交換回数と決定する、請求項３記載の最適化装置。
【請求項５】
前記温度制御部は、前記複数の探索部のそれぞれによるエネルギー値の出力および前記交換回数での温度の交換が規定回数だけ行われると、出力したエネルギー値が低い探索部ほど低い温度を設定する処理を行う、請求項１乃至４の何れか１項に記載の最適化装置。
【請求項６】
前記温度制御部は、前記複数の探索部による基底状態探索の全期間のうちの第１の期間において前記処理を行い、前記第１の期間よりも後の第２の期間において前記処理を行わない、請求項５記載の最適化装置。
【請求項７】
複数の状態変数のうちの何れか２つの状態変数の間の接続の強さをそれぞれ示す複数の重み値に基づく前記複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される、最適化装置の複数の探索部が、前記複数の重み値と前記２つの状態変数の値とに基づき、前記２つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、前記複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、前記複数の状態変数の値を決定し、
前記最適化装置の交換回数決定部が、前記複数の探索部が決定した前記複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、前記複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定し、
前記最適化装置の温度制御部が、前記複数の探索部の各々に対する温度をそれぞれ設定するとともに、前記複数の探索部の間で前記交換回数だけ、設定された温度を交換する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は最適化装置および最適化装置の制御方法に関する。
【背景技術】
【０００２】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置で行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の１つとして最適化というものがあり重要な分野となっている。例えばあることを行うのに必要な資源やコストを最小化したり、その効果を最大化する解を求める問題などであり、これらが非常に重要であるのは明らかであろう。
【０００３】
最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍のなかで最小値をとる局所解と呼ばれる状態が複数存在することである。
【０００４】
離散最適化問題を解く効率の良い一般解法は存在しないため、問題に固有な性質を利用した近似解法や、問題の性質にあまり頼らないメタヒューリステックと呼ばれる方法を用いる必要がある。
【０００５】
以下に説明する内容は、後者のうちマルコフ連鎖モンテカルロ法を用いた解法に関するもので、特に交換モンテカルロ法、又はレプリカ交換法と呼ばれる広い意味での疑似焼き鈍し法に関するものである。
【０００６】
疑似焼き鈍し法は、乱数を用いて確率的に状態（変数ベクトルの値）を変化させることで最適解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【０００７】
疑似焼き鈍し法においては、状態遷移の受け入れ（許容）確率を、その遷移に伴うエネルギー変化と温度を用いて次のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
【０００８】
【数１】
2020187453.tif 000003
【０００９】
【数２】
2020187453.tif 000004
【００１０】
【数３】
2020187453.tif 000005
【００１１】
式（２）はメトロポリス法である。式（３）はギブス法である。式（２），（３）は何れか一方が用いられる。
ここで、Ｔは温度を表すパラメータであり、その初期値は問題に応じて十分大きくとり、十分ゆっくり下げていくことが必要となる。
【００１２】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解（基底状態に相当する解）が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
【００１３】
実際の疑似焼き鈍し法では、初期状態から始めて、温度を下げながら上記反復が繰り返され、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度が０にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布をもっており、必ずしも最適値や良い解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００１４】
上記の説明からある程度想像できると思われるが、疑似焼き鈍し法は汎用的で非常に魅力的ではあるが、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的な熱分布のエネルギー範囲が広くなることから良い解の占有確率が上がらない。逆に速く下げすぎると、局所解を脱出する前に温度が下がってしまい、悪い解に捕まったままになってしまうため、良い解が得られる確率が下がってしまう。
【００１５】
レプリカ交換法は複数の温度を用いたモンテカルロ探索（以下、「確率的探索」という）を同時に行い、ある反復回数毎に、それぞれの状態のエネルギーを比較し、適切な確率で２つの温度に対する状態を交換するという操作を行う方法である。
【００１６】
図２１は、通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。最適化装置５０は、通常の疑似焼き鈍し法を用いた最適化装置と異なり、複数のレプリカ（図２１では探索部５１ａ１，５１ａ２，…，５１ａｉ，…，５１ａｎ）と、交換制御部５２とを有する。交換制御部５２は、探索部５１ａ１〜５１ａｎに温度情報（以下では逆温度βｉ（Ｔの逆数）（１≦ｉ≦ｎ）とする）を与える。
【００１７】
図２１には、探索部５１ａｉの例が示されている。他の探索部も同様の構成である。探索部５１ａｉは、状態保持部６０、エネルギー計算部６１、遷移制御部６２を有する。
状態保持部６０は、評価関数に含まれる複数の状態変数の値を保持する。また、状態保持部６０は、状態遷移の可否を示すフラグｆと、そのフラグｆが示す状態変数の番号（インデックス）Ｎに基づいて、複数の状態変数の値（上記変数ベクトルの値）である状態ｓｉを更新する。
【００１８】
エネルギー計算部６１は、状態変数の変化（状態遷移）に伴うエネルギー変化を計算する。例えば、評価関数が２つの状態変数間の結合で表されるイジングモデルで表され、しかも一度に１つの状態変数の遷移のみを許す場合、エネルギー計算部６１は、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、番号Ｎと、フラグｆとに基づいて、複数の状態変数のそれぞれの変化（状態遷移）に伴うエネルギー変化を計算する。エネルギー変化ΔＥｉｊは、ｊ番目の状態変数の変化に伴うエネルギー変化を示す。なお、計算したい最適化問題に応じた結合係数の値は、予めメモリ又はレジスタなどに記憶されている。評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。エネルギー計算部６１は、例えば、積和演算回路などの論理回路を用いて実現できる。
【００１９】
遷移制御部６２は、通常の疑似焼き鈍し法と同様に、エネルギー変化ΔＥｉｊと交換制御部５２により割り当てられた逆温度βｉを用いて、ｊ番目の状態変数の状態遷移の受け入れ確率を以下の式（４）により決定することで、確率的探索を行う。
【００２０】
【数４】
2020187453.tif 000006
【００２１】
なお、式（４）において、関数ｆは式（１）と同じものであり、例えば式（２）のメトロポリス法のものが用いられる。遷移制御部６２は、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグｆと、そのフラグｆが示す状態遷移の番号を出力する。また、遷移制御部６２は、エネルギー変化ΔＥｉｊに基づいて、エネルギーＥｉを更新して出力する。
【００２２】
交換制御部５２は、一定の反復回数毎に各探索部におけるエネルギーＥを観測し、探索部５１ａ１〜５１ａｎのうちの２つにおけるエネルギーＥと逆温度βを用い、以下の式（５）で表される交換確率に基づいて２つの探索部における各状態変数の値を交換する。状態変数の値の代りに、２つの探索部の各々に供給される逆温度を交換してもよい。
【００２３】
【数５】
2020187453.tif 000007
【００２４】
なお、式（５）では、βｉを探索部５１ａｉに与えられた逆温度、βｊを図示しないｊ番目の探索部に与えられた逆温度、Ｅｉを探索部５１ａｉにおけるエネルギー、Ｅｊをｊ番目の探索部におけるエネルギーとしている。また、式（５）において、関数ｆは式（１）と同じものであり、例えば式（２）のメトロポリス法のものが用いられる。
【００２５】
このような交換を行ってもそれぞれの温度の状態の確率分布はその温度に対するボルツマン分布に収束する。そして、この分布に収束するのに必要とされる緩和時間は、交換を行わない時より短縮することができる。
【００２６】
なお、交換が行われる２つの探索部は、交換確率が小さくなりすぎないように、供給される温度が近いもの（例えば、隣接温度が供給されるもの）が選択される。
最適化装置５０において、多数回の反復処理を行う探索部５１ａ１〜５１ａｎを専用の回路で実現し、交換制御部５２の機能をソフトウェアで実現する場合、ポインタ渡しにより、温度が近い２つの探索部の各状態変数の値（又は温度情報）を交換すればよい。この場合、交換毎に温度の低い順又は高い順に探索部５１ａ１〜５１ａｎを識別する情報を並べるソート処理などを行わなくてよい。
【００２７】
例えば、固定温度のカノニカルアンサンブルにおける各レプリカでモンテカルロや分子動力学のアルゴリズムを同時に、独立して実行し、隣接温度のレプリカの状態を、ある確率で交換するレプリカ交換法の提案がある（例えば、非特許文献１参照）。
【００２８】
また、第１の温度の下でシミュレーティド・アニーリング処理を行うことで得られた第１の状態と、第２の温度の下でシミュレーティド・アニーリング処理を行うことで得られた第２の状態とを確率的に交換する温度並列シミュレーティド・アニーリング用恒温槽装置の提案がある（例えば、特許文献１参照）。
【先行技術文献】
【非特許文献】
【００２９】
【非特許文献１】Y.Sugita、Y.Okamoto, “Replica-exchange molecular dynamics method for protein folding”, Chemical Physics Letters 314 (1999), pp.141-151”
【特許文献】
【００３０】
【特許文献１】特開平９−２３１１９７号公報
【発明の概要】
【発明が解決しようとする課題】
【００３１】
最適化装置において、基底状態の探索に要する時間が問題となる。
１つの側面では、本発明は、基底状態の探索を高速化することが可能な最適化装置および最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００３２】
１つの態様では、最適化装置が提供される。最適化装置は、複数の探索部と交換回数決定部と温度制御部とを有する。複数の探索部は、複数の状態変数のうちの何れか２つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、２つの状態変数の値とに基づき、２つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、複数の状態変数の値を決定し、複数の重み値に基づく複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される。交換回数決定部は、複数の探索部が決定した複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する。温度制御部は、複数の探索部の各々に対する温度をそれぞれ設定するとともに、複数の探索部の間で交換回数だけ、設定された温度を交換する。
【００３３】
また、１つの態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００３４】
１つの側面では、基底状態の探索を高速化することができる。
【図面の簡単な説明】
【００３５】
【図１】第１の実施の形態の最適化装置を示す図である。
【図２】第２の実施の形態の最適化装置の回路構成例を示す図である。
【図３】状態遷移判定回路の回路構成例を示す図である。
【図４】セレクタ部の回路構成例を示す図である。
【図５】交換回数調整部の回路構成例を示す図である。
【図６】レプリカ交換回数の決定例を示す図である。
【図７】レプリカ交換の全体制御例を示すフローチャートである。
【図８】探索部処理例を示すフローチャートである。
【図９】温度と解のエネルギーとの関係の例を示す図である。
【図１０】最適化装置の他の構成例を示す図である。
【図１１】最適化装置の機能例を示す図である。
【図１２】第３の実施の形態の最適化装置の回路構成例を示す図である。
【図１３】温度エネルギー順ソートの第１の例を示す図である。
【図１４】温度エネルギー順ソートの第２の例を示す図である。
【図１５】レプリカ交換の全体制御例を示すフローチャートである。
【図１６】交換制御例を示すフローチャートである。
【図１７】温度と解のエネルギーとの関係の例を示す図である。
【図１８】第４の実施の形態の最適化装置の回路構成例を示す図である。
【図１９】レプリカ交換の全体制御例を示すフローチャートである。
【図２０】交換制御例を示すフローチャートである。
【図２１】通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。
【発明を実施するための形態】
【００３６】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００３７】
図１は、第１の実施の形態の最適化装置を示す図である。
最適化装置１は、複数の探索部（探索部１ａ１，１ａ２，１ａ３，１ａ４，…，１ａＮ）および制御部１０を有する。Ｎは２以上の整数であり、探索部の数に相当する。最適化装置１は、最適化問題に対して、レプリカ交換法による基底状態の探索を行う。最適化装置１は、例えば、ＦＰＧＡ（Field Programmable Gate Array）などの半導体集積回路を用いて実現される。
【００３８】
探索部１ａ１〜１ａＮは、複数の状態変数のうちの何れか２つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、２つの状態変数の値とに基づき、２つ状態変数の複数の組合せに対してエネルギー値をそれぞれ決定する。また、探索部１ａ１〜１ａＮは、複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、複数の状態変数の値を決定する。探索部１ａ１〜１ａＮは、複数の重み値に基づく複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される。
【００３９】
例えば、１つの探索部は、複数の状態変数のうちの何れか２つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、２つの状態変数の値とに基づき、２つ状態変数の複数の組合せに対して、複数の状態変数の値に対する、ある状態変数の値の変化に応じたエネルギー値の変化を求める。当該探索部は、複数のエネルギー値の変化それぞれに、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、何れの状態変数の値の変化を受け入れるかを決定することで、複数の状態変数の値を決定する。当該探索部は、例えば、エネルギー値の初期値に対して、エネルギー値の変化を積算することで、決定された複数の状態変数の値に対応するエネルギー値を求める。あるいは、当該探索部は、複数の状態変数の値を所定の評価関数に代入して、決定された複数の状態変数の値に対応するエネルギー値を求めてもよい。他の探索部も、当該探索部と同様の処理を行う。
【００４０】
ここで、探索部１ａ１〜１ａＮにより出力されるエネルギーをＥ１〜ＥＮと表す。また、探索部１ａ１〜１ａＮに設定される温度をＴ１〜ＴＮと表す。Ｎ個の温度値は互いに異なる。例えば、温度値は、温度Ｔ１，Ｔ２，…，ＴＮの逆数である逆温度β１，β２，…，βＮでもよい。
【００４１】
温度Ｔ１，Ｔ２，…，ＴＮにおける最低温度ｔｍｐ＿ｍｉｎおよび最高温度ｔｍｐ＿ｍａｘは予め与えられる。設定される温度を、最低温度ｔｍｐ＿ｍｉｎから昇順に並べると、ｉ番目の温度ｔｍｐ［ｉ］（ｉは１以上の整数）は、例えば式（６）で表される。
【００４２】
【数６】
2020187453.tif 000008
【００４３】
ここで、ｄｅｎｏｍは、例えば式（７）で表される。
【００４４】
【数７】
2020187453.tif 000009
【００４５】
探索部１ａ１〜１ａＮは、並列に動作して、基底状態の探索を行う。探索部１ａ１〜１ａＮに設定される温度は、制御部１０によって制御される。
制御部１０は、探索部１ａ１〜１ａＮによる基底状態の探索を制御する。制御部１０は、交換回数決定部１１および温度制御部１２を有する。
【００４６】
交換回数決定部１１は、探索部１ａ１〜１ａＮが決定した複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、探索部１ａ１〜１ａＮに設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する。
【００４７】
温度制御部１２は、探索部１ａ１〜１ａＮの各々に対する温度をそれぞれ設定するとともに、探索部１ａ１〜１ａＮの間で、交換回数決定部１１により決定された交換回数だけ、設定された温度を交換する。温度制御部１２は、例えば、温度が隣り合う２つの探索部の各ペアにおいて、所定の交換周期（１つの状態変数の更新処理の一定回数到達又は一定時間経過後など）で式（５）の交換確率により、温度又は状態を交換する。ここで、「交換」の処理では、式（５）の交換確率に応じて温度又は状態が交換されるペアもあるし、式（５）の交換確率に応じて温度又は状態が交換されないペアもある。
【００４８】
温度差が大きくなるほど交換確率は低下する。このため、例えば、温度制御部１２は、各探索部を温度の昇順に並べたときの偶数番目（又は奇数番目）の探索部に着目して温度が隣接する探索部との間で温度の交換を行う。あるいは、１回の温度の交換は複数のサブ処理を含んでもよい。例えば、温度制御部１２は、まずは各探索部を温度の昇順に並べたときの偶数番目（又は奇数番目）の探索部に着目して温度が隣接する探索部との間で温度を交換する第１のサブ処理を行う。次に、温度制御部１２は、各探索部を温度の昇順に並べたときの奇数番目（又は偶数番目）の探索部に着目して温度が隣接する探索部との間で温度を交換する第２のサブ処理を行う。この場合、第１のサブ処理と第２のサブ処理とのセットが、１回分の温度の交換に相当する。ただし、ここで例示した交換の方法は一例であり、温度制御部１２は、他の方法で温度の交換を行ってもよい。
【００４９】
ここで、交換回数決定部１１による交換回数の決定例を説明する。
例えば、交換周期による交換タイミングにおいて、探索部１ａ１〜１ａＮに設定された温度Ｔ１〜ＴＮについて、Ｔ１＜Ｔ２＜Ｔ３＜Ｔ４＜…＜ＴＮであるとする。また、当該交換タイミングにおいて、探索部１ａ４により出力されたエネルギー値は、探索部１ａ１〜１ａＮが出力したエネルギー値の中で最低であるとする。図１のグラフＧ１は、各温度が設定された各探索部により出力されたエネルギー値を示す。グラフＧ１の横軸は温度Ｔであり、縦軸はエネルギーＥである。この場合、最も低いエネルギー値に対応する探索部１ａ４に設定された温度はＴ４である。また、探索部１ａ１〜１ａＮに設定された温度のうち最も低い温度はＴ１である。
【００５０】
したがって、交換回数決定部１１は、温度Ｔ４と温度Ｔ１との差異に基づき、交換回数を決定する。例えば、交換回数決定部１１は、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えてｃｎｔとしたときに、ｃｎｔに調整係数α（０＜α≦１）を乗じて整数値に丸めた値を交換回数とする。交換回数決定部１１は、交換回数＝ｍａｘ（ｃｎｔ×α，１）の計算によって交換回数を求めてもよい。ここで、ｍａｘ関数は、引数のうちの最大値を取ることを示す。調整係数αは交換回数決定部１１に予め与えられる。
【００５１】
上記の例では、最低エネルギーを取る探索部は探索部１ａ４である。また、最低温度の探索部は探索部１ａ１である。探索部１ａ１〜１ａＮを温度の昇順に並べると、探索部１ａ１，１ａ２，１ａ３，１ａ４，…，１ａＮである。探索部１ａ１，１ａ４に関する上記の例では、ｃｎｔ＝３である。一例として、α＝１とすると、交換回数決定部１１は、交換回数を３回と決定する。この場合、温度制御部１２は、今回の交換タイミングでは、温度の交換を３回実行する。
【００５２】
最適化装置１によれば、交換回数決定部１１により、探索部１ａ１〜１ａＮがそれぞれ出力したエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数が決定される。温度制御部１２により、探索部１ａ１〜１ａＮの各々に対する温度がそれぞれ設定されるとともに、探索部１ａ１〜１ａＮの間で、決定された交換回数だけ、設定された温度が交換される。
【００５３】
これにより、基底状態の探索を高速化することができる。
探索部１ａ１〜１ａＮにおいて最低エネルギーに対応する探索部では、当該探索部により保持される状態の近傍に更に良い解（更にエネルギーの低い状態）が存在する可能性が高い。そこで、最適化装置１は、最低エネルギーに対応する探索部の温度と、最低温度との差異に基づいて交換回数を決定することで、最低エネルギーを取る探索部を、素早く低温側にシフトさせることが可能になる。すると、最低エネルギーに対応する探索部においてエネルギー変化が比較的小さい状態遷移での探索が促され（エネルギー変化が比較的大きい状態遷移が抑えられ）、より良い解への到達可能性が高まる。こうして、探索部１ａ１〜１ａＮによる基底状態の探索の所要時間を短縮し、最低エネルギーへの到達を高速化できる。
【００５４】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の最適化装置の回路構成例を示す図である。
【００５５】
最適化装置２は、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のスピンビットのそれぞれの値の組合せ（状態）のうち、評価関数が最小値となるときの各スピンビットの値（基底状態）を探索する。
【００５６】
イジング型の評価関数Ｅ（ｘ）は、例えば、以下の式（８）で定義される。
【００５７】
【数８】
2020187453.tif 000010
【００５８】
右辺第１項は、イジングモデルに含まれる全スピンビットから選択可能な２つのスピンビットの全組合せについて、漏れと重複なく、２つのスピンビットの値（０又は１）と結合係数との積を積算したものである。イジングモデルに含まれる全スピンビット数をｎ個（ｎは２以上の整数）とする。一例では、ｎ＝１０２４である。また、ｉ，ｊの各々を、１以上ｎ以下の整数とする。ｘｉは、ｉ番目のスピンビットの値を表す変数（状態変数とも呼ばれる）である。ｘｊは、ｊ番目のスピンビットの値を表す変数である。Ｗｉｊは、ｉ番目とｊ番目のビットの相互作用の大きさを示す重み係数である。なお、Ｗｉｉ＝０である。また、Ｗｉｊ＝Ｗｊｉであることが多い（すなわち、重み係数による係数行列は対称行列である場合が多い）。
【００５９】
右辺第２項は、全スピンビットのそれぞれのバイアス係数とスピンビットの値との積の総和を求めたものである。ｂｉは、ｉ番目のスピンビットのバイアス係数を示している。
また、変数ｘｉの値が変化して１−ｘｉとなると、変数ｘｉの増加分は、δｘｉ＝（１−ｘｉ）−ｘｉ＝１−２ｘｉと表せる。したがって、スピン反転（値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（９）で表される。
【００６０】
【数９】
2020187453.tif 000011
【００６１】
ｈｉはローカルフィールド（局所場）と呼ばれ、式（１０）で表される。
【００６２】
【数１０】
2020187453.tif 000012
【００６３】
δｘｉに応じてローカルフィールドｈｉに符号（＋１又は−１）を乗じたものがエネルギー変化ΔＥｉとなる。ある変数ｘｊが変化したときのローカルフィールドｈｉの変化分δｈｉ（ｊ）は式（１１）で表される。
【００６４】
【数１１】
2020187453.tif 000013
【００６５】
ある変数ｘｊが変化したときのローカルフィールドｈｉを更新する処理は各変数に対して並列に行われる。
最適化装置２は、例えば、ＦＰＧＡなどの半導体集積回路を用いて実現される。最適化装置２は、探索部１０ａ１〜１０ａＮ、全体制御部２１、温度制御部２２および交換回数調整部２３を有する。
【００６６】
探索部１０ａ１〜１０ａＮは、第１の実施の形態の探索部１ａ１〜１ａＮに対応する。交換回数調整部２３は、第１の実施の形態の交換回数決定部１１に対応する。温度制御部２２は、第１の実施の形態の温度制御部１２に対応する。
【００６７】
探索部１０ａ１〜１０ａＮには、互いに異なる温度Ｔ１〜ＴＮが設定される。温度Ｔ１〜ＴＮは、例えば、予め与えられる最低温度ｔｍｐ＿ｍｉｎおよび最高温度ｔｍｐ＿ｍａｘを用いた式（６）、（７）に基づいて定められる。探索部１０ａ１〜１０ａＮの各々は、式（８）で表されるイジング型の評価関数に基づく基底状態探索を下記のような回路により実現する。以下では、探索部１０ａ１を主に説明するが、探索部１０ａ２〜１０ａＮも同様の回路構成となる。
【００６８】
探索部１０ａ１は、状態保持部１１ａ、レジスタ１２ａ１，１２ａ２，…，１２ａｎ、ｈ計算部１２ｂ１，１２ｂ２，…，１２ｂｎ、ΔＥ生成部１２ｃ１，１２ｃ２，…，１２ｃｎ、加算器１３ａ１，１３ａ２，…，１３ａｎ、状態遷移判定回路１３ｂ１，１３ｂ２，…，１３ｂｎ、セレクタ部１３ｃ、オフセット制御部１３ｄおよびＥ計算部１４ａを有する。
【００６９】
図２では、ｈ計算部１２ｂ１〜１２ｂｎに対し、ｉ番目のスピンビットに対応することが分かり易い様に「ｈｉ」計算部のように添え字ｉを付して名称を表記している。また、図２では、ΔＥ生成部１２ｃ１〜１２ｃｎに対し、ｉ番目のスピンビットに対応することが分かり易い様に「ΔＥｉ」計算部のように添え字ｉを付して名称を表記している。
【００７０】
ある探索部においてスピンビット列に含まれる何れかのスピンビットを反転させるかの判定および反転させる場合に該当のスピンビットを反転させる処理が、当該探索部による基底状態探索（確率的探索と言うこともある）の１回分の処理に相当する。当該１回分の処理は繰り返し実行される。探索部１０ａ１〜１０ａＮにより並列に実行される当該１回分の処理の繰り返し数をイタレーション数と言う。
【００７１】
ｎ個のスピンビットのうち、レジスタ１２ａ１、ｈ計算部１２ｂ１、ΔＥ生成部１２ｃ１、加算器１３ａ１および状態遷移判定回路１３ｂ１が１番目のスピンビットに関する演算を行う。また、レジスタ１２ａ２、ｈ計算部１２ｂ２、ΔＥ生成部１２ｃ２、加算器１３ａ２および状態遷移判定回路１３ｂ２が２番目のスピンビットに関する演算を行う。同様に、「１２ａ１」、「１２ｂ１」などの符号の末尾の数値ｉがｉ番目のスピンビットに対応する演算を行うことを示す。すなわち、１つの探索部は、レジスタ、ｈ計算部、ΔＥ生成部、加算器および状態遷移判定回路のセット（１スピンビットに関する演算を行う演算処理回路の一単位であり、「ニューロン」と呼ばれることもある）を、ｎ個有する。ｎ個のセットが並列に、各セットに対応するスピンビットに関する演算を行う。
【００７２】
以下では、主に、レジスタ１２ａ１、ｈ計算部１２ｂ１、ΔＥ生成部１２ｃ１、加算器１３ａ１および状態遷移判定回路１３ｂ１を例示して説明する。同名の構成であるレジスタ１２ａ２〜１２ａｎ、ｈ計算部１２ｂ２〜１２ｂｎ、ΔＥ生成部１２ｃ２〜１２ｃｎ、加算器１３ａ２〜１３ａｎおよび状態遷移判定回路１３ｂ２〜１３ｂｎも同様の機能である。
【００７３】
ここで、レジスタ１２ａ１、ｈ計算部１２ｂ１、ΔＥ生成部１２ｃ１、加算器１３ａ１および状態遷移判定回路１３ｂ１のセットに対応するスピンビットを自スピンビット、探索部１０ａ１で演算されるそれ以外のスピンビットを他スピンビットと称する。各スピンビットは、ｉｎｄｅｘと呼ばれる識別情報により識別される。例えば、ｉ番目のスピンビットのｉｎｄｅｘは、ｉである。
【００７４】
状態保持部１１ａは、探索部１０ａ１における状態（ビットステート）を保持する。ビットステートは、複数の状態変数（状態変数ｘ１，ｘ２，…，ｘｎ）で表される。ビットステートは、探索部１０ａ１におけるｎ個のスピンビットを含むスピンビット列である。図中、ビットステートをＢＳ（Bit States）と略記することがある。
【００７５】
レジスタ１２ａ１は、自スピンビットと他スピンビットとの間の重み係数Ｗ１ｊ（ｊ＝１〜ｎ）を記憶する記憶部である。ここで、スピンビット数ｎに対して、重み係数の総数はｎ２である。レジスタ１２ａ１にはｎ個の重み係数が格納される。また、重み係数Ｗｉｊの添え字ｉは、自スピンビットのｉｎｄｅｘを示し、重み係数Ｗｉｊの添え字ｊは、自スピンビットを含む何れかのスピンビットのｉｎｄｅｘを示す。
【００７６】
レジスタ１２ａ１は、自スピンビットに対して、ｎ個の重み係数Ｗ１１，Ｗ１２，…，Ｗ１ｎを記憶する。なお、Ｗｉｉ＝Ｗ１１＝０である。レジスタ１２ａ１は、セレクタ部１３ｃにより供給されるｉｎｄｅｘ＝ｊに対応する重み係数Ｗ１ｊをｈ計算部１２ｂ１に出力する。
【００７７】
ｈ計算部１２ｂ１は、レジスタ１２ａ１から供給される重み係数Ｗ１ｊを用いて、式（１０），（１１）に基づくローカルフィールドｈ１を計算する。例えば、ｈ計算部１２ｂ１は、前回計算されたローカルフィールドｈ１を保持するレジスタを有し、ｉｎｄｅｘ＝ｊで示されるスピンビットの反転方向に応じたδｈ１（ｊ）を、ｈ１に積算することで、当該レジスタに格納されるｈ１を更新する。ｉｎｄｅｘ＝ｊで示されるスピンビットの反転方向を示す信号は、セレクタ部１３ｃ又は状態保持部１１ａからｈ計算部１２ｂ１に供給されてもよい。ｈ１の初期値は、問題に応じて、ｈ計算部１２ｂ１のレジスタに予め設定される。また、ｂ１の値も、問題に応じて、ｈ計算部１２ｂ１のレジスタに予め設定される。ｈ計算部１２ｂ１は、計算したローカルフィールドｈ１をΔＥ生成部１２ｃ１およびＥ計算部１４ａに出力する。
【００７８】
ΔＥ生成部１２ｃ１は、ローカルフィールドｈ１を用いて、式（９）に基づき、自スピンビットの反転に応じたイジングモデルのエネルギー変化値ΔＥ１を生成する。ΔＥ生成部１２ｃ１は、例えば、状態保持部１１ａから供給される自スピンビットの現在の値から、自スピンビットの反転方向を判別してもよい（現在の値が０なら０から１が反転方向となり、現在の値が１なら１から０が反転方向となる）。ΔＥ生成部１２ｃ１は、生成したエネルギー変化値ΔＥ１を、加算器１３ａ１に出力する。ここで、後段の加算器１３ａ１での加算処理および状態遷移判定回路１３ｂ１での判定処理に応じて、ΔＥ生成部１２ｃ１は、エネルギー変化値ΔＥ１の符号を逆転したエネルギー変化値−ΔＥ１を、加算器１３ａ１に出力してもよい。本例では、ΔＥ生成部１２ｃ１は、エネルギー変化値として、−ΔＥ１を加算器１３ａ１に出力するものとする。
【００７９】
加算器１３ａ１は、ΔＥ生成部１２ｃ１から供給される−ΔＥ１とオフセット制御部１３ｄから供給されるオフセット値Ｅｏｆｆとを加算する。オフセット値Ｅｏｆｆは、後述されるように、状態遷移を促すためのパラメータであり、オフセット制御部１３ｄにより制御される。本例では、Ｅｏｆｆ≧０である。Ｅｏｆｆの初期値は０である。Ｅｏｆｆは、後述のオフセット制御部１３ｄにより漸増される。加算器１３ａ１は、加算結果（−ΔＥ１＋Ｅｏｆｆ）を状態遷移判定回路１３ｂ１に出力する。
【００８０】
状態遷移判定回路１３ｂ１は、加算器１３ａ１から供給されるエネルギー変化値とオフセットＥｏｆｆとの和（−ΔＥ１＋Ｅｏｆｆ）に応じて、自スピンビットの反転可否を示すフラグｆ１をセレクタ部１３ｃに出力する。具体的には、状態遷移判定回路１３ｂ１は、−ΔＥ１＋Ｅｏｆｆと温度に応じた熱ノイズとの比較に応じて、自スピンビットの反転可否を判定する。
【００８１】
ここで、状態遷移判定回路１３ｂ１による判定について説明する。
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔＥを引き起こす状態遷移の許容確率ｐ（ΔＥ，Ｔ）を前述の式（１）のように決める。式（１）においてＴは、温度である。温度Ｔは、温度制御部２２により状態遷移判定回路１３ｂ１に設定される。また、関数ｆとしては、式（２）（メトロポリス法）、又は、式（３）（ギブス法）が用いられる。
【００８２】
例えば、許容確率ｐ（ΔＥ，Ｔ）でエネルギー変化ΔＥを引き起こす状態遷移を許容することを示すフラグ（ｆｌｇ＝１）を出力する回路は、ｆ（−ΔＥ／Ｔ）と、区間［０，１）の値をとる一様乱数ｕとの比較に応じた値を出力する比較器により実現できる。
【００８３】
ただし、次のような変形を行っても同じ機能を実現可能である。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の２つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、ｆ（−ΔＥ／Ｔ）に作用させる単調増加関数としてｆ（−ΔＥ／Ｔ）の逆関数ｆ−１（−ΔＥ／Ｔ）、一様乱数ｕに作用させる単調増加関数としてｆ−１（−ΔＥ／Ｔ）の−ΔＥ／Ｔをｕとしたｆ−１（ｕ）を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路でよい。更に、温度パラメータＴが正であることから、状態遷移判定回路１３ｂ１は、−ΔＥがＴ・ｆ−１（ｕ）以上のとき（あるいは、ΔＥが−（Ｔ・ｆ−１（ｕ））以下のとき）、ｆｌｇ＝１を出力する回路でよい。
【００８４】
状態遷移判定回路１３ｂ１は、一様乱数ｕを生成し、上記のｆ−１（ｕ）の値に変換する変換テーブルを用いて、ｆ−１（ｕ）の値を生成する。メトロポリス法が適用される場合、ｆ−１（ｕ）は、式（１２）で与えられる。また、ギブス法が適用される場合、ｆ−１（ｕ）は、式（１３）で与えられる。
【００８５】
【数１２】
2020187453.tif 000014
【００８６】
【数１３】
2020187453.tif 000015
【００８７】
変換テーブルは、例えば、状態遷移判定回路１３ｂ１が有するレジスタに記憶される。状態遷移判定回路１３ｂ１は、温度パラメータＴと、ｆ−１（ｕ）との積（Ｔ・ｆ−１（ｕ））を生成し、−ΔＥ１＋Ｅｏｆｆと比較する。ここで、Ｔ・ｆ−１（ｕ）は、熱ノイズに相当する。状態遷移判定回路１３ｂ１は、（−ΔＥ１＋Ｅｏｆｆ）≧Ｔ・ｆ−１（ｕ）の場合にフラグｆ１＝１（遷移可）をセレクタ部１３ｃに出力する。状態遷移判定回路１３ｂ１は、（−ΔＥ１＋Ｅｏｆｆ）＜Ｔ・ｆ−１（ｕ）の場合にフラグｆ１＝０（遷移不可）をセレクタ部１３ｃに出力する。
【００８８】
状態遷移判定回路１３ｂ１は、（−ΔＥ１＋Ｅｏｆｆ）≧Ｔ・ｆ−１（ｕ）を変形して、温度に対応するノイズ値Ｔ・ｆ−１（ｕ）を（ΔＥ１−Ｅｏｆｆ）に加算して得られる評価値と閾値（例えば０）との比較に応じて、遷移可否を示すフラグを出力してもよい。
【００８９】
セレクタ部１３ｃは、状態遷移判定回路１３ｂ１〜１３ｂｎの各々から出力された遷移可否を示すフラグを受け付ける。セレクタ部１３ｃは、状態遷移判定回路１３ｂ１〜１３ｂｎの各々から出力されたフラグに遷移可を示すフラグがある場合には、遷移可を示す何れか１つのフラグを選択する。セレクタ部１３ｃは、状態遷移判定回路１３ｂ１〜１３ｂｎの各々から出力されたフラグに遷移可を示すフラグがない場合には、１つの所定のフラグを選択する。
【００９０】
セレクタ部１３ｃは、遷移可否を示すフラグと、選択したフラグに対応するスピンビットを示すｉｎｄｅｘ＝ｊとを含む更新信号（ｕｐｄａｔｅ）を状態保持部１１ａに出力する。それとともに、セレクタ部１３ｃは、選択した遷移可否を示すフラグをオフセット制御部１３ｄに出力し、選択したフラグに対応するｉｎｄｅｘ＝ｊを、レジスタ１２ａ１〜１２ａｎの各々に出力する。
【００９１】
オフセット制御部１３ｄは、セレクタ部１３ｃから出力される遷移可否を示すフラグに基づいて、加算器１３ａ１〜１３ａｎの各々に供給するオフセット値を制御する。具体的には、オフセット制御部１３ｄは、セレクタ部１３ｃから出力されるフラグが遷移可を示す場合、オフセット値を０にリセットする。オフセット制御部１３ｄは、セレクタ部１３ｃから出力されるフラグが遷移不可を示す場合、オフセット値に増分値ΔＥｏｆｆを加算する。当該フラグが連続して遷移不可を示す場合、オフセット制御部１３ｄは、ΔＥｏｆｆを積算することで、ＥｏｆｆをΔＥｏｆｆずつ増加させる。
【００９２】
セレクタ部１３ｃから出力されるフラグが遷移不可を示す場合、現在の状態が局所解に陥っていると考えられる。−ΔＥ１へのオフセット値の加算や加算するオフセット値の漸増により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【００９３】
状態保持部１１ａは、セレクタ部１３ｃから出力されるフラグとｉｎｄｅｘとに基づいて、状態保持部１１ａが有するレジスタにより保持されるビットステート（ｘ１，ｘ２，…，ｘｎ）を更新する。状態保持部１１ａは、現在のビットステートをＥ計算部１４ａに出力する。状態保持部１１ａは、探索部１０ａ１における探索処理の完了時におけるビットステートを全体制御部２１に出力する。
【００９４】
Ｅ計算部１４ａは、ｈ計算部１２ｂ１〜１２ｂｎの各々から出力されるローカルフィールドｈ１〜ｈｎおよび状態保持部１１ａから出力されるビットステート（ｘ１〜ｘｎ）に基づいて、探索部１０ａ１におけるイジングモデルの現在のエネルギー値Ｅ１を計算する。エネルギー値Ｅ１は、式（８）の評価関数で定義されるエネルギー値（単にエネルギーと言うこともある）である。Ｅ計算部１４ａは、ローカルフィールドｈｉとビットステートｘｉとの積和により探索部１０ａ１におけるエネルギー値Ｅ１を計算する。Ｅ計算部１４ａは、探索部１０ａ１における所定回数又は所定期間の探索処理が完了すると、計算したエネルギー値Ｅ１を、温度制御部２２および交換回数調整部２３に出力する。
【００９５】
全体制御部２１は、最適化装置２の全体の動作を制御する。全体制御部２１は、温度の交換回数の初期値を示す交換回数指定信号、および、調整係数α（０＜α≦１）の外部からの入力を受け付ける。調整係数αは、交換回数調整部２３による交換回数調整に用いられるパラメータである。全体制御部２１は、交換回数指定信号および調整係数αを温度制御部２２に供給する。
【００９６】
全体制御部２１は、起動信号の入力を受け付けると、温度制御部２２に起動信号を出力し、探索部１０ａ１〜１０ａＮを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部２１は、演算が終了すると、探索部１０ａ１〜１０ａＮの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部２１は、演算の終了を示す終了信号を外部に出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部２１は、最適化装置２に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【００９７】
温度制御部２２は、探索部１０ａ１〜１０ａＮの各々に供給する温度を制御する。温度制御部２２は、温度を示す温度情報と、温度の設定信号（Ｔ  ｓｅｔ  ｓｉｇ．）とを、探索部１０ａ１〜１０ａＮの各々が有する状態遷移判定回路に供給する。
【００９８】
また、温度制御部２２は、探索部１０ａ１〜１０ａＮにおける温度の交換（温度交換）を制御する。温度制御部２２は、式（５）の交換確率に基づいて、温度が隣接する探索部のペア（２つの探索部の組）に関し、温度交換（すなわち、レプリカ交換）を行うか否かをペア毎に判定する。温度制御部２２は、交換後の温度を、各探索部に供給する。交換タイミングでの温度の交換回数の初期値は、全体制御部２１により供給される。また、交換タイミングでの温度の交換回数は、交換回数調整部２３により更新される。
【００９９】
例えば、温度制御部２２は、温度の識別情報（温度インデックス又は温度番号と言う）と、温度とを対応付けた第１の対応情報を、温度制御部２２が有するレジスタに保持する。例えば、温度インデックスは、温度の昇順に温度に対応付けられる（温度インデックスが大きいほど温度も高い）。更に、温度制御部２２は、例えば昇順に配列された温度インデックスと探索部１０ａ１〜１０ａＮの各々の識別番号とを対応付けた第２の対応情報を、温度制御部２２が有するレジスタに保持する。この場合、第２の対応情報で隣接する温度インデックスに対応する探索部のペアは、設定された温度が隣接することになる。温度制御部２２は、第１の対応情報および第２の対応情報に基づいて、探索部１０ａ１〜１０ａＮに対する温度交換を制御し、交換に応じて、第２の対応情報を更新する。温度制御部２２は、第１の対応情報および第２の対応情報に基づいて、各探索部に温度を供給する。
【０１００】
ただし、温度制御部２２は、探索部１０ａ１〜１０ａＮの各々の識別番号と温度値とを対応付けた対応情報を保持し、当該対応情報を温度値でソートすることで、設定された温度が隣接する探索部のペアを特定することもできる。
【０１０１】
交換回数調整部２３は、所定のレプリカ交換周期で、温度制御部２２による温度交換回数を調整する。交換回数調整部２３は、レプリカ交換周期に基づく交換タイミングにおいて探索部１０ａ１〜１０ａＮから供給されるエネルギーＥｉ（ｉ＝１〜Ｎ）と温度制御部２２から供給される探索部１０ａ１〜１０ａＮの各々の温度とに基づいて、温度交換回数を決定する。具体的には、交換回数調整部２３は、温度Ｔ１〜ＴＮのうち、最低エネルギーを取る探索部の温度と最低温度との差異と、調整係数αとに基づいて、温度交換回数を決定する。交換回数調整部２３は、決定した交換回数を示す交換回数更新信号を温度制御部２２に出力する。
【０１０２】
次に、状態遷移判定回路１３ｂ１〜１３ｂｎの回路構成を説明する。以下では、状態遷移判定回路１３ｂ１を例示して説明するが、他の状態遷移判定回路も同様の回路構成である。
【０１０３】
図３は、状態遷移判定回路の回路構成例を示す図である。
状態遷移判定回路１３ｂ１は、乱数生成部１１１、ノイズ値生成部１１２、加算器１１３および比較器１１４を有する。
【０１０４】
乱数生成部１１１は、一様乱数ｕを生成し、ノイズ値生成部１１２に出力する。
ノイズ値生成部１１２は、一様乱数ｕと、温度制御部２２により供給された温度Ｔ１を示す温度情報とを用いて、前述の変換テーブルにより、式（１２）（又は、式（１３））に基づくノイズ値（熱ノイズ）に対応する−Ｔ・ｆ−１（ｕ）の値を生成する。ノイズ値生成部１１２は、生成した−Ｔ・ｆ−１（ｕ）の値を加算器１１３に出力する。例えば、式（１２）を用いる場合、ノイズ値生成部１１２は、−Ｔ・ｌｎ（ｕ）を生成し、加算器１１３に出力する。
【０１０５】
加算器１１３は、加算器１３ａ１により出力された（−ΔＥ１＋Ｅｏｆｆ）と、−Ｔ・ｌｎ（ｕ）とを加算することで評価値を計算し、当該評価値を比較器１１４に出力する。
比較器１１４は、加算器１３ａ１により出力された評価値を閾値（具体的には０）と比較する。比較器１１４は、評価値が０以上の場合（（−ΔＥ１＋Ｅｏｆｆ）−Ｔ・ｌｎ（ｕ）≧０の場合）、遷移可を示すフラグ（ｏｕｔ＝ｆ１＝１）を、セレクタ部１３ｃに出力する。比較器１１４は、評価値が０未満の場合（（−ΔＥ１＋Ｅｏｆｆ）−Ｔ・ｌｎ（ｕ）＜０の場合）、遷移不可を示すフラグ（ｏｕｔ＝ｆ１＝０）を、セレクタ部１３ｃに出力する。なお、上記の判定は、（ΔＥ１−Ｅｏｆｆ）＋Ｔ・ｌｎ（ｕ）≦０の判定式が真の場合に遷移可、当該判定式が偽の場合に遷移不可と判定することと同じである。すなわち、状態遷移判定回路１３ｂ１は、温度に対応するノイズ値Ｔ・ｌｎ（ｕ）を（ΔＥ１−Ｅｏｆｆ）に加算して得られる評価値と閾値（＝０）との比較に応じて、遷移可否を示すフラグを出力してもよい。
【０１０６】
次に、セレクタ部１３ｃの回路構成例を説明する。
図４は、セレクタ部の回路構成例を示す図である。
セレクタ部１３ｃは、複数段にわたってツリー状に接続された複数の選択回路および乱数ビット生成部３２ａ，３２ｂ，３２ｃ，…，３２ｒを有する。乱数ビット生成部３２ａ〜３２ｒは、ツリー状に接続された複数の選択回路の段毎に設けられる。乱数ビット生成部３２ａ〜３２ｒの各々は、０又は１の値をとる１ビット乱数を生成し、各段の選択回路に供給する。１ビット乱数は、入力されたフラグのペアのうちの何れか一方を選択するために用いられる。
【０１０７】
初段の選択回路３１ａ１，３１ａ２，３１ａ３，３１ａ４，…，３１ａｐの各々には、状態遷移判定回路１３ｂ１〜１３ｂｎの各々が出力する遷移可否を示すフラグの組が入力される。例えば、選択回路３１ａ１には、１番目の状態遷移判定回路１３ｂ１が出力するフラグと、２番目の状態遷移判定回路１３ｂ２が出力するフラグとのペアが入力される。また、選択回路３１ａ２には、３番目の状態遷移判定回路が出力するフラグと、４番目の状態遷移判定回路が出力するフラグとのペアが入力される。以降、同様にして、選択回路３１ａｐには、ｎ−１番目の状態遷移判定回路が出力するフラグと、ｎ番目の状態遷移判定回路１３ｂｎが出力するフラグとのペアが入力される。このように、隣り合う状態遷移判定回路が出力するフラグのペアが初段の選択回路に入力される。初段の選択回路３１ａ１〜３１ａｐの数は、ｎ／２となる。以降、段を経る毎に選択回路の数は半分になる。
【０１０８】
選択回路３１ａ１〜３１ａｐの各々は、入力されたフラグのペアと、乱数ビット生成部３２ａが出力する１ビット乱数に基づいて、入力されたフラグのペアのうちの一方を選択する。選択回路３１ａ１〜３１ａｐの各々は、選択したフラグと選択したフラグに対応する１ビットの識別値とを含む状態信号を、２段目の選択回路３１ｂ１〜３１ｂｑに出力する。例えば、選択回路３１ａ１が出力する状態信号と、選択回路３１ａ２が出力する状態信号とが選択回路３１ｂ１に入力される。同様に、選択回路３１ａ１〜３１ａｐの隣り合う選択回路が出力する状態信号のペアが、２段目の選択回路に入力される。
【０１０９】
選択回路３１ｂ１〜３１ｂｑの各々は、入力された状態信号のペアと、乱数ビット生成部３２ｂが出力する１ビット乱数に基づいて、入力された状態信号のうちの一方を選択する。選択回路３１ｂ１〜３１ｂｑの各々は、選択した状態信号を、３段目の選択回路３１ｃ１，…に出力する。ここで、選択回路３１ｂ１〜３１ｂｑは、選択した方の状態信号に含まれる状態信号について、何れの状態信号を選択したかを示すように１ビットを付加して更新し、選択した状態信号を出力する。
【０１１０】
３段目以降の選択回路においても同様の処理が行われ、各段の選択回路で１ビットずつ識別値のビット幅が増えていき、最終段の選択回路３１ｒから、セレクタ部１３ｃの出力である状態信号が出力される。セレクタ部１３ｃが出力する状態信号に含まれる識別値が、２進数で表されたｉｎｄｅｘに対応する。ただし、図４で示す回路構成例では、探索部のｉｎｄｅｘを０〜１０２３とする場合としている。選択回路３１ｒが出力する識別値に１を加算した値が、図２で示されるｊに相当する。
【０１１１】
例えば、図４では、選択回路３１ｂｑの回路構成例が示されている。２段目以降の他の選択回路も、選択回路３１ｂｑと同様の回路構成により実現される。
選択回路３１ｂｑの入力は、１つ目の状態信号（ｓｔａｔｕｓ＿１）と、２つ目の状態信号（ｓｔａｔｕｓ＿２）である。選択回路３１ｂ１の出力は、状態信号（ｓｔａｔｕｓ）である。選択回路３１ｂｑは、ＯＲ回路１３１、ＮＡＮＤ回路１３２およびセレクタ１３３，１３４を有する。
【０１１２】
ＯＲ回路１３１には、状態信号（ｓｔａｔｕｓ＿１）に含まれるフラグ（ｆｌａｇ１）と、状態信号（ｓｔａｔｕｓ＿２）に含まれるフラグ（ｆｌａｇ２）とが入力される。例えば、状態信号（ｓｔａｔｕｓ＿１）が前段の２つの選択回路のうちの上位側（ｉｎｄｅｘの大きい側）の出力、状態信号（ｓｔａｔｕｓ＿２）が前段の２つの選択回路のうちの下位側（ｉｎｄｅｘの小さい側）の出力である。ＯＲ回路１３１は、ｆｌａｇ１とｆｌａｇ２とのＯＲ演算結果（ｆｌａｇ）を出力する。
【０１１３】
ＮＡＮＤ回路１３２には、ｆｌａｇ１とｆｌａｇ２とが入力される。ＮＡＮＤ回路１３２は、ｆｌａｇ１とｆｌａｇ２とのＮＡＮＤ演算結果を、セレクタ１３３の選択信号入力端子に出力する。
【０１１４】
セレクタ１３３には、ｆｌａｇ１と１ビット乱数（ｒａｎｄ）とが入力される。セレクタ１３３は、ＮＡＮＤ回路１３２から入力されるＮＡＮＤ演算結果に基づいて、ｆｌａｇ１又はｒａｎｄの何れかを選択し、出力する。例えば、セレクタ１３３は、ＮＡＮＤ回路１３２のＮＡＮＤ演算結果が「１」の場合、ｆｌａｇ１を選択し、ＮＡＮＤ回路１３２のＮＡＮＤ演算結果が「０」の場合、ｒａｎｄを選択する。
【０１１５】
セレクタ１３４には、状態信号（ｓｔａｔｕｓ＿１）に含まれる識別値（ｉｎｄｅｘ１）と、状態信号（ｓｔａｔｕｓ＿２）に含まれる識別値（ｉｎｄｅｘ２）とが入力される。セレクタ１３４の選択信号入力端子には、セレクタ１３３の選択結果が入力される。セレクタ１３４は、セレクタ１３３の選択結果に基づいて、ｉｎｄｅｘ１又はｉｎｄｅｘ２の何れかを選択し、出力する。例えば、セレクタ１３４は、セレクタ１３３の選択結果が「１」の場合、ｉｎｄｅｘ１を選択し、セレクタ１３３の選択結果が「０」の場合、ｉｎｄｅｘ２を選択する。
【０１１６】
ＯＲ回路１３１およびセレクタ１３３，１３４の出力の組が、選択回路３１ｂｑが出力する状態信号（ｓｔａｔｕｓ）となる。
なお、初段の選択回路の入力は識別値を含まない。このため、初段の選択回路は、識別値（図中ではｉｎｄｅｘと表記）として、選択した方に対応するビット値（下位側の場合に「０」、上位側の場合に「１」）を追加して出力する回路となる。
【０１１７】
このように、セレクタ部１３ｃは、遷移可であるスピンビットから１つをトーナメント方式で選択する。トーナメントの各試合（すなわち、各選択回路での選択）では、勝った方（すなわち、選択された方）のエントリ番号（０又は１）をｉｎｄｅｘ  ｗｏｒｄの上位ビットに付け加えていく。最終段の選択回路３１ｒが出力するｉｎｄｅｘが選ばれたスピンビットを示す。例えば、１つの探索部におけるスピンビットの数が１０２４個の場合、最終段の選択回路３１ｒが出力する状態信号は、遷移可否を示すフラグと、１０ビットで表されるｉｎｄｅｘとを含む。
【０１１８】
ただし、ｉｎｄｅｘの出力方法は、上記のようにセレクタ部１３ｃで生成する方法以外の方法も考えられる。例えば、状態遷移判定回路１３ｂ１〜１３ｂｎの各々からセレクタ部１３ｃに各状態遷移判定回路に対応するｉｎｄｅｘを供給し、セレクタ部１３ｃにより遷移可否を示すフラグとともに、当該フラグに対応するｉｎｄｅｘを選択してもよい。この場合、状態遷移判定回路１３ｂ１〜１３ｂｎの各々は、自身に対応するｉｎｄｅｘを格納するｉｎｄｅｘレジスタを更に有し、ｉｎｄｅｘレジスタからセレクタ部１３ｃにｉｎｄｅｘを供給する。
【０１１９】
図５は、交換回数調整部の回路構成例を示す図である。
交換回数調整部２３は、最低エネルギー検出部２３１および交換回数決定部２３２を有する。
【０１２０】
最低エネルギー検出部２３１は、レプリカ交換周期で発生する交換タイミングにおいて、探索部１０ａ１〜１０ａＮの各々からエネルギーＥｉを取得する。最低エネルギー検出部２３１は、取得したエネルギーから最低エネルギーを検出し、当該最低エネルギーに対応する探索部の識別情報を交換回数決定部２３２に供給する。
【０１２１】
交換回数決定部２３２は、温度制御部２２から探索部１０ａ１〜１０ａＮの各々に設定された温度と、調整係数αとを取得する。また、交換回数決定部２３２は、最低エネルギー検出部２３１から最低エネルギーの探索部の識別情報を取得する。
【０１２２】
交換回数決定部２３２は、探索部１０ａ１〜１０ａＮのうち、最低エネルギーの探索部に設定されている温度を特定する。また、交換回数決定部２３２は、探索部１０ａ１〜１０ａＮに設定されている温度のうちの最低温度を特定する。交換回数決定部２３２は、最低エネルギーの探索部に設定されている温度と最低温度との差異が大きいほど、交換回数を多くする。
【０１２３】
具体的には、交換回数決定部２３２は、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えてｃｎｔとしたときに、ｃｎｔに調整係数α（０＜α≦１）を乗じて整数値に丸めた値を交換回数ｃとする。整数値に丸める方法としては、例えば、小数点第１位を四捨五入する、切捨てる、又は切上げるなどの方法が考えられる。交換回数決定部２３２は、交換回数ｃ＝ｍａｘ（ｃｎｔ×α，１）の計算によって交換回数ｃを求めてもよい。交換回数決定部２３２は、決定した交換回数ｃを示す交換回数更新信号を温度制御部２２に供給する。
【０１２４】
このように、交換回数決定部２３２は、最低温度から、最も低いエネルギー値に対応する探索部に設定された温度までの設定対象の温度の個数（ｃｎｔ）を、温度の差異として取得し、当該差異に基づき、交換回数ｃを決定する。例えば、交換回数決定部２３２は、当該個数（ｃｎｔ）に係数（α）を乗じて得られる値を交換回数と決定する。
【０１２５】
図６は、レプリカ交換回数の決定例を示す図である。
グラフＧ１０は、交換タイミングにおいて、探索部１０ａ１〜１０ａＮの各々に設定された温度Ｔと、探索部１０ａ１〜１０ａＮの各々により出力されたエネルギーＥとの関係を示す。グラフＧ１０の横軸は温度Ｔであり、縦軸はエネルギーＥである。図６では、交換回数ｃ＝３の場合が例示されている。また、最低エネルギーの探索部に設定されている温度は、Ｔｋ＋２である。温度Ｔｋ＋１は、Ｔｋ＋２よりも一段階低い温度である。Ｔｋは、Ｔｋ＋２よりも二段階低い温度である。Ｔｋ−１は、Ｔｋ＋２よりも三段階低い温度である。一例では、交換回数ｃ＝３の場合、今回の交換タイミングにおいて、最低エネルギーを取る探索部は、最大で三段階、温度が下げられることが期待される。
【０１２６】
こうして、最適化装置２は、最低エネルギーを取る探索部の温度と最低温度との差異を基準としてレプリカ交換の交換回数を決定することで、最低エネルギーを取る探索部に設定される温度が比較的早く低温側にシフトする可能性を高められる。
【０１２７】
次に、最適化装置２の処理手順を説明する。
図７は、レプリカ交換の全体制御例を示すフローチャートである。
（Ｓ１）全体制御部２１は、入力データとして初期温度と調整係数αとを外部から取得する。また、全体制御部２１は、交換回数の初期値を示す交換回数指定信号を外部から取得する。全体制御部２１は、初期温度を含む起動信号と、交換回数指定信号と調整係数αとを温度制御部２２に出力する。
【０１２８】
（Ｓ２）温度制御部２２は、全体制御部２１からの起動信号を受けて、探索部１０ａ１〜１０ａＮの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部１０ａ１〜１０ａＮの各々による確率的探索の処理を実行させる。探索部１０ａ１〜１０ａＮの各々による処理（探索部処理）の詳細は後述される。
【０１２９】
（Ｓ３）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部１０ａ１〜１０ａＮの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【０１３０】
（Ｓ４）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度と、調整係数αとを温度制御部２２から取得する。交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数ｃを決定する。例えば、交換回数調整部２３は、図５で例示した最低エネルギー検出部２３１の機能により、最低エネルギーおよび最低エネルギーを取る探索部を検出する。また、交換回数調整部２３は、図５で例示した交換回数決定部２３２の機能により、交換回数ｃ＝ｍａｘ（ｃｎｔ×α，１）の計算により交換回数ｃを決定する。交換回数調整部２３は、決定した交換回数ｃを示す交換回数更新信号を温度制御部２２に出力する。温度制御部２２は、交換回数のカウント数を０に初期化する。
【０１３１】
（Ｓ５）探索部１０ａ１〜１０ａＮは、隣接探索部間のエネルギーを温度制御部２２に伝達する。温度制御部２２は、探索部１０ａ１〜１０ａＮで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【０１３２】
（Ｓ６）温度制御部２２は、交換回数のカウント数をインクリメントし、ある探索部について温度が隣接する探索部と温度の交換を行うか否かを判定する。温度制御部２２は、交換を行うか否かを、探索部のペア毎に、式（５）の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップＳ７に処理が進む。探索部のペアについて交換を行わない場合、ステップＳ８に処理が進む。
【０１３３】
（Ｓ７）温度制御部２２は、ステップＳ６で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部２２は、ステップＳ６で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。
【０１３４】
（Ｓ８）温度制御部２２は、温度の交換回数のカウント数がｃに到達したか否かを判定する。交換回数のカウント数がｃに到達した場合、ステップＳ９に処理が進む。交換回数のカウント数がｃに到達していない場合、ステップＳ６に処理が進む。
【０１３５】
（Ｓ９）全体制御部２１は、探索部１０ａ１〜１０ａＮからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部２１は、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部２１は、ステップＳ２に処理を進め、確率的探索の処理を継続する。
【０１３６】
例えば、全体制御部２１は、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部２１は、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【０１３７】
また、上記の例では、最適化装置２は、ステップＳ２の探索部処理が終了する毎に、交換回数ｃを決定するものとしたが、探索部処理を複数回繰り返した後に交換回数ｃを決定してもよい。また、最適化装置２は、全イタレーションのうちの前半で交換回数ｃを決定し、全イタレーションのうちの後半で、前半で決定された交換回数ｃを使用し、交換回数ｃの新たな決定を行わなくてもよい。
【０１３８】
ここで、ステップＳ７における１回分の交換処理（１度の交換タイミングで実行される交換処理）の例には、種々のパターンが考えられる。温度が離れる（温度差が大きい）と、式（５）に基づく交換確率が低下するため、温度制御部２２は、温度が隣接する探索部のペアで交換を行うものとする。
【０１３９】
第１のパターンでは、１度の交換タイミングにおいて、温度の昇順又は降順に探索部を並べたときの偶数番目、又は奇数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部（着目する番号より１つ小さい方又は１つ大きい方）と交換を行う。
【０１４０】
第２のパターンでは、１度の交換タイミングにおいて、次の第１のサブ処理および第２のサブ処理を順に行う。第１のサブ処理では、温度の昇順又は降順に探索部を並べたときの偶数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部と交換を行う。第２のサブ処理では、温度の昇順又は降順に探索部を並べたときの奇数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部と交換を行う。
【０１４１】
１回分の交換処理は、第１のパターンおよび第２のパターン以外のパターンでもよい。
例えば、１回分の交換処理を温度の昇順又は降順に探索部を並べたときに順に着目する探索部の番号の偶奇により（偶数・奇数）のように記述するとする。この場合、（偶数・奇数）−（偶数・奇数）−…の記述は、上記の第２のパターンを、各交換タイミングにおいて、繰り返し実行することを示す。
【０１４２】
第３のパターンでは、（奇数・偶数）−（奇数・偶数）−…と、各交換タイミングにおいて着目する番号の偶奇の順を第２のパターンとは逆順にする。
第４のパターンでは、（奇数・偶数）−（偶数・奇数）−（奇数・偶数）−…と、着目する番号の偶奇の順を、交換タイミング毎に入れ替える。
【０１４３】
第５のパターンでは、（奇数・偶数・奇数）−（偶数・奇数・偶数）−（奇数・偶数・奇数）−…と、１回分の交換処理でサブ処理を３回実行し、着目する偶奇の順序を、交換タイミング毎に入れ替える。
【０１４４】
上記の１回分の交換処理のパターンは一例であり、上記以外にも種々のパターンを用いることができる。例えば、１回分の交換処理に含まれるサブ処理の実行回数は４回以上でもよい。
【０１４５】
図８は、探索部処理例を示すフローチャートである。
探索部処理は、ステップＳ２に相当する。
（Ｓ１０）温度制御部２２は、探索部１０ａ１〜１０ａＮの各々に温度を設定する。例えば、温度制御部２２は、前述の温度インデックスと温度とを対応付けた第１の対応情報および温度インデックスと探索部の識別情報とを対応付けた第２の対応情報に基づいて、探索部１０ａ１〜１０ａＮの各々に温度を設定する。あるいは、温度制御部２２は、前述のように、探索部の識別情報と温度とを対応付けた対応情報に基づいて、探索部１０ａ１〜１０ａＮの各々に温度を設定してもよい。なお、探索部１０ａ１〜１０ａＮの各々に設定される温度の初期値は、問題などに応じて予め定められる。
【０１４６】
（Ｓ１１）探索部１０ａ１〜１０ａＮの各々は、スピンビット毎にローカルフィールドを計算する。例えば、探索部１０ａ１に着目すると、ｈ計算部１２ｂ１〜１２ｂｎは、ローカルフィールドｈ１〜ｈｎを計算する。ローカルフィールドｈは、式（１０）に基づいて計算される。なお、式（１０）によりローカルフィールドｈが計算された後は、例えば、式（１１）で示される差分δｈをローカルフィールドｈに加算することで、更新後のローカルフィールドｈ＝ｈ＋δｈを求めることができる。
【０１４７】
（Ｓ１２）探索部１０ａ１〜１０ａＮの各々は、計算したローカルフィールドｈに基づいて、スピンビット毎にエネルギーの変化値ΔＥを計算する。例えば、探索部１０ａ１に着目すると、ΔＥ生成部１２ｃ１〜１２ｃｎは、エネルギーの変化値ΔＥ１〜ΔＥｎを計算する。ΔＥは、式（９）に基づいて計算される。
【０１４８】
（Ｓ１３）探索部１０ａ１〜１０ａＮの各々は、エネルギーの変化値−ΔＥにオフセット値Ｅｏｆｆを加算する。例えば、探索部１０ａ１に着目すると、加算器１３ａ１〜１３ａｎは、−ΔＥ１〜−ΔＥｎに対して、オフセット値Ｅｏｆｆを加算する。オフセット値Ｅｏｆｆは、前述のように、オフセット制御部１３ｄにより制御される。例えば、オフセット制御部１３ｄは、セレクタ部１３ｃにより出力される遷移可否を示すフラグが遷移不可を示す場合に、０より大きいオフセット値Ｅｏｆｆを加算器１３ａ１〜１３ａｎに供給する。オフセット制御部１３ｄは、当該フラグが遷移可を示す場合に、オフセット値Ｅｏｆｆ＝０を加算器１３ａ１〜１３ａｎに供給する。
【０１４９】
（Ｓ１４）探索部１０ａ１〜１０ａＮの各々は、反転候補のスピンビットのうち、反転させるスピンビットを選択する。例えば、探索部１０ａ１に着目すると、状態遷移判定回路１３ｂ１〜１３ｂｎの各々は、該当の状態遷移判定回路に対応するスピンビットの遷移可否を示すフラグをセレクタ部１３ｃに出力する。セレクタ部１３ｃは、入力されたフラグの中から１つを選択し、選択したフラグと、選択したフラグに対応するスピンビットを示すｉｎｄｅｘとを出力する。
【０１５０】
（Ｓ１５）探索部１０ａ１〜１０ａＮの各々は、選択されたスピン（スピンビット）を反転させる。例えば、探索部１０ａ１に着目すると、状態保持部１１ａは、セレクタ部１３ｃにより出力されたフラグと、ｉｎｄｅｘとに基づいて、ビットステートに含まれるスピンビットのうち、ｉｎｄｅｘで示されるスピンビットの値を更新する。
【０１５１】
（Ｓ１６）探索部１０ａ１〜１０ａＮの各々は、ステップＳ１０の直後の確率的探索の開始時点から、規定のイタレーション回数に到達したか、又は、規定時間が経過したか否かを判定する。規定のイタレーション回数に到達した、又は、規定時間が経過した場合、ステップＳ１７に処理が進む。規定のイタレーション回数に到達しておらず、かつ、規定時間も経過していない場合、ステップＳ１１に処理が進む。
【０１５２】
（Ｓ１７）探索部１０ａ１〜１０ａＮの各々は、該当の探索部におけるエネルギー値（Ｅ１〜ＥＮ）を計算し、温度制御部２２および交換回数調整部２３に出力する。そして、探索部処理が終了する。
【０１５３】
図９は、温度と解のエネルギーとの関係の例を示す図である。
図９（Ａ）は、交換回数を２回と予め決定した場合における比較例のグラフＧ１１を示す。図９（Ｂ）は、交換回数調整部２３により交換回数を３回と決定した場合のグラフＧ１２を示す。グラフＧ１１，Ｇ１２は、何れも、探索部に設定された温度と、探索部から得られた解（ビットステート）に対応するエネルギーとの関係を示す。グラフＧ１１，Ｇ１２のそれぞれの横軸は温度であり、縦軸はエネルギーである。
【０１５４】
グラフＧ１１，Ｇ１２は、確率的探索（図８の探索部処理）における規定のイタレーション回数を１０００回とし、イタレーション回数が５００００回に達したときの結果である。グラフＧ１１，Ｇ１２を比較すると、交換回数を２回と予め決定した場合よりも、交換回数調整部２３により交換回数を３回と決定した場合の方が、低いエネルギーを取る探索部が多いことが分かる。
【０１５５】
このように、最適化装置２によれば、基底状態の探索を高速化することができる。
ここで、最適化装置２のハードウェア構成として、次の例も考えられる。
図１０は、最適化装置の他の構成例を示す図である。
【０１５６】
最適化装置２ａは、ＣＰＵ１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、ＮＩＣ（Network Interface Card）１０４、出力ＩＦ（Interface）１０５、入力ＩＦ１０６、媒体リーダ１０７、入出力部１０８および確率的探索部１０９を有する。最適化装置２ａのこれらのハードウェアは最適化装置２ａのバスに接続される。
【０１５７】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、最適化装置２ａは複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」又は単に「プロセッサ」と言うことがある。ＣＰＵ１０１は、例えば、全体制御部２１および交換回数調整部２３の機能をＣＰＵ１０１により実行されるソフトウェア（制御プログラム）の処理で実現することができる。また、温度制御部２２の機能も、ＣＰＵ１０１により実現されてもよい。
【０１５８】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、最適化装置２ａは、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【０１５９】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、最適化装置２ａは、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【０１６０】
ＮＩＣ１０４は、ネットワーク４０に接続され、ネットワーク４０を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ１０４は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。ＮＩＣ１０４は、無線リンクによりネットワーク４０に接続されてもよい。
【０１６１】
出力ＩＦ１０５は、ＣＰＵ１０１からの命令に従って、最適化装置２ａに接続されたディスプレイ４１に画像を出力する。ディスプレイ４１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【０１６２】
入力ＩＦ１０６は、最適化装置２ａに接続された入力デバイス４２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス４２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、最適化装置２ａに、複数の種類の入力デバイスが接続されていてもよい。
【０１６３】
媒体リーダ１０７は、記録媒体４３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体４３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【０１６４】
媒体リーダ１０７は、例えば、記録媒体４３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体４３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体４３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【０１６５】
入出力部１０８は、確率的探索部１０９と接続され、ＣＰＵ１０１から確率的探索部１０９へのデータ入力や確率的探索部１０９からＲＡＭ１０２やＣＰＵ１０１へのデータ出力を制御する。
【０１６６】
確率的探索部１０９は、レプリカ交換の方法により、組合せ最適化問題に対する演算をハードウェアにより行うアクセラレータである。確率的探索部１０９は、探索部１０ａ１〜１０ａＮおよび温度制御部２２を有し、前述の図７，図８の手順により、イジングモデルの基底状態を探索する確率的探索を行う。
【０１６７】
上記の最適化装置２ａにより、最適化装置２と同様の機能を実現することができる。
図１１は、最適化装置の機能例を示す図である。
例えば、ＣＰＵ１０１は、ＲＡＭ１０２に記憶されたプログラムを実行することで、交換回数調整部２３ａの機能を発揮する。交換回数調整部２３ａは、最低エネルギー検出部２３１ａおよび交換回数決定部２３２ａを有する。
【０１６８】
最低エネルギー検出部２３１ａは、前述の最低エネルギー検出部２３１に相当する。交換回数決定部２３２ａは、前述の交換回数決定部２３２に相当する。
交換回数調整部２３ａは、入出力部１０８を介して、確率的探索部１０９から各探索部に設定された温度、調整係数αおよび各探索部のビットステートに対応するエネルギーＥｉを取得する。また、交換回数調整部２３ａは、交換回数決定部２３２ａの機能により決定された交換回数を示す交換回数更新信号を、入出力部１０８を介して、確率的探索部１０９に供給する。
【０１６９】
このように、ＣＰＵ１０１によって交換回数調整部２３ａの機能を実現してもよい。最適化装置２ａによれば、最適化装置２と同様に、基底状態の探索を高速化することができる。
【０１７０】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１７１】
第３の実施の形態では、総イタレーションに対する前半のレプリカ交換実行時に、エネルギーの低い状態であるほど、低い温度を割り当てるように制御する機能を提供する。
図１２は、第３の実施の形態の最適化装置の回路構成例を示す図である。
【０１７２】
最適化装置３は、例えば、ＦＰＧＡなどの半導体集積回路を用いて実現される。最適化装置３は、探索部１０ａ１〜１０ａＮ、全体制御部２１ａ、温度制御部２２ａおよび温度エネルギー順ソート部２４を有する。
【０１７３】
探索部１０ａ１〜１０ａＮは、図２で例示した探索部１０ａ１〜１０ａＮと同様の回路構成であるため、説明を省略する。
全体制御部２１ａは、最適化装置３の全体の動作を制御する。全体制御部２１ａは、起動信号とともに、ソート期間規定イタレーション数の入力を受け付ける。ソート期間規定イタレーション数は、総イタレーションの数よりも小さい数である。全体制御部２１ａは、温度制御部２２ａに起動信号およびソート期間規定イタレーション数を出力し、探索部１０ａ１〜１０ａＮを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部２１ａは、演算が終了すると、探索部１０ａ１〜１０ａＮの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部２１ａは、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部２１ａは、最適化装置３に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【０１７４】
温度制御部２２ａは、探索部１０ａ１〜１０ａＮの各々に供給する温度を制御する。温度制御部２２ａは、温度を示す温度情報と、温度の設定信号（Ｔ  ｓｅｔ  ｓｉｇ．）とを、探索部１０ａ１〜１０ａＮの各々が有する状態遷移判定回路に供給する。
【０１７５】
また、温度制御部２２ａは、探索部１０ａ１〜１０ａＮにおける温度の交換（温度交換）を制御する。温度制御部２２は、式（５）の交換確率に基づいて、温度が隣接する探索部のペア（２つの探索部の組）に関し、温度交換（すなわち、レプリカ交換）を行うか否かをペア毎に判定する。温度制御部２２は、交換後の温度を、各探索部に供給する。
【０１７６】
更に、温度制御部２２ａは、総イタレーションのうち、初回からソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、温度エネルギー順ソート部２４により決定された探索部毎の温度を、各探索部に設定する。
【０１７７】
温度エネルギー順ソート部２４は、各探索部に設定されている温度と、ソート期間規定イタレーション数とを温度制御部２２ａから取得する。また、温度エネルギー順ソート部２４は、探索部１０ａ１〜１０ａＮからエネルギーＥｉを取得する。温度エネルギー順ソート部２４は、総イタレーションのうち、最初のソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、エネルギーの低い順に低い温度を割り当てる。すなわち、温度エネルギー順ソート部２４は、各探索部の温度とエネルギーとを入力として、温度をエネルギー順にソートし、各探索部に設定する温度を決定する。温度エネルギー順ソート部２４は、各探索部に対して決定した温度を示す温度順情報を、温度制御部２２ａに出力する。
【０１７８】
図１３は、温度エネルギー順ソートの第１の例を示す図である。
最適化装置３は、総イタレーションに対する前半のレプリカ交換実行時に、エネルギーの低い状態ほど低い温度が割り当てられるように、各探索部に設定する温度を決定する。なお、このように、エネルギーの低い状態ほど低い温度が割り当てられるように制御しているだけでは、詳細つり合い条件を満たさない可能性がある。そこで、最適化装置３は、総イタレーションに対する後半のレプリカ交換実行時には、温度エネルギー順ソート部２４による各探索部の設定温度の決定を行わずに、通常のレプリカ交換のみを行うようにする。これにより、探索部の状態が、適切に基底状態に向かうようにすることができる。
【０１７９】
ここで、グラフＧ２０は、あるタイミングにおける各探索部の温度と、各探索部のビットステートに対応するエネルギーとの関係を示す。グラフＧ２０の横軸は温度Ｔであり、縦軸はエネルギーＥである。「Ｅ＿ｘ」の表記は、小さい方から数えてｘ番目に小さいエネルギーを示す。「Ｔ＿ｘ」の表記は、低い方から数えてｘ番目に低い温度を示す。また、１＜ｋ＜ｍとする。
【０１８０】
例えば、ある３つの探索部（第１〜第３の探索部）を考える。第１の探索部におけるエネルギーがＥ＿ｋ、第２の探索部におけるエネルギーがＥ＿１、第３の探索部におけるエネルギーがＥ＿ｍであったとする。Ｅ＿１は、各探索部におけるエネルギーのうち最低エネルギーである。この場合、温度エネルギー順ソート部２４は、第２の探索部に温度Ｔ＿１を割り当て、第１の探索部に温度Ｔ＿ｋを割り当て、第３の探索部に温度Ｔ＿ｍを割り当てると決定する。
【０１８１】
図１４は、温度エネルギー順ソートの第２の例を示す図である。
図１４の例では、探索部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５に対する温度エネルギー順ソートを考える。探索部１０ａ１〜１０ａ５の識別情報を「ｒｅｐｉｄ」と表す。探索部１０ａ１はｒｅｐｉｄ＝１である。探索部１０ａ２はｒｅｐｉｄ＝２である。探索部１０ａ３はｒｅｐｉｄ＝３である。探索部１０ａ４はｒｅｐｉｄ＝４である。探索部１０ａ５はｒｅｐｉｄ＝５である。
【０１８２】
グラフＧ２１は、あるタイミング（温度エネルギー順ソート部２４によるソート前）における各探索部の温度（横軸）と、各探索部のビットステートに応じたエネルギー（縦軸）との関係を示す。具体的には、探索部１０ａ１のエネルギーＥ１＝１５０である。探索部１０ａ２のエネルギーＥ２＝１００である。探索部１０ａ３のエネルギーＥ３＝３００である。探索部１０ａ４のエネルギーＥ４＝２５０である。探索部１０ａ５のエネルギーＥ５＝２００である。また、探索部１０ａ１，１０ａ２，１０ａ３，１０ａ４，１０ａ５の順に、設定されている温度が高くなっているとする。
【０１８３】
温度エネルギー順ソート部２４は、探索部１０ａ１〜１０ａ５をエネルギーの昇順にソートする。ソート後の探索部１０ａ１〜１０ａ５の並びは、探索部１０ａ２，１０ａ１，１０ａ５，１０ａ４，１０ａ３となる。そして、温度エネルギー順ソート部２４は、探索部１０ａ２，１０ａ１，１０ａ５，１０ａ４，１０ａ３の順に、温度が高くなるように、探索部１０ａ１〜１０ａ５に設定する温度を決定する。
【０１８４】
グラフＧ２２は、温度エネルギー順ソート部２４による温度決定後の、各探索部の温度（横軸）と、各探索部のビットステートに応じたエネルギー（縦軸）との関係を示す。温度制御部２２ａは、温度エネルギー順ソート部２４により決定された各探索部の温度を、各探索部に設定することで、エネルギーの低い探索部ほど低い温度を設定できる。
【０１８５】
次に、最適化装置３の処理手順を説明する。
図１５は、レプリカ交換の全体制御例を示すフローチャートである。
（Ｓ２０）全体制御部２１ａは、入力データとして初期温度とソート期間規定イタレーション数とを外部から取得する。全体制御部２１ａは、初期温度を含む起動信号と、ソート期間規定イタレーション数とを温度制御部２２ａに出力する。温度制御部２２ａは、イタレーション数のカウンタを０に設定する。
【０１８６】
（Ｓ２１）温度制御部２２ａは、全体制御部２１ａからの起動信号を受けて、探索部１０ａ１〜１０ａＮの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部１０ａ１〜１０ａＮの各々による確率的探索の処理を実行させる。探索部１０ａ１〜１０ａＮの各々による処理（探索部処理）は、図８で説明済のため説明を省略する。
【０１８７】
（Ｓ２２）探索部１０ａ１〜１０ａＮは、隣接探索部間のエネルギーを温度制御部２２ａに伝達する。温度制御部２２ａは、探索部１０ａ１〜１０ａＮで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【０１８８】
（Ｓ２３）温度制御部２２ａは、温度が隣接する探索部間でのエネルギー差を用いた式（５）に基づく交換確率により、温度の交換制御を行う。温度制御部２２ａは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【０１８９】
（Ｓ２４）温度制御部２２ａは、規定回数、探索部処理および交換制御の処理セットを実行したか否かを判定する。当該処理セットを規定回数実行した場合、ステップＳ２５に処理が進む。当該処理セットを規定回数実行していない場合、ステップＳ２１に処理が進む。
【０１９０】
（Ｓ２５）温度エネルギー順ソート部２４は、探索部におけるエネルギーをキーとして、探索部に設定する温度をソートする。温度エネルギー順ソート部２４は、エネルギーの低い方から順に、低い温度が割り当てられるように、各探索部に対する温度を決定する。温度エネルギー順ソート部２４は、各探索部に対して決定した温度を示す温度順情報を、温度制御部２２ａに出力する。温度制御部２２ａは、イタレーション数のカウンタをインクリメントする。
【０１９１】
（Ｓ２６）温度制御部２２ａは、イタレーション数のカウンタの値がソート期間規定イタレーション数に到達したか否かを判定する。到達した場合、ステップＳ２７に処理が進む。到達していない場合、ステップＳ２１に処理が進む。なお、イタレーション数のカウンタを、温度エネルギー順ソート部２４にもたせて、温度エネルギー順ソート部２４により、ステップＳ２６の判定を実行してもよい。
【０１９２】
（Ｓ２７）温度制御部２２ａは、探索部１０ａ１〜１０ａＮの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部１０ａ１〜１０ａＮの各々による確率的探索（基底状態探索）の処理を実行させる。探索部１０ａ１〜１０ａＮの各々による処理（探索部処理）は、図８で説明済のため説明を省略する。
【０１９３】
（Ｓ２８）探索部１０ａ１〜１０ａＮは、隣接探索部間のエネルギーを温度制御部２２ａに伝達する。温度制御部２２ａは、探索部１０ａ１〜１０ａＮで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【０１９４】
（Ｓ２９）温度制御部２２ａは、温度が隣接する探索部間でのエネルギー差を用いた式（５）に基づく交換確率により、温度の交換制御を行う。温度制御部２２ａは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【０１９５】
（Ｓ３０）全体制御部２１ａは、探索部１０ａ１〜１０ａＮからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部２１ａは、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部２１ａは、ステップＳ２７に処理を進め、確率的探索の処理を継続する。
【０１９６】
例えば、全体制御部２１ａは、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部２１ａは、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【０１９７】
図１６は、交換制御例を示すフローチャートである。
交換制御はステップＳ２３，Ｓ２９に相当する。
（Ｓ４０）温度制御部２２ａは、設定された温度が隣接する探索部間で温度の交換を実行するか否かを判定する。温度制御部２２ａは、交換を行うか否かを、探索部のペア毎に、式（５）の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップＳ４１に処理が進む。探索部のペアについて交換を行わない場合、交換制御が終了する。
【０１９８】
（Ｓ４１）温度制御部２２ａは、ステップＳ４０で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部２２ａは、ステップＳ４０で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。そして、交換制御が終了する。
【０１９９】
ここで、ステップＳ４１における１回分の交換処理（１度の交換タイミングで実行される交換処理）の例として、第２の実施の形態で例示した第１〜第５のパターンなどを用いることができる。ただし、温度制御部２２ａは、それ以外のパターンにより交換処理を実行してもよい。
【０２００】
図１７は、温度と解のエネルギーとの関係の例を示す図である。
図１７（Ａ）は、温度エネルギー順ソート部２４によるソートを一切行わない（ソートなしの）場合における比較例のグラフＧ２３を示す。図１７（Ｂ）は、温度エネルギー順ソート部２４によるソートを行う（ソートありの）場合におけるグラフＧ２４を示す。グラフＧ２３，Ｇ２４は、何れも、探索部に設定された温度と、探索部から得られた解（ビットステート）に対応するエネルギーとの関係を示す。グラフＧ２３，Ｇ２４のそれぞれの横軸は温度であり、縦軸はエネルギーである。
【０２０１】
グラフＧ２３は、通常のレプリカ交換を行い、温度エネルギー順ソート部２４によるソートを行わずに確率的探索のイタレーション回数が１００００回に達したときの結果である。グラフＧ２４は、図１５における規定回数を１０００回（この場合、確率的探索（図８の探索部処理）における規定のイタレーション回数は１０００以下となる）とし、イタレーション回数が１００００回に達したときの結果である。
【０２０２】
グラフＧ２３，Ｇ２４を比較すると、ソートなしの場合よりも、ソートありの場合の方が、低いエネルギーを取る探索部が多いことが分かる。
このように、最適化装置３では、総イタレーションに対する前半のレプリカ交換実行時において、エネルギーの低い状態であるほど低い温度を割り当てるように制御することで、基底状態の探索を高速化することができる。
【０２０３】
なお、最適化装置３のハードウェア構成として、図１０で例示した最適化装置２ａと同様の構成も考えられる。例えば、温度エネルギー順ソート部２４の機能を、ＣＰＵおよびＲＡＭを有するコンピュータによって実現してもよい。
【０２０４】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２，第３の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０２０５】
第４の実施の形態では、第２の実施の形態で説明した機能と、第３の実施の形態で説明した機能とを併用する例を説明する。
図１８は、第４の実施の形態の最適化装置の回路構成例を示す図である。
【０２０６】
最適化装置４は、例えば、ＦＰＧＡなどの半導体集積回路を用いて実現される。最適化装置４は、探索部１０ａ１〜１０ａＮ、全体制御部２１ｂ、温度制御部２２ｂ、交換回数調整部２３および温度エネルギー順ソート部２４を有する。
【０２０７】
探索部１０ａ１〜１０ａＮは、図２で例示した探索部１０ａ１〜１０ａＮと同様の回路構成であるため、説明を省略する。
全体制御部２１ｂは、最適化装置４の全体の動作を制御する。全体制御部２１ｂは、前述の全体制御部２１，２１ａの機能を併せもつ。
【０２０８】
全体制御部２１ｂは、温度の交換回数の初期値を示す交換回数指定信号、および、調整係数α（０＜α≦１）の外部からの入力を受け付ける。また、全体制御部２１ｂは、起動信号とともに、ソート期間規定イタレーション数の入力を受け付ける。すると、全体制御部２１ｂは、温度制御部２２ｂに起動信号、ソート期間規定イタレーション数、交換回数指定信号および調整係数αを出力し、探索部１０ａ１〜１０ａＮを起動させて、最適化問題に関する基底状態探索の演算を開始させる。
【０２０９】
全体制御部２１ｂは、演算が終了すると、探索部１０ａ１〜１０ａＮの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部２１ｂは、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部２１ｂは、最適化装置４に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【０２１０】
温度制御部２２ｂは、探索部１０ａ１〜１０ａＮの各々に供給する温度を制御する。温度制御部２２ｂは、前述の温度制御部２２，２２ａの機能を併せもつ。温度制御部２２ｂは、温度を示す温度情報と、温度設定信号（Ｔ  ｓｅｔ  ｓｉｇ．）とを、探索部１０ａ１〜１０ａＮの各々が有する状態遷移判定回路に供給する。
【０２１１】
また、温度制御部２２ｂは、探索部１０ａ１〜１０ａＮにおける温度の交換（温度交換）を制御する。温度制御部２２ｂは、式（５）の交換確率に基づいて、温度が隣接する探索部のペア（２つの探索部の組）に関し、温度交換（すなわち、レプリカ交換）を行うか否かをペア毎に判定する。温度制御部２２ｂは、交換後の温度を、各探索部に供給する。交換タイミングでの温度の交換回数の初期値は、全体制御部２１ｂにより供給される。また、交換タイミングでの温度の交換回数は、交換回数調整部２３により更新される。
【０２１２】
更に、温度制御部２２ｂは、総イタレーションのうち、初回からソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、温度エネルギー順ソート部２４により決定された探索部毎の温度を、各探索部に設定する。
【０２１３】
交換回数調整部２３は、所定のレプリカ交換周期で、温度制御部２２ｂによる温度交換回数を調整する。交換回数調整部２３は、最低エネルギー検出部２３１および交換回数決定部２３２を有する。
【０２１４】
最低エネルギー検出部２３１は、レプリカ交換周期に基づく交換タイミングにおいて探索部１０ａ１〜１０ａＮから供給されるエネルギーのうちの最低エネルギーを検出する。
交換回数決定部２３２は、最低エネルギー検出部２３１により検出された最低エネルギーに対応する探索部の温度と、温度制御部２２ｂから供給される探索部１０ａ１〜１０ａＮの各々の温度と、調整係数αとに基づいて、温度の交換回数を決定する。交換回数決定部２３２は、決定した交換回数を示す交換回数更新信号を温度制御部２２ｂに出力する。
【０２１５】
温度エネルギー順ソート部２４は、各探索部に設定されている温度と、ソート期間規定イタレーション数とを温度制御部２２ｂから取得する。また、温度エネルギー順ソート部２４は、探索部１０ａ１〜１０ａＮからエネルギーＥｉ（ｉ＝１〜Ｎ）を取得する。温度エネルギー順ソート部２４は、総イタレーションのうち、最初のソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、エネルギーの低い順に低い温度を割り当てる。すなわち、温度エネルギー順ソート部２４は、各探索部の温度とエネルギーとを入力として、温度をエネルギー順にソートし、各探索部に設定する温度を決定する。温度エネルギー順ソート部２４は、各探索部に対して決定した温度を示す温度順情報を、温度制御部２２ｂに出力する。
【０２１６】
次に、最適化装置４の処理手順を説明する。
図１９は、レプリカ交換の全体制御例を示すフローチャートである。
（Ｓ５０）全体制御部２１ｂは、入力データとして初期温度と調整係数αとソート期間規定イタレーション数とを外部から取得する。また、全体制御部２１ｂは、交換回数の初期値を示す交換回数指定信号を外部から取得する。全体制御部２１ｂは、初期温度を含む起動信号、交換回数指定信号、調整係数αおよびソート期間規定イタレーション数を温度制御部２２ｂに出力する。温度制御部２２ｂは、イタレーション数のカウンタを０に設定する。
【０２１７】
（Ｓ５１）温度制御部２２ｂは、全体制御部２１ａからの起動信号を受けて、探索部１０ａ１〜１０ａＮの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部１０ａ１〜１０ａＮの各々による確率的探索の処理を実行させる。探索部１０ａ１〜１０ａＮの各々による処理（探索部処理）は、図８で説明済のため説明を省略する。
【０２１８】
（Ｓ５２）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部１０ａ１〜１０ａＮの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【０２１９】
（Ｓ５３）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度と、調整係数αとを温度制御部２２ｂから取得する。交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数ｃを決定する。例えば、交換回数調整部２３は、最低エネルギー検出部２３１の機能により、最低エネルギーおよび最低エネルギーを取る探索部を検出する。また、交換回数調整部２３は、交換回数決定部２３２の機能により、交換回数ｃ＝ｍａｘ（ｃｎｔ×α，１）の計算により交換回数ｃを決定する。ｃｎｔは、前述のように、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えて何番目であるかを表す。交換回数調整部２３は、決定した交換回数ｃを示す交換回数更新信号を温度制御部２２ｂに出力する。温度制御部２２ｂは、交換回数のカウント数を０に初期化する。
【０２２０】
（Ｓ５４）探索部１０ａ１〜１０ａＮは、隣接探索部間のエネルギーを温度制御部２２ｂに伝達する。温度制御部２２ｂは、探索部１０ａ１〜１０ａＮで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【０２２１】
（Ｓ５５）温度制御部２２ｂは、温度が隣接する探索部間でのエネルギー差を用いた式（５）に基づく交換確率により、温度の交換制御を行う。温度制御部２２ｂは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【０２２２】
（Ｓ５６）温度制御部２２ｂは、規定回数、探索部処理および交換制御の処理セットを実行したか否かを判定する。当該処理セットを規定回数実行した場合、ステップＳ５７に処理が進む。当該処理セットを規定回数実行していない場合、ステップＳ５１に処理が進む。
【０２２３】
（Ｓ５７）温度エネルギー順ソート部２４は、探索部におけるエネルギーをキーとして、探索部に設定する温度をソートする。温度エネルギー順ソート部２４は、エネルギーの低い方から順に、低い温度が割り当てられるように、各探索部に対する温度を決定する。温度エネルギー順ソート部２４は、各探索部に対して決定した温度を示す温度順情報を、温度制御部２２ｂに出力する。温度制御部２２ｂは、イタレーション数のカウンタをインクリメントする。
【０２２４】
（Ｓ５８）温度制御部２２ｂは、イタレーション数のカウンタの値がソート期間規定イタレーション数に到達したか否かを判定する。到達した場合、ステップＳ５９に処理が進む。到達していない場合、ステップＳ５１に処理が進む。なお、イタレーション数のカウンタを、温度エネルギー順ソート部２４にもたせて、温度エネルギー順ソート部２４により、ステップＳ５８の判定を実行してもよい。
【０２２５】
（Ｓ５９）温度制御部２２ｂは、探索部１０ａ１〜１０ａＮの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部１０ａ１〜１０ａＮの各々による確率的探索（基底状態探索）の処理を実行させる。
【０２２６】
（Ｓ６０）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部１０ａ１〜１０ａＮの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【０２２７】
（Ｓ６１）交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度と、調整係数αとを温度制御部２２ｂから取得する。交換回数調整部２３は、探索部１０ａ１〜１０ａＮの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数ｃを決定する。交換回数ｃの決定方法は、ステップＳ５３と同様である。
【０２２８】
（Ｓ６２）探索部１０ａ１〜１０ａＮは、隣接探索部間のエネルギーを温度制御部２２ｂに伝達する。温度制御部２２ｂは、探索部１０ａ１〜１０ａＮで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【０２２９】
（Ｓ６３）温度制御部２２ｂは、温度が隣接する探索部間でのエネルギー差を用いた式（５）に基づく交換確率により、温度の交換制御を行う。温度制御部２２ｂは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【０２３０】
（Ｓ６４）全体制御部２１ｂは、探索部１０ａ１〜１０ａＮからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部２１ｂは、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部２１ｂは、ステップＳ５９に処理を進め、確率的探索の処理を継続する。
【０２３１】
例えば、全体制御部２１ｂは、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部２１ｂは、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【０２３２】
上記の例では、最適化装置４は、ステップＳ５１又はステップＳ５９の探索部処理が終了する毎に、交換回数ｃを決定するものとしたが、探索部処理を複数回繰り返した後に交換回数ｃを決定してもよい。また、最適化装置２は、全イタレーションのうちの前半で交換回数ｃを決定し、全イタレーションのうちの後半で、前半で決定された交換回数ｃを使用し、交換回数ｃの新たな決定を行わなくてもよい。例えば、ステップＳ６０，Ｓ６１をスキップする（ステップＳ６０，Ｓ６１を実行しない）ことも考えられる。
【０２３３】
図２０は、交換制御例を示すフローチャートである。
交換制御はステップＳ５５，Ｓ６３に相当する。
（Ｓ７０）温度制御部２２ｂは、交換回数のカウント数をインクリメントし、設定された温度が隣接する探索部間で温度の交換を実行するか否かを判定する。温度制御部２２ｂは、交換を行うか否かを、探索部のペア毎に、式（５）の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップＳ７１に処理が進む。探索部のペアについて交換を行わない場合、ステップＳ７２に処理が進む。
【０２３４】
（Ｓ７１）温度制御部２２ｂは、ステップＳ７０で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部２２ｂは、ステップＳ７０で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。
【０２３５】
（Ｓ７２）温度制御部２２ｂは、温度の交換回数のカウント数がｃに到達したか否かを判定する。交換回数のカウント数がｃに到達した場合、交換制御が終了する。交換回数のカウント数がｃに到達していない場合、ステップＳ７０に処理が進む。
【０２３６】
このように、温度制御部２２ｂは、探索部１０ａ１〜１０ａＮのそれぞれによるエネルギー値の出力、および、決定された交換回数での温度の交換が規定回数だけ行われると、出力したエネルギー値が低い探索部ほど低い温度を設定する処理（温度エネルギー順ソート）を行う。温度制御部２２ｂは、探索部１０ａ１〜１０ａＮによる基底状態探索の全期間のうちの第１の期間において温度エネルギー順ソートの処理を行い、第１の期間よりも後の第２の期間において温度エネルギー順ソートのソート処理を行わないようにする。
【０２３７】
最適化装置４は、総イタレーションに対する後半のレプリカ交換実行時には、温度エネルギー順ソート部２４による各探索部の設定温度の決定を行わずに、通常のレプリカ交換のみを行うようにする。これにより、探索部の状態が、適切に基底状態に向かうようにして演算を高速化することができる。
【０２３８】
ここで、ステップＳ７１における１回分の交換処理（１度の交換タイミングで実行される交換処理）の例として、第２の実施の形態で例示した第１〜第５のパターンなどを用いることができる。ただし、温度制御部２２ｂは、それ以外のパターンにより交換処理を実行してもよい。
【０２３９】
第４の実施の形態で例示したように、最適化装置４は第２，第３の実施の形態で説明した機能を併せもつ。すなわち、最適化装置４は、最低エネルギーを取る探索部の温度と最低温度との差異を基準としてレプリカ交換の交換回数を決定する。また、最適化装置４は、総イタレーションに対する前半のレプリカ交換実行時において、エネルギーの低い状態であるほど低い温度を割り当てるように制御する。これにより、基底状態の探索を一層高速化することができる。
【０２４０】
なお、最適化装置４のハードウェア構成として、図１０で例示した最適化装置２ａと同様の構成も考えられる。例えば、交換回数調整部２３および温度エネルギー順ソート部２４の機能を、ＣＰＵおよびＲＡＭを有するコンピュータによって実現してもよい。
【符号の説明】
【０２４１】
１  最適化装置
１ａ１，１ａ２，１ａ３，１ａ４，…，１ａＮ  探索部
１０  制御部
１１  交換回数決定部
１２  温度制御部
Ｇ１  グラフ
【図１】
2020187453.tif 000016
【図２】
2020187453.tif 000017
【図３】
2020187453.tif 000018
【図４】
2020187453.tif 000019
【図５】
2020187453.tif 000020
【図６】
2020187453.tif 000021
【図７】
2020187453.tif 000022
【図８】
2020187453.tif 000023
【図９】
2020187453.tif 000024
【図１０】
2020187453.tif 000025
【図１１】
2020187453.tif 000026
【図１２】
2020187453.tif 000027
【図１３】
2020187453.tif 000028
【図１４】
2020187453.tif 000029
【図１５】
2020187453.tif 000030
【図１６】
2020187453.tif 000031
【図１７】
2020187453.tif 000032
【図１８】
2020187453.tif 000033
【図１９】
2020187453.tif 000034
【図２０】
2020187453.tif 000035
【図２１】
2020187453.tif 000036