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