(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023179849
(43)【公開日】2023-12-20
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20231213BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022092706
(22)【出願日】2022-06-08
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】神田 浩一
(57)【要約】
【課題】多様な状態を効率的に探索可能にする。
【解決手段】記憶部11は、エネルギー関数に含まれる、イジングモデルの状態を示すN(Nは3以上の整数)の2乗個の状態変数を記憶する。処理部12は、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て第1状態に戻る巡回遷移処理を実行する。処理部12は、巡回遷移処理により順次得られる複数の状態の中から、第1状態からの状態遷移ごとのエネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
イジングモデルのエネルギー関数で表される順列最適化問題の解を探索する情報処理装置において、
前記エネルギー関数に含まれる、前記イジングモデルの状態を示すN(Nは3以上の整数)の2乗個の状態変数を記憶する記憶部と、
前記Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て前記第1状態に戻る巡回遷移処理を実行し、前記巡回遷移処理により順次得られる前記複数の状態の中から、前記第1状態からの前記状態遷移ごとの前記エネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する処理部と、
を有する情報処理装置。
【請求項2】
前記処理部は、前記巡回遷移処理では前記状態遷移のたびに、
前記状態遷移に応じた前記エネルギー関数の値の前記変化量を計算し、
前記第1状態からの前記状態遷移ごとの前記変化量の累積が前記所定の判定基準を満たすか否か判定し、
前記変化量の累積が前記所定の判定基準を満たさない場合に、次に値を変化させる前記4つの状態変数の組を選択し、
前記変化量の累積が前記所定の判定基準を満たす場合に、今回の前記状態遷移後の状態を前記第2状態として特定する、
請求項1記載の情報処理装置。
【請求項3】
前記記憶部は、前記状態遷移に応じた前記エネルギー関数の値の前記変化量の計算に用いられる、前記Nの2乗個の状態変数に対応するNの2乗個の局所場を記憶し、
前記処理部は、前記巡回遷移処理の起点の前記第1状態に対応する前記Nの2乗個の局所場と前記巡回遷移処理の終点の前記第1状態に対応する前記Nの2乗個の局所場とを一致させる、
請求項2記載の情報処理装置。
【請求項4】
前記処理部は、前記複数の状態それぞれを互いに異なる状態とする、
請求項1記載の情報処理装置。
【請求項5】
前記処理部は、前記制約を満たすように前記4つの状態変数の値を変化させる場合の前記エネルギー関数の値の前記変化量が所定の判定基準を満たすか否かの判定に応じて前記4つの状態変数の値の更新を繰り返す探索処理を行い、前記探索処理において局所解に陥った場合に、前記局所解を前記第1状態として前記巡回遷移処理を実行する、
請求項1記載の情報処理装置。
【請求項6】
前記処理部は、前記巡回遷移処理により、前記第2状態を特定すると、前記第2状態から前記探索処理を再開する、
請求項5記載の情報処理装置。
【請求項7】
前記処理部は、
値を変化させる前記4つの状態変数の組の第1の選択順序を示す第1巡回シナリオを用いて前記巡回遷移処理を実行し、
前記第1巡回シナリオを用いた前記巡回遷移処理により前記第2状態が特定されずに前記第1状態に戻ると、前記第1の選択順序とは異なる第2の選択順序を示す第2巡回シナリオに切り替えて、前記巡回遷移処理を実行する、
請求項1または5記載の情報処理装置。
【請求項8】
前記処理部は、
値を変化させる前記4つの状態変数の組の第1の選択順序を示す第1巡回シナリオを用いて前記巡回遷移処理を実行し、
前記第1巡回シナリオを用いた前記巡回遷移処理により前記第2状態を特定すると、前記第1の選択順序とは異なる第2の選択順序を示す第2巡回シナリオに切り替え、特定した前記第2状態を新たな前記第1状態として、前記巡回遷移処理を実行する、
請求項1または5記載の情報処理装置。
【請求項9】
イジングモデルのエネルギー関数で表される順列最適化問題の解を探索する情報処理方法において、情報処理装置が、
前記エネルギー関数に含まれる、前記イジングモデルの状態を示すN(Nは3以上の整数)の2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て前記第1状態に戻る巡回遷移処理を実行し、
前記巡回遷移処理により順次得られる前記複数の状態の中から、前記第1状態からの前記状態遷移ごとの前記エネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する、
情報処理方法。
【請求項10】
イジングモデルのエネルギー関数で表される順列最適化問題の解を探索するプログラムにおいて、コンピュータに、
前記エネルギー関数に含まれる、前記イジングモデルの状態を示すN(Nは3以上の整数)の2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て前記第1状態に戻る巡回遷移処理を実行し、
前記巡回遷移処理により順次得られる前記複数の状態の中から、前記第1状態からの前記状態遷移ごとの前記エネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
組合せ最適化問題の求解に情報処理装置が用いられることがある。組合せ最適化問題は、磁性体のスピンの振る舞いを表すモデルであるイジングモデルのエネルギー関数に変換される。エネルギー関数は、評価関数や目的関数と言われることもある。
【0003】
情報処理装置は、例えばエネルギー関数に含まれる状態変数の値の組合せのうち、エネルギー関数の値を最小化する組合せを探索する。この場合、エネルギー関数の値を最小化する状態変数の値の組合せは、状態変数の組により表される基底状態または最適解に相当する。実用的な時間で組合せ最適化問題の近似解を得る手法には、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法に基づく、シミュレーテッドアニーリング(SA:Simulated Annealing)法やレプリカ交換法などがある。
【0004】
ところで、組合せ最適化問題には、エネルギー関数に含まれる複数の状態変数のうち値が1となる状態変数の数を1つのみとする制約、すなわち、1-Hot制約をもつものがある。1-Hot制約には、N2個の状態変数をN行N列の行列状に並べたときに各行と各列に含まれる状態変数の値の和が1となるものがある。このような1-Hot制約は、2-Way 1-Hot制約と言われる。例えば、x1~x9を3行3列の行列状に並べたときに、x1+x2+x3=1、x4+x5+x6=1、x7+x8+x9=1、x1+x4+x7=1、x2+x5+x8=1、x3+x6+x9=1とする制約は、2-Way 1-Hot制約である。巡回セールスマン問題、配車計画問題、2次割り当て問題および線形順序付け問題などは、2-Way 1-Hot制約をもつ。
【0005】
2-Way 1-Hot制約をもつ組合せ最適化問題では、N行N列の各状態変数の値は、異なるN個の要素の順列で表記可能である。例えば、異なる3つの要素を「1,2,3」とすると、3行3列の各状態変数の値は(1,2,3)や(2,1,3)などのように表記される。例えば、順列の要素の位置は行を示し、順列の要素の値は1である状態変数の列を示す。このように、2-Way 1-Hot制約を充足する解は順列で表される。解が順列で表される組合せ最適化問題は順列最適化問題と言われる。
【0006】
例えば、2-Way 1-Hot制約をもつ組合せ最適化問題の求解を行う最適化装置の提案がある。
また、最適化問題において異なる初期状態から解探索を繰り返す場合に、各解探索において用いる初期状態を、過去に求めた解から所定距離以上離れた第1の状態から目的関数値を改善することにより得られた局所解とする最適化装置の提案がある。
【0007】
また、第1のエネルギー関数の値を最小にする複数の状態変数の値の探索を行う組合せ最適化装置の提案がある。提案の組合せ最適化装置は、第1のエネルギー関数を用いる第1探索と、第1探索の後、第1のエネルギー関数から制約条件を表す項を除去した第2のエネルギー関数を用いる第2探索と、第2探索の後、第1のエネルギー関数を用いる第3探索とを行う。
【0008】
更に、イジングモデルを用いて解を求めるアニーリングにおいて、瞬間磁場の計算、スピンの更新確率の計算、スピンの更新を全て並列に実行する情報処理装置の提案がある。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2021-157361号公報
【特許文献2】特開2021-43787号公報
【特許文献3】特開2021-33657号公報
【特許文献4】米国特許出願公開第2021/0072959号明細書
【発明の概要】
【発明が解決しようとする課題】
【0010】
2-Way 1-Hot制約をもつ組合せ最適化問題、すなわち、順列最適化問題の求解を行う上記の最適化装置では、1回の状態遷移の試行では高々4つの状態変数の値が変化される。ところが、現状態に対して高々4つの状態変数の値を変化させた状態の中だけから遷移先の状態を決定していると、例えば局所解に陥った場合に局所解から脱出できなくなることがある。
【0011】
1つの側面では、本発明は、多様な状態を効率的に探索可能にする情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
1つの態様では、イジングモデルのエネルギー関数で表される順列最適化問題の解を探索する情報処理装置が提供される。情報処理装置は、記憶部および処理部を有する。記憶部は、エネルギー関数に含まれる、イジングモデルの状態を示すN(Nは3以上の整数)の2乗個の状態変数を記憶する。処理部は、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て第1状態に戻る巡回遷移処理を実行する。処理部は、巡回遷移処理により順次得られる複数の状態の中から、第1状態からの状態遷移ごとのエネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する。
【0013】
また、1つの態様では、情報処理方法が提供される。また、1つの態様では、プログラムが提供される。
【発明の効果】
【0014】
1つの側面では、多様な状態を効率的に探索できる。
【図面の簡単な説明】
【0015】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態の情報処理装置のハードウェア例を示す図である。
【
図3】2-Way 1-Hotによるビットフリップ制御例を示す図である。
【
図4】イジングモデルの状態と順列との対応関係の例を示す図である。
【
図6】通常の2W1Hモードおよび巡回遷移モードの動作例を示す図である。
【
図7】情報処理装置の処理例を示すフローチャートである。
【
図8】巡回遷移モードの他の例(その1)を示す図である。
【
図9】巡回遷移モードの他の例(その2)を示す図である。
【
図10】巡回遷移モードの他の例(その3)を示す図である。
【発明を実施するための形態】
【0016】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0017】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。例えば、情報処理装置10は、MCMC法を基にしたSA法などを解の探索に用いる。情報処理装置10は記憶部11および処理部12を有する。
【0018】
記憶部11は、例えばRAM(Random Access Memory)などの揮発性記憶装置である。記憶部11は、レジスタなどの電子回路を含んでもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、GPU(Graphics Processing Unit)などの電子回路でもよい。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)を含み得る。
【0019】
組合せ最適化問題は、イジング型のエネルギー関数により定式化され、例えばエネルギー関数の値を最小化する問題に置き換えられる。エネルギー関数は、目的関数や評価関数などと言われてもよい。エネルギー関数は、複数の状態変数を含む。状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと言われてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。エネルギー関数の値を最小化する解は、イジングモデルの基底状態を表し、組合せ最適化問題の最適解に対応する。エネルギー関数の値は、エネルギーと表記される。
【0020】
イジング型のエネルギー関数は、式(1)で表される。
【0021】
【0022】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化されたエネルギー関数である。なお、エネルギーを最大化する問題の場合には、エネルギー関数の符号を逆にすればよい。
【0023】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。
【0024】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアスを示している。エネルギー関数に含まれる重み係数やバイアスなどを含む問題データは、記憶部11に記憶される。式(1)において、状態変数xiの値が変化して1-xiとなると、xiの増加分は、δxi=(1-xi)-xi=1-2xiと表せる。xiの変化に伴うエネルギーの変化量ΔEiは、式(2)で表される。
【0025】
【0026】
hiは局所場と呼ばれ、式(3)で表される。局所場は、ローカルフィールド(LF:Local Field)と言われることもある。
【0027】
【0028】
状態変数xjが変化したときの局所場hiの変化分δhi
(j)は、式(4)で表される。
【0029】
【0030】
状態変数xjの値が変化したときに変化分δhi
(j)をhiに加算することで、xjの値の変化後の状態に対応するhiが得られる。
基底状態の探索において、エネルギー変化がΔEiとなる状態遷移、すなわち、状態変数xiの値の変化を許容するか否かを決定するためにメトロポリス法やギブス法が用いられる。すなわち、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に許容される。例えば、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率Aは、式(5)で表される。
【0031】
【0032】
βは温度値T(T>0)の逆数(β=1/T)であり、逆温度と呼ばれる。min演算子は、引数のうちの最小値を取ることを示す。式(5)の右辺上側はメトロポリス法に相当する。式(5)の右辺下側はギブス法に相当する。処理部12は、あるインデックスiに関して0<u<1である一様乱数uとAとを比較し、u<Aであれば状態変数xiの値の変化を受入れ、状態変数xiの値を変化させる。処理部12は、u<Aでなければ状態変数xiの値の変化を受入れず、状態変数xiの値を変化させない。式(5)によれば、ΔEが大きい値であるほど、Aは小さくなる。また、βが小さい、すなわち、Tが大きいほど、ΔEが大きい状態遷移も許容され易くなる。例えば、メトロポリス法の判定基準が用いられる場合、式(5)を変形した式(6)により遷移判定が行われてもよい。
【0033】
【0034】
すなわち、一様乱数u(0<u≦1)に対して、エネルギー変化ΔEが式(6)を満たす場合に、該当の状態変数の値の変化が許容される。一様乱数uに対して、エネルギー変化ΔEが式(6)を満たさない場合に、該当の状態変数の値の変化が許容されない。ln(u)・Tは熱ノイズに相当する。例えば、SA法では、最高温度値から最低温度値へ温度値Tを徐々に下げながら解を探索する。
【0035】
ここで、処理部12は、2-Way 1-Hot制約を満たす状態以外の状態の探索を除外することで、2-Way 1-Hot制約をもつ組合せ最適化問題、すなわち、順列最適化問題を効率的に解く。順列最適化問題は、N2個の状態変数の値で表される順列であって、エネルギー関数の値を最小化、または最大化する順列を求める問題であると言える。順列最適化問題には、例えば、2次割り当て問題(QAP:Quadratic Assignment Problem)、巡回セールスマン問題(TSP:Travelling Salesman Problem)、配車計画問題(VRP:Vehicle Routing Problem)および線形順序付け問題(LOP:Linear Ordering Problem)などがある。2-Way 1-Hot制約を満たす状態以外の状態の探索を除外する場合、処理部12は、一度の状態遷移において、4つの状態変数の値を変化させることになる。
【0036】
以下では、エネルギー関数に含まれるn=N2(Nは3以上の整数)の状態変数が2-Way 1-Hot制約を受けるものとする。これらの状態変数をN行N列に配列したときに各行と各列に含まれる状態変数の値の和が1である制約を満たすように、一度の状態遷移において、4つの状態変数の値を変化させることで、2-Way 1-Hot制約を満たす状態以外の状態の探索が除外される。N2の状態変数をN行N列に配列する場合、例えば、x1~xNが1行目の1列目~N列目に相当し、xN+1~x2Nが2行目の1列目~N列目に相当し、以降、同様に、xN^2-N+1~xN^2がN行目の1列目~N列目に相当する。
【0037】
なお、2-Way 1-Hot制約が満たされている状態で、値が0の状態変数の1つを更新対象候補とした場合、他の3つの更新対象候補の状態変数が決まる。
例えば、インデックス=i,j,k,l(i<j<k<l)の4つの状態変数(xi,xj,xk,xl)の値を変化させると仮定する。xi,xjは同じ行に属する。xi,xkは同じ列に属する。xk,xlは同じ行に属する。xj,xlは同じ列に属する。
【0038】
値が0の状態変数であるxjを更新対象候補とした場合、xjと同じ行および同じ列に含まれる状態変数のうち、値が1の状態変数であるxi,xlが更新対象候補となる。さらに、xiと同じ列、かつ、xlと同じ行である、値が0のxkが更新対象候補となる。これら4つの状態変数(xi,xj,xk,xl)の値の変化は、式(7)のように表せる。
【0039】
【0040】
4つの状態変数(xi,xj,xk,xl)の値を変化させた場合に生じるイジングモデルのエネルギー変化をΔEjとすると、ΔEjは、以下の式(8)のように表せる。
【0041】
【0042】
また、xi,xj,xk,xlが変化することによる局所場の変化分Δhm(m=1,2,…,n)は、以下の式(9)のように表せる。
【0043】
【0044】
このように、順列最適化問題では、式(5)または式(6)のΔEに式(8)のΔEjが用いられる。また、式(4)のδhi
(j)に代えて、式(9)のΔhmが用いられる。記憶部11は、N2個の状態変数の値を保持する。記憶部11は、N2個の状態変数それぞれに対応する局所場hmを保持する。処理部12は、記憶部11に保持されるhmに基づいて、ΔEjを計算する。また、処理部12は、ΔEjと式(5)または式(6)とに基づいて、値の変化が許容される4つの状態変数を判定する。処理部12は、記憶部11に保持されるN2個の状態変数のうち、値の変化が許容される4つの状態変数の値を変化させることで、イジングモデルの状態を遷移させる。処理部12は、4つの状態変数の値の変化に伴い、記憶部11に保持されるhmを、hm=hm+Δhmに更新する。
【0045】
例えば、処理部12は、変化候補となる4つの状態変数をシーケンシャルに選択して、ΔEjの計算や式(5)または式(6)の判定を行い、値の変化が許容される4つの状態変数の値を変化させる処理を繰り返し行ってもよい。あるいは、処理部12は、変化候補の4つの状態変数の複数の組に対して、ΔEjの計算や式(5)または式(6)の判定を並列に行ってもよい。この場合、処理部12は、値の変化が許容される組からランダムに1つを選択し、当該組に属する4つの状態変数の値を変化させる処理を繰り返し行う。
【0046】
このように、処理部12は、順列最適化問題の求解における1回の状態遷移の試行では高々4つの状態変数の値を変化させる仕組みをもつ。ここで、N行N列の各状態変数の値は順列で表せる。例えば、順列の要素の位置は行を示し、順列の要素の値は1である状態変数の列を示す。
図1では、N=4の場合、すなわち、4行4列の計16個の状態変数で表される1つの状態20に対応する順列(1,2,3,4)が示されている。例えば、順列の左からp番目の値qは、状態20で示される行列の上からp行目かつ左からq列目の要素を1とすることを示す。順列の左からp番目の値qは、状態20で示される行列の左からp列目かつ上からq行目の要素を1とすることを示してもよい。
【0047】
処理部12による、4つの状態変数の値を変化させる操作は、順列内の任意の2つの要素の位置を交換する操作に相当する。しかし、処理部12による1回の操作では、元の順列(1,2,3,4)に対して、(1,2,4,3)、(1,4,3,2)、(4,2,3,1)などのように、2つの要素を交換できるだけである。
【0048】
ところが、このような操作により、次の遷移先の状態を決定していると、例えば局所解に陥った場合に局所解から脱出できなくなり、より良い解を得られなくなることがある。そこで、処理部12は、下記の処理により、より多様な解の探索を可能にする。
【0049】
具体的には、処理部12は、4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て第1状態に戻る巡回遷移処理を実行する。そして、処理部12は、巡回遷移処理により順次得られる状態の中から、第1状態からの状態遷移ごとのエネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する。
【0050】
より具体的には、処理部12は、次の第1ステップ~第4ステップを含む処理を繰り返し実行することで、第1状態に対して第2状態を取得する。第1状態は、下記の巡回遷移処理の起点の状態である。
【0051】
第1ステップは、Nの2乗個の状態変数のうちの4つの状態変数の値を変化させる場合のエネルギーの変化量を、式(8)に基づいて計算するステップである。なお、次に値を変化させる4つの状態変数の組の選択順序は、予め定められる。
【0052】
第2ステップは、当該4つの状態変数の値を変化させるステップである。第2ステップでは、処理部12は、式(9)に基づく局所場hmの更新も行う。
第3ステップは、4つの状態変数の値の変化ごとのエネルギーの変化量の累積が所定の判定基準を満たすか否か判定するステップである。第1状態を起点として前回までに求めたエネルギーの変化量の累積は、記憶部11に保持される。処理部12は、今回の第1ステップで求めたエネルギーの変化量を、前回までに求めたエネルギーの変化量の累積に加算することで、今回までのエネルギーの変化量の累積ΔE’を求める。累積ΔE’は、起点の状態である第1状態のエネルギーと現在の状態とのエネルギーとの差分となる。所定の判定基準としては、例えば、上記のメトロポリス法の判定基準やギブス法の判定基準が用いられる。例えば、処理部12は、式(5)または式(6)のΔEを、変化量の累積ΔE’として、式(5)または式(6)による判定基準を満たすか否かを判定する。第2ステップと第3ステップとの実行順序は逆でもよい。
【0053】
第4ステップは、当該変化量の累積が所定の判定基準を満たさない場合に、次に値を変化させる4つの状態変数の組を選択するステップである。処理部12は、第4ステップの後は、第1ステップに進み、第1ステップから繰り返し処理を実行する。
【0054】
そして、処理部12は、第3ステップの判定において、エネルギーの変化量の累積が所定の判定基準を満たす場合に、現在の状態を第1状態に対する第2状態として特定して上記処理の繰り返しを終了する。一方、処理部12は、第1ステップ~第4ステップを含む上記処理を、第2状態が特定されないまま、複数回繰り返すことで到達する状態を第1状態に一致させる。
【0055】
テーブル30,40は、状態20を第1状態とする巡回遷移処理の例を示す。テーブル30は、第2状態が得られる場合である。テーブル40は、第2状態が得られない場合である。テーブル30,40の「回数」は、第1ステップ~第4ステップを含む上記処理の繰り返し回数を示す。テーブル30,40の「状態」は、当該繰り返し回数だけ状態遷移を繰り返した時点で到達する状態を示す。テーブル30,40の回数「0」のレコードは、第1状態を示す。
【0056】
例えば、処理部12は、順列(α,β,γ,δ)の最後尾の要素δに着目して、交換対象(γ,δ)、(β,δ)、(α,δ)を順番に選択して交換を行うという遷移パターンを用いる。この場合、各交換後の順列は、(α,β,δ,γ)、(α,δ,β,γ)、(δ,α,β,γ)となる。処理部12は、δが順列の先頭に来たら、その状態を新たに順列(α,β,γ,δ)として、同じように交換対象を順番に選択する。これにより、4行4列の状態変数で表される状態の変化を12回繰り返すことで、元の状態に戻る。
【0057】
テーブル30は、巡回遷移処理の途中で判定基準が満たされる場合の例を示す。具体的には、処理部12は、上記の遷移パターンを、状態20を起点として4回繰り返した時点で、エネルギーの変化量の累積ΔE’が判定基準を満たすと判定したと仮定する。この場合、処理部12は、順列(4,1,3,2)に対応する状態21を、状態20に対する第2状態として特定する。
【0058】
テーブル40は、巡回遷移処理の途中で判定基準が満たされない場合の例を示す。具体的には、処理部12は、上記の遷移パターンを、状態20を起点として12回繰り返した時点で、状態20に到達する。特に、処理部12は、当該遷移パターンにより状態20に達するまでに生成する状態を、全て異なる状態とする。上記のように、ある遷移パターンでの置換の繰り返しにより、第1状態から開始して、第1状態に再び戻る手順を、巡回シナリオと言う。
【0059】
このように、情報処理装置10によれば、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移が繰り返されることで、第1状態から複数の状態を経て第1状態に戻る巡回遷移処理が実行される。巡回遷移処理により順次得られる複数の状態の中から、第1状態からの状態遷移ごとのエネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態が特定される。ただし、第2状態が特定された時点で、巡回遷移処理を終了できるので、この場合、情報処理装置10は、当該巡回遷移処理における、第1状態から第1状態までに戻る全ての状態を得るわけではない。
【0060】
例えば、情報処理装置10は、1度に4つの状態変数の値を変化させるという処理部12の操作を複数回行うことで、第1状態に対する第2状態を探索可能にする。これにより、情報処理装置10は、例えば、順列(1,2,3,4)で表される第1状態に対して、順列(1,4,2,3)や(4,1,3,2)などで表される、より多様な状態を効率的に探索して第2状態を得られる。ここで、順列(1,4,2,3)や(4,1,3,2)で表される状態は、順列(1,2,3,4)で表される状態に対して4より多い数の状態変数の値が変更された状態である。すなわち、情報処理装置10は、巡回遷移処理により、第1状態に対して、4より多い数の状態変数の値を変化させるマルチビット遷移を実現していると言える。
【0061】
ここで、情報処理装置10は、第1状態に戻らないよう状態遷移を繰り返して、第1状態に対するマルチビット遷移を実現することも考えられる。しかし、この場合、第2状態を得られる保証はないため、情報処理装置10は、第1状態からの状態遷移を開始するときに、第1状態における各状態変数の値と、各状態変数の局所場hmとの複製を記憶部11に保持しておくことになる。仮に第2状態を得られなかったときに、第1状態を復元可能にするためである。しかし、第1状態における各状態変数の値と局所場hmの複製とを記憶部11に保持しておくと、記憶部11として多くのメモリ容量を要する。特に、第1状態における各状態変数の局所場hmの複製を保持する場合、記憶部11に要求されるメモリ容量が過大になり得る。
【0062】
そこで、情報処理装置10は、巡回遷移処理により始点と終点とを第1状態に一致させることで、例えば第1状態に対応する局所場hmの複製を、記憶部11に保持しておかなくてもよくなる。巡回遷移処理により第1状態に到達することで、各状態変数の局所場hmも、第1状態に対応する値になるからである。これにより、例えば、情報処理装置10は、記憶部11に要求されるメモリ容量の増加を抑えて、すなわち、メモリ容量を効率的に使用して、より多様な状態を探索可能になる。こうして、情報処理装置10は、多様な状態を効率的に探索できる。
【0063】
ここで、情報処理装置10は、巡回遷移処理を、通常の探索処理と組合せて実行してもよい。通常の探索処理とは、現状態に対して、2-Way 1-Hot制約を満たすように4つの状態変数の値を変化させる場合のエネルギーの変化量が上記判定基準を満たすか否かにより、現状態に対する遷移先の状態を決定することで解の探索を行う処理である。
【0064】
例えば、処理部12は、まずは、通常の探索処理を実行する。そして、処理部12は、通常の探索処理で局所解に陥った場合に、当該局所解を第1状態として、巡回遷移処理を実行してもよい。局所解に陥った場合とは、通常の探索処理において、現時点の次の遷移先候補の全ての状態が、式(5)または式(6)の判定基準を満たさない場合である。この場合、処理部12は、巡回遷移処理により第2状態を取得したら、第2状態から、通常の探索処理に復帰してもよい。これにより、情報処理装置10は、通常の探索処理における局所解から脱出して、より良い解を探索可能になり、求解性能を向上できる。
【0065】
更に他の例では、情報処理装置10は、複数の巡回シナリオを含む巡回遷移処理により、解の探索を行ってもよい。例えば、処理部12は、第1巡回シナリオによる巡回遷移処理で第1状態に戻った場合に、第2巡回シナリオによる巡回遷移処理を継続してもよい。また、処理部12は、第1巡回シナリオによる巡回遷移処理で第2状態を特定した場合に、特定した第2状態を新たな第1状態として第2巡回シナリオによる巡回遷移処理を継続してもよい。
【0066】
例えば、処理部12は、通常の探索処理で局所解に陥った場合に、第1巡回シナリオによる巡回遷移処理に移り、第1巡回シナリオで第2状態を取得する。そして、処理部12は、当該第2状態を新たな第1状態として第2巡回シナリオによる巡回遷移処理に移り、第2巡回シナリオで第2状態を取得し、当該第2状態から、通常の探索処理に復帰してもよい。更に、処理部12は、通常の探索処理を用いずに、複数の巡回シナリオによる巡回遷移処理のみによって、解の探索を行ってもよい。
【0067】
このように、情報処理装置10は、複数の巡回シナリオを組み合わせて使用することで、1つの巡回シナリオだけでは到達し得ない多様な解を探索可能になり、求解性能を向上できる。
【0068】
処理部12は、式(5)または式(6)に用いられる温度値Tを定期的に下げながら、巡回遷移処理を含む上記の解の探索を実行する。そして、処理部12は、最終温度値に達すると、例えばそれまでに得られた解の中で最もエネルギーの低い解を、順列最適化問題に対する最終的な解として出力する。こうして、情報処理装置10は、順列最適化問題に対する解を効率的に得ることができる。
【0069】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
【0070】
情報処理装置100は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。情報処理装置100は、CPU101、RAM102、HDD(Hard Disk Drive)103、GPU104、入力インタフェース105、媒体リーダ106、NIC(Network Interface Card)107およびアクセラレータカード108を有する。
【0071】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0072】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0073】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0074】
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0075】
入力インタフェース105は、情報処理装置100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0076】
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0077】
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0078】
NIC107は、ネットワーク54に接続され、ネットワーク54を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC107は、無線通信インタフェースでもよい。
【0079】
アクセラレータカード108は、式(1)のイジング型のエネルギー関数で表される問題の解を、MCMC法を用いて探索するハードウェアアクセラレータである。アクセラレータカード108は、重み係数やバイアスを含むエネルギー関数の情報を示す問題データをCPU101から受け付け、解の探索を行い、探索した解を出力する。
【0080】
アクセラレータカード108は、一定温度のMCMC法または複数温度間でイジングモデルの状態を交換するレプリカ交換法を行うことで、該当温度におけるボルツマン分布に従う状態をサンプリングするサンプラーとして用いることができる。アクセラレータカード108は、組合せ最適化問題の求解のためには、レプリカ交換法や温度値を徐々に下げるSA法などのアニーリングの処理を実行する。
【0081】
SA法は、各温度値におけるボルツマン分布に従う状態をサンプリングし、サンプリングに用いる温度値を高温から低温に下げる、すなわち、逆温度βを増やすことで、最適解を効率的に発見する方法である。低温側、すなわち、βの大きい場合でもある程度状態が変化することで、温度値を早く下げても良い解を発見できる可能性が高くなる。例えば、SA法を用いる場合、アクセラレータカード108は、一定の温度値での状態遷移の試行を一定回数繰り返した後に温度値を下げる、という動作を繰り返す。
【0082】
レプリカ交換法は、複数の温度値を用いて独立してMCMC法を実行し、各温度値で得られた状態に対して、適宜、温度値を交換する手法である。低温でのMCMCによって状態空間の狭い範囲を探索し、高温でのMCMCによって状態空間の広い範囲を探索することで、効率的に良い解を発見することができる。例えば、レプリカ交換法を用いる場合、アクセラレータカード108は、複数の温度値の各々での状態遷移の試行を並列して行い、一定回数の試行を行うごとに、各温度値で得られた状態に対して、所定の交換確率で温度値を交換する、という動作を繰り返す。
【0083】
アクセラレータカード108は、FPGA109を有する。FPGA109は、アクセラレータカード108における解探索機能を実現する。解探索機能は、GPUやASICなどの他の種類の電子回路により実現されてもよい。FPGA109は、メモリ109aを有する。メモリ109aは、FPGA109での探索に用いられる問題データやFPGA109により探索された解を保持する。メモリ109aは、例えばSRAM(Static Random Access Memory)である。FPGA109は、メモリ109aを含む複数のメモリを有してもよい。FPGA109は、第1の実施の形態の処理部12の一例である。メモリ109aは、第1の実施の形態の記憶部11の一例である。なお、アクセラレータカード108は、FPGA109の外部にRAMを有してもよく、FPGA109の処理に応じて、メモリ109aに格納されたデータを当該RAMに一時的に退避してもよい。
【0084】
アクセラレータカード108のようにイジング形式の問題の解を探索するハードウェアアクセラレータは、イジングマシンやボルツマンマシンなどと呼ばれることがある。
図3は、2-Way 1-Hotによるビットフリップ制御例を示す図である。
【0085】
組合せ最適化問題では、2-Way 1-Hot制約と呼ばれる制約条件が課されることがある。2-Way 1-Hot制約をもつ組合せ最適化問題は、順列最適化問題と言われる。2-Way 1-Hotは、2W1Hと略記される。
【0086】
ここで、1-Hot制約とは、「ある状態変数の組の中で、値が1の変数は1個だけである」という制約である。例えば、
図3では、N
2個(Nは3以上の整数)の状態変数x
1,x
2,…が、N行N列で示されている。グループg11,g12は、行に対応する状態変数のグループの例を示す。グループg21,g22は、列に対応する状態変数のグループの例を示す。各行に対応する状態変数のグループに1-Hot制約を課す場合、各行の状態変数の和は1である。例えば、グループg11に属する状態変数の和は1である。また、グループg12に属する状態変数の和は1である。あるいは、各列に対応する状態変数のグループに1-Hot制約を課す場合、各列の状態変数の和は1である。例えば、グループg21に属する状態変数の和は1である。グループg22に属する状態変数の和は1である。
【0087】
2W1Hでは、2つの1-Hot制約を満たすように、1度に4つの状態変数の値を変化させる。すなわち、式(7)のような4ビットフリップである。i,j,k,lは、フリップさせる状態変数の組を示すインデックスの組である。なお、i<j<k<lである。
図3では、インデックスi,j,k,lに対応する状態変数の組の例が示されている。2W1Hでは、状態変数の数がN
2であり、N行の各行およびN列の各列でそれぞれ状態変数が、1-Hot制約が課されたグループとしてグループ化される。このときのエネルギー変化ΔE
jは、式(8)で表される。状態変数x
mに対応する局所場の変化Δh
mは、式(9)で表される。m=1,2,…,N
2である。
【0088】
図4は、イジングモデルの状態と順列との対応関係の例を示す図である。
図4(A)は、N=5の場合のイジングモデルの状態61の例を示す。
図4(B)は、N=5の場合のイジングモデルの状態62を示す。状態61,62それぞれは、25個の状態変数x
1~x
25で表される。状態61,62それぞれで示される行列の1行目は、状態変数x
1~x
5のグループである。2行目は、状態変数x
6~x
10のグループである。3行目は、状態変数x
11~x
15のグループである。4行目は、状態変数x
16~x
20のグループである。5行目は、状態変数x
21~x
25のグループである。なお、各状態変数は列方向にもグループ化される。
【0089】
状態61の例では、行方向の各グループの状態変数の値は次の通りである。{x1,x2,x3,x4,x5}={1,0,0,0,0}である。{x6,x7,x8,x9,x10}={0,1,0,0,0}である。{x11,x12,x13,x14,x15}={0,0,1,0,0}である。{x16,x17,x18,x19,x20}={0,0,0,1,0}である。{x21,x22,x23,x24,x25}={0,0,0,0,1}である。この場合、状態61は、順列(1,2,3,4,5)と表される。前述のように、例えば、順列の左からp番目の値qは、状態61や状態62などで示される行列の上からp行目かつ左からq列目の要素を1とすることを示す。
【0090】
状態62の例では、行方向の各グループの状態変数の値は次の通りである。{x1,x2,x3,x4,x5}={0,0,0,1,0}である。{x6,x7,x8,x9,x10}={0,1,0,0,0}である。{x11,x12,x13,x14,x15}={0,0,1,0,0}である。{x16,x17,x18,x19,x20}={0,0,0,0,1}である。{x21,x22,x23,x24,x25}={1,0,0,0,0}である。この場合、状態62は、順列(4,2,3,5,1)と表される。
【0091】
図5は、情報処理装置の機能例を示す図である。
情報処理装置100は、順列最適化問題の求解を行う。情報処理装置100は、重み係数保持部110、局所場保持部120、ΔE計算部130、判定部140、状態保持部150、制御部160および巡回シナリオ記憶部170を有する。重み係数保持部110、局所場保持部120、ΔE計算部130、判定部140、状態保持部150、制御部160および巡回シナリオ記憶部170は、FPGA109により実現される。重み係数保持部110、局所場保持部120および巡回シナリオ記憶部170におけるデータの記憶領域には、メモリ109aが用いられる。
【0092】
重み係数保持部110は、式(1)における重み係数行列Wを保持する。重み係数保持部110は、判定部140から供給されるインデックスjに基づいて、局所場保持部120に重み係数Wmi,Wmj,Wmk,Wmlを供給する。
【0093】
局所場保持部120は、局所場h1,h2,…,hnを保持し、2W1Hによる4つの状態変数xi,xj,xk,xlの値の変化に応じて、重み係数保持部110に保持される重み係数Wに基づき、式(9)により局所場h1,h2,…,hnを更新する。ここで、nは、全状態変数の数であり、n=N2である。
【0094】
ΔE計算部130は、状態変数xi,xj,xk,xlの値を変化させる場合のエネルギー変化ΔEjを、式(8)により計算する。ΔE計算部130は、変化候補とする複数の状態変数に対して、複数のΔEを並列に計算してもよい。
【0095】
判定部140は、式(6)に基づいて、4つの状態変数xi,xj,xk,xlの値の変化が許容されるか否かを判定する。判定部140は、許容される場合、状態保持部150に保持される4つの状態変数xi,xj,xk,xlの値を変化させるとともに、インデックスi,j,k,lを重み係数保持部110に供給する。ΔE計算部130により複数のΔEが並列に計算される場合、判定部140は、式(6)に基づいて、値の変化が許容される4つの状態変数の複数の組のうち、何れかを選択し、選択した組に属する4つの状態変数の値を変化させる。
【0096】
状態保持部150は、状態変数(x1,x2,…,xn)を保持する。状態保持部150は、初期状態のエネルギーに対して状態遷移に応じたΔEを積算することで、現在の状態に対応するエネルギーを保持してもよい。
【0097】
制御部160は、巡回シナリオ記憶部170に保持される巡回シナリオに応じて、局所場保持部120およびΔE計算部130における巡回遷移モードの動作を制御する。巡回遷移モードは、第1の実施の形態の巡回遷移処理を行うモードである。制御部160は、巡回遷移モードでは、状態変数(x1,x2,…,xn)のうち、何れの4ビット、すなわち、4つの状態変数の値を変化させるかを指定し、局所場の読み出しと、ΔEの計算を実行させる。また、制御部160は、局所場保持部120およびΔE計算部130を制御して、通常の2W1Hモードでの動作と、巡回遷移モードでの動作との切り替えも行う。
【0098】
ここで、通常の2W1Hモードとは、例えば状態変数(x1,x2,…,xn)の中から順番に1つをxjとして選択して4つの状態変数xi,xj,xk,xlの値を変化させるか否かの試行を行うモードである。通常の2W1Hモードは、第1の実施の形態における通常の探索処理を行うモードである。通常の2W1Hモードでは、複数のxjに対して並列に、4つの状態変数xi,xj,xk,xlの値を変化させるか否かの試行が行われてもよい。通常の2W1Hモードで変化される状態変数の数は1回の試行当たり、高々4つである。通常の2W1Hモードには、例えば、特開2021-157361号公報が参考になる。
【0099】
巡回シナリオ記憶部170は、巡回シナリオの情報を記憶する。巡回シナリオ記憶部170に記憶される巡回シナリオの情報は、外部から書き換え可能である。
図6は、通常の2W1Hモードおよび巡回遷移モードの動作例を示す図である。
【0100】
表200は、情報処理装置100による通常の2W1Hモードおよび巡回遷移モードの動作例を示す。一例として、N=5とする。初期状態は、例えば順列(1,2,3,4,5)で示されるものとする。また、表200における「置換候補」は、置換候補となる2つの要素それぞれの順列における位置を示す。
【0101】
この場合、通常の2W1Hモードでは、順列(1,2,3,4,5)の次の状態遷移先候補の状態は、当該順列の2つの要素を置換した状態となる。順列(1,2,3,4,5)に対して、次の状態遷移先候補の数は10個である。例えば、制御部160は、通常の2W1Hモードでのステップ「1」~「10」により10通りの状態遷移先候補の何れも式(6)により許容されない場合、局所解に陥ったと判断して、局所場保持部120およびΔE計算部130を巡回遷移モードに移行させる。このとき、巡回遷移モードの起点の状態は、局所解に相当する順列(1,2,3,4,5)の状態となる。
【0102】
巡回遷移モードでは、例えば、次のような巡回シナリオが用いられる。すなわち、制御部160は、まずは順列(1,2,3,4,5)の最後尾の要素「5」を、先頭に向かって1つずつ動かすように、他の要素と置換させる。この場合、4ステップで、要素「5」は先頭に至り、順列(5,1,2,3,4)となる。すると、次に、制御部160は、順列(5,1,2,3,4)の最後尾の要素「4」を、先頭に向かって1つずつ動かすように、他の要素と置換させる。上記の動作を繰り返すことで、計20ステップで、巡回遷移モードの起点の順列(1,2,3,4,5)に戻る。ここで、巡回遷移モードにおいて巡回シナリオにより順次行われる遷移は、仮遷移であると言える。
【0103】
上記の巡回遷移モードの動作において、ΔE計算部130は、各ステップで、式(8)のΔEを計算し、計算したΔEを累積する。また、局所場保持部120は、各ステップにおける4つの状態変数の値の変化に応じて、局所場h1~hnを更新する。判定部140は、各ステップで状態保持部150における該当の4つの状態変数の値を更新するとともに、累積されたΔEが式(6)の判定基準を満たすか否かを判定する。
【0104】
例えば、ΔE計算部130は、スタート状態の次の仮遷移先#1に対するΔE1を計算する。この遷移が受け入れられなかったとしても、状態および局所場は更新される。ΔE計算部130は、この局所場を用いて次の仮遷移先#2に対するΔE12を求め、ΔE1+ΔE12=ΔE2として、累積のΔE=ΔE2を計算する。ΔE2は、スタート状態から仮遷移先#2の状態に遷移した場合のエネルギー差分になる。同様にして、ΔE1+ΔE12+ΔE23=ΔE3として、仮遷移先#3に対する累積のΔE=ΔE3を求める。判定部140は、これらΔEiに対し、式(6)により示されるメトロポリスの判定基準を満たすか否かを判定する。
【0105】
制御部160は、式(6)の判定基準が満たされた段階で、その時点における状態を起点として、巡回遷移モードから通常の2W1Hモードへ切り替える。または、制御部160は、異なる巡回シナリオで巡回遷移モードを継続する。巡回遷移モードを継続する場合、エネルギー差分の累積加算はリセットされ、その時点から再スタートになる。また、通常の2W1Hモードへ切り替える場合も、巡回遷移モードを継続する場合も、局所場は更新済なので、新たに更新しなくてよい。
【0106】
一方、式(6)の判定基準が、巡回遷移モードにおける計20ステップの全てで満たされない場合、状態保持部150に保持される状態変数x1~xnは、順列(1,2,3,4,5)の状態に戻る。また、局所場保持部120に保持される局所場h1~hnも、順列(1,2,3,4,5)の状態に対応する値に戻る。例えば、今回の巡回シナリオで、順列(1,2,3,4,5)で示される元の状態に戻った場合、制御部160は、他の巡回シナリオにより、巡回遷移モードを継続してもよい。
【0107】
次に、情報処理装置100によりSA法を用いて順列最適化問題の求解を実行する処理手順を説明する。
図7は、情報処理装置の処理例を示すフローチャートである。
【0108】
(S10)制御部160は、式(6)に用いられる温度値Tを判定部140に設定する。なお、ステップS10が初回に実行される場合、制御部160は、初期温度値を温度値Tに設定する。また、ステップS10が2回目以降に実行される場合、制御部160は、温度値Tを前回よりも低い値とする。
【0109】
(S11)制御部160は、局所場保持部120およびΔE計算部130を通常の2W1Hモードで動作させて、解探索を行わせる。制御部160は、2W1Hモードでの動作中、ステップS12,S17を実行する。
【0110】
(S12)制御部160は、通常の2W1Hモードでの解探索で、局所解に陥ったか否かを判定する。局所解に陥った場合、ステップS13に処理が進む。局所解に陥っていない場合、ステップS11に処理が進む。例えば、制御部160は、判定部140により次の遷移先候補の状態が全て棄却された場合に、局所解に陥ったと判定する。次の遷移先候補の状態が全て棄却される場合とは、次の遷移先候補に対応するエネルギーの変化量が全て正であり、式(5)または式(6)の判定基準を満たさない場合である。
【0111】
(S13)制御部160は、局所場保持部120およびΔE計算部130を巡回遷移モードに移行させる。
(S14)制御部160は、局所場保持部120およびΔE計算部130に巡回シナリオに沿った動作を実行させる。巡回遷移モードでは遷移が受け入れられない限りは、次の仮遷移におけるΔEは、前回までの仮遷移におけるΔEの累積加算分に足し合わせたものとして計算される。
【0112】
(S15)制御部160は、巡回遷移モードにおける累積のΔEが減少したか否かを判定する。累積のΔEが減少した場合、ステップS16に処理が進む。累積のΔEが減少していない場合、ステップS14に処理を進める。ここで、累積のΔEが減少した場合は、累積のΔEが負になった場合でもよい。ΔE<0の場合、式(6)の判定基準は満たされる。ただし、温度値や乱数値に応じて式(6)の判定基準により、累積のΔE>0の状態遷移が許容されることもある。
【0113】
(S16)制御部160は、巡回遷移モードを終了し、局所場保持部120およびΔE計算部130を通常の2W1Hモードに移行させる。そして、ステップS11に処理が進む。
【0114】
(S17)制御部160は、通常の2W1Hモードでの解探索において、規定回数だけ変化候補の変数xjを選択したか否かを判定する。規定回数だけ変化候補の変数xjを選択した場合、ステップS18に処理が進む。規定回数だけ変化候補の変数xjを選択していない場合、ステップS11に処理が進む。なお、前述のように、変化候補のxjの選択に応じて、変化候補の4つの状態変数xi,xj,xk,xlが特定される。
【0115】
(S18)制御部160は、規定回数だけ温度値Tを下げたか否かを判定する。規定回数だけ温度値Tを下げた場合、制御部160は、それまでで得られた最も低いエネルギーの解を出力し、処理を終了する。規定回数だけ温度値Tを下げていない場合、ステップS10に処理が進む。
【0116】
なお、ステップS17,S18は、ステップS11の中で実行される処理であると考えてもよい。また、ステップS11の実行中に、ステップS12の判定が実行されることになる。
【0117】
このように、情報処理装置100は、通常の2W1Hモードを実行し、通常の2W1Hモードで局所解に陥った場合に、当該局所解を起点の状態として、巡回遷移モードを実行してもよい。この場合、情報処理装置100は、巡回遷移モードにより起点の状態よりもエネルギーの低い状態を特定したら、特定した状態から、通常の2W1Hモードに復帰してもよい。これにより、情報処理装置100は、通常の2W1Hモードにおける局所解から脱出して、より良い解を探索可能になり、求解性能を向上できる。
【0118】
また、巡回遷移モードではなく、仮に、初期状態に返ってこないような遷移パターンを実施する場合、初期状態の局所場を記憶しておく必要がある。この場合、局所場のメモリ領域が2倍必要となる。
【0119】
これに対し、巡回遷移モードでは、仮に全ての遷移先候補が受け入れられなくても、局所場は巡回遷移モードの開始時点の値に戻る。このため、初期状態の局所場を記憶しておかなくてもよい。よって、情報処理装置100は、メモリ領域を効率的に使用して、求解性能を向上できる。
【0120】
また、
図7の手順では、SA法を実行する例を示したが、情報処理装置100は、レプリカ交換法を実行してもよい。その場合、ステップS10の温度値の設定は、レプリカ間での温度値の交換により行われ得る。また、ステップS18の判定は、例えば規定回数だけ温度値の交換を行ったか否かにより判定され得る。
【0121】
なお、巡回遷移モードでの巡回シナリオは、
図6で示した例以外のものでもよい。次に、巡回遷移モードに用いられる他の巡回シナリオの例を説明する。
図8は、巡回遷移モードの他の例(その1)を示す図である。
【0122】
巡回シナリオ71は、順列(1,2,3,4,5)のうち、要素(4,5)を固定する例を示す。巡回シナリオ71では、初期状態のステップ「1」から要素「3」が1つずつ前に移動するように他の要素と順次置換され、次いで、要素「2」も同様に他の要素と順次置換され、次いで、要素「1」も同様に他の要素と順次置換される。このようにすると、ステップ「7」で到達する順列は、元の順列(1,2,3,4,5)に一致する。
【0123】
図9は、巡回遷移モードの他の例(その2)を示す図である。
巡回シナリオ72は、順列(1,2,3,4,5)のうち、要素(3,5)を固定する例を示す。巡回シナリオ72では、ステップ「1」から要素「4」が、要素「3」を飛ばして1つずつ前に移動するように他の要素と順次置換される。次いで、要素「2」も要素「3」を飛ばして同様に他の要素と順次置換され、次いで、要素「1」も要素「3」を飛ばして同様に他の要素と順次置換される。このようにすると、ステップ「7」で到達する順列は、元の順列(1,2,3,4,5)に一致する。
【0124】
図10は、巡回遷移モードの他の例(その3)を示す図である。
巡回シナリオ73は、順列(1,2,3,4,5)のうち、要素(1,5)をステップ「1」~「4」で固定し、ステップ「5」で要素(1,5)を置換し、ステップ「6」~「9」で要素(1,5)を再度固定する例を示す。巡回シナリオ73では、ステップ「1」から要素「2」が、1つずつ後ろに移動するように他の要素と順次置換される。ステップ「4」では、要素(3,4)が置換される。そして、ステップ「6」から要素「4」が、1つずつ後ろに移動するように他の要素と順次置換される。ステップ「9」では、要素(1,5)が置換される。このようにすると、ステップ「9」で到達する順列は、元の順列(1,2,3,4,5)に一致する。
【0125】
このように、情報処理装置100は、種々の巡回シナリオを使用することができる。情報処理装置100は、上記のように、ある巡回シナリオによる巡回遷移モードでの探索を行った後に、他の巡回シナリオによる巡回遷移モードでの探索を継続してもよい。例えば、制御部160は、巡回シナリオ71を用いてステップ「7」に達した後に、巡回シナリオ72を用いてもよい。また、巡回シナリオ71~73で例示した順列内の各値は、ステップ「1」における順列内の左側から数えた各要素の位置を表してもよい。この場合、制御部160は、例えば巡回シナリオ71によりステップ「1」からのエネルギー変化の累積がメトロポリス基準を満たす状態を特定したら、特定した状態を起点として、巡回シナリオ72を用いて巡回遷移モードを継続してもよい。情報処理装置100は、複数の巡回シナリオを組み合わせることで、より多様な状態を効率的に探索可能になる。
【0126】
以上説明したように、情報処理装置100は例えば、次の処理を実行する。
情報処理装置100は、エネルギー関数に含まれる、イジングモデルの状態を示すNの2乗個の状態変数を記憶する。情報処理装置100は、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる状態遷移の繰り返しにより、第1状態から複数の状態を経て第1状態に戻る巡回遷移処理を実行する。情報処理装置100は、巡回遷移処理により順次得られる状態の中から、第1状態からの状態遷移ごとのエネルギー関数の値の変化量の累積が所定の判定基準を満たす第2状態を特定する。
【0127】
これにより、情報処理装置100は、多様な状態を効率的に探索できる。情報処理装置100の上記機能は、例えばFPGA109やGPUなどにより実現される。情報処理装置100の上記機能は、RAM102に記憶されたプログラムがCPU101により実行されることで実現されてもよい。FPGA109、GPUおよびCPU101などの演算回路を含むコプロセッサまたはプロセッサは、第1の実施の形態の処理部12の一例である。例えば、温度値と乱数値とを用いるメトロポリス法に基づく判定基準やギブス法に基づく判定基準は、所定の判定基準の一例である。
【0128】
例えば、情報処理装置100は、巡回遷移処理では状態遷移のたびに、第1状態からの状態遷移に応じたエネルギー関数の値の変化量を計算し、状態遷移ごとの変化量の累積が所定の判定基準を満たすか否か判定する。情報処理装置100は、変化量の累積が所定の判定基準を満たさない場合に、次に値を変化させる4つの状態変数の組を選択し、変化量の累積が所定の判定基準を満たす場合に、今回の状態遷移後の状態を第2状態として取得する。
【0129】
これにより、情報処理装置100は、メトロポリス基準などの判定基準を用いて、第2状態を適切に取得できる。
また、情報処理装置100は、状態遷移に応じたエネルギー関数の値の変化量の計算に用いられる、Nの2乗個の状態変数に対応するNの2乗個の局所場を記憶する。情報処理装置100は、巡回遷移処理の起点の第1状態に対応するNの2乗個の局所場と巡回遷移処理の終点の第1状態に対応するNの2乗個の局所場とを一致させる。
【0130】
これにより、情報処理装置100は、巡回遷移処理を行うに当たり、起点となる第1状態に対応する各局所場の複製を保持しておかなくて済み、メモリ容量を効率的に利用して、解探索を効率化できる。
【0131】
また、情報処理装置100は、巡回遷移処理において経由する複数の状態それぞれを互いに異なる状態とする。これにより、情報処理装置100は、多様な状態を効率的に探索できる。
【0132】
また、情報処理装置100は、制約を満たすように4つの状態変数の値を変化させる場合のエネルギー関数の値の変化量が所定の判定基準を満たすか否かの判定に応じて4つの状態変数の値の更新を繰り返す通常の探索処理を行ってもよい。情報処理装置100は、通常の探索処理において局所解に陥った場合に、当該局所解を第1状態として巡回遷移処理を実行してもよい。
【0133】
こうして、情報処理装置100は、通常の探索処理における解探索が滞った場合に、巡回遷移処理に切り替えることで、通常の探索処理で陥った局所解から脱出して、解探索を継続でき、求解性能を向上できる。
【0134】
このとき、情報処理装置100は、巡回遷移処理により第2状態を特定すると、第2状態から通常の探索処理を再開してもよい。これにより、情報処理装置100は、巡回遷移処理を用いて、通常の探索処理で陥った局所解から脱出した上で、通常の探索処理を継続でき、求解性能を向上できる。
【0135】
また、情報処理装置100は、値を変化させる4つの状態変数の組の第1の選択順序を示す第1巡回シナリオを用いて巡回遷移処理を実行してもよい。情報処理装置100は、第1巡回シナリオを用いた巡回遷移処理により第2状態が特定されずに第1状態に戻ると、第1の選択順序とは異なる第2の選択順序を示す第2巡回シナリオに切り替えて、巡回遷移処理を実行してもよい。これにより、情報処理装置100は、より多様な状態を効率的に探索できる。
【0136】
更に、情報処理装置100は、第1巡回シナリオを用いた巡回遷移処理により第2状態を特定すると、第1の選択順序とは異なる第2の選択順序を示す第2巡回シナリオに切り替え、特定した第2状態を新たな第1状態として巡回遷移処理を実行してもよい。これにより、情報処理装置100は、より多様な状態を効率的に探索できる。
【0137】
情報処理装置100の上記機能は、QAP、TSP、VRPおよびLOPなどの順列最適化問題に適用することができる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現されてもよい。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
【0138】
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0139】
10 情報処理装置
11 記憶部
12 処理部
20,21 状態
30,40 テーブル