(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-27
(45)【発行日】2023-01-11
(54)【発明の名称】最適化装置および最適化装置の制御方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20221228BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2019090351
(22)【出願日】2019-05-13
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】小山 純平
(72)【発明者】
【氏名】▲高▼津 求
【審査官】小林 秀和
(56)【参考文献】
【文献】特開2018-005541(JP,A)
【文献】竹本 一矢,組合せ最適化問題を高速に解ぐ「デジタルアニーラ」とその応用,電子情報通信学会2019年総合大会講演論文集 エレクトロニクス2,2019年03月05日,40~41頁
【文献】三木 光範,連続最適化問題への温度並列シミュレーテッドアニーリングの応用,情報処理学会論文誌,日本,社団法人情報処理学会,2000年05月15日,第41巻 第5号,1607~1616頁
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
複数の状態変数のうちの何れか2つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、前記2つの状態変数の値とに基づき、前記2つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、前記複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、前記複数の状態変数の値を決定し、前記複数の重み値に基づく前記複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される複数の探索部と、
前記複数の探索部が決定した前記複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、前記複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する交換回数決定部と、
前記複数の探索部の各々に対する温度をそれぞれ設定するとともに、前記複数の探索部の間で前記交換回数だけ、設定された温度を交換する温度制御部と、
を有する最適化装置。
【請求項2】
前記交換回数決定部は、前記差異が大きいほど、前記交換回数を多くする、請求項1記載の最適化装置。
【請求項3】
前記交換回数決定部は、前記最低温度から、前記最も低いエネルギー値に対応する探索部に設定された温度までの設定対象の温度の個数を前記差異として取得する、請求項1または2記載の最適化装置。
【請求項4】
前記交換回数決定部は、前記個数に係数を乗じて得られる値を前記交換回数と決定する、請求項3記載の最適化装置。
【請求項5】
前記温度制御部は、前記複数の探索部のそれぞれによるエネルギー値の出力および前記交換回数での温度の交換が規定回数だけ行われると、出力したエネルギー値が低い探索部ほど低い温度を設定する処理を行う、請求項1乃至4の何れか1項に記載の最適化装置。
【請求項6】
前記温度制御部は、前記複数の探索部による基底状態探索の全期間のうちの第1の期間において前記処理を行い、前記第1の期間よりも後の第2の期間において前記処理を行わない、請求項5記載の最適化装置。
【請求項7】
複数の状態変数のうちの何れか2つの状態変数の間の接続の強さをそれぞれ示す複数の重み値に基づく前記複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される、最適化装置の複数の探索部が、前記複数の重み値と前記2つの状態変数の値とに基づき、前記2つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、前記複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、前記複数の状態変数の値を決定し、
前記最適化装置の交換回数決定部が、前記複数の探索部が決定した前記複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、前記複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定し、
前記最適化装置の温度制御部が、前記複数の探索部の各々に対する温度をそれぞれ設定するとともに、前記複数の探索部の間で前記交換回数だけ、設定された温度を交換する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は最適化装置および最適化装置の制御方法に関する。
【背景技術】
【0002】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置で行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の1つとして最適化というものがあり重要な分野となっている。例えばあることを行うのに必要な資源やコストを最小化したり、その効果を最大化する解を求める問題などであり、これらが非常に重要であるのは明らかであろう。
【0003】
最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍のなかで最小値をとる局所解と呼ばれる状態が複数存在することである。
【0004】
離散最適化問題を解く効率の良い一般解法は存在しないため、問題に固有な性質を利用した近似解法や、問題の性質にあまり頼らないメタヒューリステックと呼ばれる方法を用いる必要がある。
【0005】
以下に説明する内容は、後者のうちマルコフ連鎖モンテカルロ法を用いた解法に関するもので、特に交換モンテカルロ法、又はレプリカ交換法と呼ばれる広い意味での疑似焼き鈍し法に関するものである。
【0006】
疑似焼き鈍し法は、乱数を用いて確率的に状態(変数ベクトルの値)を変化させることで最適解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【0007】
疑似焼き鈍し法においては、状態遷移の受け入れ(許容)確率を、その遷移に伴うエネルギー変化と温度を用いて次のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
【0008】
【0009】
【0010】
【0011】
式(2)はメトロポリス法である。式(3)はギブス法である。式(2),(3)は何れか一方が用いられる。
ここで、Tは温度を表すパラメータであり、その初期値は問題に応じて十分大きくとり、十分ゆっくり下げていくことが必要となる。
【0012】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解(基底状態に相当する解)が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
【0013】
実際の疑似焼き鈍し法では、初期状態から始めて、温度を下げながら上記反復が繰り返され、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度が0にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布をもっており、必ずしも最適値や良い解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【0014】
上記の説明からある程度想像できると思われるが、疑似焼き鈍し法は汎用的で非常に魅力的ではあるが、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的な熱分布のエネルギー範囲が広くなることから良い解の占有確率が上がらない。逆に速く下げすぎると、局所解を脱出する前に温度が下がってしまい、悪い解に捕まったままになってしまうため、良い解が得られる確率が下がってしまう。
【0015】
レプリカ交換法は複数の温度を用いたモンテカルロ探索(以下、「確率的探索」という)を同時に行い、ある反復回数毎に、それぞれの状態のエネルギーを比較し、適切な確率で2つの温度に対する状態を交換するという操作を行う方法である。
【0016】
図21は、通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。最適化装置50は、通常の疑似焼き鈍し法を用いた最適化装置と異なり、複数のレプリカ(
図21では探索部51a1,51a2,…,51ai,…,51an)と、交換制御部52とを有する。交換制御部52は、探索部51a1~51anに温度情報(以下では逆温度β
i(Tの逆数)(1≦i≦n)とする)を与える。
【0017】
図21には、探索部51aiの例が示されている。他の探索部も同様の構成である。探索部51aiは、状態保持部60、エネルギー計算部61、遷移制御部62を有する。
状態保持部60は、評価関数に含まれる複数の状態変数の値を保持する。また、状態保持部60は、状態遷移の可否を示すフラグfと、そのフラグfが示す状態変数の番号(インデックス)Nに基づいて、複数の状態変数の値(上記変数ベクトルの値)である状態s
iを更新する。
【0018】
エネルギー計算部61は、状態変数の変化(状態遷移)に伴うエネルギー変化を計算する。例えば、評価関数が2つの状態変数間の結合で表されるイジングモデルで表され、しかも一度に1つの状態変数の遷移のみを許す場合、エネルギー計算部61は、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、番号Nと、フラグfとに基づいて、複数の状態変数のそれぞれの変化(状態遷移)に伴うエネルギー変化を計算する。エネルギー変化ΔEijは、j番目の状態変数の変化に伴うエネルギー変化を示す。なお、計算したい最適化問題に応じた結合係数の値は、予めメモリ又はレジスタなどに記憶されている。評価関数がイジングモデルでない場合、および一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。エネルギー計算部61は、例えば、積和演算回路などの論理回路を用いて実現できる。
【0019】
遷移制御部62は、通常の疑似焼き鈍し法と同様に、エネルギー変化ΔEijと交換制御部52により割り当てられた逆温度βiを用いて、j番目の状態変数の状態遷移の受け入れ確率を以下の式(4)により決定することで、確率的探索を行う。
【0020】
【0021】
なお、式(4)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。遷移制御部62は、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグfと、そのフラグfが示す状態遷移の番号を出力する。また、遷移制御部62は、エネルギー変化ΔEijに基づいて、エネルギーEiを更新して出力する。
【0022】
交換制御部52は、一定の反復回数毎に各探索部におけるエネルギーEを観測し、探索部51a1~51anのうちの2つにおけるエネルギーEと逆温度βを用い、以下の式(5)で表される交換確率に基づいて2つの探索部における各状態変数の値を交換する。状態変数の値の代りに、2つの探索部の各々に供給される逆温度を交換してもよい。
【0023】
【0024】
なお、式(5)では、βiを探索部51aiに与えられた逆温度、βjを図示しないj番目の探索部に与えられた逆温度、Eiを探索部51aiにおけるエネルギー、Ejをj番目の探索部におけるエネルギーとしている。また、式(5)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。
【0025】
このような交換を行ってもそれぞれの温度の状態の確率分布はその温度に対するボルツマン分布に収束する。そして、この分布に収束するのに必要とされる緩和時間は、交換を行わない時より短縮することができる。
【0026】
なお、交換が行われる2つの探索部は、交換確率が小さくなりすぎないように、供給される温度が近いもの(例えば、隣接温度が供給されるもの)が選択される。
最適化装置50において、多数回の反復処理を行う探索部51a1~51anを専用の回路で実現し、交換制御部52の機能をソフトウェアで実現する場合、ポインタ渡しにより、温度が近い2つの探索部の各状態変数の値(又は温度情報)を交換すればよい。この場合、交換毎に温度の低い順又は高い順に探索部51a1~51anを識別する情報を並べるソート処理などを行わなくてよい。
【0027】
例えば、固定温度のカノニカルアンサンブルにおける各レプリカでモンテカルロや分子動力学のアルゴリズムを同時に、独立して実行し、隣接温度のレプリカの状態を、ある確率で交換するレプリカ交換法の提案がある(例えば、非特許文献1参照)。
【0028】
また、第1の温度の下でシミュレーティド・アニーリング処理を行うことで得られた第1の状態と、第2の温度の下でシミュレーティド・アニーリング処理を行うことで得られた第2の状態とを確率的に交換する温度並列シミュレーティド・アニーリング用恒温槽装置の提案がある(例えば、特許文献1参照)。
【先行技術文献】
【非特許文献】
【0029】
【文献】Y.Sugita、Y.Okamoto, “Replica-exchange molecular dynamics method for protein folding”, Chemical Physics Letters 314 (1999), pp.141-151”
【特許文献】
【0030】
【発明の概要】
【発明が解決しようとする課題】
【0031】
最適化装置において、基底状態の探索に要する時間が問題となる。
1つの側面では、本発明は、基底状態の探索を高速化することが可能な最適化装置および最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0032】
1つの態様では、最適化装置が提供される。最適化装置は、複数の探索部と交換回数決定部と温度制御部とを有する。複数の探索部は、複数の状態変数のうちの何れか2つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、2つの状態変数の値とに基づき、2つの状態変数の複数の組合せに対してエネルギー値をそれぞれ決定し、複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、複数の状態変数の値を決定し、複数の重み値に基づく複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される。交換回数決定部は、複数の探索部が決定した複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する。温度制御部は、複数の探索部の各々に対する温度をそれぞれ設定するとともに、複数の探索部の間で交換回数だけ、設定された温度を交換する。
【0033】
また、1つの態様では、最適化装置の制御方法が提供される。
【発明の効果】
【0034】
1つの側面では、基底状態の探索を高速化することができる。
【図面の簡単な説明】
【0035】
【
図1】第1の実施の形態の最適化装置を示す図である。
【
図2】第2の実施の形態の最適化装置の回路構成例を示す図である。
【
図3】状態遷移判定回路の回路構成例を示す図である。
【
図5】交換回数調整部の回路構成例を示す図である。
【
図7】レプリカ交換の全体制御例を示すフローチャートである。
【
図9】温度と解のエネルギーとの関係の例を示す図である。
【
図12】第3の実施の形態の最適化装置の回路構成例を示す図である。
【
図13】温度エネルギー順ソートの第1の例を示す図である。
【
図14】温度エネルギー順ソートの第2の例を示す図である。
【
図15】レプリカ交換の全体制御例を示すフローチャートである。
【
図17】温度と解のエネルギーとの関係の例を示す図である。
【
図18】第4の実施の形態の最適化装置の回路構成例を示す図である。
【
図19】レプリカ交換の全体制御例を示すフローチャートである。
【
図21】通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。
【発明を実施するための形態】
【0036】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0037】
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置1は、複数の探索部(探索部1a1,1a2,1a3,1a4,…,1aN)および制御部10を有する。Nは2以上の整数であり、探索部の数に相当する。最適化装置1は、最適化問題に対して、レプリカ交換法による基底状態の探索を行う。最適化装置1は、例えば、FPGA(Field Programmable Gate Array)などの半導体集積回路を用いて実現される。
【0038】
探索部1a1~1aNは、複数の状態変数のうちの何れか2つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、2つの状態変数の値とに基づき、2つ状態変数の複数の組合せに対してエネルギー値をそれぞれ決定する。また、探索部1a1~1aNは、複数のエネルギー値のそれぞれに対し、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、複数の状態変数の値を決定する。探索部1a1~1aNは、複数の重み値に基づく複数の状態変数の間の接続状態が互いに等しく、温度が互いに異なるようにそれぞれ設定される。
【0039】
例えば、1つの探索部は、複数の状態変数のうちの何れか2つの状態変数の間の接続の強さをそれぞれ示す複数の重み値と、2つの状態変数の値とに基づき、2つ状態変数の複数の組合せに対して、複数の状態変数の値に対する、ある状態変数の値の変化に応じたエネルギー値の変化を求める。当該探索部は、複数のエネルギー値の変化それぞれに、温度に対応するノイズ値を加算して得られる複数の評価値と閾値との比較結果に基づき、何れの状態変数の値の変化を受け入れるかを決定することで、複数の状態変数の値を決定する。当該探索部は、例えば、エネルギー値の初期値に対して、エネルギー値の変化を積算することで、決定された複数の状態変数の値に対応するエネルギー値を求める。あるいは、当該探索部は、複数の状態変数の値を所定の評価関数に代入して、決定された複数の状態変数の値に対応するエネルギー値を求めてもよい。他の探索部も、当該探索部と同様の処理を行う。
【0040】
ここで、探索部1a1~1aNにより出力されるエネルギーをE1~ENと表す。また、探索部1a1~1aNに設定される温度をT1~TNと表す。N個の温度値は互いに異なる。例えば、温度値は、温度T1,T2,…,TNの逆数である逆温度β1,β2,…,βNでもよい。
【0041】
温度T1,T2,…,TNにおける最低温度tmp_minおよび最高温度tmp_maxは予め与えられる。設定される温度を、最低温度tmp_minから昇順に並べると、i番目の温度tmp[i](iは1以上の整数)は、例えば式(6)で表される。
【0042】
【0043】
ここで、denomは、例えば式(7)で表される。
【0044】
【0045】
探索部1a1~1aNは、並列に動作して、基底状態の探索を行う。探索部1a1~1aNに設定される温度は、制御部10によって制御される。
制御部10は、探索部1a1~1aNによる基底状態の探索を制御する。制御部10は、交換回数決定部11および温度制御部12を有する。
【0046】
交換回数決定部11は、探索部1a1~1aNが決定した複数のエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、探索部1a1~1aNに設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数を決定する。
【0047】
温度制御部12は、探索部1a1~1aNの各々に対する温度をそれぞれ設定するとともに、探索部1a1~1aNの間で、交換回数決定部11により決定された交換回数だけ、設定された温度を交換する。温度制御部12は、例えば、温度が隣り合う2つの探索部の各ペアにおいて、所定の交換周期(1つの状態変数の更新処理の一定回数到達又は一定時間経過後など)で式(5)の交換確率により、温度又は状態を交換する。ここで、「交換」の処理では、式(5)の交換確率に応じて温度又は状態が交換されるペアもあるし、式(5)の交換確率に応じて温度又は状態が交換されないペアもある。
【0048】
温度差が大きくなるほど交換確率は低下する。このため、例えば、温度制御部12は、各探索部を温度の昇順に並べたときの偶数番目(又は奇数番目)の探索部に着目して温度が隣接する探索部との間で温度の交換を行う。あるいは、1回の温度の交換は複数のサブ処理を含んでもよい。例えば、温度制御部12は、まずは各探索部を温度の昇順に並べたときの偶数番目(又は奇数番目)の探索部に着目して温度が隣接する探索部との間で温度を交換する第1のサブ処理を行う。次に、温度制御部12は、各探索部を温度の昇順に並べたときの奇数番目(又は偶数番目)の探索部に着目して温度が隣接する探索部との間で温度を交換する第2のサブ処理を行う。この場合、第1のサブ処理と第2のサブ処理とのセットが、1回分の温度の交換に相当する。ただし、ここで例示した交換の方法は一例であり、温度制御部12は、他の方法で温度の交換を行ってもよい。
【0049】
ここで、交換回数決定部11による交換回数の決定例を説明する。
例えば、交換周期による交換タイミングにおいて、探索部1a1~1aNに設定された温度T
1~T
Nについて、T
1<T
2<T
3<T
4<…<T
Nであるとする。また、当該交換タイミングにおいて、探索部1a4により出力されたエネルギー値は、探索部1a1~1aNが出力したエネルギー値の中で最低であるとする。
図1のグラフG1は、各温度が設定された各探索部により出力されたエネルギー値を示す。グラフG1の横軸は温度Tであり、縦軸はエネルギーEである。この場合、最も低いエネルギー値に対応する探索部1a4に設定された温度はT
4である。また、探索部1a1~1aNに設定された温度のうち最も低い温度はT
1である。
【0050】
したがって、交換回数決定部11は、温度T4と温度T1との差異に基づき、交換回数を決定する。例えば、交換回数決定部11は、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えてcntとしたときに、cntに調整係数α(0<α≦1)を乗じて整数値に丸めた値を交換回数とする。交換回数決定部11は、交換回数=max(cnt×α,1)の計算によって交換回数を求めてもよい。ここで、max関数は、引数のうちの最大値を取ることを示す。調整係数αは交換回数決定部11に予め与えられる。
【0051】
上記の例では、最低エネルギーを取る探索部は探索部1a4である。また、最低温度の探索部は探索部1a1である。探索部1a1~1aNを温度の昇順に並べると、探索部1a1,1a2,1a3,1a4,…,1aNである。探索部1a1,1a4に関する上記の例では、cnt=3である。一例として、α=1とすると、交換回数決定部11は、交換回数を3回と決定する。この場合、温度制御部12は、今回の交換タイミングでは、温度の交換を3回実行する。
【0052】
最適化装置1によれば、交換回数決定部11により、探索部1a1~1aNがそれぞれ出力したエネルギー値のうち、最も低いエネルギー値に対応する探索部に設定された温度と、複数の探索部に設定された温度のうち最も低い温度である最低温度との差異に基づき、交換回数が決定される。温度制御部12により、探索部1a1~1aNの各々に対する温度がそれぞれ設定されるとともに、探索部1a1~1aNの間で、決定された交換回数だけ、設定された温度が交換される。
【0053】
これにより、基底状態の探索を高速化することができる。
探索部1a1~1aNにおいて最低エネルギーに対応する探索部では、当該探索部により保持される状態の近傍に更に良い解(更にエネルギーの低い状態)が存在する可能性が高い。そこで、最適化装置1は、最低エネルギーに対応する探索部の温度と、最低温度との差異に基づいて交換回数を決定することで、最低エネルギーを取る探索部を、素早く低温側にシフトさせることが可能になる。すると、最低エネルギーに対応する探索部においてエネルギー変化が比較的小さい状態遷移での探索が促され(エネルギー変化が比較的大きい状態遷移が抑えられ)、より良い解への到達可能性が高まる。こうして、探索部1a1~1aNによる基底状態の探索の所要時間を短縮し、最低エネルギーへの到達を高速化できる。
【0054】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の最適化装置の回路構成例を示す図である。
【0055】
最適化装置2は、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のスピンビットのそれぞれの値の組合せ(状態)のうち、評価関数が最小値となるときの各スピンビットの値(基底状態)を探索する。
【0056】
イジング型の評価関数E(x)は、例えば、以下の式(8)で定義される。
【0057】
【0058】
右辺第1項は、イジングモデルに含まれる全スピンビットから選択可能な2つのスピンビットの全組合せについて、漏れと重複なく、2つのスピンビットの値(0又は1)と結合係数との積を積算したものである。イジングモデルに含まれる全スピンビット数をn個(nは2以上の整数)とする。一例では、n=1024である。また、i,jの各々を、1以上n以下の整数とする。xiは、i番目のスピンビットの値を表す変数(状態変数とも呼ばれる)である。xjは、j番目のスピンビットの値を表す変数である。Wijは、i番目とj番目のビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(すなわち、重み係数による係数行列は対称行列である場合が多い)。
【0059】
右辺第2項は、全スピンビットのそれぞれのバイアス係数とスピンビットの値との積の総和を求めたものである。biは、i番目のスピンビットのバイアス係数を示している。
また、変数xiの値が変化して1-xiとなると、変数xiの増加分は、δxi=(1-xi)-xi=1-2xiと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEiは、以下の式(9)で表される。
【0060】
【0061】
hiはローカルフィールド(局所場)と呼ばれ、式(10)で表される。
【0062】
【0063】
δxiに応じてローカルフィールドhiに符号(+1又は-1)を乗じたものがエネルギー変化ΔEiとなる。ある変数xjが変化したときのローカルフィールドhiの変化分δhi
(j)は式(11)で表される。
【0064】
【0065】
ある変数xjが変化したときのローカルフィールドhiを更新する処理は各変数に対して並列に行われる。
最適化装置2は、例えば、FPGAなどの半導体集積回路を用いて実現される。最適化装置2は、探索部10a1~10aN、全体制御部21、温度制御部22および交換回数調整部23を有する。
【0066】
探索部10a1~10aNは、第1の実施の形態の探索部1a1~1aNに対応する。交換回数調整部23は、第1の実施の形態の交換回数決定部11に対応する。温度制御部22は、第1の実施の形態の温度制御部12に対応する。
【0067】
探索部10a1~10aNには、互いに異なる温度T1~TNが設定される。温度T1~TNは、例えば、予め与えられる最低温度tmp_minおよび最高温度tmp_maxを用いた式(6)、(7)に基づいて定められる。探索部10a1~10aNの各々は、式(8)で表されるイジング型の評価関数に基づく基底状態探索を下記のような回路により実現する。以下では、探索部10a1を主に説明するが、探索部10a2~10aNも同様の回路構成となる。
【0068】
探索部10a1は、状態保持部11a、レジスタ12a1,12a2,…,12an、h計算部12b1,12b2,…,12bn、ΔE生成部12c1,12c2,…,12cn、加算器13a1,13a2,…,13an、状態遷移判定回路13b1,13b2,…,13bn、セレクタ部13c、オフセット制御部13dおよびE計算部14aを有する。
【0069】
図2では、h計算部12b1~12bnに対し、i番目のスピンビットに対応することが分かり易い様に「h
i」計算部のように添え字iを付して名称を表記している。また、
図2では、ΔE生成部12c1~12cnに対し、i番目のスピンビットに対応することが分かり易い様に「ΔE
i」計算部のように添え字iを付して名称を表記している。
【0070】
ある探索部においてスピンビット列に含まれる何れかのスピンビットを反転させるかの判定および反転させる場合に該当のスピンビットを反転させる処理が、当該探索部による基底状態探索(確率的探索と言うこともある)の1回分の処理に相当する。当該1回分の処理は繰り返し実行される。探索部10a1~10aNにより並列に実行される当該1回分の処理の繰り返し数をイタレーション数と言う。
【0071】
n個のスピンビットのうち、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1が1番目のスピンビットに関する演算を行う。また、レジスタ12a2、h計算部12b2、ΔE生成部12c2、加算器13a2および状態遷移判定回路13b2が2番目のスピンビットに関する演算を行う。同様に、「12a1」、「12b1」などの符号の末尾の数値iがi番目のスピンビットに対応する演算を行うことを示す。すなわち、1つの探索部は、レジスタ、h計算部、ΔE生成部、加算器および状態遷移判定回路のセット(1スピンビットに関する演算を行う演算処理回路の一単位であり、「ニューロン」と呼ばれることもある)を、n個有する。n個のセットが並列に、各セットに対応するスピンビットに関する演算を行う。
【0072】
以下では、主に、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1を例示して説明する。同名の構成であるレジスタ12a2~12an、h計算部12b2~12bn、ΔE生成部12c2~12cn、加算器13a2~13anおよび状態遷移判定回路13b2~13bnも同様の機能である。
【0073】
ここで、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1のセットに対応するスピンビットを自スピンビット、探索部10a1で演算されるそれ以外のスピンビットを他スピンビットと称する。各スピンビットは、indexと呼ばれる識別情報により識別される。例えば、i番目のスピンビットのindexは、iである。
【0074】
状態保持部11aは、探索部10a1における状態(ビットステート)を保持する。ビットステートは、複数の状態変数(状態変数x1,x2,…,xn)で表される。ビットステートは、探索部10a1におけるn個のスピンビットを含むスピンビット列である。図中、ビットステートをBS(Bit States)と略記することがある。
【0075】
レジスタ12a1は、自スピンビットと他スピンビットとの間の重み係数W1j(j=1~n)を記憶する記憶部である。ここで、スピンビット数nに対して、重み係数の総数はn2である。レジスタ12a1にはn個の重み係数が格納される。また、重み係数Wijの添え字iは、自スピンビットのindexを示し、重み係数Wijの添え字jは、自スピンビットを含む何れかのスピンビットのindexを示す。
【0076】
レジスタ12a1は、自スピンビットに対して、n個の重み係数W11,W12,…,W1nを記憶する。なお、Wii=W11=0である。レジスタ12a1は、セレクタ部13cにより供給されるindex=jに対応する重み係数W1jをh計算部12b1に出力する。
【0077】
h計算部12b1は、レジスタ12a1から供給される重み係数W1jを用いて、式(10),(11)に基づくローカルフィールドh1を計算する。例えば、h計算部12b1は、前回計算されたローカルフィールドh1を保持するレジスタを有し、index=jで示されるスピンビットの反転方向に応じたδh1
(j)を、h1に積算することで、当該レジスタに格納されるh1を更新する。index=jで示されるスピンビットの反転方向を示す信号は、セレクタ部13c又は状態保持部11aからh計算部12b1に供給されてもよい。h1の初期値は、問題に応じて、h計算部12b1のレジスタに予め設定される。また、b1の値も、問題に応じて、h計算部12b1のレジスタに予め設定される。h計算部12b1は、計算したローカルフィールドh1をΔE生成部12c1およびE計算部14aに出力する。
【0078】
ΔE生成部12c1は、ローカルフィールドh1を用いて、式(9)に基づき、自スピンビットの反転に応じたイジングモデルのエネルギー変化値ΔE1を生成する。ΔE生成部12c1は、例えば、状態保持部11aから供給される自スピンビットの現在の値から、自スピンビットの反転方向を判別してもよい(現在の値が0なら0から1が反転方向となり、現在の値が1なら1から0が反転方向となる)。ΔE生成部12c1は、生成したエネルギー変化値ΔE1を、加算器13a1に出力する。ここで、後段の加算器13a1での加算処理および状態遷移判定回路13b1での判定処理に応じて、ΔE生成部12c1は、エネルギー変化値ΔE1の符号を逆転したエネルギー変化値-ΔE1を、加算器13a1に出力してもよい。本例では、ΔE生成部12c1は、エネルギー変化値として、-ΔE1を加算器13a1に出力するものとする。
【0079】
加算器13a1は、ΔE生成部12c1から供給される-ΔE1とオフセット制御部13dから供給されるオフセット値Eoffとを加算する。オフセット値Eoffは、後述されるように、状態遷移を促すためのパラメータであり、オフセット制御部13dにより制御される。本例では、Eoff≧0である。Eoffの初期値は0である。Eoffは、後述のオフセット制御部13dにより漸増される。加算器13a1は、加算結果(-ΔE1+Eoff)を状態遷移判定回路13b1に出力する。
【0080】
状態遷移判定回路13b1は、加算器13a1から供給されるエネルギー変化値とオフセットEoffとの和(-ΔE1+Eoff)に応じて、自スピンビットの反転可否を示すフラグf1をセレクタ部13cに出力する。具体的には、状態遷移判定回路13b1は、-ΔE1+Eoffと温度に応じた熱ノイズとの比較に応じて、自スピンビットの反転可否を判定する。
【0081】
ここで、状態遷移判定回路13b1による判定について説明する。
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率p(ΔE,T)を前述の式(1)のように決める。式(1)においてTは、温度である。温度Tは、温度制御部22により状態遷移判定回路13b1に設定される。また、関数fとしては、式(2)(メトロポリス法)、又は、式(3)(ギブス法)が用いられる。
【0082】
例えば、許容確率p(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。
【0083】
ただし、次のような変形を行っても同じ機能を実現可能である。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数uに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをuとしたf-1(u)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよい。更に、温度パラメータTが正であることから、状態遷移判定回路13b1は、-ΔEがT・f-1(u)以上のとき(あるいは、ΔEが-(T・f-1(u))以下のとき)、flg=1を出力する回路でよい。
【0084】
状態遷移判定回路13b1は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を生成する。メトロポリス法が適用される場合、f-1(u)は、式(12)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(13)で与えられる。
【0085】
【0086】
【0087】
変換テーブルは、例えば、状態遷移判定回路13b1が有するレジスタに記憶される。状態遷移判定回路13b1は、温度パラメータTと、f-1(u)との積(T・f-1(u))を生成し、-ΔE1+Eoffと比較する。ここで、T・f-1(u)は、熱ノイズに相当する。状態遷移判定回路13b1は、(-ΔE1+Eoff)≧T・f-1(u)の場合にフラグf1=1(遷移可)をセレクタ部13cに出力する。状態遷移判定回路13b1は、(-ΔE1+Eoff)<T・f-1(u)の場合にフラグf1=0(遷移不可)をセレクタ部13cに出力する。
【0088】
状態遷移判定回路13b1は、(-ΔE1+Eoff)≧T・f-1(u)を変形して、温度に対応するノイズ値T・f-1(u)を(ΔE1-Eoff)に加算して得られる評価値と閾値(例えば0)との比較に応じて、遷移可否を示すフラグを出力してもよい。
【0089】
セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力された遷移可否を示すフラグを受け付ける。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがある場合には、遷移可を示す何れか1つのフラグを選択する。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがない場合には、1つの所定のフラグを選択する。
【0090】
セレクタ部13cは、遷移可否を示すフラグと、選択したフラグに対応するスピンビットを示すindex=jとを含む更新信号(update)を状態保持部11aに出力する。それとともに、セレクタ部13cは、選択した遷移可否を示すフラグをオフセット制御部13dに出力し、選択したフラグに対応するindex=jを、レジスタ12a1~12anの各々に出力する。
【0091】
オフセット制御部13dは、セレクタ部13cから出力される遷移可否を示すフラグに基づいて、加算器13a1~13anの各々に供給するオフセット値を制御する。具体的には、オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移可を示す場合、オフセット値を0にリセットする。オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移不可を示す場合、オフセット値に増分値ΔEoffを加算する。当該フラグが連続して遷移不可を示す場合、オフセット制御部13dは、ΔEoffを積算することで、EoffをΔEoffずつ増加させる。
【0092】
セレクタ部13cから出力されるフラグが遷移不可を示す場合、現在の状態が局所解に陥っていると考えられる。-ΔE1へのオフセット値の加算や加算するオフセット値の漸増により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【0093】
状態保持部11aは、セレクタ部13cから出力されるフラグとindexとに基づいて、状態保持部11aが有するレジスタにより保持されるビットステート(x1,x2,…,xn)を更新する。状態保持部11aは、現在のビットステートをE計算部14aに出力する。状態保持部11aは、探索部10a1における探索処理の完了時におけるビットステートを全体制御部21に出力する。
【0094】
E計算部14aは、h計算部12b1~12bnの各々から出力されるローカルフィールドh1~hnおよび状態保持部11aから出力されるビットステート(x1~xn)に基づいて、探索部10a1におけるイジングモデルの現在のエネルギー値E1を計算する。エネルギー値E1は、式(8)の評価関数で定義されるエネルギー値(単にエネルギーと言うこともある)である。E計算部14aは、ローカルフィールドhiとビットステートxiとの積和により探索部10a1におけるエネルギー値E1を計算する。E計算部14aは、探索部10a1における所定回数又は所定期間の探索処理が完了すると、計算したエネルギー値E1を、温度制御部22および交換回数調整部23に出力する。
【0095】
全体制御部21は、最適化装置2の全体の動作を制御する。全体制御部21は、温度の交換回数の初期値を示す交換回数指定信号、および、調整係数α(0<α≦1)の外部からの入力を受け付ける。調整係数αは、交換回数調整部23による交換回数調整に用いられるパラメータである。全体制御部21は、交換回数指定信号および調整係数αを温度制御部22に供給する。
【0096】
全体制御部21は、起動信号の入力を受け付けると、温度制御部22に起動信号を出力し、探索部10a1~10aNを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部21は、演算が終了すると、探索部10a1~10aNの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部21は、演算の終了を示す終了信号を外部に出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部21は、最適化装置2に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【0097】
温度制御部22は、探索部10a1~10aNの各々に供給する温度を制御する。温度制御部22は、温度を示す温度情報と、温度の設定信号(T set sig.)とを、探索部10a1~10aNの各々が有する状態遷移判定回路に供給する。
【0098】
また、温度制御部22は、探索部10a1~10aNにおける温度の交換(温度交換)を制御する。温度制御部22は、式(5)の交換確率に基づいて、温度が隣接する探索部のペア(2つの探索部の組)に関し、温度交換(すなわち、レプリカ交換)を行うか否かをペア毎に判定する。温度制御部22は、交換後の温度を、各探索部に供給する。交換タイミングでの温度の交換回数の初期値は、全体制御部21により供給される。また、交換タイミングでの温度の交換回数は、交換回数調整部23により更新される。
【0099】
例えば、温度制御部22は、温度の識別情報(温度インデックス又は温度番号と言う)と、温度とを対応付けた第1の対応情報を、温度制御部22が有するレジスタに保持する。例えば、温度インデックスは、温度の昇順に温度に対応付けられる(温度インデックスが大きいほど温度も高い)。更に、温度制御部22は、例えば昇順に配列された温度インデックスと探索部10a1~10aNの各々の識別番号とを対応付けた第2の対応情報を、温度制御部22が有するレジスタに保持する。この場合、第2の対応情報で隣接する温度インデックスに対応する探索部のペアは、設定された温度が隣接することになる。温度制御部22は、第1の対応情報および第2の対応情報に基づいて、探索部10a1~10aNに対する温度交換を制御し、交換に応じて、第2の対応情報を更新する。温度制御部22は、第1の対応情報および第2の対応情報に基づいて、各探索部に温度を供給する。
【0100】
ただし、温度制御部22は、探索部10a1~10aNの各々の識別番号と温度値とを対応付けた対応情報を保持し、当該対応情報を温度値でソートすることで、設定された温度が隣接する探索部のペアを特定することもできる。
【0101】
交換回数調整部23は、所定のレプリカ交換周期で、温度制御部22による温度交換回数を調整する。交換回数調整部23は、レプリカ交換周期に基づく交換タイミングにおいて探索部10a1~10aNから供給されるエネルギーEi(i=1~N)と温度制御部22から供給される探索部10a1~10aNの各々の温度とに基づいて、温度交換回数を決定する。具体的には、交換回数調整部23は、温度T1~TNのうち、最低エネルギーを取る探索部の温度と最低温度との差異と、調整係数αとに基づいて、温度交換回数を決定する。交換回数調整部23は、決定した交換回数を示す交換回数更新信号を温度制御部22に出力する。
【0102】
次に、状態遷移判定回路13b1~13bnの回路構成を説明する。以下では、状態遷移判定回路13b1を例示して説明するが、他の状態遷移判定回路も同様の回路構成である。
【0103】
図3は、状態遷移判定回路の回路構成例を示す図である。
状態遷移判定回路13b1は、乱数生成部111、ノイズ値生成部112、加算器113および比較器114を有する。
【0104】
乱数生成部111は、一様乱数uを生成し、ノイズ値生成部112に出力する。
ノイズ値生成部112は、一様乱数uと、温度制御部22により供給された温度T1を示す温度情報とを用いて、前述の変換テーブルにより、式(12)(又は、式(13))に基づくノイズ値(熱ノイズ)に対応する-T・f-1(u)の値を生成する。ノイズ値生成部112は、生成した-T・f-1(u)の値を加算器113に出力する。例えば、式(12)を用いる場合、ノイズ値生成部112は、-T・ln(u)を生成し、加算器113に出力する。
【0105】
加算器113は、加算器13a1により出力された(-ΔE1+Eoff)と、-T・ln(u)とを加算することで評価値を計算し、当該評価値を比較器114に出力する。
比較器114は、加算器13a1により出力された評価値を閾値(具体的には0)と比較する。比較器114は、評価値が0以上の場合((-ΔE1+Eoff)-T・ln(u)≧0の場合)、遷移可を示すフラグ(out=f1=1)を、セレクタ部13cに出力する。比較器114は、評価値が0未満の場合((-ΔE1+Eoff)-T・ln(u)<0の場合)、遷移不可を示すフラグ(out=f1=0)を、セレクタ部13cに出力する。なお、上記の判定は、(ΔE1-Eoff)+T・ln(u)≦0の判定式が真の場合に遷移可、当該判定式が偽の場合に遷移不可と判定することと同じである。すなわち、状態遷移判定回路13b1は、温度に対応するノイズ値T・ln(u)を(ΔE1-Eoff)に加算して得られる評価値と閾値(=0)との比較に応じて、遷移可否を示すフラグを出力してもよい。
【0106】
次に、セレクタ部13cの回路構成例を説明する。
図4は、セレクタ部の回路構成例を示す図である。
セレクタ部13cは、複数段にわたってツリー状に接続された複数の選択回路および乱数ビット生成部32a,32b,32c,…,32rを有する。乱数ビット生成部32a~32rは、ツリー状に接続された複数の選択回路の段毎に設けられる。乱数ビット生成部32a~32rの各々は、0又は1の値をとる1ビット乱数を生成し、各段の選択回路に供給する。1ビット乱数は、入力されたフラグのペアのうちの何れか一方を選択するために用いられる。
【0107】
初段の選択回路31a1,31a2,31a3,31a4,…,31apの各々には、状態遷移判定回路13b1~13bnの各々が出力する遷移可否を示すフラグの組が入力される。例えば、選択回路31a1には、1番目の状態遷移判定回路13b1が出力するフラグと、2番目の状態遷移判定回路13b2が出力するフラグとのペアが入力される。また、選択回路31a2には、3番目の状態遷移判定回路が出力するフラグと、4番目の状態遷移判定回路が出力するフラグとのペアが入力される。以降、同様にして、選択回路31apには、n-1番目の状態遷移判定回路が出力するフラグと、n番目の状態遷移判定回路13bnが出力するフラグとのペアが入力される。このように、隣り合う状態遷移判定回路が出力するフラグのペアが初段の選択回路に入力される。初段の選択回路31a1~31apの数は、n/2となる。以降、段を経る毎に選択回路の数は半分になる。
【0108】
選択回路31a1~31apの各々は、入力されたフラグのペアと、乱数ビット生成部32aが出力する1ビット乱数に基づいて、入力されたフラグのペアのうちの一方を選択する。選択回路31a1~31apの各々は、選択したフラグと選択したフラグに対応する1ビットの識別値とを含む状態信号を、2段目の選択回路31b1~31bqに出力する。例えば、選択回路31a1が出力する状態信号と、選択回路31a2が出力する状態信号とが選択回路31b1に入力される。同様に、選択回路31a1~31apの隣り合う選択回路が出力する状態信号のペアが、2段目の選択回路に入力される。
【0109】
選択回路31b1~31bqの各々は、入力された状態信号のペアと、乱数ビット生成部32bが出力する1ビット乱数に基づいて、入力された状態信号のうちの一方を選択する。選択回路31b1~31bqの各々は、選択した状態信号を、3段目の選択回路31c1,…に出力する。ここで、選択回路31b1~31bqは、選択した方の状態信号に含まれる状態信号について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。
【0110】
3段目以降の選択回路においても同様の処理が行われ、各段の選択回路で1ビットずつ識別値のビット幅が増えていき、最終段の選択回路31rから、セレクタ部13cの出力である状態信号が出力される。セレクタ部13cが出力する状態信号に含まれる識別値が、2進数で表されたindexに対応する。ただし、
図4で示す回路構成例では、探索部のindexを0~1023とする場合としている。選択回路31rが出力する識別値に1を加算した値が、
図2で示されるjに相当する。
【0111】
例えば、
図4では、選択回路31bqの回路構成例が示されている。2段目以降の他の選択回路も、選択回路31bqと同様の回路構成により実現される。
選択回路31bqの入力は、1つ目の状態信号(status_1)と、2つ目の状態信号(status_2)である。選択回路31b1の出力は、状態信号(status)である。選択回路31bqは、OR回路131、NAND回路132およびセレクタ133,134を有する。
【0112】
OR回路131には、状態信号(status_1)に含まれるフラグ(flag1)と、状態信号(status_2)に含まれるフラグ(flag2)とが入力される。例えば、状態信号(status_1)が前段の2つの選択回路のうちの上位側(indexの大きい側)の出力、状態信号(status_2)が前段の2つの選択回路のうちの下位側(indexの小さい側)の出力である。OR回路131は、flag1とflag2とのOR演算結果(flag)を出力する。
【0113】
NAND回路132には、flag1とflag2とが入力される。NAND回路132は、flag1とflag2とのNAND演算結果を、セレクタ133の選択信号入力端子に出力する。
【0114】
セレクタ133には、flag1と1ビット乱数(rand)とが入力される。セレクタ133は、NAND回路132から入力されるNAND演算結果に基づいて、flag1又はrandの何れかを選択し、出力する。例えば、セレクタ133は、NAND回路132のNAND演算結果が「1」の場合、flag1を選択し、NAND回路132のNAND演算結果が「0」の場合、randを選択する。
【0115】
セレクタ134には、状態信号(status_1)に含まれる識別値(index1)と、状態信号(status_2)に含まれる識別値(index2)とが入力される。セレクタ134の選択信号入力端子には、セレクタ133の選択結果が入力される。セレクタ134は、セレクタ133の選択結果に基づいて、index1又はindex2の何れかを選択し、出力する。例えば、セレクタ134は、セレクタ133の選択結果が「1」の場合、index1を選択し、セレクタ133の選択結果が「0」の場合、index2を選択する。
【0116】
OR回路131およびセレクタ133,134の出力の組が、選択回路31bqが出力する状態信号(status)となる。
なお、初段の選択回路の入力は識別値を含まない。このため、初段の選択回路は、識別値(図中ではindexと表記)として、選択した方に対応するビット値(下位側の場合に「0」、上位側の場合に「1」)を追加して出力する回路となる。
【0117】
このように、セレクタ部13cは、遷移可であるスピンビットから1つをトーナメント方式で選択する。トーナメントの各試合(すなわち、各選択回路での選択)では、勝った方(すなわち、選択された方)のエントリ番号(0又は1)をindex wordの上位ビットに付け加えていく。最終段の選択回路31rが出力するindexが選ばれたスピンビットを示す。例えば、1つの探索部におけるスピンビットの数が1024個の場合、最終段の選択回路31rが出力する状態信号は、遷移可否を示すフラグと、10ビットで表されるindexとを含む。
【0118】
ただし、indexの出力方法は、上記のようにセレクタ部13cで生成する方法以外の方法も考えられる。例えば、状態遷移判定回路13b1~13bnの各々からセレクタ部13cに各状態遷移判定回路に対応するindexを供給し、セレクタ部13cにより遷移可否を示すフラグとともに、当該フラグに対応するindexを選択してもよい。この場合、状態遷移判定回路13b1~13bnの各々は、自身に対応するindexを格納するindexレジスタを更に有し、indexレジスタからセレクタ部13cにindexを供給する。
【0119】
図5は、交換回数調整部の回路構成例を示す図である。
交換回数調整部23は、最低エネルギー検出部231および交換回数決定部232を有する。
【0120】
最低エネルギー検出部231は、レプリカ交換周期で発生する交換タイミングにおいて、探索部10a1~10aNの各々からエネルギーEiを取得する。最低エネルギー検出部231は、取得したエネルギーから最低エネルギーを検出し、当該最低エネルギーに対応する探索部の識別情報を交換回数決定部232に供給する。
【0121】
交換回数決定部232は、温度制御部22から探索部10a1~10aNの各々に設定された温度と、調整係数αとを取得する。また、交換回数決定部232は、最低エネルギー検出部231から最低エネルギーの探索部の識別情報を取得する。
【0122】
交換回数決定部232は、探索部10a1~10aNのうち、最低エネルギーの探索部に設定されている温度を特定する。また、交換回数決定部232は、探索部10a1~10aNに設定されている温度のうちの最低温度を特定する。交換回数決定部232は、最低エネルギーの探索部に設定されている温度と最低温度との差異が大きいほど、交換回数を多くする。
【0123】
具体的には、交換回数決定部232は、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えてcntとしたときに、cntに調整係数α(0<α≦1)を乗じて整数値に丸めた値を交換回数cとする。整数値に丸める方法としては、例えば、小数点第1位を四捨五入する、切捨てる、又は切上げるなどの方法が考えられる。交換回数決定部232は、交換回数c=max(cnt×α,1)の計算によって交換回数cを求めてもよい。交換回数決定部232は、決定した交換回数cを示す交換回数更新信号を温度制御部22に供給する。
【0124】
このように、交換回数決定部232は、最低温度から、最も低いエネルギー値に対応する探索部に設定された温度までの設定対象の温度の個数(cnt)を、温度の差異として取得し、当該差異に基づき、交換回数cを決定する。例えば、交換回数決定部232は、当該個数(cnt)に係数(α)を乗じて得られる値を交換回数と決定する。
【0125】
図6は、レプリカ交換回数の決定例を示す図である。
グラフG10は、交換タイミングにおいて、探索部10a1~10aNの各々に設定された温度Tと、探索部10a1~10aNの各々により出力されたエネルギーEとの関係を示す。グラフG10の横軸は温度Tであり、縦軸はエネルギーEである。
図6では、交換回数c=3の場合が例示されている。また、最低エネルギーの探索部に設定されている温度は、T
k+2である。温度T
k+1は、T
k+2よりも一段階低い温度である。T
kは、T
k+2よりも二段階低い温度である。T
k-1は、T
k+2よりも三段階低い温度である。一例では、交換回数c=3の場合、今回の交換タイミングにおいて、最低エネルギーを取る探索部は、最大で三段階、温度が下げられることが期待される。
【0126】
こうして、最適化装置2は、最低エネルギーを取る探索部の温度と最低温度との差異を基準としてレプリカ交換の交換回数を決定することで、最低エネルギーを取る探索部に設定される温度が比較的早く低温側にシフトする可能性を高められる。
【0127】
次に、最適化装置2の処理手順を説明する。
図7は、レプリカ交換の全体制御例を示すフローチャートである。
(S1)全体制御部21は、入力データとして初期温度と調整係数αとを外部から取得する。また、全体制御部21は、交換回数の初期値を示す交換回数指定信号を外部から取得する。全体制御部21は、初期温度を含む起動信号と、交換回数指定信号と調整係数αとを温度制御部22に出力する。
【0128】
(S2)温度制御部22は、全体制御部21からの起動信号を受けて、探索部10a1~10aNの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索の処理を実行させる。探索部10a1~10aNの各々による処理(探索部処理)の詳細は後述される。
【0129】
(S3)交換回数調整部23は、探索部10a1~10aNの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部10a1~10aNの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【0130】
(S4)交換回数調整部23は、探索部10a1~10aNの各々に設定された温度と、調整係数αとを温度制御部22から取得する。交換回数調整部23は、探索部10a1~10aNの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数cを決定する。例えば、交換回数調整部23は、
図5で例示した最低エネルギー検出部231の機能により、最低エネルギーおよび最低エネルギーを取る探索部を検出する。また、交換回数調整部23は、
図5で例示した交換回数決定部232の機能により、交換回数c=max(cnt×α,1)の計算により交換回数cを決定する。交換回数調整部23は、決定した交換回数cを示す交換回数更新信号を温度制御部22に出力する。温度制御部22は、交換回数のカウント数を0に初期化する。
【0131】
(S5)探索部10a1~10aNは、隣接探索部間のエネルギーを温度制御部22に伝達する。温度制御部22は、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【0132】
(S6)温度制御部22は、交換回数のカウント数をインクリメントし、ある探索部について温度が隣接する探索部と温度の交換を行うか否かを判定する。温度制御部22は、交換を行うか否かを、探索部のペア毎に、式(5)の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップS7に処理が進む。探索部のペアについて交換を行わない場合、ステップS8に処理が進む。
【0133】
(S7)温度制御部22は、ステップS6で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部22は、ステップS6で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。
【0134】
(S8)温度制御部22は、温度の交換回数のカウント数がcに到達したか否かを判定する。交換回数のカウント数がcに到達した場合、ステップS9に処理が進む。交換回数のカウント数がcに到達していない場合、ステップS6に処理が進む。
【0135】
(S9)全体制御部21は、探索部10a1~10aNからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部21は、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部21は、ステップS2に処理を進め、確率的探索の処理を継続する。
【0136】
例えば、全体制御部21は、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部21は、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【0137】
また、上記の例では、最適化装置2は、ステップS2の探索部処理が終了する毎に、交換回数cを決定するものとしたが、探索部処理を複数回繰り返した後に交換回数cを決定してもよい。また、最適化装置2は、全イタレーションのうちの前半で交換回数cを決定し、全イタレーションのうちの後半で、前半で決定された交換回数cを使用し、交換回数cの新たな決定を行わなくてもよい。
【0138】
ここで、ステップS7における1回分の交換処理(1度の交換タイミングで実行される交換処理)の例には、種々のパターンが考えられる。温度が離れる(温度差が大きい)と、式(5)に基づく交換確率が低下するため、温度制御部22は、温度が隣接する探索部のペアで交換を行うものとする。
【0139】
第1のパターンでは、1度の交換タイミングにおいて、温度の昇順又は降順に探索部を並べたときの偶数番目、又は奇数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部(着目する番号より1つ小さい方又は1つ大きい方)と交換を行う。
【0140】
第2のパターンでは、1度の交換タイミングにおいて、次の第1のサブ処理および第2のサブ処理を順に行う。第1のサブ処理では、温度の昇順又は降順に探索部を並べたときの偶数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部と交換を行う。第2のサブ処理では、温度の昇順又は降順に探索部を並べたときの奇数番目の探索部に着目して、当該探索部に温度が隣接する他の探索部と交換を行う。
【0141】
1回分の交換処理は、第1のパターンおよび第2のパターン以外のパターンでもよい。
例えば、1回分の交換処理を温度の昇順又は降順に探索部を並べたときに順に着目する探索部の番号の偶奇により(偶数・奇数)のように記述するとする。この場合、(偶数・奇数)-(偶数・奇数)-…の記述は、上記の第2のパターンを、各交換タイミングにおいて、繰り返し実行することを示す。
【0142】
第3のパターンでは、(奇数・偶数)-(奇数・偶数)-…と、各交換タイミングにおいて着目する番号の偶奇の順を第2のパターンとは逆順にする。
第4のパターンでは、(奇数・偶数)-(偶数・奇数)-(奇数・偶数)-…と、着目する番号の偶奇の順を、交換タイミング毎に入れ替える。
【0143】
第5のパターンでは、(奇数・偶数・奇数)-(偶数・奇数・偶数)-(奇数・偶数・奇数)-…と、1回分の交換処理でサブ処理を3回実行し、着目する偶奇の順序を、交換タイミング毎に入れ替える。
【0144】
上記の1回分の交換処理のパターンは一例であり、上記以外にも種々のパターンを用いることができる。例えば、1回分の交換処理に含まれるサブ処理の実行回数は4回以上でもよい。
【0145】
図8は、探索部処理例を示すフローチャートである。
探索部処理は、ステップS2に相当する。
(S10)温度制御部22は、探索部10a1~10aNの各々に温度を設定する。例えば、温度制御部22は、前述の温度インデックスと温度とを対応付けた第1の対応情報および温度インデックスと探索部の識別情報とを対応付けた第2の対応情報に基づいて、探索部10a1~10aNの各々に温度を設定する。あるいは、温度制御部22は、前述のように、探索部の識別情報と温度とを対応付けた対応情報に基づいて、探索部10a1~10aNの各々に温度を設定してもよい。なお、探索部10a1~10aNの各々に設定される温度の初期値は、問題などに応じて予め定められる。
【0146】
(S11)探索部10a1~10aNの各々は、スピンビット毎にローカルフィールドを計算する。例えば、探索部10a1に着目すると、h計算部12b1~12bnは、ローカルフィールドh1~hnを計算する。ローカルフィールドhは、式(10)に基づいて計算される。なお、式(10)によりローカルフィールドhが計算された後は、例えば、式(11)で示される差分δhをローカルフィールドhに加算することで、更新後のローカルフィールドh=h+δhを求めることができる。
【0147】
(S12)探索部10a1~10aNの各々は、計算したローカルフィールドhに基づいて、スピンビット毎にエネルギーの変化値ΔEを計算する。例えば、探索部10a1に着目すると、ΔE生成部12c1~12cnは、エネルギーの変化値ΔE1~ΔEnを計算する。ΔEは、式(9)に基づいて計算される。
【0148】
(S13)探索部10a1~10aNの各々は、エネルギーの変化値-ΔEにオフセット値Eoffを加算する。例えば、探索部10a1に着目すると、加算器13a1~13anは、-ΔE1~-ΔEnに対して、オフセット値Eoffを加算する。オフセット値Eoffは、前述のように、オフセット制御部13dにより制御される。例えば、オフセット制御部13dは、セレクタ部13cにより出力される遷移可否を示すフラグが遷移不可を示す場合に、0より大きいオフセット値Eoffを加算器13a1~13anに供給する。オフセット制御部13dは、当該フラグが遷移可を示す場合に、オフセット値Eoff=0を加算器13a1~13anに供給する。
【0149】
(S14)探索部10a1~10aNの各々は、反転候補のスピンビットのうち、反転させるスピンビットを選択する。例えば、探索部10a1に着目すると、状態遷移判定回路13b1~13bnの各々は、該当の状態遷移判定回路に対応するスピンビットの遷移可否を示すフラグをセレクタ部13cに出力する。セレクタ部13cは、入力されたフラグの中から1つを選択し、選択したフラグと、選択したフラグに対応するスピンビットを示すindexとを出力する。
【0150】
(S15)探索部10a1~10aNの各々は、選択されたスピン(スピンビット)を反転させる。例えば、探索部10a1に着目すると、状態保持部11aは、セレクタ部13cにより出力されたフラグと、indexとに基づいて、ビットステートに含まれるスピンビットのうち、indexで示されるスピンビットの値を更新する。
【0151】
(S16)探索部10a1~10aNの各々は、ステップS10の直後の確率的探索の開始時点から、規定のイタレーション回数に到達したか、又は、規定時間が経過したか否かを判定する。規定のイタレーション回数に到達した、又は、規定時間が経過した場合、ステップS17に処理が進む。規定のイタレーション回数に到達しておらず、かつ、規定時間も経過していない場合、ステップS11に処理が進む。
【0152】
(S17)探索部10a1~10aNの各々は、該当の探索部におけるエネルギー値(E1~EN)を計算し、温度制御部22および交換回数調整部23に出力する。そして、探索部処理が終了する。
【0153】
図9は、温度と解のエネルギーとの関係の例を示す図である。
図9(A)は、交換回数を2回と予め決定した場合における比較例のグラフG11を示す。
図9(B)は、交換回数調整部23により交換回数を3回と決定した場合のグラフG12を示す。グラフG11,G12は、何れも、探索部に設定された温度と、探索部から得られた解(ビットステート)に対応するエネルギーとの関係を示す。グラフG11,G12のそれぞれの横軸は温度であり、縦軸はエネルギーである。
【0154】
グラフG11,G12は、確率的探索(
図8の探索部処理)における規定のイタレーション回数を1000回とし、イタレーション回数が50000回に達したときの結果である。グラフG11,G12を比較すると、交換回数を2回と予め決定した場合よりも、交換回数調整部23により交換回数を3回と決定した場合の方が、低いエネルギーを取る探索部が多いことが分かる。
【0155】
このように、最適化装置2によれば、基底状態の探索を高速化することができる。
ここで、最適化装置2のハードウェア構成として、次の例も考えられる。
図10は、最適化装置の他の構成例を示す図である。
【0156】
最適化装置2aは、CPU101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、NIC(Network Interface Card)104、出力IF(Interface)105、入力IF106、媒体リーダ107、入出力部108および確率的探索部109を有する。最適化装置2aのこれらのハードウェアは最適化装置2aのバスに接続される。
【0157】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、最適化装置2aは複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」又は単に「プロセッサ」と言うことがある。CPU101は、例えば、全体制御部21および交換回数調整部23の機能をCPU101により実行されるソフトウェア(制御プログラム)の処理で実現することができる。また、温度制御部22の機能も、CPU101により実現されてもよい。
【0158】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、最適化装置2aは、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0159】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、最適化装置2aは、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0160】
NIC104は、ネットワーク40に接続され、ネットワーク40を介して他のコンピュータと通信を行うインタフェースである。NIC104は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC104は、無線リンクによりネットワーク40に接続されてもよい。
【0161】
出力IF105は、CPU101からの命令に従って、最適化装置2aに接続されたディスプレイ41に画像を出力する。ディスプレイ41としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0162】
入力IF106は、最適化装置2aに接続された入力デバイス42から入力信号を取得し、CPU101に出力する。入力デバイス42としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、最適化装置2aに、複数の種類の入力デバイスが接続されていてもよい。
【0163】
媒体リーダ107は、記録媒体43に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体43として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0164】
媒体リーダ107は、例えば、記録媒体43から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体43は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体43やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0165】
入出力部108は、確率的探索部109と接続され、CPU101から確率的探索部109へのデータ入力や確率的探索部109からRAM102やCPU101へのデータ出力を制御する。
【0166】
確率的探索部109は、レプリカ交換の方法により、組合せ最適化問題に対する演算をハードウェアにより行うアクセラレータである。確率的探索部109は、探索部10a1~10aNおよび温度制御部22を有し、前述の
図7,
図8の手順により、イジングモデルの基底状態を探索する確率的探索を行う。
【0167】
上記の最適化装置2aにより、最適化装置2と同様の機能を実現することができる。
図11は、最適化装置の機能例を示す図である。
例えば、CPU101は、RAM102に記憶されたプログラムを実行することで、交換回数調整部23aの機能を発揮する。交換回数調整部23aは、最低エネルギー検出部231aおよび交換回数決定部232aを有する。
【0168】
最低エネルギー検出部231aは、前述の最低エネルギー検出部231に相当する。交換回数決定部232aは、前述の交換回数決定部232に相当する。
交換回数調整部23aは、入出力部108を介して、確率的探索部109から各探索部に設定された温度、調整係数αおよび各探索部のビットステートに対応するエネルギーEiを取得する。また、交換回数調整部23aは、交換回数決定部232aの機能により決定された交換回数を示す交換回数更新信号を、入出力部108を介して、確率的探索部109に供給する。
【0169】
このように、CPU101によって交換回数調整部23aの機能を実現してもよい。最適化装置2aによれば、最適化装置2と同様に、基底状態の探索を高速化することができる。
【0170】
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0171】
第3の実施の形態では、総イタレーションに対する前半のレプリカ交換実行時に、エネルギーの低い状態であるほど、低い温度を割り当てるように制御する機能を提供する。
図12は、第3の実施の形態の最適化装置の回路構成例を示す図である。
【0172】
最適化装置3は、例えば、FPGAなどの半導体集積回路を用いて実現される。最適化装置3は、探索部10a1~10aN、全体制御部21a、温度制御部22aおよび温度エネルギー順ソート部24を有する。
【0173】
探索部10a1~10aNは、
図2で例示した探索部10a1~10aNと同様の回路構成であるため、説明を省略する。
全体制御部21aは、最適化装置3の全体の動作を制御する。全体制御部21aは、起動信号とともに、ソート期間規定イタレーション数の入力を受け付ける。ソート期間規定イタレーション数は、総イタレーションの数よりも小さい数である。全体制御部21aは、温度制御部22aに起動信号およびソート期間規定イタレーション数を出力し、探索部10a1~10aNを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部21aは、演算が終了すると、探索部10a1~10aNの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部21aは、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部21aは、最適化装置3に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【0174】
温度制御部22aは、探索部10a1~10aNの各々に供給する温度を制御する。温度制御部22aは、温度を示す温度情報と、温度の設定信号(T set sig.)とを、探索部10a1~10aNの各々が有する状態遷移判定回路に供給する。
【0175】
また、温度制御部22aは、探索部10a1~10aNにおける温度の交換(温度交換)を制御する。温度制御部22は、式(5)の交換確率に基づいて、温度が隣接する探索部のペア(2つの探索部の組)に関し、温度交換(すなわち、レプリカ交換)を行うか否かをペア毎に判定する。温度制御部22は、交換後の温度を、各探索部に供給する。
【0176】
更に、温度制御部22aは、総イタレーションのうち、初回からソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、温度エネルギー順ソート部24により決定された探索部毎の温度を、各探索部に設定する。
【0177】
温度エネルギー順ソート部24は、各探索部に設定されている温度と、ソート期間規定イタレーション数とを温度制御部22aから取得する。また、温度エネルギー順ソート部24は、探索部10a1~10aNからエネルギーEiを取得する。温度エネルギー順ソート部24は、総イタレーションのうち、最初のソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、エネルギーの低い順に低い温度を割り当てる。すなわち、温度エネルギー順ソート部24は、各探索部の温度とエネルギーとを入力として、温度をエネルギー順にソートし、各探索部に設定する温度を決定する。温度エネルギー順ソート部24は、各探索部に対して決定した温度を示す温度順情報を、温度制御部22aに出力する。
【0178】
図13は、温度エネルギー順ソートの第1の例を示す図である。
最適化装置3は、総イタレーションに対する前半のレプリカ交換実行時に、エネルギーの低い状態ほど低い温度が割り当てられるように、各探索部に設定する温度を決定する。なお、このように、エネルギーの低い状態ほど低い温度が割り当てられるように制御しているだけでは、詳細つり合い条件を満たさない可能性がある。そこで、最適化装置3は、総イタレーションに対する後半のレプリカ交換実行時には、温度エネルギー順ソート部24による各探索部の設定温度の決定を行わずに、通常のレプリカ交換のみを行うようにする。これにより、探索部の状態が、適切に基底状態に向かうようにすることができる。
【0179】
ここで、グラフG20は、あるタイミングにおける各探索部の温度と、各探索部のビットステートに対応するエネルギーとの関係を示す。グラフG20の横軸は温度Tであり、縦軸はエネルギーEである。「E_x」の表記は、小さい方から数えてx番目に小さいエネルギーを示す。「T_x」の表記は、低い方から数えてx番目に低い温度を示す。また、1<k<mとする。
【0180】
例えば、ある3つの探索部(第1~第3の探索部)を考える。第1の探索部におけるエネルギーがE_k、第2の探索部におけるエネルギーがE_1、第3の探索部におけるエネルギーがE_mであったとする。E_1は、各探索部におけるエネルギーのうち最低エネルギーである。この場合、温度エネルギー順ソート部24は、第2の探索部に温度T_1を割り当て、第1の探索部に温度T_kを割り当て、第3の探索部に温度T_mを割り当てると決定する。
【0181】
図14は、温度エネルギー順ソートの第2の例を示す図である。
図14の例では、探索部10a1,10a2,10a3,10a4,10a5に対する温度エネルギー順ソートを考える。探索部10a1~10a5の識別情報を「repid」と表す。探索部10a1はrepid=1である。探索部10a2はrepid=2である。探索部10a3はrepid=3である。探索部10a4はrepid=4である。探索部10a5はrepid=5である。
【0182】
グラフG21は、あるタイミング(温度エネルギー順ソート部24によるソート前)における各探索部の温度(横軸)と、各探索部のビットステートに応じたエネルギー(縦軸)との関係を示す。具体的には、探索部10a1のエネルギーE1=150である。探索部10a2のエネルギーE2=100である。探索部10a3のエネルギーE3=300である。探索部10a4のエネルギーE4=250である。探索部10a5のエネルギーE5=200である。また、探索部10a1,10a2,10a3,10a4,10a5の順に、設定されている温度が高くなっているとする。
【0183】
温度エネルギー順ソート部24は、探索部10a1~10a5をエネルギーの昇順にソートする。ソート後の探索部10a1~10a5の並びは、探索部10a2,10a1,10a5,10a4,10a3となる。そして、温度エネルギー順ソート部24は、探索部10a2,10a1,10a5,10a4,10a3の順に、温度が高くなるように、探索部10a1~10a5に設定する温度を決定する。
【0184】
グラフG22は、温度エネルギー順ソート部24による温度決定後の、各探索部の温度(横軸)と、各探索部のビットステートに応じたエネルギー(縦軸)との関係を示す。温度制御部22aは、温度エネルギー順ソート部24により決定された各探索部の温度を、各探索部に設定することで、エネルギーの低い探索部ほど低い温度を設定できる。
【0185】
次に、最適化装置3の処理手順を説明する。
図15は、レプリカ交換の全体制御例を示すフローチャートである。
(S20)全体制御部21aは、入力データとして初期温度とソート期間規定イタレーション数とを外部から取得する。全体制御部21aは、初期温度を含む起動信号と、ソート期間規定イタレーション数とを温度制御部22aに出力する。温度制御部22aは、イタレーション数のカウンタを0に設定する。
【0186】
(S21)温度制御部22aは、全体制御部21aからの起動信号を受けて、探索部10a1~10aNの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索の処理を実行させる。探索部10a1~10aNの各々による処理(探索部処理)は、
図8で説明済のため説明を省略する。
【0187】
(S22)探索部10a1~10aNは、隣接探索部間のエネルギーを温度制御部22aに伝達する。温度制御部22aは、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【0188】
(S23)温度制御部22aは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。温度制御部22aは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【0189】
(S24)温度制御部22aは、規定回数、探索部処理および交換制御の処理セットを実行したか否かを判定する。当該処理セットを規定回数実行した場合、ステップS25に処理が進む。当該処理セットを規定回数実行していない場合、ステップS21に処理が進む。
【0190】
(S25)温度エネルギー順ソート部24は、探索部におけるエネルギーをキーとして、探索部に設定する温度をソートする。温度エネルギー順ソート部24は、エネルギーの低い方から順に、低い温度が割り当てられるように、各探索部に対する温度を決定する。温度エネルギー順ソート部24は、各探索部に対して決定した温度を示す温度順情報を、温度制御部22aに出力する。温度制御部22aは、イタレーション数のカウンタをインクリメントする。
【0191】
(S26)温度制御部22aは、イタレーション数のカウンタの値がソート期間規定イタレーション数に到達したか否かを判定する。到達した場合、ステップS27に処理が進む。到達していない場合、ステップS21に処理が進む。なお、イタレーション数のカウンタを、温度エネルギー順ソート部24にもたせて、温度エネルギー順ソート部24により、ステップS26の判定を実行してもよい。
【0192】
(S27)温度制御部22aは、探索部10a1~10aNの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索(基底状態探索)の処理を実行させる。探索部10a1~10aNの各々による処理(探索部処理)は、
図8で説明済のため説明を省略する。
【0193】
(S28)探索部10a1~10aNは、隣接探索部間のエネルギーを温度制御部22aに伝達する。温度制御部22aは、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【0194】
(S29)温度制御部22aは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。温度制御部22aは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【0195】
(S30)全体制御部21aは、探索部10a1~10aNからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部21aは、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部21aは、ステップS27に処理を進め、確率的探索の処理を継続する。
【0196】
例えば、全体制御部21aは、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部21aは、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【0197】
図16は、交換制御例を示すフローチャートである。
交換制御はステップS23,S29に相当する。
(S40)温度制御部22aは、設定された温度が隣接する探索部間で温度の交換を実行するか否かを判定する。温度制御部22aは、交換を行うか否かを、探索部のペア毎に、式(5)の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップS41に処理が進む。探索部のペアについて交換を行わない場合、交換制御が終了する。
【0198】
(S41)温度制御部22aは、ステップS40で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部22aは、ステップS40で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。そして、交換制御が終了する。
【0199】
ここで、ステップS41における1回分の交換処理(1度の交換タイミングで実行される交換処理)の例として、第2の実施の形態で例示した第1~第5のパターンなどを用いることができる。ただし、温度制御部22aは、それ以外のパターンにより交換処理を実行してもよい。
【0200】
図17は、温度と解のエネルギーとの関係の例を示す図である。
図17(A)は、温度エネルギー順ソート部24によるソートを一切行わない(ソートなしの)場合における比較例のグラフG23を示す。
図17(B)は、温度エネルギー順ソート部24によるソートを行う(ソートありの)場合におけるグラフG24を示す。グラフG23,G24は、何れも、探索部に設定された温度と、探索部から得られた解(ビットステート)に対応するエネルギーとの関係を示す。グラフG23,G24のそれぞれの横軸は温度であり、縦軸はエネルギーである。
【0201】
グラフG23は、通常のレプリカ交換を行い、温度エネルギー順ソート部24によるソートを行わずに確率的探索のイタレーション回数が10000回に達したときの結果である。グラフG24は、
図15における規定回数を1000回(この場合、確率的探索(
図8の探索部処理)における規定のイタレーション回数は1000以下となる)とし、イタレーション回数が10000回に達したときの結果である。
【0202】
グラフG23,G24を比較すると、ソートなしの場合よりも、ソートありの場合の方が、低いエネルギーを取る探索部が多いことが分かる。
このように、最適化装置3では、総イタレーションに対する前半のレプリカ交換実行時において、エネルギーの低い状態であるほど低い温度を割り当てるように制御することで、基底状態の探索を高速化することができる。
【0203】
なお、最適化装置3のハードウェア構成として、
図10で例示した最適化装置2aと同様の構成も考えられる。例えば、温度エネルギー順ソート部24の機能を、CPUおよびRAMを有するコンピュータによって実現してもよい。
【0204】
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0205】
第4の実施の形態では、第2の実施の形態で説明した機能と、第3の実施の形態で説明した機能とを併用する例を説明する。
図18は、第4の実施の形態の最適化装置の回路構成例を示す図である。
【0206】
最適化装置4は、例えば、FPGAなどの半導体集積回路を用いて実現される。最適化装置4は、探索部10a1~10aN、全体制御部21b、温度制御部22b、交換回数調整部23および温度エネルギー順ソート部24を有する。
【0207】
探索部10a1~10aNは、
図2で例示した探索部10a1~10aNと同様の回路構成であるため、説明を省略する。
全体制御部21bは、最適化装置4の全体の動作を制御する。全体制御部21bは、前述の全体制御部21,21aの機能を併せもつ。
【0208】
全体制御部21bは、温度の交換回数の初期値を示す交換回数指定信号、および、調整係数α(0<α≦1)の外部からの入力を受け付ける。また、全体制御部21bは、起動信号とともに、ソート期間規定イタレーション数の入力を受け付ける。すると、全体制御部21bは、温度制御部22bに起動信号、ソート期間規定イタレーション数、交換回数指定信号および調整係数αを出力し、探索部10a1~10aNを起動させて、最適化問題に関する基底状態探索の演算を開始させる。
【0209】
全体制御部21bは、演算が終了すると、探索部10a1~10aNの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部21bは、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部21bは、最適化装置4に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【0210】
温度制御部22bは、探索部10a1~10aNの各々に供給する温度を制御する。温度制御部22bは、前述の温度制御部22,22aの機能を併せもつ。温度制御部22bは、温度を示す温度情報と、温度設定信号(T set sig.)とを、探索部10a1~10aNの各々が有する状態遷移判定回路に供給する。
【0211】
また、温度制御部22bは、探索部10a1~10aNにおける温度の交換(温度交換)を制御する。温度制御部22bは、式(5)の交換確率に基づいて、温度が隣接する探索部のペア(2つの探索部の組)に関し、温度交換(すなわち、レプリカ交換)を行うか否かをペア毎に判定する。温度制御部22bは、交換後の温度を、各探索部に供給する。交換タイミングでの温度の交換回数の初期値は、全体制御部21bにより供給される。また、交換タイミングでの温度の交換回数は、交換回数調整部23により更新される。
【0212】
更に、温度制御部22bは、総イタレーションのうち、初回からソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、温度エネルギー順ソート部24により決定された探索部毎の温度を、各探索部に設定する。
【0213】
交換回数調整部23は、所定のレプリカ交換周期で、温度制御部22bによる温度交換回数を調整する。交換回数調整部23は、最低エネルギー検出部231および交換回数決定部232を有する。
【0214】
最低エネルギー検出部231は、レプリカ交換周期に基づく交換タイミングにおいて探索部10a1~10aNから供給されるエネルギーのうちの最低エネルギーを検出する。
交換回数決定部232は、最低エネルギー検出部231により検出された最低エネルギーに対応する探索部の温度と、温度制御部22bから供給される探索部10a1~10aNの各々の温度と、調整係数αとに基づいて、温度の交換回数を決定する。交換回数決定部232は、決定した交換回数を示す交換回数更新信号を温度制御部22bに出力する。
【0215】
温度エネルギー順ソート部24は、各探索部に設定されている温度と、ソート期間規定イタレーション数とを温度制御部22bから取得する。また、温度エネルギー順ソート部24は、探索部10a1~10aNからエネルギーEi(i=1~N)を取得する。温度エネルギー順ソート部24は、総イタレーションのうち、最初のソート期間規定イタレーション数に達するまでは、規定回数のレプリカ交換が行われるたびに、エネルギーの低い順に低い温度を割り当てる。すなわち、温度エネルギー順ソート部24は、各探索部の温度とエネルギーとを入力として、温度をエネルギー順にソートし、各探索部に設定する温度を決定する。温度エネルギー順ソート部24は、各探索部に対して決定した温度を示す温度順情報を、温度制御部22bに出力する。
【0216】
次に、最適化装置4の処理手順を説明する。
図19は、レプリカ交換の全体制御例を示すフローチャートである。
(S50)全体制御部21bは、入力データとして初期温度と調整係数αとソート期間規定イタレーション数とを外部から取得する。また、全体制御部21bは、交換回数の初期値を示す交換回数指定信号を外部から取得する。全体制御部21bは、初期温度を含む起動信号、交換回数指定信号、調整係数αおよびソート期間規定イタレーション数を温度制御部22bに出力する。温度制御部22bは、イタレーション数のカウンタを0に設定する。
【0217】
(S51)温度制御部22bは、全体制御部21aからの起動信号を受けて、探索部10a1~10aNの各々に初期温度を示す温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索の処理を実行させる。探索部10a1~10aNの各々による処理(探索部処理)は、
図8で説明済のため説明を省略する。
【0218】
(S52)交換回数調整部23は、探索部10a1~10aNの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部10a1~10aNの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【0219】
(S53)交換回数調整部23は、探索部10a1~10aNの各々に設定された温度と、調整係数αとを温度制御部22bから取得する。交換回数調整部23は、探索部10a1~10aNの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数cを決定する。例えば、交換回数調整部23は、最低エネルギー検出部231の機能により、最低エネルギーおよび最低エネルギーを取る探索部を検出する。また、交換回数調整部23は、交換回数決定部232の機能により、交換回数c=max(cnt×α,1)の計算により交換回数cを決定する。cntは、前述のように、最低エネルギーを取る探索部が最低温度の探索部から温度順に数えて何番目であるかを表す。交換回数調整部23は、決定した交換回数cを示す交換回数更新信号を温度制御部22bに出力する。温度制御部22bは、交換回数のカウント数を0に初期化する。
【0220】
(S54)探索部10a1~10aNは、隣接探索部間のエネルギーを温度制御部22bに伝達する。温度制御部22bは、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【0221】
(S55)温度制御部22bは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。温度制御部22bは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【0222】
(S56)温度制御部22bは、規定回数、探索部処理および交換制御の処理セットを実行したか否かを判定する。当該処理セットを規定回数実行した場合、ステップS57に処理が進む。当該処理セットを規定回数実行していない場合、ステップS51に処理が進む。
【0223】
(S57)温度エネルギー順ソート部24は、探索部におけるエネルギーをキーとして、探索部に設定する温度をソートする。温度エネルギー順ソート部24は、エネルギーの低い方から順に、低い温度が割り当てられるように、各探索部に対する温度を決定する。温度エネルギー順ソート部24は、各探索部に対して決定した温度を示す温度順情報を、温度制御部22bに出力する。温度制御部22bは、イタレーション数のカウンタをインクリメントする。
【0224】
(S58)温度制御部22bは、イタレーション数のカウンタの値がソート期間規定イタレーション数に到達したか否かを判定する。到達した場合、ステップS59に処理が進む。到達していない場合、ステップS51に処理が進む。なお、イタレーション数のカウンタを、温度エネルギー順ソート部24にもたせて、温度エネルギー順ソート部24により、ステップS58の判定を実行してもよい。
【0225】
(S59)温度制御部22bは、探索部10a1~10aNの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索(基底状態探索)の処理を実行させる。
【0226】
(S60)交換回数調整部23は、探索部10a1~10aNの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部10a1~10aNの各々からエネルギー値を取得し、最低エネルギーを取る探索部を検出する。
【0227】
(S61)交換回数調整部23は、探索部10a1~10aNの各々に設定された温度と、調整係数αとを温度制御部22bから取得する。交換回数調整部23は、探索部10a1~10aNの各々に設定された温度のうちの最低温度と、調整係数αと、最低エネルギーを取る探索部に設定された温度とに基づいて、交換回数cを決定する。交換回数cの決定方法は、ステップS53と同様である。
【0228】
(S62)探索部10a1~10aNは、隣接探索部間のエネルギーを温度制御部22bに伝達する。温度制御部22bは、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部のペア毎に取得する。
【0229】
(S63)温度制御部22bは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。温度制御部22bは、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
【0230】
(S64)全体制御部21bは、探索部10a1~10aNからビットステートを取得し、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、全体制御部21bは、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、全体制御部21bは、ステップS59に処理を進め、確率的探索の処理を継続する。
【0231】
例えば、全体制御部21bは、レプリカ交換の全体制御処理が終了すると、最低温度の探索部におけるビットステートを最適化問題の解として出力する。あるいは、全体制御部21bは、レプリカ交換の全体制御の過程で得られた最低エネルギーのビットステートを最適化問題の解として出力してもよい。
【0232】
上記の例では、最適化装置4は、ステップS51又はステップS59の探索部処理が終了する毎に、交換回数cを決定するものとしたが、探索部処理を複数回繰り返した後に交換回数cを決定してもよい。また、最適化装置2は、全イタレーションのうちの前半で交換回数cを決定し、全イタレーションのうちの後半で、前半で決定された交換回数cを使用し、交換回数cの新たな決定を行わなくてもよい。例えば、ステップS60,S61をスキップする(ステップS60,S61を実行しない)ことも考えられる。
【0233】
図20は、交換制御例を示すフローチャートである。
交換制御はステップS55,S63に相当する。
(S70)温度制御部22bは、交換回数のカウント数をインクリメントし、設定された温度が隣接する探索部間で温度の交換を実行するか否かを判定する。温度制御部22bは、交換を行うか否かを、探索部のペア毎に、式(5)の交換確率に基づいて判定する。ある探索部のペアについて交換を行う場合、ステップS71に処理が進む。探索部のペアについて交換を行わない場合、ステップS72に処理が進む。
【0234】
(S71)温度制御部22bは、ステップS70で交換を行うと判定された探索部のペアについて、温度の交換を行う。温度制御部22bは、ステップS70で交換を行わないと判定された探索部のペアについては、温度の交換を行わない。
【0235】
(S72)温度制御部22bは、温度の交換回数のカウント数がcに到達したか否かを判定する。交換回数のカウント数がcに到達した場合、交換制御が終了する。交換回数のカウント数がcに到達していない場合、ステップS70に処理が進む。
【0236】
このように、温度制御部22bは、探索部10a1~10aNのそれぞれによるエネルギー値の出力、および、決定された交換回数での温度の交換が規定回数だけ行われると、出力したエネルギー値が低い探索部ほど低い温度を設定する処理(温度エネルギー順ソート)を行う。温度制御部22bは、探索部10a1~10aNによる基底状態探索の全期間のうちの第1の期間において温度エネルギー順ソートの処理を行い、第1の期間よりも後の第2の期間において温度エネルギー順ソートのソート処理を行わないようにする。
【0237】
最適化装置4は、総イタレーションに対する後半のレプリカ交換実行時には、温度エネルギー順ソート部24による各探索部の設定温度の決定を行わずに、通常のレプリカ交換のみを行うようにする。これにより、探索部の状態が、適切に基底状態に向かうようにして演算を高速化することができる。
【0238】
ここで、ステップS71における1回分の交換処理(1度の交換タイミングで実行される交換処理)の例として、第2の実施の形態で例示した第1~第5のパターンなどを用いることができる。ただし、温度制御部22bは、それ以外のパターンにより交換処理を実行してもよい。
【0239】
第4の実施の形態で例示したように、最適化装置4は第2,第3の実施の形態で説明した機能を併せもつ。すなわち、最適化装置4は、最低エネルギーを取る探索部の温度と最低温度との差異を基準としてレプリカ交換の交換回数を決定する。また、最適化装置4は、総イタレーションに対する前半のレプリカ交換実行時において、エネルギーの低い状態であるほど低い温度を割り当てるように制御する。これにより、基底状態の探索を一層高速化することができる。
【0240】
なお、最適化装置4のハードウェア構成として、
図10で例示した最適化装置2aと同様の構成も考えられる。例えば、交換回数調整部23および温度エネルギー順ソート部24の機能を、CPUおよびRAMを有するコンピュータによって実現してもよい。
【符号の説明】
【0241】
1 最適化装置
1a1,1a2,1a3,1a4,…,1aN 探索部
10 制御部
11 交換回数決定部
12 温度制御部
G1 グラフ