JP2023180298A - 情報処理装置、情報処理方法およびプログラム - Google Patents
情報処理装置、情報処理方法およびプログラム Download PDFInfo
- Publication number
- JP2023180298A JP2023180298A JP2022093460A JP2022093460A JP2023180298A JP 2023180298 A JP2023180298 A JP 2023180298A JP 2022093460 A JP2022093460 A JP 2022093460A JP 2022093460 A JP2022093460 A JP 2022093460A JP 2023180298 A JP2023180298 A JP 2023180298A
- Authority
- JP
- Japan
- Prior art keywords
- state variables
- state
- solution
- values
- permutation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims description 76
- 238000003672 processing method Methods 0.000 title claims description 6
- 238000000034 method Methods 0.000 claims abstract description 59
- 238000005457 optimization Methods 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 57
- 230000008859 change Effects 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 96
- 239000011159 matrix material Substances 0.000 claims description 80
- 230000005366 Ising model Effects 0.000 claims description 16
- 230000007704 transition Effects 0.000 description 63
- 238000010586 diagram Methods 0.000 description 26
- 238000004364 calculation method Methods 0.000 description 15
- 230000015654 memory Effects 0.000 description 12
- 238000002922 simulated annealing Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 6
- 230000005283 ground state Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000137 annealing Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【課題】求解性能を向上する。【解決手段】処理部12は、順列最適化問題に対応する問題情報で示されるM2(Mは3以上の整数)個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数を追加したN2個の状態変数を含む第1エネルギー関数の情報を生成する。処理部12は、第1エネルギー関数の情報を探索部20に入力する。探索部20は、2-Way 1-Hot制約を満たすように4つの状態変数の値を変化させる場合のエネルギー関数の値の変化量に応じて、4つの状態変数の値を変化させる処理を繰り返し行う。処理部12は、探索部20により第1エネルギー関数に基づいて得られた、N2個の状態変数の値で表される第1の解40を取得する。処理部12は、第1の解40から(N2-M2)個の状態変数の値を除去することで順列最適化問題に対する第2の解41を生成する。【選択図】図1
Description
本発明は情報処理装置、情報処理方法およびプログラムに関する。
組合せ最適化問題の求解に情報処理装置が用いられることがある。組合せ最適化問題は、磁性体のスピンの振る舞いを表すモデルであるイジングモデルのエネルギー関数に変換される。エネルギー関数は、評価関数や目的関数と言われることもある。
情報処理装置は、例えばエネルギー関数に含まれる状態変数の値の組合せのうち、エネルギー関数の値を最小化する組合せを探索する。この場合、エネルギー関数の値を最小化する状態変数の値の組合せは、状態変数の組により表される基底状態または最適解に相当する。実用的な時間で組合せ最適化問題の近似解を得る手法には、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法に基づく、シミュレーテッドアニーリング(SA:Simulated Annealing)法やレプリカ交換法などがある。
ところで、組合せ最適化問題には、エネルギー関数に含まれる複数の状態変数のうち値が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-Way 1-Hot制約をもつ。
2-Way 1-Hot制約をもつ組合せ最適化問題では、N行N列の各状態変数の値は、異なるN個の要素の順列で表記可能である。例えば、異なる3つの要素を「1,2,3」とすると、3行3列の各状態変数の値は(1,2,3)や(2,1,3)などのように表記される。例えば、順列の要素の位置は行を示し、順列の要素の値は1である状態変数の列を示す。このように、2-Way 1-Hot制約を充足する解は順列で表される。解が順列で表される組合せ最適化問題は順列最適化問題と言われる。
例えば、2-Way 1-Hot制約をもつ組合せ最適化問題の求解を行う最適化装置の提案がある。
また、指定された訪問先を全て訪れることができる巡回経路のうち、距離が最も短いもの、あるいは、移動時間が短いものを求める訪問計画の問題を解く計画立案装置の提案がある。また、量子状態を表すキュービットで動作する量子回路に対してスワップゲートを挿入することで、局所性の制約、すなわち、近くのキュービット間の相互作用のみを許可する制約を満たす機能的に等価な回路に変換する最適化を行う方法の提案がある。
また、指定された訪問先を全て訪れることができる巡回経路のうち、距離が最も短いもの、あるいは、移動時間が短いものを求める訪問計画の問題を解く計画立案装置の提案がある。また、量子状態を表すキュービットで動作する量子回路に対してスワップゲートを挿入することで、局所性の制約、すなわち、近くのキュービット間の相互作用のみを許可する制約を満たす機能的に等価な回路に変換する最適化を行う方法の提案がある。
2-Way 1-Hot制約をもつ組合せ最適化問題、すなわち、順列最適化問題の求解を行う上記の最適化装置では、1回の状態遷移の試行では高々4つの状態変数の値が変化される。ところが、現状態に対して高々4つの状態変数の値を変化させた状態の中だけから遷移先の状態を決定していると、例えば局所解に陥った場合に局所解から脱出できなくなることがある。
1つの側面では、本発明は、求解性能を向上する情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
1つの態様では、イジングモデルのエネルギー関数で表される順列最適化問題の解の取得に用いられる情報処理装置が提供される。情報処理装置は、記憶部と処理部とを有する。記憶部は、順列最適化問題におけるM(Mは3以上の整数)の2乗個の状態変数を示す問題情報を記憶する。処理部は、問題情報に基づいて、Mの2乗個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成する。処理部は、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる場合のエネルギー関数の値の変化量に応じて、4つの状態変数の値を変化させる処理を繰り返し行う探索部に、第1エネルギー関数の情報を入力する。処理部は、探索部により第1エネルギー関数に基づいて得られた、Nの2乗個の状態変数の値で表される第1の解を取得する。処理部は、第1の解から(N2-M2)個の状態変数の値を除去することで順列最適化問題に対する第2の解を生成する。
また、1つの態様では、情報処理方法が提供される。また、1つの態様では、プログラムが提供される。
1つの側面では、求解性能を向上できる。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、組合せ最適化問題を表すエネルギー関数の情報を探索部20に入力し、探索部20により探索された解を取得する。探索部20は、情報処理装置10とは異なる装置でもよいし、情報処理装置10が備えてもよい。探索部20は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。例えば、探索部20は、MCMC法を基にしたSA法などを解の探索に用いる。
情報処理装置10は、組合せ最適化問題を表すエネルギー関数の情報を探索部20に入力し、探索部20により探索された解を取得する。探索部20は、情報処理装置10とは異なる装置でもよいし、情報処理装置10が備えてもよい。探索部20は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。例えば、探索部20は、MCMC法を基にしたSA法などを解の探索に用いる。
情報処理装置10は記憶部11および処理部12を有する。記憶部11は、例えばRAM(Random Access Memory)などの揮発性記憶装置である。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、GPU(Graphics Processing Unit)などの電子回路でもよい。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)を含み得る。また、探索部20は、FPGAやGPUなどの電子回路により実現される。
組合せ最適化問題は、イジング型のエネルギー関数により定式化され、例えばエネルギー関数の値を最小化する問題に置き換えられる。エネルギー関数は、目的関数や評価関数などと言われてもよい。エネルギー関数は、複数の状態変数を含む。状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと言われてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。エネルギー関数の値を最小化する解は、イジングモデルの基底状態を表し、組合せ最適化問題の最適解に対応する。エネルギー関数の値は、エネルギーと表記される。
イジング型のエネルギー関数は、式(1)で表される。
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化されたエネルギー関数である。なお、エネルギーを最大化する問題の場合には、エネルギー関数の符号を逆にすればよい。
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアスを示している。エネルギー関数に含まれる重み係数やバイアスや状態ベクトルなどを含む問題データは、記憶部11に記憶される。式(1)において、状態変数xiの値が変化して1-xiとなると、xiの増加分は、δxi=(1-xi)-xi=1-2xiと表せる。xiの変化に伴うエネルギーの変化量ΔEiは、式(2)で表される。
hiは局所場と呼ばれ、式(3)で表される。局所場は、ローカルフィールド(LF:Local Field)と言われることもある。
状態変数xjが変化したときの局所場hiの変化分δhi
(j)は、式(4)で表される。
状態変数xjの値が変化したときに変化分δhi
(j)をhiに加算することで、xjの値の変化後の状態に対応するhiが得られる。
基底状態の探索において、エネルギー変化がΔEiとなる状態遷移、すなわち、状態変数xiの値の変化を許容するか否かを決定するためにメトロポリス法やギブス法が用いられる。すなわち、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に許容される。例えば、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率Aは、式(5)で表される。
基底状態の探索において、エネルギー変化がΔEiとなる状態遷移、すなわち、状態変数xiの値の変化を許容するか否かを決定するためにメトロポリス法やギブス法が用いられる。すなわち、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に許容される。例えば、エネルギー変化ΔEの状態変数の値の変化を受け入れる確率Aは、式(5)で表される。
βは温度値T(T>0)の逆数(β=1/T)であり、逆温度と呼ばれる。min演算子は、引数のうちの最小値を取ることを示す。式(5)の右辺上側はメトロポリス法に相当する。式(5)の右辺下側はギブス法に相当する。探索部20は、あるインデックスiに関して0<u<1である一様乱数uとAとを比較し、u<Aであれば状態変数xiの値の変化を受入れ、状態変数xiの値を変化させる。探索部20は、u<Aでなければ状態変数xiの値の変化を受入れず、状態変数xiの値を変化させない。式(5)によれば、ΔEが大きい値であるほど、Aは小さくなる。また、βが小さい、すなわち、Tが大きいほど、ΔEが大きい状態遷移も許容され易くなる。例えば、メトロポリス法の判定基準が用いられる場合、式(5)を変形した式(6)により遷移判定が行われてもよい。
すなわち、一様乱数u(0<u≦1)に対して、エネルギー変化ΔEが式(6)を満たす場合に、該当の状態変数の値の変化が許容される。一様乱数uに対して、エネルギー変化ΔEが式(6)を満たさない場合に、該当の状態変数の値の変化が許容されない。ln(u)・Tは熱ノイズに相当する。例えば、SA法では、最高温度値から最低温度値へ温度値Tを徐々に下げながら解を探索する。
ここで、探索部20は、2-Way 1-Hot制約を満たす状態以外の状態の探索を除外することで、2-Way 1-Hot制約をもつ組合せ最適化問題、すなわち、順列最適化問題を効率的に解く。順列最適化問題は、N2個の状態変数の値で表される順列であって、エネルギー関数の値を最小化、または最大化する順列を求める問題であると言える。2-Way 1-Hot制約を満たす状態以外の状態の探索を除外する場合、探索部20は、一度の状態遷移において、4つの状態変数の値を変化させることになる。
以下では、エネルギー関数に含まれるM2(Mは3以上の整数)個の状態変数が2-Way 1-Hot制約を受けるものとする。これらの状態変数をM行M列に配列したときに各行と各列に含まれる状態変数の値の和が1である制約を満たすように、一度の状態遷移において、4つの状態変数の値を変化させることで、2-Way 1-Hot制約を満たす状態以外の状態の探索が除外される。M2個の状態変数をM行M列に配列する場合、例えば、x1~xMが1行目の1列目~M列目に相当し、xM+1~x2Mが2行目の1列目~M列目に相当し、以降、同様に、xM^2-M+1~xM^2がM行目の1列目~M列目に相当する。
なお、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は同じ列に属する。
例えば、インデックス=i,j,k,l(i<j<k<l)の4つの状態変数(xi,xj,xk,xl)の値を変化させると仮定する。xi,xjは同じ行に属する。xi,xkは同じ列に属する。xk,xlは同じ行に属する。xj,xlは同じ列に属する。
値が0の状態変数であるxjを更新対象候補とした場合、xjと同じ行および同じ列に含まれる状態変数のうち、値が1の状態変数であるxi,xlが更新対象候補となる。さらに、xiと同じ列、かつ、xlと同じ行である、値が0のxkが更新対象候補となる。これら4つの状態変数(xi,xj,xk,xl)の値の変化は、式(7)のように表せる。
4つの状態変数(xi,xj,xk,xl)の値を変化させた場合に生じるイジングモデルのエネルギー変化をΔEjとすると、ΔEjは、以下の式(8)のように表せる。
また、xi,xj,xk,xlが変化することによる局所場の変化分Δhm(m=1,2,…,n)は、以下の式(9)のように表せる。
このように、順列最適化問題では、式(5)または式(6)のΔEに式(8)のΔEjが用いられる。また、式(4)のδhi
(j)に代えて、式(9)のΔhmが用いられる。探索部20は、M2個の状態変数の値を保持する。探索部20は、M2個の状態変数それぞれに対応する局所場hmを保持する。探索部20は、各局所場に基づいて、ΔEjを計算する。また、探索部20は、ΔEjと式(5)または式(6)とに基づいて、値の変化が許容される4つの状態変数を判定する。探索部20は、探索部20に保持されるM2個の状態変数のうち、値の変化が許容される4つの状態変数の値を変化させることで、イジングモデルの状態を遷移させる。探索部20は、4つの状態変数の値の変化に伴い、探索部20に保持されるhmを、hm=hm+Δhmに更新する。
例えば、探索部20は、変化候補となる4つの状態変数をシーケンシャルに選択して、ΔEjの計算や式(5)または式(6)の判定を行い、値の変化が許容される4つの状態変数の値を変化させる処理を繰り返し行ってもよい。あるいは、探索部20は、変化候補の4つの状態変数の複数の組に対して、ΔEjの計算や式(5)または式(6)の判定を並列に行ってもよい。この場合、探索部20は、値の変化が許容される組からランダムに1つを選択し、当該組に属する4つの状態変数の値を変化させる処理を繰り返し行う。
このように、探索部20は、順列最適化問題の求解における1回の状態遷移の試行では高々4つの状態変数の値を変化させる仕組みをもつ。ここで、M行M列の各状態変数の値は順列で表せる。例えば、順列の要素の位置は行を示し、順列の要素の値は1である状態変数の列を示す。図1では、M=4の場合、すなわち、4行4列の計16個の状態変数で表される1つの状態30に対応する順列(1,2,3,4)が示されている。例えば、順列の左からp番目の値qは、状態30で示される行列の上からp行目かつ左からq列目の要素を1とすることを示す。順列の左からp番目の値qは、状態30で示される行列の左からp列目かつ上からq行目の要素を1とすることを示してもよい。
探索部20による、高々4つの状態変数の値を変化させる操作は、順列内の任意の2つの要素の位置を交換する操作に相当する。しかし、探索部20による1回の操作では、元の順列(1,2,3,4)に対して、(1,2,4,3)、(1,4,3,2)、(4,2,3,1)などのように、2つの要素を交換できるだけである。
ところが、このような操作により、次の遷移先の状態を決定していると、例えば局所解に陥った場合に局所解から脱出できなくなり、より良い解を得られなくなることがある。
そこで、処理部12は、元のM行M列の状態変数に対して、順列における冗長要素に相当するN2-M2個の状態変数を追加して、N行N列の状態変数とする。冗長要素は、解の探索のために便宜的に導入される要素である。一例では、処理部12は、状態30に対応する順列(1,2,3,4)に対して冗長要素「5」を追加し、順列(1,2,3,4,5)とする。この場合、N=5である。元の順列に対応する16個の状態変数に対して、冗長要素に対応する9個の状態変数が追加されたことになる。
そこで、処理部12は、元のM行M列の状態変数に対して、順列における冗長要素に相当するN2-M2個の状態変数を追加して、N行N列の状態変数とする。冗長要素は、解の探索のために便宜的に導入される要素である。一例では、処理部12は、状態30に対応する順列(1,2,3,4)に対して冗長要素「5」を追加し、順列(1,2,3,4,5)とする。この場合、N=5である。元の順列に対応する16個の状態変数に対して、冗長要素に対応する9個の状態変数が追加されたことになる。
順列(1,2,3,4,5)は、5行5列の状態変数で表される状態31に相当する。状態31の例では、5行目に属する状態変数および5列目に属する状態変数が、冗長要素「5」に対応する状態変数である。処理部12は、例えば5列目における値が1の状態変数と当該状態変数と同じ行および列に属する状態変数とが、冗長要素「5」に対応する状態変数であることを示す情報を、記憶部11に保持しておく。後で、冗長要素「5」に対応する状態変数を識別可能にするためである。
ここで、線形順序付け問題(LOP:Linear Ordering Problem)などの特定の順列最適化問題では、冗長要素を含む解と当該解から冗長要素を除去した解とのエネルギーが等価になるようにエネルギー関数を作成可能である。例えば、LOPは、問題情報として与えられるn行n列の問題行列Aの変換後の行列の対角成分よりも上の要素の和が最大になるように、変換を表す順列πを求める問題である。元の問題行列に対応するエネルギー関数をエネルギー関数E1とする。LOPは、式(10)で定式化される。順列πは式(11)で表される。
例えば、n=4のとき、行列Aは式(12)で表される。
例えば、順列πが式(13)で表されるとき、順列πに対応する順列行列Xは式(14)で表される。順列行列Xで問題行列Aを変換した行列tXAXは、式(15)で表される。ここで、tXはXの転置行列である。
行列tXAXに対する、エネルギー関数の値に相当するコストCostは、式(16)で表される。
上記のようなコストCostを求めるためには、重み係数行列Wは、問題行列Aに基づいて、式(17)で計算される。
tAは、行列Aの転置行列である。Aがn行n列のとき、Wはn2行n2列となる。また、Aは対称行列とは限らないが、Wは対称行列となる。例えば、処理部12は、冗長要素に対応する状態変数を追加した状態31に対して、式(12)のAを、式(18)のように変換する。
処理部12は、式(18)の変換後の行列Aを式(17)に代入して、冗長要素を導入した場合のWを求める。なお、処理部12は、冗長要素に対応する各状態変数のバイアスbについては0とする。
このようにすると、冗長要素の導入後の順列は、冗長要素が順列のどの位置にあっても、エネルギーが等価の状態として扱える。例えば、冗長要素「5」に対して、順列(1,2,3,4,5)、(1,2,3,5,4)、(1,2,5,3,4)、(1,5,2,3,4)、(5,1,2,3,4)は、全て等価である。
処理部12は、冗長要素の導入後の重み係数行列WおよびN2個の状態変数を含むエネルギー関数E2の情報を、探索部20に入力し、エネルギー関数E2に基づいて解の探索を実行させる。
探索部20は、エネルギー関数E2に基づいて解の探索を行うことで、ある状態に対する次の状態の候補を、元の問題行列に対応するエネルギー関数E1を用いるよりも増やせる。例えば、元の状態を、順列(1,2,3,4,5)で表される状態31とする。この場合、次の状態の候補は、(2,1,3,4,5)、(4,2,3,1,5)、(1,3,2,4,5)、(1,4,3,2,5)、(1,2,4,3,5)、(1,2,3,5,4)、(1,2,5,4,3)、(1,5,3,4,2)、(5,2,3,4,1)である。
このうち、順列(1,5,3,4,2)で表される状態は、(1,3,4,2)で表される状態と等価である。また、(5,2,3,4,1)で表される状態は、(2,3,4,1)で表される状態と等価である。順列(1,3,4,2)は、順列(1,2,3,4)に対して異なる要素の数が3つである。すなわち、順列(1,3,4,2)の状態は、順列(1,2,3,4)の状態から6つの状態変数の値が変化した状態となる。また、順列(2,3,4,1)は、順列(1,2,3,4)に対して異なる要素の数が4つとなる。すなわち、順列(2,3,4,1)の状態は、順列(1,2,3,4)の状態から8つの状態変数の値が変化した状態となる。こうして、冗長要素の導入により、4つより多い状態変数の値の変化、すなわち、マルチビット遷移と同等の状態遷移が実現され得る。
このように、探索部20は、エネルギー関数E2を用いることで、元の問題行列に対応するエネルギー関数E1を用いるよりも、ある状態に対し、制約を満たす次の遷移先の状態の候補を増やせるので、局所解に陥り難くなる。探索部20は、エネルギー関数E2に基づく解の探索を所定期間行うと、探索で得られた解のうち、最もエネルギーの低い解、すなわち、第1の解40を処理部12に出力する。
処理部12は、探索部20から得られた第1の解40を、記憶部11に格納する。第1の解40は、例えば、順列(5,2,3,4,1)で表される状態であると仮定する。処理部12は、第1の解40から、冗長要素「5」に対応する52-42=9個の状態変数を除去した第2の解41を生成する。冗長要素「5」は、順列(5,2,3,4,1)の先頭に位置する。したがって、例えば処理部12は、第1の解40のうち、1行目および5列目に属する9個の状態変数を除去することで、第2の解41を生成する。第2の解41は、順列(2,3,4,1)に相当する。第2の解41は、元の4行4列の計16個の状態変数で表される順列最適化問題の解である。
なお、前述のように、探索部20は、ある状態に対する全ての遷移先候補に対して、エネルギーの変化量を並列に計算し、そのうち式(5)または式(6)の判定基準を満たすものの中から1つを、次の遷移先としてランダムに選択してもよい。
また、冗長要素の位置は任意の位置とすることができる。処理部12は、初期状態の順列(1,2,3,4,5)のうち、例えば要素「3」を冗長要素として扱ってもよい。この場合、例えば5行5列に拡張された問題行列Aの3行目かつ3列目に全て0の行および列が設定され、エネルギー関数が定義される。あるいは、処理部12は、初期状態の順列(2,3,1,5,4)のうち、例えば要素「5」を冗長要素として扱ってもよい。この場合、例えば5行5列に拡張された問題行列Aの4行目かつ5列目に全て0の行および列が設定され、エネルギー関数が定義される。
以上説明したように、情報処理装置10によれば、順列最適化問題に対応するMの2乗個の状態変数を示す問題情報が取得される。問題情報に基づいて、Mの2乗個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数が追加されたNの2乗個の状態変数を含むエネルギー関数E2の情報が生成され、探索部20に入力される。探索部20により、Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる場合のエネルギー関数E2の値の変化量に応じて、4つの状態変数の値を変化させる処理を繰り返し行うことで第1の解が探索される。第1の解は、Nの2乗個の状態変数の値で表される。そして、探索部20により得られた第1の解が取得され、第1の解から(N2-M2)個の状態変数の値が除去されることで、順列最適化問題に対する第2の解が生成される。
これにより、情報処理装置10は、求解性能を向上できる。具体的には、処理部12は、エネルギー関数E2に基づいて、探索部20に解の探索を実行させることで、ある状態に対する次の状態の候補を増やせる。このため、探索部20において、局所解に陥り難くなる。
特に、冗長要素に対応する状態変数を導入しない場合、局所解に陥ったときに、探索部20において、4つの状態変数よりも多くの状態変数の値を1度に変化させる演算を行うことで、局所解からの脱出を図ることも考えられる。しかし、1度に変化させる状態変数の数が多いほど、エネルギーの変化量や局所場の計算が複雑化し、演算のコストが高まる。例えば、探索部20を、FPGAなどの電子回路で実現する場合、当該演算のための回路の複雑化も問題になる。
これに対し、情報処理装置10は、探索部20により、冗長要素を導入したエネルギー関数E2に基づく状態遷移を行わせることで、4つの状態変数の値の変化だけで、ある状態から、より多様な状態を遷移先の候補とすることができる利点がある。情報処理装置10は、冗長要素を導入することで、等価的に、既存の仕組みでは不可能だったマルチビット遷移、すなわち、同時に4よりも大きい数の状態変数を遷移させる動作を探索部20に行わせているとみることもできる。すなわち、情報処理装置10は、探索部20の既存の機能を利用して、探索部20の求解性能を簡便に向上できる。情報処理装置10の機能は、順列要素の前後関係だけが問題となる、例えばLOPなどの順列最適化問題に適用することができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置100は、組合せ最適化問題に対する解を、MCMC法を用いて探索し、探索した解を出力する。情報処理装置100は、CPU101、RAM102、HDD(Hard Disk Drive)103、GPU104、入力インタフェース105、媒体リーダ106、NIC(Network Interface Card)107およびアクセラレータカード108を有する。CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力インタフェース105は、情報処理装置100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107は、ネットワーク54に接続され、ネットワーク54を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC107は、無線通信インタフェースでもよい。
アクセラレータカード108は、式(1)のイジング型のエネルギー関数で表される問題の解を、MCMC法を用いて探索するハードウェアアクセラレータである。アクセラレータカード108は、一定温度のMCMC法または複数温度間でイジングモデルの状態を交換するレプリカ交換法を行うことで、該当温度におけるボルツマン分布に従う状態をサンプリングするサンプラーとして用いることができる。アクセラレータカード108は、組合せ最適化問題の求解のためには、レプリカ交換法や温度値を徐々に下げるSA法などのアニーリングの処理を実行する。
SA法は、各温度値におけるボルツマン分布に従う状態をサンプリングし、サンプリングに用いる温度値を高温から低温に下げる、すなわち、逆温度βを増やすことで、最適解を効率的に発見する方法である。低温側、すなわち、βの大きい場合でもある程度状態が変化することで、温度値を早く下げても良い解を発見できる可能性が高くなる。例えば、SA法を用いる場合、アクセラレータカード108は、一定の温度値での状態遷移の試行を一定回数繰り返した後に温度値を下げる、という動作を繰り返す。
レプリカ交換法は、複数の温度値を用いて独立してMCMC法を実行し、各温度値で得られた状態に対して、適宜、温度値を交換する手法である。低温でのMCMCによって状態空間の狭い範囲を探索し、高温でのMCMCによって状態空間の広い範囲を探索することで、効率的に良い解を発見することができる。例えば、レプリカ交換法を用いる場合、アクセラレータカード108は、複数の温度値の各々での状態遷移の試行を並列して行い、一定回数の試行を行うごとに、各温度値で得られた状態に対して、所定の交換確率で温度値を交換する、という動作を繰り返す。
アクセラレータカード108は、FPGA109を有する。FPGA109は、アクセラレータカード108における解探索機能を実現する。解探索機能は、GPUやASICなどの他の種類の電子回路により実現されてもよい。FPGA109は、メモリ109aを有する。メモリ109aは、FPGA109での探索に用いられる問題データやFPGA109により探索された解を保持する。メモリ109aは、例えばSRAM(Static Random Access Memory)である。FPGA109は、メモリ109aを含む複数のメモリを有してもよい。FPGA109は、メモリ109aを含む複数のメモリを有してもよい。なお、アクセラレータカード108は、FPGA109の外部にRAMを有してもよく、FPGA109の処理に応じて、メモリ109aに格納されたデータを当該RAMに一時的に退避してもよい。
アクセラレータカード108のようにイジング形式の問題の解を探索するハードウェアアクセラレータは、イジングマシンやボルツマンマシンなどと呼ばれることがある。
図3は、2-Way 1-Hotによるビットフリップ制御例を示す図である。
図3は、2-Way 1-Hotによるビットフリップ制御例を示す図である。
組合せ最適化問題では、2-Way 1-Hot制約と呼ばれる制約条件が課されることがある。2-Way 1-Hot制約をもつ組合せ最適化問題は、順列最適化問題と言われる。2-Way 1-Hotは、2W1Hと略記される。
ここで、1-Hot制約とは、「ある状態変数の組の中で、値が1の変数は1個だけである」という制約である。例えば、図3では、N2個(Nは4以上の整数)の状態変数x1,x2,…が、N行N列で示されている。グループg11,g12は、行に対応する状態変数のグループの例を示す。グループg21,g22は、列に対応する状態変数のグループの例を示す。各行に対応する状態変数のグループに1-Hot制約を課す場合、各行の状態変数の和は1である。例えば、グループg11に属する状態変数の和は1である。また、グループg12に属する状態変数の和は1である。あるいは、各列に対応する状態変数のグループに1-Hot制約を課す場合、各列の状態変数の和は1である。例えば、グループg21に属する状態変数の和は1である。グループg22に属する状態変数の和は1である。
2W1Hでは、2つの1-Hot制約を満たすように、1度に4つの状態変数の値を変化させる。すなわち、式(7)のような4ビットフリップである。i,j,k,lは、フリップさせる状態変数の組を示すインデックスの組である。なお、i<j<k<lである。図3では、インデックスi,j,k,lに対応する状態変数の組の例が示されている。2W1Hでは、状態変数の数がN2であり、N行の各行およびN列の各列でそれぞれ状態変数が、1-Hot制約が課されたグループとしてグループ化される。このときのエネルギー変化ΔEjは、式(8)で表される。状態変数xmに対応する局所場の変化Δhmは、式(9)で表される。m=1,2,…,N2である。
以下では、順列最適化問題の一例として、LOPを挙げる。ただし、情報処理装置100による処理対象の順列最適化問題は、順列要素の前後関係だけが問題となる、LOP以外の順列最適化問題でもよい。
例えば、LOPにおけるコストを示すCost Eは、式(19)のように表すことができる。
ここで、式(19)の変数xikの値は、式(20)で表される。
また、問題行列Aは、式(21)で表される。更に、fijを与える行列Fは、式(22)で表される。ここで、式(22)の行列Fは、対角成分よりも上の要素が全て-1であり、それ以外が全て0である。
式(19)のCost Eを与えるイジング形式のエネルギー関数Eは、式(23)で表される。
式(23)のxは、イジングモデルの状態を示す状態ベクトルである。式(23)のWは、式(17)で計算される重み係数行列である。
図4は、イジングモデルの状態と順列との対応関係の例を示す図である。
図4は、イジングモデルの状態と順列との対応関係の例を示す図である。
図4(A)は、N=5の場合のイジングモデルの状態61の例を示す。図4(B)は、N=5の場合のイジングモデルの状態62を示す。状態61,62それぞれは、25個の状態変数x1~x25で表される。状態61,62それぞれで示される行列の1行目は、状態変数x1~x5のグループである。2行目は、状態変数x6~x10のグループである。3行目は、状態変数x11~x15のグループである。4行目は、状態変数x16~x20のグループである。5行目は、状態変数x21~x25のグループである。なお、各状態変数は列方向にもグループ化される。
状態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とすることを示す。
状態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)と表される。
図5は、情報処理装置の機能例を示す図である。
情報処理装置100は、2W1H制約を満たすようにイジングモデルの状態を遷移させ、順列最適化問題の求解を効率的に行う。情報処理装置100は、探索部110および制御部120を有する。探索部110は、SA法などを用いてLOPの解を探索する。制御部120は、探索部110を制御する。探索部110は、FPGA109により実現される。制御部120は、CPU101により実現される。
情報処理装置100は、2W1H制約を満たすようにイジングモデルの状態を遷移させ、順列最適化問題の求解を効率的に行う。情報処理装置100は、探索部110および制御部120を有する。探索部110は、SA法などを用いてLOPの解を探索する。制御部120は、探索部110を制御する。探索部110は、FPGA109により実現される。制御部120は、CPU101により実現される。
探索部110は、重み係数保持部111、局所場保持部112、ΔE計算部113、判定部114および状態保持部115を有する。重み係数保持部111および局所場保持部112におけるデータの記憶領域には、メモリ109aが用いられる。
重み係数保持部111は、式(1)における重み係数行列Wを保持する。重み係数保持部111は、判定部114から供給されるインデックスjに基づいて、局所場保持部112に重み係数Wmi,Wmj,Wmk,Wmlを供給する。
局所場保持部112は、式(3)に基づく局所場h1,h2,…,hnを保持する。局所場保持部112は、2W1Hによる4つの状態変数xi,xj,xk,xlの値の変化に応じて、重み係数保持部111に保持される重み係数Wに基づき、式(9)により局所場h1,h2,…,hnを更新する。ここで、nは、全状態変数の数であり、n=N2である。
ΔE計算部113は、状態変数xi,xj,xk,xlの値を変化させる場合のエネルギー変化ΔEjを、式(8)により計算する。ΔE計算部113は、変化候補とする複数の状態変数に対して、複数のΔEを並列に計算してもよい。
判定部114は、式(6)に基づいて、4つの状態変数xi,xj,xk,xlの値の変化が許容されるか否かを判定する。判定部114は、許容される場合、状態保持部115に保持される4つの状態変数xi,xj,xk,xlの値を変化させるとともに、インデックスi,j,k,lを重み係数保持部111に供給する。ΔE計算部113により複数のΔEが並列に計算される場合、判定部114は、式(6)に基づいて、値の変化が許容される4つの状態変数の複数の組のうち、何れかを選択し、選択した組に属する4つの状態変数の値を変化させる。
状態保持部115は、状態変数(x1,x2,…,xn)を保持する。状態保持部115は、初期状態のエネルギーに対して状態遷移に応じたΔEを積算することで、現在の状態に対応するエネルギーを保持してもよい。
制御部120は、元の問題に対応するエネルギー関数に対して冗長要素を導入したエネルギー関数の情報を生成し、探索部110に設定する。例えば、制御部120は、LOPとして与えられたM行M列の問題行列Aを式(18)のようにN行N列に変換し、変換後の問題行列Aに対して式(17)を用いて、重み係数行列Wを生成する。変換後の問題行列はN行N列である。この場合、式(17)により計算される重み係数行列Wは、N2行N2列の対称行列となる。また、制御部120は、LOPとして与えられたM2個の状態変数に対して(N2-M2)個の状態変数を追加して、N2個の状態変数に拡張する。制御部120は、こうして冗長要素を導入したエネルギー関数の情報を生成して探索部110に入力し、解の探索を実行させる。
制御部120は、探索部110での探索の結果として得られた解を取得し、当該解から(N2-M2)個の状態変数を除去して、M2個の状態変数に戻す。すなわち、制御部120は、M2個の状態変数で表される解を、与えられたLOPの解として生成する。制御部120は、生成した解を出力する。
なお、探索部110における2W1Hによる解の探索には、例えば、特開2021-157361号公報が参考になる。
図6は、LOPにおける冗長要素の追加方法の例を示す図である。
図6は、LOPにおける冗長要素の追加方法の例を示す図である。
一例として、元の問題が16個の状態変数x1~x16を用いて表されるものとする。問題情報D1は、元の問題に対応する問題行列Aおよび状態変数(x1,…,x16)を示す。問題行列Aは4行4列の行列である。
問題情報D2は、冗長要素を加えた後の問題行列Aおよび状態変数(x1,…,x25)を示す。冗長要素を加えた後の問題行列Aは、5行5列の行列である。冗長要素を加えた後の問題行列Aの5行目の各要素および5列目の各要素は何れも0である。冗長要素を加えた後の問題行列Aは拡張行列と言われる。制御部120は、拡張行列を用いて、式(17)により重み係数行列Wを生成する。また、状態変数x1~x25は、元の16個の状態変数x1~x16に対して9個の状態変数が追加されたものである。元の状態変数に対して追加される状態変数は、冗長変数と言われる。
図7は、冗長変数の追加例を示す図である。
図6の例において、元の問題における16個の状態変数x1~x16は、状態71を示す。例えば、{x1,x2,x3,x4}={1,0,0,0}、{x5,x6,x7,x8}={0,1,0,0}、{x9,x10,x11,x12}={0,0,1,0}、{x13,x14,x15,x16}={0,0,0,1}である。この場合、状態71は、順列(1,2,3,4)と表される。
図6の例において、元の問題における16個の状態変数x1~x16は、状態71を示す。例えば、{x1,x2,x3,x4}={1,0,0,0}、{x5,x6,x7,x8}={0,1,0,0}、{x9,x10,x11,x12}={0,0,1,0}、{x13,x14,x15,x16}={0,0,0,1}である。この場合、状態71は、順列(1,2,3,4)と表される。
また、冗長要素「5」を加えた後の25個の状態変数x1~x25は、状態72を示す。例えば、{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}である。この場合、状態72は、順列(1,2,3,4,5)と表される。
図8は、制御部による解の取得例を示す図である。
例えば、制御部120は、初期状態を状態72として、探索部110に解の探索、すなわち、最適化処理を実行させる。なお、状態72は、冗長要素「5」を除去した状態72aと等価である。制御部120は、探索部110から最適化が終了した状態73を取得する。状態73は、探索部110の探索結果として得られた解に相当する。
例えば、制御部120は、初期状態を状態72として、探索部110に解の探索、すなわち、最適化処理を実行させる。なお、状態72は、冗長要素「5」を除去した状態72aと等価である。制御部120は、探索部110から最適化が終了した状態73を取得する。状態73は、探索部110の探索結果として得られた解に相当する。
ここで、状態73は、{x1,x2,x3,x4,x5}={0,0,0,0,1}、{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}={1,0,0,0,0}である。この場合、状態73は、順列(5,2,3,4,1)に相当する。制御部120は、状態73から冗長要素「5」に対応する9個の状態変数x1,x2,x3,x4,x5,x10,x15,x20,x25を除去することで、解くべきLOPの解に相当する状態73aを生成する。状態73aは、順列(2,3,4,1)に相当する。
なお、冗長要素「5」を含む順列(5,2,3,4,1)に対して、順列(2,5,3,4,1)、(2,3,5,4,1)、(2,3,4,5,1)、(2,3,4,1,5)は、エネルギーが等価な状態となる。また、これらの冗長要素「5」を含む順列は何れも、順列(2,3,4,1)と等価である。
このように、制御部120は、式(18)の拡張行列Aに対し、式(17)により重み係数行列Wを生成する。すると、上記の順列において冗長要素「5」以外の要素「1,2,3,4」の一定の並びに対し冗長要素「5」が何れの位置にあっても順列に対応するNの2乗個の状態変数の値に対するエネルギーが同じになる。例えば、冗長要素「5」以外の要素「1,2,3,4」の一定の並びが(2,3,4,1)であるとする。この場合、例えば上記のように、冗長要素「5」が要素「2」の前にある順列(5,2,3,4,1)の状態に対するエネルギーも、冗長要素「5」が要素「2,3」の間にある順列(2,5,3,4,1)の状態に対応するエネルギーも同じになる。
図9は、冗長要素の有無に応じた状態遷移先候補の例を示す図である。
図9(A)は、冗長要素を導入しない場合の状態遷移先候補の比較例のテーブルT1を示す。図9(B)は、冗長要素を導入する場合の状態遷移先候補の例のテーブルT2を示す。
図9(A)は、冗長要素を導入しない場合の状態遷移先候補の比較例のテーブルT1を示す。図9(B)は、冗長要素を導入する場合の状態遷移先候補の例のテーブルT2を示す。
テーブルT1における元の状態は、順列(1,2,3,4)に相当する。テーブルT2における元の状態は、順列(1,2,3,4)に冗長要素「5」を導入した順列(1,2,3,4,5)に相当する。
テーブルT1によれば、元の状態の順列(1,2,3,4)に対する次の状態の候補は、(2,1,3,4)、(3,2,1,4)、(4,2,3,1)、(1,3,2,4)、(1,4,3,2)、(1,2,4,3)である。これらの候補は、何れも元の状態の順列(1,2,3,4)と異なる要素の数は2である。すなわち、冗長要素を導入しない場合、次の状態の候補は、元の状態から4つ状態変数の値を変化させる4ビット遷移で到達する状態のみである。
テーブルT2では、元の状態の順列(1,2,3,4,5)に対する次の状態の候補として、冗長要素「5」を移動させる場合の候補が記載されており、それ以外の候補の図示が省略されている。テーブルT2によれば、元の状態の順列(1,2,3,4,5)に対する次の状態の候補として(1,2,3,5,4)、(1,2,5,4,3)、(1,5,3,4,2)、(5,2,3,4,1)がある。
順列(1,2,3,5,4)は、順列(1,2,3,4)と等価である。順列(1,2,5,4,3)は、順列(1,2,4,3)と等価である。順列(1,5,3,4,2)は、順列(1,3,4,2)と等価である。順列(5,2,3,4,1)は、順列(2,3,4,1)と等価である。
順列(1,2,3,4)は、冗長要素を導入しない元の順列(1,2,3,4)と異なる要素の数は0である。順列(1,2,4,3)は、元の順列(1,2,3,4)と異なる要素の数は2である。順列(1,3,4,2)は、元の順列(1,2,3,4)と異なる要素の数は3である。順列(2,3,4,1)は、元の順列(1,2,3,4)と異なる要素の数は4である。
この場合、順列(1,3,4,2)で表される状態は、元の状態から6つの状態変数の値を変化させる6ビット遷移で到達する状態である。また、順列(2,3,4,1)で表される状態は、元の状態から8つの状態変数の値を変化させる8ビット遷移で到達する状態である。このように、制御部120は、順列に冗長要素を導入することで、既存の順列内の2つの要素の入れ替えを行うという試行の仕組みで探索部110を動作させながら、等価的に遷移先の状態として4ビット以上離れている状態を探索させることができる。
なお、例えば、初期状態の順列(2,3,1,5,4)のうち、要素「5」を冗長要素とする場合も考えられる。この場合、制御部120は、例えば5行5列に拡張した問題行列Aにおいて4行目かつ5列目の要素を全て0とすればよい。
次に、情報処理装置100の処理手順を説明する。
図10は、情報処理装置の処理例を示すフローチャートである。
(S10)制御部120は、入力された問題情報に基づいて、拡張行列Aを生成する。また、制御部120は、問題情報で示される状態変数群に対して、冗長変数を追加する。制御部120は、拡張行列Aを用いて重み係数行列Wを計算し、重み係数行列Wおよび冗長変数を追加した状態変数群に関するエネルギー関数の情報を生成する。制御部120は、エネルギー関数の情報を探索部110に入力し、当該エネルギー関数に基づく解の探索を開始させる。
図10は、情報処理装置の処理例を示すフローチャートである。
(S10)制御部120は、入力された問題情報に基づいて、拡張行列Aを生成する。また、制御部120は、問題情報で示される状態変数群に対して、冗長変数を追加する。制御部120は、拡張行列Aを用いて重み係数行列Wを計算し、重み係数行列Wおよび冗長変数を追加した状態変数群に関するエネルギー関数の情報を生成する。制御部120は、エネルギー関数の情報を探索部110に入力し、当該エネルギー関数に基づく解の探索を開始させる。
(S11)探索部110は、2W1H動作で、SA法やレプリカ交換法などを用いた解の探索を行う。探索部110は、探索が終了すると、探索により得られた最もエネルギーの低い解を、制御部120に出力する。
(S12)制御部120は、探索部110から取得した解から冗長要素に対応する冗長変数を除去することで、入力された問題情報に係る順列最適化問題の解を生成する。制御部120は、生成した解を出力する。そして、情報処理装置100の処理が終了する。
以上説明したように、制御部120は、冗長要素を導入することで、探索部110による求解性能を向上できる。すなわち、制御部120は、探索部110の探索において、ある状態に対する次の状態の候補を増やせる。このため、探索部110において、局所解に陥り難くなる。
特に、冗長要素に対応する状態変数を導入しない場合、局所解に陥ったときに、探索部110において、4つの状態変数よりも多くの状態変数の値を1度に変化させる演算を行うことで、局所解からの脱出を図ることも考えられる。しかし、1度に変化させる状態変数の数が多いほど、エネルギーの変化量や局所場の計算が複雑化し、演算のコストが高まる。例えば、探索部110を、FPGAなどの電子回路で実現する場合、当該演算のための回路の複雑化も問題になる。
これに対し、制御部120は、探索部110により、冗長要素を導入したエネルギー関数に基づく状態遷移を行わせることで、4つの状態変数の値の変化だけで、ある状態から、より多様な状態を遷移先の候補とすることができる。制御部120は、冗長要素を導入することで、等価的に、既存の仕組みでは不可能だったマルチビット遷移、すなわち、同時に4よりも大きい数の状態変数を遷移させる動作を探索部110に行わせているとみることもできる。こうして、情報処理装置100は、探索部110の既存の機能を利用して、探索部110の求解性能を簡便に向上できる。
[第3の実施の形態]
次に第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
次に第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
第3の実施の形態では、情報処理装置100は、順列に導入される冗長要素の数を可変にする。
図11は、第3の実施の形態の情報処理装置の処理例を示すフローチャートである。
図11は、第3の実施の形態の情報処理装置の処理例を示すフローチャートである。
(S20)制御部120は、入力された問題情報に基づいて、拡張行列Aを生成する。また、制御部120は、問題情報で示される状態変数群に対して、冗長変数をk個追加する。拡張行列は、冗長変数の追加により導入される順列の冗長要素の数に応じて生成される。例えば、順列の末尾に冗長要素を2つ追加するように冗長変数を追加する場合、LOPでは、元の問題行列Aの末尾に、値が全て0の2つの行と2つの列とが追加される。例えば、制御部120は、当初追加する冗長変数の数を0とし、以後、ステップS20が実行されるたびにkの値を増やす。
制御部120は、拡張行列Aを用いて重み係数行列Wを計算し、重み係数行列Wおよび冗長変数を追加した状態変数群に関するエネルギー関数の情報を生成する。制御部120は、エネルギー関数の情報を探索部110に入力し、当該エネルギー関数に基づく解の探索を開始させる。
(S21)探索部110は、2W1H動作で、SA法やレプリカ交換法などを用いた解の探索を行う。探索部110は、探索が終了すると、探索により得られた最もエネルギーの低い解を制御部120に出力する。
(S22)制御部120は、規定回数、変数kを変更したか否かを判定する。規定回数、変数kを変更した場合、ステップS23に処理が進む。規定回数、変数kを変更していない場合、ステップS20に処理が進む。
(S23)制御部120は、探索部110から取得した解のうち、最もエネルギーの低い解の冗長変数を除去することで、入力された問題情報に係る順列最適化問題の解を生成する。制御部120は、生成した解を出力する。そして、情報処理装置100の処理が終了する。
このように、制御部120は、k個の冗長変数の追加によりNの値を段階的に増やせる。例えば、状態変数をN行N列とするようにk個の冗長変数を追加する場合、k=2N-1となる。よって、k個の冗長変数が追加されるとN=(k+1)/2となる。こうして、制御部120は、Nの値を段階的に増やし、各Nの値に対して探索部110による求解を実行させ、探索部110で得られた解の中で最も良い解から冗長変数を除去して、最終的な解を取得してもよい。
なお、制御部120は、ステップS21を一定時間実行することで得られた最低エネルギーを取得し、ステップS22では、当該最低エネルギーが、これまでに得られたものから改善されたか否かに応じて、kを増やすか減らすかを選択してもよい。
例えば、最初にk=0でステップS21が実行された際に得られた最低エネルギーをE(0)とする。次に1回目に冗長変数をk個増やしてステップS21が実行された際に得られた最低エネルギーをE(1)とする。制御部120は、ステップS21でE(1)<E(0)、すなわち、改善の場合は、更に、2回目以降もkを増やし、k個の冗長変数を追加して試す。そして、制御部120は、ステップS22でE(n+1)>E(n)になった段階で、ステップS23に進んでもよい。この場合、制御部120は、E(n)に対応する解から冗長変数を除去することで、最終的な解を生成する。
このように、情報処理装置100は、順列に導入される冗長要素の数を可変にすることで、多様な状態が探索される可能性を高め、探索部110による求解性能を向上できる。
[第4の実施の形態]
次に第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
[第4の実施の形態]
次に第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
図12は、第4の実施の形態の冗長変数フラグの例を示す図である。
一例として4要素の順列(1,2,3,4)に対して、1つの冗長要素「5」を加える場合を示す。初期状態では冗長要素「5」は、順列の末尾に付加される。すなわち、順列(1,2,3,4)が順列(1,2,3,4,5)のように拡張される。この時、両者の間でエネルギーの差が発生しないように定式化される。例えば、LOPの場合、図6のように拡張すれば当該エネルギーの差が発生しない。
一例として4要素の順列(1,2,3,4)に対して、1つの冗長要素「5」を加える場合を示す。初期状態では冗長要素「5」は、順列の末尾に付加される。すなわち、順列(1,2,3,4)が順列(1,2,3,4,5)のように拡張される。この時、両者の間でエネルギーの差が発生しないように定式化される。例えば、LOPの場合、図6のように拡張すれば当該エネルギーの差が発生しない。
また、状態変数には、元の状態変数(x1,x2,…,x16)に対して、冗長変数(x17,x18,…,x25)が追加される。
状態80は、25個の状態変数による5行5列の行列で表される。状態80では、1行目がx1~x5、2行目がx6~x10、3行目がx11~x15、4行目がx16~x20、5行目がx21~x25となる。
状態80は、25個の状態変数による5行5列の行列で表される。状態80では、1行目がx1~x5、2行目がx6~x10、3行目がx11~x15、4行目がx16~x20、5行目がx21~x25となる。
このとき、冗長変数フラグの値は、冗長要素「5」が順列のどこにあるか分かるように付与される。冗長変数フラグ情報90(=flag1)は、初期段階における各状態変数の冗長変数フラグの値を示す。
探索部110による状態遷移によって、冗長要素「5」が移動し、例えば、順列(3,5,2,1,4)の状態となる。冗長変数フラグ情報90a(=flag2)は、このときの各状態変数の冗長変数フラグの値を示す。
図13は、冗長要素が複数の場合の冗長変数フラグの例を示す図である。
状態81は、順列(1,2,3,4)に対して冗長要素「5」、「6」を追加した順列(1,2,3,4,5,6)で示される初期状態を示す。
状態81は、順列(1,2,3,4)に対して冗長要素「5」、「6」を追加した順列(1,2,3,4,5,6)で示される初期状態を示す。
冗長変数フラグ情報91は、状態81に対応する各状態変数の冗長変数フラグの値を示す。冗長変数フラグ情報91により、順列における複数の冗長要素が管理される。
図14は、状態遷移の例を示す図である。
図14は、状態遷移の例を示す図である。
図14(A)は、状態81に対する遷移後の状態82を示す。状態82は、順列(1,2,3,4,6,5)に相当する。状態81から状態82へ遷移する状態遷移は、冗長要素「5」、「6」の置換に相当する遷移であり、意味のない遷移である。順列(1,2,3,4,6,5)のうちの冗長要素「5」、「6」を除去した(1,2,3,4)の並びに変化がないからである。
図14(B)は、状態81に対する遷移後の状態83を示す。状態83は、順列(6,2,3,4,5,1)に相当する。状態81から状態83への状態遷移は、冗長要素「1」、「6」の置換に相当する遷移であり、意味のある遷移である。順列(6,2,3,4,5,1)のうちの冗長要素「5」、「6」を除去した(2,3,4,1)の並びが、元の並び(1,2,3,4)に対して変化しているからである。
意味のない状態遷移が実行されると解探索が遅延し得る。そこで、情報処理装置100は、冗長変数フラグ情報91に基づいて、探索部110における意味のない遷移を抑制する制御を行う。
図15は、情報処理装置の機能例を示す図である。
第4の実施の形態では、局所場保持部112が局所場h1,h2,…,hnとともに、状態変数x1,x2,…,xnに対して冗長変数フラグf1,f2,…,fnを保持する点が、第2の実施の形態と異なる。また、ΔE計算部113が冗長変数判定部113aを有する点が第2の実施の形態と異なる。冗長変数判定部113aは、冗長変数フラグf1,f2,…,fnに基づいて、各インデックスに対応する状態変数が冗長変数に該当するか否かを判定する。冗長変数フラグf1,f2,…,fnの値は、状態遷移に応じて冗長要素に対応する冗長変数に対する値が1、それ以外が0になるように更新される。冗長変数フラグf1,f2,…,fnの値の更新は、局所場保持部112により行われてもよいし、判定部114により行われてもよい。
第4の実施の形態では、局所場保持部112が局所場h1,h2,…,hnとともに、状態変数x1,x2,…,xnに対して冗長変数フラグf1,f2,…,fnを保持する点が、第2の実施の形態と異なる。また、ΔE計算部113が冗長変数判定部113aを有する点が第2の実施の形態と異なる。冗長変数判定部113aは、冗長変数フラグf1,f2,…,fnに基づいて、各インデックスに対応する状態変数が冗長変数に該当するか否かを判定する。冗長変数フラグf1,f2,…,fnの値は、状態遷移に応じて冗長要素に対応する冗長変数に対する値が1、それ以外が0になるように更新される。冗長変数フラグf1,f2,…,fnの値の更新は、局所場保持部112により行われてもよいし、判定部114により行われてもよい。
次に、冗長変数フラグに基づく情報処理装置100の処理手順を説明する。
図16は、探索部の処理例を示すフローチャートである。
探索部110による解の探索にはSA法が用いられるものとする。
図16は、探索部の処理例を示すフローチャートである。
探索部110による解の探索にはSA法が用いられるものとする。
(S30)制御部120は、探索部110を初期化する。制御部120は、入力された問題情報を基に、複数の冗長要素を導入したエネルギー関数の情報を生成し、探索部110に入力する。
(S31)判定部114は、式(6)に用いられる温度値Tを設定する。なお、ステップS31が初回に実行される場合、判定部114は、初期温度値を温度値Tに設定する。また、ステップS31が2回目以降に実行される場合、判定部114は、温度値Tを前回よりも低い値とする。
(S32)ΔE計算部113は、現在の値が0である状態変数xjのインデックスjを決定する。インデックスjは、ランダムに選択されてもよいし、シーケンシャルに選択されてもよい。ΔE計算部113は、インデックスjからその他にフリップすべき3つの状態変数のインデックスi,k,lを計算する。xi=1、かつ、xl=1である。
(S33)冗長変数判定部113aは、インデックスi,lに対応する冗長変数フラグfi,flを読み出す。
(S34)冗長変数判定部113aは、2つの冗長変数フラグfi,flの少なくとも一方が0であるか否かを判定する。2つの冗長変数フラグfi,flの少なくとも一方が0である場合、ステップS35に処理が進む。2つの冗長変数フラグfi,flの何れもが0でない、すなわち、両方とも1の場合、ステップS32に処理が進む。このように、状態変数xi,xlの両方が冗長変数フラグ=1の場合、インデックスjが再度選択される。
(S34)冗長変数判定部113aは、2つの冗長変数フラグfi,flの少なくとも一方が0であるか否かを判定する。2つの冗長変数フラグfi,flの少なくとも一方が0である場合、ステップS35に処理が進む。2つの冗長変数フラグfi,flの何れもが0でない、すなわち、両方とも1の場合、ステップS32に処理が進む。このように、状態変数xi,xlの両方が冗長変数フラグ=1の場合、インデックスjが再度選択される。
(S35)ΔE計算部113は、式(8)に基づくΔEの計算を行い、判定部114に供給する。判定部114は、ΔEに基づく式(6)の判定により、4つの状態変数xi,xj,xk,xlの値の更新を許容するか否か判定し、許容する場合、状態保持部115における状態変数xi,xj,xk,xlの値を更新する。また、判定部114は、インデックスjを重み係数保持部111に出力し、重み係数(Wmi,Wmj,Wmk,Wml)を局所場保持部112に供給させる。局所場保持部112は、式(9)に基づいて各局所場を更新する。
(S36)ΔE計算部113は、規定回数だけ変化候補の変数xjを選択したか否かを判定する。規定回数だけ変化候補の変数xjを選択した場合、ステップS37に処理が進む。規定回数だけ変化候補の変数xjを選択していない場合、ステップS32に処理が進む。
(S37)判定部114は、規定回数だけ温度値Tを下げたか否かを判定する。規定回数だけ温度値Tを下げていない場合、ステップS31に処理が進む。規定回数だけ温度値Tを下げた場合、探索部110は、得られた最低のエネルギーの解を制御部120に出力し、処理を終了する。この場合、制御部120は、探索部110により出力された解から冗長要素に対応する冗長変数を除去した解を生成して出力する。
ここで、冗長要素同士の置換による状態遷移は、冗長要素以外の他の要素の移動を伴わない意味のない遷移であり、余計な処理となる。そこで、情報処理装置100は、上記のように冗長要素同士の置換による遷移を抑制することで、意味のない遷移が行われることを防ぎ、求解を高速化できる。
なお、図16の手順では、SA法を実行する例を示したが、探索部110は、レプリカ交換法を実行してもよい。その場合、ステップS31の温度値の設定は、レプリカ間での温度値の交換により行われ得る。また、ステップS37の判定は、例えば規定回数だけ温度値の交換を行ったか否かにより判定され得る。
以上説明したように、情報処理装置100は、例えば次の処理を実行する。
制御部120は、順列最適化問題として与えられた問題情報で示されるMの2乗個の状態変数に(N2-M2)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成する。制御部120は、第1エネルギー関数の情報を探索部110に入力する。探索部110は、2W1H制約を満たすように、4つの状態変数の値を変化させる場合のエネルギー関数の値の変化量に応じて、4つの状態変数の値を変化させる処理を繰り返し行う。制御部120は、探索部110により第1エネルギー関数に基づいて得られた、Nの2乗個の状態変数の値で表される第1の解を取得する。制御部120は、第1の解から(N2-M2)個の状態変数の値を除去することで、順列最適化問題に対する第2の解を生成する。
制御部120は、順列最適化問題として与えられた問題情報で示されるMの2乗個の状態変数に(N2-M2)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成する。制御部120は、第1エネルギー関数の情報を探索部110に入力する。探索部110は、2W1H制約を満たすように、4つの状態変数の値を変化させる場合のエネルギー関数の値の変化量に応じて、4つの状態変数の値を変化させる処理を繰り返し行う。制御部120は、探索部110により第1エネルギー関数に基づいて得られた、Nの2乗個の状態変数の値で表される第1の解を取得する。制御部120は、第1の解から(N2-M2)個の状態変数の値を除去することで、順列最適化問題に対する第2の解を生成する。
これにより、情報処理装置100は、探索部110により、既存の4ビット遷移の仕組みを用いて、実質的には4ビット遷移よりも多いマルチビット遷移を実現させることができ、求解性能を向上できる。また、探索部110において同時に4ビット遷移を行う既存のハードウェアを利用でき、探索部110の求解性能を簡便に向上できる。情報処理装置100の制御部120の機能は、RAM102に記憶されたプログラムがCPU101により実行されることで実現されてもよい。CPU101などの演算回路を含むプロセッサは、第1の実施の形態の処理部12の一例である。また、探索部110は、FPGA109やGPUなどの演算回路を含むコプロセッサにより実現され得る。
より具体的には、Nの2乗個の状態変数の値は、複数の要素の順列を示す。順列は、追加された(N2-M2)個の状態変数に対応する冗長要素を含む。制御部120は、順列において冗長要素以外の要素の一定の並びに対し冗長要素が何れの位置にあっても順列に対応するNの2乗個の状態変数の値に対する第1エネルギー関数の値が同じになるように、問題情報に含まれる問題行列に基づいて重み係数行列を生成する。重み係数行列は、Nの2乗個の状態変数のうちの2つの状態変数のペアごとの重みを示す。重み係数行列に含まれる重みは、式(2)で示されるように、第1エネルギー関数の値の変化量の計算に用いられる。
こうして、情報処理装置100は、Nの2乗個の状態変数で表される状態を示す順列内に冗長要素を導入することで、既存の4ビット遷移の仕組みを用いて、実質的には4ビット遷移よりも多いマルチビット遷移を実現させることができ、求解性能を向上できる。なお、制御部120は、第2の解の生成では、第1の解における冗長要素に対応する(N2-M2)個の状態変数を除去すればよい。
例えば、制御部120は、問題情報に含まれるM行M列の問題行列を取得する。制御部120は、問題行列をN行N列に変換したときのK(KはN以下の自然数)行目となる新たな行およびL(LはN以下の自然数)列目となる新たな列として、全ての要素が0である行および列を挿入して問題行列をN行N列に変換する。制御部120は、N行N列に変換した問題行列に基づいて、第1エネルギー関数の値の変化量の計算に用いられる重み係数行列を生成する。また、制御部120は、Nの2乗個の状態変数をN行N列に配列したときのK行目かつL列目の状態変数の値の初期値を1に設定する。
これにより、情報処理装置100は、Nの2乗個の状態変数で表される状態を示す順列における冗長要素に対応する状態変数、すなわち冗長変数を容易に第1エネルギー関数に含めることができる。
また、制御部120は、Nの値を順次大きくするとともにNを各値とした場合において探索部110で得られた第1の解と、第1エネルギー関数を基に計算される、第1の解のエネルギーとを取得してもよい。制御部120は、Nの値を所定回数変更すると、探索部110から取得された複数の第1の解のうち、エネルギーが最良である第1の解に基づいて、第2の解を生成してもよい。あるいは、制御部120は、今回のNの値に対して得られた第1の解のエネルギーが、前回のNの値に対して得られた第1の解のエネルギーよりも改悪されると、前回のNの値に対して得られた第1の解に基づいて、第2の解を生成してもよい。
これにより、情報処理装置100は、より多様な解を発見する可能性を高められ、求解性能を向上できる。なお、例えばエネルギーを最小化する問題の場合、エネルギーが最良の解は、複数の第1の解の中で、エネルギーが最小の解である。この場合、エネルギーが改悪される場合とは、今回得られた第1の解のエネルギーが、前回得られた第1の解のエネルギーよりも大きい場合である。
また、情報処理装置100は、探索部110を更に有する。探索部110は、N行N列に配列されたNの2乗個の状態変数の値により示される複数の要素の順列のうち、複数の冗長要素それぞれの順列での位置を識別するフラグをNの2乗個の状態変数それぞれに対して設定してもよい。冗長要素は、制御部120による(N2-M2)個の状態変数の追加により順列に挿入された要素である。探索部110は、Nの2乗個の状態変数それぞれに対応するフラグに基づいて、順列のうちの2つの冗長要素の置換に対応する4つの状態変数の値の変化に対する処理を省略してもよい。
これにより、情報処理装置100は、順列における2つの冗長要素の置換に対応する状態遷移試行を抑制でき、探索部110において意味のない処理が行われることを防げる。このため、情報処理装置100は、探索部110における余計な処理を省け、求解性能を一層向上できる。冗長変数フラグは、上記フラグの一例である。
情報処理装置100の機能は、順列要素の前後関係だけが問題となる、例えばLOPなどの順列最適化問題に適用することができる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 情報処理装置
11 記憶部
12 処理部
20 探索部
30,31 状態
40 第1の解
41 第2の解
11 記憶部
12 処理部
20 探索部
30,31 状態
40 第1の解
41 第2の解
Claims (8)
- イジングモデルのエネルギー関数で表される順列最適化問題の解の取得に用いられる情報処理装置において、
前記順列最適化問題におけるM(Mは3以上の整数)の2乗個の状態変数を示す問題情報を記憶する記憶部と、
前記問題情報に基づいて、前記Mの2乗個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成し、
前記Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる場合の前記エネルギー関数の値の変化量に応じて、前記4つの状態変数の値を変化させる処理を繰り返し行う探索部に、前記第1エネルギー関数の情報を入力し、
前記探索部により前記第1エネルギー関数に基づいて得られた、前記Nの2乗個の状態変数の値で表される第1の解を取得し、
前記第1の解から(N2-M2)個の状態変数の値を除去することで前記順列最適化問題に対する第2の解を生成する、処理部と、
を有する情報処理装置。 - 前記Nの2乗個の状態変数の値は、複数の要素の順列を示し、
前記順列は、追加された(N2-M2)個の状態変数に対応する冗長要素を含み、
前記処理部は、前記順列において前記冗長要素以外の要素の一定の並びに対し前記冗長要素が何れの位置にあっても前記順列に対応する前記Nの2乗個の状態変数の値に対する前記第1エネルギー関数の値が同じになるように、前記第1エネルギー関数の値の変化量の計算に用いられる、前記Nの2乗個の状態変数のうちの2つの状態変数のペアごとの重みを示す重み係数行列を、前記問題情報に含まれる問題行列に基づいて生成する、
請求項1記載の情報処理装置。 - 前記処理部は、
前記問題情報に含まれるM行M列の問題行列に対し、前記問題行列をN行N列に変換したときのK(KはN以下の自然数)行目となる新たな行およびL(LはN以下の自然数)列目となる新たな列として、全ての要素が0である行および列を挿入して前記問題行列をN行N列に変換し、N行N列に変換した前記問題行列に基づいて、前記第1エネルギー関数の値の変化量の計算に用いられる、前記Nの2乗個の状態変数のうちの2つの状態変数のペアごとの重みを示す重み係数行列を生成し、
前記Nの2乗個の状態変数をN行N列に配列したときのK行目かつL列目の状態変数の値の初期値を1に設定する、
請求項1記載の情報処理装置。 - 前記処理部は、
Nの値を順次大きくするとともにNを各値とした場合において前記探索部で得られた前記第1の解と、前記第1エネルギー関数を基に計算される、前記第1の解のエネルギーとを取得し、
Nの値を所定回数変更すると、前記探索部から取得された複数の前記第1の解のうち、前記エネルギーが最良である前記第1の解に基づいて、前記第2の解を生成する、
請求項1記載の情報処理装置。 - 前記処理部は、
Nの値を順次大きくするとともにNを各値とした場合に前記探索部で得られた前記第1の解と、前記第1エネルギー関数を基に計算される、前記第1の解のエネルギーとを取得し、
今回のNの値に対して得られた前記第1の解の前記エネルギーが、前回のNの値に対して得られた前記第1の解の前記エネルギーよりも改悪されると、前回のNの値に対して得られた前記第1の解に基づいて、前記第2の解を生成する、
請求項1記載の情報処理装置。 - 前記探索部を更に有し、前記探索部は、
前記N行N列に配列された前記Nの2乗個の状態変数の値により示される複数の要素の順列のうち、(N2-M2)個の状態変数の追加により前記順列に挿入された複数の冗長要素それぞれの前記順列での位置を識別するフラグを前記Nの2乗個の状態変数それぞれに対して設定し、
前記Nの2乗個の状態変数それぞれに対応する前記フラグに基づいて、前記順列のうちの2つの冗長要素の置換に対応する前記4つの状態変数の値の変化に対する処理を省略する、
請求項1記載の情報処理装置。 - イジングモデルのエネルギー関数で表される順列最適化問題の解の取得に用いられる情報処理方法において、情報処理装置が、
前記順列最適化問題におけるM(Mは3以上の整数)の2乗個の状態変数を示す問題情報を取得し、
前記問題情報に基づいて、前記Mの2乗個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成し、
前記Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる場合の前記エネルギー関数の値の変化量に応じて、前記4つの状態変数の値を変化させる処理を繰り返し行う探索部に、前記第1エネルギー関数の情報を入力し、
前記探索部により前記第1エネルギー関数に基づいて得られた、前記Nの2乗個の状態変数の値で表される第1の解を取得し、
前記第1の解から(N2-M2)個の状態変数の値を除去することで前記順列最適化問題に対する第2の解を生成する、
情報処理方法。 - イジングモデルのエネルギー関数で表される順列最適化問題の解の取得に用いられるプログラムにおいて、コンピュータに、
前記順列最適化問題におけるM(Mは3以上の整数)の2乗個の状態変数を示す問題情報を取得し、
前記問題情報に基づいて、前記Mの2乗個の状態変数に(N2-M2)(NはMより大きい整数)個の状態変数を追加したNの2乗個の状態変数を含む第1エネルギー関数の情報を生成し、
前記Nの2乗個の状態変数をN行N列に配列したときの各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように4つの状態変数の値を変化させる場合の前記エネルギー関数の値の変化量に応じて、前記4つの状態変数の値を変化させる処理を繰り返し行う探索部に、前記第1エネルギー関数の情報を入力し、
前記探索部により前記第1エネルギー関数に基づいて得られた、前記Nの2乗個の状態変数の値で表される第1の解を取得し、
前記第1の解から(N2-M2)個の状態変数の値を除去することで前記順列最適化問題に対する第2の解を生成する、
処理を実行させるプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022093460A JP2023180298A (ja) | 2022-06-09 | 2022-06-09 | 情報処理装置、情報処理方法およびプログラム |
US18/193,717 US20230409669A1 (en) | 2022-06-09 | 2023-03-31 | Information processing apparatus, information processing method, and computer-readable recording medium storing program |
EP23166458.2A EP4290416A1 (en) | 2022-06-09 | 2023-04-04 | Information processing apparatus, information processing method, and program |
CN202310410925.2A CN117216465A (zh) | 2022-06-09 | 2023-04-17 | 信息处理设备、信息处理方法和计算机可读记录介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022093460A JP2023180298A (ja) | 2022-06-09 | 2022-06-09 | 情報処理装置、情報処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023180298A true JP2023180298A (ja) | 2023-12-21 |
Family
ID=85873849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022093460A Pending JP2023180298A (ja) | 2022-06-09 | 2022-06-09 | 情報処理装置、情報処理方法およびプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230409669A1 (ja) |
EP (1) | EP4290416A1 (ja) |
JP (1) | JP2023180298A (ja) |
CN (1) | CN117216465A (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09160981A (ja) | 1995-12-12 | 1997-06-20 | Hitachi Eng Co Ltd | 計画立案装置および計画立案方法 |
FR3072483B1 (fr) | 2017-10-16 | 2021-04-30 | Bull Sas | Optimisation d'un circuit quantique par insertion de portes swap |
JP7410395B2 (ja) * | 2020-03-26 | 2024-01-10 | 富士通株式会社 | 最適化装置及び最適化方法 |
-
2022
- 2022-06-09 JP JP2022093460A patent/JP2023180298A/ja active Pending
-
2023
- 2023-03-31 US US18/193,717 patent/US20230409669A1/en active Pending
- 2023-04-04 EP EP23166458.2A patent/EP4290416A1/en active Pending
- 2023-04-17 CN CN202310410925.2A patent/CN117216465A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4290416A1 (en) | 2023-12-13 |
CN117216465A (zh) | 2023-12-12 |
US20230409669A1 (en) | 2023-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7071638B2 (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
US20210256179A1 (en) | Information processing method and information processing system | |
JP7417074B2 (ja) | 最適化装置、最適化方法及び最適化装置の制御プログラム | |
JP2021005282A (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
JP2021168096A (ja) | サンプリング装置、サンプリング方法及びサンプリングプログラム | |
JP2021124978A (ja) | 情報処理装置、プログラム、情報処理方法および情報処理システム | |
JP6925546B1 (ja) | 演算システム、情報処理装置、および最適解探索処理方法 | |
JP2020187453A (ja) | 最適化装置および最適化装置の制御方法 | |
JP2023180298A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7553802B2 (ja) | 最適化プログラム、最適化方法及び情報処理装置 | |
JP2023078546A (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN113705851A (zh) | 优化装置、优化方法和用于存储优化程序的存储介质 | |
EP4290417A1 (en) | Information processing apparatus, information processing method, and information processing program | |
CN114417543A (zh) | 用于优化的设备和方法 | |
US20230401278A1 (en) | Information processing apparatus, information processing method, and storage medium | |
US20230350972A1 (en) | Information processing apparatus and information processing method | |
US20240135151A1 (en) | Data processing device, data processing method, and computer-readable recording medium storing data processing program | |
US20220092380A1 (en) | Optimization device, optimization method, and computer-readable recording medium storing optimization program | |
JP7470019B2 (ja) | 情報処理システム | |
JP7572655B2 (ja) | 情報処理装置、量子回路生成方法および量子回路生成プログラム | |
US20240111833A1 (en) | Data processing apparatus and data processing method | |
JP2023079015A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2023056471A (ja) | プログラム、データ処理装置及びデータ処理方法 | |
JP2024049148A (ja) | 情報処理方法、及び情報処理装置 | |
JP2024098841A (ja) | 最適化方法及び情報処理装置 |