(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-10
(45)【発行日】2024-01-18
(54)【発明の名称】最適化装置、最適化方法及び最適化装置の制御プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240111BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2020026340
(22)【出願日】2020-02-19
【審査請求日】2022-11-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】渡部 康弘
【審査官】福西 章人
(56)【参考文献】
【文献】特開2020-004387(JP,A)
【文献】特開2019-160169(JP,A)
【文献】米国特許出願公開第2016/0063391(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
イジングモデルにより表される問題を分割した複数の部分問題のうち、何れかの部分問題についての解を、それぞれが探索する複数のイジング装置を有し、
前記複数のイジング装置のそれぞれは、
計算対象の部分問題に対応する状態変数群の値を複数グループ分記憶する記憶部と、
自身以外のイジング装置が計算する部分問題の第1の解候補に基づいて、前記複数グループ分の前記状態変数群のそれぞれに対して第2の解候補を計算する処理を、単位期間ごとに処理するグループを変えて行うとともに、同一の単位期間では、前記自身以外のイジング装置で処理されるグループとは異なるグループの前記状態変数群について前記第2の解候補を計算する探索部と、
前記単位期間が終了するたびに、前記第2の解候補を前記自身以外のイジング装置に送信する通信部と、
を有する最適化装置。
【請求項2】
前記探索部は、前記自身以外のイジング装置が計算する前記第1の解候補の値を固定して、前記状態変数群に含まれる何れか1つの状態変数の値が変化することによる前記イジングモデルのエネルギーの変化を計算する、請求項1に記載の最適化装置。
【請求項3】
前記複数のイジング装置で処理される同一グループ内での各部分問題に対応する前記状態変数群の処理順序は、所定の処理タイミングで変更される、請求項1または2に記載の最適化装置。
【請求項4】
前記複数のイジング装置のそれぞれは複数のレプリカを有し、前記複数のレプリカのそれぞれが、前記状態変数群の前記複数グループのそれぞれについて前記第2の解候補を計算する、請求項1乃至3の何れか一項に記載の最適化装置。
【請求項5】
前記探索部は、前記同一の単位期間では、前記自身以外のイジング装置で処理されるグループとは異なるグループのグループ番号が割り当てられた前記状態変数群について前記第2の解候補を計算する、請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
イジングモデルにより表される問題を分割した複数の部分問題のうち、何れかの部分問題についての解を、それぞれが探索する複数のイジング装置のそれぞれが、
計算対象の部分問題に対応する状態変数群の値を複数グループ分記憶し、
自身以外のイジング装置が計算する部分問題の第1の解候補に基づいて、前記複数グループ分の前記状態変数群のそれぞれに対して第2の解候補を計算する処理を、単位期間ごとに処理するグループを変えて行うとともに、同一の単位期間では、前記自身以外のイジング装置で処理されるグループとは異なるグループの前記状態変数群について前記第2の解候補を計算し、
前記単位期間が終了するたびに、前記第2の解候補を前記自身以外のイジング装置に送信する、
最適化方法。
【請求項7】
イジングモデルにより表される問題を分割した複数の部分問題のうち、何れかの部分問題についての解を、それぞれが探索する複数のイジング装置を有し、前記複数のイジング装置のそれぞれが、計算対象の部分問題に対応する状態変数群の値を複数グループ分記憶し、自身以外のイジング装置が計算する部分問題の第1の解候補に基づいて、前記複数グループ分の前記状態変数群のそれぞれに対して第2の解候補を計算する処理を行う、最適化装置に対して、
前記第2の解候補を計算する処理を、単位期間ごとに処理するグループを変えて行わせるとともに、同一の単位期間では、前記複数のイジング装置の間で、異なるグループの前記状態変数群について前記第2の解候補を計算させ、
前記単位期間が終了するたびに、前記第2の解候補を前記自身以外のイジング装置に送信させる、
処理をコンピュータに実行させる最適化装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置、最適化方法及び最適化装置の制御プログラムに関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型のエネルギー関数(コスト関数や目的関数とも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
【0003】
イジング装置による計算では、計算対象の問題は磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えられる。そして、疑似焼き鈍し法やレプリカ交換法(交換モンテカルロ法とも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジングモデル型のエネルギー関数の値(イジングモデルのエネルギーに相当する)が最小となる状態の探索が行われる。
【0004】
ところで、イジング装置による計算では、各状態変数間の相互作用の大きさを表す重み係数が用いられる。問題規模の増大に応じて状態変数の数が増えると、重み係数の数も増加する。問題をイジングモデルに置き換える際の柔軟性に優れた、全状態変数間の相互作用を考慮可能な全結合型のイジング装置では、記憶すべき重み係数は、状態変数の数の2乗に比例する。このため、単体の装置(たとえば、1チップ)でイジング装置を実現する場合、内部メモリでは全ての重み係数を記憶しきれない可能性がある。なお、大容量の記憶装置に重み係数を記憶し、問題を分割した部分問題をイジング計算部に転送し、転送する部分問題を適宜入れ替えて計算を行う手法があるが、各部分問題の計算に用いる重み係数の入れ替えには時間がかかる。
【0005】
従来、マルコフ連鎖モンテカルロ法の処理を高速化するために、同じイジングモデルを複数のイジングチップのそれぞれに割り当てて、並列処理を行う手法があった(たとえば、特許文献1参照)。また、問題を複数の部分問題に分割して、複数のイジングチップに割り当て、各部分問題についての計算を並列に実行する手法があった(たとえば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2018-206127号公報
【文献】特開2016-51350号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、マルコフ連鎖モンテカルロ法によるイジングモデルのエネルギーの最小化の原理は、状態変数の値の更新(1ビットの値の反転)を逐次的に行うことが原則である。
問題を部分問題に分割して複数のイジング装置で求解を行う手法を適用する場合、この原則を満たすためには、複数のイジング装置の何れかが状態変数の値の更新を行っている際に、他のイジング装置は更新を行えず休止状態となる。このため、各イジング装置における演算器を有効に活用できず、計算効率が悪化してしまう。
【0008】
1つの側面では、本発明は、計算効率を向上可能な最適化装置、最適化方法及び最適化装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの実施態様では、イジングモデルにより表される問題を分割した複数の部分問題のうち、何れかの部分問題についての解を、それぞれが探索する複数のイジング装置を有し、前記複数のイジング装置のそれぞれは、計算対象の部分問題に対応する状態変数群の値を複数グループ分記憶する記憶部と、自身以外のイジング装置が計算する部分問題の第1の解候補に基づいて、前記複数グループ分の前記状態変数群のそれぞれに対して第2の解候補を計算する処理を、単位期間ごとに処理するグループを変えて行うとともに、同一の単位期間では、前記自身以外のイジング装置で処理されるグループとは異なるグループの前記状態変数群について前記第2の解候補を計算する探索部と、前記単位期間が終了するたびに、前記第2の解候補を前記自身以外のイジング装置に送信する通信部と、を有する最適化装置が提供される。
【0010】
また、1つの実施態様では最適化方法が提供される。
また、1つの実施態様では最適化装置の制御プログラムが提供される。
【発明の効果】
【0011】
1つの側面では、本発明は、最適化装置における計算効率を向上できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の最適化装置の一例を示す図である。
【
図2】制御装置による最適化装置の制御の一例の流れを示すフローチャートである。
【
図3】最適化装置の動作の一例の流れを示すフローチャートである。
【
図4】第2の実施の形態の最適化装置の一例を示す図である。
【
図5】各イジング装置における計算対象の部分問題及び局所場と計算に用いる重み係数の一例を示す図である。
【
図8】コントローラのハードウェア例を示すブロック図である。
【
図9】各レプリカグループにおけるステートの処理順序を一定とした場合の各イジング装置の動作の一例を示す図である。
【
図10】単位期間T4の探索処理後のステートの転送例を示す図である。
【
図11】各レプリカグループにおけるステートの処理順序を、MCMC処理単位で変更する場合の各イジング装置の動作の一例を示す図である。
【
図12】単位期間T10の探索処理後のステートの転送例を示す図である。
【発明を実施するための形態】
【0013】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
【0014】
第1の実施の形態の最適化装置10は、複数のイジング装置11a1,11a2,…,11anを有する。
イジング装置11a1~11anのそれぞれは、イジングモデルにより表される問題を分割した複数の部分問題のうち、何れかの部分問題の解(イジングモデルのエネルギーを最小化する状態変数の値の組合せ)を探索する。イジングモデルにより表される問題としては、各種の離散最適化問題がある。
【0015】
問題全体のイジングモデルのエネルギーは、たとえば、以下の式(1)に示すようなエネルギー関数E(x)で定義される。
【0016】
【0017】
右辺第1項は、イジングモデルに含まれるN個の状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み(たとえば、結合の強さ)を示す重み係数である。なお、Wii=0である。また、Wij=Wjiである。
【0018】
右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアス係数を示している。cは定数である。
【0019】
たとえば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を、0または1の値をとるビットと呼ぶこともできる。
【0020】
式(1)の値が最小となる状態変数の値の組合せが問題の解となる。
一方、N個(Nビット)の状態変数のうちの一部である、i=1~K(K<N)の状態変数を扱う部分問題についてのイジングモデルのエネルギーは、たとえば、以下の式(2)に示すようなエネルギー関数E’(x)で定義される。
【0021】
【0022】
式(2)において、b’iとc’は、式(3)、式(4)のように表せる。
【0023】
【0024】
【0025】
i=1~K(K<N)の状態変数を扱う部分問題の解を探索する際、i=K+1~Nの状態変数の値は固定される。式(3)の右辺の第2項は、固定値とされた状態変数によるバイアス係数への寄与分を表し、式(4)の右辺の第3項及び第4項は、固定値とされた状態変数による定数への寄与分を表す。
【0026】
以下では、N個の状態変数をK個ずつn分割してn個の部分問題が得られている場合について説明する。この場合、イジング装置11a1の計算対象の部分問題に対応する状態変数群(状態変数の組)はx1~xKであり、イジング装置11a2の計算対象の部分問題に対応する状態変数群はxK+1~x2Kである。また、イジング装置11anの計算対象の部分問題に対応する状態変数群はx(n-1)K+1~xNである。
【0027】
イジング装置11a1~11anは、記憶部11b1,11b2,…,11bn、探索部11c1,11c2,…,11cn、通信部11d1,11d2,…,11dnを有する。
【0028】
記憶部11b1~11bnは、計算対象の部分問題に対応する状態変数群の値を複数グループ分(以下の例ではnグループ分とする)記憶する。たとえば、記憶部11b1は、イジング装置11a1が担当する部分問題に対応する状態変数群(x1~xK)を、nグループ分記憶する。
【0029】
記憶部11b1~11bnはさらに、探索部11c1~11cnにおける処理で用いられる重み係数などを記憶する。たとえば、イジング装置11a1の記憶部11b1は、式(2)、式(3)を計算するために用いる重み係数を記憶する。式(2)の右辺の第1項に含まれるWijは、x1~xKの間の重み係数である。一方、式(3)の右辺の第2項に含まれるWijは、x1~xKのそれぞれとxK+1~xNのそれぞれとの間の重み係数である。
【0030】
なお、式(4)の右辺の第3項に含まれるWijは、xK+1~xNの間の重み係数であり、記憶部11b1が記憶しなくてもよい。固定値とされるxK+1~xNの値と、それらのバイアス値、xK+1~xNの間の重み係数、及びcに基づいて、イジング装置11a1~11anの外部の制御装置15が、式(4)のc’を計算すればよい。その場合、制御装置15によって計算されたc’は、イジング装置11a1に送信され、記憶部11b1に記憶され、E’(x)の計算に用いられる。このため、Wij=Wjiである場合、記憶部11b1に記憶する重み係数は、N×N個のうちK×N個でよい。
【0031】
その他の記憶部11b2~11bnについても同様であり、それぞれK×N個の重み係数を記憶すればよい。
記憶部11b1~11bnは、たとえば、SRAM(Static Random Access Memory)、HBM(High Bandwidth Memory)などの電子回路により実現される。イジング装置11a1において、x1~xKの間の重み係数については、x1~xKの何れかの値を更新した場合のエネルギー変化の計算に用いられ頻繁に使用されるため、たとえば、SRAMに記憶される。
【0032】
探索部11c1~11cnのそれぞれは、自身以外のイジング装置が計算する部分問題の解候補に基づいて、グループ番号(g0,g1,…,gn-1)が割り当てられたnグループ分の状態変数群のそれぞれに対して部分問題の解候補を計算する。たとえば、イジング装置11a1の探索部11c1は、nグループ分(以下グループg0,g1,…,gn-1とする)の状態変数群(x1~xK)のそれぞれに対して解候補を計算する。
【0033】
解候補の計算は、疑似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法を用いて行われる。たとえば、探索部11c1は、x1~xKのうちの1つが変化(更新)することによるE’(x)の変化(エネルギー変化)を、x1~xKのそれぞれについて計算し、E’(x)が小さくなる変化が優先される形で確率的に受け入れる。x1~xKのうち、xiが変化することによるエネルギー変化(ΔE’i)は以下の式(5)のように表せる。
【0034】
【0035】
式(5)において、xiが1から0に変化するとき、Δxiは-1となり、状態変数xiが0から1に変化するとき、Δxiは1となる。なお、hiはローカルフィールド(局所場)と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔE’iとなる。
【0036】
なお、xjの値が変化することに伴うhiの変化は、Δxjが1の場合、+Wij、Δxjが-1の場合、-Wijと表せる。つまり、Δxjに応じて、元のhiにWijを加算するか、減算するかによってhiを更新できる。
【0037】
ただし、探索部11c1は、自身以外のイジング装置が計算する部分問題の解候補の値(xK+1~xNの値)は固定する。また、探索部11c1は、E’(x)が大きくなる変化についても確率的に許容する。探索部11c1は、このような処理を、探索終了条件(たとえば、所定の繰り返し回数が終了したかなど)が満たされるまで繰り返し、探索終了条件が満たされたときのx1~xkの値を、単位時間における解候補とする。
【0038】
また、探索部11c1は、各グループについての部分問題の解候補が得られたときのE’(x)を、式(2)にしたがって計算する。
なお、複数のイジング装置11a1~11anのそれぞれが、各グループについて、複数のレプリカを有している場合、探索部11c1では、複数のレプリカのそれぞれが、nグループのそれぞれについて解候補を計算するとともに、E’(x)を計算する。
【0039】
探索部11c2~11cnのそれぞれも上記と同様の動作を行う。
ただし、探索部11c1~11cnのそれぞれは、解候補を計算する処理を、単位期間ごとに処理するグループを変えて行う。また、探索部11c1~11cnのそれぞれは、同一の単位期間では、自身以外のイジング装置で処理されるグループとは異なるグループの状態変数群について解候補を計算する。すなわち、探索部11c1~11cnのそれぞれは、同一の単位期間では、自身以外のイジング装置で処理されるグループとは異なるグループのグループ番号が割り当てられた状態変数群について解候補を計算する。たとえば、探索部11c1がグループg0のx1~xKについて解候補を計算している単位期間では、探索部11c2~11cnはグループg0とは異なるグループの状態変数群について解候補を計算する。
【0040】
探索部11c1~11cnは、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路にて実現できる。また、これに限らず、探索部11c1~11cnは、一部またはすべてがCPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサがプログラムを実行することによるソフトウェア処理にて実現されるようにしてもよい。
【0041】
通信部11d1~11dnは、単位期間が終了するたびに、計算した解候補を自身以外のイジング装置に送信する。たとえば、通信部11d1は、グループg0のx1~xKについて計算した解候補を、イジング装置11a2~11anに送信する。
【0042】
通信部11d1~11dnは、各種の電子回路によって実現される。たとえば、通信部11d1~11dnとして、PCI(Peripheral Component Interconnect) Expressなどのインタフェース規格により通信を行う電子回路が用いられる。
【0043】
制御装置15は、最適化装置10の制御を行う。制御装置15は、たとえば、問題の部分問題への分割を行い、イジング装置11a1~11anのそれぞれへの部分問題の設定、動作設定、各単位期間における処理対象のグループの設定、計算した解候補の転送指示などを行う。また、制御装置15は、イジング装置11a1~11anが送信する状態変数群の値を受信して、式(4)によりc’を計算してもよい。また、制御装置15は、イジング装置11a1~11anが送信する各部分問題の解候補に対応するイジングモデルのエネルギーを受信し、受信したエネルギーの総和により、式(1)のエネルギーE(x)を計算してもよい。
【0044】
制御装置15は、CPUやGPUなどのプロセッサであってもよいし、PC(Personal Computer)などのコンピュータであってもよい。制御装置15は、図示しないメモリに記憶された最適化装置10の制御プログラムを実行することで、上記のような処理を行う。
【0045】
以下、第1の実施の形態の最適化装置10の動作と、制御装置15による最適化装置10の制御の一例を説明する。
図2は、制御装置による最適化装置の制御の一例の流れを示すフローチャートである。
【0046】
制御装置15は、計算対象の問題の規模や、イジング装置11a1~11anの数などに応じて、部分問題のサイズなどの動作パラメータを決定する(ステップS1)。Nビットの問題をn分割する場合、制御装置15は、部分問題のサイズをN/nビットとする。
【0047】
なお、イジング装置11a1~11anのそれぞれにおいて、解候補の計算の際にレプリカ交換法が用いられる場合、レプリカ数がR個であるとすると、制御装置15は、グループ当たりのレプリカ数=R/nを動作パラメータの1つとして決定する。動作パラメータの他の例としては、疑似焼き鈍し法やレプリカ交換法で用いられる温度パラメータの最高値や最低値、温度パラメータの変更スケジュールなどがある。
【0048】
制御装置15は、決定した動作パラメータに基づいて問題分割を行い(ステップS2)、イジング装置11a1~11anのそれぞれに部分問題を設定する(ステップS3)。部分問題の設定は、たとえば、各部分問題に対応する状態変数群の各状態変数のインデックス、各部分問題の計算に用いる重み係数及びバイアス係数をイジング装置11a1~11anに送信することで行われる。制御装置15は、x1~xNの初期値をイジング装置11a1~11anに送信してもよい。たとえば、イジング装置11a1には、インデックス(i)=1~Kと、x1~xNの初期値と、x1~xKの間の重み係数と、x1~xKのそれぞれとxK+1~xNのそれぞれとの間の重み係数と、b1~bkが送信される。
【0049】
また、制御装置15は、イジング装置11a1~11anに対して動作設定を行う(ステップS4)。ステップS4の処理では、イジング装置11a1~11anに対して、探索部11c1~11cnが実行する解候補の計算処理(以下、探索処理という場合もある)の単位期間における繰り返し回数や、各種動作パラメータの指定が行われる。
【0050】
さらに制御装置15は、処理対象のグループの設定を行う(ステップS5)。たとえば、制御装置15は、同一グループ内での各状態変数群についての処理順序を、x1~xK,xK+1~x2K,…,x(n-1)K+1~xNの順にするように、イジング装置11a1~11anのそれぞれに処理対象のグループを設定する。また、制御装置15は、同一グループ内での各部分問題に対応する各状態変数群についての処理順序を、所定の処理タイミングで変更してもよい。たとえば、制御装置15は、乱数値を用いて上記の処理順序をランダムに決定してもよい。
【0051】
ただし、制御装置15は、探索処理の単位期間ごとに、同じイジング装置で処理されるグループを変えさせるとともに、同一の単位期間では、イジング装置11a1~11anの間で、異なるグループが処理されるように処理順序を設定する。
【0052】
その後、制御装置15は、イジング装置11a1~11anのそれぞれの探索処理の実行を指示する(ステップS6)。そして、制御装置15は、イジング装置11a1~11anの全てについて単位期間の探索処理が完了していない場合(ステップS7:NO)、完了するまで待機し、探索処理が完了した場合(ステップS7:YES)、ステップS8の処理に進む。
【0053】
ステップS8の処理では、制御装置15は、イジング装置11a1~11anに対して、解候補となるステートの転送指示と後処理指示を行う。後処理には、たとえば、次の単位期間の探索処理のための式(3)の計算や、式(2)のE’(x)の計算を含む。
【0054】
その後、制御装置15は、イジング装置11a1~11anのそれぞれが計算した各グループのE’(x)と解候補を受信し、グループごとのE’(x)の総和により、全体エネルギー(式(1)のE(x))をグループごとに計算する(ステップS9)。
【0055】
制御装置15は、所定の探索終了条件(たとえば、所定の繰り返し回数が終了したか、目標エネルギーに到達したかなど)が満たされた場合、全探索が完了したと判定し(ステップS10:YES)、最適化装置10に探索終了を指示する(ステップS11)。そして、制御装置15は、最適化装置10の制御を終了する。制御装置15は、所定の探索終了条件が満たされていない場合、全探索が完了していないと判定し(ステップS10:NO)、ステップS5からの処理を繰り返す。
【0056】
制御装置15は、たとえば、全探索が完了したと判定するまでに、全グループにおいて最小のエネルギーが得られたときのx1~xNの値を、問題に対する解として出力する。制御装置15は、得られた解を、たとえば、図示しない表示装置に出力して表示させる。または、制御装置15は、得られた解を、図示しないメモリに出力して記憶させてもよいし、ネットワークを介して他の情報処理装置に送信するようにしてもよい。
【0057】
以下、最適化装置10の動作(最適化装置10による最適化方法)の一例の流れを説明する。
図3は、最適化装置の動作の一例の流れを示すフローチャートである。
【0058】
最適化装置10のイジング装置11a1~11anは、制御装置15による部分問題の設定を受け付ける(ステップS20)。ステップS20の処理では、イジング装置11a1~11anの通信部11d1~11dnは、たとえば、各部分問題に対応する状態変数群の各状態変数のインデックス、各部分問題の計算に用いる重み係数及びバイアス係数を制御装置15から受信する。記憶部11b1~11bnは、通信部11d1~11dnが受信したインデックスと、x1~xNの初期値と、重み係数及びバイアス係数を記憶する。たとえば、イジング装置11a1の記憶部11b1は、インデックス(i)=1~Kと、x1~xNの初期値と、x1~xKの間の重み係数と、x1~xKのそれぞれとxK+1~xNのそれぞれとの間の重み係数と、バイアス係数b1~bKを記憶する。
【0059】
また、イジング装置11a1~11anは、制御装置15による動作設定を受け付ける(ステップS21)。ステップS21の処理では、イジング装置11a1~11anの通信部11d1~11dnは、探索部11c1~11cnの探索処理の単位期間における繰り返し回数や各種動作パラメータを受信する。記憶部11b1~11bnは、通信部11d1~11dnが受信した繰り返し回数や各種動作パラメータを記憶する。
【0060】
さらに、制御装置15による処理対象のグループの設定を受け付ける(ステップS22)。ステップS22の処理では、通信部11d1~11dnは、処理対象のグループを示す情報を受信し、記憶部11b1~11bnは、その情報を記憶する。
【0061】
その後、イジング装置11a1~11anは、制御装置15から探索処理の実行指示を受け付けると(ステップS23)、記憶部11b1~11bnに記憶された動作パラメータや処理対象グループを示す情報などに基づいて、探索処理を行う(ステップS24)。
【0062】
最初の単位期間の探索処理では、探索部11c1~11c2は、自身以外のイジング装置が計算する状態変数群の初期値を固定値として、探索処理に用いるエネルギー変化を計算する。たとえば、探索部11c1は、式(5)のΔE’iを計算するために、局所場(hi)を計算する。hiを計算するためのb’iは、式(3)により計算できる。式(3)におけるxjが上記の固定値である。
【0063】
制御装置15による処理順序の設定により、探索処理は、単位期間ごとに処理する状態変数群のグループを変えて行われる。また、同一の単位期間では、自身以外のイジング装置で処理されるグループとは異なるグループの状態変数群について探索処理が行われる。
【0064】
図1の例では、イジング装置11a1の探索部11c1がグループg
0のx
1~x
Kについて探索処理を行っている単位期間では、イジング装置11a2の探索部11c2はグループg
1のx
K+1~x
2Kについて探索処理を行っている。また、その単位期間では、探索部11cnはグループg
n-1のx
(n-1)K+1~x
Nについて探索処理を行っている。
【0065】
探索部11c1~11cnは、たとえば、記憶部11b1~11bnに記憶された繰り返し回数の探索処理が行われたか否かに基づいて、単位期間における探索処理が完了したか否かを判定する(ステップS25)。単位期間における探索処理が完了していないと判定された場合、ステップS24の処理が繰り返される。単位期間における探索処理が完了したと判定された場合、ステップS26の処理が行われる。
【0066】
ステップS26の処理では、通信部11d1~11dnは、制御装置15に対して、単位期間の探索処理が完了した旨を通知する(ステップS26)。
その後、イジング装置11a1~11anのそれぞれは、制御装置15からステート転送及び後処理の指示を受け付けると(ステップS27)、解候補となるステートを自身以外のイジング装置に転送するとともに後処理を行う(ステップS28)。なお、解候補となるステートは、制御装置15にも転送されてもよい。
【0067】
たとえば、
図1のように、イジング装置11a1の通信部11d1は、今回の単位期間における探索処理で得られた解候補となるステートであるグループg
0のx
1~x
Kを、イジング装置11a2~11anに転送する。また、イジング装置11a2の通信部11d2は、今回の単位期間における探索処理で得られた解候補となるステートであるグループg
1のx
K+1~x
2Kを、イジング装置11a2以外のイジング装置に転送する。また、イジング装置11anの通信部11dnは、今回の単位期間における探索処理で得られた解候補となるステートであるグループg
n-1のx
(n-1)K+1~x
Nを、イジング装置11an以外のイジング装置に転送する。転送されたステートを受信したイジング装置11a1~11anの記憶部11b1~11bnは、受信したステートを記憶する。
【0068】
そして、探索部11c1~11cnは、後処理として、記憶部11b1~11bnに記憶されたステート、自身が計算を担当する部分問題に対応する状態変数群の値、重み係数などに基づいて、各グループについて、次の探索処理のための局所場の計算を行う。局所場の計算は各グループについて行われる。
【0069】
たとえば、探索部11c1は、式(5)のΔE’iを計算するために用いるhiを計算する。hiを計算するためのb’iは、式(3)により計算できる。式(3)におけるxjとして、xK+1~xN(イジング装置11a2~11anから転送されたステート)が固定値として用いられる。
【0070】
探索部11c2~11cnにおいても、同様の式を用いて局所場が計算される。たとえば、探索部11c2が局所場を計算する際には、式(3)、式(5)において、iをK+1~2Kとし、式(3)の右辺の第2項を、j=1~KのWijxjの総和と、j=2K+1~NのWijxjの総和とを加算したものとすればよい。また、式(5)ではKの代わりに2Kを用い、jをK+1~2Kとすればよい。
【0071】
また、後処理において、探索部11c1~11cnは、各グループについてE’(x)の計算を行う。探索部11c1は、式(2)によりE’(x)を計算する。なお、c’は、制御装置15が式(4)に基づいて計算したものを用いる。探索部11c2~11cnについても、同様の式を用いてE’(x)を計算する。たとえば、探索部11c2がE’(x)を計算する際には、式(2)において、右辺の第2項は、i,j=K+1~2Kの範囲におけるWijxixjの総和とすればよい。
【0072】
その後、イジング装置11a1~11anの通信部11d1~11dnは、各部分問題についてのE’(x)を制御装置15に送信する(ステップS29)。また、イジング装置11a1~11anの通信部11d1~11dnは、制御装置15から探索終了の指示があった場合(探索終了の指示を受信した場合)(ステップS30:YES)、探索部11c1~11cnは、探索処理を終了する。制御装置15から探索終了の指示がない場合(ステップS30:NO)、ステップS22からの処理が繰り返される。
【0073】
なお、上記
図2、
図3の処理順序は一例であり、適宜処理順序を入れ替えてもよい。
以上のような第1の実施の形態の最適化装置10によれば、イジング装置11a1~11anのそれぞれは、自身が計算を担当する部分問題に対応する状態変数群をnグループ分用いている。そして、イジング装置11a1~11anのそれぞれは、探索処理を、単位期間ごとに処理するグループを変えて行うとともに、同一の単位期間では、自身以外のイジング装置で処理されるグループとは異なるグループの状態変数群について探索処理を行う。これによって、各グループにおいて、状態変数の値の更新は逐次的に行われるため、マルコフ連鎖モンテカルロ法によるイジングモデルのエネルギーの最小化の原理に沿っている。また、あるイジング装置において、あるグループの状態変数群について探索処理が行われている間に、他のイジング装置では別のグループの状態変数群について探索処理が行えるので、各イジング装置が効率よく動作するようになり、計算効率を向上できる。これにより、大規模な問題に対する最適化装置10の求解性能が向上する。
【0074】
(第2の実施の形態)
図4は、第2の実施の形態の最適化装置の一例を示す図である。
第2の実施の形態の最適化装置20は、4つのイジング装置21,22,23,24を有する。すなわち、第2の実施の形態の最適化装置20は、第1の実施の形態の最適化装置10において、n=4の例である。なお、最適化装置20は、コントローラ30によって制御される。コントローラ30は、前述の制御装置15の一例であり、制御装置15と同様の機能を有する。
【0075】
イジング装置21~24のそれぞれは、第1の実施の形態の最適化装置10のイジング装置11a1~11anのそれぞれと同様の機能を有する。
以下の例では、x1~xNによるNビットのイジングモデルで表される問題を4分割して、K(=N/4)ビットずつイジング装置21~24に割り当てるものとする。
【0076】
図5は、各イジング装置における計算対象の部分問題及び局所場と計算に用いる重み係数の一例を示す図である。
x
1~x
Nのうち、x
1~x
Kを示すX0が、イジング装置21が計算する部分問題に対応するステートである。x
1~x
Nのうち、x
K+1~x
2Kを示すX1が、イジング装置22が計算する部分問題に対応するステートである。x
1~x
Nのうち、x
2K+1~x
3Kを示すX2が、イジング装置23が計算する部分問題に対応するステートである。x
1~x
Nのうち、x
3K+1~x
Nを示すX3が、イジング装置24が計算する部分問題に対応するステートである。
【0077】
イジング装置21~24において、上記各ステートは、それぞれ4グループ分用いられる。以下、4つのグループをレプリカグループ0,1,2,3と呼ぶ。また以下では、レプリカグループ0~3のそれぞれにおけるX0を、X0-g0、X0-g1、X0-g2、X0-g3と表記する。また、レプリカグループ0~3のそれぞれにおけるX1、X2、X3についても同様に表記する。
【0078】
イジング装置21~24において計算される局所場についても、4グループのそれぞれについて計算される。以下では、イジング装置21がレプリカグループ0~3のそれぞれについて計算する局所場を、LF0-g0、LF0-g1、LF0-g2、LF0-g3と表記する。また、イジング装置22~24がレプリカグループ0~3のそれぞれについて計算される局所場についても同様に表記する。
【0079】
図5には、N×N個の重み係数による重み係数行列を4×4の重み係数群(W00~W33)に分割した例が示されている。
イジング装置21が用いる重み係数群はW00、W10、W20、W30である。W00は、x
1~x
Kの間の重み係数からなる。W10は、x
1~x
Kのそれぞれとx
K+1~x
2Kとの間の重み係数からなり、W20は、x
1~x
Kのそれぞれとx
2K+1~x
3Kとの間の重み係数からなり、W30は、x
1~x
Kのそれぞれとx
3K+1~x
Nとの間の重み係数からなる。
【0080】
イジング装置22が用いる重み係数群はW01、W11、W21、W31である。W11は、xK+1~x2Kの間の重み係数からなる。W01は、xK+1~x2Kのそれぞれとx1~xKとの間の重み係数からなり、W21は、xK+1~x2Kのそれぞれとx2K+1~x3Kとの間の重み係数からなり、W31は、xK+1~x2Kのそれぞれとx3K+1~xNとの間の重み係数からなる。
【0081】
イジング装置23が用いる重み係数群はW02、W12、W22、W32である。W22は、x2K+1~x3Kの間の重み係数からなる。W02は、x2K+1~x3Kのそれぞれとx1~xKとの間の重み係数からなり、W12は、x2K+1~x3KのそれぞれとxK+1~x2Kとの間の重み係数からなり、W32は、x2K+1~x3Kのそれぞれとx3K+1~xNとの間の重み係数からなる。
【0082】
イジング装置24が用いる重み係数群はW03、W13、W23、W33である。W33は、x3K+1~xNの間の重み係数からなる。W03は、x3K+1~xNのそれぞれとx1~xKとの間の重み係数からなり、W13は、x3K+1~xNのそれぞれとxK+1~x2Kとの間の重み係数からなり、W23は、x3K+1~xNのそれぞれとx2K+1~x3Kとの間の重み係数からなる。
【0083】
図6は、イジング装置の一例を示す図である。
図6は、イジング装置21の一例が示されている。イジング装置22~24についてもイジング装置21と同様の構成により実現される。
【0084】
イジング装置21は、探索部21a、通信部21b、ローカルメモリ21c1、HBM21c2を有する。たとえば、探索部21a、通信部21b、ローカルメモリ21c1は、1チップの半導体集積回路にて実現される。
【0085】
探索部21aは、第1の実施の形態の最適化装置10の探索部11c1の一例であり、解探索部21a1とLF計算部21a2を有する。
解探索部21a1は、自身以外のイジング装置であるイジング装置22~24が計算するステートに基づいて、式(2)に示したようなE’(x)を最小化するX0-g0~X0-g3を探索する。
【0086】
探索処理は、疑似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法を用いて行われる。たとえば、解探索部21a1は、式(5)により、x1~xKのうちの1つが変化することによるΔE’iを、x1~xKのそれぞれについて計算し、E’(x)が小さくなる変化を優先的に受け入れ、ステートの更新を行う。なお、解探索部21a1は、E’(x)が大きくなる変化についても確率的に許容する。ΔE’iを計算するために用いる式(5)のhiは、ステートの更新に伴い更新される。
【0087】
ところで、xjが更新される場合、hiの変化分は、Δxjが1の場合、+Wij、Δxjが-1の場合、-Wijと表せる。このため、解探索部21a1は、hiを図示しないレジスタに保持しておき、Δxjに応じて、そのhiにWijを加算するか、減算するかによってhiを更新できる。
【0088】
解探索部21a1は、このような処理を、レプリカグループ0~3のそれぞれについて単位期間の探索終了条件(たとえば、所定の繰り返し回数が終了したかなど)が満たされるまで繰り返す。なお、解探索部21a1は、コントローラ30の制御に基づいて、探索処理を、単位期間ごとに処理するレプリカグループを変えて行う。また、解探索部21a1は、同一の単位期間では、自身以外のイジング装置で処理されるレプリカグループとは異なるレプリカグループのステートについて探索処理を実行する。
【0089】
LF計算部21a2は、イジング装置22~24が計算するステートを固定して、局所場を計算する。
図7は、ステートの固定の一例を示す図である。
【0090】
図7では、イジング装置22が計算するステートに含まれるx
K+1や、イジング装置24が計算するステートに含まれるx
Nが固定ビット(
図7の例ではx
K+1=1、x
N=0)とされている例が示されている。
【0091】
LF計算部21a2は、固定ビットの値と、解探索部21a1が計算するステートに含まれる状態変数と固定ビットとの間の重み係数を用いて、h
i(i=1~K)を計算するために用いるb’
iを式(3)により確定させることができる。たとえば、
図7のx
Kとx
K+1との間の重み係数(W
K,K+1)は、b’
Kを計算するために用いられ、x
3とx
K+1との間の重み係数(W
3,K+1)は、b’
3を計算するために用いられる。
【0092】
探索部21aは、たとえば、ASICやFPGAなどの特定用途の電子回路にて実現できる。また、これに限らず、探索部21aは、一部またはすべてがCPUやGPUなどのプロセッサがプログラムを実行することによるソフトウェア処理にて実現されるようにしてもよい。
【0093】
通信部21bは、第1の実施の形態の最適化装置10の通信部11d1と同様の機能を有し、単位期間の探索処理が終了するたびに、探索処理により得られたステートをイジング装置22~24に送信する。通信部21bは、たとえば、PCI Expressなどのインタフェース規格により通信を行う送受信回路である。
【0094】
ローカルメモリ21c1は、探索部21aが現在処理中のレプリカグループの探索処理に用いるデータを記憶する。ローカルメモリ21c1は、たとえば、
図5のW00や、解探索部21a1が現在処理中のレプリカグループの探索処理に用いる局所場(
図5のLF0-g0~LF0-g3の何れか)及びステート(
図5のX0-g0~X0-g3の何れか)などを記憶する。また、ローカルメモリ21c1は、LF計算部21a2が式(3)のb’
iを計算する際には、
図5のW10、W20、W30についても記憶する。ローカルメモリ21c1として、たとえば、SRAMが用いられる。
【0095】
HBM21c2は、イジング装置21の計算対象の部分問題の計算に用いる全てのデータを記憶する。HBM21c2は、たとえば、
図5のX0-g0~X0-g3、LF0-g0~LF0-g3、W00、W10、W20、W30を記憶する。解探索部21a1やLF計算部21a2における処理に応じて、それらの処理に用いられるデータがHBM21c2からローカルメモリ21c1に読み出される。
【0096】
図8は、コントローラのハードウェア例を示すブロック図である。
コントローラ30は、たとえばコンピュータであり、CPU31、RAM(Random Access Memory)32、HDD(Hard Disk Drive)33、画像信号処理部34、入力信号処理部35、媒体リーダ36、通信インタフェース37、インタフェース38を有する。上記ユニットは、バスに接続されている。
【0097】
CPU31は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU31は、HDD33に記憶されたプログラムやデータの少なくとも一部をRAM32にロードし、プログラムを実行する。なお、CPU31は複数のプロセッサコアを備えてもよく、コントローラ30は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0098】
RAM32は、CPU31が実行するプログラムやCPU31が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、コントローラ30は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0099】
HDD33は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、最適化装置20の制御をコントローラ30に実行させる制御プログラムが含まれる。なお、コントローラ30は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0100】
画像信号処理部34は、CPU31からの命令にしたがって、コントローラ30に接続されたディスプレイ34aに画像を出力する。ディスプレイ34aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0101】
入力信号処理部35は、コントローラ30に接続された入力デバイス35aから入力信号を取得し、CPU31に出力する。入力デバイス35aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、コントローラ30に、複数の種類の入力デバイスが接続されていてもよい。
【0102】
媒体リーダ36は、記録媒体36aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体36aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0103】
媒体リーダ36は、たとえば、記録媒体36aから読み取ったプログラムやデータを、RAM32やHDD33などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU31によって実行される。なお、記録媒体36aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体36aやHDD33を、コンピュータ読み取り可能な記録媒体ということがある。
【0104】
通信インタフェース37は、ネットワーク37aに接続され、ネットワーク37aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース37は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0105】
インタフェース38は、最適化装置20に接続され、CPU31と最適化装置20との間でデータの送受信を行う。インタフェース38は、たとえば、PCI Expressなどの有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【0106】
なお、
図1に示した制御装置15についても、たとえば、上記のようなハードウェアを用いて実現できる。
以下、第2の実施の形態の最適化装置20の動作及び、コントローラ30による最適化装置20の制御例を説明する。
【0107】
図2に示した制御装置15による最適化装置10の制御の一例の流れは、コントローラ30による最適化装置20の制御にも適用できる。以下、
図2を用いて、コントローラ30による最適化装置20の制御の一例の流れを簡単に説明する。
【0108】
ステップS1の動作パラメータ決定処理では、コントローラ30は、Nビットの問題に対する部分問題のサイズをN/4ビットとする。また、イジング装置21~24のそれぞれにおいて、探索処理の際にレプリカ交換法が用いられる場合、レプリカ数がR個であるとすると、コントローラ30は、グループ当たりのレプリカ数=R/4を動作パラメータの1つとして決定する。たとえば、R=8とした場合、グループあたりのレプリカ数は2つとなる。
【0109】
ステップS2,S3の処理では、コントローラ30は、決定した動作パラメータに基づいて問題分割を行い、イジング装置21~24のそれぞれに部分問題を設定する。
ステップS4,S5の処理では、コントローラ30は、イジング装置21~24に対して動作設定を行い、処理対象のレプリカグループの設定を行う。
【0110】
ステップS6の処理では、コントローラ30は、イジング装置21~24のそれぞれの探索処理の実行を指示する。コントローラ30は、イジング装置21~24の全てについて単位期間の探索処理が完了していない場合(ステップS7:NO)には、完了するまで待機し、探索処理が完了した場合(ステップS7:YES)には、ステップS8の処理に進む。
【0111】
ステップS8の処理では、コントローラ30は、イジング装置21~24に対して、解候補となるステートの転送指示と後処理指示を行う。
ステップS9の処理では、コントローラ30は、イジング装置21~24のそれぞれが計算したレプリカグループ0~3のE’(x)と解候補であるステートを受信し、全体エネルギーをレプリカグループ0~3のそれぞれについて計算する。
【0112】
コントローラ30は、所定の探索終了条件が満たされた場合、全探索が完了したと判定し(ステップS10:YES)、最適化装置20に探索終了を指示し(ステップS11)、最適化装置20の制御を終了する。コントローラ30は、所定の探索終了条件が満たされていない場合、全探索が完了していないと判定し(ステップS10:NO)、ステップS5からの処理を繰り返す。
【0113】
なお、コントローラ30は、たとえば、全探索が完了したと判定するまでに、全グループにおいて最小のエネルギーが得られたときのx1~xNの値を、問題に対する解として出力する。コントローラ30は、得られた解を、たとえば、ディスプレイ34aに出力して表示させる。または、コントローラ30は、得られた解を、HDD33に記憶させてもよいし、ネットワーク37aを介して他の情報処理装置に送信するようにしてもよい。
【0114】
図3に示した最適化装置10の動作の一例の流れは、最適化装置20の動作にも適用できる。以下、
図3を用いて、最適化装置20の動作の一例の流れを簡単に説明する。
ステップS20の処理では、イジング装置21~24は、たとえば、各部分問題に対応する状態変数群の各状態変数のインデックス、x
1~x
Nの初期値、各部分問題の計算に用いる重み係数及びバイアス係数をコントローラ30から受信する。受信したデータは、イジング装置21~24が有するHBM(たとえば、
図6のHBM21c2)に記憶される。
【0115】
ステップS21,S22の処理において、イジング装置21~24は、探索処理の単位期間における繰り返し回数や各種動作パラメータ、処理対象のレプリカグループを示す情報をコントローラ30から受信する。そして、イジング装置21~24は、それらをローカルメモリ(たとえば、
図6のローカルメモリ21c1)に記憶する。
【0116】
ステップS23の処理では、イジング装置21~24は、コントローラ30から探索処理の実行指示を受け付け、ステップS24の探索処理を行う。
イジング装置21~24は、繰り返し回数の探索処理が行われたか否かに基づいて、単位期間における探索処理が完了したか否かを判定する(ステップS25)。単位期間における探索処理が完了していないと判定された場合、ステップS24の処理が繰り返される。単位期間における探索処理が完了したと判定された場合、ステップS26の処理が行われる。
【0117】
ステップS26の処理では、イジング装置21~24は、コントローラ30に対して探索処理が完了した旨を通知する。そして、ステップS27,S28の処理では、イジング装置21~24は、コントローラ30からステート転送及び後処理の指示を受け付けると、解候補となるステートを自身以外のイジング装置やコントローラ30に転送するとともに後処理を行う。
【0118】
その後、ステップS29の処理において、イジング装置21~24は、各部分問題について後処理で計算したE’(x)をコントローラ30に送信する。また、イジング装置21~24は、コントローラ30から探索終了の指示があった場合(ステップS30:YES)、探索処理を終了する。コントローラ30から探索終了の指示がない場合(ステップS30:NO)、ステップS22からの処理が繰り返される。
【0119】
次に、上記のステップS5の処理において、レプリカグループ0~3のそれぞれにおけるステートの処理順序を一定とした場合のイジング装置21~24の動作例を説明する。
図9は、各レプリカグループにおけるステートの処理順序を一定とした場合の各イジング装置の動作の一例を示す図である。
図9の例では、レプリカグループ0~3のそれぞれにおいて、X0、X1、X2、X3(“-g0”、“-g1”、“-g2”、“-g3”の表記は省略している)の順序でマルコフ連鎖モンテカルロ法による探索処理が行われる例が示されている。
【0120】
最初の単位期間T1では、イジング装置21は、レプリカグループ0のステートであるX0-g0について探索処理を行う。単位期間T1の探索処理が終わると、イジング装置21は、X0-g0をイジング装置22~24に転送する。イジング装置22~24は、受信したX0-g0に基づいて、レプリカグループ0についての局所場(LF1-g0、LF2-g0、LF3-g0)の更新(
図9ではLF更新と表記されている)を行う。
【0121】
次の単位期間T2では、イジング装置21は、レプリカグループ1のステートであるX0-g1について探索処理を行う。さらに、単位期間T2では、イジング装置22が、レプリカグループ0のステートであるX1-g0について探索処理を行う。単位期間T2の探索処理が終わると、イジング装置21は、X0-g1をイジング装置22~24に転送し、イジング装置22は、X1-g0をイジング装置21,23,24に転送する。イジング装置21~24は、受信したX0-g1またはX1-g0に基づいて、レプリカグループ0,1についての局所場を更新する。
【0122】
単位期間T3では、イジング装置21は、レプリカグループ2のステートであるX0-g2について、イジング装置22は、レプリカグループ1のステートであるX1-g1について、それぞれ探索処理を行う。また、単位期間T3では、イジング装置23がレプリカグループ0のステートであるX2-g0について探索処理を行う。単位期間T3の探索処理が終わると、イジング装置21は、X0-g2をイジング装置22~24に転送し、イジング装置22は、X1-g1をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g0をイジング装置21,22,24に転送する。イジング装置21~24は、受信したX0-g2、X1-g1、またはX2-g0に基づいて、レプリカグループ0~2についての局所場を更新する。
【0123】
単位期間T4では、イジング装置21は、レプリカグループ3のステートであるX0-g3について、イジング装置22は、レプリカグループ2のステートであるX1-g2について、それぞれ探索処理を行う。また、単位期間T4では、イジング装置23は、レプリカグループ1のステートであるX2-g1について、イジング装置24は、レプリカグループ0のステートであるX3-g0について、それぞれ探索処理を行う。
【0124】
図10は、単位期間T4の探索処理後のステートの転送例を示す図である。
イジング装置21は、X0-g3をイジング装置22~24に転送し、イジング装置22は、X1-g2をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g1をイジング装置21,22,24に転送し、イジング装置24は、X3-g0をイジング装置21~23に転送する。
【0125】
イジング装置21~24は、受信したX0-g3、X1-g2、X2-g1、またはX3-g0に基づいて、レプリカグループ0~3についての局所場を更新する。
以上の処理により、レプリカグループ0に対する1回目のマルコフ連鎖モンテカルロ法による探索処理単位(
図9ではMCMC処理単位と表記されている)が終了する。その後も同様にイジング装置21~24のそれぞれは、レプリカグループ0~3のそれぞれにおいて、X0、X1、X2、X3の順序で、単位期間T5,T6,T7,T8,T9,T10,T11において、各ステートについて探索処理を行う。レプリカグループ1に対する1回目のMCMC処理単位は、単位期間T5の探索処理後のステート転送及び局所場の更新によって終わる。図示を省略しているが、レプリカグループ2に対する1回目のMCMC処理単位は、単位期間T6の探索処理後のステート転送及び局所場の更新によって終わる。また、レプリカグループ3に対する1回目のMCMC処理単位は、単位期間T7の探索処理後のステート転送及び局所場の更新によって終わる。
図9の例では、レプリカグループ0~3のそれぞれは、2回ずつ処理され、単位期間T11の探索処理を終えることで、全探索が終了している。
【0126】
図9に示すように、イジング装置21~24によって、レプリカグループ単位でパイプライン的に各部分問題に対応したステートについての探索処理が行われる。単位期間T4~T8では、レプリカグループ0~3のステートについての探索処理が、全てのイジング装置21~24を用いて並列に実行されている。
【0127】
これにより、イジング装置21~24のそれぞれが効率よく動作するようになり、計算効率を向上できる。これにより、大規模な問題に対する最適化装置20の求解性能が向上する。なお、レプリカグループ0~3のそれぞれにおいて、状態変数の値の更新は逐次的に行われるため、マルコフ連鎖モンテカルロ法によるイジングモデルのエネルギーの最小化の原理に沿っている。
【0128】
次に、上記のステップS5の処理において、レプリカグループ0~3のそれぞれにおけるステートの処理順序を、MCMC処理単位で変更する場合のイジング装置21~24の動作例を説明する。
【0129】
図11は、各レプリカグループにおけるステートの処理順序を、MCMC処理単位で変更する場合の各イジング装置の動作の一例を示す図である。
最初の単位期間T10では、イジング装置21は、レプリカグループ0のステートであるX0-g0について、イジング装置22は、レプリカグループ1のステートであるX1-g1について、それぞれ探索処理を行う。また、単位期間T10では、イジング装置23は、レプリカグループ2のステートであるX2-g2について、イジング装置24は、レプリカグループ3のステートであるX3-g3について、それぞれ探索処理を行う。
【0130】
図12は、単位期間T10の探索処理後のステートの転送例を示す図である。
イジング装置21は、X0-g0をイジング装置22~24に転送し、イジング装置22は、X1-g1をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g2をイジング装置21,22,24に転送し、イジング装置24は、X3-g3をイジング装置21~23に転送する。
【0131】
イジング装置21~24は、受信したX0-g0、X1-g1、X2-g2、またはX3-g3に基づいて、レプリカグループ0~3についての局所場を更新する。
単位期間T11では、イジング装置21は、レプリカグループ1のステートであるX0-g1について、イジング装置22は、レプリカグループ0のステートであるX1-g0について、それぞれ探索処理を行う。また、単位期間T11では、イジング装置23は、レプリカグループ3のステートであるX2-g3について、イジング装置24は、レプリカグループ2のステートであるX3-g2について、それぞれ探索処理を行う。
【0132】
単位期間T11の処理が終わると、イジング装置21は、X0-g1をイジング装置22~24に転送し、イジング装置22は、X1-g0をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g3をイジング装置21,22,24に転送し、イジング装置24は、X3-g2をイジング装置21~23に転送する。
【0133】
イジング装置21~24は、受信したX0-g1、X1-g0、X2-g3、またはX3-g2に基づいて、レプリカグループ0~3についての局所場を更新する。
単位期間T12では、イジング装置21は、レプリカグループ2のステートであるX0-g2について、イジング装置22は、レプリカグループ3のステートであるX1-g3について、それぞれ探索処理を行う。また、単位期間T12では、イジング装置23は、レプリカグループ0のステートであるX2-g0について、イジング装置24は、レプリカグループ1のステートであるX3-g1について、それぞれ探索処理を行う。
【0134】
単位期間T12の処理が終わると、イジング装置21は、X0-g2をイジング装置22~24に転送し、イジング装置22は、X1-g3をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g0をイジング装置21,22,24に転送し、イジング装置24は、X3-g1をイジング装置21~23に転送する。
【0135】
イジング装置21~24は、受信したX0-g2、X1-g3、X2-g0、またはX3-g1に基づいて、レプリカグループ0~3についての局所場を更新する。
単位期間T13では、イジング装置21は、レプリカグループ3のステートであるX0-g3について、イジング装置22は、レプリカグループ2のステートであるX1-g2について、それぞれ探索処理を行う。また、単位期間T13では、イジング装置23は、レプリカグループ1のステートであるX2-g1について、イジング装置24は、レプリカグループ0のステートであるX3-g0について、それぞれ探索処理を行う。
【0136】
単位期間T13の処理が終わると、イジング装置21は、X0-g3をイジング装置22~24に転送し、イジング装置22は、X1-g2をイジング装置21,23,24に転送する。また、イジング装置23は、X2-g1をイジング装置21,22,24に転送し、イジング装置24は、X3-g0をイジング装置21~23に転送する。
【0137】
イジング装置21~24は、受信したX0-g3、X1-g2、X2-g1、またはX3-g0に基づいて、レプリカグループ0~3についての局所場を更新する。
以上の処理により、レプリカグループ0~3のそれぞれに対する1回目のMCMC処理単位が終了する。1回目のMCMC処理単位において、ステートの処理順序は、レプリカグループ0では、X0、X1、X2、X3の順であり、レプリカグループ1では、X1、X0、X3、X2の順である。また、ステートの処理順序は、レプリカグループ2では、X2、X3、X0、X1の順であり、レプリカグループ3では、X3、X2、X1、X0の順である。
【0138】
コントローラ30は、1回目のMCMC処理単位が終了すると、レプリカグループ0~3のそれぞれにおけるステートの処理順序を、たとえば、ランダムに変更する。
図11の単位期間T14,T15,T16,T17の処理では、以下のようにステートの処理順序が変更されたことが示されている。すなわち、変更後のステートの処理順序は、レプリカグループ0では、X3、X1、X0、X2の順であり、レプリカグループ1では、X1、X0、X2、X3の順である。また、変更後のステートの処理順序は、レプリカグループ2では、X0、X2、X3、X1の順であり、レプリカグループ3では、X2、X3、X1、X0の順である。
【0139】
なお、変更後においても同一の単位期間では、イジング装置21~24はそれぞれ異なるレプリカグループのステートについて探索処理を行っている。したがって、レプリカグループ0~3のそれぞれにおいて、状態変数の値の更新は逐次的に行われるため、マルコフ連鎖モンテカルロ法によるイジングモデルのエネルギーの最小化の原理を満たす。
【0140】
また、X0~X3の処理順序(4つの部分問題の処理順序に相当する)を一定ではなく変更して、たとえば、ランダム性を持たせることによって、探索の偏りを軽減できる。このため、最適化装置20の求解性能のさらなる向上が期待できる。
【0141】
なお、前述のように、上記の処理内容は、コントローラ30にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体36a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD33)にプログラムをコピーして実行してもよい。
【0142】
以上、実施の形態に基づき、本発明の最適化装置、最適化方法及び最適化装置の制御プログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0143】
10 最適化装置
11a1~11an イジング装置
11b1~11bn 記憶部
11c1~11cn 探索部
11d1~11dn 通信部
15 制御装置