(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024164601
(43)【公開日】2024-11-27
(54)【発明の名称】情報処理システム、情報処理方法及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20241120BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023080206
(22)【出願日】2023-05-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】穴澤 俊久
(72)【発明者】
【氏名】下川 聡
(57)【要約】
【課題】制約係数の決定にかかる時間を短縮する。
【解決手段】制約条件を含む組合せ最適化問題を、コスト項と制約条件に対応する制約項との和で表されるイジングモデルのエネルギー関数に基づいて計算する情報処理システム10における処理部12が、組合せ最適化問題の問題情報を取得し、問題情報に基づいて、制約条件を満たす解から制約条件を満たさない解への遷移が生じた場合のコスト項の変化量の期待値を計算し、期待値に基づいて制約項の係数を決定し、決定した係数を用いてエネルギー関数の情報を出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制約条件を含む組合せ最適化問題を、コスト項と前記制約条件に対応する制約項との和で表されるイジングモデルのエネルギー関数に基づいて計算する情報処理システムであって、
前記組合せ最適化問題の問題情報を取得し、前記問題情報に基づいて、前記制約条件を満たす解から前記制約条件を満たさない解への遷移が生じた場合の前記コスト項の変化量の期待値を計算し、前記期待値に基づいて前記制約項の係数を決定し、決定した前記係数を用いて前記エネルギー関数の情報を出力する処理部と、
出力された前記情報に基づいて、前記イジングモデルの基底状態を探索する探索部と、
を有する情報処理システム。
【請求項2】
前記組合せ最適化問題は二次割当て問題であり、
前記処理部は、前記二次割当て問題の前記問題情報を表す第1の行列と第2の行列とのクロネッカー積によって得られる第3の行列を計算し、前記第3の行列に含まれる要素の第1の平均値に基づいて前記期待値を計算する、請求項1に記載の情報処理システム。
【請求項3】
前記処理部は、前記期待値に調整係数を乗ずることで、前記係数を計算する、請求項1に記載の情報処理システム。
【請求項4】
前記処理部が、前記期待値に前記調整係数を乗じて得られた前記係数を用いて定式化した前記エネルギー関数の前記情報を出力し、
前記探索部が、前記情報に基づいて行った前記基底状態の探索結果を出力し、
前記処理部が、前記調整係数を増加または減少させる、
処理を前記調整係数が上限または下限に達するまで繰返し、
前記処理部は、前記調整係数が上限または前記下限に達した場合、前記探索結果に基づいて、前記調整係数を決定する、
請求項3に記載の情報処理システム。
【請求項5】
前記第3の行列は、前記第1の行列または前記第2の行列のうちの一方の行列に含まれる各要素と、他方の行列との積による複数の小行列を含み、
前記処理部は、前記複数の小行列のそれぞれにおいて、前記複数の小行列のそれぞれに含まれる要素の第2の平均値と前記第1の平均値との差分値を、前記複数の小行列のそれぞれに含まれる前記要素の値に加算または減算することで、前記第1の平均値と前記第2の平均値とを一致させる、
請求項2に記載の情報処理システム。
【請求項6】
制約条件を含む組合せ最適化問題を、コスト項と前記制約条件に対応する制約項との和で表されるイジングモデルのエネルギー関数に基づいて計算する情報処理方法であって、
処理部が、前記組合せ最適化問題の問題情報を取得し、前記問題情報に基づいて、前記制約条件を満たす解から前記制約条件を満たさない解への遷移が生じた場合の前記コスト項の変化量の期待値を計算し、前記期待値に基づいて前記制約項の係数を決定し、決定した前記係数を用いて前記エネルギー関数の情報を出力し、
探索部が、出力された前記情報に基づいて、前記イジングモデルの基底状態を探索する、
情報処理方法。
【請求項7】
制約条件を含む組合せ最適化問題を、コスト項と前記制約条件に対応する制約項との和で表されるイジングモデルのエネルギー関数に基づいて計算する情報処理システムに用いられるコンピュータに、
前記組合せ最適化問題の問題情報を取得し、前記問題情報に基づいて、前記制約条件を満たす解から、前記制約条件を満たさない解への遷移が生じた場合の前記コスト項の変化量の期待値を計算し、
前記期待値に基づいて前記制約項の係数を決定し、
決定した前記係数を用いて前記エネルギー関数の情報を、前記情報に基づいて前記イジングモデルの基底状態を探索する探索部に出力する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする多変数の組合せ最適化問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算するイジングマシン(ボルツマンマシンとも呼ばれる)がある。イジングモデルに置き換えられた問題を実用的な時間で解く手法には、たとえば、シミュレーテッドアニーリング(SA:Simulated Annealing)法やレプリカ交換法などのマルコフ連鎖モンテカルロ(MCMC:Markov Chain Monte Carlo)法がある。組合せ最適化問題は、複数の状態変数を含むエネルギー関数により定式化される。たとえば、情報処理装置は、MCMC法を用いて状態変数の値を変化させることによる状態遷移を繰り返し試行することで、エネルギー関数の値が最小となるイジングモデルの基底状態を探索する。基底状態は組合せ最適化問題の最適解に対応する。
【0003】
エネルギー関数は、コスト項と制約項との和で表すことができる(たとえば、特許文献1,2参照)。エネルギー関数(E(x))は、たとえば、以下の式(1)で表せる。
【0004】
【0005】
式(1)において、xはx=(x1,x2,…,xn)のバイナリ変数である状態変数によるベクトルである。C(x)はコスト項であり、最小化したい目的関数である。αP(x)は制約項である。組合せ最適化問題が満たすべき制約条件を満たすとき(制約充足時)には、P(x)=0となり、制約条件を満たさないとき(制約違反時)には、P(x)>0となる。αは、制約係数であり、0より大きい値をもつ。このような制約項をコスト項に加えることで、制約条件を満たさない解(制約違反解)が選ばれにくくなる。
【0006】
なお、エネルギー関数の符号を変えれば、エネルギー関数の値が最大となるイジングモデルの状態を探索することもできる。
組合せ最適化問題の実用的な問題の例として、二次割当問題(QAP:Quadratic Assignment Problem)が挙げられる。QAPは、n個の割当要素(施設など)をn個の割当先(場所など)に割り当てる際に、割当要素間のフロー量(施設間での物資の輸送量などのコスト)と、各割当要素が割り当てられる割当先間の距離との積の総和を最小化するような割当を求める問題である。割当要素間のフロー量と、各割当先間の距離とはそれぞれ行列を用いて表せる。また、QAPには、全ての割当要素を、互いに異なる割当先に割り当てる、という制約条件が課される。
【0007】
ところで、上記のような制約係数(式(1)の場合はα)は、小さすぎると制約違反解が発生しやすくなり、逆に大きすぎると制約充足解間のエネルギー障壁が大きくなって解空間の探索に支障をきたす。また、適切な制約係数の値は個々の問題に依存して大きく異なる。従来、イジングマシンによる組合せ最適化問題の解の探索結果に基づいて、制約係数を調整する処理を繰り返すことで、制約係数を最適化していく手法が提案されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】国際公開第2021-044516号
【特許文献2】特開2004-110831号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、従来の手法で、高品質の解を得るために広範囲での探索ができるような制約係数を得るには多数回の調整が必要となる場合があり、制約係数の決定に時間がかかる。
1つの側面では、本発明は、制約係数の決定にかかる時間を短縮可能な情報処理システム、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
1つの実施態様では、制約条件を含む組合せ最適化問題を、コスト項と前記制約条件に対応する制約項との和で表されるイジングモデルのエネルギー関数に基づいて計算する情報処理システムであって、前記組合せ最適化問題の問題情報を取得し、前記問題情報に基づいて、前記制約条件を満たす解から前記制約条件を満たさない解への遷移が生じた場合の前記コスト項の変化量の期待値を計算し、前記期待値に基づいて前記制約項の係数を決定し、決定した前記係数を用いて前記エネルギー関数の情報を出力する処理部と、出力された前記情報に基づいて、前記イジングモデルの基底状態を探索する探索部と、を有する情報処理システムが提供される。
【0011】
また、1つの実施態様では、情報処理方法が提供される
また、1つの実施態様では、プログラムが提供される。
【発明の効果】
【0012】
1つの側面では、本発明は、制約係数の決定にかかる時間を短縮できる。
【図面の簡単な説明】
【0013】
【
図1】第1の実施の形態の情報処理システムの一例を示す図である。
【
図2】第2の実施の形態の情報処理システムのハードウェア例を示す図である。
【
図4】QAPにおける制約違反の有無と制約違反エネルギーの例を示す図である。
【
図5】状態とエネルギー関数の値との関係の例を示す図である。
【
図6】情報処理システムの一例の処理の流れを示すフローチャートである。
【
図8】ある割当状態のときにQ
ijから選択される要素q
ijの変化の例を示す図である。
【
図9】比較例の情報処理システムの処理の流れを示すフローチャートである。
【
図10】比較例における制約係数の値とインスタンスの計算結果との関係を示す図である。
【
図11】本実施の形態における調整係数の値とインスタンスの計算結果との関係を示す図である。
【
図12】調整係数の決定処理の一例の流れを示すフローチャートである。
【
図13】調整係数の値と問題サイズの異なる同種のインスタンスの計算結果との関係を示す図である。
【
図14】式(16)における2次項に足し合わされるx
ikx
jkと、1次項とを行列で表した図である。
【
図15】式(17)における2次項に足し合わされるx
ikx
ilと、1次項とを行列で表した図である。
【
図16】制約項のQUBO行列の例を示す図である。
【
図17】エネルギー関数全体のQUBO行列の例を示す図である。
【
図18】第3の実施の形態の情報処理システムの一例の処理の流れを示すフローチャートである。
【
図19】小行列d
klFの要素の小行列f
ijDへの配分例を示す図である。
【
図20】行列変調の一例の流れを示すフローチャートである。
【
図21】行列変調を用いた場合の調整係数の値とインスタンスの計算結果との関係を示す図である。
【発明を実施するための形態】
【0014】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(制約係数の決定方針)
イジングモデルのエネルギー関数は、前述の式(1)で表せる。ここで、制約係数であるαは、制約違反を防止するため、制約違反解が制約充足解よりも大きくなるような値とすればよい。しかし、制約充足解は、C(x)の値が最小である最適解から、制約条件が充足されていても、C(x)の値が大きなものまで幅があり、どの値を基準にするのが適当かはわからない。また、そもそも最適解の値が明らかではない。前述のようにイジングマシンによる組合せ最適化問題の解の探索結果に基づいて、制約係数を調整する処理を繰り返すことで、制約係数を最適化していくことが提案されているが、調整に時間がかかる。そこで、本実施の形態では、制約充足解から制約違反解への遷移時のC(x)の値の変化量に着目して、αの決定が行われる。
【0015】
なお、温度パラメータを用いるMCMC法では、温度パラメータの値の設定にもよるが、C(x)の値が増加するような制約充足解から制約違反解への遷移が受け入れられる確率は低い。このため、以下では、制約充足解から制約違反解への遷移によりC(x)の値が減少するケースを考慮する。
【0016】
制約充足解から制約違反解への遷移によりC(x)の値が減少する場合、制約違反により加算されるαP(x)が、C(x)の変化量(減少量)よりも小さければその遷移により式(1)のE(x)が小さくなる。このため、高確率でその制約違反解への遷移が起こりうる。したがって、制約違反を抑止するためにはαP(x)は、少なくともC(x)の減少量を補償する程度の値であればよい。次に、C(x)の減少量の期待値を計算する方法を説明する。
【0017】
(C(x)の減少量の期待値の計算方法)
式(1)において、C(x)を、QUBO(Quadratic Unconstrained Binary Optimization)で表すと、以下の式(2)のようになる。
【0018】
【0019】
式(2)において、Qijは結合係数行列、hiはバイアス係数ベクトル、cは定数項である。
Qijの次数をnとするとQijの要素qij(i<j)の数は、n2個であるが、qij=qji、qii=0(つまり対角要素は0)であるため、有効なqijの数は、N=n(n-1)/2である。以下、上記有効なN個のqijを、結合係数行列であるQijの上三角の要素(対角要素を除く)とし、qs(s=1,…,N)と表記する。qsの総和は、以下の式(3)で表せ、qsの平均値(μq)は、以下の式(4)で表せる。
【0020】
【0021】
【0022】
また、hiの要素数はnであり、hiの平均値(μh)は、以下の式(5)で表せる。
【0023】
【0024】
式(2)のQijxixjは、xixj=1の場合に0以外の値をもつ。つまり、xixj=1の場合にQijのi列とj行の交差する要素が選択される。ある解xに含まれるxi(i=1,…,n)において、xi=1である状態変数の個数をp個とすると、選択されるQijの要素の数は、p(p-1)/2である。
【0025】
式(2)のhixiは、xi=1の場合に0以外の値をもつ。つまり、xi=1の場合、hiの要素が選択される。xi=1である状態変数の個数をp個とすると、選択されるhiの要素の数は、p個である。
【0026】
値が1であるp個のxiのうちの1つが、1から0に反転する(非選択になる)とき、Qijのうち非選択になる要素の数はp-1個、hiのうち非選択になる要素の数は1個である。このQijとhiの非選択になる要素の和がC(x)の減少量となる。
【0027】
上記のqs(s=1,…,N)から要素を抽出する試行を考えると、抽出される要素の値X=q1,…,qNは確率変数である。ただし、上述の非選択になるp-1個の要素の抽出は非復元抽出であり、また、非選択になるp-1個の要素はQijの同じ行または列に存在し、さらに反転するxiの選択も無作為ではなくxの関数となっている。したがって、確率変数列{X1,…,Xp-1}は独立同分布にしたがうわけではない。
【0028】
しかし、非復元抽出はnが大きい場合には近似的に復元抽出とみなせる。また、反転するxiの選択においては、イジングマシンによる求解は確率的過程を含む。そこで、近似としてXを独立同分布(iid)にしたがう確率変数と仮定すると、非選択になるp-1個の要素で構成される確率変数列{X1,…,Xp-1}の和Sの期待値は、μq(1→0)=(p-1)μqとなる。
【0029】
同様にバイアス係数の集合{hs(s=1,…,N)}から要素を抽出する試行を考える。抽出される要素の値Y=h1,…,hpをiidにしたがう確率変数と仮定すると、非選択になる要素で構成される確率変数列{Y1}(上記のように要素数は1個)の和の期待値は、μh(1→0)=μhとなる。
【0030】
以上より、C(x)の減少量の期待値は、Δ-C(x)=μq(1→0)+μh(1→0)=(p-1)μq+μhとなる。このようなΔ-C(x)を制約係数αとして用いれば、制約充足解から制約違反解への遷移によりC(x)の値が減少する場合、制約違反により加算されるαP(x)を、C(x)の減少量を補償する程度の値とすることができる。
【0031】
(QAPへの適用)
QAPの目的関数ではhiとcは恒等的に0であるため、C(x)は以下の式(6)で表せる。
【0032】
【0033】
QAPでは、割当要素間のフロー量と、各割当先間の距離とはそれぞれ行列を用いて表せる(後述の
図1参照)。n個の割当要素をn個の割当先に割り当てる場合のC(x)は、以下の式(7)で表せる。
【0034】
【0035】
式(7)において、f
ijは、割当要素間のフロー量を表すフロー行列Fのi列j行のフロー量(i番目の割当要素とj番目の割当要素との間のフロー量)を表す。d
klは、割当先間の距離を表す距離行列Dのk列l行の距離(k番目の割当先とl番目の割当先との間の距離)を表す。x
ikは、割当状態を表す割当行列x(後述の
図1参照)のi列k行の割当を表す。i番目の割当要素がk番目の割当先に割り当てられている場合には、x
ik=1、i番目の割当要素がk番目の割当先に割り当てられていない場合には、x
ik=0となる。
【0036】
なお、式(1)のP(x)は、QAPでは式(8)のように表すことができる。
【0037】
【0038】
右辺の1項目は、同じkでxik=1となるiを1個にするための制約項であり、1つの割当先には1つの割当要素が割り当てられるという制約を表す。右辺の2項目は、同じiでxik=1となるkを1個にするための制約項であり、1つの割当要素は1つの割当先に割り当てられるという制約を表す。α≠βとすることもあり得るが、本質的にQAPではフロー行列Fと距離行列Dは対称行列であるため、β=αとし、まとめてαP(x)として制約項を表すこともできる。
【0039】
式(6)のQijは、フロー行列Fと距離行列Dのクロネッカー積によって、以下の式(9)のような行列Qで表せる。行列Qは、n×n個の小行列fijDからなる。
【0040】
【0041】
式(9)を展開すると、式(10)に示すような次数がn2の行列Qが得られる。
【0042】
【0043】
また、割当行列xは、以下の式(11)のように、要素数がn2個の列ベクトルで表せる。
【0044】
【0045】
式(10)のように、行列Qの要素qij(i<j)の数は、n4個であるが、qij=qji、qii=0(つまり対角要素は0)であるため、有効なqijの数は、N=n2(n2-1)/2である。有効なN個のqijを、行列Qの上三角の要素(対角要素を除く)とし、qs(s=1,…,N)と表記すると、qsの総和は、前述の式(3)で表せ、qsの平均値は、前述の式(4)で表せる。
【0046】
C(x)の減少量の期待値は、前述のようにΔ-C(x)=μq(1→0)+μh(1→0)=(p-1)μq+μhと表せるが、QAPの場合、μh≡0である。また、QAPの場合、制約充足解で1となるxiの個数pは、p=nである。したがって、Δ-C(x)は、Δ-C(x)=(p-1)μq=(n-1)μq=(n-1)S/N=2S/n2(n+1)となる。
【0047】
このようなΔ-C(x)を制約係数αとして用いれば、制約充足解から制約違反解への遷移によりC(x)の値が減少する場合、制約違反により加算されるαP(x)を、C(x)の減少量を補償する程度の値とすることができる。
【0048】
(Δ-C(x)の他の例)
式(9)に示したように、行列Qは、n×n個の小行列fijDからなる。行列Qの上三角で対角要素(fijD(i=j))を含まない小行列の数は、n(n-1)/2個であり、各小行列において対角要素(fijdkl(k=l))を含まない要素数はn(n-1)個である。この場合、有効なqij(i<j)の数は、N’=n(n-1)×n(n-1)/2=n2(n-1)2/2である。上記有効なN’個のqijを、qs(s=1,…,N’)と表記すると、qsの総和S’は、以下の式(12)で表せる。
【0049】
【0050】
ここで、QAPでは、行列Qの無効な要素の値は0であるため、S’=Sである。このためqsの平均値は、以下の式(13)で表せる。
【0051】
【0052】
したがって、Δ-C(x)は、Δ-C(x)=(n-1)S/N’=2(n-1)S/n2(n-1)2=2S/n2(n-1)となる。
このようなΔ-C(x)を制約係数αとして用いても、制約充足解から制約違反解への遷移によりC(x)の値が減少する場合、制約違反により加算されるαP(x)を、C(x)の減少量を補償する程度の値とすることができる。
【0053】
(第1の実施の形態)
図1は、第1の実施の形態の情報処理システムの一例を示す図である。
情報処理システム10は、組合せ最適化問題を、式(1)に示したようなイジングモデルのエネルギー関数に基づいて計算する。
【0054】
情報処理システム10は、記憶部11、処理部12及び探索部13を有する。
記憶部11は、DRAM(Dynamic Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。記憶部11は、処理部12の処理に用いられる各種のデータを記憶する。また、記憶部11は、組合せ最適化問題の問題情報を記憶する。たとえば、最適化問題がQAPの場合、問題情報は、各割当要素間のフロー量と、各割当先間の距離とを含む。
【0055】
処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)が含まれ得る。
【0056】
処理部12は、組合せ最適化問題の問題情報を取得し、問題情報に基づいて、組合せ最適化問題をエネルギー関数で定式化し、エネルギー関数の情報を探索部13に出力する。処理部12は、探索部13で求められた解を取得し、取得した解を外部に出力する。たとえば、処理部12は、情報処理システム10に接続された表示装置に解の内容を表示させてもよいし、ネットワークを介して他の情報処理装置に解を送信してもよい。
【0057】
探索部13は、処理部12からエネルギー関数の情報を受け付け、エネルギー関数の情報に基づいて、イジングモデルの基底状態、すなわち、エネルギー関数の値を最小化する解を探索する。探索部13は、探索により得られた解を処理部12に出力する。探索部13は、専用のハードウェアにより実現されうる。たとえば、FPGA、ASIC、GPU(Graphics Processing Unit)などの集積回路を用いて実現される探索回路が、探索部13として機能してもよい。ただし、探索部13は、プロセッサが所定のプログラムを実行することで実現されてもよい。探索部13が用いる探索手法には、たとえば、SA法、レプリカ交換法及びSQA(Simulated Quantum Annealing)などがある。
【0058】
以下、第1の実施の形態の情報処理システム10の動作例を説明する。
処理部12は、組合せ最適化問題をエネルギー関数で定式化するにあたり、制約項の係数(制約係数)であるαの値を決定する。
【0059】
まず、処理部12は、記憶部11に記憶された組合せ最適化問題の問題情報を取得する(読み出す)。
図1には、QAPの問題情報の例が示されている。
QAPの問題情報は、各割当要素間のフロー量と、各割当先間の距離とを含む。各割当要素間のフロー量は、n行n列のフロー行列Fで表され、各割当先間の距離は、n行n列の距離行列Dで表される。
【0060】
なお、
図1には、割当行列xの例も示されている。x
ikは、割当状態を表す割当行列xのi列k行の割当を表す。i番目の割当要素がk番目の割当先に割り当てられている場合には、x
ik=1、i番目の割当要素がk番目の割当先に割り当てられていない場合には、x
ik=0となる。なお、割当行列xは、前述の式(11)のように、要素数がn
2個の列ベクトルで表すこともできる。
【0061】
処理部12は、取得した問題情報に基づいて、組合せ最適化問題の制約条件を満たす解(制約充足解)から、制約条件を満たさない解(制約違反解)への遷移が生じた場合のコスト項の変化量の期待値を計算する。
【0062】
コスト項が式(2)のように表される場合、前述の(C(x)の減少量の期待値の計算方法)のように、変化量(減少量)の期待値は、Δ-C(x)=(p-1)μq+μhと表される式により計算できる。なお、前述のように、pは、ある解に含まれるn個の状態変数xi(i=1,…,n)において、xi=1である状態変数の個数である。μqは、結合係数行列であるQijにおいて有効なN個の要素qs(s=1,…,N)の平均値であり、μhは、hi(バイアス係数ベクトル)のn個の要素の平均値である。
【0063】
記憶部11には、制約充足解が初期解として記憶されており、その初期解に基づいて、処理部12がpの値を決定してもよいし、pの値自体が予め記憶部11に記憶されていてもよい。μqやμhは問題情報に基づいて、前述の式(3)~式(5)により計算される。組合せ最適化問題がTSP(Traveling Salesman Problem)などの場合、上記のΔ-C(x)=(p-1)μq+μhにより、Δ-C(x)の計算が可能である。
【0064】
図1には、組合せ最適化問題がQAPの場合のΔ
-C(x)の計算例が示されている。QAPのコスト項C(x)は、前述の式(6)のように表せる。処理部12は、前述の式(9)に示したようにフロー行列Fと距離行列Dのクロネッカー積によって行列Qを計算する。そして、処理部12は、式(10)に示したような行列Qに含まれる各要素の平均値μ
qに基づいて、Δ
-C(x)を計算する。なお、式(6)、式(9)、式(10)は、
図1にも示されている。
【0065】
QAPの場合、前述のように、行列Qの上三角の要素(対角要素を除く)である有効な要素の平均値を求めればよい。有効な要素の数は、N=n2(n2-1)/2であるから、有効な要素の値の和SをNで割った、S/N=2S/n2(n2-1)が平均値μqである。さらに、組合せ最適化問題がQAPの場合、p=nであるため、Δ-C(x)=2S/n2(n+1)となる。
【0066】
なお、処理部12は、前述の(Δ-C(x)の他の例)で示したように、Δ-C(x)=2S/n2(n-1)と表される式によりΔ-C(x)を計算してもよい。
また、QAPの問題サイズ(n)が大きくなると、Δ-C(x)の計算式に含まれるn+1やn-1はほぼ等しくなり、nともほぼ等しくなる。このため、n+1やn-1の代わりに、nを用いてもΔ-C(x)の値はほぼ同様の値となる。したがって、上記のΔ-C(x)の計算式は、問題サイズに応じて適宜変更可能である。
【0067】
処理部12は、計算したΔ-C(x)に基づいて制約係数αを決定する。処理部12は、たとえば、α=Δ-C(x)と決定してもよいし、Δ-C(x)に、後述の調整係数を乗じた値をαとして決定してもよい。
【0068】
その後、処理部12は、決定したαを用いて組合せ最適化問題を定式化したエネルギー関数の情報を出力する。出力されるエネルギー関数の情報は、たとえば、式(1)のエネルギー関数をQUBO形式で表した行列データ(QUBO行列とも呼ばれる)である。
【0069】
探索部13による探索は、たとえば、次のように実行される。一例として、SA法またはレプリカ交換法を用いる場合を考える。
探索部13は、複数の状態変数のうちの1つの状態変数の値が変化することによるエネルギー関数の値の変化量を、複数の状態変数の各々について計算し、エネルギー関数の値が小さくなる変化が優先される形で確率的に受け入れる。このとき、最急降下法では、局所解に陥った場合に脱出できなくなる。そこで、探索部13は、ある状態変数を変化させることによる、イジングモデルのある状態から次の状態への遷移確率の決定に、メトロポリス法やギブス法を用いる。すなわち、探索部13は、エネルギー関数の値が大きくなる変化についても、エネルギー関数の値の変化量とノイズ値との比較に応じて確率的に許容する。ノイズ値は、温度パラメータの値や乱数に基づいて求められる。温度パラメータの値が大きい程、ノイズ値の振幅が大きくなる。ノイズ値の振幅が大きい程、エネルギー関数の値の増加量が大きい状態遷移が許容されやすくなる。
【0070】
探索部13は、このような処理に基づく状態遷移を、探索開始から探索終了条件が満たされるまで繰り返し試行し、探索終了条件が満たされたときの複数の状態変数の値の組を解とする。たとえば、探索終了条件は、所定の単位時間が経過したか、あるいは、状態変数の変化の試行回数が所定の単位回数に到達したかなどにより判定される。
【0071】
以上のように、情報処理システム10の処理部12は、制約充足解から制約違反解への遷移が生じた場合のC(x)の変化量の期待値Δ-C(x)に基づいて、制約係数αを決定する。これにより、制約充足解から制約違反解への遷移によりC(x)の値が減少する場合、制約違反により加算されるαP(x)を、C(x)の減少量を補償する程度の値とすることができる。したがって、適切なαを得るために多数回の調整が発生することを抑制でき、制約係数の決定にかかる時間を短縮できる。
【0072】
(第2の実施の形態)
図2は、第2の実施の形態の情報処理システムのハードウェア例を示す図である。
情報処理システム20は、情報処理装置100及び最適化装置200を有する。
【0073】
情報処理装置100は、組合せ最適化問題を定式化することで、組合せ最適化問題に対応するエネルギー関数の情報を生成し、生成したエネルギー関数の情報を最適化装置200に入力する。第2の実施の形態では、計算対象の組合せ最適化問題の例として、QAPが扱われる。
【0074】
情報処理装置100は、CPU101、RAM102、HDD103、IO(Input/Output)インタフェース104、GPU105、入力インタフェース106、媒体リーダ107及びNIC(Network Interface Card)108を有する。CPU101は、第1の実施の形態の処理部12の一例である。RAM102は、第1の実施の形態の記憶部11の一例である。
【0075】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」ということがある。
【0076】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。RAM102は、たとえば、DRAMである。なお、情報処理装置100は、RAM102以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0077】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0078】
IOインタフェース104は、最適化装置200と接続され、CPU101からの命令に従って、最適化装置200に対するデータの入出力を行う。たとえば、IOインタフェース104は、CPU101の命令に応じて、RAM102のデータを最適化装置200のレジスタまたはメモリに書き込んだり、最適化装置200からデータを読み出して、RAM102に書き込んだりする。IOインタフェース104としては、たとえば、PCI-e(Peripheral Component Interconnect - Express)などが用いられる。
【0079】
GPU105は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0080】
入力インタフェース106は、情報処理装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0081】
媒体リーダ107は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0082】
媒体リーダ107は、たとえば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体ということがある。
【0083】
NIC108は、ネットワーク30に接続され、ネットワーク30を介して他のコンピュータと通信を行うインタフェースである。NIC108は、たとえば、スイッチやルータなどの通信装置とケーブルで接続される。
【0084】
最適化装置200は、エネルギー関数の情報に基づいて、SA法やレプリカ交換法などのMCMC法による基底状態探索をハードウェアにより行うアクセラレータである。最適化装置200は、イジングマシンやボルツマンマシンなどと呼ばれてもよい。最適化装置200は、FPGA201及びRAM202を有する。FPGA201は、イジングモデルで表される問題に対する解探索機能を実現する。最適化装置200による解探索機能は、ASICやGPUなどの他の種類の集積回路により実現されてもよい。RAM202は、FPGA201の解探索に用いられる各種のデータを記憶するメモリである。RAM202は、たとえば、SRAM(Static RAM)である。
【0085】
ただし、最適化装置200は、量子アニーリング法により基底状態探索を行うハードウェアでもよい。また、最適化装置200に代えて、情報処理装置100が備えるCPU101または他のプロセッサが所定のソフトウェアを実行することで、SA法、レプリカ交換法あるいはSQA法などを用いる探索部の機能を実現することもできる。
【0086】
図3は、情報処理システムの機能例を示す図である。
情報処理装置100は、記憶部120、制御部130及び解出力部140を有する。記憶部120には、RAM102やHDD103の記憶領域が用いられる。制御部130及び解出力部140は、RAM102に記憶されたプログラムをCPU101が実行することで実現される。
【0087】
また、最適化装置200は、探索部210を有する。探索部210は、FPGA201により実現される。
記憶部120は、制御部130によるQAPの定式化に用いられる各種のデータを記憶する。たとえば、記憶部120は、QAPにおけるフロー行列Fや距離行列Dの情報や、フロー行列Fと距離行列Dのクロネッカー積により求められる行列Qの情報(前述の
図1参照)を記憶する。
【0088】
制御部130は、QAPのデータの入力を受け付け、当該データに基づいて、QAPの定式化を行う。制御部130は、式(1)をQUBO形式で表したエネルギー関数の情報を生成する。制御部130は、生成したエネルギー関数の情報を最適化装置200に出力し、当該エネルギー関数に基づく解の探索を最適化装置200に実行させる。
【0089】
制御部130は、最適化装置200の探索により得られた解を取得し、取得した解が制約を満たしており、最終的な解として出力する場合、取得した解を解出力部140に出力する。
【0090】
解出力部140は、最適化装置200の探索により得られた解を取得し、取得した解を出力する。たとえば、解出力部140は、最適化装置200から取得した解をQAPに対する解の形式に変換してディスプレイ111に表示させてもよいし、当該解の情報を、ネットワーク30を介して他のコンピュータに送信してもよい。
【0091】
探索部210は、制御部130により出力されたエネルギー関数の情報を取得し、当該エネルギー関数に基づいて、イジングモデルの基底状態、すなわち最適解を探索する。探索部210は、探索により得られた解を情報処理装置100に出力する。
【0092】
(QAPにおける制約違反の有無とエネルギー関数との対応関係について)
QAPのエネルギー関数は、式(8)に示したような制約項を含む。制約条件は、たとえば、QAPの一例である施設配置問題における「1つの位置には1つの施設が配置される」、「1つの施設は1つの位置に配置される」というものである。このため、探索部210における探索は制約項の影響を受ける。
【0093】
図4は、QAPにおける制約違反の有無と制約違反エネルギーの例を示す図である。
図4には式(8)に示した制約項が図示されている。また、
図4には、たとえば、
図1に示した割当行列xの一部が例示され、各状態に対応する制約違反エネルギー(制約違反eg)が、「状態:制約違反eg」の形式で示されている。制約違反egは、コスト項に加算される、制約違反に伴うペナルティ値であり式(8)に基づいて計算される。また、
図4では、ある状態を、当該状態を示す番号で表すものとする。
【0094】
たとえば、状態「1」は、{xik}=(x11,x12,x21,x22)=(0,1,1,0)である。状態「1」は制約条件に違反しない、すなわち、制約充足の状態である。このため、状態「1」に対応する制約違反egは「0」である。
【0095】
状態「2」は、{xik}=(x11,x12,x21,x22)=(0,0,1,0)である。状態「2」は制約条件に違反する。状態「2」に対応する制約違反egは「α+β」である。
【0096】
状態「3」は、{xik}=(x11,x12,x21,x22)=(0,0,0,0)である。状態「3」は制約条件に違反する。状態「3」に対応する制約違反egは「2(α+β)」である。
【0097】
状態「4」は、{xik}=(x11,x12,x21,x22)=(1,0,0,0)である。状態「4」は制約条件に違反する。状態「4」に対応する制約違反egは「α+β」である。
【0098】
状態「5」は、{xik}=(x11,x12,x21,x22)=(1,0,0,1)である。状態「5」は制約条件に違反しない、すなわち、制約充足の状態である。このため、状態「5」に対応する制約違反egは「0」である。
【0099】
図5は、状態とエネルギー関数の値との関係の例を示す図である。
図5ではイジングモデルの状態が便宜的に1次元で表されている。
図5の横軸はイジングモデルの状態を表し、縦軸はエネルギーを表す。エネルギーは、コスト項の値またはエネルギー関数(制約項を含む)の値を表す。系列G1aは、ある問題について、状態とエネルギー関数の値との関係を示す系列である。系列G1bは、当該問題について、状態とコスト項の値との関係を示す系列である。
【0100】
また、
図5では、
図4に示した状態「1」~「5」に対応する状態における、系列G1a,G1bのエネルギーの差分が示されている。
状態「1」は制約充足の状態(制約充足解)であり、上記制約違反egは「0」であるため、系列G1a,G1bのエネルギーは一致している。
【0101】
状態「2」、「4」は制約違反の状態であり、上記制約違反egは「α+β」であるため、系列G1bのエネルギーよりも系列G1aのエネルギーが「α+β」だけ高い。
状態「3」も制約違反の状態であり、上記制約違反egは「2(α+β)」であるため、系列G1bのエネルギーよりも系列G1aのエネルギーが「2(α+β)」だけ高い。
【0102】
図5のように、状態「2」~「4」のような状態では、制約違反が生じているにも関わらず、制約充足解である状態「1」や状態「5」よりも系列G1bで表されるコスト項の値が小さくなる。このため、制約項がない場合には、このような状態「2」~「4」への遷移が発生しやすくなる。
【0103】
このため、適切な大きさの制約係数α、βを決定することが望ましい。α、βが小さすぎると制約違反解が発生しやすくなり、逆に大きすぎると制約充足解間のエネルギー障壁が大きくなって解空間の探索に支障をきたす。
【0104】
このため、情報処理装置100の制御部130は、
図1の情報処理システム10の処理部12と同様に、制約充足解から制約違反解への遷移が生じた場合のC(x)の変化量の期待値Δ
-C(x)に基づいて、制約係数αを決定する。なお、β=αとする。
【0105】
QAPの場合、たとえば、前述のように、α=Δ-C(x)=2S/n2(n+1)とすることで、制約違反により加算される制約項を、C(x)の減少量を補償する程度の値とすることができる。
【0106】
次に、情報処理システム20の処理手順を説明する。
図6は、情報処理システムの一例の処理の流れを示すフローチャートである。
制御部130は、ユーザにより入力されたQAPのデータからフロー行列F及び距離行列Dを取得する(ステップS1)。
【0107】
制御部130は、行列展開を行う(ステップS2)。すなわち、制御部130は、フロー行列Fと距離行列Dとのクロネッカー積を計算し、行列Q
ijを生成する。
図7は、行列展開例を示す図である。
【0108】
図7では、フロー行列Fと距離行列Dがそれぞれ4行4列の行列である場合、すなわち、n=4の場合のQ
ijの生成例が示されている。Q
ijは、16行16列の行列となる。このような行列は、コスト項のQUBO行列とも呼ばれる。
【0109】
割当要素はA~Dで表されており、割当先はa~dで表されている。また、
図7には4行4列の割当行列xの例が示されている。
図7の例では、割当要素Aが割当先dに割り当てられており、割当要素Bが割当先aに割り当てられており、割当要素Cが割当先cに割り当てられており、割当要素Dが割当先bに割り当てられている。
【0110】
フロー行列Fは、割当要素A~D間のフロー量が配列された行列である。たとえば、fABは、割当要素A,B間のフロー量を表す。
距離行列Dは、割当先a~d間の距離が配列された行列である。たとえば、dabは、割当先a,b間の距離を表す。
【0111】
フロー行列Fと距離行列Dとのクロネッカー積によって得られる行列Q
ijは、
図7に示されているように、4×4の小行列からなる。各小行列の位置は、行列Qの(列,行)=(i,j)により表される。また、小行列内の要素の位置は、行列Qの(列,行)=(k,l)により表される。
【0112】
同一割当要素間のフロー量(=0)と各距離との積で表される、行列Qijの対角の4つの小行列に含まれる各要素の値は0である。また、同一割当先間の距離(=0)と各フロー量との積で表される、各小行列の対角要素の値は0である。
【0113】
なお、行列Qijの下三角部分に含まれる小行列は、上三角部分に対応する小行列が含まれるため、探索部210に出力する情報は、上三角部分に対応する小行列(上記の対角の4つの小行列を除く)についての情報だけでよい。
【0114】
次に、制御部130は、Δ-C(x)を計算する(ステップS3)。
Δ-C(x)は、前述のように、制約充足解から、制約違反解への遷移が生じた場合のC(x)の減少量の期待値である。
【0115】
図8は、ある割当状態のときにQ
ijから選択される要素q
ijの変化の例を示す図である。
コスト項の計算の際、値が1である状態変数に対応したQ
ijの行と列が交差する位置にある要素q
ijが選択される。
図8には、x
13、x
22、x
31、x
44の値が1である例が示されている。各行、各列とも値が1である状態変数の数が1つであるため、QAPの制約条件が満たされており、制約充足解が得られる。この場合、これら4つの状態変数に対応する行と列の交差する位置にある6つのq
ijが選択される。なお、ここでは、上記のようにQ
ijの上三角部分に対応する小行列(上記の対角の4つの小行列を除く)が考慮されている。
【0116】
図8の例では、6つのq
ijの値の和である、12+12+10+8+12+16=70に、下三角部分を考慮した70を加えた140が、C(x)の値となる。
ここで、x
31がフリップした場合(値が1から0に変化した場合)、割当行列xの1行目において値が1である状態変数の数が0となる。このため、QAPの制約条件が満たされず、制約違反解が得られる。この場合、上記の6つのq
ijのうち、値が12、8、16の3つのq
ijが非選択になる。したがって、C(x)の減少量は、36である。
【0117】
このようなC(x)の減少量の期待値Δ-C(x)は、たとえば、前述のように、Δ-C(x)=2S/n2(n-1)と表される式により計算できる。
次に、制御部130は、調整係数が決定済か否かを判定する(ステップS4)。制御部130は、調整係数が決定済であると判定した場合には、ステップS6の処理を行い、調整係数が決定済ではないと判定した場合には、ステップS5の処理を行う。
【0118】
ステップS5の処理では、制御部130は、調整係数の決定を行う。ステップS5の処理については後述する。ステップS5の処理後、制御部130は、ステップS6の処理を行う。
【0119】
ステップS6の処理では、制御部130は、Δ-C(x)に調整係数を乗ずることで、制約係数αを算出する。
その後、制御部130は、式(1)をQUBO形式で表したエネルギー関数の情報を生成する(ステップS7)。
【0120】
制御部130は、ステップS7で生成したエネルギー関数の情報を探索部210に設定する(ステップS8)。
探索部210は、設定されたエネルギー関数の情報に基づいて、組合せ最適化演算を実行する。探索部210は、当該演算により、QAPの解を探索する(ステップS9)。
【0121】
探索部210は、探索により得られた解を制御部130に出力する(ステップS10)。
制御部130は、探索部210から解を取得し、解出力部140を介して外部に出力し、処理を終了する。
【0122】
(比較例)
図9は、比較例の情報処理システムの処理の流れを示すフローチャートである。
図9には、従来のように、イジングマシンによる組合せ最適化問題の解の探索結果に基づいて、制約係数を調整する処理を繰り返すことで、制約係数を最適化していく手法を用いた処理の手順が示されている。
【0123】
ステップS20,S21の処理は、
図6に示したステップS1,S2の処理と同じである。
ステップS22の処理では、制約係数αの初期値(仮値)が設定される。その後、
図6に示したステップS7~S9と同様の処理が行われ(ステップS23,S24,S25)、組合せ最適化演算によって得られた割当行列xが出力される(ステップS26)。
【0124】
そして、割当行列xに基づいて、QAPの制約条件が満たされているか否かが判定される(ステップS27)。制約条件が満たされていると判定された場合、ステップS28の処理が行われ、制約条件が満たされていないと判定された場合、ステップS30の処理が行われる。
【0125】
ステップS28の処理では、組合せ最適化演算によって得られたコスト項の値が出力される。
その後、コスト項の値が所定の条件を満たしているか否かが判定され(ステップS29)、条件が満たされていると判定された場合、ステップS31の処理が行われ、条件が満たされていないと判定された場合、ステップS30の処理が行われる。
【0126】
ステップS30の処理では、制約係数αの更新が行われる。たとえば、制約充足解が得られていなければ制約係数を大きくするような調整が行われ、コスト項の値が所定の閾値よりも大きいには制約係数を小さくするような調整が行われる。ステップS30の処理後、ステップS23からの処理が繰り返される。
【0127】
ステップS31の処理は、
図6に示したステップS10と同様の処理が行われる。
次に上記のような比較例の手法を用いて、QAPの各種のインスタンスを計算した例を示す。
【0128】
図10は、比較例における制約係数の値とインスタンスの計算結果との関係を示す図である。
図10には、レプリカ交換法を行うイジングマシンを用いて、問題サイズnがn=12の5つのインスタンスに対して、制約係数の値を変えて計算を行った例が示されている。5つのインスタンスは、QAPLIBから選択されたtai12a、scr12、rou12、nug12、had12である。横軸は制約係数の値を表し、縦軸は128個のレプリカのうち制約充足解が得られたレプリカ数を表す。
【0129】
制約係数を小さい値から大きい値に変化させると、どのインスタンスに対する計算結果でも、制約係数が小さい部分では制約違反解のみしか得られていないが、制約係数を大きくしていくと制約充足解が得られるようになる。最終的には、ほぼ全てのレプリカで制約充足解が得られている。このように、制約係数を十分に大きくすれば、ほぼ確実に制約充足解を得ることができるが、一般的には、制約係数が小さいものほどコスト項の値は最適解に近い解(準最適解:コスト項の値が最適解の値に十分に近い解)が得られる。そのため、制約係数は、制約充足解が得られ始める値から、ほとんど制約充足解で一部制約違反解が残る程度の値(グラフの傾きが正の部分)が適切な値となる。
図10に示されているように、同じ問題サイズでも、インスタンスによって適切な制約係数の値は百未満から数万まで大きく異なることがわかる。
【0130】
たとえば、rou12に対する求解の初期状態(
図10に示すような関係を計算する前の状態)では、制約係数の概数も不明であるため、十分大きそうな値を制約係数の初期値として設定することになる。制約係数の初期値を適当に、たとえば(1)50,000として組合せ最適化演算を行うと、128のレプリカの全てにおいて制約充足解が得られ、50,000は大きすぎるであろうことがわかる。次に、たとえば50,000を半分に減少して(2)25,000を制約係数の値として組合せ最適化演算を行う(
図9のステップS23の処理に戻る部分に対応している)と、128のレプリカ全てが制約違反解となる。このため、適切な制約係数(α)の値の範囲は、25,000<α<50,000であることがわかる。そこで次は、たとえば、25,000と50,000の間の(3)40,000を制約係数の値とし、組合せ最適化演算が行われる。しかしその場合、全てのレプリカで制約充足解が得られるため、やはり大きすぎることがわかる。続いて(4)30,000を制約係数の値として、組合せ最適化演算が行われる。この場合、一部のレプリカで制約充足解が得られ、制約係数は適切な値に近いことがわかる。この後、制約係数の値として、30,000と40,000の間や30,000より少し小さな値など何点かの値を用いた組合せ最適化演算が実行され、最終的に、たとえば、29,500が適切な制約係数として決定される。以上の操作はアルゴリズムとして組み込むことも可能である。
【0131】
一方、nug12などを計算する場合、制約係数の初期値を50,000とすると、たとえば、50,000、20,000、10,000、5,000、2,000、1,000、500、200、100、50まで変化させたときに制約違反解が得られる。このため、無駄な試行が非常に多くなる。
【0132】
人手ではなく、ベイズ推定などを用いて制約係数を最適化することも考えられるが、多数回の試行を要する点は変わらない。
上記のような比較例に対して、
図6に示したような処理を行う本実施の形態の情報処理システム20では、計算したΔ
-C(x)に基づいて制約係数αを決定することで、制約係数αの調整時間を短縮できる。なお、
図6には、調整係数を決定するステップS5が含まれているが、以下に説明するように、適切な調整係数の探索範囲は限定されるため、ステップS5の処理による計算時間の増加は、比較例の場合と比べて少ない。
【0133】
(調整係数の決定)
次に、調整係数の決定について説明する。
イジングマシンで求解が行われるインスタンス(QUBO行列を用いて表される)は、課題によって「統計的性質」(行列要素の平均、分散、行列の疎密、値の分布など)が異なる。このため、Δ-C(x)をインスタンス系列に合わせて調整することで制約係数αを決定することが望ましい。
【0134】
QAPとして定式化される課題には、工場用地への工場の割り当てのみならず、様々なものがある。たとえば、病院における病室と施設の配置や、空港での乗り換え乗客の延べ移動距離を最小化するゲート配置、プリント板の配置配線問題、キーボードのキー配列、テーブルへの着座配置、タービンブレードの重量バランスなどがある。これらの課題のそれぞれにおいて「統計的性質」が異なる。
【0135】
なお、QAPLIBはそのような課題を抽象化し、課題ごとにサイズの異なるシリーズとして作成されたライブラリで、解精度や求解速度のベンチマークに用いられている。
図11は、本実施の形態における調整係数の値とインスタンスの計算結果との関係を示す図である。
図11には、第2の実施の形態の情報処理システム20により、問題サイズnがn=12の5つのインスタンスに対して、C(x)の減少量の期待値Δ
-C(x)を求めた後、調整係数の値を変えてレプリカ交換法による計算を行った例が示されている。5つのインスタンスは、QAPLIBから選択されたtai12a、scr12、rou12、nug12、had12である。横軸は調整係数の値を表し、縦軸は128個のレプリカのうち制約充足解が得られたレプリカ数を表す。
【0136】
図10に示した比較例の場合と比べて、インスタンス間での適切な調整係数の値のばらつきは大幅に小さい。ただ、詳細に見ると、それぞれのインスタンスで統計的性質が異なるため、適切な調整係数(グラフの傾きが正の範囲)には数十パーセント程度の違いがある。このため、第2の実施の形態の情報処理システム20がより良好な解を得るためには、インスタンスごとに適切な調整係数を定めることが好ましい。
【0137】
図12は、調整係数の決定処理の一例の流れを示すフローチャートである。
まず、調整係数の初期値、増加量及び上限の設定が行われる(ステップS40)。ステップS40の処理では、たとえば、ユーザにより入力された初期値、増加量または上限に基づいて設定が行われてもよいし、予め記憶部120に記憶された初期値、増加量または上限に基づいて設定が行われてもよい。
【0138】
その後、制御部130と探索部210により、
図6に示したステップS6~S9の処理と同様のステップS41~S44の処理が行われ、イジングモデルの基底状態の探索結果である割当行列xが探索部210から出力される(ステップS45)。
【0139】
ステップS45の処理の後、制御部130は、調整係数が上限に達したか否かを判定する(ステップS46)。
制御部130は、調整係数が上限に達していないと判定した場合には、調整係数を増加量分、増加させ(ステップS47)、ステップS41からの処理を繰り返す。
【0140】
制御部130は、調整係数が上限に達したと判定した場合には、これまでに得られた探索結果である割当行列xに基づいて、最適な調整係数を決定し(ステップS48)、調整係数の決定処理を終了する。制御部130は、これまでに得られた割当行列xに基づいて、たとえば、
図11に示したように、制約充足解が得られたレプリカ数が調整係数の変化に応じて増加する範囲(傾きが正となる範囲)で調整係数を決定することで、適切な調整係数が得られる。
【0141】
適切な調整係数の探索範囲は、1×100前後に限られ、しかも探索の刻み(上記の調整係数の増加量)は0.05~0.1程度で十分である。また、調整係数の調整回数は、ステップS40の処理で設定された初期値、増加量及び上限によって決まっている。
【0142】
このため、比較例において制約係数αを更新する回数よりも、調整係数の調整回数を大幅に少なくできることが期待できる。
さらに、一度、調整係数を定めれば同種のインスタンスの組合せ最適化演算の実行時には、その調整係数を用いることができるため、調整係数決定のための試行は初回のみ行えばよい。
【0143】
図13は、調整係数の値と問題サイズの異なる同種のインスタンスの計算結果との関係を示す図である。
図13には、第2の実施の形態の情報処理システム20により、問題サイズの異なる12のtaiNa(Nは問題サイズ)に対して、C(x)の減少量の期待値Δ
-C(x)を求めた後、調整係数の値を変えてレプリカ交換法による計算を行った例が示されている。横軸は調整係数の値を表し、縦軸は128個のレプリカのうち制約充足解が得られたレプリカ数を表す。なお、
図13には、各インスタンスについての計算結果が、縦軸方向に150ずつずらして表示されている。
【0144】
図13の例では、たとえば、問題サイズの一番小さいtai10aにおいて、制約充足解が得られ始める程度の調整係数(1.3程度)を用いることで、12の異なる問題サイズの同種のインスタンス(tai)に対して、制約充足解を得ることができる。
【0145】
このように、調整係数を求める際は計算対象の問題の問題サイズを縮小して適切な調整係数を探索し、その調整係数を用いて実際の問題の求解を行うことにより、調整係数探索時間を大幅に削減することが可能となる。
【0146】
調整係数を求める際には、最適化しようとする問題を縮小したモデル(たとえば工場の用地への割り当てでは工場数、用地数を減らしたもの)を用いることが好ましい。ただ、抽象的な問題でもフロー行列、距離行列に統計的に大きな偏りがなければ、それぞれの行列から適当な行または列を抜き出して構成した小サイズのフロー行列、距離行列を用いて調整係数を求めることも可能である。
【0147】
なお、上記の調整係数の決定例では、調整係数の増加量と上限を設定し、調整係数が上限に達するまで、調整係数を増加させる方法が用いられたが、調整係数の減少量と下限を設定し、調整係数が下限に達するまで、調整係数を減少させる方法を用いてもよい。
【0148】
(QUBO生成例)
次に、決定した制約係数αに基づいたQUBOの生成例を説明する。
制約項は、たとえば、前述の式(8)のように表せる。式(8)の右辺の1項目のαに乗ずる2次多項式は、以下の式(14)のように表すことができる。
【0149】
【0150】
式(14)において、右辺の2次項は以下の式(15)のように表すことができる。
【0151】
【0152】
式(15)において2次項は、状態変数ベクトルの外積の上三角(i>j)の非対角要素の範囲(後述の
図14参照)で状態変数の和をとり、下三角の分、2倍したものである。また、式(15)において、x
ik
2は対角要素(後述の
図14参照)である。x
ikは0または1のバイナリ変数であるため、x
ik
2=x
ikである。以上のことから、式(14)は、以下の式(16)のように変形できる。
【0153】
【0154】
式(8)の右辺の2項目のβに乗ずる2次多項式も上記と同様の理由により、以下の式(17)のように表せる。
【0155】
【0156】
式(16)における2次項に足し合わされるx
ikx
jkと、1次項とを行列で表すと以下のようになる。
図14は、式(16)における2次項に足し合わされるx
ikx
jkと、1次項とを行列で表した図である。
図14では問題サイズnがn=4である場合の例が示されている。
【0157】
領域40内の2状態変数の積が2次項に足し合わされる。
図14では、2次項に足し合わされる2状態変数の積を表す行列要素が、k(=1~4)の値ごとに異なるハッチングで表されている。
【0158】
図14では、1次項は、行列の対角要素として、k(=1~4)の値ごとに異なるハッチングで表されている。
式(17)における2次項に足し合わされるx
ikx
ilと、1次項とを行列で表すと以下のようになる。
【0159】
図15は、式(17)における2次項に足し合わされるx
ikx
ilと、1次項とを行列で表した図である。
図15でも問題サイズnがn=4である場合の例が示されている。
領域41内の2状態変数の積が2次項に足し合わされる。
図15では、2次項に足し合わされる2状態変数の積を表す行列要素が、i(=1~4)の値ごとに異なるハッチングで表されている。
【0160】
図15では、1次項は、行列の対角要素として、i(=1~4)の値ごとに異なるハッチングで表されている。
図16は、制約項のQUBO行列の例を示す図である。
【0161】
図14、
図15の結果を組み合わせると、制約項のQUBO行列は、
図16のように表される。制約項についてのQUBO行列は、対角要素は-(α+β)であり、上三角部分(i>j)の各小行列の対角要素は、2αである。また、対角の4つの小行列のそれぞれにおける上三角部分の各要素は2βである。なお、前述のようにα=βと考えてよい。
【0162】
図17は、エネルギー関数全体のQUBO行列の例を示す図である。
図17のエネルギー関数全体のQUBO行列は、
図7に示したコスト項のQUBO行列と、
図16に示した制約項のQUBO行列とを足し合わせることで得られる。
【0163】
制御部130は、このようなQUBO行列をエネルギー関数の情報として出力し、探索部210に設定する。
以上のような第2の実施の形態の情報処理システム20によれば、第1の実施の形態の情報処理システム10と同様の効果が得られる。すなわち、適切な制約係数を得るために多数回の調整が発生することを抑制でき、制約係数の決定にかかる時間を短縮できる。
【0164】
(第3の実施の形態)
図18は、第3の実施の形態の情報処理システムの一例の処理の流れを示すフローチャートである。
【0165】
ステップS50~S51の処理は、
図6に示したステップS1,S2の処理と同じである。
ステップS51の処理後、制御部130は、行列変調を行う(ステップS52)。ステップS52の処理では、フロー行列Fと距離行列Dのクロネッカー積によって生成されたQ
ijの変調が行われる。変調の例については後述する。
【0166】
ステップS52の処理後、制御部130は、変調後のQ
ijに基づいて、
図6に示したステップS3の処理と同様に、Δ
-C(x)を計算する(ステップS53)。第3の実施の形態の情報処理システムでは、後述の理由によって調整係数を1.0とすることができ、Δ
-C(x)を制約係数αとすることができる。
【0167】
ステップS54~S57の処理は、
図6に示したステップS7~S10の処理と同様である。
(行列変調)
以下の式(18)のC’(x)は、式(2)に示したコスト項C(x)に任意の定数Cを加えたものである。
【0168】
【0169】
組合せ最適化問題の計算では、常に同じ定数Cをコスト項から加減しても最適解(QAPの場合は最適な割り当て)は変わらず、最適解におけるコスト項の値は、コスト項に加減した定数Cの分だけの差が生じるだけである。さらに、最適解に限らず、全ての解とそれらの順位(大小関係)は当然に保たれる。
【0170】
ところで、QAPでは、前述の式(9)のように、フロー行列Fと距離行列Dのクロネッカー積によって表される行列Qは、n×n個の小行列fijDからなる。i,jで識別される任意の2つの割当要素(工場など)を考えたとき、割り当て可能な割当先(用地など)は、2つの割当先の全ての組合せである。小行列fijDは、i,jで識別される任意の2つの割当要素に対する2つの割当先の全ての組合せに対応したコスト項を表す。
【0171】
QAPの制約充足解では、それぞれの小行列fijDから対角要素以外の何れか1つの要素fijdklが選ばれる。すなわち制約充足解のコスト項には、それぞれの小行列fijDから対角要素以外の何れか1つの要素fijdklの値のみが加算される。
【0172】
このため、制約充足解については、その解を構成する全てのfijdklから同じ定数を加減しても、上記のように単純にコスト項から常に定数Cを加減した場合と同様に、同一の最適解となる。また、全ての解とそれらの順位も保たれる。
【0173】
したがって、行列Qにおいて、前述の有効な要素からなるn(n-1)/2個の小行列fijDごとに、それぞれの要素fijdklから任意の同一定数を加減してもしなくても、制約充足解については同一の解(割り当て)及びコスト項順位となる。このような、それぞれの要素fijdklから任意の同一定数を加減する操作が、行列Qの変調に相当する。
【0174】
一方、フロー行列Fと距離行列Dの順番を入れ替えてクロネッカー積を実施した場合に得られる小行列dklFは、k,lで識別される任意の2つの割当先に対する2つの割当要素の全ての組合せに対応したコスト項を表す。しかし、クロネッカー積は可換ではないため、小行列dklFの要素は、式(9)に示した行列Qにおいては小行列を構成せず、行列Qの各小行列fijDに、1要素ずつ配分されている。
【0175】
図19は、小行列d
klFの要素の小行列f
ijDへの配分例を示す図である。
図19では、小行列d
klFの一例であるd
2nFの要素の小行列f
ijDへの配分例が示されている。
【0176】
たとえば、d2nFの要素f12d2nは小行列f12Dに配分されており、d2nFの要素f1nd2nは小行列f1nDに配分されている。
QAPの制約充足解では、小行列fijDの場合と同様に、小行列dklFから対角要素以外の何れか1つの要素fijdklが選ばれる。すなわち制約充足解のコスト項には、小行列dklFの対角要素以外の何れか1つの要素fijdklの値が加算される。このため、制約充足解については、その解を構成する全てのfijdklから同じ定数を加減しても、上記のように単純にコスト項から常に定数Cを加減した場合と同様に、同一の最適解となる。また、全ての解とそれらの順位も保たれる。なお、小行列fijDの下三角の要素は、上三角の要素と同じであるため用いなくてもよい(無効な要素とすることができる)。
【0177】
したがって、小行列fijDと同様に、有効な要素からなるn(n-1)/2個の小行列dklFごとに、それぞれの要素fijdklから任意の同一定数を加減してもしなくても、制約充足解については同一の解(割り当て)及びコスト項順位となる。このような、dklFのそれぞれの要素fijdklから任意の同一定数を加減する操作も、行列Qの変調に相当する。
【0178】
これらの行列変調によりfijdklの値の偏差を縮減して解空間を滑らかにすることで、制約項の値を削減して解の探索効率を向上させることができる。これは、統計的な観点から以下のようにいうことができる。元々インスタンス系列ごとに異なる偏差を持っていたfijdklが、行列変調で偏差の縮減を行うことで、元のインスタンス系列によらず互いに統計的性質が類似し、かつ元のインスタンスと同一の解をもつ別のインスタンス系列に変換されている。
【0179】
このように、制約係数の決定に際して、計算対象のインスタンスに行列変調を施すことにより統計的性質を揃えることができる。これにより、第2の実施の形態に用いていた、インスタンス系列による統計的な違いを補正するために用いた調整係数を、インスタンスの系列依存性を軽減しつつ、ほとんど一定の値とすることが可能である。
【0180】
図20は、行列変調の一例の流れを示すフローチャートである。
制御部130は、フロー行列Fと距離行列Dのクロネッカー積により得られる行列Qの要素の平均値を算出する(ステップS60)。また、制御部130は、各小行列f
ijD(i<j)の要素の平均値を算出する(ステップS61)。そして制御部130は、各小行列f
ijD(i<j)について、(小行列f
ijD(i<j)の要素の平均値-行列Qの要素の平均値)を、小行列f
ijD(i<j)の各要素から差し引く(ステップS62)。なお、制御部130は、(小行列f
ijD(i<j)の要素の平均値-行列Qの要素の平均値)が負の場合には、この差分値を、小行列f
ijD(i<j)の各要素に加える。
【0181】
次に制御部130は、各小行列dklF(k<l)の要素の平均値を算出する(ステップS63)。そして制御部130は、各小行列dklF(k<l)について、(小行列dklF(k<l)の要素の平均値-行列Qの要素の平均値)を、小行列dklF(k<l)の各要素から差し引く(ステップS64)。なお、制御部130は、(小行列dklF(k<l)の要素の平均値-行列Qの要素の平均値)が負の場合には、この差分値を、小行列dklF(k<l)の各要素に加える。
【0182】
最後に、制御部130は、行列Qにおける最小値をQの全要素から差し引く(ステップS65)。
上記の行列変調操作において、ステップS62の処理は、各小行列fijD(i<j)の要素の平均値が行列Q全体の要素の平均値に一致するような値を各小行列の各要素から加減することに相当する。また、ステップS64の処理は、各小行列dklF(k<l)の要素の平均値が行列Q全体の要素の平均値に一致するような値を各小行列dklF(k<l)から加算または減算することに相当する。
【0183】
なお、上記の処理の順序は一例であり、適宜処理の順序を変えてもよい。
図21は、行列変調を用いた場合の調整係数の値とインスタンスの計算結果との関係を示す図である。
図21には、上記の方法により行列変調を行った行列Qに基づいてC(x)の減少量の期待値Δ
-C(x)を求めた後、調整係数の値を変えてレプリカ交換法による計算を行った例が示されている。計算対象のインスタンスは、QAPLIBから選択されたtai12a、scr12、rou12、nug12、had12である。横軸は調整係数の値を表し、縦軸は128個のレプリカのうち制約充足解が得られたレプリカ数を表す。
【0184】
上記の方法により行列変調を行った行列Qを用いた場合、
図21に示されているように、5つのインスタンスについて調整係数をほぼ1.0にすることが可能であった。つまり、
図18に示したように、制約係数αの決定のための試行錯誤をしなくても、Δ
-C(x)をそのまま制約係数αとすることができる。
【0185】
ただし、調整係数が1.0になるのは
図20に示したような行列変調操作が行われる場合であって、他の行列変調操作が行われる場合は、調整係数が1.0とは異なる値となる場合もありうる。
【0186】
また、制約係数αを無調整で解を得る前に、あるいは解を得た後に再度、制約係数αを調整してさらによいコスト項の値を目指すことも、もちろん可能である。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2及び第3の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0187】
たとえば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、たとえば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【0188】
以上、実施の形態に基づき、本発明の情報処理システム、情報処理方法及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0189】
10 情報処理システム
11 記憶部
12 処理部
13 探索部