(57)【要約】【課題】最適化問題の計算時間を短縮する。【解決手段】遷移制御部２０は、温度値Ｔとエネルギー変化値｛ΔＥｉ｝と乱数値とに基づいて、エネルギー変化値｛ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、エネルギー変化値｛ΔＥｉ｝の最小値ΔＥｍｉｎを検出し、最小値ΔＥｍｉｎが正の場合、最小値ΔＥｍｉｎに対して０より大きく１以下の値Ｍを乗じたオフセットを、複数の状態遷移のそれぞれのエネルギー変化値｛ΔＥｉ｝から差し引く。【選択図】図１
2019125155.tif 000002
【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する計算部と、
温度を示す温度値を制御する温度制御部と、
前記温度値と前記変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、前記複数の状態遷移のそれぞれに対して前記計算部が計算した前記変化値の最小値を検出し、前記最小値が正の場合、前記最小値に対して０より大きく１以下の値を乗じたオフセットを、前記複数の状態遷移のそれぞれの前記変化値から差し引く遷移制御部と、
を有する最適化装置。
【請求項２】
前記遷移制御部は、前記変化値が前記最小値となる状態遷移の受入確率が１となるように、前記オフセットを制御する、
請求項１に記載の最適化装置。
【請求項３】
前記遷移制御部は、
前記最小値を検出する最小値検出回路と、
前記オフセットを算出する第１の演算回路と、
前記複数の状態遷移のそれぞれの前記変化値から前記オフセットを引いた値を算出する第２の演算回路と、
選択信号に応じて、前記変化値または前記第２の演算回路が算出した値の何れか一方を出力する第１のセレクタと、
前記最小値が０以下の場合、前記第１のセレクタに前記変化値を選択させ、前記最小値が正の値の場合、前記第１のセレクタに前記第２の演算回路が算出した値を選択させる前記選択信号を生成する選択信号生成回路と、
を有する請求項１または２に記載の最適化装置。
【請求項４】
前記遷移制御部は、さらに、
前記複数の状態遷移のそれぞれについての、前記第１のセレクタの出力値から、前記乱数値に応じて第１の状態遷移についての第１の出力値を選択する第２のセレクタと、
前記乱数値に応じた、メトロポリス法またはギブス法で表される前記複数の状態遷移の受入確率を表す関数の逆関数の値を出力する記憶部と、
前記逆関数の値と前記温度値とを乗算した積で表される前記熱励起エネルギーを出力する乗算器と、
前記第２のセレクタが選択した前記第１の出力値と前記熱励起エネルギーとの比較結果に相当する値で表される、前記第１の状態遷移を受け入れるか否かの判定結果を出力する比較器と、
を有する請求項３に記載の最適化装置。
【請求項５】
前記遷移制御部は、さらに、
前記乱数値に応じた、メトロポリス法またはギブス法で表される前記複数の状態遷移の受入確率を表す関数の逆関数の値を出力する記憶部と、
前記逆関数の値と前記温度値とを乗算した積で表される前記熱励起エネルギーを出力する乗算器と、
前記複数の状態遷移のそれぞれについての前記第１のセレクタの出力値と、前記熱励起エネルギーとの比較結果に相当する値で表される、前記複数の状態遷移のそれぞれを受け入れるか否かの判定結果を出力する比較器と、
前記判定結果と前記乱数値に基づいて、前記複数の状態遷移のうち、状態遷移が受け入れられた第１の状態遷移を優先的に選択し、前記第１の状態遷移の番号と、前記第１の状態遷移についての前記判定結果を出力する遷移番号決定回路と、
を有する請求項３に記載の最適化装置。
【請求項６】
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、前記温度値と前記変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、前記複数の状態遷移のそれぞれに対して前記計算部が計算した前記変化値の最小値を検出し、前記最小値が正の場合、前記最小値に対して０より大きく１以下の値を乗じたオフセットを、前記複数の状態遷移のそれぞれの前記変化値から差し引く、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化装置及び最適化装置の制御方法に関する。
【背景技術】
【０００２】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置を用いて行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の１つの分野として最適化処理があり重要な分野となっている。たとえばある処理を行う場合に必要な資源やコストを最小化する問題、またはその処理による効果を最大化する解を求める問題などである。これらの問題が非常に重要であるのは明らかであろう。
【０００３】
最適化問題の代表的なものとして線形計画問題がある。これは複数の連続変数の線形和で表される評価関数を、線形和で表される制約条件の下で最大化または最小化する変数の値を求めるものであり、製品の生産計画など様々な分野で利用されている。この線形計画問題には単体法や内点法といった優れた解法が知られており、何十万以上の変数を持つ問題でも効率的に解くことができる。
【０００４】
一方最適化問題には、変数が連続値ではなく離散的な値を取るものも多く知られている。たとえば、複数の都市を順番に回り元に戻るときの最短経路を求める巡回セールスマン問題や、ナップザックに異なる品物を詰めるときその価値の和が最大となるような組み合わせを求めるナップザック問題などが挙げられる。このような問題は、離散最適化問題、組合せ最適化問題などと呼ばれ、最適解を得るのが非常に難しいことが知られている。
【０００５】
離散最適化問題を解くのが難しい最大の原因は、各変数が離散値しか取れないため、評価関数が改善される方向に変数を連続的に変化させることで最適解に到達させるという手法が使えないことである。そして本来の最適値を与える変数の値（最適解、大域解）以外に、局所的に評価関数の極値を与える値（極小（大）解、局所解）が非常に多数存在することである。このため最適解を確実に得るにはしらみつぶしのような方法を取らざるを得ず、計算時間が非常に長くなる。離散最適化問題には計算量理論でＮＰ（Non-deterministic Polynomial）困難問題と呼ばれる、最適解を求めるための計算時間が問題の大きさ（すなわち変数の数）に対して指数的に増加すると予想される問題が多い。上記巡回セールスマン問題やナップザック問題もＮＰ困難問題である。
【０００６】
以上述べたように、離散最適化問題の最適解を確実に求めることは非常に困難である。このため実用上重要な離散最適化問題にはその問題に固有な性質を利用した解法が考え出されている。上記のように多くの離散最適化問題では厳密解を得るには指数関数的に増大する計算時間がかかると予想されるため、実用的な解法の多くは近似解法であり、最適解ではないものの評価関数の値が最適値に近い値となる解を得ることができるものである。
【０００７】
これらの問題に特化した近似解法に対して、問題の性質を用いることなく解くため広範囲な問題を扱える近似解法も知られている。これらはメタヒューリスティックな解法と呼ばれ、疑似焼き鈍し法（シミュレーテッド・アニーリング法、ＳＡ法）、遺伝的アルゴリズム、ニューラルネットワークなどが挙げられる。これらの方法は、問題の性質をうまく利用した解法よりは効率が悪い可能性があるが、厳密解を得る解法よりは高速に解を得ることが期待できる。
【０００８】
以下、疑似焼き鈍し法について説明する。
疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【０００９】
各変数に離散値の１つを代入した初期状態からはじめ、現在の状態（変数の値の組み合わせ）から、それに近い状態（たとえば１つの変数だけ変化させた状態）を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。上記のように離散最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
【００１０】
疑似焼き鈍し法においては、状態遷移の採択（受入）確率を次のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
（１）状態遷移に伴うエネルギー変化値（ΔＥ）に対して、その状態遷移の受入確率ｐを次の何れかの関数ｆ（）により決める。
【００１１】
【数１】
2019125155.tif 000003
【００１２】
【数２】
2019125155.tif 000004
【００１３】
【数３】
2019125155.tif 000005
【００１４】
ここでＴは温度値と呼ばれるパラメータで次のように変化させる。
（２）温度値Ｔを次式で表されるように反復回数ｔに対数的に減少させる。
【００１５】
【数４】
2019125155.tif 000006
【００１６】
ここでＴ０は初期温度値であり問題に応じて十分大きくとることが望ましい。
（１）の式で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００１７】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では対数的な温度変化ではなくより早く温度を下げることが多い。
【００１８】
図１５に疑似焼き鈍し法による最適化装置の概念的構成を示す。ただし、下記説明では、状態遷移の候補を複数発生させる場合についても述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を１つずつ発生させるものである。
【００１９】
最適化装置１０には、まず現在の状態Ｓ（複数の状態変数の値）を保持する状態保持部１１がある。また、複数の状態変数の値の何れかが変化することによる現在の状態Ｓからの状態遷移が起こった場合の、各状態遷移のエネルギー変化値｛ΔＥｉ｝を計算するエネルギー計算部１２がある。そして、最適化装置１０には、温度値Ｔを制御する温度制御部１３、状態変化を制御するための遷移制御部１４がある。
【００２０】
遷移制御部１４は、温度値Ｔとエネルギー変化値｛ΔＥｉ｝と乱数値とに基づいて、エネルギー変化値｛ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定するものである。
【００２１】
遷移制御部１４をさらに細分化すると、遷移制御部１４は、状態遷移の候補を発生する候補発生部１４ａ、各候補に対して、そのエネルギー変化値｛ΔＥｉ｝と温度値Ｔから状態遷移を許可するかどうかを確率的に決定するための可否判定部１４ｂを有する。さらに、可となった候補から採用される候補を決定する遷移決定部１４ｃ、及び、確率変数を発生させるための乱数発生部１４ｄを有する。
【００２２】
一回の反復における動作は次のようなものである。まず、候補発生部１４ａは、状態保持部１１に保持された現在の状態Ｓから次の状態への状態遷移の候補（候補番号｛Ｎｉ｝）を１つまたは複数発生する。エネルギー計算部１２は、現在の状態Ｓと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化値｛ΔＥｉ｝を計算する。可否判定部１４ｂは、温度制御部１３で発生した温度値Ｔと乱数発生部１４ｄで生成した確率変数（乱数値）を用い、各状態遷移のエネルギー変化値｛ΔＥｉ｝に応じて、上記の式１−１〜１−３の受入確率でその状態遷移を許容する。そして、可否判定部１４ｂは、各状態遷移を受け入れるか否か（以下状態遷移の可否という場合もある）を示す遷移可否｛ｆｉ｝を出力する。許容された状態遷移が複数ある場合には、遷移決定部１４ｃは、乱数値を用いてランダムにそのうちの１つを選択する。そして、遷移決定部１４ｃは、選択した状態遷移の遷移番号Ｎと、遷移可否ｆを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部１１に記憶された状態変数の値が更新される。
【００２３】
初期状態から始めて、温度制御部１３で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。最適化装置１０が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度値が０にならないため、終了時においても状態の占有率はボルツマン分布などで表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００２４】
図１６は候補を１つずつ発生させる通常の疑似焼き鈍し法における遷移制御部、特に可否判定部のために必要な演算部分の構成例の回路レベルのブロック図である。
遷移制御部１４は、乱数発生回路１４ｂ１、セレクタ１４ｂ２、ノイズテーブル１４ｂ３、乗算器１４ｂ４、比較器１４ｂ５を有する。
【００２５】
セレクタ１４ｂ２は、各状態遷移の候補に対して計算されたエネルギー変化値｛ΔＥｉ｝のうち、乱数発生回路１４ｂ１が生成した乱数値である遷移番号Ｎに対応するものを選択して出力する。
【００２６】
ノイズテーブル１４ｂ３の機能については後述する。ノイズテーブル１４ｂ３として、たとえば、ＲＡＭ（Random Access Memory）、フラッシュメモリなどのメモリを用いることができる。
【００２７】
乗算器１４ｂ４は、ノイズテーブル１４ｂ３が出力する値と、温度値Ｔとを乗算した積（前述した熱励起エネルギーに相当する）を出力する。
比較器１４ｂ５は、乗算器１４ｂ４が出力した乗算結果と、セレクタ１４ｂ２が選択したエネルギー変化値とを比較した比較結果を遷移可否ｆとして出力する。
【００２８】
図１６に示されている遷移制御部１４は、基本的に前述した機能をそのまま実装するものであるが、（１）の式で表される受入確率で状態遷移を許容するメカニズムについてはこれまで説明していないのでこれを補足する。
【００２９】
受入確率ｐで１を、（１−ｐ）で０を出力する回路は、２つの入力ａ，ｂを持ち、ａ＞ｂのとき１を出力し、ａ＜ｂのとき０を出力する比較器の入力ａに受入確率ｐを、入力ｂに区間［０，１）の値をとる一様乱数を入力することで実現することができる。したがってこの比較器の入力ａに、エネルギー変化値と温度値Ｔにより（１）の式を用いて計算される受入確率ｐの値を入力すれば、上記の機能を実現することができる。
【００３０】
すなわちｆを（１）の式で用いる関数、ｕを区間［０，１）の値をとる一様乱数とするとき、ｆ（ΔＥ／Ｔ）がｕより大きいとき１を出力する回路で、上記の機能を実現できる。
【００３１】
このままでもよいのであるが、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてｆの逆関数ｆ−１を採用すると、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥ／Ｔがｆ−１（ｕ）以下のとき１を出力する回路でよいことがわかる。さらに温度値Ｔが正であることから−ΔＥがＴｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥがＴｆ−１（ｕ）以下のとき１を出力する回路でよい。図１６中のノイズテーブル１４ｂ３はこの逆関数ｆ−１（ｕ）を実現するための変換テーブルであり、区間［０，１）を離散化した入力に対して次の関数の値を出力するテーブルである。
【００３２】
【数５】
2019125155.tif 000007
【００３３】
【数６】
2019125155.tif 000008
【００３４】
−ΔＥがＴｆ−１（ｕ）より大きいとき１を出力する回路を実現するために、図１６のセレクタ１４ｂ２は、選択したエネルギー変化値ΔＥの符号を反転させて−ΔＥを出力するようにしてもよい。また、比較器１４ｂ５は、セレクタ１４ｂ２が選択したエネルギー変化値ΔＥが、Ｔｆ−１（ｕ）以下のとき１を出力するものであってもよい。
【００３５】
遷移制御部１４には、判定結果などを保持するラッチやそのタイミングを発生するステートマシンなども存在するが、図１６では図示を簡単にするため省略されている。
図１７は、従来例における遷移制御部の動作フローを示す図である。動作フローは、１つの状態遷移を候補として選ぶステップ（Ｓ１）、その状態遷移に対するエネルギー変化値と温度値と乱数値の積の比較で状態遷移の可否を決定するステップ（Ｓ２）、状態遷移が可ならばその状態遷移を採用し、否ならば不採用とするステップ（Ｓ３）を有する。
【００３６】
上記の説明からある程度想像できると思われるが、疑似焼き鈍し法は汎用的で非常に魅力的ではあるが、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。これは図１８を用いて次のように説明することができる。
【００３７】
初期値から最適解や近似解に至る状態遷移の経路には近似度のよくない局所解が多数存在する。これらの局所解から十分早く脱出するには、十分な熱励起が可能な高い温度が必要となる。しかし高い温度ではボルツマン分布におけるエネルギーの広がりが大きいため、最適解やエネルギーの低いよい近似解（以下ではよい解と呼ぶ）と、エネルギーの比較的高い近似度の悪い局所解（以下悪い解と呼ぶ）の占有確率の差が小さい。このため局所解を早く脱出できても行く先は多数ある悪い解に分散されてしまい、よい解にたどり着く確率は非常に小さい。よい解の占有確率を増やすには、悪い解とのエネルギー差に比べ、熱励起エネルギーが十分に小さくなるような低温が必要である。しかしこの場合熱励起エネルギーが小さいため、経路の途中のエネルギーの山を越えることができる確率が非常に低くなってしまい、状態変化がほとんど起こらない。したがって、ある程度山を越えることができ、占有確率に少し差のつけられる中間温度をゆっくりと経過させることで、徐々によい解の占有確率を増やしていく必要がある。もし温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的によい解の占有確率が上がらない。逆に速く下げすぎると、局所解を脱出する前に温度が下がってしまい、悪い解に捕まったままになってしまう。したがって温度が下がるほどその変化の割合を十分小さくし、その温度におけるボルツマン分布に近づくまで十分待たなければならない。
【００３８】
このように本来の疑似焼き鈍し法では、温度による熱励起だけで局所解からの脱出を図るため、温度をゆっくり下げるとともに、温度の下げ方を問題に応じて適切に調節することが望ましい。
【先行技術文献】
【特許文献】
【００３９】
【特許文献１】特開２０１７−１３８７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００４０】
上記のように疑似焼き鈍し法では、局所解からの脱出に長い時間がかかってしまい、最適化問題の計算時間が長くなってしまう問題がある。
１つの側面では、本発明は、最適化問題の計算時間を短縮する、最適化装置及び最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００４１】
１つの実施態様では、最適化装置は、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する計算部と、温度を示す温度値を制御する温度制御部と、前記温度値と前記変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、前記複数の状態遷移のそれぞれに対して前記計算部が計算した前記変化値の最小値を検出し、前記最小値が正の場合、前記最小値に対して０より大きく１以下の値を乗じたオフセットを、前記複数の状態遷移のそれぞれの前記変化値から差し引く遷移制御部と、を有する。
【００４２】
また、１つの実施態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００４３】
１つの側面では、本発明は、最適化問題の計算時間を短縮できる。
【図面の簡単な説明】
【００４４】
【図１】第１の実施の形態の最適化装置における遷移制御部の一例を示す図である。
【図２】最小値検出回路の一例を示す図である。
【図３】状態に応じたエネルギー分布の一例を示す図である。
【図４】局所解において１ハミング距離の状態遷移を受け入れる受入確率の例を示す図である。
【図５】第２の実施の形態の最適化装置の遷移制御部によるエネルギー変化値へのオフセットの適用例を示す図である。
【図６】第２の実施の形態の最適化装置における遷移制御部の一例を示す図である。
【図７】遷移番号決定回路の一例を示す図である。
【図８】選択回路部の一例を示す図である。
【図９】選択回路の一例を示す図である。
【図１０】生成されるｉｎｄｅｘの一例を示す図である。
【図１１】一定のオフセットの増分値を用いて遷移受入確率を上げる遷移制御部の例を示す図である。
【図１２】比較例の遷移制御部を用いた場合の状態遷移の受入確率の変化の第１の例を示す図である。
【図１３】比較例の遷移制御部を用いた場合の状態遷移の受入確率の変化の第２の例を示す図である。
【図１４】図６、図１１の遷移制御部を用いて実現される疑似焼き鈍し法のソフトウェアシミュレーション結果の一例を示す図である。
【図１５】疑似焼き鈍し法による最適化装置の概念的構成を示す図である。
【図１６】従来例における遷移制御部、特に可否判定部のために必要な演算部分の構成例の回路レベルのブロック図である。
【図１７】従来例における遷移制御部の動作フローを示す図である。
【図１８】疑似焼き鈍し法における状態の占有確率の概念を示す図である。
【発明を実施するための形態】
【００４５】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の最適化装置における遷移制御部の一例を示す図である。図１５、図１６に示した遷移制御部１４と同じ要素については同一符号が付されており、適宜説明を省略する。
【００４６】
図１に示されているように、遷移制御部２０は、図１５に示した可否判定部１４ｂの機能を実現する回路部分に追加された、最小値検出回路２１、乗算回路２２、加算回路２３、選択信号生成回路２４、セレクタ２５を有する。その他の部分は図１６に示した遷移制御部１４と同じである。
【００４７】
最小値検出回路２１は、複数の状態変数の値の何れかが変化することによる現在の状態からの状態遷移が起こった場合の、各状態遷移のエネルギー変化値｛ΔＥｉ｝を受け、各状態遷移のエネルギー変化値｛ΔＥｉ｝の最小値ΔＥｍｉｎを検出する。
【００４８】
乗算回路２２は、最小値ΔＥｍｉｎに０より大きく１以下の値（以下Ｍと表記する）を乗じた値（ＭΔＥｍｉｎ）を出力する演算回路である。
加算回路２３は、各状態遷移のエネルギー変化値｛ΔＥｉ｝から、ＭΔＥｍｉｎをオフセットとして差し引く（｛ΔＥｉ｝に−ＭΔＥｍｉｎを加算する）演算回路である。加算回路２３の代わりに減算回路を用いることもできる。
【００４９】
選択信号生成回路２４は、選択信号ｓｉｇｎを生成する。選択信号生成回路２４は、最小値ΔＥｍｉｎが０以下である場合、セレクタ２５に各状態遷移のエネルギー変化値｛ΔＥｉ｝を選択させる選択信号ｓｉｇｎ（たとえば、０）を生成する。選択信号生成回路２４は、最小値ΔＥｍｉｎが０より大きい場合、セレクタ２５に加算回路２３が算出した値を選択させる選択信号ｓｉｇｎ（たとえば、１）を生成する。
【００５０】
セレクタ２５は、選択信号ｓｉｇｎに応じて、各状態遷移のエネルギー変化値｛ΔＥｉ｝または、加算回路２３が算出した値、すなわち｛ΔＥｉ｝−ＭΔＥｍｉｎの何れか一方を選択して出力する。セレクタ２５の出力値は、セレクタ１４ｂ２に供給される。エネルギー変化値｛ΔＥｉ｝が選択されてセレクタ１４ｂ２に供給される場合、セレクタ１４ｂ２は、エネルギー変化値｛ΔＥｉ｝のうち、遷移番号Ｎに対応したエネルギー変化値ΔＥを選択し、そのエネルギー変化値ΔＥの符号を反転させた−ΔＥを出力する。オフセットが差し引かれたエネルギー変化値（｛ΔＥｉ｝−ＭΔＥｍｉｎ）が選択され、セレクタ１４ｂ２に供給される場合、セレクタ１４ｂ２は、遷移番号Ｎに対応したエネルギー変化値ΔＥ−ＭΔＥｍｉｎを選択する。そしてセレクタ１４ｂ２は、エネルギー変化値ΔＥ−ＭΔＥｍｉｎの符号を反転させた−ΔＥ＋ＭΔＥｍｉｎを出力する。
【００５１】
なお、比較器１４ｂ５が、エネルギー変化値が、Ｔｆ−１（ｕ）以下のとき１を出力するものである場合には、セレクタ１４ｂ２は、上記のような符号の反転を行わなくてよい。
【００５２】
図２は、最小値検出回路の一例を示す図である。
最小値検出回路２１は、たとえば、トーナメント状に複数段設けられた２入力最小値検出回路により実現できる。初段の２入力最小値検出回路２１ａ１，２１ａ２，…，２１ａｍのそれぞれには、各状態遷移のエネルギー変化値｛ΔＥｉ｝のうち、２つの状態変数の状態遷移に対応したエネルギー変化値が供給される。たとえば、２入力最小値検出回路２１ａ１にはｎ個の状態変数のうち、１番目と２番目の状態変数の状態遷移に対応したエネルギー変化値（ΔＥ１，ΔＥ２）が供給される。そして、２入力最小値検出回路２１ａ１は、２つのエネルギー変化値（ΔＥ１，ΔＥ２）のうち、小さいエネルギー変化値を出力する。
【００５３】
なお、各２入力最小値検出回路は、たとえば、比較回路とセレクタにより実現される。図２では、２入力最小値検出回路２１ａｍの回路例が示されている。２入力最小値検出回路２１ａｍは、比較回路２１ａｍ１とセレクタ２１ａｍ２を有する。比較回路２１ａｍ１は、供給される２つのエネルギー変化値（ΔＥｎ−１，ΔＥｎ）を比較し、ΔＥｎ−１がΔＥｎよりも小さいときに０を出力し、ΔＥｎがΔＥｎ−１よりも小さいときに１を出力する。セレクタ２１ａｍ２は、比較回路２１ａｍの出力が０のときに、ΔＥｎ−１を出力し、比較回路２１ａｍの出力が１のときに、ΔＥｎを出力する。
【００５４】
２段目以降の２入力最小値検出回路は、前段の２つの２入力最小値検出回路が出力するエネルギー変化値のうちの小さいエネルギー変化値を出力する。たとえば、２段目にある２入力最小値検出回路２１ｂは、前段の２入力最小値検出回路２１ａ１，２１ａ２が出力するエネルギー変化値のうち、小さいほうを選択して出力する。
【００５５】
このような最小値検出回路２１では、最後段の２入力最小値検出回路２１ｃが出力するエネルギー変化値が、最小値ΔＥｍｉｎとなる。
上記のような遷移制御部２０を用いることで、局所解における状態遷移の受入確率が上がり、局所解からの脱出が加速される。以下その理由を説明する。
【００５６】
図３は、状態に応じたエネルギー分布の一例を示す図である。図３において、横軸は状態（各状態変数の値の組み合わせ）を表し、縦軸はエネルギーを表す。
図３には、エネルギーが最小になる状態（最適解）の他に、エネルギーが最小ではない極小値になる状態（局所解）が示されている。
【００５７】
前述の式１−１〜１−３より、温度が低くなるほど、または、エネルギー変化値が（正に）大きくなるほど状態遷移の受入確率は低くなる。
図４は、局所解において１ハミング距離の状態遷移を受け入れる受入確率の例を示す図である。図４において、横軸は状態遷移の候補となる状態変数ｓｉを表し、縦軸は状態遷移の受入確率を表す。波形３０ａは、局所解において１ハミング距離の状態遷移（全状態変数ｓ１〜ｓｎの何れか１つの値が変化する状態遷移）を受け入れる受入確率を示している。波形３０ａにおいて、受入確率は１よりもはるかに小さい。このため、状態遷移が生じる可能性が低く、局所解からの脱出に時間がかかる。
【００５８】
図４に示すように、波形３０ａにおける受入確率の最大値と１との差分ΔＡのＭ（０＜Ｍ≦１）倍の値（ＭΔＡ）を、各状態遷移の受入確率に加えることで、各状態遷移の受入確率が上がりすぎることなく、適切に受入確率を上げることができる。波形３０ｂは、波形３０ａで示される受入確率にΔＡを加えた場合（つまりＭ＝１の場合）の受入確率を示し、波形３０ｃは、波形３０ａで示される受入確率に０．５ΔＡを加えた場合（つまりＭ＝０．５の場合）の受入確率を示す。
【００５９】
式１−１〜式１−３より、エネルギー変化値は小さくなるほど状態遷移の受入確率は大きくなり、０以下の場合に、最大値（＝１）となる。したがって、各状態遷移のエネルギー変化値｛ΔＥｉ｝のうちの最小値ΔＥｍｉｎが正の場合、最小値ΔＥｍｉｎのＭ倍の値（ＭΔＥｍｉｎ）を、各状態遷移のエネルギー変化値｛ΔＥｉ｝から差し引くことによって、図４に示したような受入確率の上昇を実現できる。
【００６０】
図５は、第２の実施の形態の最適化装置の遷移制御部によるエネルギー変化値へのオフセットの適用例を示す図である。図５において、横軸は状態遷移の候補となる状態変数ｓｉを表し、縦軸はΔＥを表す。
【００６１】
波形３１ａは、局所解における各状態遷移のエネルギー変化値｛ΔＥｉ｝の例を示している。波形３１ａにおいて、最小値ΔＥｍｉｎのＭ倍の値（ＭΔＥｍｉｎ）をオフセットとして、各状態遷移のエネルギー変化値｛ΔＥｉ｝から差し引くことによって、上記のように受入確率の上昇を実現できる。波形３１ｂは、波形３１ａで示されるエネルギー変化値｛ΔＥｉ｝から最小値ΔＥｍｉｎを引いた場合（つまりＭ＝１の場合）のエネルギー変化値を示す。Ｍ＝１の場合には、波形３１ｂにおけるΔＥの最小値が０となり、その最小値における状態遷移の受入確率が１となる。また、波形３１ｃは、波形３１ａで示されるエネルギー変化値｛ΔＥｉ｝から０．５ΔＥｍｉｎを引いた場合（つまりＭ＝０．５の場合）のエネルギー変化値を示す。
【００６２】
疑似焼き鈍し法の収束定理はメトロポリス法またはギブス法の状態遷移確率にしたがって状態遷移の可否を決定していけばよい方向へ進むことを示している。局所解では状態遷移の確率は非常に小さいため遷移候補の選択は何度も行われ、その後の状態遷移の分岐比はメトロポリス法またはギブス法の遷移確率に比例する。したがって、各状態遷移の受入確率の相対比を保ったままその絶対値を増大することができれば、各状態遷移の分岐比が保たれるため、収束性に悪影響を及ぼすことなく局所解での滞在時間を短縮することが可能となり、計算時間の短縮が可能となる。
【００６３】
上記のように、ＭΔＥｍｉｎをオフセットとして、各状態遷移のエネルギー変化値｛ΔＥｉ｝から差し引くことによって、図４に示すように各状態遷移の受入確率の相対比を保ったままその絶対値を増大することができる。このため、収束性に悪影響を及ぼすことなく局所解での滞在時間を短縮することが可能となり、計算時間の短縮が可能となる。
【００６４】
なお、最適化するエネルギーがイジングモデルで表される場合の疑似焼き鈍し法について、また、それとほとんど等価であるボルツマンマシンにおける最適化において、遷移候補の発生及び状態遷移に伴うエネルギーの変化の計算法について以下に簡単に説明する。
【００６５】
イジングモデルは、互いに相互作用を行うＮ個のスピンからなる系を表すモデルであり、各スピン（前述の状態変数に対応する）ｓｉは±１の２値をとる。系のエネルギーは、以下の式４で表される。
【００６６】
【数７】
2019125155.tif 000009
【００６７】
式４において、Ｊｉ，ｊは、スピンｓｉとスピンｓｊ間の相互作用係数を示し、ｈｉは、系のバイアス値である外部磁場係数を示す。
現在の状態から次の状態への状態遷移の候補は、１つのスピンの反転であり、Ｎ通り存在する。したがって遷移候補としては反転する１つのスピン番号または複数のスピンの番号の集合を発生させればよい。
【００６８】
そしてｉ番目のスピン反転に伴うエネルギーの変化は、以下の式５で表される。
【００６９】
【数８】
2019125155.tif 000010
【００７０】
ここで、以下の式６のＦｉは、ローカルフィールド（局所場）値と呼ばれ、各スピンの反転によるエネルギー変化の割合を表している。
【００７１】
【数９】
2019125155.tif 000011
【００７２】
状態遷移を許容するかどうかはエネルギーの変化で決まるため、基本的にはエネルギーそのものを計算せずにローカルフィールド値からエネルギーの変化を計算すればよい。出力として得られた最低エネルギーに対する状態を用いる場合には、ローカルフィールド値からエネルギーの変化を計算しそれを累算していくことでエネルギーを求めることができる。
【００７３】
さらに、
【００７４】
【数１０】
2019125155.tif 000012
【００７５】
であるから、ローカルフィールド値を行列演算により毎回計算し直す必要はなく、状態遷移に伴って反転のあったスピンによる変化分だけ加算すればよい。このため、図１５に示した状態保持部１１やエネルギー計算部１２は、Ｎ個のスピンの値を保持するＮビットレジスタと加算器、排他的論理和などの比較的簡単な演算回路を用いて実現できる。
【００７６】
また、ニューラルネットワークに用いられるボルツマンマシンにおける最適化手法は、スピンに対応する状態変数が（０，１）の２値をとることを除いてイジングモデルの疑似焼き鈍し法と同じである。ボルツマンマシンにおいて、エネルギー、エネルギーの変化値、ローカルフィールド値は、以下の式８、式９、式１０のように表せる。
【００７７】
【数１１】
2019125155.tif 000013
【００７８】
【数１２】
2019125155.tif 000014
【００７９】
【数１３】
2019125155.tif 000015
【００８０】
なお、ボルツマンマシンではイジングモデルのスピンに相当するものをニューロンと呼ぶことが多い。
上記のようにイジングモデルを用いた疑似焼き鈍し法とボルツマンマシンを用いた疑似焼き鈍し法は同等であり、お互いに相互変換できる。
【００８１】
なお、ボルツマンマシン（及びイジングモデルの疑似焼き鈍し）においては、状態遷移に伴い変化する状態変数は１つだけであり、それに対するエネルギー変化値はローカルフィールド値を用いて予め計算しておくことができる。したがって図１では予め計算しておいたエネルギー変化値を遷移候補の発生に応じて選択する形式の実装例が示されている。しかしながら、ボルツマンマシンでないときは、複数の状態変数が変化する遷移を考える場合もあるため、遷移候補の発生後に必要なエネルギー変化値を計算するような実装が有利になる場合もある。
【００８２】
（第２の実施の形態）
図６は、第２の実施の形態の最適化装置における遷移制御部の一例を示す図である。図１に示した遷移制御部２０と同じ要素については同一符号が付されており、説明を省略する。
【００８３】
図６に示されている遷移制御部４０は、セレクタ１４ｂ２が設けられておらず、セレクタ２５ａの出力が、比較器１４ｂ５の非反転入力端子に供給されている。また、比較器１４ｂ５の出力端子には、遷移番号決定回路４１が接続されている。
【００８４】
セレクタ２５ａは、セレクタ２５と同様に、選択信号ｓｉｇｎに応じて、各状態遷移のエネルギー変化値｛ΔＥｉ｝または、加算回路２３が算出した値、すなわちオフセットが差し引かれたエネルギー変化値｛ΔＥｉ｝−ＭΔＥｍｉｎの何れか一方を選択する。そして、セレクタ２５ａは、選択したエネルギー変化値の符号を反転させて出力する。
【００８５】
比較器１４ｂ５は、−｛ΔＥｉ｝または−｛ΔＥｉ｝＋ＭΔＥｍｉｎと、乗算器１４ｂ４が出力する乗算結果（熱励起エネルギーに相当する）との比較結果を遷移可否｛ｆｉ｝として出力する。たとえば、ｋ番目の状態変数ｓｋの状態遷移によるエネルギー変化値をΔＥｋとすると、−ΔＥｋまたは−ΔＥｋ＋ＭΔＥｍｉｎが、乗算器１４ｂ４が出力する乗算結果よりも大きい場合、状態変数ｓｋの遷移可否ｆは１となる。−ΔＥｋまたは−ΔＥｋ＋ＭΔＥｍｉｎが、乗算器１４ｂ４が出力する乗算結果よりも小さい場合、状態変数ｓｋの遷移可否ｆは０となる。
【００８６】
なお、比較器１４ｂ５が、エネルギー変化値が、Ｔｆ−１（ｕ）以下のとき１を出力するものである場合には、セレクタ２５ａは、上記のような符号の反転を行わなくてよい。
遷移番号決定回路４１は、比較器１４ｂ５が出力する各状態遷移の遷移可否｛ｆｉ｝に基づいて、比較器１４ｂ５によって遷移を受け入れると判定された状態遷移を優先的に選択し、その状態遷移の遷移番号Ｎと、その状態遷移の遷移可否ｆを出力する。
【００８７】
以下、状態変数の数が１０２４である場合の、遷移番号決定回路４１の回路例を説明する。なお、比較器１４ｂ５が出力する各状態遷移の遷移可否｛ｆｉ｝は、遷移を受け入れる状態遷移については１、遷移を受け入れない状態遷移については０となっているものとする。
【００８８】
図７は、遷移番号決定回路の一例を示す図である。
遷移番号決定回路４１は、ノイズ発生回路５０、選択回路部５１ａ１，５１ａ２，…，５１ａ３２，５２を有する。
【００８９】
ノイズ発生回路５０は、ノイズ値として、５ビットの乱数値ｒｄ１，ｒｄ２を生成し出力する。なお、乱数値ｒｄ１，ｒｄ２のシード（初期値）は異なる。ノイズ発生回路５０として、たとえば、ＬＦＳＲ（Linear Feedback Shift Register）などを用いることができる。
【００９０】
選択回路部５１ａ１〜５１ａ３２のそれぞれには、１０２４の状態遷移のそれぞれの遷移可否｛ｆｉ｝が、３２ずつ入力される。そして、選択回路部５１ａ１〜５１ａ３２は、５ビットの乱数値ｒｄ１に基づき、３２の遷移可否のうち１つを選択して出力する。さらに、選択回路部５１ａ１〜５１ａ３２は、選択した遷移可否が３２の状態遷移のうち、何れに対応するものであるかを示す５ビットのｉｎｄｅｘを生成して出力する。
【００９１】
選択回路部５２には、選択回路部５１ａ１〜５１ａ３２のそれぞれが出力する遷移可否と５ビットのｉｎｄｅｘとが入力される。そして、選択回路部５２は、遷移可否とｉｎｄｅｘと５ビットの乱数値ｒｄ２に基づき、３２の遷移可否のうちの１つの遷移可否ｆを選択して出力するとともに、１０ビットの遷移番号Ｎを生成して出力する。
【００９２】
図８は、選択回路部の一例を示す図である。
図８では、選択回路部５１ａ１の例が示されている。選択回路部５１ａ２〜５１ａ３２も選択回路部５１ａ１と同様の回路で実現できる。
【００９３】
選択回路部５１ａ１は、選択回路６０ａ，６０ｂ，６０ｃ，６０ｄ，６０ｅを有する。さらに、選択回路部５１ａ１は、選択回路６１ａ１，６１ａ２，６１ａ３，６１ａ４，６１ａ５，６１ａ６，…，６１ａ１６，６１ｂ１，６１ｂ２，６１ｂ３，…，６１ｂ８，６１ｃ１，６１ｃ２，…，６１ｃ４，６１ｄ１，６１ｄ２，６１ｅを有する。選択回路６１ａ１〜６１ａ１６，６１ｂ１〜６１ｂ８，６１ｃ１〜６１ｃ４，６１ｄ１，６１ｄ２，６１ｅは、５段にわたってツリー状に接続されている。
【００９４】
選択回路６０ａは、５ビットの乱数値ｒｄ１の１ビット目の値に基づいて、０または１を１段目の選択回路６１ａ１〜６１ａ１６に供給する。選択回路６０ｂは、５ビットの乱数値ｒｄ１の２ビット目の値に基づいて、０または１を２段目の選択回路６１ｂ１〜６１ｂ８に供給する。選択回路６０ｃは、５ビットの乱数値ｒｄ１の３ビット目の値に基づいて、０または１を３段目の選択回路６１ｃ１〜６１ｃ４に供給する。選択回路６０ｄは、５ビットの乱数値ｒｄ１の４ビット目の値に基づいて、０または１を４段目の選択回路６１ｄ１，６１ｄ２に供給する。選択回路６０ｅは、５ビットの乱数値ｒｄ１の５ビット目の値に基づいて、０または１を５段目の選択回路６１ｅに供給する。
【００９５】
１段目の選択回路６１ａ１〜６１ａ１６のそれぞれは、１０２４の状態遷移のそれぞれの遷移可否｛ｆｉ｝を２つずつ入力する。そして、選択回路６１ａ１〜６１ａ１６のそれぞれは、その遷移可否の値と、選択回路６０ａが出力する０または１の値に基づいて、２つの遷移可否の何れかを選択して出力するとともに、何れの選択可否を選択したかを示す１ビットのｉｎｄｅｘを生成して出力する。
【００９６】
２段目の選択回路６１ｂ１〜６１ｂ８のそれぞれは、選択回路６１ａ１〜６１ａ１６が出力する１６の遷移可否とｉｎｄｅｘを２つずつ入力する。そして、選択回路６１ｂ１〜６１ｂ８のそれぞれは、その遷移可否の値と、選択回路６０ｂが出力する０または１の値に基づいて、２つの遷移可否の何れかを選択して出力するとともに、何れの遷移可否を選択したかを示す２ビットのｉｎｄｅｘを生成して出力する。
【００９７】
３段目の選択回路６１ｃ１〜６１ｃ４のそれぞれは、選択回路６１ｂ１〜６１ｂ８が出力する８つの遷移可否とｉｎｄｅｘを２つずつ入力する。そして、選択回路６１ｃ１〜６１ｃ４のそれぞれは、その遷移可否の値と、選択回路６０ｃが出力する０または１の値に基づいて、２つの遷移可否の何れかを選択して出力するとともに、何れの遷移可否を選択したかを示す３ビットのｉｎｄｅｘを生成して出力する。
【００９８】
４段目の選択回路６１ｄ１，６１ｄ２のそれぞれは、選択回路６１ｃ１〜６１ｃ４が出力する４つの遷移可否とｉｎｄｅｘを２つずつ入力する。そして、選択回路６１ｄ１，６１ｄ２のそれぞれは、その遷移可否の値と、選択回路６０ｄが出力する０または１の値に基づいて、２つの遷移可否の何れかを選択して出力するとともに、何れの遷移可否を選択したかを示す４ビットのｉｎｄｅｘを生成して出力する。
【００９９】
５段目の選択回路６１ｅは、選択回路６１ｄ１，６１ｄ２が出力する２つの遷移可否とｉｎｄｅｘを入力する。そして、選択回路６１ｅは、その遷移可否の値と、選択回路６０ｅが出力する０または１の値に基づいて、２つの遷移可否の何れかを選択して出力するとともに、何れの判定信号を選択したかを示す５ビットのｉｎｄｅｘを生成して出力する。
【０１００】
図７に示した選択回路部５２も、選択回路部５１ａ１とほぼ同様の回路構成で実現できる。ただ、１段目の選択回路６１ａ１〜６１ａ１６のそれぞれに、選択回路部５１ａ１〜５１ａ３２が出力する３２の遷移可否が２つずつ入力されるとともに、選択回路部５１ａ１〜５１ａ３２が出力する３２のｉｎｄｅｘ（５ビット）が２つずつ入力される。そして、各段で遷移可否が選択されるとともに、ｉｎｄｅｘのビットが追加され、１０ビットの遷移番号Ｎと最終的に選択された遷移可否ｆが出力される。
【０１０１】
図９は、選択回路の一例を示す図である。
図９では、図８の選択回路６１ｂ１の例が示されている。選択回路６１ｂ２〜６１ｂ８，６１ｃ１〜６１ｃ４，６１ｄ１，６１ｄ２，６１ｅも同様の回路構成で実現できる。
【０１０２】
選択回路６１ｂ１は、排他的論理和回路であるＸＯＲ回路７０、論理和回路であるＯＲ回路７１、選択回路７２，７３を有する。
ＸＯＲ回路７０は、前段の選択回路６１ａ１，６１ａ２が出力する遷移可否を入力する。図９では、選択回路６１ａ１が出力する遷移可否をｆｇ１、選択回路６１ａ２が出力する遷移可否をｆｇ２と表記している。ＸＯＲ回路７０は、ｆｇ１，ｆｇ２の値が一致していれば０、異なっていれば１を出力する。
【０１０３】
ＯＲ回路７１は、ｆｇ１，ｆｇ２を入力し、ｆｇ１，ｆｇ２の何れか一方または両方が１ならば、遷移可否（ｆｇ３と表記している）として１を出力し、ｆｇ１，ｆｇ２の両方が０ならば、ｆｇ３として０を出力する。
【０１０４】
選択回路７２は、ｆｇ１と、選択回路６０ｂが出力する０または１の値を入力する。そして、選択回路７２は、ＸＯＲ回路７０の出力が１のときは、ｆｇ１の値を選択して出力し、ＸＯＲ回路７０の出力が０のときは、選択回路６０ｂが出力する値を選択して出力する。
【０１０５】
選択回路７３は、前段の選択回路６１ａ１，６１ａ２が出力するｉｎｄｅｘを入力する。図９では、選択回路６１ａ１が出力するｉｎｄｅｘをｉｄ１、選択回路６１ａ２が出力するｉｎｄｅｘをｉｄ２と表記している。選択回路７３は、選択回路７２の出力が１のときは、ｉｄ１の値を選択して出力し、選択回路７２の出力が０のときは、ｉｄ２の値を選択して出力する。
【０１０６】
選択回路７３が出力するｉｄ１またはｉｄ２の値に、選択回路７２の１ビットの出力を追加したもの（上位ビットに追加したもの）が、選択回路６１ｂ１が出力するｉｎｄｅｘ（図９ではｉｄ３と表記している）である。
【０１０７】
図８に示した１段目の選択回路６１ａ１〜６１ａ１６も、図９に示した回路構成とほぼ同様の回路構成で実現できるが、選択回路７３はない。
図１０は、生成されるｉｎｄｅｘの一例を示す図である。
【０１０８】
選択回路６０ｂの出力が１のとき、図９に示した選択回路６１ｂ１において、入力される２つの遷移可否（ｆｇ１，ｆｇ２）の値が同じ場合には、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路６０ｂの出力が１で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が１であるときも、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路６０ｂの出力が１で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が０であるとき、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０１１が追加された値となる。
【０１０９】
選択回路６０ｂの出力が０のとき、ｆｇ１，ｆｇ２の値が同じ場合には、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０が追加された値となる。また、選択回路６０ｂの出力が０で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が１であるとき、ｉｄ３は、ｉｄ１の上位ビットに新たなビット＝１が追加された値となる。また、選択回路６０ｂの出力が０で、ｆｇ１，ｆｇ２の値が異なり、ｆｇ１の値が０であるとき、ｉｄ３は、ｉｄ２の上位ビットに新たなビット＝０が追加された値となる。
【０１１０】
また、ｆｇ１，ｆｇ２の一方もしくは両方が１のとき、ｆｇ３は１となり、ｆｇ１，ｆｇ２の両方が０のとき、ｆｇ３は０となる。
上記のような遷移番号決定回路４１によれば、遷移を受け入れる状態遷移が優先的に選択される。このため、状態遷移の頻度が上がり、計算時間のさらなる短縮が期待できる。
【０１１１】
（比較例）
図１１は、一定のオフセットの増分値を用いて遷移受入確率を上げる遷移制御部の例を示す図である。
【０１１２】
遷移制御部８０は、図１５に示した可否判定部１４ｂの機能を実現する回路部分に追加された、オフセット加算回路８１とオフセット制御回路８２とを有する。その他の部分は図１５や図１６に示した遷移制御部１４と同じである。
【０１１３】
オフセット加算回路８１は、−ΔＥにオフセット値ｙを加えるオフセット加算回路として機能する。図１１の回路の例では、オフセット加算回路８１は、減算器８１ａである。このため、図１１の例では、−ΔＥにオフセット値ｙを加える代わりに、比較対象である温度値Ｔと乱数値の積Ｔｆ−１（ｕ）（熱励起エネルギーに相当する）からオフセット値ｙを減ずる構成となっているがどちらでも同じである。
【０１１４】
オフセット制御回路８２は、局所解（エネルギーが極小となる解）におけるオフセット値ｙを、局所解ではないときに比べて大きくなるように制御する。図１１の例では、オフセット制御回路８２は、リセット端子Ｒを有する累算器８２ａである。累算器８２ａは、リセット端子Ｒに入力される遷移可否ｆが、状態遷移を許容することを示すとき（つまり状態遷移が生じるとき）には、オフセット値ｙを０にする。また、累算器８２ａは、入力端子と、クロック端子を有する。累算器８２ａは、遷移可否ｆが、状態遷移を許容しないことを示すとき（つまり状態遷移が生じないとき）には、クロック端子に図示しないパルス信号が入力されるたびに、オフセット値ｙに入力端子に入力されるオフセット増分値Δｙを加えていく。なお、図示しないパルス信号は、たとえば、ステートマシンによって供給される。オフセット増分値Δｙは、たとえば、図示しないレジスタに記憶されている。
【０１１５】
このような遷移制御部８０は、セレクタ１４ｂ２が出力する−ΔＥに累算器８２ａに保持されているオフセット値ｙを加えた和である−ΔＥ＋ｙが温度値Ｔと乱数値の積Ｔｆ−１（ｕ）よりも大きいときその状態遷移を受け入れる。
【０１１６】
そして累算器８２ａは、オフセット値ｙを次のように変化する。もし受け入れられた状態遷移が存在し状態遷移が生じたときは、累算器８２ａは、オフセット値ｙを、０にリセットする。もし受け入れられた状態遷移が存在せず状態遷移が起こらなかったときは、累算器８２ａは、オフセット増分値Δｙだけオフセット値ｙを増加する。
【０１１７】
図１２は、比較例の遷移制御部を用いた場合の状態遷移の受入確率の変化の第１の例を示す図である。図１２において、横軸は状態遷移の候補となる状態変数ｓｉを表し、縦軸は状態遷移の受入確率を表す。
【０１１８】
図１２に示すように、オフセット増分値Δｙが小さい場合、受入確率の上昇はわずかであり、局所解からの脱出に時間がかかる可能性がある。
図１３は、比較例の遷移制御部を用いた場合の状態遷移の受入確率の変化の第２の例を示す図である。図１３において、横軸は状態遷移の候補となる状態変数ｓｉを表し、縦軸は状態遷移の受入確率を表す。
【０１１９】
図１３に示すように、オフセット増分値Δｙが大きい場合、受入確率が大幅に上昇し、状態遷移の頻度が多くなりすぎ、解が最適解に収束しなくなる可能性がある。
これに対して、図１に示した遷移制御部２０や、図６に示した遷移制御部４０によれば、Ｍを１に近づけるほど、受入確率が上がり局所解からの脱出が促進される。また、０＜Ｍ≦１であり、Ｍ＝１の場合でも受入確率が１となる状態遷移の数は少ないため（図４の例では１つ）、状態遷移の頻度が多くなりすぎることがない。
【０１２０】
図１４は、図６、図１１の遷移制御部を用いて実現される疑似焼き鈍し法のソフトウェアシミュレーション結果の一例を示す図である。最適化する問題は、巡回セールスマン問題をイジングモデル（ボルツマンマシン）により定式化したものである。図１４において、横軸は反復回数（疑似焼き鈍し法による状態やエネルギーの更新処理の繰り返し回数）を表し、縦軸はエネルギーを表す。
【０１２１】
結果９０ａ，９０ｂ，９０ｃ，９０ｄ，９０ｅは、図１１の遷移制御部８０において、オフセット増分値Δｙを変えたときの、反復回数に対するエネルギーの変化のシミュレーション結果を示している。結果９０ａは、オフセット増分値Δｙが０の場合（つまりオフセットを行わない場合）のシミュレーション結果である。結果９０ｂはオフセット増分値Δｙが０．０５、結果９０ｃはオフセット増分値Δｙが０．１、結果９０ｄはオフセット増分値が０．１５、結果９０ｅはオフセット増分値が０．２である場合のシミュレーション結果である。
【０１２２】
一方、結果９１ａ，９１ｂ，９１ｃ，９１ｄは、図６の遷移制御部４０において、Ｍを変えたときの、反復回数に対するエネルギーの変化のシミュレーション結果を示している。結果９１ａはＭ＝０．２５、結果９１ｂはＭ＝０．５、結果９１ｃはＭ＝０．７５、結果９１ｄはＭ＝１の場合のシミュレーション結果である。
【０１２３】
エネルギーの最小値（最適解におけるエネルギー）が６０００程度であるとした場合、遷移制御部８０において、その最小値よりも１割程度大きいエネルギーＥｘに達する最少の反復回数ｉｔ２は、遷移制御部４０における最少の反復回数ｉｔ１の３倍以上である。
【０１２４】
つまり、図１４の例では、遷移制御部４０を用いた場合、遷移制御部８０を用いた場合よりも３倍以上高速に、最適解に近い値を計算可能であることを示している。
なお、遷移制御部４０を用いた場合、図１４の例では、Ｍ＝０．２５とした場合に、最も低いエネルギー（６３００程度）が得られる。これに対して、遷移制御部８０を用いた場合には、最低でも６８００程度にしかならない。したがって、遷移制御部４０を用いることで遷移制御部８０を用いる場合よりも、より最適解に近い解を得ることができる。
【０１２５】
なお、上記の効果の度合いは、計算対象の最適化問題によって異なる。たとえば、Ｍの値は、各最適化問題に応じて、上記のようなソフトウェアシミュレーションの結果に基づいて、より計算時間が短縮するように選択される。
【０１２６】
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１２７】
１４ｂ１  乱数発生回路
１４ｂ２  セレクタ
１４ｂ３  ノイズテーブル
１４ｂ４  乗算器
１４ｂ５  比較器
２０  遷移制御部
２１  最小値検出回路
２２  乗算回路
２３  加算回路
２４  選択信号生成回路
２５  セレクタ
【図１】
2019125155.tif 000016
【図２】
2019125155.tif 000017
【図３】
2019125155.tif 000018
【図４】
2019125155.tif 000019
【図５】
2019125155.tif 000020
【図６】
2019125155.tif 000021
【図７】
2019125155.tif 000022
【図８】
2019125155.tif 000023
【図９】
2019125155.tif 000024
【図１０】
2019125155.tif 000025
【図１１】
2019125155.tif 000026
【図１２】
2019125155.tif 000027
【図１３】
2019125155.tif 000028
【図１４】
2019125155.tif 000029
【図１５】
2019125155.tif 000030
【図１６】
2019125155.tif 000031
【図１７】
2019125155.tif 000032
【図１８】
2019125155.tif 000033