(57)【要約】【課題】演算を高速化すること。【解決手段】保持部１５は、エネルギー計算部１３が計算した所定回数の状態遷移のそれぞれに対応するエネルギー値の第２の変化値を、入力された識別情報ｋに対応して複数のエントリにそれぞれ保持する。遷移制御部１６は、温度値とエネルギー計算部１３が計算したエネルギー値の第１の変化値と乱数値とに基づいて、第１の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された識別情報ｋに基づいて複数のエントリから選択される何れかのエントリが保持する第２の変化値に対して係数情報αを乗じたオフセット値ｙを第１の変化値に加えることにより、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。【選択図】図１
2020079991.tif 000002
【特許請求の範囲】
【請求項１】
エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第１の変化値を複数の状態遷移のそれぞれに対して計算するエネルギー計算部と、
温度を示す温度値を制御する温度制御部と、
前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第２の変化値を、識別情報に対応して複数のエントリにそれぞれ保持する保持部と、
前記温度値と前記第１の変化値と乱数値とに基づいて、前記第１の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第２の変化値に対して係数情報を乗じたオフセット値を前記第１の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部と、
を有することを特徴とする最適化装置。
【請求項２】
前記最適化装置はさらに、前記識別情報と前記係数情報とを入力する入力部を有することを特徴とする請求項１記載の最適化装置。
【請求項３】
前記保持部は、前記エネルギー値の最小値が更新された場合、前記最小値における状態からの状態遷移に応じた前記エネルギー値の変化値により、保持する前記第２の変化値を更新する、
ことを特徴とする請求項１又は２記載の最適化装置。
【請求項４】
前記識別情報は、１以上かつ前記複数の状態変数の数よりも小さい整数ｋを示し、
前記保持部に保持される複数の第２の変化値のうち、絶対値の小さい方から数えてｋ番目に相当する前記第２の変化値を選択し、選択した前記第２の変化値に前記係数情報を乗じることで前記オフセット値を計算する計算部、
を更に有することを特徴とする請求項２又は３記載の最適化装置。
【請求項５】
前記計算部は、前記複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに前記保持部が保持する複数の第２の変化値を取得し、前記オフセット値を更新する、
ことを特徴とする請求項４記載の最適化装置。
【請求項６】
前記遷移制御部は、前記複数の状態遷移の何れも受け入れない場合、前記複数の状態遷移の何れも受け入れないと継続して決定した期間の長さに比例した回数で前記オフセット値を累算した値を前記第１の変化値に加え、前記複数の状態遷移の何れかを受け入れる場合、前記オフセット値を０にする、
ことを特徴とする請求項１記載の最適化装置。
【請求項７】
前記エネルギー値の最小値が更新された場合、前記最小値における前記複数の状態変数の値を保持する最小エネルギー状態保持部と、
前記複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに、前記最小エネルギー状態保持部に保持された前記複数の状態変数の値に基づいて、前記最小値における状態からの状態遷移のそれぞれに対応する前記第２の変化値を計算し、前記第２の変化値を前記保持部に格納する演算部と、
を更に有することを特徴とする請求項１記載の最適化装置。
【請求項８】
エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部を有する最適化装置の制御方法において、
前記最適化装置が有するエネルギー計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第１の変化値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する保持部が、前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第２の変化値を、前記識別情報に対応して複数のエントリにそれぞれ保持し、
前記最適化装置が有する遷移制御部が、前記温度値と前記第１の変化値と乱数値とに基づいて、前記第１の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第２の変化値に対して前記係数情報を乗じたオフセット値を前記第１の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する、
ことを特徴とする最適化装置の制御方法。
【請求項９】
エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部を有する最適化装置の制御プログラムにおいて、
前記最適化装置が有するエネルギー計算部に、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第１の変化値を複数の状態遷移のそれぞれに対して計算させ、
前記最適化装置が有する温度制御部に、温度を示す温度値を制御させ、
前記最適化装置が有する保持部に、前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第２の変化値を、前記識別情報に対応して複数のエントリにそれぞれ保持させ、
前記最適化装置が有する遷移制御部に、前記温度値と前記第１の変化値と乱数値とに基づいて、前記第１の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第２の変化値に対して前記係数情報を乗じたオフセット値を前記第１の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定させる、
ことを特徴とする最適化装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット（スピンビット）のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、例えば、疑似焼き鈍し法（シミュレーテッド・アニーリング）等の確率的探索法により、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の値（エネルギーと言う）の最小値が得られる各ビットの値の組合せを、最適解として求める。
【０００４】
例えば、デジタル回路を用いて疑似焼き鈍し法を行うことでエネルギーが最小となる各ビットの値の組合せを計算する最適化装置が提案されている。最適化装置は、一度に１ビットだけ変化するとしてエネルギー変化を計算し、エネルギー変化と温度に対応するノイズ値との比較に応じてビットの変化を許容するか否かを決定する。最適化装置は、ビットの変化による状態遷移が起こらないとき、エネルギー変化にオフセット値を加えてからビットの変化を許容するか否かを決定することで、局所解からの脱出を促進し、計算時間を短縮する。最適化装置は、状態遷移が起こらないときオフセット値を少しずつ増やし、状態遷移が起こった場合に、オフセット値を０にリセットする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１８−６３６２６号公報
【特許文献２】特開平１０−３２８１５５号公報
【特許文献３】特開２０１４−１６０４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
状態遷移が起こらないときにオフセット値を加算する上記の方法では、オフセット値の大きさが問題となる。例えば、オフセット値が小さ過ぎると、局所解から脱出する時間を十分短縮できない。一方、オフセット値が大き過ぎると、各エネルギー変化に対する状態遷移の受入確率に差がなくなる。すると、ある状態から他の状態へ遷移する分岐比が、疑似焼き鈍し法における適切な分岐比からずれてしまい、解の精度が低下する。
【０００７】
１つの側面では、本発明は、演算を高速化する、最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、最適化装置が提供される。最適化装置は、状態保持部とエネルギー計算部と温度制御部と保持部と遷移制御部とを有する。状態保持部は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。エネルギー計算部は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の第１の変化値を複数の状態遷移のそれぞれに対して計算する。温度制御部は、温度を示す温度値を制御する。保持部は、エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応するエネルギー値の第２の変化値を、識別情報に対応して複数のエントリにそれぞれ保持する。遷移制御部は、温度値と第１の変化値と乱数値とに基づいて、第１の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された識別情報に基づいて複数のエントリから選択される何れかのエントリが保持する第２の変化値に対して係数情報を乗じたオフセット値を第１の変化値に加えることにより、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。
【０００９】
また、１つの態様では、最適化装置の制御方法が提供される。
また、１つの態様では、最適化装置の制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、演算を高速化することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の最適化装置を示す図である。
【図２】エネルギー変化値と比較される判定閾値の例を示す図である。
【図３】状態に応じたエネルギー分布の例を示す図である。
【図４】局所解での１ハミング距離の状態遷移の受入確率の例を示す図である。
【図５】オフセット増分値の例を示す図である。
【図６】オフセット増分値の比較例を示す図である。
【図７】第２の実施の形態の最適化装置のハードウェア例を示す図である。
【図８】最適化装置の機能例を示す図である。
【図９】遷移制御部の回路例を示す図である。
【図１０】保持されるエネルギー変化値の例を示す図である。
【図１１】演算スケジュールの例を示す図である。
【図１２】最適化装置の処理例を示すフローチャートである。
【図１３】確率的探索部の回路例を示す図である。
【図１４】第３の実施の形態の最適化装置の機能例を示す図である。
【図１５】最適化装置の処理例を示すフローチャートである。
【図１６】確率的探索部の回路例を示す図である。
【図１７】第４の実施の形態の情報処理装置のハードウェア例を示す図である。
【図１８】最適化装置の回路例を示す図である。
【図１９】ΔＥ選択部の回路例を示す図である。
【図２０】ΔＥ選択部の選択論理の例を示す図である。
【図２１】ΔＥ選択部による選択例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１３】
図１は、第１の実施の形態の最適化装置を示す図である。
最適化装置１０は、疑似焼き鈍し法により、組合せ最適化問題に対する解を求める。ここで、疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したいエネルギー関数の値を最小化する問題を例に説明する。最大化の場合は、エネルギー関数の符号を変えればよい。エネルギー関数は、評価関数、コスト関数または目的関数と呼ばれることもある。
【００１４】
各変数に離散値の１つを代入した初期状態から始め、現在の状態（変数の値の組合せ）から、それに近い状態（例えば、１つの変数だけ変化させた状態）を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして、最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
【００１５】
疑似焼き鈍し法においては、状態遷移の採択（受入）確率を次のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
状態遷移に伴うエネルギー変化値（−ΔＥ）に対して、その状態遷移の受入確率ｐを次の何れかの関数ｆ（）により決める。
【００１６】
【数１】
2020079991.tif 000003
【００１７】
【数２】
2020079991.tif 000004
【００１８】
【数３】
2020079991.tif 000005
【００１９】
ここでＴは温度値と呼ばれるパラメータで式（４）で表される。すなわち、温度値Ｔは反復回数ｔに対して対数的に減少させる。
【００２０】
【数４】
2020079991.tif 000006
【００２１】
ここでＴ０は初期温度値であり問題に応じて十分大きくとることが望ましい。
（１）、（２）（または、（１）、（３））の式で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００２２】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって、実際の疑似焼き鈍し法では対数的な温度変化ではなくより早く温度を下げることが多い。
【００２３】
なお、下記の説明では、状態遷移の候補を複数発生させる場合について述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を１つずつ発生させるものであり、遷移候補を１つずつ発生する場合に下記機能を適用してもよい。また、各状態変数を全て状態遷移の候補とするものとして説明するが、各状態変数の一部のみを状態遷移の候補とすることも可能である。
【００２４】
最適化装置１０は、例えば、１チップの半導体集積回路であり、ＦＰＧＡ（Field Programmable Gate Array）等を用いて実現される。最適化装置１０は、入力部１１、状態保持部１２、エネルギー計算部１３、温度制御部１４、保持部１５、遷移制御部１６および計算部１７を有する。
【００２５】
入力部１１は、識別情報と係数情報とを入力する。識別情報は、計算部１７におけるエネルギー値の変化値の選択に用いられる。識別情報は、ｋで表される。識別情報ｋは、１以上で複数の状態変数の数よりも小さい整数である。係数情報は、計算部１７におけるオフセット増分値の計算に用いられる。係数情報は、αで表される。αは０＜｜α｜＜１の実数である。本例では、一例として、０＜α＜１であるとする。
【００２６】
状態保持部１２は、現在の状態Ｓ（複数の状態変数の値）を保持する。
エネルギー計算部１３は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の変化値（エネルギー変化値）を複数の状態遷移のそれぞれに対して計算する。ここで、状態変数の数をｎ個（ｎは２以上の整数）とする。また、状態変数を識別する情報をインデックスと呼び、ｉ（ｉは１以上ｎ以下の整数）で表す。インデックスｉ＝１〜ｎの各状態変数の変化に応じたエネルギー変化値は、｛−ΔＥｉ｝と表される。
【００２７】
温度制御部１４は、温度を示す温度値Ｔを制御する。
保持部１５は、エネルギー計算部１３が計算した所定回数の状態遷移のそれぞれに対応する複数のエネルギー変化値｛−ΔＥｉ｝を、識別情報ｋに対応して複数のエントリにそれぞれ保持する。例えば、保持部１５は、ある最適化問題の演算において、エネルギー値の最小値が更新されると、当該最小値における複数の状態変数の値（状態）を遷移元とする状態遷移に対応するエネルギー変化値｛−ΔＥｉ｝により保持するエネルギー変化値を更新する。ただし、保持部１５により保持される値の符号は、回路構成に応じて、逆転していてもよい。例えば、保持部１５は、エネルギー変化値｛ΔＥｉ｝を保持してもよい。図１の例では、αの符号が正であり、後述するオフセット加算回路２２を熱励起エネルギーに対する減算を行う減算器２２ａで実現するため、保持部１５は、エネルギー変化値｛ΔＥｉ｝を保持する。
【００２８】
なお、エネルギーが極小値を取る状態から生じる状態遷移に対して、ΔＥｉ＞０である。すなわち、エネルギーが極小値を取る状態（局所解）は、どの状態変数の変化に対してもエネルギーが増大する状態であると言える。
【００２９】
遷移制御部１６は、温度値Ｔとエネルギー変化値｛−ΔＥｉ｝と乱数値とに基づいて、エネルギー変化値｛−ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。
【００３０】
計算部１７は、保持部１５に保持されたエネルギー変化値｛−ΔＥｉ｝（前述のようにエネルギー変化値｛ΔＥｉ｝でもよい）に基づいて、オフセット増分値を計算し、遷移制御部１６に供給する。計算部１７は、ＣＰＵ（Central Processing Unit）等の汎用のプロセッサ（演算部）により実現されてもよいし、専用の電子回路により実現されてもよい。
【００３１】
最適化装置１０による一回の反復（１イタレーション）における動作例は次のようなものである。まず、遷移制御部１６は、状態保持部１２に保持された現在の状態Ｓから次の状態への状態遷移の候補を１つまたは複数発生する。エネルギー計算部１３は、現在の状態Ｓと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化値｛−ΔＥｉ｝を計算する。遷移制御部１６は、温度制御部１４で発生した温度値Ｔと、最適化装置１０内の乱数発生部（図示を省略している）で生成した確率変数（乱数値）を用い、各状態遷移のエネルギー変化値｛−ΔＥｉ｝に応じて、上記（１）、（２）または、（１）、（３）の式の許容確率（受入確率）で、その状態遷移を許容する。そして、遷移制御部１６は、各状態遷移を受け入れるか否か（以下、遷移可否と言う場合もある）を示す遷移可否｛ｆｉ｝を出力する。許容された状態遷移が複数ある場合には、遷移制御部１６は、乱数値を用いてランダムにそのうちの１つを選択する。そして、遷移制御部１６は、選択した状態遷移の遷移番号Ｎと、遷移可否ｆを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部１２に記憶された状態変数の値が更新される。
【００３２】
初期状態から始めて、温度制御部１４で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したときや、エネルギーが一定の値を下回る等の終了判定条件が満たされたとき、動作が終了する。最適化装置１０が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度値が０にならないため、終了時においても状態の占有率はボルツマン分布等で表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００３３】
ここで、（１）〜（３）の式で表される許容確率で状態遷移を許容するメカニズムについて説明する。
許容確率ｐで１を、（１−ｐ）で０を出力する回路は、２つの入力Ａ，Ｂを持ち、Ａ＞Ｂのとき１を出力し、Ａ≦Ｂのとき０を出力する比較器の入力Ａに許容確率ｐを、入力Ｂに区間［０，１）の値を取る一様乱数を入力することで実現することができる。したがってこの比較器の入力Ａに、エネルギー変化値と温度値Ｔにより（１）の式を用いて計算される許容確率ｐの値を入力すれば、上記の機能を実現することができる。
【００３４】
すなわちｆを（１）の式で用いる関数、ｕを区間［０，１）の値を取る一様乱数とするとき、ｆ（ΔＥ／Ｔ）がｕより大きいとき１を出力する回路で、上記の機能を実現できる。
【００３５】
このままでもよいのであるが、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてｆの逆関数ｆ−１を採用すると、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路でよいことがわかる。更に温度値Ｔが正であることから−ΔＥがＴｆ−１（ｕ）より大きいとき１を出力する回路でよい。最適化装置１０は、逆関数ｆ−１（ｕ）を実現するための変換テーブル（図示を省略している）を有する。当該変換テーブルは、区間［０，１）を離散化した入力に対して次の式（５）または（６）の関数の値を出力するテーブルである。
【００３６】
【数５】
2020079991.tif 000007
【００３７】
【数６】
2020079991.tif 000008
【００３８】
遷移制御部１６は、上記判定により状態遷移が生じない場合、エネルギー変化値｛−ΔＥｉ｝にオフセット値を加えることで、状態遷移を促進する機能を提供する。特に、遷移制御部１６は、計算部１７により供給されるオフセット増分値を用いることで、オフセット値を適応的に決定する。
【００３９】
遷移制御部１６は、熱励起エネルギー生成部２１、オフセット加算回路２２、オフセット制御回路２３、比較器２４およびセレクタ２５を有する。なお、遷移制御部１６には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図１では図示を簡単にするため省略されている。
【００４０】
熱励起エネルギー生成部２１は、各遷移候補に対する乱数値ｕ（一様乱数）を、前述した逆関数ｆ−１（ｕ）の値に変換する変換テーブルを有し、その値に温度値Ｔを乗算した積を、メトロポリス法またはギブス法における熱励起エネルギーとして出力する。例えば、遷移制御部１６は、乱数値ｕを生成する乱数生成部（図示を省略している）を有する。乱数生成部は、各遷移候補に対して個別の乱数値を生成してもよいし、共通の乱数を生成してもよい。また、乱数生成部は、所定数の遷移候補毎に共通の乱数を生成してもよい。
【００４１】
オフセット加算回路２２は、状態遷移に伴うエネルギー変化値｛−ΔＥｉ｝にオフセット値ｙを加えるオフセット加算回路として機能する。図１の回路の例では、オフセット加算回路２２は、減算器２２ａである。このため、図１の例では、エネルギー変化値｛−ΔＥｉ｝にオフセット値ｙを加える代わりに、比較対象である温度値Ｔと乱数値の積Ｔｆ−１（ｕ）からオフセット値ｙを減ずる構成となっているがどちらでも同じである。減算器２２ａは、熱励起エネルギーから、全ての状態遷移の候補に共通なオフセット値ｙを減ずる。
【００４２】
オフセット制御回路２３は、オフセット値ｙに対するオフセット増分値Δｙの加算を制御する。オフセット制御回路２３は、オフセット値ｙの初期値を０とする。図１の例では、オフセット制御回路２３は、リセット端子Ｒを有する累算器２３ａである。累算器２３ａは、リセット端子Ｒに入力される遷移可否ｆが、状態遷移を許容することを示すとき（つまり状態遷移が生じるとき）には、オフセット値ｙを０にする。また、累算器２３ａは、入力端子と、クロック端子を有する。累算器２３ａは、遷移可否ｆが状態遷移を許容しないことを示すとき（つまり状態遷移が生じないとき）には、クロック端子に図示しないパルス信号が入力されるたびに、オフセット値ｙに入力されるオフセット増分値Δｙを加えていく。
【００４３】
すなわち、遷移制御部１６は、複数の状態遷移の何れも受け入れない場合、複数の状態遷移の何れも受け入れないと継続して決定した期間の長さに比例した回数でオフセット値（ｙ＝Δｙ）を累算した値をエネルギー変化値に加え（あるいは、当該値を熱励起エネルギーから減らし）、複数の状態遷移の何れかを受け入れる場合、オフセット値ｙを０にする。
【００４４】
なお、図示しないパルス信号は、例えば、図示しないステートマシンによって供給される。オフセット増分値Δｙは、計算部１７によって供給される。
比較器２４は、減算器２２ａが出力する減算結果と、各状態遷移によるエネルギー変化値｛−ΔＥｉ｝とを比較することで各状態遷移の可否を示す遷移可否｛ｆｉ｝を出力する。
【００４５】
セレクタ２５は、遷移可否｛ｆｉ｝に基づいて、許容された状態遷移が複数存在するときは、乱数を用いてその中から１つをランダムに選択する。そして、セレクタ２５は、選択した状態遷移の候補の番号（遷移番号Ｎ）を出力するとともに、遷移可否ｆとして１を出力する。状態遷移が生じないときには、遷移可否ｆは０となる。遷移番号Ｎおよび遷移可否ｆは、状態保持部１２およびエネルギー計算部１３に供給される。
【００４６】
次に、計算部１７によるオフセット増分値Δｙの計算方法を説明する。計算部１７は、選択部３１および乗算器３２を有する。
選択部３１は、入力部１１により入力された識別情報ｋに基づいて、保持部１５により保持された｛ΔＥｉ｝から、エネルギー変化値ΔＥｋを選択する。
【００４７】
乗算器３２は、入力部１１により入力された係数情報αをエネルギー変化値ΔＥｋに乗じた結果をオフセット増分値Δｙとする。具体的には、Δｙ＝ｍａｘ（０，α×ΔＥｋ）である。ｍａｘ（ａ，ｂ）演算は、（ａ，ｂ）のうちの大きい方を選択する演算である。Δｙをｍａｘ演算により０以上とする理由は、ΔＥｋ＜０の場合、局所解に滞在していないと考えられ、遷移確率の調整が不要だからである。乗算器３２は、当該オフセット増分値Δｙを累算器２３ａに供給する。
【００４８】
ここで、識別情報ｋは、例えば、１以上の整数であり、オフセットにより遷移確率１としたい状態変数の数である。ΔＥｋは、｛ΔＥｉ｝を小さい方から昇順にソートしたときの、小さい方から数えてｋ番目の値を示す。例えば、状態変数の数が１０２４個（ｎ＝１０２４）のとき、そのうち１％の割合で遷移確率１としたい場合は、ｋ＝１０とする。
【００４９】
係数情報αは、上記割合の状態変数を、局所解から何回のオフセットインクリメントで遷移確率１とするかを指定するための値である。前述のように、本例では、係数情報αは、０＜α＜１の実数である。状態遷移の分岐比に大きな影響を及ぼさないためには、局所解における平均滞在時間が局所解でないときの平均滞在時間の数倍程度になるようにするのがよいと考えられる。局所解でないときの平均滞在時間が上記１イタレーションの所要時間であるとき、例えば、α＝０．１やα＝０．３等とすることが考えられる。
【００５０】
このように、計算部１７は、保持部１５に保持されるエネルギー変化値｛ΔＥｉ｝のうち、絶対値の小さい方から数えてｋ番目に相当する変化値ΔＥｋを選択し、選択したΔＥｋに係数情報αを乗じてオフセット増分値Δｙを計算する。なお、オフセット値ｙの初期値は０なので、最初の更新後のオフセット値ｙは、ｙ＝Δｙである。
【００５１】
また、計算部１７は、複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに保持部１５が保持する変化値｛ΔＥｉ｝を取得し、オフセット増分値（局所解に陥ったときに最初に加えるオフセット値）を更新する。温度の低下に伴って、Ｔｆ−１（ｕ）が変化し、各状態遷移の受入確率も変化するからである。
【００５２】
ここで、エネルギー変化値｛−ΔＥｉ｝と比較される判定閾値（Ｔｆ−１）について説明する。
図２は、エネルギー変化値と比較される判定閾値の例を示す図である。
【００５３】
一例として、メトロポリス法を適用する場合を考える。この場合、式（１）、（２）から、遷移受入確率Ａ＝ｐ（ΔＥ，Ｔ）と、エネルギー増分ΔＥとの関係は、グラフ４１で表される。グラフ４１の横軸は、エネルギー増分ΔＥであり、縦軸は遷移受入確率Ａである。グラフ４１によれば、エネルギーが下がる場合（ΔＥ≦０の場合）、Ａ＝１である。エネルギーが上がる場合（ΔＥ＞０の場合）、遷移受入確率Ａは、Ａ＝Ａ（ΔＥ）である。図１に例示した比較器２４では、前述のように、式（１）、（２）の両辺に単調増加関数である逆関数ｆ−１を作用させた結果により比較を行う。式（５）によれば、一様乱数ｕに対する判定閾値Ｔｆ−１（ｕ）＝Ｔ×ｌｏｇ（ｕ）は、グラフ４２で表される。グラフ４２の横軸は一様乱数ｕを示し、縦軸は判定閾値Ｔｆ−１である。
【００５４】
オフセット値ｙを考慮する場合、エネルギー変化値｛−ΔＥｉ｝と、判定閾値Ｔｆ−１（ｕ）との間に次の式（７）または式（８）の関係がある場合、インデックスｉの状態変数の変化が許容される。図１では、比較器２４により、式（７）の関係性を評価して、遷移可否｛ｆｉ｝を出力する例を示している。
【００５５】
【数７】
2020079991.tif 000009
【００５６】
【数８】
2020079991.tif 000010
【００５７】
次に、局所解における遷移受入確率について説明する。
図３は、状態に応じたエネルギー分布の例を示す図である。
グラフ４３は、各状態変数で表される状態に対するエネルギーの関係を示す。グラフ４３の横軸は状態であり、縦軸はエネルギーである。グラフ４３では、エネルギーが最小になる状態（最適解）の他に、エネルギーが最小ではない極小値になる状態（局所解）が示されている。
【００５８】
前述の式（１）、（２）、（３）より、温度が低いほど、または、エネルギー変化値が（正に）大きくなるほど状態遷移の受入確率は低くなる。
最適化装置１０において、演算の実行時間が長くなる主な原因の１つに、最適解を安定な状態にするには温度を十分に下げなければならない一方で、比較的低い温度では局所解からの脱出が非常に低い頻度でしか起こらない（状態遷移の受入確率が低い）ことが挙げられる。
【００５９】
図４は、局所解での１ハミング距離の状態遷移の受入確率の例を示す図である。
グラフ４４は、局所解における状態遷移候補の状態遷移ｓｉに対する１ハミング距離の状態遷移の受入確率を示す。グラフ４４の横軸は、状態遷移候補となる状態遷移ｓｉであり、縦軸は状態遷移の受入確率である。
【００６０】
グラフ４４における波形は、局所解における各状態遷移の受入確率が１よりもはるかに小さいことを示す。このため、状態遷移が生じる可能性が低く、局所解からの脱出に時間がかかる。
【００６１】
そこで、最適化装置１０は、オフセット値ｙを用いて、局所解からの脱出を促進する。特に、最適化装置１０は、オフセット増分値を適応的に決定することで、解の精度の悪化を抑えつつ、演算を高速化する。
【００６２】
図５は、オフセット増分値の例を示す図である。
図５（Ａ）はグラフ４５を示す。図５（Ｂ）はグラフ４６を示す。グラフ４５，４６の横軸は、状態遷移候補となる状態遷移ｓｉであり、縦軸は状態遷移の受入確率である。
【００６３】
前述のように、識別情報ｋは、オフセット値を用いて、遷移可としたい状態変数の割合（または数）に応じて決定される。係数情報αは、例えば、０．３３である。
このとき、図５（Ａ）の例において、エネルギー変化値｛−ΔＥｉ｝にオフセット値ｙとしてΔｙを３回加算した場合に、波形４５ａで示される受入確率は、波形４５ｂで示される受入確率となることが期待される。波形４５ｂにおいて、遷移確率が１となる状態変数の割合は、ｋ／ｎ程度となることが期待される。
【００６４】
同様に、図５（Ｂ）の例において、エネルギー変化値｛−ΔＥｉ｝にオフセット値ｙとしてΔｙを３回加算した場合に、波形４６ａで示される受入確率は、波形４６ｂで示される受入確率となることが期待される。波形４６ｂにおいて、遷移確率が１となる状態変数の割合は、ｋ／ｎ程度となることが期待される。
【００６５】
このように、受入確率を表す波形にピークがあっても、係数情報αに応じた回数のオフセットインクリメントによって、一定の割合の状態遷移候補を、遷移確率１とすることができる。
【００６６】
次に、オフセット増分値の比較例を説明する。
図６は、オフセット増分値の比較例を示す図である。
図６（Ａ）は、オフセット増分値が小さ過ぎる場合のグラフ４７を例示する。図６（Ｂ）は、オフセット増分値が大き過ぎる場合のグラフ４８を例示する。グラフ４７，４８の横軸は状態遷移候補となる状態遷移ｓｉであり、縦軸は状態遷移の受入確率である。
【００６７】
グラフ４７で例示されるように、オフセット増分値Δｙが小さ過ぎると、局所解からの脱出に多くの時間を要し、最適化装置１０の演算を十分に高速化できない。具体的には、オフセット増分値Δｙが小さいほど、波形４７ａで示される受入確率を波形４７ｂで示される受入確率とするまでのオフセットインクリメントの回数が増す。このため、局所解での滞在時間が長くなり、最適化装置１０の演算が遅延する。
【００６８】
また、グラフ４８で例示されるように、オフセット増分値Δｙが大き過ぎると、比較的大きなエネルギー増加をもたらす状態遷移が発生する可能性が過剰に高まる。具体的には、オフセット増分値Δｙが大き過ぎると、波形４８ａで示される受入確率が、波形４８ｂで示される受入確率まで一気に上昇する。すると、本来は、局所解においても比較的エネルギーの増加が少ない状態遷移の受入確率が高くなるべきであるにも関わらず、比較的エネルギーの増加が少ない状態遷移が候補に挙がる前にオフセット値ｙが大きくなってしまう。すなわち、波形４８ｂで示されるように、各エネルギー変化に対して、状態遷移の受入確率に差がなくなる。その結果、ある状態から別の状態への分岐比が、疑似焼き鈍し法における適切な分岐比からずれてしまい、解の精度が低下する。
【００６９】
これに対して、最適化装置１０は、識別情報ｋと係数情報αと保持部１５に保持されたエネルギー変化値とに基づいて、局所解の特徴からオフセット増分値Δｙを求めることで、ユーザの介入なしに、問題毎に適切なΔｙにより、オフセット値ｙを取得できる。エネルギー変化値｛ΔＥｉ｝の小さい方から数えてｋ番目の値を基にオフセット増分値Δｙを算出することで、所定回数のオフセットインクリメントにより、一定割合のビットの遷移確率が１になるように上昇させることができる。このため、オフセット値ｙが小さくなり過ぎないように、また、オフセット値ｙが大きくなり過ぎないように、適切に調整可能になる。その結果、状態の分岐比のずれを抑制して解の精度の悪化を抑えつつ、演算を高速化できる。
【００７０】
なお、最適化するエネルギーがイジングモデルで表される場合の疑似焼き鈍し法について、遷移候補の発生及び状態遷移に伴うエネルギーの変化の計算法について以下に簡単に説明する。
【００７１】
イジングモデルは、互いに相互作用を行うｎ個のスピンからなる系を表すモデルであり、各スピン（前述の状態変数に対応する）ｘｉは±１の２値を取る。系のエネルギーは、以下の式（９）で表される。式（９）は、評価関数の一例である。
【００７２】
【数９】
2020079991.tif 000011
【００７３】
式（９）において、Ｗｉｊは、スピンｘｉとスピンｘｊ間の相互作用係数を示し、ｂｉは、系のバイアス値である外部磁場係数を示す。Ｗｉｊとｂｉは、解きたい問題に応じて決定される定数である。
【００７４】
現在の状態から次の状態への状態遷移の候補は、１つのスピンの反転であり、ｎ通り存在する。したがって遷移候補としては反転する１つのスピン番号または複数のスピンの番号の集合を発生させればよい。
【００７５】
そしてｉ番目のスピン反転に伴うエネルギーの変化は、以下の式（１０）で表される。
【００７６】
【数１０】
2020079991.tif 000012
【００７７】
ここで、ｈｉは、式（１１）で表される。ｈｉは、ローカルフィールド（局所場）値と呼ばれ、各スピンの反転によるエネルギー変化の割合を表している。
【００７８】
【数１１】
2020079991.tif 000013
【００７９】
状態遷移を許容するかどうかはエネルギーの変化で決まるため、基本的にはエネルギーそのものを計算せずにローカルフィールド値からエネルギーの変化を計算すればよい。出力として得られた最低エネルギーに対する状態を用いる場合には、ローカルフィールド値からエネルギーの変化を計算しそれを累算していくことでエネルギーを求めることができる。
【００８０】
更に、
【００８１】
【数１２】
2020079991.tif 000014
【００８２】
であるから、ローカルフィールド値を行列演算により毎回計算し直す必要はなく、状態遷移に伴って反転のあったスピンによる変化分だけ加算すればよい。状態遷移に伴って反転のあったスピンによる変換分は、例えば、式（１３）により表される。
【００８３】
【数１３】
2020079991.tif 000015
【００８４】
このため、図１に示した状態保持部１２やエネルギー計算部１３は、ｎ個のスピンの値を保持するｎビットレジスタと加算器、排他的論理和等の比較的簡単な演算回路を用いて実現できる。
【００８５】
なお、疑似焼き鈍し法においては、状態遷移に伴い変化する状態変数は１つだけであり、それに対するエネルギー変化値はローカルフィールド値を用いて予め計算しておくことができる。図１では、各状態変数に対するエネルギー変化値｛−ΔＥｉ｝を求め、各状態変数に対して並列に遷移可否｛ｆｉ｝を判定し、その中から１つを選択する構成を例示した。一方、予め計算しておいたエネルギー変化値を遷移候補の発生に応じて１つ選択して、遷移可否ｆを判定する構成としてもよい。並列に遷移可否｛ｆｉ｝を判定する前者の構成における並列度をｇとすると、前者の構成では、エネルギー変化値を１つ選択する後者の構成よりも、１イタレーションにおける状態遷移確率を約ｇ倍に増加できる。
【００８６】
また、ボルツマンマシンでないときは、複数の状態変数が変化する遷移を考える場合もあるため、遷移候補の発生後に必要なエネルギー変化値を計算するような実装が有利になる場合もある。
【００８７】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図７は、第２の実施の形態の最適化装置のハードウェア例を示す図である。
【００８８】
最適化装置５０は、組合せ最適化問題を、イジングモデルの基底状態を求める問題に置き換えて演算することで、組合せ最適化問題の解を求める。イジングモデルにおける１つの状態変数は、１ビットで表される。当該ビットを、スピンビットまたは単にスピンと言うことがある。イジングモデルの状態は、複数のスピンビット（スピンビット列）により表される。
【００８９】
最適化装置５０は、ＣＰＵ５１、ＲＡＭ（Random Access Memory）５２、ＨＤＤ（Hard Disk Drive）５３、ＮＩＣ（Network Interface Card）５４、出力ＩＦ（Interface）５５、入力ＩＦ５６、媒体リーダ５７および確率的探索部１００を有する。ＣＰＵ５１、ＲＡＭ５２、ＨＤＤ５３、ＮＩＣ５４、出力ＩＦ５５、入力ＩＦ５６、媒体リーダ５７および確率的探索部１００は、最適化装置５０のバスに接続される。バスは、例えばＰＣＩｅ（Peripheral Component Interconnect express）バスである。
【００９０】
ＣＰＵ５１は、プログラムの命令を実行するプロセッサ（演算部）である。ＣＰＵ５１は、ＨＤＤ５３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ５２にロードし、プログラムを実行する。なお、ＣＰＵ５１は複数のプロセッサコアを含んでもよい。また、最適化装置５０は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００９１】
ＲＡＭ５２は、最適化装置５０の主記憶装置である。ＲＡＭ５２は、ＣＰＵ５１が実行するプログラムやＣＰＵ５１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。最適化装置５０は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００９２】
ＨＤＤ５３は、最適化装置５０の補助記憶装置である。ＨＤＤ５３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェア等のソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。最適化装置５０は、ＨＤＤに代えて、または、ＨＤＤと併せて、ＳＳＤ（Solid State Drive）等の他の種類の補助記憶装置を備えてもよい。
【００９３】
ＮＩＣ５４は、ネットワーク６０に接続され、ネットワーク６０を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ５４は、例えば、ネットワーク６０に属するスイッチやルータ等の通信装置とケーブルで接続される。
【００９４】
出力ＩＦ５５は、ＣＰＵ５１からの命令に従って、最適化装置５０に接続されたディスプレイ６１に画像を出力する。ディスプレイ６１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイ等、任意の種類のディスプレイを用いることができる。
【００９５】
入力ＩＦ５６は、最適化装置５０に接続された入力デバイス６２から入力信号を取得し、ＣＰＵ５１に出力する。入力デバイス６２としては、マウスやタッチパネル等のポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチ等を用いることができる。
【００９６】
媒体リーダ５７は、記録媒体６３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体６３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリ等を使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００９７】
媒体リーダ５７は、例えば、記録媒体６３から読み取ったプログラムやデータを、ＲＡＭ５２やＨＤＤ５３等の他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ５１によって実行される。なお、記録媒体６３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体６３やＨＤＤ５３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００９８】
確率的探索部１００は、ハードウェアにより疑似焼き鈍し法を実行するアクセラレータである。確率的探索部１００は、例えば、１チップの半導体集積回路であり、ＦＰＧＡ等を用いて実現される。確率的探索部１００は、最適化問題に関する設定情報をＣＰＵ５１から受け付け、最適化問題に対する演算を実行する。確率的探索部１００は、最適化問題の演算結果をＲＡＭ５２またはＨＤＤ５３に出力する。最適化装置５０は、確率的探索部１００を複数有してもよい。
【００９９】
なお、最適化装置５０は、ネットワーク６０に接続された端末装置（図示を省略している）から最適化問題に関する設定情報を受信し、ネットワーク６０を介して、当該端末装置に最適化問題に対する演算結果を送信してもよい。
【０１００】
図８は、最適化装置の機能例を示す図である。
最適化装置５０の確率的探索部１００およびＣＰＵ５１の機能を主に説明する。確率的探索部１００は、状態保持部１１０、エネルギー計算部１２０、遷移制御部１３０、制御部１４０およびΔＥ保持部１５０を有する。
【０１０１】
状態保持部１１０は、現在の状態Ｓを保持する。
状態保持部１１０は、イジングモデルの現在の状態Ｓ（複数のスピンビット）を保持する。
【０１０２】
エネルギー計算部１２０は、状態Ｓで示されるスピンビット列の何れかが変化することに応じて状態遷移が起こる場合、エネルギー変化値を、複数の状態遷移（状態遷移の候補）のそれぞれに対して計算する。ここで、スピンビットの数をｎ個（ｎは２以上の整数）とする。また、スピンビットを識別する情報をインデックスと呼び、ｉ（ｉは１以上ｎ以下の整数）で表す。インデックスｉ＝１〜ｎの各スピンビットの変化（反転）に応じたエネルギー変化値は、｛−ΔＥｉ｝と表される。
【０１０３】
遷移制御部１３０は、状態遷移の候補｛Ｎｉ｝をエネルギー計算部１２０に供給する。本例では、スピンビット列に含まれる全てのスピンビットが状態遷移の候補になるものとする。遷移制御部１３０は、温度値Ｔとエネルギー変化値｛−ΔＥｉ｝と乱数値とに基づいて、エネルギー変化値｛−ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移（状態遷移の候補）の何れかを受け入れるか否かを確率的に決定する。遷移制御部１３０は、決定したスピンビットのインデックスＮ（遷移番号Ｎ）と反転可否を示すフラグｆとを状態保持部１１０およびエネルギー計算部１２０に供給する。後述するように、何れのスピンビットも反転しない場合（ｆが反転不可を示す場合）、遷移制御部１３０は、エネルギー変化値｛−ΔＥｉ｝にオフセット値ｙを加算して、熱励起エネルギーとの相対関係を評価することで、状態遷移を促進する。
【０１０４】
制御部１４０は、確率的探索部１００による演算を制御する。具体的には、制御部１４０は、スピンビット列の初期値を状態保持部１１０に設定する。また、制御部１４０は、スピンビット間の相互作用係数Ｗｉｊやバイアス値ｂｉをエネルギー計算部１２０に設定する。制御部１４０は、温度を示す温度値Ｔを遷移制御部１３０へ供給する。更に、制御部１４０は、遷移制御部１３０に、オフセット増分値Δｙを供給する。ここで、第２の実施の形態では、オフセット増分値Δｙは、ＣＰＵ５１によって計算される。制御部１４０は、ΔＥ保持部１５０に保持されているエネルギー変化値を取得し、ＣＰＵ５１に供給する。制御部１４０は、確率的探索部１００による演算が終了すると、最終状態のスピンビット列を状態保持部１１０から取得し、最適化問題の解として、ＣＰＵ５１に供給する。
【０１０５】
ΔＥ保持部１５０は、エネルギー計算部１２０が計算した所定回数の状態遷移のそれぞれに対応する複数のエネルギー変化値｛−ΔＥｉ｝を、識別情報に対応して複数のエントリにそれぞれ保持する。例えば、ΔＥ保持部１５０は、ある最適化問題の演算において、演算の開始から演算途中の所定タイミングまでに得られた状態のうち、最低エネルギー状態からの状態遷移による複数のエネルギー変化値｛−ΔＥｉ｝を保持する。ただし、ΔＥ保持部１５０により保持される値の符号は、回路構成に応じて、逆転していてもよい。図８の例では、後述する遷移制御部１３０の回路構成に対して、ΔＥ保持部１５０は、エネルギー変化値｛ΔＥｉ｝を保持する。
【０１０６】
具体的には、ΔＥ保持部１５０には、状態Ｓに対する最小エネルギーが更新された旨を示す信号Ｍ（最小エネルギー更新信号Ｍ）が入力される。ΔＥ保持部１５０は、最小エネルギー更新信号Ｍが入力されたときの、エネルギー計算部１２０により計算されたエネルギー変化値（｛ΔＥｉ｝ｍｉｎと表す）を保持する。
【０１０７】
ここで、例えば、イジングモデルの状態に対して得られた最小エネルギーは、制御部１４０により保持されてもよい。イジングモデルの状態に対するエネルギーは、式（９）により計算される。制御部１４０は、式（９）により計算される最小エネルギーが更新されると、最小エネルギー更新信号Ｍを、ΔＥ保持部１５０に供給してもよい。あるいは、確率的探索部１００は、式（９）により計算される最小エネルギーを保持する最小エネルギー保持部（図８では図示を省略している）を有してもよい。そして、当該最小エネルギー保持部が、最小エネルギーの更新に応じて、最小エネルギー更新信号Ｍを、ΔＥ保持部１５０に供給してもよい。
【０１０８】
ＣＰＵ５１は、ＲＡＭ５２に記憶された最適化装置５０の制御プログラム７０を実行することで、Δｙ計算部７１の機能を発揮する。
Δｙ計算部７１は、入力ＩＦ５６による識別情報ｋおよび係数情報αの入力を受け付ける。識別情報ｋは１≦ｋ＜ｎの整数である。係数情報αは０＜α＜１の実数である。
【０１０９】
Δｙ計算部７１は、制御部１４０から取得したエネルギー変化値｛ΔＥｉ｝ｍｉｎ、識別情報ｋおよび係数情報αに基づいて、オフセット増分値Δｙを計算し、制御部１４０に供給する。具体的には、Δｙ計算部７１は、エネルギー変化値｛ΔＥｉ｝ｍｉｎを昇順にソートし、上位ｋ番目（小さい方から数えてｋ番目）のΔＥｋを取得する。そして、Δｙ計算部７１は、Δｙ＝ｍａｘ（０，α×ΔＥｋ）を求める。
【０１１０】
ここで、確率的探索部１００の処理では、温度値Ｔが徐々に下げられる。温度値Ｔの低下に伴って、判定閾値Ｔｆ−１（ｕ）も変化するため、Δｙ計算部７１は、オフセット増分値Δｙを温度値Ｔの低下に伴って変化させる。例えば、Δｙ計算部７１は、確率的探索部１００による一定イタレーション回数毎に、オフセット増分値Δｙを更新することが考えられる。一定イタレーション回数は、Δｙ算出処理の所要時間（ＣＰＵ５１によるΔｙ算出の処理時間）が、確率的探索部１００による演算時間に対して十分小さくなる値（オーバーヘッドが小さくなる値）に設定される。一例では、確率的探索部１００による演算時間がＣＰＵ５１によるΔｙ算出の処理時間に対して１０倍以上（オーバーヘッド１０％以下）となるようなイタレーション回数が予め設定される。
【０１１１】
ここで、遷移制御部１３０の回路例を説明する。
図９は、遷移制御部の回路例を示す図である。
遷移制御部１３０は、熱励起エネルギー生成部１３１、オフセット加算回路１３２、オフセット制御回路１３３、比較器１３４およびセレクタ１３５を有する。なお、遷移制御部１３０には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図９では図示を簡単にするため省略されている。
【０１１２】
ここで、熱励起エネルギー生成部１３１、オフセット加算回路１３２、オフセット制御回路１３３、比較器１３４およびセレクタ１３５は、図１で説明した同名の回路要素に対応するため、説明を省略する。図９におけるオフセット加算回路１３２の減算器１３２ａは、図１の減算器２２ａに相当する。また、図９におけるオフセット制御回路１３３の累算器１３３ａは、図１の累算器２３ａに相当する。エネルギー変化値｛ΔＥｉ｝ｍｉｎは、ΔＥ保持部１５０に保持される。
【０１１３】
オフセット制御回路１３３には、ＣＰＵ５１によって実現されるΔｙ計算部７１により計算されたオフセット増分値Δｙが供給される。また、Δｙ計算部７１には、入力ＩＦ５６により、識別情報ｋおよび係数情報αが供給される。Δｙ計算部７１は、図１で説明した選択部３１および乗算器３２の機能をＣＰＵ５１により実行されるソフトウェアにより実現したものである。この場合、ＣＰＵ５１は、第１の実施の形態の計算部１７の一例である。入力ＩＦ５６は、第１の実施の形態の入力部１１の一例である。
【０１１４】
図１０は、保持されるエネルギー変化値の例を示す図である。
テーブルＴ１は、ΔＥ保持部１５０により保持され、ＣＰＵ５１に供給される｛ΔＥｉ｝ｍｉｎの一例を示す。ただし、図１０のテーブルＴ１では、ＣＰＵ５１により｛ΔＥｉ｝ｍｉｎで昇順にソートされた後の状態を示している。
【０１１５】
テーブルＴ１におけるｋは、識別情報を示す。ΔＥｉは、ΔＥ保持部１５０により保持されるエネルギー変化値を示す。
例えば、Δｙ計算部７１は、テーブルＴ１に基づいて、ソート後のエネルギー変化値の上位ｋ番目の値ΔＥｋを選択する。一例として、ｋ＝１０のとき、テーブルＴ１によれば、ΔＥｋ＝７７９５である。
【０１１６】
次に、確率的探索部１００による演算およびΔｙ計算部７１によるΔｙの計算を含む、最適化装置５０の演算スケジュールの例を説明する。
図１１は、演算スケジュールの例を示す図である。
【０１１７】
最適化装置５０では、確率的探索部１００とΔｙ計算部７１とが連携して、最適化問題の演算を行う。前述のように、Δｙ計算部７１は、ＣＰＵ５１により実現される。例えば、次のような演算スケジュールが考えられる。
【０１１８】
まず、ＣＰＵ５１は、確率的探索部１００を起動する（ステップＳＴ１）。ＣＰＵ５１は、確率的探索部１００に対して初期設定（スピンビット列、相互作用係数Ｗｉｊ、バイアス値ｂｉ等）や動作条件の設定（温度変更スケジュール等）を行い、演算の実行を開始させる。なお、オフセット増分値Δｙの初期値は０である。また、オフセット値ｙの初期値は０である。
【０１１９】
確率的探索部１００は、イジングモデルの基底状態を探索する（ステップＳＴ２）。
ＣＰＵ５１は、ステップＳＴ２において確率的探索部１００により一定イタレーション回数の探索が実行されたことを検出すると、ΔＥ保持部１５０からエネルギー変化値｛ΔＥｉ｝ｍｉｎを取得する。ＣＰＵ５１は、エネルギー変化値｛ΔＥｉ｝ｍｉｎと、識別情報ｋと係数情報αとに基づいて、オフセット増分値Δｙを計算する（ステップＳＴ３）。なお、識別情報ｋおよび係数情報αは、入力ＩＦ５６により予め入力される。ＣＰＵ５１は、計算したオフセット増分値Δｙを、確率的探索部１００に供給する。
【０１２０】
確率的探索部１００は、ステップＳＴ３で供給されたオフセット増分値Δｙを用いて、イジングモデルの基底状態を探索する（ステップＳＴ４）。
ＣＰＵ５１は、ステップＳＴ４において確率的探索部１００により一定イタレーション回数の探索が実行されたことを検出すると、ΔＥ保持部１５０からエネルギー変化値｛ΔＥｉ｝ｍｉｎを取得する。ＣＰＵ５１は、ステップＳＴ３と同様に、オフセット増分値Δｙを計算する（ステップＳＴ５）。ＣＰＵ５１は、計算したオフセット増分値Δｙを、確率的探索部１００に供給する。これにより、確率的探索部１００に供給されるオフセット増分値Δｙが更新される。
【０１２１】
確率的探索部１００は、ステップＳＴ５で供給されたオフセット増分値Δｙを用いて、イジングモデルの基底状態を探索する（ステップＳＴ６）。
ＣＰＵ５１は、確率的探索部１００により目標回数のイタレーションが実行されると、確率的探索部１００から最終状態に相当するスピンビット列を取得する。例えば、ＣＰＵ５１は、取得したスピンビット列に応じた最適化問題の解を、出力ＩＦ５５を介してディスプレイ６１に表示させる。
【０１２２】
図１１の例では、ＣＰＵ５１によるΔｙ計算ステップ（ＳＴ３，ＳＴ５）を２回行う例を示したが、３回以上行ってもよい。Δｙ計算ステップを何回行うかは、前述のように、確率的探索部１００の演算時間に対して許容されるオーバーヘッドに応じて決定される。
【０１２３】
次に、ＣＰＵ５１による上記の処理手順を説明する。
図１２は、最適化装置の処理例を示すフローチャートである。
（Ｓ１０）ＣＰＵ５１は、イタレーション回数を係数するカウンタｉｔをｉｔ＝０に設定する。
【０１２４】
（Ｓ１１）ＣＰＵ５１は、初期状態（スピンビット列の初期値や温度値Ｔの初期値等）と、初期エネルギーと、温度スケジュールとを確率的探索部１００に設定する。このとき、ＣＰＵ５１は、スピンビット間の相互作用係数Ｗｉｊ、バイアス値ｂｉを、確率的探索部１００に設定する。
【０１２５】
（Ｓ１２）ＣＰＵ５１は、オフセット増分値Δｙ＝０に設定する。
（Ｓ１３）ＣＰＵ５１は、オフセット増分値Δｙ＝０を確率的探索部１００に供給する。
【０１２６】
（Ｓ１４）ＣＰＵ５１は、Δｙ計算までのイタレーション回数ｐ＿ｉｔｒで、確率的探索部１００を起動する。
（Ｓ１５）ＣＰＵ５１は、確率的探索部１００によるイタレーション回数ｐ＿ｉｔｒまでの演算の終了を待つ。確率的探索部１００によるｐ＿ｉｔｒ回のイタレーション後の状態や最小エネルギー時の状態は、確率的探索部１００の内部に保持される。
【０１２７】
（Ｓ１６）ＣＰＵ５１は、確率的探索部１００によるイタレーション回数ｐ＿ｉｔｒまでの演算が終了すると、確率的探索部１００のΔＥ保持部１５０に保持される｛ΔＥｉ｝（＝｛ΔＥｉ｝ｍｉｎ）を取得する。
【０１２８】
（Ｓ１７）ＣＰＵ５１は、入力ＩＦ５６により入力される識別情報ｋと係数情報αと｛ΔＥｉ｝（＝｛ΔＥｉ｝ｍｉｎ）に基づいて、オフセット増分値Δｙを計算する。
（Ｓ１８）ＣＰＵ５１は、カウンタｉｔにｐ＿ｉｔｒを加算する（ｉｔ＝ｉｔ＋ｐ＿ｉｔｒ）。
【０１２９】
（Ｓ１９）ＣＰＵ５１は、ｉｔ＞ｎｕｍ＿ｉｔｒであるか否かを判定する。ｉｔ＞ｎｕｍ＿ｉｔｒの場合、ステップＳ２０に処理が進む。ｉｔ≦ｎｕｍ＿ｉｔｒの場合、ステップＳ１３に処理が進む。ここで、ｎｕｍ＿ｉｔｒは、確率的探索部１００により最終状態を得るまでに実行するイタレーションの回数である。
【０１３０】
（Ｓ２０）ＣＰＵ５１は、確率的探索部１００から最終状態（最終状態を示すスピンビット列）を取得する。そして、処理が終了する。
図１３は、確率的探索部の回路例を示す図である。
【０１３１】
例えば、確率的探索部２００の回路構成により、確率的探索部１００と等価な機能を実現することができる。確率的探索部２００は、エネルギー計算部２１ａ１，…，２１ａｉ，…，２１ａｎ、遷移制御部２２０、状態更新部２３０およびΔＥ保持部２４０を有している。
【０１３２】
エネルギー計算部２１ａ１〜２１ａｎは、図８に示したエネルギー計算部１２０の一例であり、エネルギー変化値（ΔＥ１，…，ΔＥｉ，…，ΔＥｎ（｛ΔＥｉ｝に相当））を計算し、出力する。
【０１３３】
例えば、エネルギー計算部２１ａｉは、レジスタ２１１、セレクタ２１２，２１３、乗算器２１４、加算器２１５、レジスタ２１６、セレクタ２１７および乗算器２１８を有する。
【０１３４】
レジスタ２１１は、前述の式（９）等におけるスピンビット間の相互作用係数Ｗｉ１，Ｗｉ２，…，Ｗｉｎを格納する。
なお、相互作用係数Ｗｉ１〜Ｗｉｎは、例えば、確率的探索部１００内の制御部１４０（図１３では図示を省略している）、または、ＣＰＵ５１により計算対象の問題に応じて予め計算され、レジスタ２１１に格納される。なお、上記のような相互作用係数Ｗｉ１〜Ｗｉｎは、ＲＡＭ等のメモリに格納されてもよい。
【０１３５】
セレクタ２１２は、遷移制御部２２０が出力する遷移番号Ｎに基づき、レジスタ２１１に格納されている相互作用係数Ｗｉ１〜Ｗｉｎのうち１つを選択して出力する。
例えば、Ｎ＝ｎがセレクタ２１２に入力されたとき、セレクタ２１２は、相互作用係数Ｗｉｎを選択する。
【０１３６】
セレクタ２１３は、状態更新部８３が出力する更新後のスピンビットｘＮに基づき、１または−１を選択して出力する。セレクタ２１３は、更新後のｘＮが０のときには−１を選択して出力し、更新後のｘＮが１のときには１を選択して出力する。
【０１３７】
乗算器２１４は、セレクタ２１２が出力する相互作用係数と、セレクタ２１３が出力する値とを乗算した積を出力する。
加算器２１５は、乗算器２１４が出力する乗算結果と、レジスタ２１６に格納されている値とを加算した和を出力する。
【０１３８】
レジスタ２１６は、図示しないクロック信号に同期して、加算器２１５が出力する値を取り込む。レジスタ２１６は、例えば、フリップフロップである。なお、レジスタ２１６に格納される値が、式（１１）におけるローカルフィールド値ｈｉである。
【０１３９】
セレクタ２１７は、変化後のスピンビットｘｉが、０のとき１を出力し、１のとき−１を出力する。セレクタ２１７の出力は、式（１０）の−Δｘｉに相当する。図１３では、セレクタ２１７に、変化前のスピンビットｘｉが供給される例を示している。
【０１４０】
乗算器２１８は、レジスタ２１６が出力するローカルフィールド値ｈｉとセレクタ２１７が出力する値とを乗算した積をエネルギー変化値（ΔＥｉ）として出力する。
遷移制御部２２０は、回路部２２ａ１，…，２２ａｉ，…，２２ａｎ、セレクタ２２ｂ、オフセット制御回路２２ｃを有する。
【０１４１】
回路部２２ａ１〜２２ａｎは、図９に示した遷移制御部１３０の熱励起エネルギー生成部１３１、オフセット加算回路１３２、比較器１３４の機能を、状態遷移の候補毎に分割して行うものである。セレクタ２２ｂは、図９に示したセレクタ１３５に相当する。また、オフセット制御回路２２ｃは、図９に示したオフセット制御回路１３３に相当する。
【０１４２】
例えば、回路部２２ａｉは、符号反転回路２２１、加算器２２２、乱数発生回路２２３、選択法則適用部２２４、乗算器２２５、比較回路２２６およびインデックス保持部２２７を有する。
【０１４３】
符号反転回路２２１は、エネルギー計算部２１ａｉにより出力されたエネルギー変化値ΔＥｉの符号を反転させて、−ΔＥｉを出力する。図１３の例では、遷移制御部２２０において、ΔＥｉを−ΔＥｉとする点が、遷移制御部１３０と異なっている。
【０１４４】
加算器２２２は、符号反転回路２２１が出力する−ΔＥｉに、オフセット制御回路２２ｃにより供給されるオフセット値ｙを加算する。図１３の例では、熱励起エネルギーからオフセット値ｙを減算するのではなく、エネルギー変化値（−ΔＥ）にオフセット値ｙを加算する点が、遷移制御部１３０と異なっている。
【０１４５】
乱数発生回路２２３は、一様乱数ｕを発生させ、選択法則適用部２２４に供給する。選択法則適用部２２４は、メトロポリス法またはギブス法のうちの使用する法則に対応する変換テーブルに基づいて、一様乱数ｕに応じた関数ｆ−１（ｕ）の値を出力する。
【０１４６】
乗算器２２５は、図示を省略している温度制御部から供給される温度値Ｔと関数ｆ−１（ｕ）とを乗算した積Ｔｆ−１（ｕ）（熱励起エネルギーに相当）を比較回路２２６に出力する。
【０１４７】
比較回路２２６は、−ΔＥｉと、Ｔｆ−１（ｕ）に関して、式（８）に基づく判定を行う。式（８）が満たされる場合、比較回路２２６は、遷移可を示すｆｉをセレクタ２２ｂに出力する。式（８）が満たされない場合、比較回路２２６は、遷移不可を示すｆｉをセレクタ２２ｂに出力する。
【０１４８】
インデックス保持部２２７は、エネルギー計算部２１ａｉおよび回路部２２ａｉに対応するスピンビットのインデックスｉをセレクタ２２ｂに出力する。
遷移制御部２２０は、上記構成により、図９に示した遷移制御部１３０と同様の動作を行う。
【０１４９】
状態更新部２３０は、図８に示した状態保持部１１０の機能を有し、遷移制御部２２０が出力する遷移可否ｆと遷移番号Ｎに基づき、保持されているスピンビットｘ１〜ｘｎの値を更新して、その値の組合せ（Ｓｔａｔｅ）を出力する。また、状態更新部２３０は、更新後のスピンビットの値（図１３の例ではｘＮと表記されている）を出力する。
【０１５０】
ΔＥ保持部２４０は、最低エネルギー状態のときのエネルギー変化値｛ΔＥｉ｝＝｛ΔＥｉ｝ｍｉｎを保持する。ΔＥ保持部２４０は、図８に示したΔＥ保持部１５０に相当する。
【０１５１】
最適化装置５０は、確率的探索部２００により、確率的探索部１００と同様の機能を実現することができる。
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１５２】
第２の実施の形態では、ΔＥ保持部１５０またはΔＥ保持部２４０により、最小エネルギー状態のときのエネルギー変化値｛ΔＥｉ｝ｍｉｎを保持するものとした。一方、第３の実施の形態では、最小エネルギー状態のときのエネルギー変化値｛ΔＥｉ｝ｍｉｎではなく、最小エネルギー状態を表すスピンビット列を保持する最小エネルギー状態保持部を、確率的探索部に設ける点が異なる。第３の実施の形態では、エネルギー変化値｛ΔＥｉ｝ｍｉｎは、最小エネルギー状態を表すスピンビット列に基づいてＣＰＵ５１により計算される。
【０１５３】
図１４は、第３の実施の形態の最適化装置の機能例を示す図である。
第３の実施の形態の最適化装置５０ａのハードウェアは、図７で例示した第２の実施の形態の最適化装置５０のハードウェアと同様である。ただし、最適化装置５０ａは、確率的探索部１００に代えて、確率的探索部３００を有する。
【０１５４】
確率的探索部３００は、状態保持部３１０、エネルギー計算部３２０、遷移制御部３３０、制御部３４０および最小エネルギー状態保持部３５０を有する。ここで、状態保持部３１０、エネルギー計算部３２０および遷移制御部３３０は、図８に示した同名の回路に相当する。
【０１５５】
制御部３４０は、確率的探索部３００による演算を制御する。具体的には、制御部３４０は、スピンビット列の初期値を状態保持部３１０に設定する。また、制御部３４０は、スピンビット間の相互作用係数Ｗｉｊやバイアス値ｂｉをエネルギー計算部３２０に設定する。制御部３４０は、温度を示す温度値Ｔを遷移制御部３３０へ供給する。更に、制御部３４０は、遷移制御部３３０に、オフセット増分値Δｙを供給する。
【０１５６】
また、制御部３４０は、最小エネルギー状態保持部３５０に保持されている最小エネルギー状態のスピンビット列（Ｓｍｉｎと表す）を取得し、ＣＰＵ５１に供給する。制御部３４０は、確率的探索部３００による演算が終了すると、最終状態のスピンビット列を状態保持部３１０から取得し、最適化問題の解として、ＣＰＵ５１に供給する。
【０１５７】
最小エネルギー状態保持部３５０は、エネルギー値の最小値が更新されると、当該最小値におけるスピンビット列（複数の状態変数の値）を保持する。より具体的には、最小エネルギー状態保持部３５０は、最小エネルギー更新信号Ｍが供給されると、Ｍの供給タイミングにおいて状態保持部３１０により供給されるスピンビット列を、最小エネルギー状態のスピンビット列Ｓｍｉｎとして保持する。最小エネルギー状態保持部３５０は、スピンビット列Ｓｍｉｎを制御部３４０に供給する。
【０１５８】
ここで、例えば、イジングモデルの状態に対して得られた最小エネルギーは、制御部３４０により保持されてもよい。イジングモデルの状態に対するエネルギーは、式（９）により計算される。制御部３４０は、式（９）により計算される最小エネルギーが更新されると、最小エネルギー更新信号Ｍを、最小エネルギー状態保持部３５０に供給してもよい。あるいは、確率的探索部３００は、式（９）により計算される最小エネルギーを保持する最小エネルギー保持部（図８では図示を省略している）を有してもよい。そして、当該最小エネルギー保持部が、最小エネルギーの更新に応じて、最小エネルギー更新信号Ｍを、最小エネルギー状態保持部３５０に供給してもよい。
【０１５９】
ＣＰＵ５１は、ＲＡＭ５２に記憶された最適化装置５０ａの制御プログラム７０ａを実行することで、ΔＥ計算部７２およびΔｙ計算部７４の機能を発揮する。
ΔＥ計算部７２は、スピンビット列Ｓ（複数の状態変数）に関する状態遷移の可否の決定を一定回数行うごとに、最小エネルギー状態保持部３５０に保持されたスピンビット列Ｓｍｉｎに基づいて、当該スピンビット列Ｓｍｉｎ（最小エネルギー状態）を遷移元とする状態遷移のそれぞれに対応するエネルギー変化値｛ΔＥｉ｝ｍｉｎを計算し、ＲＡＭ５２におけるΔＥ保持部７３に格納する。
【０１６０】
すなわち、ΔＥ計算部７２は、制御部３４０からスピンビット列Ｓｍｉｎを取得し、式（１０）、（１１）により、エネルギー変化値｛ΔＥｉ｝ｍｉｎを計算する。ΔＥ計算部７２は、計算したエネルギー変化値｛ΔＥｉ｝ｍｉｎを、ΔＥ保持部７３に格納する。ΔＥ保持部７３は、図１に示した第１の実施の形態の保持部１５の一例である。
【０１６１】
Δｙ計算部７４は、ΔＥ保持部７３に格納されたエネルギー変化値｛ΔＥｉ｝ｍｉｎに基づいて、オフセット増分値Δｙを計算する。具体的には、Δｙ計算部７４は、入力ＩＦ５６により入力される識別情報ｋに基づいて、エネルギー変化値｛ΔＥｉ｝ｍｉｎからΔＥｋを取得する。ΔＥｋの取得方法は、Δｙ計算部７１によるΔＥｋの取得方法と同様である。そして、Δｙ計算部７４は、入力ＩＦ５６により入力された係数情報αを用いて、オフセット増分値Δｙ＝ｍａｘ（０，α×ΔＥｋ）を計算する。Δｙ計算部７４は、計算したオフセット増分値Δｙを制御部３４０に出力する。
【０１６２】
ここで、第２の実施の形態と同様に、ΔＥ計算部７２およびΔｙ計算部７４は、確率的探索部３００による一定イタレーション回数毎に、オフセット増分値Δｙを更新することが考えられる。一定イタレーション回数は、Δｙ算出処理の所要時間（ＣＰＵ５１によるΔｙ算出の処理時間）が、確率的探索部３００による演算時間に対して十分小さくなる値（オーバーヘッドが小さくなる値）に設定される。
【０１６３】
次に、最適化装置５０ａにおけるＣＰＵ５１の処理手順を説明する。
図１５は、最適化装置の処理例を示すフローチャートである。
第３の実施の形態では、図１２に示した第２の実施の形態の手順のうち、ステップＳ１６に代えて、ステップＳ１６ａ，Ｓ１６ｂを実行する点が異なる。そこで、以下では、ステップＳ１６ａ，Ｓ１６ｂを説明し、他のステップの説明を省略する。ステップＳ１６ａは、ステップＳ１５の次に実行される。
【０１６４】
（Ｓ１６ａ）ＣＰＵ５１は、確率的探索部３００によるイタレーション回数ｐ＿ｉｔｒまでの演算が終了すると、確率的探索部３００の最小エネルギー状態保持部３５０に保持されるスピンビット列Ｓｍｉｎ（＝｛ｘｉ｝）を取得する。
【０１６５】
（Ｓ１６ｂ）ＣＰＵ５１は、式（１０）、（１１）に基づいて、エネルギー変化値｛ΔＥｉ｝＝｛ΔＥｉ｝ｍｉｎを計算する。そして、ステップＳ１７に処理が進む。
このように、ＣＰＵ５１によりエネルギー変化値｛ΔＥｉ｝ｍｉｎを計算してもよい。この場合、確率的探索部３００は、ＣＰＵ５１にスピンビット列Ｓｍｉｎを供給すればよいので、確率的探索部３００がエネルギー変化値をＣＰＵ５１に供給する機能をもたなくても、オフセット増分値Δｙを適切に変更可能になる。
【０１６６】
図１６は、確率的探索部の回路例を示す図である。
例えば、確率的探索部４００の回路構成により、確率的探索部３００と等価な機能を実現することができる。確率的探索部４００は、エネルギー計算部４１ａ１，…，４１ａｉ，…，４１ａｎ、遷移制御部４２０、状態更新部４３０および最小エネルギー状態保持部４４０を有している。
【０１６７】
エネルギー計算部４１ａ１〜４１ａｎは、図１４に示したエネルギー計算部３２０の一例であり、エネルギー変化値（ΔＥ１，…，ΔＥｉ，…，ΔＥｎ（｛ΔＥｉ｝に相当）を計算し、出力する。
【０１６８】
例えば、エネルギー計算部４１ａｉは、レジスタ４１１、セレクタ４１２，４１３、乗算器４１４、加算器４１５、レジスタ４１６、セレクタ４１７および乗算器４１８を有する。
【０１６９】
ここで、レジスタ４１１、セレクタ４１２，４１３、乗算器４１４、加算器４１５、レジスタ４１６、セレクタ４１７および乗算器４１８は、図１３に示した同名の回路要素と同様である。
【０１７０】
遷移制御部４２０は、回路部４２ａ１，…，４２ａｉ，…，４２ａｎ、セレクタ４２ｂ、オフセット制御回路４２ｃを有する。
回路部４２ａ１〜４２ａｎは、図１３に示した回路部２２ａ１〜２２ａｎに相当する。例えば、回路部４２ａｉは、符号反転回路４２１、加算器４２２、乱数発生回路４２３、選択法則適用部４２４、乗算器４２５、比較回路４２６およびインデックス保持部４２７を有する。符号反転回路４２１、加算器４２２、乱数発生回路４２３、選択法則適用部４２４、乗算器４２５、比較回路４２６およびインデックス保持部４２７は、図１３に示した同名の回路要素と同様である。また、セレクタ４２ｂは、図１３に示したセレクタ２２ｂに相当する。オフセット制御回路４２ｃは、図１３に示したオフセット制御回路２２ｃに相当する。オフセット制御回路４２ｃには、図示を省略している制御部により、オフセット増分値Δｙが供給される。オフセット制御回路４２ｃは、オフセット増分値Δｙに基づいて算出されるオフセット値ｙを回路部４２ａ１〜４２ａｎに供給する。
【０１７１】
遷移制御部４２０は、上記構成により、図１４に示した遷移制御部３３０と同様の動作を行う。
状態更新部４３０は、図１４に示した状態保持部３１０の機能を有し、遷移制御部３３０が出力する遷移可否ｆと遷移番号Ｎに基づき、保持されているスピンビットｘ１〜ｘｎの値を更新して、その値の組合せ（Ｓｔａｔｅ）を出力する。また、状態更新部４３０は、更新後のスピンビットの値（図１６の例ではｘＮと表記されている）を出力する。
【０１７２】
最小エネルギー状態保持部４４０は、最低エネルギー状態のときのスピンビット列を状態更新部４３０から取得し、保持する。
最適化装置５０ａは、確率的探索部４００により、確率的探索部３００と同様の機能を実現することができる。
【０１７３】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２，第３の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１７４】
第２，第３の実施の形態では、オフセット増分値Δｙの計算機能をＣＰＵ５１により実行されるソフトウェアにより実現する例を示した。第４の実施の形態では、オフセット増分値Δｙの計算機能を、専用のハードウェアにより実現する例を示す。この場合、「最適化装置」は、下記に示すようにＣＰＵ５１を含まなくてもよい（ただし、「最適化装置」はＣＰＵ５１を含んでもよい）。
【０１７５】
図１７は、第４の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置５０ｂは、ＣＰＵ５１、ＲＡＭ５２、ＨＤＤ５３、ＮＩＣ５４、出力ＩＦ５５、入力ＩＦ５６、媒体リーダ５７および最適化装置５００を有する。各ハードウェアは、情報処理装置５０ｂのバスに接続される。バスは、例えばＰＣＩｅバスである。
【０１７６】
ＣＰＵ５１、ＲＡＭ５２、ＨＤＤ５３、ＮＩＣ５４、出力ＩＦ５５、入力ＩＦ５６および媒体リーダ５７は、図７に示した同名のハードウェアと同様である。
最適化装置５００は、確率的探索部１００と同様に、ＣＰＵ５１の指示に応じて、最適化問題の演算を実行する。最適化装置５００は、例えば、１チップの半導体集積回路であり、ＦＰＧＡ等を用いて実現される。最適化装置５００は、オフセット増分値Δｙを計算する専用のハードウェアを有する。
【０１７７】
図１８は、最適化装置の回路例を示す図である。
最適化装置５００は、遷移制御部５１０、ΔＥ保持部５２０、入力部５３０、ΔＥ選択部５４０、Δｙ計算部５５０、更新制御部５７０およびイタレーションカウンタ５６０を有する。ここで、最適化装置５００は、図８に例示した状態保持部１１０、エネルギー計算部１２０および制御部１４０に相当する回路も有するが、図１８では図示を簡単にするため省略している。
【０１７８】
遷移制御部５１０は、図１に示す遷移制御部１６と同様の機能を実現する。遷移制御部５１０は、熱励起エネルギー生成部５１１、オフセット加算回路５１２、オフセット制御回路５１３、比較器５１４およびセレクタ５１５を有する。熱励起エネルギー生成部５１１、オフセット加算回路５１２、オフセット制御回路５１３、比較器５１４およびセレクタ５１５は、図１に示した同名の回路要素と同様である。なお、遷移制御部５１０には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図１８では図示を簡単にするため省略されている。
【０１７９】
ΔＥ保持部５２０は、最小エネルギー更新信号Ｍが供給されると、そのときの｛ΔＥｉ｝＝｛ΔＥｉ｝ｍｉｎを保持する。ΔＥ保持部５２０は、図１に示した保持部１５に相当する。
【０１８０】
入力部５３０は、ＣＰＵ５１による識別情報ｋの入力を受け付け、ΔＥ選択部５４０に識別情報ｋを供給する。入力部５３０は、ＣＰＵ５１による係数情報αの入力を受け付け、Δｙ計算部５５０に係数情報αを供給する。
【０１８１】
ΔＥ選択部５４０は、ΔＥ保持部５２０に保持されたエネルギー変化値｛ΔＥｉ｝ｍｉｎのうち、上位ｋ番目（小さい方から数えてｋ番目）のΔＥｋを選択する。ΔＥ選択部５４０は、Δｙ計算部５５０にΔＥｋを供給する。ΔＥ選択部５４０の回路例は後述される。
【０１８２】
Δｙ計算部５５０は、オフセット増分値Δｙ＝ｍａｘ（０，α×ΔＥｋ）を計算し、オフセット増分値Δｙを更新制御部５７０に供給する。
イタレーションカウンタ５６０は、状態遷移のイタレーション回数を計数するカウンタである。
【０１８３】
更新制御部５７０は、イタレーションカウンタ５６０により計数されたイタレーション回数が一定回数（ｐ＿ｉｔｒ）に達するたびに、累積器５１３ａに供給するオフセット増分値Δｙを更新する。
【０１８４】
次に、ΔＥ選択部５４０の回路例を説明する。
図１９は、ΔＥ選択部の回路例を示す図である。
ΔＥ選択部５４０は、レジスタ５４ａ１，５４ａ２，…，５４ａ（ｎ−１），５４ａｎを有する。レジスタ５４ａ１〜５４ａｎは、スピンビット毎に設けられる。レジスタ５４ａ１〜５４ａｎのそれぞれは、各スピンビットに対応するΔＥｉ（＝ΔＥ１，ΔＥ２，…，ΔＥｎ−１，ΔＥｎ）およびインデックス（ｉｎｄｅｘ＝１，２，…，ｎ−１，ｎ）が格納される。ここで、各スピンビットに対応するΔＥｉは、ΔＥ保持部５２０により、ΔＥ選択部５４０に供給される。
【０１８５】
ΔＥ選択部５４０は、ツリー状に多段に接続された複数のセレクタを有する。当該複数のセレクタは、レジスタ５４ａ１〜５４ａｎのそれぞれに格納されたΔＥｉのうち、小さい方から数えてｋ番目のΔＥｋを選択する。
【０１８６】
１段目のセレクタ５４ｂ１〜５４ｂｍのそれぞれは、前段のレジスタ５４ａ１〜５４ａｎのうちの隣り合う２つのレジスタに格納されたΔＥおよびインデックスの２つの組のうち、ΔＥが小さい方を選択して出力する。セレクタ５４ｂ１〜５４ｂｍの数ｍは、ｍ＝ｎ／２である。
【０１８７】
２段目のセレクタ５４ｃ１〜５４ｃｐのそれぞれは、前段のセレクタ５４ｂ１〜５４ｂｍのうちの隣り合う２つのセレクタから出力されたΔＥおよびインデックスの２つの組のうち、ΔＥが小さい方を選択して出力する。セレクタ５４ｃ１〜５４ｃｐの数ｐは、ｐ＝ｍ／２である。
【０１８８】
３段目以降も同様に、３段目以降のセレクタにより、隣り合う２つの前段セレクタから出力されたΔＥおよびインデックスの２つの組からΔＥが小さい方が選択される。そして、最終段のセレクタ５４ｑ１に、２つの前段セレクタからΔＥおよびインデックスの２つの組が入力される。セレクタ５４ｑ１により、入力された２つの組のうちΔＥが小さい方を選択することで、最終的に１つに絞り込まれたΔＥ＝ΔＥｍｉｎおよびインデックス（ｍｉｎインデックス）の組が、セレクタ５４ｑ１により出力される。
【０１８９】
こうして、セレクタ５４ｂ１〜５４ｑ１により、レジスタ５４ａ１〜５４ａｎに格納された（有効な）ΔＥｉのうちの最小値ΔＥｍｉｎが選択される。
セレクタ５４ｑ１は、レジスタ５４ａ１〜５４ａｎに格納されたインデックスのうち、ｍｉｎインデックスに相当するインデックスを無効値（例えば、−１）に設定する。レジスタ５４ａ１〜５４ａｎにおいて、インデックスに無効値が設定されると、当該インデックスに対応するΔＥが無効になる。すると、セレクタ５４ｂ１〜５４ｑ１による次の選択では、前回選択されたΔＥｍｉｎを除いて、最小のΔＥ＝ΔＥｍｉｎが選択される。
【０１９０】
次に、ΔＥ選択部５４０による選択論理を具体的に説明する。以下の説明では、セレクタ５４ｂ１〜５４ｑ１のそれぞれの２つの入力に対応するインデックスのうち、図面に向かって左側（インデックスが小さい方）を「インデックスＬ」、右側（インデックスが大きい方）を「インデックスＲ」と呼ぶことがある。図１９では、一例として、セレクタ５４ｂ１の入力に、インデックスＬを示す「Ｌ」、および、インデックスＲを示す「Ｒ」を図示している。
【０１９１】
図２０は、ΔＥ選択部の選択論理の例を示す図である。
選択論理Ｚ１は、セレクタ５４ｂ１〜５４ｑ１のそれぞれによる選択論理の一例を示す。選択論理Ｚ１では、インデックスＬ、インデックスＲ、ΔＥＬとΔＥＲの関係および選択結果の項目が示されている。
【０１９２】
インデックスＬは、セレクタ５４ｂ１〜５４ｑ１のそれぞれに入力されるインデックスのうちの小さい方を示す。インデックスＲは、セレクタ５４ｂ１〜５４ｑ１のそれぞれに入力されるインデックスのうちの大きい方を示す。ΔＥＬは、インデックスＬに対応するエネルギー変化値である。ΔＥＲは、インデックスＲに対応するエネルギー変化値である。ΔＥＬとΔＥＲの関係は、ΔＥＬとΔＥＲの大小関係を示す。選択結果は、インデックスＬ、インデックスＲおよびΔＥＬとΔＥＲの関係に応じたセレクタ５４ｂ１〜５４ｑ１のそれぞれによる選択結果を示す。図中の「ｄ／ｃ」はドントケアを示し、選択結果に影響を与えないことを示す。
【０１９３】
例えば、インデックスＬ，Ｒが「０以上」かつΔＥＬとΔＥＲの関係が「ΔＥＬ≦ΔＥＲ」の場合、セレクタ５４ｂ１〜５４ｑ１のそれぞれは、インデックスＬおよびΔＥＬの組を選択する。
【０１９４】
また、インデックスＬ，Ｒが「０以上」かつΔＥＬとΔＥＲの関係が「ΔＥＬ＞ΔＥＲ」の場合、セレクタ５４ｂ１〜５４ｑ１のそれぞれは、インデックスＲおよびΔＥＲの組を選択する。
【０１９５】
また、インデックスＬが「−１」（無効値）かつインデックスＲが「０以上」の場合、セレクタ５４ｂ１〜５４ｑ１のそれぞれは、インデックスＲおよびΔＥＲの組を選択する。
【０１９６】
また、インデックスＬが「０以上」かつインデックスＲが「−１」の場合、セレクタ５４ｂ１〜５４ｑ１のそれぞれは、インデックスＬおよびΔＥＬの組を選択する。
また、インデックスＬ，Ｒが「−１」（無効値）の場合、セレクタ５４ｂ１〜５４ｑ１のそれぞれは、インデックスＬおよびΔＥＬの組を選択する。
【０１９７】
次に、選択論理Ｚ１によるΔＥ選択部５４０の選択例を説明する。
図２１は、ΔＥ選択部による選択例を示す図である。
例えば、ΔＥ選択部５４０による１回目の選択の結果、セレクタ５４ｑ１はレジスタ５４ａ４に格納されたインデックスを「−１」（無効値）に設定する（ステップＳＴ１１）。すると、レジスタ５４ａ４に格納されたΔＥ４は、ΔＥ選択部５４０による以降の選択の候補から除外される。
【０１９８】
次に、ΔＥ選択部５４０による２回目の選択の結果、セレクタ５４ｑ１はレジスタ５４ａ（ｎ−２）に格納されたインデックスを「−１」（無効値）に設定する（ステップＳＴ１２）。すると、レジスタ５４ａ（ｎ−２）に格納されたΔＥｎ−２は、ΔＥ選択部５４０による以降の選択の候補から除外される。
【０１９９】
次に、ΔＥ選択部５４０による３回目の選択の結果、セレクタ５４ｑ１はレジスタ５４ａ３に格納されたインデックスを「−１」（無効値）に設定する（ステップＳＴ１３）。すると、レジスタ５４ａ３に格納されたΔＥ３は、ΔＥ選択部５４０による以降の選択の候補から除外される。
【０２００】
こうして、セレクタ５４ｑ１による「−１」（無効値）の設定をｋ−１回行った状態で出力されるΔＥｍｉｎをΔＥｋとして採用することで、ΔＥ保持部５２０に格納された｛ΔＥｉ｝ｍｉｎのうちの上位ｋ番目のΔＥｋを選択することができる。例えば、ｋ＝１０の場合、セレクタ５４ｑ１による「−１」の設定を９回繰り返すことで、所望のΔＥｋを得ることができる。そして、Δｙ計算部７４は、ΔＥ選択部５４０により選択されたΔＥｋに基づいて、オフセット増分値Δｙを計算する。
【０２０１】
このように、第２，第３の実施の形態で例示したＣＰＵ５１により実現されるΔｙ計算部７１やΔｙ計算部７４の機能をハードウェアにより実現することもできる。Δｙ計算機能をハードウェアにより実現することで、図１１に示したステップＳＴ２，ＳＴ４の間、および、ステップＳＴ４，ＳＴ６の間のΔｙ計算ステップの所要時間が短縮され、解の精度の悪化を抑えながら、最適化問題の計算時間を一層短縮できる。
【０２０２】
なお、第１の実施の形態の最適化装置１０の制御は、最適化装置１０が備えるＣＰＵ等のプロセッサにプログラムを実行させることで実現できる。また、第２，第３，第４の実施の形態の最適化装置５０，５０ａ，５００の制御は、ＣＰＵ５１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体６３に記録できる。
【０２０３】
例えば、プログラムを記録した記録媒体６３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体６３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ６２やＨＤＤ６３等の記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０２０４】
１０  最適化装置
１１  入力部
１２  状態保持部
１３  エネルギー計算部
１４  温度制御部
１５  保持部
１６  遷移制御部
１７  計算部
２１  熱励起エネルギー生成部
２２  オフセット加算回路
２２ａ  減算器
２３  オフセット制御回路
２３ａ  累算器
２４  比較器
２５  セレクタ
３１  選択部
３２  乗算器
【図１】
2020079991.tif 000016
【図２】
2020079991.tif 000017
【図３】
2020079991.tif 000018
【図４】
2020079991.tif 000019
【図５】
2020079991.tif 000020
【図６】
2020079991.tif 000021
【図７】
2020079991.tif 000022
【図８】
2020079991.tif 000023
【図９】
2020079991.tif 000024
【図１０】
2020079991.tif 000025
【図１１】
2020079991.tif 000026
【図１２】
2020079991.tif 000027
【図１３】
2020079991.tif 000028
【図１４】
2020079991.tif 000029
【図１５】
2020079991.tif 000030
【図１６】
2020079991.tif 000031
【図１７】
2020079991.tif 000032
【図１８】
2020079991.tif 000033
【図１９】
2020079991.tif 000034
【図２０】
2020079991.tif 000035
【図２１】
2020079991.tif 000036