(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-22
(45)【発行日】2023-03-30
(54)【発明の名称】最適化装置および最適化装置の制御方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20230323BHJP
G06N 10/00 20220101ALI20230323BHJP
【FI】
G06N99/00 180
G06N10/00
(21)【出願番号】P 2019148763
(22)【出願日】2019-08-14
【審査請求日】2022-05-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】小山 純平
【審査官】渡辺 順哉
(56)【参考文献】
【文献】特許第6465231(JP,B1)
【文献】米国特許出願公開第2019/0278829(US,A1)
【文献】特開2018-206127(JP,A)
【文献】特開平6-019507(JP,A)
【文献】特開2020-086821(JP,A)
【文献】特開2019-133517(JP,A)
【文献】党 璋 ほか,レプリカ交換イジングモデルソルバにおけるレプリカトポロジーと温度割当方法に関する検討,電子情報通信学会技術研究報告,日本,一般社団法人 電子情報通信学会,2019年05月15日,Vol.119, No.25,pp.7-12
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 10/04
(57)【特許請求の範囲】
【請求項1】
複数の探索部と前記複数の探索部を制御する制御部を有する最適化装置において、
前記複数の探索部の各々は、
エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかを変化させた場合に生じる前記エネルギー値の変化値を計算するエネルギー計算部と、
設定された温度値と前記変化値と乱数値とに基づいて、前記エネルギー値の前記変化値と熱励起エネルギーとの相対関係によって状態遷移を受け入れるか否かを確率的に決定する遷移制御部とを有し、
前記制御部は、
前記複数の探索部における基底状態探索により得られた情報に基づいて、更新最大温度値を決定する温度調整部と、
決定された前記更新最大温度値に基づいて、前記複数の探索部を、少なくとも第1のグループと第2のグループを含む複数のグループに分割する選択部と、
前記複数のグループの各々に属する探索部に前記温度値を設定する温度制御部と、
前記エネルギー値の前記基底状態探索の繰り返し回数到達又は一定時間経過後に、同じグループに属する探索部間で前記温度値又は前記複数の状態変数の値を入れ替える交換制御部と、
を有し、
前記温度調整部は、前記第1のグループに含まれる前記探索部による前記基底状態探索の結果に基づいて前記更新最大温度値を決定し、
前記選択部は、決定された前記更新最大温度値に基づいて、前記第2のグループに含まれる前記探索部に設定される前記温度値を決定する
ことを特徴とする最適化装置。
【請求項2】
前記第1のグループは、前記複数の探索部に設定された前記温度値のうち最大である最大温度値が設定される探索部を含み、前記第2のグループは、前記更新最大温度値が設定される探索部を含む請求項1記載の最適化装置。
【請求項3】
前記複数の探索部のうち、前記第1のグループに含まれる前記探索部の数は、前記複数の探索部の数に、前記最大温度値の対数値を、前記最大温度値の対数値と前記更新最大温度値の対数値の和で除した数を乗じた数に基づいて求められ、
前記複数の探索部のうち、前記第2のグループに含まれる前記探索部の数は、前記複数の探索部の数に、前記更新最大温度値の対数値を、前記最大温度値の対数値と前記更新最大温度値の対数値の和で除した数を乗じた数に基づいて求められる、
請求項2記載の最適化装置。
【請求項4】
前記更新最大温度値は、前記複数の探索部における所定回数の前記基底状態探索の結果に基づいて得られる請求項2又は3記載の最適化装置。
【請求項5】
前記複数の探索部の各々における前記エネルギー値と前記温度値とに基づいて、前記複数の探索部間で前記温度値又は前記複数の状態変数の値を入れ替える交換確率を計算する計算部を更に有し、
前記選択部は、前記温度調整部により決定された前記温度値と前記計算部により計算された前記交換確率とに基づいて、前記複数の探索部の各々における前記温度値および前記複数の状態変数の値のうち、前記複数のグループの各々に属する各探索部に引き継ぐ前記温度値および前記複数の状態変数の値を選択する、
請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
前記選択部は、
前記温度調整部により決定された前記温度値に基づいて、同じグループに属する各探索部における前記温度値の自然対数値が等間隔になるように、前記グループに属する各探索部に設定する前記温度値を、グループ毎に計算し、
計算された前記温度値と前記複数の探索部の各々に設定済の前記温度値とに基づいて、前記複数の探索部の各々における前記複数の状態変数の値のうち、前記複数のグループの各々に属する各探索部に引き継ぐ前記複数の状態変数の値を選択する、
請求項1乃至4の何れか一項に記載の最適化装置。
【請求項7】
前記温度調整部は、前記複数の探索部の各々における前記温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した前記温度統計情報に基づいて前記複数のグループの各々に属する前記探索部に設定する、更新後の最大の前記温度値である前記更新最大温度値を決定する、請求項1乃至6の何れか一項に記載の最適化装置。
【請求項8】
複数の探索部と前記複数の探索部を制御する制御部を有する最適化装置の制御方法において、
前記複数の探索部の各々が有する状態保持部が、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記複数の探索部の各々が有するエネルギー計算部が、前記複数の状態変数の値の何れかを変化させた場合に生じる前記エネルギー値の変化値を計算し、
前記複数の探索部の各々が有する遷移制御部が、設定された温度値と前記変化値と乱数値とに基づいて、前記エネルギー値の前記変化値と熱励起エネルギーとの相対関係によって状態遷移を受け入れるか否かを確率的に決定し、
前記制御部が有する温度調整部が、前記複数の探索部における基底状態探索により得られた情報に基づいて、更新最大温度値を決定し、
前記制御部が有する選択部が、決定された前記更新最大温度値に基づいて、前記複数の探索部を、少なくとも第1のグループと第2のグループを含む複数のグループに分割し、
前記制御部が有する温度制御部が、前記複数のグループの各々に属する探索部に前記温度値を設定し、
前記制御部が有する交換制御部が、前記エネルギー値の前記基底状態探索の繰り返し回数到達又は一定時間経過後に、同じグループに属する探索部間で前記温度値又は前記複数の状態変数の値を入れ替え、
前記温度調整部が、前記第1のグループに含まれる前記探索部による前記基底状態探索の結果に基づいて前記更新最大温度値を決定し、
前記選択部が、決定された前記更新最大温度値に基づいて、前記第2のグループに含まれる前記探索部に設定される前記温度値を決定する
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は最適化装置および最適化装置の制御方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数(コスト関数や目的関数とも呼ばれる)を用いた最適化装置(イジングマシンやボルツマンマシンとも呼ばれる)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【0003】
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビットのそれぞれが、他のビットと自身のビットとの相互作用の大きさに対応する重み係数(結合係数とも呼ばれる)とに応じて0又は1を出力するニューロンとして機能する。最適化装置は、例えば疑似焼き鈍し法(シミュレーテッド・アニーリング)などの確率的探索法により、上記のようなエネルギー関数の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、最適解として求める。
【0004】
例えば、拡張アンサンブル法の一種である交換モンテカルロ法あるいはレプリカ交換法を用いて、最適化問題の解を探索する最適化装置(あるいは情報処理装置)の提案がある(例えば、特許文献1,2参照)。また、第1の温度でのシミュレーティド・アニーリング処理で得られた状態を第2の温度でのシミュレーティド・アニーリング処理で得られた状態と確率的に交換する温度並列シミュレーティド・アニーリング用恒温槽装置の提案もある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】特許第6465231号公報
【文献】特開2018-5541号公報
【文献】特開平9-231197号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
レプリカ交換法のように温度が設定された複数の探索部で確率的探索を行う場合、各探索部に設定される温度を適切に制御することが望まれる。
1つの側面では、本発明は、探索部に設定される温度を制御することが可能な最適化装置および最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、複数の探索部と複数の探索部を制御する制御部を有する最適化装置が提供される。複数の探索部の各々は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、複数の状態変数の値の何れかを変化させた場合に生じるエネルギー値の変化値を計算するエネルギー計算部と、設定された温度値と変化値と乱数値とに基づいて、エネルギー値の変化値と熱励起エネルギーとの相対関係によって状態遷移を受け入れるか否かを確率的に決定する遷移制御部とを有する。制御部は、複数の探索部における基底状態探索により得られた情報に基づいて、更新最大温度値を決定する温度調整部と、決定された更新最大温度値に基づいて、複数の探索部を、少なくとも第1のグループと第2のグループを含む複数のグループに分割する選択部と、複数のグループの各々に属する探索部に温度値を設定する温度制御部と、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、同じグループに属する探索部間で温度値又は複数の状態変数の値を入れ替える交換制御部と、を有する。温度調整部は、第1のグループに含まれる探索部による基底状態探索の結果に基づいて更新最大温度値を決定する。選択部は、決定された更新最大温度値に基づいて、第2のグループに含まれる探索部に設定される温度値を決定する。
【0008】
また、1つの態様では、最適化装置の制御方法が提供される。
【発明の効果】
【0009】
1つの側面では、探索部に設定される温度を制御することができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の最適化装置を示す図である。
【
図3】第2の実施の形態の最適化装置の回路構成例を示す図である。
【
図5】温度ヒストグラムおよび累積ヒストグラムの例を示す図である。
【
図6】最大温度の更新に応じたレプリカのグループ化の例を示す図である。
【
図7】レプリカグループ化部の回路構成例を示す図である。
【
図8】各グループに所属させるレプリカの選択例を示す図である。
【
図9】最適化装置の処理例を示すフローチャートである。
【
図10】レプリカ交換処理例を示すフローチャートである。
【
図11】第3の実施の形態のレプリカグループ化部の回路構成例を示す図である。
【
図12】最適化装置の処理例を示すフローチャートである。
【
図13】第4の実施の形態の最適化装置のハードウェア例を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置1は、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数の状態変数のそれぞれの値の組合せ(状態)のうち、評価関数が最小値となるときの各状態変数の値(基底状態)を探索する。最適化装置1は、イジングモデルに対応する探索部を複数有し、基底状態の探索にレプリカ交換法を用いる。ここで、評価関数は、コスト関数、目的関数又はエネルギー関数などと呼ばれることもある。また、状態変数は、ビットやスピンビットなどと呼ばれることもある。
【0013】
イジング型の評価関数E(x)は、例えば、以下の式(1)で定義される。
【0014】
【0015】
右辺第1項は、イジングモデルに含まれる全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0又は1)と結合係数との積を積算したものである。イジングモデルに含まれる全状態変数の数をn個(nは2以上の整数)とする。一例では、n=1024あるいはn=8192などである。また、i,jの各々を、1以上n以下の整数とする。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目とj番目の状態変数の相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い。すなわち、重み係数による係数行列は対角成分が0の対称行列である場合が多い。
【0016】
右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。biは、i番目の状態変数のバイアス係数を示している。
また、状態変数xiの値が変化して1-xiとなると、状態変数xiの増加分は、δxi=(1-xi)-xi=1-2xiと表せる。したがって、スピン反転(状態変数の値の変化)に伴うエネルギー変化ΔEiは、以下の式(2)で表される。
【0017】
【0018】
hiはローカルフィールド(局所場)と呼ばれ、式(3)で表される。
【0019】
【0020】
δxiに応じてローカルフィールドhiに符号(+1又は-1)を乗じたものがエネルギー変化ΔEiとなる。ある変数xjが変化したときのローカルフィールドhiの変化分δhi
(j)は式(4)で表される。
【0021】
【0022】
各探索部は、状態変数xiに対する局所場hiを保持し、他の状態変数xjの値が変化したときに変化分δhi
(j)を、hiに加算することで、ビット反転後の状態に対応するhiを得る。最適化装置1は、式(2)に基づいて、状態変数xiを変化候補としたときのエネルギー変化値ΔEiを、局所場hiから求めることができる。
【0023】
各探索部において、ある状態変数xjの値が変化したときのローカルフィールドhiを更新する処理は当該探索部における各状態変数に対して、例えば並列に行われる。
各探索部では、状態変数の値の変化を許容するか否かの決定において、メトロポリス法やギブス法が用いられる。すなわち、各探索部は、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移を確率的に許容する。例えば、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率(遷移受入確率)Aは、式(5)で表される。
【0024】
【0025】
ここで、βは温度値Tの逆数(逆温度値)であり、β=1/Tである。min演算子は、引数のうちの最小値を取ることを示す。例えば、メトロポリス法を用いる場合、各探索部は、一様乱数u(0<u≦1)に対して、エネルギー変化ΔEが式(6)を満たす場合に、該当の状態変数の値の変化を許容する。なお、以下の説明において「log」は自然対数をとることを示す。
【0026】
【0027】
各探索部は、変化が許容された状態変数の値を変化させるとともに状態変数間の結合係数により他の状態変数の局所場を更新することで、状態を遷移させる。最適化装置1は、各探索部に対して、ある温度範囲に属する温度を設定し、各温度で、式(6)に基づく状態遷移を発生させることで、設定された温度におけるボルツマン分布に従う状態を各探索部により生成する。そして、最適化装置1は、探索部間における温度又は状態を確率的に交換して、各探索部で状態遷移を発生させる処理を繰り返し行うことで、基底状態探索を行う。i番目の探索部とj番目の探索部と温度又は状態の交換の確率には、例えば式(7)で表される交換確率pが用いられる。
【0028】
【0029】
ここで、Eiは、i番目の探索部の局所解に対応するエネルギーである。Ejは、j番目の探索部の局所解に対応するエネルギーである。Tiは、i番目の探索部の温度である。Tjは、j番目の探索部の温度である。kは、ボルツマン定数である。
【0030】
最適化装置1は、複数の探索部(探索部1a1,1a2,…,1aN)および制御部20を有する。Nは2以上の整数であり、探索部の数に相当する。最適化装置1は、例えば、FPGA(Field Programmable Gate Array)などの半導体集積回路を用いて実現される。
【0031】
探索部1a1~1aNの各々は、状態保持部とエネルギー計算部と遷移制御部とを有する。例えば、探索部1a1は、状態保持部11とエネルギー計算部12と遷移制御部13とを有する。
【0032】
状態保持部11は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。ここで、
図1では、探索部1a1におけるエネルギー値をE
1、逆温度をβ
1で表し、探索部1a1における複数の状態変数の値をs
1で表している。他の探索部に関しても同様に、βやEが探索部の番号の添え字を付して表される。
【0033】
エネルギー計算部12は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の変化値(ΔE1j)を複数の状態遷移のそれぞれに対して計算する。jは、変化させる状態変数のインデックスを示す。探索部1a1において、ΔE1jは各状態変数に対して並列に計算される。
【0034】
遷移制御部13は、設定された温度値と変化値と乱数値とに基づいて、エネルギー値の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。例えば、遷移制御部13は、前述のように、式(6)に基づいて、状態遷移の可否を判定し、状態遷移の可否を示すフラグfと、そのフラグfが示す状態遷移の番号を出力する。
図1では、フラグfが示す状態遷移の番号をindexで表している。
【0035】
探索部1a1~1aNは、並列に動作して、上記の基底状態探索を行う。
制御部20は、探索部1a1~1aNを制御する。制御部20は、温度調整部21、選択部22、温度制御部23および交換制御部24を有する。
【0036】
温度調整部21は、探索部1a1~1aNにおける基底状態探索により得られた情報に基づいて、温度値を決定する。温度調整部21は、次のようにして当該温度値(新温度値)を決定する。新温度値は、後述されるように、探索部1a1~1aNを複数のグループに分割するために用いられる。新温度値は、あるグループに属する探索部に設定される、当該グループにおける更新後の最大温度(更新最大温度値)に相当する。
【0037】
例えば、温度調整部21は、探索部1a1~1aNの各々における温度値の遷移に関する統計情報である温度統計情報を取得し、取得した温度統計情報に基づいて新温度値を決定する。より具体的には、温度調整部21は、何れかの探索部でエネルギー値の最小値が更新された場合に、当該エネルギー値の最小値の前回の更新から今回の更新までに該当の探索部に設定された温度のうちの最高の温度値を、温度統計情報として取得する。そして、温度調整部21は、取得した温度値の出現頻度を温度値毎に計数したヒストグラムにおいて、出現頻度が最大である温度値を新温度値とする。
【0038】
あるいは、温度調整部21は、探索部1a1~1aNの各々から基底状態探索により得られた複数の局所解を取得し、エネルギー値の大きい方から小さい方への局所解間の状態遷移を辿ったときに発生するエネルギー増分に基づいて新温度値を決定してもよい。より具体的には、温度調整部21は、当該エネルギー増分の最大値での状態遷移が所定確率で発生するように、新温度値を決定してもよい。
【0039】
選択部22は、温度調整部21により決定された温度値に基づいて、複数の探索部(探索部1a1~1aN)を複数のグループに分割する。例えば、選択部22は、最小温度値から当初の最大温度値までの第1の温度範囲に属する温度値が設定される第1のグループと、当該最小温度値から、決定された新温度値(更新最大温度値)までの第2の温度範囲に属する温度値が設定される第2のグループに、探索部1a1~1aNを分割する。選択部22は、第1のグループに属する各探索部に設定する温度値と、第2のグループに属する各探索部に設定する温度値とを決定する。
【0040】
なお、温度調整部21は新温度値を複数決定してもよく、選択部22は、複数の新温度値に基づいて、探索部1a1~1aNを、第1のグループを含む3以上のグループに分割してもよい。
【0041】
温度制御部23は、複数のグループの各々に属する探索部に温度値を設定する。例えば、温度制御部23は、選択部22により各グループの探索部に対して決定された温度値の情報を取得して、探索部1a1~1aNの各々に当該温度値を設定する。
【0042】
交換制御部24は、エネルギー値の基底状態探索部の繰り返し回数到達又は一定時間経過後に、同じグループに属する探索部間で温度値又は複数の状態変数の値を入れ替える。交換制御部24は、探索部間の温度値又は状態の入れ替えを行うか否かを確率的に決定する。前述のように、交換制御部24は、当該入れ替えを行うか否かの決定に、式(7)の交換確率pを用いる。交換制御部24は、例えば、同じグループに属する探索部のうち、設定された温度値が隣接する探索部のペアで、温度値又は状態を確率的に入れ替える。温度差が大きいほど交換確率は小さくなるためである。
【0043】
そして、温度調整部21は、第1のグループに含まれる探索部による基底状態探索の結果に基づいて更新最大温度値を決定する。
選択部22は、決定された更新最大温度値に基づいて、第2のグループに含まれる探索部に設定される温度値を決定する。
【0044】
図2は、探索部のグループ化の例を示す図である。
探索部1a1~1aNは、最適化演算の開始当初、1つのグループG1に属する。グループG1に属する探索部1a1~1aNの各々には、最小温度値T
minから最大温度値T
maxまでの温度範囲に属する温度値が設定される。T
minおよびT
maxは、最適化装置1に予め与えられる。例えば、当初の段階では、温度制御部23は、式(8)により決定される温度値を、探索部1a1~1aNの各々に設定する。温度制御部23が当該温度値を決定してもよい。
【0045】
【0046】
T[i]は、i番目の探索部に設定される温度値を示す。denomは、例えば、式(9)で表される。
【0047】
【0048】
最適化装置1は、グループG1に属する探索部1a1~1aNを用いて、レプリカ交換法による基底状態探索を行う。温度調整部21は、例えば、最小温度の探索部における状態が、状態遷移を規定回数行っても変化しない場合、あるいは、最小温度の探索部における状態が、規定期間の間変化しない場合、基底状態探索により得られた情報に基づいて、前述の方法により、新温度値を計算する。例えば、温度調整部21は、探索部1a1~1aNのうち、探索部1ap(1<p<N-1)に設定された温度値T[p]を、新温度値Tmax_newに決定したとする(Tmax_new=T[p])。
【0049】
この場合、選択部22は、グループG1を、グループG2,G3に分割する。選択部22は、グループG2,G3の各々に属する探索部の数を、元の最大温度値Tmaxおよび新温度値Tmax_newに基づいて決定する。一例では、選択部22は、式(10)によりグループG3に属する探索部の数NTmaxを決定し、式(11)によりグループG2に属する探索部の数NTmax_newを決定する。
【0050】
【0051】
【0052】
ただし、選択部22は、NTmax_new≧NTmaxとなるようにNTmax_newを決めてもよい。また、選択部22は、TmaxおよびTmax_newをそのまま式(10)、(11)に代入するのではなく、TmaxおよびTmax_newの各々に応じた値を式(10)、(11)に代入してもよい。例えば、選択部22は、TmaxおよびTmax_newの各々の重みに応じた定数を、TmaxおよびTmax_newの各々に乗じた値を、式(10)、(11)に代入して探索部の数を求めてもよい。更に、選択部22は、NTmax+NTmax_new<Nとなるように、NTmax,NTmax_newを決定してもよい。
【0053】
例えば、選択部22は、NTmax_new=q、NTmax=N-qと決定する(1<q<N-1)。この場合、選択部22は、探索部1a1~1aqをグループG2に所属させ、探索部1a(q+1)~1aNをグループG3に所属させる。
【0054】
そして、選択部22は、例えば、最小温度値Tminから新たな最大温度値Tmax_new=T[p]までの温度範囲から、探索部1a1~1aqの各々に設定する温度値を決定する。また、選択部22は、最小温度値Tminから元の最大温度値Tmaxまでの温度範囲から、探索部1a(q+1)~1aNに設定する温度値を決定する。
【0055】
例えば、選択部22は、各グループの探索部に設定する温度値を、グループG1の探索部1a1~1aNに設定されていた温度値の中から決定してもよい。その場合、選択部22は、決定した温度値に対応する状態も該当の探索部から取得し、該当の温度値が次に設定される探索部に、当該温度値とともに該当の状態(局所場も含む)を設定する。
【0056】
選択部22は、次の探索に引き継ぐ温度値および状態を選択する際に、温度値が隣接する探索部のペアに関する温度値又は状態の交換確率を用いてもよい。例えば、選択部22は、交換確率が低い探索部のペアにおける各状態を、優先的に引き継ぎの対象としてもよい。具体的には、選択部22は、グループG2を作成する際に、探索部1a1~1apに属するp個の探索部のうち、交換確率が最大となる探索部のペアのうちの一方を1つずつ順に引き継ぎ対象から除外する処理を、探索部の数がq個になるまで行うことが考えられる。同様に、選択部22は、グループG3を作成する際に、探索部1a1~1aNに属するN個の探索部のうち、交換確率が最大となる探索部のペアのうちの一方を1つずつ順に引き継ぎ対象から除外する処理を、探索部の数がN-q個になるまで行うことが考えられる。交換確率が比較的高い探索部のペアにおける両状態は、エネルギー値が近似する傾向にある。このため、交換確率が比較的高いペアの一方の状態を間引いて次の探索に引き継ぐ状態、または次の探索に引き継ぐ状態および温度値を選択することで、グループ内の探索部で比較的広いエネルギー幅に対応する状態の探索を行えるようになり、基底状態探索を効率的に行える。
【0057】
あるいは、選択部22は、あるグループにおける最小温度値から最大温度値までの温度値が対数軸(自然対数軸)上で等間隔になるように、当該グループに属する各探索部に設定する温度値を決定してもよい。すなわち、選択部22は、式(8)、(9)を用いて、各グループの探索部に設定する新規温度を計算してもよい。その場合、選択部22は、次の探索に引き継ぐ状態を、グループG1において、決定した温度値に最も近い温度値が設定された探索部の状態とすることが考えられる。
【0058】
温度制御部23は、グループG2の探索部1a1~1aqの各々に設定する温度値および状態(当該状態に対応する局所場も含む)を選択部22から取得し、探索部1a1~1aqに設定する。また、温度制御部23は、グループG3の探索部1a(q+1)~1aNの各々に設定する温度値および状態(当該状態に対応する局所場も含む)を選択部22から取得し、探索部1a(q+1)~1aNに設定する。各探索部では式(1)に基づいて、例えば、複数の状態変数と局所場との積和により、設定された状態に対するエネルギー値を求めることができる。
【0059】
こうして、グループG2,G3という2つの系で独立してレプリカ交換法による基底状態探索が継続される。温度調整部21は、グループG3における基底状態探索により得られた情報に基づいて、グループG2に設定される新温度値Tmax_newを再計算する。すると、選択部22は、更新後の新温度値Tmax_newおよび最大温度値Tmaxに基づいて、グループG2,G3の各々に属する探索部の数を更新し、グループG2,G3の各々の探索部に設定する温度値を更新する。
【0060】
このように、最適化装置1は、探索部1a1~1aNを複数のグループに分割し、複数のグループの各々でレプリカ交換法による基底状態探索を行う。
ところで、レプリカ交換法は、複数のレプリカ(探索部)において各々異なる温度で基底状態探索を行い、ある周期で、エネルギーと温度から決定される交換確率に従って、例えば隣接する系の温度、又は状態(複数の状態変数の値)を交換する方法である。レプリカ交換法によれば、温度が低下したときに局所解に陥っても、レプリカ交換により一度高い温度まで上がって再び大域解を探索でき、複雑な温度スケジューリングを考えなくても、高速に解を求められる。
【0061】
しかし、各レプリカに設定する温度を適切に決める必要があり、温度の最大値が高過ぎても低過ぎても解精度(すなわち、得られた解が最適解である可能性)が低下したり、探索に時間がかかったりすることがある。適切な温度範囲は、問題によって異なり、問題を実際に解いてみなければ分からないという問題もある。また、基底状態探索を行う全期間の初期の所定期間における探索の実績から温度範囲を決定し、その後の基底状態探索を、決定した温度で行うことも考えられるが、当該所定期間で決めた温度範囲が必ずしも適切とは限らない。特に、最大温度が比較的低い温度に決定された場合、最低エネルギーの状態に到達できない可能性が高まる。
【0062】
そこで、最適化装置1は、上記のように、複数の探索部を複数のグループに分割し、複数のグループの各々でレプリカ交換法による基底状態探索を行うことで、複数の温度範囲を並行に利用して探索を行える。このため、あるグループにおいて、対象の問題に適した温度範囲が設定される可能性を高められ、解精度を向上することができる。また、解に到達するまでの時間を短縮できる。こうして、求解性能を向上することができる。
【0063】
特に、最適化装置1は、例えば、グループG3における元の温度範囲での基底状態探索により、グループG2における新温度値Tmax_newを更新可能である。このため、仮に、前回決定したTmax_newの値が適切でなかったとしても、適切なTmax_newの値に補正することができる。これにより、グループG2において、対象の問題に適した温度範囲が設定される可能性を高められ、解精度を向上することができる。また、解に到達するまでの時間を短縮できる。こうして、求解性能を向上することができる。
【0064】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図3は、第2の実施の形態の最適化装置の回路構成例を示す図である。
【0065】
最適化装置2は、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のスピンビットのそれぞれの値の組合せ(状態)のうち、評価関数が最小値となるときの各スピンビットの値(基底状態)を探索する。最適化装置2は、例えば、FPGAなどの半導体集積回路を用いて実現される。
【0066】
最適化装置2は、探索部10a1~10aN、温度調整部31、レプリカグループ化部32、温度制御部33および全体制御部34を有する。
探索部10a1~10aNは、第1の実施の形態の探索部1a1~1aNに対応する。温度調整部31、レプリカグループ化部32および温度制御部33は、それぞれ第1の実施の形態の温度調整部21、選択部22および温度制御部23に対応する。なお、温度制御部33は、交換制御部24の機能を含むため、
図3では交換制御部の図示を省略している。
【0067】
1つの探索部は、1つのレプリカに相当する。探索部10a1~10aNには、互いに異なる温度T1~TNが設定される。当初の温度T1~TNは、例えば、予め与えられる最低温度Tminおよび最高温度Tmaxを用いた式(8)、(9)に基づいて定められる。探索部10a1~10aNの各々は、式(1)で表されるイジング型の評価関数に基づく基底状態探索を下記のような回路により実現する。以下では、探索部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】
状態保持部11aは、第1の実施の形態の状態保持部11に対応する。h計算部12b1~12bnおよびΔE生成部12c1~12cnは、第1の実施の形態のエネルギー計算部12に対応する。加算器13a1~13an、状態遷移判定回路13b1~13bn、セレクタ部13cおよびオフセット制御部13dは、第1の実施の形態の遷移制御部13に対応する。
【0070】
図3では、h計算部12b1~12bnに対し、i番目のスピンビットに対応することが分かり易い様に「h
i」計算部のように添え字iを付して名称を表記している。また、
図3では、ΔE生成部12c1~12cnに対し、i番目のスピンビットに対応することが分かり易い様に「ΔE
i」計算部のように添え字iを付して名称を表記している。
【0071】
ある探索部でのスピンビット列(状態ベクトル)に含まれる何れかのスピンビットを反転させるかの判定および反転させる場合に該当のスピンビットを反転させる処理が、当該探索部による基底状態探索(確率的探索と言うこともある)の1回分の処理に相当する。当該1回分の処理は繰り返し実行される。探索部10a1~10aNにより並列に実行される当該1回分の処理の繰り返し数をイタレーション回数と言うことがある。
【0072】
1つの探索部におけるスピンビットの数をn個とする。すなわち、状態ベクトルはnビットである。レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1が、n個のスピンビットのうちの1番目のスピンビットに関する演算を行う。また、レジスタ12a2、h計算部12b2、ΔE生成部12c2、加算器13a2および状態遷移判定回路13b2が、n個のスピンビットのうちの2番目のスピンビットに関する演算を行う。同様に、「12a1」、「12b1」などの符号の末尾の数値iがi番目のスピンビットに対応する演算を行うことを示す。すなわち、1つの探索部は、レジスタ、h計算部、ΔE生成部、加算器および状態遷移判定回路のセット(1スピンビットに関する演算を行う演算処理回路の一単位であり、「ニューロン」や「ニューロン回路」などと呼ばれることもある)を、n個有する。n個のセットが並列に、各セットに対応するスピンビットに関する演算を行う。
【0073】
以下では、主に、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1を例示して説明する。同名の構成であるレジスタ12a2~12an、h計算部12b2~12bn、ΔE生成部12c2~12cn、加算器13a2~13anおよび状態遷移判定回路13b2~13bnも同様の機能である。
【0074】
ここで、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1のセットに対応するスピンビットを自スピンビット、探索部10a1で演算されるそれ以外のスピンビットを他スピンビットと称する。各スピンビットは、indexと呼ばれる識別情報により識別される。例えば、i番目のスピンビットのindexは、iである。
【0075】
状態保持部11aは、探索部10a1における状態(ステートと称する)を保持する。ステートは、複数の状態変数(状態変数x1,x2,…,xn)で表される。すなわち、ステートは、探索部10a1におけるn個のスピンビットを含むスピンビット列である。
【0076】
レジスタ12a1は、自スピンビットと他スピンビットとの間の重み係数W1j(j=1~n)を記憶する記憶部である。ここで、スピンビット数nに対して、探索部10a1における重み係数の総数はn2である。レジスタ12a1にはn個の重み係数が格納される。また、重み係数Wijの添え字iは、自スピンビットのindexを示し、重み係数Wijの添え字jは、自スピンビットを含む何れかのスピンビットのindexを示す。
【0077】
レジスタ12a1は、自スピンビットに対して、n個の重み係数W11,W12,…,W1nを記憶する。なお、Wii=W11=0である。レジスタ12a1は、セレクタ部13cにより供給されるindex=jに対応する重み係数W1jをh計算部12b1に出力する。
【0078】
h計算部12b1は、レジスタ12a1から供給される重み係数W1jを用いて、式(3)、(4)に基づくローカルフィールドh1を計算する。例えば、h計算部12b1は、前回計算されたローカルフィールドh1を保持するレジスタを有し、index=jで示されるスピンビットの反転方向に応じたδh1
(j)を、h1に積算することで、当該レジスタに格納されるh1を更新する。index=jで示されるスピンビットの反転方向を示す信号は、セレクタ部13c又は状態保持部11aからh計算部12b1に供給されてもよい。b1の値は、問題に応じて、h計算部12b1のレジスタに予め設定される。h1の初期値は、問題に応じて、h計算部12b1のレジスタに予め設定される。また、h計算部12b1は、計算したローカルフィールドh1をΔE生成部12c1およびE計算部14aに出力する。
【0079】
ΔE生成部12c1は、ローカルフィールドh1を用いて、式(2)に基づき、自スピンビットの反転に応じたイジングモデルのエネルギー変化値Δ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に出力するものとする。
【0080】
加算器13a1は、ΔE生成部12c1から供給される-ΔE1とオフセット制御部13dから供給されるオフセット値Eoffとを加算する。オフセット値Eoffは、後述されるように、状態遷移を促すためのパラメータであり、オフセット制御部13dにより制御される。本例では、Eoff≧0である。Eoffの初期値は0である。Eoffは、後述のオフセット制御部13dにより漸増されることがある。加算器13a1は、加算結果(-ΔE1+Eoff)を状態遷移判定回路13b1に出力する。
【0081】
状態遷移判定回路13b1は、加算器13a1から供給されるエネルギー変化値とオフセットEoffとの和(-ΔE1+Eoff)に応じて、自スピンビットの反転可否を示すフラグf1をセレクタ部13cに出力する。具体的には、状態遷移判定回路13b1は、-ΔE1+Eoffと温度に応じた熱ノイズ、あるいは熱励起エネルギーとの比較に応じて、自スピンビットの反転可否を判定する。
【0082】
ここで、状態遷移判定回路13b1による判定について説明する。
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率A(ΔE)を前述の式(5)のように決める。式(5)においてβ=1/Tは、逆温度である。温度Tは、温度制御部33により状態遷移判定回路13b1に設定される。また、関数fとしては、メトロポリス法に基づく関数、又は、ギブス法に基づく関数が用いられる。
【0083】
例えば、許容確率A(ΔE)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。
【0084】
ただし、次のような変形を行っても同じ機能を実現可能である。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を出力する回路でよい。
【0085】
状態遷移判定回路13b1は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を生成する。例えば、メトロポリス法が適用される場合、f-1(u)=log(u)となり、状態遷移判定回路13b1における判定式は、式(6)となる。
【0086】
変換テーブルは、状態遷移判定回路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に出力する。
【0087】
状態遷移判定回路13b1は、(-ΔE1+Eoff)≧T・f-1(u)を変形して、温度に対応するノイズ値T・f-1(u)を(ΔE1-Eoff)に加算して得られる評価値と閾値(例えば0)との比較に応じて、遷移可否を示すフラグを出力してもよい。
【0088】
セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力された遷移可否を示すフラグを受け付ける。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがある場合には、遷移可を示す何れか1つのフラグを選択する。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがない場合には、1つの所定のフラグを選択する。
【0089】
セレクタ部13cは、遷移可否を示すフラグと、選択したフラグに対応するスピンビットを示すindex=jとを含む更新信号(update)を状態保持部11aに出力する。それとともに、セレクタ部13cは、選択した遷移可否を示すフラグをオフセット制御部13dに出力し、選択したフラグに対応するindex=jを、レジスタ12a1~12anの各々に出力する。
【0090】
オフセット制御部13dは、セレクタ部13cから出力される遷移可否を示すフラグに基づいて、加算器13a1~13anの各々に供給するオフセット値を制御する。具体的には、オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移可を示す場合、オフセット値を0にリセットする。オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移不可を示す場合、オフセット値に増分値ΔEoffを加算する。当該フラグが連続して遷移不可を示す場合、オフセット制御部13dは、ΔEoffを積算することで、EoffをΔEoffずつ増加させる。
【0091】
セレクタ部13cから出力されるフラグが遷移不可を示す場合、現在の状態が局所解に陥っていると考えられる。-ΔE1へのオフセット値の加算や加算するオフセット値の漸増により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【0092】
状態保持部11aは、セレクタ部13cから出力されるフラグとindexとに基づいて、状態保持部11aが有するレジスタにより保持されるステート(x1,x2,…,xn)を更新する。状態保持部11aは、フラグが遷移可を示す場合、indexに対応するビットの値を反転させる。例えば、状態保持部11aは、フラグが遷移不可を示す場合、ビット値の反転を行わない。状態保持部11aは、現在のステートをE計算部14aに出力する。状態保持部11aは、探索部10a1における探索処理の完了時のステートを全体制御部34に出力する。
【0093】
E計算部14aは、h計算部12b1~12bnの各々から出力されるローカルフィールドh1~hnおよび状態保持部11aから出力されるステート(x1~xn)に基づいて、探索部10a1におけるイジングモデルの現在のエネルギー値E1を計算する。エネルギー値E1は、式(1)の評価関数で定義されるエネルギー値(単にエネルギーと言うこともある)である。E計算部14aは、ローカルフィールドhiとステートxiとの積和により探索部10a1におけるエネルギー値E1を計算する。E計算部14aは、探索部10a1における所定回数又は所定期間の探索処理が完了すると、計算したエネルギー値E1を、温度調整部31、レプリカグループ化部32および温度制御部33に出力する。
【0094】
温度調整部31は、探索部10a1~10aNにおける所定回数の基底状態探索の結果に基づいて新温度値(更新最大温度値)T
max_newを得る。すなわち、温度調整部31は、探索部10a1~10aNの各々から出力されるエネルギー値E
1~E
Nを受け付ける。また、温度調整部31は、探索部10a1~10aNの各々に設定されている温度の情報を、温度制御部33から取得する。
図3では、探索部10a1に温度T
1、探索部10a2に温度T
2、…、探索部10aNに温度T
Nが設定されている例が示されている。一例では、温度調整部31は、エネルギー値E
1~E
Nの変化と探索部10a1~10aNに設定される温度の変化とに応じて、新温度値T
max_newを決定する。温度調整部31は、決定した新温度値T
max_newを温度制御部33に出力する。温度調整部31は、決定した新温度値T
max_newをレプリカグループ化部32に出力してもよい。
【0095】
レプリカグループ化部32は、探索部10a1~10aNの各々から出力されるエネルギー値E1~ENおよび当該エネルギー値に対応するステートを受け付ける。また、レプリカグループ化部32は、探索部10a1~10aNの各々に設定されている温度値を受け付ける。更に、レプリカグループ化部32は、温度調整部31により決定された新温度値Tmax_newを、温度制御部33を介して、あるいは温度調整部31から取得する。レプリカグループ化部32は、探索部10a1~10aNの各々のエネルギー値、ステート、温度値、および、新温度値Tmax_newに基づいて、探索部10a1~10aNを複数のグループに分割する。第2の実施の形態では、探索部10a1~10aNを2つのグループに分割する場合を例示するが、3以上のグループに分割してもよい。
【0096】
レプリカグループ化部32は、各グループに属する探索部を示す情報(セパレータ)と、各グループに属する探索部に設定する新規温度の情報と、各グループに属する探索部に設定する新規ステートの情報を温度制御部33に供給する。セパレータは、グループを分ける探索部の番号(グループの境界に位置する探索部の番号)である。例えば、グループを2つに分割する場合、セパレータで指定された番号よりも前の番号範囲に属する探索部群が1つ目のグループであり、セパレータで指定された番号以降の番号範囲に属する探索部群が2つ目のグループとなる。各グループに属する探索部に設定する新規ステートには、当該新規ステートに対応するローカルフィールドの情報も含まれる。
【0097】
温度制御部33は、探索部10a1~10aNの各々に供給する温度を制御する。温度制御部33は、温度を示す温度情報を、探索部10a1~10aNの各々が有する状態遷移判定回路に供給する。例えば、温度制御部33は、レプリカグループ化部32から供給されるセパレータに基づいて、探索部10a1~10aNのそれぞれが何れのグループに所属するかを特定する。温度制御部33は、各グループの探索部に対して個別の温度範囲に属する温度値を設定する。
【0098】
また、温度制御部33は、探索部10a1~10aNにおける温度の交換(温度交換)を制御する。温度制御部33は、式(7)の交換確率に基づいて、温度が隣接する探索部のペア(2つの探索部の組)に関し、温度交換あるいはステートの交換を行うか否かをペア毎に判定する。温度制御部33は、交換後の温度あるいはステートを、各探索部に供給する。温度の代わりにステートを交換する場合、温度制御部33は、ステートに加えて、ローカルフィールドを交換する。
【0099】
例えば、温度制御部33は、温度の識別情報(温度インデックス又は温度番号と言う)と、温度とを対応付けた第1の対応情報を、温度制御部33が有するレジスタに保持する。例えば、温度インデックスは、温度の昇順に温度に対応付けられる(温度インデックスが大きいほど温度も高い)。更に、温度制御部33は、例えば昇順に配列された温度インデックスと探索部10a1~10aNの各々の識別番号とを対応付けた第2の対応情報を、温度制御部33が有するレジスタに保持する。この場合、第2の対応情報で隣接する温度インデックスに対応する探索部のペアは、設定された温度が隣接することになる。温度制御部33は、第1の対応情報および第2の対応情報に基づいて、探索部10a1~10aNに対する温度交換を制御し、交換に応じて、第2の対応情報を更新する。温度制御部33は、第1の対応情報および第2の対応情報に基づいて、各探索部に温度を供給する。
【0100】
ただし、温度制御部33は、探索部10a1~10aNの各々の識別番号と温度値とを対応付けた対応情報を保持し、当該対応情報を温度値でソートすることで、設定された温度が隣接する探索部のペアを特定することもできる。
【0101】
また、温度制御部33は、探索部10a1~10aNを複数のグループに分割する場合、上記の第1の対応情報および第2の対応情報を、グループ毎に保持することで、同じグループに属する探索部のペアにおけるレプリカ交換を、グループ毎に独立に制御する。
【0102】
全体制御部34は、最適化装置2の全体の動作を制御する。全体制御部34は、外部から起動信号の入力を受け付けると、温度制御部33に起動信号を出力し、探索部10a1~10aNを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部34は、演算が終了すると、探索部10a1~10aNの各々からステートを取得し、最適化問題に対する解を得る。例えば、全体制御部34は、取得したステートのうち最低エネルギーに対応するステートを解とする。全体制御部34は、演算の終了を示す終了信号を外部に出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部34は、最適化装置2に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
【0103】
また、全体制御部34は、外部からリセット信号の入力を受け付けると、探索部10a1~10aN、温度調整部31、レプリカグループ化部32および温度制御部33が保持する情報をクリアする。
【0104】
次に、温度調整部31による新温度値(更新最大温度値)の決定例を説明する。ただし、以下に示す方法は一例であり、後述されるように、温度調整部31は他の方法により新温度値を決定してもよい。
【0105】
例えば、温度調整部31は、探索部10a1~10aNの各々における温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した温度統計情報に基づいて複数のグループの各々に属する探索部に設定する更新最大温度値を決定する。
【0106】
図4は、最低エネルギーの変化例を示す図である。
グラフ50は、ある探索部の所定期間における最低エネルギーの変化の履歴の例を示す。グラフ60は、当該探索部における温度の変化例を示す。
【0107】
グラフ50,60の横軸は時間であり、左側から右側へ向かう方向が時間の正方向である。グラフ50,60の横軸の同一位置は、同一時刻を示す。グラフ50の縦軸は、エネルギーである。グラフ60の縦軸は温度である。グラフ60の縦軸には温度Ta,Tb,Tc,Tdが示されている。ここで、Ta>Tb>Tc>Tdである。
【0108】
グラフ50は、系列51を含む。系列51によれば、時間帯52,53の2つの時間帯で、最低エネルギーが更新されている。
グラフ60は、系列61を含む。系列61によれば、時間帯52で最低エネルギーが更新された時点と時間帯53で最低エネルギーが更新された時点との間に該当の探索部が到達した最大温度(最高到達温度)は、Taである。
【0109】
グラフ50,60の例では、該当の探索部において、最低エネルギーを更新するために、最大温度Taまで一旦上がることが必要であることを示している。そこで、温度調整部31は、一定期間において最低エネルギーを更新するために、各探索部において達した最大温度を温度統計情報として取得し、当該温度統計情報に基づいて、各探索部に設定する温度を決定する。
【0110】
図5は、温度ヒストグラムおよび累積ヒストグラムの例を示す図である。
図5(A)は、温度ヒストグラム70を例示する。温度ヒストグラム70は、温度統計情報に基づいて、温度調整部31により生成される。温度ヒストグラム70は、最小温度値T
minから最大温度値T
maxの温度範囲に属する温度値が設定されたグループの各探索部が最低エネルギーを更新するために達した最大温度の頻度を示す。温度ヒストグラム70の横軸は温度インデックスを示し、縦軸は頻度を示す。
【0111】
例えば、温度調整部31は、温度ヒストグラム70において最大頻度の温度インデックスに対応する温度値を、最大温度値Tmaxと決定する。具体的には、温度調整部31は、温度ヒストグラム70のうち、頻度の高い温度の中から、新温度値Tmax_newを決定する。一例では、温度調整部31は、ピークp1で示される最大頻度の温度値を、新温度値Tmax_newと決定する。なお、温度調整部31は、温度インデックスに対して温度ヒストグラム70を作成した場合、温度インデックスに対応する温度値を、例えば、前述の第1の対応情報を参照することで特定する。この場合、例えば、温度制御部33が保持する前述の第1の対応情報を、温度調整部31により参照可能にすることが考えられる。
【0112】
ただし、問題によっては、上記のようなピークp1が出現しない場合やピークが複数出現する場合もある。そのような場合に、例えば、温度調整部31は、次のように、温度ヒストグラム70に基づく累積ヒストグラムを用いて、新温度値Tmax_newを決定する。
【0113】
図5(B)、累積ヒストグラム80を例示する。
累積ヒストグラム80は、温度ヒストグラム70で示される頻度を温度の小さい方から累積したヒストグラムである。累積ヒストグラム80は、温度調整部31により生成される。累積ヒストグラム80の横軸は温度インデックスを示し、縦軸は累積頻度を示す。
【0114】
温度調整部31は、累積ヒストグラムの割合(累積割合)αにより新温度値Tmax_newを決定する。例えば、累積割合αを、一例として、70%(α=0.7)とする。累積ヒストグラム80には、累積割合α=70%を示す直線81が示されている。この場合、温度調整部31は、累積ヒストグラム80における累積頻度の最大値に累積割合を示す係数αを乗じた累積頻度に対応する温度値(点p2の累積頻度に対応する温度値)を特定し、当該温度値を、新温度値Tmax_newと決定する。本例の場合、累積頻度の最大値は、温度インデックスの最大値に対応する累積頻度である。累積割合として用いられる係数αは、外部から入力されてもよい。
【0115】
上記のように、温度調整部31は、基底状態探索により得られた情報である温度ヒストグラム70又は累積ヒストグラム80に基づいて、新温度値Tmax_newを決定してもよい。
【0116】
次に、温度調整部31により決定された新温度値T
max_newに基づくレプリカグループ化部32による探索部(レプリカ)のグループ化の例を説明する。
図6は、最大温度の更新に応じたレプリカのグループ化の例を示す図である。
【0117】
演算開始の当初の段階では、探索部10a1~10aNは、1つのグループG10に属する。すなわち、グループG10には、N個のレプリカが属する。
図6では、グループG10の枠内の1つの長方形が1つの探索部(レプリカ)を示す。当初の段階では、最小温度値はT
0であり、最大温度値はT
maxであるとする。また、ある最適化問題に対する求解は、下記に示す初回、2回目、3回目、…というように複数回の最適化演算を含む。
【0118】
最適化装置2は、グループG10に属する探索部10a1~10aNにより、レプリカ交換法を用いた初回の最適化演算を実行する。
温度調整部31は、初回の最適化演算の結果から新温度値Tmax_newを計算する。例えば、温度調整部31は、ある探索部に設定された温度値を新温度値Tmax_newと決定する。
【0119】
レプリカグループ化部32は、新温度値Tmax_newに基づいて、グループG10に属する探索部10a1~10aNを、グループG21,G22の2つの系に分割する。グループG21の各探索部には、最小温度値T0から最大温度値Tmax_newまでの温度範囲に属する温度値が設定される。グループG22の各探索部には、最小温度値T0から最大温度値Tmaxまでの温度範囲に属する温度値が設定される。グループG21に属する探索部の数は、NTmax_newである。グループG22に属する探索部の数は、N-NTmax_newである。
【0120】
最適化装置2は、グループG21,G22の2つの系で、それぞれレプリカ交換法を用いた2回目の最適化演算を実行する。
そして、温度調整部31は、2回目の最適化演算の結果から新温度値Tmax_newを再計算する。温度調整部31は、グループG22に属するある探索部に設定された温度値を新温度値Tmax_new=Tmax_new2と決定する。
【0121】
レプリカグループ化部32は、新温度値Tmax_new2に基づいて、グループG21,G22に属する探索部の数および設定温度を更新する。グループG21の更新後のグループをグループG31とする。グループG22の更新後のグループをグループG32とする。グループG31の各探索部には、最小温度値T0から最大温度値Tmax_new2までの温度範囲に属する温度値が設定される。グループG32の各探索部には、最小温度値T0から最大温度値Tmaxまでの温度範囲に属する温度値が設定される。グループG31に属する探索部の数は、NTmax_new2である。グループG32に属する探索部の数は、N-NTmax_new2である。
【0122】
最適化装置2は、グループG31,G32の2つの系で、それぞれレプリカ交換法を用いた3回目の最適化演算を実行する。
以降も同様にして、レプリカグループ化部32は、各グループにおける温度範囲および探索部の数(レプリカ数)を更新し、最適化演算が繰り返し実行される。
【0123】
次に、上記の処理を行うレプリカグループ化部32の回路構成を例示する。
図7は、レプリカグループ化部の回路構成例を示す図である。
レプリカグループ化部32は、レプリカ数決定部321、交換確率計算部322およびレプリカ削除部323を有する。
【0124】
レプリカ数決定部321は、当初の最大温度値Tmaxと、新温度値Tmax_newとに基づいて、式(10)、(11)により各グループに属する探索部の数(各グループのレプリカ数)を決定し、交換確率計算部322に供給する。
【0125】
交換確率計算部322は、探索部10a1~10aNから供給されるエネルギー値およびステートの情報に基づいて、式(7)により温度値が隣接する探索部のペアにおける交換確率を計算し、各グループのレプリカ数とともに、レプリカ削除部323に供給する。
【0126】
レプリカ削除部323は、交換確率計算部322により計算された交換確率に基づいて、各グループにおいて、次の探索に引き継ぐレプリカ(当該レプリカにおける温度およびステート)を選択する。
【0127】
このように、レプリカグループ化部32は、探索部10a1~10aNの各々におけるエネルギー値と温度値とに基づいて、複数の探索部間で温度値又はステート(複数の状態変数の値に相当)を入れ替える交換確率を計算する計算部(交換確率計算部322)を有する。レプリカグループ化部32(あるいはレプリカ削除部323)は、温度調整部31により決定された温度値と交換確率計算部322により計算された交換確率とに基づいて、探索部10a1~10aNの各々における温度値および複数の状態変数の値のうち、複数のグループの各々に属する各探索部に引き継ぐ温度値および複数の状態変数の値を選択する。
【0128】
次に、レプリカグループ化部32によるレプリカの選択例を説明する。
図8は、各グループに所属させるレプリカの選択例を示す図である。
最適化装置2による最適化演算の開始時において、探索部10a1~10aNは、グループG10に属している。グループG10の最小温度値はT
0である。グループG10の最大温度値はT
maxである。
【0129】
温度調整部31は、初回の最適化演算の結果から、新温度値Tmax_newを決定する。グループG10において、最小温度値T0から新温度値Tmax_newまでの温度範囲に属する温度値が設定されるレプリカの数はM個である。また、グループG10において、最小温度値T0から最大温度値Tmaxまでの温度範囲に属する温度値が設定されるレプリカの数はN個である。
【0130】
レプリカ数決定部321は、最大温度値Tmaxおよび新温度値Tmax_newに基づいて、式(10)、(11)により、次回の最適化演算における2つのグループの各々に属するレプリカの数を決定する。レプリカ数決定部321は、新温度値Tmax_newまでの温度値が設定されるグループのレプリカ数をNTmax_newと決定する。レプリカ数決定部321は、最大温度値Tmaxまでの温度値が設定されるグループのレプリカ数をNTmaxと決定する。
【0131】
交換確率計算部322は、グループG10に属する、設定される温度値が隣接するレプリカのペア毎に、式(7)を用いて交換確率を計算する。
レプリカ削除部323は、計算された交換確率に基づいて、各グループに所属させるレプリカを次のように選択する。
【0132】
まず、レプリカ削除部323は、レプリカ数M個の仮グループG11と、レプリカ数N個の仮グループG12とを作成する。仮グループG11には、グループG10において最小温度値T0から新温度値Tmax_newまでの温度値が設定されたレプリカが所属する。したがって、仮グループG11のレプリカ数はM個である。仮グループG12には、グループG10において最小温度値T0から最大温度値Tmaxまでの温度値が設定されたレプリカが所属する。したがって、仮グループG12のレプリカ数はN個である。
【0133】
レプリカ削除部323は、1回目のレプリカの削減を行う。
レプリカ削除部323は、仮グループG11に含まれるレプリカのペアのうち、交換確率が最大のペア(交換確率最大ペアと言う)を特定する。レプリカ削除部323は、特定した交換確率最大ペアの2つのレプリカの各々が属する他の2つのペア(隣接ペアと言う)に対する交換確率を参照し、当該2つの隣接ペアのうち交換確率が大きい方を特定する。レプリカ削除部323は、交換確率最大ペアおよび特定した隣接ペアの両方に属するレプリカを、仮グループG11から削除する。その結果、仮グループG11は仮グループG11aに更新される。仮グループG11aのレプリカ数はM-1個である。
【0134】
また、レプリカ削除部323は、仮グループG12についても同様に、仮グループG12に含まれるレプリカのペアのうちの交換確率最大ペアおよび2つの隣接ペアを特定する。レプリカ削除部323は、交換確率最大ペアおよび交換確率が大きい方の隣接ペアの両方に属するレプリカを、仮グループG12から削除する。その結果、仮グループG12は仮グループG12aに更新される。仮グループG12aのレプリカ数はN-1個である。
【0135】
次に、レプリカ削除部323は、2回目のレプリカの削除を行う。レプリカ削除部323は、1回目と同様にして、仮グループG11a,G12aの各々から削除するレプリカを1つ選択し、選択したレプリカを仮グループG11a,G12aから削除する。その結果、仮グループG11aは仮グループG11bに更新される。仮グループG11bのレプリカ数はM-2個である。仮グループG12aは仮グループG12bに更新される。仮グループG12aのレプリカ数はN-2個である。
【0136】
レプリカ削除部323は、3回目以降も同様にして仮グループG11b,G12bの各々から1つずつレプリカを削除する処理を繰り返す。そして、レプリカ削除部323は、新温度値Tmax_newに対応するグループのレプリカ数がNTmax_new個になると、当該グループに関する繰り返しを終了する。レプリカ削除部323は、最大温度Tmaxに対応するグループのレプリカ数がNTmax個になると、当該グループに関する繰り返しを終了する。
【0137】
こうして、各仮グループにおいて削除されずに残ったレプリカが、各グループに所属させるレプリカとして選択される。この場合、選択されたレプリカに対応する温度値およびステートが、次の最適化演算の探索に引き継がれる。レプリカ削除部323は、各グループに対して選択したレプリカに対応する温度値およびステートを温度制御部33に出力する。
【0138】
交換確率が比較的高い探索部のペアにおける両ステートは、エネルギー値が近似する傾向にある。このため、交換確率が比較的高いペアの一方のステートを間引いて次の探索に引き継ぐステート(および温度値)を選択することで、グループ内の探索部で比較的広いエネルギー幅に対応するステートの探索を行えるようになり、基底状態探索を効率的に行える。
【0139】
次に、最適化装置2の処理手順を説明する。
図9は、最適化装置の処理例を示すフローチャートである。
(S10)全体制御部34は、探索部10a1~10aNおよび温度制御部33にレプリカ交換処理を実行させる。探索部10a1~10aNおよび温度制御部33は、全体制御部34の制御の基に、レプリカ交換法を用いた初回の最適化演算を実行する。例えば、外部から入力される各種のパラメータの初期値は、全体制御部34を介して、探索部10a1~10aNおよび温度制御部33に設定される。レプリカ交換処理の詳細は後述される。
【0140】
(S11)温度調整部31は、初回の最適化結果に基づいて、最大温度(新温度値T
max_new)を計算する。計算方法には、例えば
図4,
図5で例示した方法を用いることができる。レプリカ数決定部321は、計算した最大温度から各グループのレプリカ数を決定する。例えば、レプリカ数決定部321は、レプリカ数の決定に式(10)、(11)を用いることができる。ここで、グループの数は、最適化装置2に予め設定される。本例では、グループの数は2である。
【0141】
(S12)交換確率計算部322は、探索部10a1~10aNの各々から取得したエネルギー値および各探索部に設定された温度値から、温度値が隣接する探索部のペア毎の交換確率を計算する。探索部10a1~10aNが複数のグループに分割されている場合、交換確率計算部322は、同じグループに属する探索部のペアに対する交換確率をグループ毎に計算する。
【0142】
(S13)レプリカ削除部323は、計算された交換確率に基づいて、
図8で例示した仮グループから、使用しないレプリカ(探索部に相当)を1つ削除する。例えば、仮グループの元になるグループは、当初の温度範囲(T
min~T
max)が設定されるグループである(ステップS13を2回目以降に実行する場合には、各々の温度範囲が設定されるグループを仮グループの元になるグループとして用いてもよい)。
【0143】
(S14)レプリカ削除部323は、各グループにおけるレプリカ数が、ステップS11で決定されたレプリカ数に収まったか否かを判定する。全てのグループのレプリカ数が、決定されたレプリカ数に収まった場合、ステップS15に処理が進む。決定されたレプリカ数に収まっていないグループがある場合、ステップS13に処理が進む。ステップS13に処理が進む場合、レプリカ削除部323は、レプリカ数が、決定されたレプリカ数に収まっていない仮グループに関して、ステップS13の処理を実行する。
【0144】
(S15)レプリカ削除部323は、各グループで使用する温度およびステートを選択する。具体的には、レプリカ削除部323は、ステップS13,S14の手順により各グループに対して選択された(削除されずに残った)レプリカに対応する温度およびステートを、該当のグループに属する各レプリカに設定する新規温度およびステートとして選択する。レプリカ削除部323は、探索部10a1~10aNを複数のグループに分割するためのセパレータを温度制御部33に出力するとともに、各探索部に設定する新規温度値およびステート(ローカルフィールドを含む)をグループ毎に温度制御部33に出力する。
【0145】
(S16)温度制御部33は、レプリカ削除部323から供給されたセパレータを基に、探索部10a1~10aNを複数のグループに分割する。ここでは、探索部10a1~10aNは、第1のグループおよび第2のグループに分割される。例えば、第1のグループは、元の最大温度値Tmaxに対応するグループである。また、第2のグループは、新温度値Tmax_newに対応するグループである。
【0146】
(S17)温度制御部33は、レプリカ削除部323から供給された探索部毎の新規温度およびステートを各グループの探索部に分配する。その結果、各探索部に新規温度、ステートおよびローカルフィールドが設定される。ステートに対応するエネルギー値は、各探索部において、ステートとローカルフィールドとの積和により計算される。
【0147】
(S18)全体制御部34は、第1のグループに属する各探索部および温度制御部33にレプリカ交換処理を実行させる。
(S19)全体制御部34は、第2のグループに属する各探索部および温度制御部33にレプリカ交換処理を実行させる。ステップS18,19は、並列に実行される。
【0148】
(S20)全体制御部34は、規定回数処理(ステップS11~S19の一連の手順)を実行したか否かを判定する。規定回数処理を実行した場合、最適化装置2の演算処理が終了する。規定回数処理を実行していない場合、ステップS11に処理が進む。
【0149】
全体制御部34は、演算処理が終了すると、探索部10a1~10aNの各々からステートを取得し、最適化問題に対する解を得る。例えば、全体制御部34は、各グループの探索部が到達した最低エネルギーに対応するステートを、最適化問題に対する解(最適解)として出力する。
【0150】
上記のように、レプリカ削除部323は、探索部10a1~10aNを複数のグループに分割する。複数のグループは、複数のグループに設定された温度値のうち最大である最大温度値Tmaxが設定される探索部を含む第1のグループと、更新最大温度値である新温度値Tmax_newが設定される探索部を含む一又は複数の第2のグループとを含む。
【0151】
探索部10a1~10aNのうち、第1のグループに含まれる探索部の数は、探索部10a1~10aNの数に、最大温度値の対数値を、最大温度値の対数値と更新最大温度値の対数値の和で除した数を乗じた数に基づいて求められる(式(10))。また、探索部10a1~10aNのうち、第2のグループに含まれる探索部の数は、探索部10a1~10aNの数に、更新最大温度値の対数値を、最大温度値の対数値と更新最大温度値の対数値の和で除した数を乗じた数に基づいて求められる(式(11))。なお、ステップS11については初回の1回だけ実行し、2回目以降ではステップS11をスキップしてもよい(この場合、複数のグループの各々に属する探索部の数は更新されない)。
【0152】
また、
図9に示すステップS11~S19の手順が繰り返し実行される。すなわち、温度調整部31は、第1のグループに含まれる各探索部による基底状態探索の結果に基づいて更新最大温度値を決定する。レプリカグループ化部32は、決定された更新最大温度値に基づいて、第2のグループに含まれる探索部に設定される温度値を補正する。これにより、第2のグループに対して適切な更新最大温度値が設定される可能性を高められ、解精度の向上に寄与する。
【0153】
また、レプリカグループ化部32は、例示したように、新たに決定された更新最大温度値に基づいて、第1のグループおよび第2のグループに含まれる探索部の数を更新してもよい。当該更新により、各グループに含まれる探索部の数は増えることもあるし、減ることもある。これにより、問題に応じた適切なレプリカ数および温度範囲の設定が可能になり、解精度を一層向上できる。
【0154】
図10は、レプリカ交換処理例を示すフローチャートである。
レプリカ交換処理は、ステップS10,S18,S19に相当する。以下では、探索部10a1~10aNが同一のグループに属する場合(ステップS10の場合)を説明するが、探索部10a1~10aNが複数のグループに分割される場合、温度制御部33は、グループ毎に、下記の手順を実行する。
【0155】
(S30)温度制御部33は、探索部10a1~10aNの各々に温度を設定する。探索部10a1~10aNの各々に設定される温度の初期値は、問題などに応じて予め定められる。なお、ステップS17により各探索部に新規温度を設定済の場合、ステップS30をスキップしてよい。また、温度制御部33は、ステップS39~S43を経て、ステップS30に進んだ場合には、交換後の温度を探索部10a1~10aNに設定する。
【0156】
(S31)探索部10a1~10aNの各々は、スピンビット毎にローカルフィールドhを計算する。例えば、探索部10a1に着目すると、h計算部12b1~12bnは、ローカルフィールドh1~hnを計算する。ローカルフィールドhは、式(3)に基づいて計算される。なお、式(3)によりローカルフィールドhが計算された後は、例えば、式(4)で示される差分δhをローカルフィールドhに加算することで、更新後のローカルフィールドh=h+δhを求めることができる。
【0157】
(S32)探索部10a1~10aNの各々は、計算したローカルフィールドhに基づいて、スピンビット毎にエネルギーの変化値ΔEを計算する。例えば、探索部10a1に着目すると、ΔE生成部12c1~12cnは、エネルギーの変化値ΔE1~ΔEnを計算する。ΔEは、式(2)に基づいて計算される。
【0158】
(S33)探索部10a1~10aNの各々は、エネルギーの変化値-ΔEにオフセット値Eoffを加算する。例えば、探索部10a1に着目すると、加算器13a1~13anは、-ΔE1~-ΔEnに対して、オフセット値Eoffを加算する。オフセット値Eoffは、前述のように、オフセット制御部13dにより制御される。例えば、オフセット制御部13dは、セレクタ部13cにより出力される遷移可否を示すフラグが遷移不可を示す場合に、0より大きいオフセット値Eoffを加算器13a1~13anに供給する。オフセット制御部13dは、当該フラグが遷移可を示す場合に、オフセット値Eoff=0を加算器13a1~13anに供給する。なお、オフセット値Eoffの初期値は0である。
【0159】
(S34)探索部10a1~10aNの各々は、反転候補のスピンビットのうち、反転させるスピンビットを選択する。例えば、探索部10a1に着目すると、状態遷移判定回路13b1~13bnの各々は、該当の状態遷移判定回路に対応するスピンビットの遷移可否を示すフラグをセレクタ部13cに出力する。セレクタ部13cは、入力されたフラグの中から1つを選択し、選択したフラグと、選択したフラグに対応するスピンビットを示すindexとを出力する。
【0160】
(S35)探索部10a1~10aNの各々は、選択されたスピン(スピンビット)を反転させる。例えば、探索部10a1に着目すると、状態保持部11aは、セレクタ部13cにより出力されたフラグと、indexとに基づいて、ステートに含まれるスピンビットのうち、indexで示されるスピンビットの値を更新する。
【0161】
(S36)探索部10a1~10aNの各々は、ステップS30の直後の基底状態探索の開始時点から、規定のイタレーション回数に到達したか、又は、規定時間が経過したか否かを判定する。規定のイタレーション回数に到達した、又は、規定時間が経過した場合、ステップS37に処理が進む。規定のイタレーション回数に到達しておらず、かつ、規定時間も経過していない場合、ステップS31に処理が進む。
【0162】
(S37)探索部10a1~10aNの各々は、該当の探索部におけるエネルギー値(E1~EN)を計算する。
(S38)探索部10a1~10aNの各々は、計算したエネルギー値を温度調整部31、レプリカグループ化部32および温度制御部33に伝達する。
【0163】
(S39)温度制御部33は、温度の昇順に探索部を並べたときの偶数番目の探索部に関し、式(7)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部と温度を交換するか否かを判定する。温度の交換の判定は、探索部のペア毎に行われる。温度を交換すると判定された探索部のペアがある場合、ステップS40に処理が進む。温度を交換すると判定された探索部のペアがない場合、ステップS41に処理が進む。
【0164】
(S40)温度制御部33は、ステップS39で温度を交換すると判定された探索部のペアについて、温度を交換する。具体的には、温度制御部33は、温度の交換に応じて、例えば、温度制御部33が保持する前述の第2の対応情報を更新する。
【0165】
(S41)温度制御部33は、温度の昇順に探索部を並べたときの奇数番目の探索部に関し、式(7)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部と温度を交換するか否かを判定する。温度制御部33は、ステップS39において、偶数番目の探索部について上位温度の探索部と温度を交換するか否かを判定した場合、ステップS41では奇数番目の探索部について上位温度の探索部と温度を交換するか否かを判定する。温度制御部33は、ステップS39において、偶数番目の探索部について下位温度の探索部と温度を交換するか否かを判定した場合、ステップS41では奇数番目の探索部について下位温度の探索部と温度を交換するか否かを判定する。温度を交換すると判定された探索部のペアがある場合、ステップS42に処理が進む。温度を交換すると判定された探索部のペアがない場合、ステップS43に処理が進む。
【0166】
(S42)温度制御部33は、ステップS41で温度を交換すると判定された探索部のペアについて、温度を交換する。具体的には、温度制御部33は、温度の交換に応じて、温度制御部33が保持する第2の対応情報を更新する。
【0167】
(S43)全体制御部34は、探索部10a1~10aNの各々からステートを取得し、規定回数、最小温度の探索部におけるステートに変化がなくなったか否かを判定する。最小温度の探索部におけるステートに変化がなくなると、レプリカ交換処理が終了する。最小温度の探索部におけるビットステートに変化がある場合、全体制御部34は、ステップS30に処理を進め、基底状態探索を継続する。
【0168】
なお、ステップS39~S42の手順は、温度制御部33に含まれる交換制御部により実行される処理と考えてもよい。また、第1の実施の形態で例示したように、最適化装置2において、交換制御部は、温度制御部33とは別個に設けられてもよい。更に、ステップS39,S41の偶数、奇数の順序は逆でもよい。
【0169】
このように、最適化装置2は、最適化結果から計算される最大温度を更新しつつ、更新後の最大温度を使用して最適化演算を継続できる。また、最適化装置2は、初期最大温度Tmaxの系を残すことで、最適化が進むにつれて変わる最大温度を常にモニタできる。したがって、モニタを行うためにハードウェア(例えば、もう1つの最適化装置)を別途追加せずに済む。また、最適化装置2は、計算された最大温度Tmax_newの系で、温度を調整して高速に解を探索できる。
【0170】
より詳細には、最適化装置2は、複数のグループの各々でレプリカ交換法による基底状態探索を行うことで、複数の温度範囲を並行に利用して探索を行える。このため、あるグループにおいて、対象の問題に適した温度範囲およびレプリカ数となる可能性を高められ、解精度を向上することができる。また、解に到達するまでの時間を短縮できる。こうして、求解性能を向上することができる。
【0171】
特に、最適化装置2は、当初の温度範囲に対応するグループでの基底状態探索の結果により、他のグループにおける新温度値Tmax_newおよびレプリカ数を更新可能である。このため、仮に、前回決定したTmax_newの値が適切でなかったとしても、適切なTmax_newの値に補正することができる。これにより、他のグループにおいて、対象の問題に適した温度範囲が設定される可能性を高められ、解精度を向上することができる。また、解に到達するまでの時間を短縮できる。こうして、求解性能を向上することができる。
【0172】
最適化装置2によれば、ハードウェアリソースを追加することなく、適切な温度を設定し、高精度の解を求めることが可能になる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0173】
第2の実施の形態では、交換確率に基づいて各グループの探索部に設定するステートおよび温度値を決定する例を示した。第3の実施の形態では、他の方法により各グループの探索部に設定するステートおよび温度値を決定する例を説明する。
【0174】
第3の実施の形態の最適化装置2の回路構成は、
図3で例示した第2の実施の形態の回路構成と同様である。ただし、第3の実施の形態では、レプリカグループ化部の回路構成が、第2の実施の形態と異なる。なお、第3の実施の形態でも探索部10a1~10aNが2つのグループに分割される例を説明するが、3以上のグループに分割されてもよい。
【0175】
図11は、第3の実施の形態のレプリカグループ化部の回路構成例を示す図である。
レプリカグループ化部32aは、レプリカグループ化部32に代えて、最適化装置2に設けられる。レプリカグループ化部32aは、レプリカ数決定部321、新規温度計算部324および割当部325を有する。
【0176】
レプリカ数決定部321は、当初の最大温度値Tmaxと、新温度値Tmax_newとに基づいて、式(10)、(11)により各グループに属する探索部の数(各グループのレプリカ数)を決定し、新規温度計算部324に供給する。
【0177】
新規温度計算部324は、式(8)、(9)を用いて、各グループの探索部に設定する新規温度を計算する。
具体的には、新規温度計算部324は、当初の最大温度値Tmaxに基づいて、最大温度値Tmaxに対応するグループに属する各探索部に設定する温度値(新規温度)を計算する。すなわち、新規温度計算部324は、レプリカ数決定部321から供給される当該グループの探索部の数と、最大温度値Tmaxとから、当該グループの各探索部の温度値が対数軸上で等間隔になるように、当該グループの各探索部の温度値を決定する。
【0178】
また、新規温度計算部324は、温度調整部31あるいは温度制御部33から供給される新温度値Tmax_newに基づいて、新温度値Tmax_newに対応するグループに属する各探索部に設定する温度値(新規温度)を計算する。すなわち、新規温度計算部324は、レプリカ数決定部321から供給される当該グループの探索部の数と、新温度値Tmax_newとから、当該グループの各探索部の温度値が対数軸上で等間隔になるように、当該グループの各探索部の温度値を決定する。
【0179】
新規温度計算部324は、各グループのレプリカ数と、各グループの探索部に設定する温度値(新規温度)とを割当部325に供給する。
割当部325は、各グループのレプリカ数に基づいて、探索部10a1~10aNを複数のグループに分割するセパレータの情報を温度制御部33に出力する。また、割当部325は、各グループの探索部に設定する新規温度および新規ステートを、温度制御部33に出力する。ここで、温度制御部33は、現在、新規温度に最も近い温度値が設定されている探索部を特定し、当該探索部が保持するステートを取得して、当該新規温度が設定される探索部に設定する新規ステートとする。新規温度に最も近い温度値が設定されている探索部は、当該新規温度の設定先の探索部と同じグループに含まれる探索部でもよいし、異なるグループに含まれる探索部でもよい。
【0180】
このように、レプリカグループ化部32aは、温度調整部31により決定された温度値に基づいて、同じグループに属する各探索部における温度値の自然対数値が等間隔になるように当該グループに属する各探索部に設定する温度値を、グループ毎に計算する。レプリカグループ化部32aは、計算された温度値と探索部10a1~10aNの各々に設定済の温度値とに基づいて、探索部10a1~10aNの各々における複数の状態変数の値のうち、複数のグループの各々に属する各探索部に引き継ぐ複数の状態変数の値を選択する。
【0181】
次に、レプリカグループ化部32aを用いる最適化装置2の処理手順を説明する。
図12は、最適化装置の処理例を示すフローチャートである。
(S50)全体制御部34は、探索部10a1~10aNおよび温度制御部33によりレプリカ交換処理を実行させる。探索部10a1~10aNおよび温度制御部33は、全体制御部34の制御の基に、レプリカ交換法を用いた初回の最適化演算を実行する。例えば、外部から入力される各種のパラメータの初期値は、全体制御部34を介して、探索部10a1~10aNおよび温度制御部33に設定される。なお、レプリカ交換処理は、
図10の手順となる。
【0182】
(S51)温度調整部31は、初回の最適化結果に基づいて、最大温度(新温度値T
max_new)を計算する。計算方法には、例えば
図4,5で例示した方法を用いることができる。レプリカ数決定部321は、計算した最大温度から各グループのレプリカ数を決定する。例えば、レプリカ数決定部321は、レプリカ数の決定に式(10)、(11)を用いることができる。ここで、グループの数は、最適化装置2に予め設定される。本例では、グループの数は2である。
【0183】
(S52)新規温度計算部324は、計算された最大温度(新温度値Tmax_new)および元の最大温度Tmaxから、各レプリカ(探索部に相当)の新規温度を、式(8)、(9)を用いてグループ毎に計算する。
【0184】
(S53)割当部325は、新規温度に、元のレプリカの系(すなわち、グループ)で温度が最も近いレプリカのステートを割り当てる。割当部325は、探索部10a1~10aNを複数のグループに分割するためのセパレータを温度制御部33に出力するとともに、各探索部に設定する新規温度値およびステート(ローカルフィールドを含む)をグループ毎に温度制御部33に出力する。
【0185】
(S54)温度制御部33は、割当部325から供給されたセパレータを基に、探索部10a1~10aNを複数のグループに分割する。ここでは、探索部10a1~10aNは、第1のグループおよび第2のグループに分割される。例えば、第1のグループは、元の最大温度値Tmaxに対応するグループである。また、第2のグループは、新温度値Tmax_newに対応するグループである。
【0186】
(S55)温度制御部33は、割当部325から供給された探索部毎の新規温度およびステートを各グループの探索部に分配する。その結果、各探索部に新規温度、ステートおよびローカルフィールドが設定される。ステートに対応するエネルギー値は、各探索部において、ステートとローカルフィールドとの積和により計算される。
【0187】
(S56)全体制御部34は、第1のグループに属する各探索部および温度制御部33にレプリカ交換処理を実行させる。
(S57)全体制御部34は、第2のグループに属する各探索部および温度制御部33にレプリカ交換処理を実行させる。ステップS56,S57は並列に実行される。なお、ステップS56,S57のレプリカ交換処理は、
図10の手順となる(グループ毎に
図10の手順が実行される)。
【0188】
(S58)全体制御部34は、規定回数処理(ステップS51~S57の一連の手順)を実行したか否かを判定する。規定回数処理を実行した場合、最適化装置2の演算処理が終了する。演算処理を終了すると、最適化装置2は、各探索部が到達した最低エネルギーの状態を解として出力する。規定回数処理を実行していない場合、ステップS51に処理が進む。
【0189】
このように、最適化装置2は、探索部10a1~10aNに対する当初の設定温度の決定方法と同じ方法で、各グループに属する探索部に対する新規温度を対数軸上で等間隔になるように計算してもよい。
【0190】
ところで、第2,第3の実施の形態では、探索部10a1~10aNを2つのグループに分割する例を説明した。一方、探索部10a1~10aNを3以上のグループに分割してもよい。例えば、最適化装置2は、試したい最大温度の候補数mの外部からの入力を受け付けて、当該候補数mに応じてグループの分割数を増やすことが考えられる。
【0191】
その場合、温度調整部31は、基底状態探索により得られた情報に基づいて、最大温度の複数の候補値(m個の新温度値){T
max_new}={T
1,T
2,…,T
m}を出力する。一例では、m=3のとき、温度調整部31は、
図5で例示した温度ヒストグラム70のピークp1の温度値t
pとともに、温度値t
p+σ、t
p-σ(σは温度ヒストグラム70の標準偏差)を、最大温度の候補とすることが考えられる。この場合、レプリカグループ化部32は、探索部10a1~10aNを、m+1=3+1=4つのグループに分割する。探索部10a1~10aNの数を、N
maxとすると、元の最大温度値T
max、および、m個の新温度値をそれぞれ最大温度とする各グループのレプリカ数は、式(12)で表される。
【0192】
【0193】
このように、最適化装置2は、探索部10a1~10aNを3以上のグループに分割してもよい。例えば、全体制御部34は、
図9のステップS10又は
図12のステップS50の直前で、ユーザによる候補数mの入力を受け付けて、レプリカグループ化部32に設定してもよい。すると、レプリカ数決定部321は、
図9のステップS11又は
図12のステップS51において、設定された候補数mおよび式(12)に基づいて、各グループのレプリカ数を決定することができる。
【0194】
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0195】
第2,第3の実施の形態では、FPGAなどの半導体集積回路によって最適化装置2を実現する例を示したが、最適化装置2として他のハードウェア構成も考えられる。
図13は、第4の実施の形態の最適化装置のハードウェア例を示す図である。
【0196】
最適化装置3は、CPU301、RAM(Random Access Memory)302、HDD(Hard Disk Drive)303、NIC(Network Interface Card)304、出力IF(Interface)305、入力IF306、媒体リーダ307、入出力部308および確率的探索部309を有する。最適化装置3のこれらのハードウェアは最適化装置3のバスに接続される。
【0197】
CPU301は、プログラムの命令を実行するプロセッサである。CPU301は、HDD303に記憶されたプログラムやデータの少なくとも一部をRAM302にロードし、プログラムを実行する。なお、CPU301は複数のプロセッサコアを含んでもよい。また、最適化装置3は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」又は単に「プロセッサ」と言うことがある。CPU301は、例えば、温度調整部31、レプリカグループ化部32および全体制御部34の機能をCPU301により実行されるソフトウェア(制御プログラム)の処理で実現することができる。また、温度制御部33の機能も、CPU301により実現されてもよい。
【0198】
RAM302は、CPU301が実行するプログラムやCPU301が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、最適化装置3は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0199】
HDD303は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、最適化装置3は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0200】
NIC304は、ネットワーク40に接続され、ネットワーク40を介して他のコンピュータと通信を行うインタフェースである。NIC304は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC304は、無線リンクによりネットワーク40に接続されてもよい。
【0201】
出力IF305は、CPU301からの命令に従って、最適化装置3に接続されたディスプレイ41に画像を出力する。ディスプレイ41としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0202】
入力IF306は、最適化装置3に接続された入力デバイス42から入力信号を取得し、CPU301に出力する。入力デバイス42としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、最適化装置3に、複数の種類の入力デバイスが接続されていてもよい。
【0203】
媒体リーダ307は、記録媒体43に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体43として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0204】
媒体リーダ307は、例えば、記録媒体43から読み取ったプログラムやデータを、RAM302やHDD303などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU301によって実行される。なお、記録媒体43は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体43やHDD303を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0205】
入出力部308は、確率的探索部309と接続され、CPU301から確率的探索部309へのデータ入力や確率的探索部309からRAM302やCPU301へのデータ出力を制御する。
【0206】
確率的探索部309は、レプリカ交換の方法により、組合せ最適化問題に対する演算をハードウェアにより行うアクセラレータである。確率的探索部309は、探索部10a1~10aNおよび温度制御部33を有し、前述の
図9,
図10(あるいは、
図12,
図10)の手順により、イジングモデルの基底状態を探索する確率的探索を行う。
【0207】
上記の最適化装置3により、最適化装置2と同様の機能を実現することができる。
図14は、最適化装置の機能例を示す図である。
CPU301は、RAM302に記憶されたプログラムを実行することで、レプリカグループ化部32bの機能を発揮する。
【0208】
レプリカグループ化部32bは、前述のレプリカグループ化部32又はレプリカグループ化部32aに相当する。レプリカグループ化部32bは、確率的探索部309より、入出力部308を介して、各探索部の温度、エネルギーおよびステートを取得する。そして、レプリカグループ化部32bは、レプリカグループ化部32又はレプリカグループ化部32aと同様の方法により、各グループに属する探索部の数、探索部に設定する温度値およびステートを決定する。レプリカグループ化部32bは、確率的探索部309における複数の探索部を複数のグループに分割するためのセパレータ、および、各グループの探索部に設定する新規温度および新規ステートを、入出力部308を介して、確率的探索部309に出力する。
【0209】
このように、CPU101によってレプリカグループ化部32bの機能を実現してもよい。最適化装置3によれば、最適化装置2と同様に、解精度を向上させることができる。
ところで、第2~第4の実施の形態では、温度調整部31により基底状態探索により得られた温度ヒストグラム70や累積ヒストグラム80によって新温度値T
max_newを求める例(
図5)を示したが、他の温度調整方法を用いてもよい。例えば、次のような温度調整方法も考えられる。
【0210】
図15は、温度調整方法の他の例を示す図である。
温度調整部31は、初回の最適化演算結果として、探索部10a1~10aNから複数の局所解を取得する。温度調整部31は、複数個の局所解を、対応するエネルギー値の昇順(又は降順)にソートする。温度調整部31は、エネルギーの大きい方の局所解からエネルギーの小さい方の局所解へ、スピンビットを1ビットずつ変化させる過程で得られる複数のステートの各々に対応する各エネルギー値の上昇値を求める。そして、温度調整部31は、各エネルギー値の上昇値のうちの最大の上昇値Dmax(局所解間を隔てる最大のエネルギー障壁)に基づいて、式(13)により新温度値T
max_newを算出する。
【0211】
【0212】
ここで、式(13)における遷移許容確率Aは、エネルギー変化ΔE=Dmaxである状態遷移を許容する確率として、温度調整部31に予め設定される。温度調整部31は、2回目以降の最大温度値Tmaxに対応するグループの最適化演算結果から、同様にして、新温度値Tmax_newを再計算する。
【0213】
例えば、温度調整部31は、初回の最適化演算結果として、探索部10a1~10aNから局所解X1,X2,…および各局所解に対応するエネルギー値を取得する。局所解Xは、n個のスピンビットによって表される。また、局所解X1,X2,…に対して、E(X1)は、E(X2)の次に大きいとする。
【0214】
例えば、局所解X1と局所解X2との間で異なるビットの数は5であるとする。局所解X1のうち、局所解X2と異なるビットを抜き出したビット集合をX1’と表す。局所解X2のうち、局所解X1と異なるビットを抜き出したビット集合をX2’と表す。一例として、X1’=「00110」であり、X2’=「11001」である場合を考える。ビット集合X1’,X2’における同じ桁のビット同士は、局所解X1,X2でも同じ桁のビット同士である。
【0215】
系列90は、局所解X1,X2に対応する各状態変数の間を1ビット変化させた複数の状態変数の各々に対応する各エネルギー値の上昇値のうち、最大の上昇値Dmaxを例示する。例えば、温度調整部31は、局所解X1のうち、局所解X2と異なるビットを1ビットずつ変化させて、局所解X1から局所解X2への遷移をシミュレートする。温度調整部31は、式(2)、(3)に基づいて、1ビット変化させたときのエネルギー変化ΔEを、各ビット変化に対して計算する。
【0216】
系列90の例では、局所解X1,X2の間で異なるビットの数は5なので、温度調整部31は、5回のビット変化を行い、その過程で5個のΔEを得る。このとき、温度調整部31は、次に変化させるビットを、貪欲法(greedy algorithm)によって選択してもよいし、ランダムに選択してもよい。貪欲法では、温度調整部31は、変化候補となるビットのうちΔEが最小になるビットを選択する。
【0217】
例えば、温度調整部31は、X1’=「00110」から1ビットずつ順番に変化させることで、「01110」、「01100」、「11100」、「11101」、X2’=「11001」の各ビット集合を得る。なお、これらの各ビット集合の表記では、局所解X1のうちのX1’以外のビットおよび局所解X2のうちのX2’以外のビットの表記が省略されている。温度調整部31は、各ビット変化に対して、ΔEを計算する。例示したビット変化のうち、「11100」から「11101」に変化したときのΔEが系列90における最大の上昇値Dmaxであるとする。温度調整部31は、系列90について、max(ΔE)=Dmaxとして、式(13)により新温度値Tmax_newを算出する。
【0218】
なお、Tmax_newが0以下となる場合(すなわち、Dmax≦0の場合)は、温度調整部31は、新温度値Tmax_newを更新しない。
局所解がX1,X2の2個であれば、温度調整部31は、局所解X1,X2から新温度値Tmax_newを求めることができる。局所解の数が3個以上の場合、温度調整部31は、第1の局所解と、第1の局所解の次にエネルギーの大きな第2の局所解に対し、第2の局所解から第1の局所解への遷移をシミュレートして、当該遷移の過程における最大のΔE(最大のエネルギー上昇値)を得る。そして、温度調整部31は、第2の局所解から第1の局所解への遷移に対して、Tmax_newの候補値を計算する。温度調整部31は、こうして2つの局所解の組毎に求めたTmax_newの候補値のうちの最大値を、新温度値Tmax_newとして決定する。なお、温度調整部31は、2つの局所解の組毎に求めたTmax_newの候補値の平均値を、新温度値Tmax_newとして決定してもよい。
【0219】
このように、温度調整部31は、基底状態探索により得られる情報として、複数の局所解、又は、局所解間の状態遷移を辿ることで得られる最大エネルギー上昇値を取得し、取得した当該情報に基づいて、新温度値Tmax_newを計算してもよい。
【0220】
なお、第1の実施の形態の最適化装置1における各構成要素は電子回路によって実現され得る。このため、最適化装置1の探索部1a1~1aNおよび制御部20を、それぞれ探索回路および制御回路と呼ぶこともできる。状態保持部11、エネルギー計算部12および遷移制御部13を、それぞれ状態保持回路、エネルギー計算回路および遷移制御回路と呼ぶこともできる。温度調整部21、選択部22、温度制御部23および交換制御部24を、それぞれ温度調整回路、選択回路、温度制御回路および交換制御回路と呼ぶこともできる。
【0221】
また、第2,第3の実施の形態における最適化装置2における各構成要素も同様に電子回路によって実現され得る。このため、最適化装置2の各構成要素を、状態保持回路、h計算回路、Δ生成回路、セレクタ回路、E計算回路、温度調整回路、レプリカグループ化回路、温度制御回路、交換制御回路および全体制御回路と呼ぶこともできる。
【符号の説明】
【0222】
1 最適化装置
1a1,1a2,…,1aN 探索部
11 状態保持部
12 エネルギー計算部
13 遷移制御部
20 制御部
21 温度調整部
22 選択部
23 温度制御部
24 交換制御部