(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-20
(45)【発行日】2022-12-28
(54)【発明の名称】最適化装置及び最適化装置の制御方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20221221BHJP
G06Q 10/04 20120101ALI20221221BHJP
【FI】
G06N99/00 180
G06Q10/04
(21)【出願番号】P 2019037634
(22)【出願日】2019-03-01
【審査請求日】2021-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】松原 聡
(72)【発明者】
【氏名】▲高▼津 求
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2018-063626(JP,A)
【文献】米国特許出願公開第2003/0144748(US,A1)
【文献】米国特許出願公開第2013/0262032(US,A1)
【文献】特開2010ー250599(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06Q 10/04
(57)【特許請求の範囲】
【請求項1】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択する遷移制御部と、
選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力するエネルギー比較部と、
を有する最適化装置。
【請求項2】
前記識別情報は、各状態遷移をそれぞれ識別する複数の番号であり、
前記遷移制御部は、前記優先度情報に基づいて、番号の小さい方、または番号の大きい方から優先的に状態遷移を選択する、
請求項1に記載の最適化装置。
【請求項3】
前記遷移制御部は、番号の小さい方から優先的に状態遷移を選択する場合、前記複数の番号のうち、前回更新された状態遷移を識別する更新番号よりも1つ大きい番号に対して、前記優先度情報として第1の値を設定し、それ以外の番号に対して、前記優先度情報として前記第1の値とは異なる第2の値を設定し、番号の大きい方から優先的に状態遷移を選択する場合、前記更新番号よりも1つ小さい番号に対して、前記優先度情報として前記第1の値を設定し、それ以外の番号に対して、前記優先度情報として前記第2の値を設定する、
請求項2に記載の最適化装置。
【請求項4】
前記遷移制御部は、番号の小さい方から優先的に状態遷移を選択する場合、前記複数の番号のうち、前回更新された状態遷移を識別する更新番号よりも大きい番号に対して、前記優先度情報として第1の値を設定し、前記更新番号以下の番号に対して、前記優先度情報として前記第1の値とは異なる第2の値を設定し、番号の大きい方から優先的に状態遷移を選択する場合、前記更新番号よりも小さい番号に対して、前記優先度情報として前記第1の値を設定し、前記更新番号以上の番号に対して、前記優先度情報として前記第2の値を設定する、
請求項2に記載の最適化装置。
【請求項5】
前記遷移制御部は、入力されるモード信号に応じて、前記優先度情報に基づいて状態遷移を選択するか、乱数値に基づいてランダムに状態遷移を選択するか切り替える、
請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択し、
前記最適化装置が有するエネルギー比較部が、選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置及び最適化装置の制御方法に関する。
【背景技術】
【0002】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置を用いて行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の1つの分野として最適化問題があり重要な分野となっている。例えば、ある処理を行う場合に必要な資源やコストを最小化する問題、またはその処理による効果を最大化する解を求める問題などである。これらの問題が非常に重要であるのは明らかであろう。
【0003】
最適化問題の代表的なものとして線形計画問題がある。これは複数の連続変数の線形和で表される評価関数を、線形和で表される制約条件の下で最大化または最小化する変数の値を求めるものであり、製品の生産計画など様々な分野で利用されている。この線形計画問題には単体法や内点法といった優れた解法が知られており、何十万以上の変数を持つ問題でも効率的に解くことができる。
【0004】
一方最適化問題には、変数が連続値ではなく離散的な値を取るものも多く知られている。例えば、複数の都市を順番に回り元に戻るときの最短経路を求める巡回セールスマン問題や、ナップザックに異なる品物を詰めるときその価値の和が最大となるような組み合わせを求めるナップザック問題などが挙げられる。このような問題は、離散最適化問題、組合せ最適化問題などと呼ばれ、最適解を得るのが非常に難しいことが知られている。
【0005】
組合せ最適化問題を解くのが難しい最大の原因は、各変数が離散値しか取れないため、評価関数が改善される方向に変数を連続的に変化させることで最適解に到達させるという手法が使えないことである。そして本来の最適値を与える変数の値(最適解、大域解)以外に、局所的に評価関数の極値を与える値(極小(大)解、局所解)が非常に多数存在することである。このため最適解を確実に得るにはしらみつぶしのような方法を取らざるを得ず、計算時間が非常に長くなる。組合せ最適化問題には計算量理論でNP(Non-deterministic Polynomial)困難問題と呼ばれる、最適解を求めるための計算時間が問題の大きさ(すなわち変数の数)に対して指数的に増加すると予想される問題が多い。上記巡回セールスマン問題やナップザック問題もNP困難問題である。
【0006】
以上述べたように、組合せ最適化問題の最適解を確実に求めることは非常に困難である。このため実用上重要な組合せ最適化問題にはその問題に固有な性質を利用した解法が考え出されている。上記のように多くの組合せ最適化問題では厳密解を得るには指数関数的に増大する計算時間がかかると予想されるため、実用的な解法の多くは近似解法であり、最適解ではないものの評価関数の値が最適値に近い値となる解を得ることができるものである。
【0007】
これらの問題に特化した近似解法に対して、問題の性質を用いることなく解くため広範囲な問題を扱える近似解法も知られている。これらはメタヒューリスティックな解法と呼ばれ、疑似焼き鈍し法(シミュレーテッド・アニーリング法、SA法)、遺伝的アルゴリズム、ニューラルネットワークなどが挙げられる。これらの方法は、問題の性質をうまく利用した解法よりは効率が悪い可能性があるが、厳密解を得る解法よりは高速に解を得ることが期待できる。
【0008】
以下、疑似焼き鈍し法について説明する。
疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【0009】
各変数(以下状態変数という)に離散値の1つを代入した初期状態からはじめ、現在の状態(状態変数の値の組み合わせ)から、それに近い状態(例えば1つの状態変数だけ変化させた状態)を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。上記のように組合せ最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
【0010】
疑似焼き鈍し法においては、状態遷移の採択(受入)確率を次のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
状態遷移に伴うエネルギー変化(ΔE)に対して、その状態遷移の受入確率pは式(1)で表される次の関数f(x)により決める。式(2)はメトロポリス法である。式(3)はギブス法である。
【0011】
【0012】
【0013】
【0014】
ここでTは温度を示す値であり、次のように変化させる。
すなわち、温度Tを次式で表されるように反復回数tに対数的に減少させる。
【0015】
【0016】
ここでT0は初期温度であり問題に応じて十分大きくとる必要がある。
式(1)~(3)で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【0017】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では対数的な温度変化ではなくより速く温度を下げることが多い。
【0018】
図17に疑似焼き鈍し法による最適化装置の概念的構成を示す。ただし、下記説明では、状態遷移の候補を複数発生させる場合についても述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を1つずつ発生させるものである。
【0019】
最適化装置10には、まず現在の状態s(複数の状態変数の値)を保持する状態保持部11がある。また、複数の状態変数の値の何れかが変化することによる現在の状態sからの状態遷移が起こった場合の、各状態遷移のエネルギーの変化値(以下エネルギー変化{-ΔEi}と表記する)を計算する評価関数計算部12がある。そして、最適化装置10には、温度Tを制御する温度制御部13、状態変化を制御するための遷移制御部14がある。遷移制御部14は、温度Tとエネルギー変化{-ΔEi}と乱数値とに基づいて、エネルギー変化{-ΔEi}と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定するものである。さらに、最適化装置10には、状態遷移により生じた各状態のうち、最低エネルギー状態Sを特定するエネルギー比較部15がある。
【0020】
一回の反復における動作は次のようなものである。まず、遷移制御部14は、状態保持部11に保持された現在の状態sから次の状態への状態遷移の候補(候補番号{Ni})を1つまたは複数発生する。評価関数計算部12は、現在の状態sと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化{-ΔEi}を計算する。遷移制御部14は、温度制御部13で発生した温度Tと遷移制御部14内の乱数生成部で生成した確率変数(乱数値)を用い、各状態遷移のエネルギー変化{-ΔEi}に応じて、上記の式(1)~(3)の受入確率でその状態遷移を許容する。そして、遷移制御部14は、各状態遷移を受け入れるか否か(状態遷移の可否)を示す遷移可否{fi}を計算する。許容された状態遷移が複数ある場合には、遷移制御部14は、乱数値を用いてランダムにそのうちの1つを選択する。そして、遷移制御部14は、選択した状態遷移の遷移番号Nと、遷移可否Fを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部11に記憶された状態変数の値が更新される。
【0021】
初期状態から始めて、温度制御部13で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したときや、エネルギーが一定の値を下回るなどの終了判定条件が満たされたときに、動作が終了する。最適化装置10が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度Tが0にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【0022】
状態遷移の候補を複数発生させ、その中から1つの状態遷移を選択する方式(以下、並列探索方式という)では、状態遷移の候補を1つずつ発生させる方式よりも、遷移確率を高めることができる。例えば、状態遷移の数がN個の焼き鈍し法による最適化装置10での並列探索時の状態の遷移確率は、遷移確率が十分小さい時、式(5),(6)で示されるように、状態遷移の候補を1つずつ発生させる方式の約N倍になる。
【0023】
【0024】
【0025】
ここで、Nは状態遷移の数である。A(ΔEi)は、i番目の状態遷移の受入確率であり、十分小さい。Psingleは、1つの状態遷移単体で探索する場合の遷移確率である。Pparallelは、N個の状態遷移に対して並列探索したときの遷移確率である。
【0026】
遷移制御部14がハードウェアにより実現される場合、遷移制御部14は、例えば、遷移可否{fi}から、乱数値を用いてランダムにそのうちの1つである遷移可否Fを選択する選択回路を有する。選択回路は、例えば、2進木構造で配置された複数のセレクタを有する(例えば、特許文献1参照)。各セレクタは、入力される2つの遷移可否のうち、遷移可である方を優先して出力する。また、各セレクタは、入力される2つの遷移可否が同じ(両方遷移可または両方遷移否)である場合、乱数発生回路が出力する乱数値を用いてランダムに何れか一方を選択して出力する。
【0027】
ここで、遷移制御部14により、式(1)~(3)で表される受入確率で状態遷移を許容するメカニズムについてはこれまで説明していないのでこれを補足する。
受入確率pで1を、(1-p)で0を出力する回路は、2つの入力a,bを持ち、a>bのとき1を出力し、a<bのとき0を出力する比較器の入力aに受入確率pを、入力bに区間[0,1)の値をとる一様乱数を入力することで実現することができる。したがってこの比較器の入力aに、エネルギー変化と温度Tにより式(1)を用いて計算される受入確率pの値を入力すれば、上記の機能を実現することができる。
【0028】
すなわちfを式(1)で用いる関数、uを区間[0,1)の値をとる一様乱数とするとき、f(ΔE/T)がuより大きいとき遷移可否Fとして1を出力する回路で、上記の機能を実現できる。
【0029】
このままでもよいのだが、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてfの逆関数f-1を採用すると、-ΔE/Tがf-1(u)より大きいとき1を出力する回路、またはΔE/Tがf-1(u)以下のとき1を出力する回路でよいことがわかる。さらに、温度Tが正であることから-ΔEがTf-1(u)より大きいとき1を出力する回路、またはΔEがTf-1(u)以下のとき1を出力する回路でよい。遷移制御部14は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を出力する。メトロポリス法が適用される場合、f-1(u)は、式(7)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(8)で与えられる。
【0030】
【0031】
【0032】
ところで、ソフトウェアによる最適化問題の計算手法として、各状態遷移についての遷移可否{fi}のうちの1つを、ランダムではなく各状態遷移を識別する番号(以下ビット番号という)順にシーケンシャルに探索していく方法が知られている。この探索方法では、例えば、まず、ビット番号の一番小さい状態遷移が遷移候補として選択され、その状態遷移の遷移可否が探索され、遷移可否が“1”(遷移可)であればその状態遷移が行われ、遷移可否が“0”(遷移否)であれば状態遷移が行われない。その後、前回探索されたビット番号よりも1つ大きいビット番号の状態遷移が遷移候補として選択され、その状態遷移の遷移可否が探索され、同様に遷移可否に応じた処理が繰り返される。そして、前回一番大きなビット番号の状態遷移についての遷移可否が探索された場合、次は再び一番小さいビット番号の状態遷移についての遷移可否の探索が行われる。
【0033】
なお、従来、イジングモデルのスピンに対応するユニットを複数アレイ状に設けた半導体装置において、更新するスピンに隣接するスピンについては同時に更新しないようにしつつ、複数のスピンの同時更新を行う技術があった(例えば、特許文献2参照)。また、量子計算機において、最近接結合に限定された量子ビットの一次元配列における量子計算を、量子ビットの順序の並べ替えなどを行って効率化する技術があった(例えば、特許文献3参照)。
【0034】
最適化問題を解くモンテカルロ法として、擬似焼き鈍し法以外の方法もある。中でもレプリカ交換法(交換モンテカルロ法とも呼ばれる)は、擬似焼き鈍し法で温度を徐々に下げる代わりに、複数の温度に対して独立に(論理的に)並列に状態遷移を行い、適切な判定基準により異なる温度の間で状態を交換することにより焼き鈍しと同様な効果を得る方法である。
【先行技術文献】
【特許文献】
【0035】
【文献】特開2018-41351号公報
【文献】特開2016-66378号公報
【文献】特表2004-531793号公報
【発明の概要】
【発明が解決しようとする課題】
【0036】
擬似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法においては、遷移候補をランダムに1つずつ発生させる方式が理論的に扱いやすく基本となっている。しかしながら、実際に最適解の探索を行ってみると、多くの問題で遷移候補を順番に一つずつ発生させる方式の方が早く最適解に達することが知られている。例えば、最大カット問題、巡回セールスマン問題、スピングラス問題では実験的に、遷移候補を順番に発生させた方が高速であることがわかっている。
【0037】
並列探索を行う従来の最適化装置では、遷移候補となる状態遷移をランダムに選択するものであり、遷移候補を順番に発生させる方式を回路の並列化により高速化したものではない。このため、従来の最適化装置では、組合せ最適化問題の種類によっては計算速度が遅くなる場合があったと考えられる。
【0038】
1つの側面では、本発明は、組合せ最適化問題を高速に解くことができる最適化装置及び最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0039】
1つの実施態様では、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する評価関数計算部と、温度を示す温度値を制御する温度制御部と、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択する遷移制御部と、選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力するエネルギー比較部と、を有する最適化装置が提供される。
【0040】
また、1つの実施態様では、最適化装置の制御方法が提供される。
【発明の効果】
【0041】
1つの側面では、本発明は、遷移候補を順番に発生させる方式を回路的に並列に動作させることにより組合せ最適化問題を高速に解くことを可能とするものである。
【図面の簡単な説明】
【0042】
【
図1】第1の実施の形態の最適化装置の一例を示す図である。
【
図2】最適化装置による動作の一例の流れを示すフローチャートである。
【
図3】並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
【
図4】並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
【
図5】並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して巡回セールスマン問題を計算したシミュレーション結果の例を示す図である。
【
図8】第2の実施の形態の最適化装置の一例を示す図である。
【
図11】選択回路部のセレクタの一例を示す図である。
【
図12】第3の実施の形態の最適化装置の例を示す図である。
【
図13】第3の実施の形態の最適化装置における遷移可否選択回路の一例を示す図である。
【
図14】選択回路部のセレクタの一例を示す図である。
【
図15】第3の実施の形態の最適化装置における遷移可否選択回路の他の例を示す図である。
【
図16】選択回路部のセレクタの一例を示す図である。
【
図17】疑似焼き鈍し法による最適化装置の概念的構成を示す。
【発明を実施するための形態】
【0043】
以下、発明を実施するための形態を、図面を参照しつつ説明する。説明は擬似焼き鈍し法を例にして行うが、レプリカ交換法でも各温度における状態の遷移規則は擬似焼き鈍し法と全く同じであるため同様に適用できる。また、最適化すべき目的関数(エネルギー)が2値変数に対する2次式で表されるイジングモデルを例に説明を行うが、そうでない場合でも、遷移番号が定義できれば基本的に同じ手法が適用できる。
【0044】
なお、イジングモデルの疑似焼き鈍しにおいては、状態遷移に伴い変化する状態変数は1つだけである。そこで、以下では各状態遷移をそれぞれ識別する識別情報は、1つの状態変数(ビットとも呼ばれる)のビット番号と等しいものとして説明を行っているが、状態遷移番号と状態遷移に伴い変化する変数の番号が一致する形態に限定されるものではない。
【0045】
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
最適化装置20は、状態保持部21、評価関数計算部22、温度制御部23、遷移制御部24、エネルギー比較部25を有する。
【0046】
状態保持部21は、エネルギーを表す評価関数に含まれる状態s(複数の状態変数の値)を保持する。また、状態保持部21は、遷移制御部24が出力する遷移可否Fと遷移番号Nに基づいて、状態変数の値を更新する。状態保持部21は、例えば、複数の状態変数の値をそれぞれ保持するレジスタやメモリ(例えば、RAM(Random Access Memory))、遷移可否Fと遷移番号Nに基づいて、状態変数の値を1から0または0から1に反転する論理回路などを用いて実現できる。遷移可否Fが遷移番号Nの状態遷移を許容する値(例えば、1)である場合、遷移番号Nに対応する状態変数の値が変化する。
【0047】
評価関数計算部22は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する。以下では、複数の状態遷移のそれぞれに対して計算されたエネルギーの変化値を、エネルギー変化{-ΔEi}と表記する。
【0048】
エネルギーを表す評価関数E(x)は、例えば、以下の式(9)で表される。
【0049】
【0050】
右辺の1項目は、状態変数の全組み合わせについて、漏れと重複なく、2つの状態変数の値(0または1)と重み係数との積を積算したものである。xiは、識別情報(以下ビット番号という)がiの状態変数、xjは、ビット番号=jの状態変数であり、Wijは、ビット番号=i,jの状態変数の相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。また重み係数Wijは、所定のビット幅(例えば、16ビット、32ビット、64ビット、128ビットなど)をもつ。
【0051】
右辺の2項目は、全状態変数のそれぞれについてのバイアス係数と状態変数の値との積の総和を求めたものである。biは、ビット番号がiの状態変数についてのバイアス係数を示している。
【0052】
また、状態変数xiが変化して1-xiとなると、状態変数xiの増加分は、Δxi=(1-xi)-xi=1-2xiと表せる。スピン反転(状態変数の値の変化)に伴うエネルギー変化ΔEiは、以下の式(10)で表される。
【0053】
【0054】
式(10)において、状態変数xiが1から0に変化するとき、Δxiは-1となり、状態変数xiが0から1に変化するとき、Δxiは1となる。なお、hiはローカルフィールド(局所場)と呼ばれ、Δxiに応じてローカルフィールドhiに符号(+1または-1)を乗じたものがエネルギー変化ΔEiである。
【0055】
また、状態変数xjが0から1に変化したときのローカルフィールドhiの変化分Δhiは、+Wij、状態変数xjが1から0に変化したときの変化分Δhiは、-Wijと表せる。したがって、ローカルフィールドhiは行列演算により毎回計算しなおす必要はなく、状態遷移に伴って変化のあった状態変数による変化分だけWijを加減算すればよい。
【0056】
評価関数計算部22は、例えば、積和演算回路などの論理回路、重み係数やバイアス係数を保持するレジスタまたはメモリ(例えば、RAM)などを用いて実現される。なお、重み係数やバイアス係数を保持するレジスタまたはメモリは、評価関数計算部22の外にあってもよい。
【0057】
温度制御部23は、温度Tを制御する。温度制御部23は、擬似焼き鈍し法を実現するために、例えば、温度Tを所定のスケジュールにしたがって下げていく制御を行う。
温度制御部23は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路にて実現できる。なお、温度制御部23は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の温度Tの制御を行う。
【0058】
遷移制御部24は、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の番号に基づいて設定された優先度情報(以下、優先度{pi}と表記する)を保持している。そして、遷移制御部24は、優先度{pi}と、温度Tとエネルギー変化{-ΔEi}と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報(前述の遷移可否{fi})とに基づいて、複数の状態遷移のうち、何れかの状態遷移を選択する。
【0059】
遷移制御部24は、例えば、
図1に示すように、熱雑音生成回路24a、比較器24b、遷移可否選択回路24cを有する。
熱雑音生成回路24aは、例えば、ビット番号ごとに独立の乱数値{u
i}を、前述した逆関数f
-1(u)の値に変換するノイズテーブルを記憶するメモリ(例えば、RAM)を有する。そして、熱雑音生成回路24aは、ノイズテーブルが出力する各値に温度Tを乗算した積を、メトロポリス法またはギブス法における熱雑音(Tf
-1(u))として出力する。
【0060】
比較器24bは、熱雑音生成回路24aが出力する各ビット番号についての熱雑音と、対応するビット番号のエネルギー変化{-ΔEi}との比較結果に応じて、各ビット番号の状態遷移の可否を示す遷移可否{fi}を出力する。比較器24bが{-ΔEi}<Tf-1(u)の場合に、状態遷移を受け入れることを示す遷移可否Fを出力する回路である場合、エネルギー変化{-ΔEi}が正に大きくなるほど、状態遷移の受入確率は小さくなる。
【0061】
遷移可否選択回路24cは、前回更新された状態遷移の情報(遷移可否Fと遷移番号N)に基づいて優先度{pi}を設定する。なお、遷移可否選択回路24cは、優先度{pi}を保持する保持部を有している。そして、遷移可否選択回路24cは、優先度{pi}と遷移可否{fi}とに基づいて、複数の状態遷移のうち、何れかの状態遷移を選択し、選択した状態遷移のビット番号として遷移番号Nと、選択した状態遷移の遷移可否{fi}として遷移可否Fを出力する。
【0062】
遷移可否選択回路24cは、優先度情報である優先度{pi}に基づいて、ビット番号の小さい方、またはビット番号の大きい方から優先的に、遷移候補とする状態遷移を選択することでシーケンシャルな選択を実現する。
【0063】
遷移可否選択回路24cは、以下のルールにしたがって状態遷移の優先順位を決定する。なお、以下では、遷移可否選択回路24cがビット番号の小さい方から優先的に、遷移候補とする状態遷移を選択する例を示す。
【0064】
遷移可否選択回路24cは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移よりビット番号が1つ大きな状態遷移の優先順位を最高とする。遷移可否選択回路24cは、優先順位が最高となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が大きくなるほど優先順位を下げる。また、遷移可否選択回路24cは、ビット番号が最小の状態遷移の優先順位を、ビット番号が最大の状態遷移の優先順位よりも1つ低くする。そして、遷移可否選択回路24cは、優先順位が最低となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が大きくなるほど優先順位を下げる。
【0065】
上記のルールは、各ビット番号に対して以下のように設定されるそれぞれ1ビットの優先度{pi}と、以下のルールにしたがって2つの遷移可否のうち一方を選択してそれぞれ出力する、2進木構造で配置された複数のセレクタを用いて実現できる。
【0066】
例えば、遷移可否選択回路24cは、複数のビット番号のうち、前回更新された状態遷移(前回遷移した状態変数)を識別するビット番号(更新ビット番号)よりも1つ大きなビット番号の状態遷移についての優先度{pi}として1を設定する。そして、遷移可否選択回路24cは、それ以外のビット番号の状態遷移についての優先度{pi}として0を設定する。
【0067】
図1には、更新ビット番号が10である場合の、32個の状態遷移について設定された優先度{p
i}(p
0~p
31)の例が示されている。
図1に示されているように、ビット番号が10より1つ大きいビット番号が11の状態遷移については、優先度p
11として1が設定されており、それ以外のビット番号の状態遷移については、優先度p
0~p
10,p
12~p
31として0が設定されている。なお、0と1は逆に設定されていてもよい。
【0068】
2進木構造で配置された複数のセレクタのそれぞれは、2つの状態遷移の遷移可否{fi}と、それら2つの状態遷移についての優先度{pi}と、ビット番号を入力する。例えば、2進木構造で配置された複数のセレクタのうち初段の複数のセレクタのそれぞれは、ビット番号が隣接する2つの状態遷移についての遷移可否{fi}と優先度{pi}と、ビット番号を入力する。ビット番号は、例えば、エネルギー変化{-ΔEi}と対応付いて評価関数計算部22から供給される。なお、複数のセレクタのそれぞれが、選択したビット番号に対応したアドレスを生成するようにしてもよい。ビット番号を示すアドレスを生成するセレクタの例については後述する。以下では、ビット番号を示すアドレスについてもビット番号と呼ぶことにする。
【0069】
2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}のうち一方が1の場合、遷移可否{fi}が1である状態遷移についての遷移可否{fi}と、ビット番号を出力する。
【0070】
一方、2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}が両方1でビット番号の大きい方の優先度{pi}が1の場合、ビット番号が大きい方の状態遷移についての遷移可否{fi}とビット番号とを出力する。それ以外の場合、複数のセレクタのそれぞれは、ビット番号が小さい方の状態遷移についての遷移可否{fi}とビット番号とを出力する。
【0071】
また、2進木構造で配置された複数のセレクタのそれぞれは、以下のルールで優先度{pi}を次段に伝播する。
複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が小さい方の状態遷移についての優先度{pi}が1の場合、次段のセレクタに優先度{pi}として1を供給する。複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が大きい方の状態遷移についての優先度{pi}が1で、その状態遷移の遷移可否{fi}が1の場合、次段のセレクタに優先度{pi}として1を供給する。
【0072】
一方、複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が大きい方の状態遷移についての優先度{pi}が1で、その状態遷移の遷移可否{fi}が0の場合、自身の次段のセレクタに優先度{pi}として0を供給する。さらにその場合、同じ次段のセレクタに接続された2つのセレクタのうち、2進木構造上の右側に位置するセレクタは、次段のセレクタの右隣のセレクタに対し、ビット番号の小さい方の状態遷移についての優先度{pi}を1にする信号を供給する。以下、その信号を、優先度伝達信号という。なお、次段のセレクタの右隣にセレクタがない場合には、優先度伝達信号の供給は行われない。
【0073】
図1の例で、遷移可否f
8~f
15のうち、遷移可否f
8,f
15が1、遷移可否f
9~f
14が0、優先度p
11が1であるとする。このとき、上記ルールにより、2段目のあるセレクタから、ビット番号が8~11の状態遷移のうちビット番号が8の状態遷移についての遷移可否f
8とビット番号と、優先度=0が出力される。一方、上記ルールにより、2段目の上記セレクタの右隣のセレクタからは、ビット番号が12~15の状態遷移のうちビット番号が15の状態遷移についての遷移可否f
15とビット番号と、優先度=1が出力される。優先度伝達信号を用いない場合、遷移可否f
8と、遷移可否f
15を入力する3段目のセレクタは、ビット番号=15の状態遷移よりも優先順位の低いビット番号=8の状態遷移についての遷移可否f
8とビット番号を出力してしまう。これに対して、優先度伝達信号を用いることで、3段目のセレクタは、右上のセレクタから入力される優先度が1になっているため、ビット番号=8の状態遷移よりも優先順位の高いビット番号が15の状態遷移についての遷移可否f
15とビット番号を出力できる。
【0074】
このような遷移可否選択回路24cによって、ビット番号の小さい方から優先的に遷移候補となる状態遷移がシーケンシャルに選択される。
なお、遷移可否選択回路24cは、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択してもよい。その場合には、以下の処理が行われる。遷移可否選択回路24cは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移より、ビット番号が1つ小さな状態遷移の優先順位を最高とする。遷移可否選択回路24cは、優先順位が最高となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。また、遷移可否選択回路24cは、ビット番号が最大の状態遷移の優先順位を、ビット番号が最小の状態遷移の優先順位よりも1つ低くする。そして、遷移可否選択回路24cは、優先順位が最低となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。
【0075】
上記のルールは、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合と同様に、それぞれ1ビットの優先度{pi}と、2進木構造で配置された複数のセレクタを用いて実現できる。例えば、遷移可否選択回路24cは、更新ビット番号より1つ小さなビット番号の状態遷移についての優先度{pi}として1を設定し、それ以外のビット番号の状態遷移についての優先度{pi}として0を設定する。
【0076】
そして2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}のうち一方が1の場合、遷移可否{fi}が1である状態遷移についての遷移可否{fi}と、ビット番号を出力する。一方、2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}が両方1で、ビット番号の小さい方の優先度{pi}が1の場合、ビット番号が小さい方の状態遷移についての遷移可否{fi}とビット番号とを出力する。それ以外の場合、複数のセレクタのそれぞれは、ビット番号が大きい方の状態遷移についての遷移可否{fi}とビット番号とを出力する。
【0077】
また、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択する場合、2進木構造で配置された複数のセレクタのそれぞれは、以下のルールで優先度{pi}を次段に伝播する。
【0078】
複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が大きい方の状態遷移についての優先度{pi}が1の場合、次段のセレクタに優先度{pi}として1を供給する。複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が小さい方の状態遷移についての優先度{pi}が1で、その状態遷移の遷移可否{fi}が1の場合、次段のセレクタに優先度{pi}として1を供給する。
【0079】
一方、複数のセレクタのそれぞれは、入力される2つの優先度{pi}のうち、ビット番号が小さい方の状態遷移についての優先度{pi}が1で、その状態遷移の遷移可否{fi}が0の場合、自身の次段のセレクタに優先度{pi}として0を供給する。さらにその場合、同じ次段のセレクタに接続された2つのセレクタのうち、2進木構造上の左側に位置するセレクタは、次段のセレクタの左隣のセレクタに対し、ビット番号の大きい方の状態遷移についての優先度{pi}を1にする優先度伝達信号を供給する。なお、次段のセレクタの左隣にセレクタがない場合には、優先度伝達信号の供給は行われない。
【0080】
なお、遷移可否選択回路24cは、最小または最大のビット番号からではなく最小のビット番号と最大のビット番号の間のビット番号から、ビット番号の小さい方へまたは大きい方へ状態遷移をシーケンシャルに選択してもよい。
【0081】
優先度{pi}の生成例や、遷移可否選択回路24cの回路例については後述する。
なお、遷移制御部24は許容された状態遷移がない場合、状態遷移の受入確率が上昇するように、エネルギー変化{-ΔEi}またはTf-1(u)の一方にオフセット値を加算または減算するようにしてもよい(例えば特開2018-063626号公報参照)。
【0082】
エネルギー比較部25は、遷移制御部24によって選択された状態遷移に基づいて更新されるエネルギーが、複数回更新された中で最低値となるときの複数の状態変数の値である最低エネルギー状態Sを出力する。例えば、エネルギー比較部25は、状態sが更新されるたびに、状態sと重み係数とバイアス値とを用いて現在の状態sに対するエネルギーを計算する。また、エネルギー比較部25は、最低エネルギーと最低エネルギーが得られたときの状態(最低エネルギー状態S)を保持する。エネルギー比較部25は、現在の状態sから得られたエネルギーが、これまでの最低エネルギーよりも低い場合には最低エネルギーを更新するとともに、その状態sを、最低エネルギー状態Sとして記憶する。そして、エネルギー比較部25は、エネルギーが複数回更新された中で、最低値となるときの最低エネルギー状態Sを、組合せ最適化問題の解として出力する。このようなエネルギー比較部25は、例えば、積和演算回路、比較器、レジスタまたはメモリ(例えば、RAM)などを用いて実現可能である。なお、評価関数計算部22がエネルギー自体を計算する場合には、エネルギー比較部25は、評価関数計算部22からエネルギーを受信すればよく、自らエネルギーの計算を行わなくてもよい。
【0083】
なお、状態sを更新する処理が所定回数行われた後の状態sを最適化の結果として出力する場合には、エネルギー比較部25はなくてもよい。
以下、最適化装置20の動作例を説明する。
【0084】
図2は、最適化装置による動作の一例の流れを示すフローチャートである。
まず、最適化装置20において、反復回数を管理する図示しない制御部(コントローラ)により反復回数が初期化される(ステップS1)。その後、前述した評価関数計算部22の処理により、エネルギー変化{-ΔE
i}が計算される(ステップS2)。
【0085】
そして、確率的探索が行われる(ステップS3)。確率的探索は、前述した、遷移制御部24が、遷移可否{fi}を求め、遷移可否{fi}の他、優先度{pi}を用いて遷移候補となる状態遷移を選択する前述の処理、優先度{pi}の更新処理を含む。また、確率的探索は、状態保持部21が、遷移可否F、遷移番号Nに基づいて状態変数を更新する処理も含む。
【0086】
その後、制御部により反復回数がインクリメントされ(ステップS4)、反復回数が所定回数に達したか否かが判定される(ステップS5)。反復回数が所定回数に達していない場合には、ステップS2からの処理が繰り返され、反復回数が所定回数に達した場合、制御部は、エネルギー比較部25に最低エネルギー状態Sを出力させ(ステップS6)、処理を終える。なお、
図2には示されていないが、温度制御部23は、擬似焼き鈍し法を実現するために、例えば、反復回数がある回数(上記の所定回数よりも少ない)に達するたびに、温度Tを下げていく制御を行う。このため、温度制御部23が、反復回数を管理する制御部(コントローラ)の処理を行ってもよい。
【0087】
上記のような最適化装置20は、複数の状態遷移の中から遷移候補を選択する際に、ランダムに選択するのではなく優先度情報に基づいて選択することで、状態遷移をビット番号順にシーケンシャルに選ぶ探索が可能になる。これにより、最大カット問題、巡回セールスマン問題、スピングラス問題など、遷移候補となる状態遷移をシーケンシャルに選ぶ探索が適した組合せ最適化問題を高速に解くことができる。
【0088】
以下、各種シミュレーション結果を示す。
図3は、並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。横軸はイタレーション回数を表し、縦軸は正解数を表す。計算対象の最大カット問題は、Maxcut(G43)という1000ビット規模の問題である。
【0089】
図3において結果30は、遷移候補となる状態遷移をランダムに選択した場合の計算結果を示し、結果31は、遷移候補となる状態遷移をシーケンシャルに選択した場合の計算結果を示す。結果30,31から、遷移候補となる状態遷移をランダムに選択した場合よりも、シーケンシャルに選択した場合の方が、約2倍の速さで正解数が増加していることがわかる。
【0090】
図4は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
また、
図5は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して巡回セールスマン問題を計算したシミュレーション結果の例を示す図である。
【0091】
図4、
図5とも横軸はイタレーション回数を表し、縦軸は最適解到達率を表す。計算対象の最大カット問題はMaxcut(G43)であり、計算対象の巡回セールスマン問題における都市数は32都市である。
【0092】
図4、
図5において結果32,35は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルに選択する場合の計算結果を示し、結果33,36は、並列探索を行うとともに、遷移候補となる状態遷移をランダムに選択する場合の計算結果を示す。なお、
図4、
図5では、比較のために並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルに選択して最大カット問題または巡回セールスマン問題を計算した結果34,37が示されている。
【0093】
図4、
図5から、並列探索を行うとともに状態遷移をランダムに選択する場合よりも、
図1の最適化装置20のように並列探索を行うとともに状態遷移をシーケンシャルに選択する場合の方が、最適解到達率の増加速度が約2倍速くなることがわかる。また、
図4、
図5から、並列探索を行わずに状態遷移をシーケンシャルに選択する場合よりも、
図1の最適化装置20のように並列探索を行うとともに状態遷移をシーケンシャルに選択する場合の方が、最適解到達率の増加速度が10~100倍程度速くなることがわかる。
【0094】
(遷移可否選択回路24cの例)
図6は、遷移可否選択回路の一例を示す図である。なお、以下では、遷移可否選択回路24cが、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合について説明するが、ビット番号の大きい方から優先的に選ぶ場合もほぼ同様の回路で実現できる。
【0095】
遷移可否選択回路24cは、優先度保持部40、選択回路部41、優先度更新回路42を有する。
優先度保持部40は、各ビット番号に対して設定された優先度{pi}を保持する。優先度保持部40は、例えば、それぞれ1ビットの優先度{pi}を保持する複数のレジスタを有する。
【0096】
選択回路部41は、2進木構造で複数段、配置された複数のセレクタ(セレクタ41a1,41a2,41b1,41b2,41cなど)を有する。複数のセレクタのそれぞれは、2つの状態遷移の遷移可否{fi}と、それら2つの状態遷移のビット番号に対して設定された優先度{pi}とを入力するとともに、初段のセレクタ以外は前段の2つのセレクタが出力するビット番号に対応するアドレスを入力する。また、2段目以降のセレクタのうち、最後段のセレクタと各段の左端以外のセレクタは、前述の優先度伝達信号を入力する。そして、複数のセレクタのそれぞれは、入力される2つの状態遷移についての遷移可否{fi}及び優先度{pi}と、優先度伝達信号に基づいて、遷移可否{fi}、優先度{pi}、ビット番号に対応するアドレスを出力する。また、同じ次段のセレクタに接続された2つのセレクタのうち、2進木構造上の右側に位置するセレクタは、次段のセレクタの右隣のセレクタに対し、前述の優先度伝達信号を供給する。
【0097】
例えば、セレクタ41a2は、入力される2つの状態遷移の遷移可否{fi}(遷移可否f2,f3)のうち一方が1の場合、遷移可否{fi}が1である状態遷移についての遷移可否{fi}と、ビット番号に対応するアドレス(0か1)を出力する。一方、セレクタ41a2は、遷移可否f2,f3が両方1で、ビット番号の大きい方の優先度{pi}(優先度p3)が1の場合、遷移可否f3とビット番号に対応するアドレス(例えば、1)とを出力する。それ以外の場合、セレクタ41a2は、ビット番号が小さい方の状態遷移についての遷移可否f2とビット番号に対応するアドレス(例えば、0)とを出力する。
【0098】
また、セレクタ41a2は、入力される2つの優先度p2,p3のうち、ビット番号が小さい方の状態遷移についての優先度p2が1の場合、次段のセレクタ41b1に優先度として1を供給する。また、セレクタ41a2は、優先度p2,p3のうち、ビット番号が大きい方の状態遷移についての優先度p3が1で、その状態遷移の遷移可否f3が1の場合、次段のセレクタ41b1に優先度として1を供給する。一方、セレクタ41a2は、優先度p2,p3のうち、ビット番号が大きい方の状態遷移についての優先度p3が1で、その状態遷移の遷移可否f3が0の場合、次段のセレクタ41b1に優先度として0を供給する。さらにその場合、セレクタ41a2は、次段のセレクタ41b1の右隣のセレクタ41b2に対し、ビット番号の小さい方の状態遷移についての優先度を1にする優先度伝達信号を供給する。
【0099】
ビット番号に対応するアドレスは、各段のセレクタを通過するたびに、1ビットずつビット幅が増えていき、最後段のセレクタ41cが出力するアドレスが、選択された状態遷移のビット番号、すなわち遷移番号Nとなる。また、最後段のセレクタ41cが出力する遷移可否{fi}が遷移可否Fとなる。なお、最後段のセレクタ41cは、優先度を出力しなくてもよい。
【0100】
優先度更新回路42は、遷移可否Fと遷移番号Nとに基づいて、優先度{pi}を更新する。優先度更新回路42は、遷移可否Fが1の場合、遷移番号Nよりも1つ大きなビット番号の状態遷移についての優先度{pi}を0から1に変更し、これまで1であった優先度{pi}を0に変更する。遷移可否Fが0の場合、優先度更新回路42は、優先度{pi}を変更しない。このような更新を行う優先度更新回路42は、インバータ回路などを用いて実現できる。
【0101】
図7は、選択回路部のセレクタの一例を示す図である。
図7では、
図6に示した2段目のセレクタ41b2の例が示されている。
セレクタ41b2は、XOR(排他的論理和)回路50、AND(論理積)回路51,52、OR(論理和)回路53,54、2:1セレクタ55、AND回路56、2:1セレクタ57を有する。
【0102】
XOR回路50は、前段の2つのセレクタが出力する遷移可否f_l,f_uを入力する。遷移可否f_l,f_uのうち、遷移可否f_lは、ビット番号が小さい方の状態遷移の遷移可否であり、遷移可否f_uは、ビット番号が大きい方の状態遷移の遷移可否である。XOR回路50は、遷移可否f_l,f_uの値が一致していれば0、異なっていれば1を出力する。
【0103】
AND回路51は、遷移可否f_uと、優先度p_uを入力し、遷移可否f_uと、優先度p_uとの論理積を出力する。優先度p_uは、前段の2つのセレクタが出力する優先度p_l,p_uのうち、ビット番号が大きい方に対して設定された優先度である。
【0104】
AND回路52は、遷移可否f_uを反転した値と、優先度p_uを入力し、遷移可否f_uを反転した値と、優先度p_uとの論理積である優先度伝達信号prを出力する。
OR回路53は、優先度p_l,p_uと、セレクタ41a2が出力する優先度伝達信号pr_lを入力し、優先度p_l,p_uと、優先度伝達信号pr_lとの論理和を出力する。
【0105】
OR回路54は、遷移可否f_l,f_uを入力し、遷移可否f_l,f_uの論理和である遷移可否(fと表記している)を出力する。
2:1セレクタ55は、遷移可否f_uと、AND回路51が出力する0または1の値を入力する。そして、2:1セレクタ55は、XOR回路50の出力が1のときは、遷移可否f_uの値を選択して出力し、XOR回路50の出力が0のときは、AND回路51が出力する値を選択して出力する。
【0106】
AND回路56は、AND回路52の出力(優先度伝達信号pr)を反転した値と、OR回路53が出力する0または1の値を入力する。そして、AND回路56は、優先度伝達信号prを反転した値と、OR回路53が出力する値との論理積である優先度(pと表記されている)を出力する。
【0107】
2:1セレクタ57は、前段の2つのセレクタが出力するビット番号に対応するアドレスaddr_l,addr_uを入力する。アドレスaddr_l,addr_uのうち、アドレスaddr_lは、ビット番号が小さい方に対応するアドレスであり、アドレスaddr_uは、ビット番号が大きい方に対応するアドレスである。2:1セレクタ57は、2:1セレクタ55の出力が0のときは、アドレスaddr_lを選択して出力し、2:1セレクタ55の出力が1のときは、アドレスaddr_uを選択して出力する。2:1セレクタ55が出力するアドレスaddr_lまたはアドレスaddr_uに、2:1セレクタ55が出力する1ビットの値を追加したもの(上位ビットに追加したもの)が、セレクタ41b2が出力するアドレスaddrである。
【0108】
図6に示した他のセレクタについても、
図7に示したセレクタ41b2とほぼ同じ回路構成により実現できる。ただ、初段のセレクタには、
図7に示した2:1セレクタ57が設けられておらず、OR回路53に優先度伝達信号pr_lは入力されない。また、同じ次段のセレクタに接続された2つのセレクタのうち、2進木構造上の左側に位置するセレクタや、右側に位置するセレクタであっても次段のセレクタの右隣にセレクタがないものについては、優先度伝達信号prを出力しない。また、最後段のセレクタ41cには、AND回路52,56、OR回路53が設けられていなくてもよい。
【0109】
第1の実施の形態の最適化装置20は、例えば、上記のような回路構成の遷移可否選択回路24cを用いて実現可能である。
(第2の実施の形態)
図8は、第2の実施の形態の最適化装置の一例を示す図である。
図8において、
図1に示した最適化装置20と同じ要素については同じ符号が付されている。
【0110】
第2の実施の形態の最適化装置60において、遷移制御部61の遷移可否選択回路61aが、第1の実施の形態の最適化装置20における遷移制御部24の遷移可否選択回路24cとは異なっている。
【0111】
遷移可否選択回路61aは、複数のビット番号のうち、前回更新された状態遷移(前回遷移した状態変数)を識別するビット番号(更新ビット番号)よりも大きいビット番号の状態遷移についての優先度{pi}として1を設定する。そして、遷移可否選択回路61aは、更新ビット番号以下のビット番号の状態遷移についての優先度{pi}として0を設定する。
【0112】
図8には、更新ビット番号が10である場合の、32個の状態遷移について設定された優先度{p
i}(p
0~p
31)の例が示されている。
図8に示されているように、ビット番号が10より大きな状態遷移については、優先度p
11~p
31として1が設定されており、それ以外のビット番号の状態遷移については、優先度p
11~p
31として0が設定されている。なお、0と1は逆に設定されていてもよい。
【0113】
遷移可否選択回路61aは、第1の実施の形態の遷移可否選択回路24cと同様に2進木構造で配置された複数のセレクタを有する。
2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}のうち一方が1の場合、遷移可否{fi}が1である状態遷移についての遷移可否{fi}と優先度{pi}と、ビット番号を出力する。一方、2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}が両方同じ値の場合、優先度{pi}が同じならビット番号が小さい状態遷移についての遷移可否{fi}と優先度{pi}とビット番号とを出力する。2進木構造で配置された複数のセレクタのそれぞれは、優先度{pi}が異なるならビット番号が大きい状態遷移(優先度{pi}が1の状態遷移)についての遷移可否{fi}と優先度{pi}とビット番号とを出力する。
【0114】
このような遷移可否選択回路61aによっても、第1の実施の形態の遷移可否選択回路24cと同様に、ビット番号の小さい方から優先的に遷移候補となる状態遷移がシーケンシャルに選択される。
【0115】
なお、遷移可否選択回路61aは、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択してもよい。その場合には、以下の処理が行われる。遷移可否選択回路61aは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移より、ビット番号が1つ小さな状態遷移の優先順位を最高とする。遷移可否選択回路61aは、優先順位が最高となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。また、遷移可否選択回路61aは、ビット番号が最大の状態遷移の優先順位を、ビット番号が最小の状態遷移の優先順位よりも1つ低くする。そして、遷移可否選択回路61aは、優先順位が最低となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。
【0116】
上記のルールは、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合と同様に、それぞれ1ビットの優先度{pi}と、2進木構造で配置された複数のセレクタを用いて実現できる。例えば、遷移可否選択回路61aは、更新ビット番号より小さなビット番号の状態遷移についての優先度{pi}として1を設定し、それ以外のビット番号の状態遷移についての優先度{pi}として0を設定する。2進木構造で配置された複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}が両方同じ値の場合、優先度{pi}が同じならビット番号が大きい状態遷移についての遷移可否{fi}と優先度{pi}とビット番号とを出力する。2進木構造で配置された複数のセレクタのそれぞれは、優先度{pi}が異なるならビット番号が小さい状態遷移(優先度{pi}が1の状態遷移)についての遷移可否{fi}と優先度{pi}とビット番号とを出力する。
【0117】
なお、遷移可否選択回路61aは、最小または最大のビット番号からではなく最小のビット番号と最大のビット番号の間のビット番号から、ビット番号の小さい方へまたは大きい方へ状態遷移をシーケンシャルに選択してもよい。
【0118】
図9は、遷移可否選択回路の一例を示す図である。
図9において、
図6に示した遷移可否選択回路24cと同じ要素については同一符号が付されている。なお、以下では、遷移可否選択回路61aが、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合について説明するが、ビット番号の大きい方から優先的に選ぶ場合も同様の回路で実現できる。
【0119】
選択回路部43は、2進木構造で複数段、配置された複数のセレクタ(セレクタ43a,43b,43cなど)を有する。複数のセレクタのそれぞれは、2つの状態遷移の遷移可否{fi}と、それら2つの状態遷移のビット番号に対して設定された優先度{pi}とを入力するとともに、初段のセレクタ以外は前段の2つのセレクタが出力するビット番号に対応するアドレスを入力する。そして、複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}のうち一方が1の場合、遷移可否{fi}が1である状態遷移についての遷移可否{fi}と優先度{pi}とビット番号に対応するアドレスとを出力する。一方、複数のセレクタのそれぞれは、入力される2つの状態遷移の遷移可否{fi}が両方同じ値の場合、優先度{pi}が同じならビット番号が小さい状態遷移についての遷移可否{fi}と優先度{pi}とビット番号に対応するアドレスとを出力する。
【0120】
例えば、初段のセレクタ43aは、ビット番号が隣接する2つの状態遷移についての遷移可否f0,f1と優先度p0,p1を入力する。そして、セレクタ43aは、遷移可否f0,f1のうち一方が1の場合、遷移可否f0,f1が1である状態遷移についての遷移可否{fi}と優先度{pi}と、ビット番号に対応する1ビットのアドレス(0か1)とを出力する。一方、セレクタ43aは、遷移可否f0,f1が両方同じ値の場合、優先度p0,p1が同じならビット番号が小さい状態遷移についての遷移可否{fi}と優先度{pi}とアドレス、すなわち遷移可否f0と優先度p0と0とを出力する。セレクタ43aは、優先度p0,p1が異なるなら、ビット番号が大きい状態遷移についての遷移可否{fi}と優先度{pi}とアドレス、すなわち遷移可否f1と優先度p1と1とを出力する。
【0121】
ビット番号に対応するアドレスは、各段のセレクタを通過するたびに、1ビットずつビット幅が増えていき、最後段のセレクタ43cが出力するアドレスが、選択された状態遷移のビット番号、すなわち遷移番号Nとなる。また、最後段のセレクタ43cが出力する遷移可否{fi}が遷移可否Fとなる。なお、最後段のセレクタ43cは、優先度{pi}を出力しなくてもよい。
【0122】
優先度更新回路44は、遷移可否Fと遷移番号Nとに基づいて、優先度{pi}を更新する。優先度{pi}の更新方法として、例えば、以下の2つの方法がある。
(優先度{pi}の更新方法例1)
優先度更新回路44は、優先度{pi}を、前回遷移した状態変数のビット番号(更新ビット番号)と各状態変数のビット番号との比較結果に基づいて更新する。
【0123】
優先度更新回路44は、遷移可否Fが“1”であるときの遷移番号Nを、更新ビット番号Nupdateとする。そして、優先度更新回路44は、ビット番号Ni>Nupdateとなる、ビット番号Niに対して設定された優先度piを1とし、ビット番号Ni≦Nupdateとなる、ビット番号Niに対して設定された優先度piを0とする。
【0124】
このような更新を行う優先度更新回路44は、比較回路などを用いて実現できる。
(優先度{pi}の更新方法例2)
優先度{pi}の更新方法例2を行う優先度更新回路44では、各ビット番号に対して設定される優先度{pi}を、各ビット番号より1つ小さいビット番号に対して設定された優先度と同じ値にする回路が用いられる。そして、優先度更新回路44は、前回遷移した状態変数のビット番号よりも1つ大きいビット番号に対して設定された優先度を強制的に1にする。このとき、上記回路により、優先度が1とされたビット番号よりも大きいビット番号の優先度は全て1となる。
【0125】
図10は、優先度の更新例を示す図である。
初期状態では、優先度{p
i}は、最小のビット番号に対して設定された優先度p
0の値=0にしたがって、全て0になっている。ビット番号=10の状態変数において遷移が発生した場合、優先度更新回路44は、ビット番号=11に対して設定されている優先度p
11を強制的に1に反転する。そして、優先度更新回路44は、優先度{p
i}を、各ビット番号より1つ小さいビット番号に対して設定された優先度と同じ値にする回路により、ビット番号=11よりも大きいビット番号に対して設定されている優先度{p
i}を1にする。その後、ビット番号=13の状態変数において遷移が発生した場合、優先度更新回路44は、ビット番号=14に対して設定されている優先度p
14を1に維持する。そして、優先度更新回路44は、優先度{p
i}を、各ビット番号より1つ小さいビット番号に対して設定された優先度と同じ値にする回路により、値が1に反転されていた優先度p
11~p
13を、0に反転する。
【0126】
このような処理を行う優先度更新回路44は、例えば、各ビット番号に対応して設けられたOR回路などを用いて実現できる。ビット番号Niに対応して設けられたOR回路の一方の入力端子には、ビット番号Niより1つ小さいビット番号Ni-1の優先度が入力され、他方の入力端子には制御値が入力される。制御値は、優先度更新回路44によって、遷移可否F及び遷移番号Nに基づいて生成される。制御値は、ビット番号Niの状態変数において遷移が発生したときに、1になる。このようなOR回路は、制御値が0の場合、1つ小さいビット番号Ni-1の優先度をビット番号Niの優先度として出力し、制御値が1の場合、1つ小さいビット番号Ni-1の優先度にかかわらず、ビット番号Niの優先度として1を出力する。
【0127】
図11は、選択回路部のセレクタの一例を示す図である。
図11では、
図9に示した2段目のセレクタ43bの例が示されている。
セレクタ43bは、XOR回路70,71、OR回路72、2:1セレクタ73,74,75を有する。
【0128】
XOR回路70は、前段の2つのセレクタが出力する遷移可否f_l,f_uを入力する。遷移可否f_l,f_uのうち、遷移可否f_lは、ビット番号が小さい方の状態遷移の遷移可否であり、遷移可否f_uは、ビット番号が大きい方の状態遷移の遷移可否である。XOR回路70は、遷移可否f_l,f_uの値が一致していれば0、異なっていれば1を出力する。
【0129】
XOR回路71は、前段の2つのセレクタが出力する優先度p_l,p_uを入力する。優先度p_l,p_uのうち、優先度p_lは、ビット番号が小さい方に対して設定された優先度であり、優先度p_uは、ビット番号が大きい方に対して設定された優先度である。XOR回路71は、優先度p_l,p_uの値が一致していれば0、異なっていれば1を出力する。
【0130】
OR回路72は、遷移可否f_l,f_uを入力し、遷移可否f_l,f_uの何れか一方または両方が1ならば、遷移可否(fと表記している)として1を出力し、遷移可否f_l,f_uの両方が0ならば遷移可否fとして0を出力する。
【0131】
2:1セレクタ73は、遷移可否f_uと、XOR回路71が出力する0または1の値を入力する。そして、2:1セレクタ73は、XOR回路70の出力が1のときは、遷移可否f_uの値を選択して出力し、XOR回路70の出力が0のときは、XOR回路71が出力する値を選択して出力する。
【0132】
2:1セレクタ74は、前段の2つのセレクタが出力するビット番号に対応するアドレスaddr_l,addr_uを入力する。アドレスaddr_l,addr_uのうち、アドレスaddr_lは、ビット番号が小さい方に対応するアドレスであり、アドレスaddr_uは、ビット番号が大きい方に対応するアドレスである。2:1セレクタ74は、2:1セレクタ73の出力が0のときは、アドレスaddr_lを選択して出力し、2:1セレクタ73の出力が1のときは、アドレスaddr_uを選択して出力する。2:1セレクタ74が出力するアドレスaddr_lまたはアドレスaddr_uに、2:1セレクタ73が出力する1ビットの値を追加したもの(上位ビットに追加したもの)が、セレクタ43bが出力するアドレスaddrである。
【0133】
2:1セレクタ75は、優先度p_l,p_uを入力し、2:1セレクタ73の出力が0のときは、優先度p_lを選択して出力し、2:1セレクタ73の出力が1のときは、優先度p_uを選択して出力する。なお、2:1セレクタ75が出力する優先度はpと表記されている。
【0134】
図9に示した初段以外の他のセレクタについても、
図11に示したセレクタ43bと同じ回路構成により実現できる。初段のセレクタは、
図11に示した2:1セレクタ74がない回路構成となっている。
【0135】
第2の実施の形態の最適化装置60は、例えば、上記のような回路構成の遷移可否選択回路61aを用いて実現可能である。
(第3の実施の形態)
図12は、第3の実施の形態の最適化装置の例を示す図である。
図12において、
図1に示した最適化装置20、または、
図8に示した最適化装置60と同じ要素については同じ符号が付されている。
【0136】
第3の実施の形態の最適化装置80において、遷移制御部81は、最適化装置20,60の遷移制御部24,61と同様の機能を有する。さらに、遷移制御部81は、モード信号MODEに応じて、優先度情報(優先度{pi})に基づいて遷移候補となる状態遷移を選択(シーケンシャル選択)するか、乱数値に基づいてランダムに遷移候補となる状態遷移を選択するか切り替える機能を有する。
【0137】
例えば、遷移制御部81は、モード信号MODEが1の場合、シーケンシャル選択を行い、モード信号MODEが0の場合、遷移候補となる状態遷移を乱数値に基づいてランダムに選択する。
【0138】
モード信号MODEは、例えば、
図12に示すようなモード切替制御部82から入力される。なお、モード切替制御部82と温度制御部23は、同一の制御部(コントローラ)であってもよい。
【0139】
上記の切り替えは、遷移制御部81の遷移可否選択回路81aにて行われる。
図13は、第3の実施の形態の最適化装置における遷移可否選択回路の一例を示す図である。
図13において、
図6に示した遷移可否選択回路24cと同じ要素については同じ符号が付されている。なお、
図13では、優先度更新回路42については図示が省略されている。
【0140】
第3の実施の形態の最適化装置80における遷移可否選択回路81aは、乱数発生回路90を有する。乱数発生回路90は、乱数値を生成し、生成した乱数値を選択回路部91に供給する。例えば、乱数発生回路90は、選択回路部91において2進木構造で複数段、配置された複数のセレクタに対して、各段で異なる乱数値を生成して供給する。乱数発生回路90として、例えば、LFSR(Linear Feedback Shift Register)などを用いることができる。
【0141】
選択回路部91には、モード信号MODEと、乱数発生回路90が出力する乱数値が供給される。選択回路部91は、
図6の選択回路部41と同様に、2進木構造で複数段、配置された複数のセレクタ(セレクタ91a1,91a2,91b1,91b2,91cなど)を有するが、各セレクタには、乱数値と、モード信号MODEが供給される。
【0142】
図14は、選択回路部のセレクタの一例を示す図である。
図14では、
図13に示した2段目のセレクタ91b2の例が示されている。
図14において、
図7に示したセレクタ41b2と同じ要素については同じ符号が付されている。
【0143】
セレクタ91b2は、一方の入力端子にAND回路51の出力端子が接続されており、他方の入力端子に乱数値randが入力され、モード信号MODEに応じてAND回路51の出力値と乱数値randの一方を選択して出力する2:1セレクタ100を有する。乱数値randは、1ビットの値(0または1)である。
【0144】
図14の例では、2:1セレクタ100は、モード信号MODEが0の場合、乱数発生回路90から供給される乱数値randを選択して出力し、モード信号MODEが1の場合、AND回路51の出力値を選択して出力する。
【0145】
2:1セレクタ55は、XOR回路50が出力する値が0の場合、2:1セレクタ100の出力を選択して出力する。
このようなセレクタ91b2を用いることで、2つの状態遷移についての遷移可否f_l,f_uが同じ値の場合、モード信号MODEが、1のときシーケンシャル選択が行われ、0のとき遷移候補となる状態遷移がランダムに選択されることになる。
【0146】
図13に示した他のセレクタについても、
図14に示したセレクタ91b2とほぼ同じ回路構成により実現できる。ただ、初段のセレクタには、
図14に示した2:1セレクタ57が設けられておらず、OR回路53に優先度伝達信号pr_lは入力されない。また、同じ次段のセレクタに接続された2つのセレクタのうち、2進木構造上の左側に位置するセレクタや、右側に位置するセレクタであっても次段のセレクタの右隣にセレクタがないものについては、優先度伝達信号prを出力しない。また、最後段のセレクタ41cには、AND回路52,56、OR回路53が設けられていなくてもよい。
【0147】
なお、第2の実施の形態の最適化装置60の遷移可否選択回路61aに、上記の切り替え機能を搭載することもできる。
図15は、第3の実施の形態の最適化装置における遷移可否選択回路の他の例を示す図である。
図15に示す遷移可否選択回路81bは、第2の実施の形態の最適化装置60の遷移可否選択回路61aに、上記の切り替え機能を搭載したものである。
図15において、
図9に示した遷移可否選択回路61aや
図13に示した遷移可否選択回路81aと同じ要素については同じ符号が付されている。なお、
図15では、優先度更新回路44については図示が省略されている。
【0148】
選択回路部92には、モード信号MODEと、乱数発生回路90が出力する乱数値が供給される。選択回路部92は、
図9の選択回路部43と同様に、2進木構造で複数段、配置された複数のセレクタ(セレクタ92a,92b,92cなど)を有するが、各セレクタには、乱数値と、モード信号MODEが供給される。
【0149】
図16は、選択回路部のセレクタの一例を示す図である。
図16では、
図15に示した2段目のセレクタ92bの例が示されている。
図16において、
図11に示したセレクタ43bと同じ要素については同じ符号が付されている。
【0150】
セレクタ92bは、一方の入力端子にXOR回路71の出力端子が接続されており、他方の入力端子に乱数値randが入力され、モード信号MODEに応じてXOR回路71の出力値と乱数値randの一方を選択して出力する2:1セレクタ110を有する。乱数値randは、1ビットの値(0または1)である。
【0151】
図16の例では、2:1セレクタ110は、モード信号MODEが0の場合、乱数発生回路90から供給される乱数値randを選択して出力し、モード信号MODEが1の場合、XOR回路71が出力する値を選択して出力する。
【0152】
2:1セレクタ73は、XOR回路70が出力する値が0の場合、2:1セレクタ110の出力を選択して出力する。
このようなセレクタ92bを用いることで、2つの状態遷移についての遷移可否f_l,f_uが同じ値の場合、モード信号MODEが、1のときシーケンシャル選択が行われ、0のとき遷移候補となる状態遷移がランダムに選択されることになる。
【0153】
図15に示した初段以外の他のセレクタについても、
図16に示したセレクタ92bと同じ回路構成により実現できる。初段のセレクタは、
図16に示した2:1セレクタ74がない回路構成となる。
【0154】
第3の実施の形態の最適化装置80は、遷移候補となる状態遷移を、優先度情報に基づいて選択(シーケンシャル選択)するか、ランダムに選択するかの切り替えが可能となるため、計算対象の組合せ最適化問題に適した計算が選択できるようになる。
【0155】
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0156】
20 最適化装置
21 状態保持部
22 評価関数計算部
23 温度制御部
24 遷移制御部
24a 熱雑音生成回路
24b 比較器
24c 遷移可否選択回路