実施形態1.
以下、本発明の第1の実施形態を、図面を参照して説明する。図1は、第1の実施形態の情報処理装置10の一例を示すブロック図である。第1の実施形態に係る情報処理装置10は、図1に記載の4つの処理ブロックを含む。すなわち、情報処理装置10は、制約変換部11、不等式制約変換部12、充足判定部13、および最適化部14を含む。
制約変換部11は、入力として線形不等式で表される線形不等式制約を含む制約付き二値最適化問題を受け取り、入力に含まれる線形不等式制約を、より少ないデータサイズで表現可能な別の等価な線形不等式制約に変換した制約付き二値最適化問題を出力する。
不等式制約変換部12は、入力として線形不等式制約を受け取り、より少ないデータサイズで表現可能な係数のみからなる別の等価な線形不等式制約を出力する。
充足判定部13は、入力として不等式制約変換部12から制約式を受け取り、これを充足するような変数への値の割り当てがあるならば「充足可能」と判定し、その値の組合せを出力する。充足判定部13は、そのような値の組合せがなければ「充足不能」と判定する。
最適化部14は、制約変換部11が変換した線形不等式を含む制約付き二値最適化問題を受け取り、その解を求めて出力する。
以下、本発明における不等式制約の「係数のデータサイズ」について、より詳細な定義を説明する。以下では係数および定数項の値を整数として議論するが、小数の場合でも、両辺に適当な定数を掛けることで整数と同じ扱いにできる(例えば、0.4*x1+0.3*x2≦1.0という不等式制約は、両辺を10倍すれば4*x1+3*x2≦10という整数係数の不等式制約に変換できる。)。
不等式制約としては「制約(1)左辺≦右辺」,「制約(2)左辺≧右辺」,「制約(3)左辺<右辺」,「制約(4)左辺>右辺」の4通りのタイプが考えられる。しかし、制約(2),(4)は両辺に-1を掛けることで、制約(1),(3)のタイプにそれぞれ変換できる。
また、制約(3)のタイプの不等式制約も制約(1)のタイプに変換することができる。このことを説明するために、次の制約(3)のタイプの不等式制約C.T3を考える。
C.T3=「c1*x1+c2*x2+...+cn*xn<c」
このC.T3の「<」部分を「≦」に置き換えた次の不等式制約C.T1を考える。
C.T1=「c1*x1+c2*x2+...+cn*xn≦c」
不等式制約C.T1の充足域は、不等式制約C.T3の充足域に等式制約「c1*x1+c2*c2+...+cn*xn=c」を加えたものである。ここで、不等式制約C.T1からこの等式制約の充足域のみを除去するように、1/2を右辺から差し引くことで次の不等式制約C.T1’を作る。なお、右辺から差し引いている値は1未満の値なので、この操作により充足域に含まれていた割り当てが充足域外に出たり、逆に充足域外の割り当てが充足域に入ってくることはない。
C.T1’=c1*x1+c2*x2+...+cn*xn≦c-1/2
不等式制約C.T1’は、不等式制約C.T3と同じ充足域を持つため、制約としては全く等しいが制約(1)のタイプの不等式制約が得られたことになる。さらに、この両辺を2倍することによって、以下に示す「不等式制約C.T3と等価、かつ制約タイプ(1)であるような」整数係数の不等式制約を得ることができる。
2*c1*x1+2*c2*x2+...+2*cn*xn≦2*c-1
以上の説明により、不等式制約は、全て制約(1)のタイプとして表現できる。したがって、次のように不等式制約の「係数サイズ」は定義できる。ある不等式制約「c1*x1+c2*x2+...+cn*xn≦c」の係数サイズとは、c1,c2,...,cnおよびcを全て表現するのに必要最小限のビット数のことである。なお、bビットで-2bから2b-1までの整数を表現できる。
例えば、制約付き二値最適化問題OPT.1に含まれる不等式制約(4)は、定数項4の表現に3ビット必要なので、不等式制約(4)の係数サイズは3となる。
次に、第1の実施形態の情報処理装置10が、制約付き二値最適化問題の解を算出する動作を図2を用いて説明する。
図2は、情報処理装置10が、入力された制約付き二値最適化問題の解を算出するフローチャートである。
最初に、情報処理装置10における入出力装置(図示せず)を介して、制約付き二値最適化問題が制約変換部11に入力される(ステップS201)。
次に、制約変換部11は、入力された制約付き二値最適化問題に不等式制約Cがある場合に、各不等式制約Cを1つずつ不等式制約変換部12に入力する(ステップS202)。
不等式制約変換部12は、入力された不等式制約Cと等価な、係数サイズが小さい不等式制約R[C]を制約変換部11に返す(ステップS203)。
制約変換部11は、元々の不等式制約Cを不等式制約変換部12によって変換された不等式制約R[C]に変換する(ステップS204)。
制約変換部11は、全ての不等式制約の変換が終わった時点で制約付き二値最適化問題を最適化部14に入力する(ステップS205)。
最適化部14は、入力された制約付き二値最適化問題の最適解を求め、元々の問題の最適解として出力する(ステップS206)。
以上が情報処理装置10の動作の説明である。
次に、第1の実施形態の不等式制約変換部12が、不等式制約をより係数サイズの小さい不等式制約に変換する動作を図3を用いて説明する。
図3は、不等式制約変換部12が入力された不等式制約をより係数サイズの小さい不等式制約に変換するフローチャートである。
最初に、不等式制約変換部12は、制約変換部11から入力として不等式制約C=「c1*x1+c2*x2+...+cn*xn≦c」を受け取る。x1,...,xnは、変数であり、c1,...,cn,cは定数(具体的な数値)である。
次に、不等式制約変換部12は、n+1個の変数r1,r2,...,rn,rを新規に導入し、制約式R[C]=「r1*x1+r2*x2+...+rn*xn≦r」を生成する。不等式制約変換部12は、制約式R[C]において、変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を決める。このようにして、元々の不等式制約Cは、変数x1,...,xnに関する不等式制約R[C][d1,...,dn,d]=「d1*x1+d2*x2+...+dn*xn≦d」となる(ステップS301)。
次に、不等式制約変換部12は、不等式制約Cと制約式R[C]とを組み合わせることで、変数r1,...,rn,rに関する以下の制約EQUIV(r1,...,rn,r)を構成する(ステップS302)。
EQUIV(r1,...,rn,r)=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」
ここで、変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が制約EQUIV(r1,...,rn,r)を満たすことの意味を説明する。上述した通り、制約式R[C]は、このとき変数x1,...,xnに関する不等式制約R[C][d1,...,dn,d]=「d1*x1+d2*x2+...+dn*xn≦d」となる。したがって、以下に示す命題EQUIV[d1,...,dn,d]が成り立つ。また、これは2つの不等式制約CとR[C][d1,...,dn,d]との間の関係を表すものと解釈できる。
EQUIV[d1,...,dn,d]=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『不等式制約R[C][d1,...,dn,d]が成り立つ』」
すなわち、命題EQUIV[d1,...,dn,d]が成り立つことは、「あるx1,...,xnへの割り当てが、不等式制約Cを満たすこととと、不等式制約R[C][d1,...,dn,d]を満たすこととは同値である」こと、すなわちこれら2つの不等式制約の充足域が等しいことを示している。したがって、命題EQUIV[d1,...,dn,d]が成り立つとき、不等式制約Cと不等式制約R[C][d1,...,dn,d]とは等価となる。
以上が値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が制約EQUIV(r1,...,rn,r)を満たすことの意味の説明である。
以上のことから、制約EQUIV(r1,...,rn,r)を満たすような値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を求めることができれば、その割り当てを元に元々の不等式制約Cと等価な不等式制約R[C][d1,...,dn,d]を得られる。したがって、図3のステップS304以降のステップでは、制約EQUIV(r1,...,rn,r)を満たすような変数r1,r2,...,rn,rへの値の割り当てを計算する手続きを実施する。
次に、不等式制約変換部12は、変数bの値をb=1から順次b=2,3,...と増やしながら、ステップS305およびステップS306を繰り返し実行する(ステップS304)。
ステップS305では、不等式制約変換部12は、制約EQUIV(r1,...,rn,r)を元に次の制約CHECK[C,b](r1,...,rn,r)を構築する。
CHECK[C,b](r1,...,rn,r)=「r1,...,rn,rが全てbビットで表現可能」かつ「EQUIV(r1,...,rn,r)が成り立つ」
ここで、制約CHECK[C,b](r1,...,rn,r)の意味を説明する。
制約CHECK[C,b](r1,...,rn,r)は、制約EQUIV(r1,...,rn,r)に加えて変数r1,...,rn,rが満たすべき条件として「全てbビット以下である」が追加されたものである。
上述した制約EQUIV(r1,...,rn,r)の意味も合わせると、値の割り当て(r1,...,rn,r)=(d1,...,dn,d)が制約CHECK[C,b](r1,...,rn,r)を満たすということは、「d1,...,dn,dが全てbビットで表現できる整数値であり、かつd1*x1+...+dn+xn≦dが不等式制約Cと等価である」ことを意味する。さらに、「d1*x1+...+dn*xn≦dは、不等式制約Cと等価であり、かつ係数サイズがb以下である」ことを意味する。
すなわち、制約CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が存在すれば、不等式制約Cと等価で係数サイズがb以下の不等式制約R[C][d1,...,dn,d]が得られたことになる。
逆に制約CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が存在しなければ、不等式制約Cと等価な係数サイズがb以下の不等式制約は存在しないことになる。
以上が制約CHECK[C,b](r1,...,rn,r)の意味の説明である。
ステップS306では、不等式制約変換部12は、制約CHECK[C,b](r1,...,rn,r)を充足判定部13に入力する。充足判定部13の結果が「充足可能」の場合、処理は、ステップS307に進む。充足判定部13の結果が「充足不能」の場合、処理は、ステップS304に戻る。
ステップS307では、不等式制約変換部12は、充足判定部13から出力された値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約R[C][d1,...,dn,d]を構築し、結果を出力する。
以上が、第1の実施形態の不等式制約変換部12が、不等式制約をより係数サイズの小さい不等式制約に変換する動作の説明である。
以下、具体的な不等式制約の例を用いて第1の実施形態の不等式制約変換部12の具体的な動作を説明する。
具体的な入力として不等式制約C3が与えられたときの動作を後述する。不等式制約C3は、以下のような不等式制約であり、その係数サイズは18である。
C3=「112345*x1+113579*x2+112345*x3≦225000」
これに対して、不等式制約変換部12は、ステップS302で4個の変数r1,r2,r3,rを用意し、次の制約式R[C3]を生成する。
R[C3]=「r1*x1+r2*x2+r3*x3≦r」
続いて、不等式制約変換部12は、ステップS303で次の制約EQUIV[C3](r1,r2,r3,r)を構成する。
EQUIV[C3](r1,r2,r3,r)=「全てのx1,x2,x3への割り当てに対し、『C3が成り立つ』⇔『R[C3]が成り立つ』」。
続いて、処理は、ステップS304から繰り返し手続きに入る。まず、不等式制約変換部12は、b=1として、次の制約CHECK[C3,1](r1,r2,r3,r)を充足判定部13に入力する。
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-1または0」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
CHECK[C3,1](r1,r2,r3,r)を満たすようなr1,r2,r3,rへの値の割り当ては存在しないため、充足判定部13は、「充足不能」を不等式制約変換部12に返す。
次に、不等式制約変換部12は、b=2として、次の制約CHECK[C3,2](r1,r2,r3,r)を充足判定部13に入力する。
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-2,-1,0,1のいずれか」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
制約CHECK[C3,1](r1,r2,r3,r)を満たすようなr1,r2,r3,rへの値の割り当ては存在しないため、充足判定部13は、「充足不能」を不等式制約変換部12に返す。
次に、不等式制約変換部12は、b=3として、次の制約CHECK[C3,3](r1,r2,r3,r)を充足判定部13に入力する。
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-4以上、3以下の値」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
CHECK[C3,1](r1,r2,r3,r)を満たすような値の割り当てとして(r1,r2,r3,r)=(1,2,1,2)が存在する。よって、充足判定部13は、「充足可能」と共に前記値の割り当てを不等式制約変換部12に返す。
ステップS307において、不等式制約変換部12は、充足判定部13から返された値の割り当て(r1,r2,r3,r)=(1,2,1,2)を用い、不等式制約「x1+2*x2+x3≦2」を結果として制約変換部11に出力する。
前記不等式制約の係数サイズの値は、3であり不等式制約C3の係数サイズの値である18に比べ小さくなっている。さらに、これら2つの不等式制約の充足域は、共に(x1,x2,x3)={(0,0,0),(1,0,0),(0,0,1),(0,1,0),(1,0,1)}であるので、等価な不等式制約である。
以上が、具体的な不等式制約の例C3を用いた第1の実施形態の不等式制約変換部12の具体的な動作である。
次に、充足判定部13の動作について説明する。上述の通り充足判定部13は、不等式制約変換部12から入力された制約式CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rに対する値の割り当てを求める。
充足判定部13が整数型変数への値の割り当てを算出する方法は、特に限定されず、公知の方法でよい。以下では、公知の方法によって値の割り当てを算出する方法を具体的にいくつか示す。
第一の方法として、制約式CHECK[C,b](r1,...,rn,r)を直接解くことのできる制約解決ソルバを利用する方法が考えられる。制約式CHECK[C,b](r1,...,rn,r)は、形式的には量化された整数型変数に対する制約式であるから、これを直接解くことのできる制約解決ソルバによって、変数r1,...,rn,rに対する値の割り当てを求めることができる。
第二の方法として、制約式CHECK[C,b](r1,...,rn,r)を「複数の不等式制約の連言」に展開する方法が考えられる。不等式制約Cの充足域が(x1,x2,...,xn)={(v1[1],v2[1],...,vn[1]),(v1[2],v2[2],...,vn[2]),...,(v1[m],v2[m],...,vn[m])}である。ここに含まれていない0,1のn個の組が{(u1[1],u2[1],...,un[1]),(u1[2],u2[2],...,un[2]),...,(u1[k],u2[k],...,un[k])}であったとすると、制約式CHECK[C,b](r1,...,rn,r)は、以下のような不等式制約の連言と等価になる。
CHECK[C,b](r1,...,rn,r)=「-2b≦r1」かつ「r1≦2b-1」かつ「-2b≦r2」かつ「r2≦2b-1」かつ...「-2b≦rn」かつ「rn≦2b-1」かつ「-2b≦r」かつ「r≦2b-1」かつ「r1*v1[1]+...+rn*vn[1]≦r」かつ...,「r1*v1[m]+...+rn*vn[m]≦r」かつ「r1*u1[1]+...+rn*un[1]>r」かつ...,「r1*u1[k]+...+rn*un[k]>r」
上記の形式化を通すことで、充足判定部13は、変数の量化に対応していない整数の不等式制約の連言を解くことができるソルバによって、変数r1,...,rn,rに対する値の割り当てを求めることができる。
第三の方法として、上記の変数r1,r2,...,rn,rをブーリアン変数に分解し、全ての変数をブーリアン変数に変換する方法が考えられる。詳細は省略するが、定義から制約式CHECK[C,b](r1,...,rn,r)を満たすr1,...,rn,rの値は、必ずbビットで表わせる。そのため、充足判定部13は、変数riに対しb個のブーリアン変数を使うことでそのビット表現そのものをエンコードできる。
例えば、変数riが4ビットで表現可能であると仮定したとき、充足判定部13は、変数riに対し4つのブーリアン変数ri[1],ri[2],ri[3],ri[4]を用意し、変数riを以下の項で置換することができる。
ri[4]*8+ri[3]*4+ri[2]*2+ri[1]
このように全てをブーリアン変数で表現してしまうことで、制約式CHECK[C,b](r1,...,rn,r)に含まれる変数は、(量化されたx1,...,xnも含めて)全てブーリアン変数となる。
変数の全てがブーリアン変数であり、係数に数値を含むような問題は、SAT(satisfiability problem,充足可能性問題)に帰着させて解く方法が知られている。したがって、上記の変換を施した問題をさらにSATに帰着させることで、充足判定部13は、公知のSAT求解技術によって値の割り当てを求めることが可能である。
以上が、充足判定部13が変数r1,...,rn,rに対する値の割り当てを求めるために使うことのできる、公知の方法を利用した手法の具体的な説明である。
第1の実施形態の最適化部14は、入力として制約付き二値最適化問題を受け取り、最適化特化装置を用いて最適解を求め、出力する。
第1の実施形態の最適化部14が、最適化特化装置を用いて制約付き二値最適化問題の最適解を求める方法は特に限定されず、公知の方法でよい。例えば、非特許文献3には、不等式制約付きの最適化問題を、最適化特化装置の一つであるイジングマシンを用いて解くための手法が記載されている。最適化部14の実装として、この手法を用いてもよい。
以上に説明したように、第1の実施形態の情報処理装置10は、入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変換した後で最適化部14による最適化を行う。その結果、第1の実施形態の情報処理装置10は、本来ハードウェアの制約から直接最適解を求めることができない二値最適化問題に対しても最適解を求めることができる。
実施形態2.
以下、本発明の第2の実施形態を、図面を参照して説明する。図4は、第2の実施形態の情報処理装置20の一例を示すブロック図である。第2の実施形態に係る情報処理装置20は、図4に記載の4つの処理ブロックを含む。すなわち、情報処理装置20は、制約変換部11、不等式制約変換部12、充足判定部13、および最適化部14を含む。
情報処理装置20は、情報処理装置10と大部分が共通している。しかし、最適化部14は、問題変換部141と最適解算出部142との二つの装置から構成される。
第2の実施形態の情報処理装置20の動作を説明する。第2の実施形態の情報処理装置20の構成は、問題変換部141と最適解算出部142との二つの装置から構成される最適化部14を用いて制約付き二値最適化問題の最適解を求めるという構成以外は情報処理装置10の構成と同じである。
第2の実施形態の最適化部14の動作を説明する。第2の実施形態の最適化部14は、まず入力された制約付き二値最適化問題を問題変換部141に入力する。その後、最適化部14は、最適解算出部142を介して問題変換部141から返された出力を、数式OPTの最適解として出力する。
問題変換部141は、入力された制約付き二値最適化問題を等価な二次制約なし二値最適化問題(Quadratic Unconstrained Binary Optimization ,QUBO)に変換し、最適解算出部142に入力する。さらに、最適化部14は、最適解算出部142から返された出力を受け取り、元々の制約付き二値最適化問題の解に変換した上で出力する。
問題変換部141が制約付き二値最適化問題を二次制約なし二値最適化問題に変換する方法は、特に限定されず公知の方法でよい。以下に、制約付き二値最適化問題を二次制約なし二値最適化問題に変換する具体的な方法の例を、具体的な問題を変換する手順を例示することで説明する。この方法は非特許文献2において「整数重みナップサック問題(Knapsack with Integer Weight)」を二次制約なし二値最適化問題に変換する方法として紹介されている手法と類似のものである。
なお、以下で説明する方法は、最適化問題が二次以下の項しか含まず、かつ制約式(等式・不等式)が線形のものである時に限って有効な手法である。
以下の問題OPT.2が問題変換部141に入力されたとする。問題OPT.2は、目的関数OBJ、等式制約EQ、不等式制約IEQからなる。
(OPT.2)
[目的関数]
x1+2*x2+3*x3 ・・・(OBJ)
[制約]
x1+x2=1 ・・・(EQ)
2*x1+2*x2+3*x3≦5 ・・・(IEQ)
最初に、問題変換部141は、それぞれの制約式を「制約式が成り立つ⇔補助目的関数の値が最小」かつ「制約式が成り立たない⇔補助目的関数の値が1以上」が成り立つような「補助目的関数」に変換する。
まず等式制約について述べる。等式制約EQを変形し「x1+x2-1=0」とすると、この式が成り立つことは左辺を二乗して得られる補助目的関数「(x1+x2-1)2」が最小値を取ることと同値である。また、制約式が成り立たないとき補助目的関数の値は1以上の値を取る。
次に不等式制約について述べる。不等式制約IEQは、「2*x1+2*x2+3*x3の値が、0,1,2,3,4,5のいずれか」と言いかえられるので、新しいブーリアン変数c1,c2,c3,c4,c5,c6を導入することで、不等式制約IEQと等価な以下の等式制約が得られる。
IEQ’=「2*x1+2*x2+3*x3-c1-c2-c3-c4-c5-c6=0」
よって、これは等式制約EQと同様に補助目的関数「(2*x1+2*x2+3*x3-c1-c2-c3-c4-c5-c6)2」と同値である。また、制約式が成り立たないとき補助目的関数の値は1以上の値を取る。
以上が、問題変換部141が制約式をそれぞれ目的関数に変換する方法の説明である。
次に、問題変換部141が、元々の目的関数OBJも含め全ての目的関数を一つにまとめる方法を説明する。
まず、制約を無視した場合の目的関数OBJの上限値を考えると、明らかに全ての変数が1に割り当てられた場合の6であることがわかる。
そこで、元々の目的関数はそのまま、制約を変換することで生成された補助目的関数は「7」を掛けたものを、それぞれ足し合わせることで以下の二次制約なし二値最適化問題OPT-UCを得ることができる。
(OPT-UC)
x1+2*x2+3*x3+7*(x1+x2-1)2+7*(2*x1+2*x2+3*x3-c1-c2-c3-c4-c5-c6)2
結果得られた前記の二次制約なし二値最適化問題の目的関数を最小化する値の割り当ては、元々の最適化問題OPT.2の最適解を与える。このことを説明する。
補助目的関数はその元となった制約式が満たされないときに1以上の値を取る。値の割り当て(x1,x2,x3)=(v1,v2,v3)が元々の制約式を全て満たす場合、二値最適化問題OPT-UCの値は6以下となる。逆に一つでも満たさない制約式がある場合、二値最適化問題OPT-UCの値は7以上の値を取る。よって、二値最適化問題OPT-UCの最小値を与えるような値の割り当ては、必ず問題OPT.2の持つ全ての制約を満たす。
すなわち、二値最適化問題OPT-UCは、補助目的関数の値が0であるような値の割り当てのうち、元々の目的関数の値が最小となる値の割り当てで最小値を取ることになる。よって、二値最適化問題OPT-UCの最適解を与えるような値の割り当ては、問題OPT.2の最適解を与える。
以上が、問題変換部141が制約付き二値最適化問題を二次制約なし二値最適化問題に変換する具体的な方法の例に関する説明である。
また、問題変換部141が、最適解算出部142に返された解を元に元々の問題の最適解を構成する方法は、その直前のステップで採用した方法、すなわち制約付き二値最適化問題から二次制約なし二値最適化問題への変換方法に依存する。
具体的には、問題変換部141が、問題OPT.2を二値最適化問題OPT-UCに変換して最適解算出部142に入力したとすると、例えば値の割り当て(x1,x2,x3,c1,c2,c3,c4,c5,c6)=(1,0,0,1,1,0,0,0,0)が得られる。
前記のケースでは、元々の問題OPT.2の変数x1,x2,x3に対する値の割り当てが前記の割り当てに含まれるため、それを取り出すだけで問題OPT.2の解(x1,x2,x3)=(1,0,0)を構成できる。
以上が、問題変換部141の動作の具体的な説明である。
最適解算出部142が二次制約なし二値最適化問題の最適解を求める方法は、特に限定されず公知のものでよい。例えば、課題の説明において言及したアニーリングマシンの一種である量子アニーリングマシンによる手法が、非特許文献1に記載されている。当該手法によって、最適解算出部142は、入力された二次制約なし二値最適化問題の最適解を求めることができる。換言すれば、最適解算出部142として、上述した最適化特化装置を使用可能である。
以上に説明したように、第2の実施形態の情報処理装置20は、入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変形した後で問題変換部141により二次制約なし二値最適化問題に変換する。
その結果、第2の実施形態の情報処理装置20は、元々の制約付き二値最適化問題を直接問題変換部141によって二次制約なし二値最適化問題に変換するよりも、より係数サイズの小さい問題に変換することができる。すなわち、第2の実施形態の情報処理装置20は、本来ハードウェアの制約から直接最適解算出部142による最適解の計算ができない最適化問題に対しても、最適解を計算することができる。
実施形態3.
以下、本発明の第3の実施形態を、図面を参照して説明する。図5は、第3の実施形態の情報処理装置30の一例を示すブロック図である。第3の実施形態に係る情報処理装置30は、図5に記載の4つの処理ブロックを含む。すなわち、情報処理装置30は、制約変換部11、不等式制約変換部121、充足判定部13、および最適化部14を含む。
情報処理装置30は、情報処理装置10と大部分が共通しているが、不等式制約変換部12の代わりに動作の異なる不等式制約変換部121が接続されている。
第3の実施形態の情報処理装置30の動作を説明する。第3の実施形態の情報処理装置30の構成は、不等式制約変換部12の代わりに不等式制約変換部121を用いて不等式制約を変換するという構成以外は、情報処理装置10の構成と同じである。
ただし、後述するように第3の実施形態の情報処理装置30では、制約変換部11は不等式制約変換部121に入力として変換する不等式制約に加えて、制約付き二値最適化問題に含まれる全ての等式制約のリストを入力する。
次に、第3の実施形態の情報処理装置30における不等式制約変換部121の動作を説明する。図6は、不等式制約変換部121の動作を示したフローチャートである。
不等式制約変換部121は、前述の通り、制約変換部11から入力として変換する不等式制約C=「c1*x1+c2*x2+...+cn*xn≦c」と、制約付き二値最適化問題に含まれる全ての等式制約のリストEQ[1],EQ[2],...,EQ[p]とを受け取る(ステップS301)。
不等式制約変換部121は、不等式制約Cに対し図3と同様のステップS302とステップS303とを実行することで、制約式EQUIV(r1,...,rn,r)を生成する。
不等式制約変換部121は、等式制約のリストEQ[1],EQ[2],...,EQ[p]のうち、不等式制約Cで用いられている変数のみに関する等式制約を選び、新しい等式制約のリストEQ’[1],EQ’[2],...,EQ’[q]を生成する(ステップS601)。
ステップS601の処理を具体的に説明する。不等式制約として「x1+2*x2-5*x4+x6≦3」、等式制約としてEQ[1]=「x1+x2=x3」,EQ[2]=「x2+x4=1」,EQ[3]=「x1+x3=x5」およびEQ[4]=「x2+x4=x6」が入力として与えられたとする。
不等式制約Cは、変数x1,x2,x4,x6に関する。
等式制約EQ[1]は、変数x1,x2,x3に関する。等式制約EQ[2]は、変数x2,x4に関する。等式制約EQ[3]は、変数x1,x3,x5に関する。等式制約EQ[4]は、変数x2,x4,x6に関する。
したがって、ステップS601において、不等式制約変換部121は、等式制約EQ[2]と等式制約EQ[4]の等式制約のリストを出力する。
以上が具体的な入力が行われた場合のステップS601の処理の説明である。
次に、不等式制約変換部121は、ステップS601の処理で得られた等式制約のリストEQ’[1],EQ’[2],...,EQ’[q]を制約EQUIV(r1,...,rn,r)=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」と組み合わせ、制約EQUIV(r1,...,rn,r)を次のように更新する(ステップS602)。
EQUIV(r1,...,rn,r)=「EQ’[1],EQ’[2],...,EQ’[q]を満たすような全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」
以降は、図3のステップS304以降と同一の動作により、充足判定部13は、EQUIV(r1,...,rn,r)を満たすr1,r2,...,rn,rへの値の割り当て(d1,d2,...,dn,d)を求める。不等式制約変換部121は、不等式制約R[C][d1,...,dn,d]=d1*x1+...+dn*xn≦dを出力として返す。
以上が不等式制約変換部121の動作の説明である。
次に、前記の手続きにより不等式制約変換部121が返す不等式制約によって制約付き二値最適化問題OPTに含まれる元々の不等式制約Cが置き換えられることについて補足して説明する。
ステップS602において、等式制約EQ’[1],...,EQ’[q]を組み合わせて更新された後の制約EQUIV(r1,r2,...,rn,r)を考え、さらにこの制約を満たす値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約変換部121が不等式制約R[C][d1,...,dn,d]を構成したとする。
制約EQUIV(r1,r2,...,rn,r)の定義から、不等式制約R[C][d1,...,dn,d]は、「x1,x2,...,xnがEQ’[1],...,EQ’[q]を満たすときに限り」元々の不等式制約Cと等価になる。制約付き二値最適化問題OPTには等式制約EQ’[1],...,EQ’[q]が制約として含まれるので、OPTに含まれる不等式制約CをR[C][d1,...,dn,d]に変換しても、「OPTに含まれる制約全て」の充足域に変化はないことになる。
以上のことから、制約付き二値最適化問題に含まれる元々の不等式制約を、これを不等式制約変換部121に入力した際に返される不等式制約と変換しても、元々の制約付き二値最適化問題の最適解は変わらないことになる。
以上に説明したように、第3の実施形態の情報処理装置30は、第1の実施形態の情報処理装置10と同等の効果を持つが、不等式制約変換部12の代わりに不等式制約変換部121によって不等式制約を変換することで、以下に説明する2つの効果を得ることが可能である。
1つ目は、第3の実施形態の情報処理装置30は、より少ない係数サイズ、かつより少ない変数の不等式制約に変換できることがある、という効果である。
例えば、制約式5*x1+8*x2+5*x3≦9は、これと等価な最小係数サイズの不等式制約はx1+2*x2+x3≦2で、係数サイズが3なのに対し、等式制約「x1+x3=1」が成り立つという前提なら係数サイズ2のx2≦0に変換できる。
2つ目は、第3の実施形態の情報処理装置30は、より高速に不等式制約の変換が行えることがある、という点である。これは主に、前述した1つ目の効果より、図6における繰り返しステップS304~S306の繰り返し回数が減ることによる効果である。
実施形態4.
以下、本発明の第4の実施形態を、図面を参照して説明する。図7は、第4の実施形態の情報処理装置40の一例を示すブロック図である。第4の実施形態に係る情報処理装置40は、図7に記載の4つの処理ブロックを含む。すなわち、情報処理装置40は、制約変換部11、不等式制約変換部122、充足判定部13、および最適化部14を含む。
情報処理装置40は、情報処理装置10と大部分が共通している。しかし、情報処理装置40には、不等式制約変換部12の代わりに動作の異なる不等式制約変換部122が接続されている。
第4の実施形態の情報処理装置40の動作を説明する。第4の実施形態の情報処理装置40の構成は、以下に説明する2つの差異以外は情報処理装置10の構成と同じである。
1つ目の差異は、第4の実施形態の情報処理装置40が入力として受け取る制約付き二値最適化問題は、不等式制約の係数および定数項が全て整数であり、かつ変数に対する「ONE-HOT制約」を一つまたは複数含む、という点である。「ONE-HOT制約」とは、「変数x1,x2,...,xnのうち、ただ一つだけが1であり、その他は0である」ことを表現する制約のことであり、制約付き二値最適化問題に対しては以下のような等式制約として表される(ただし、2つ以上のONE-HOT制約に同時に含まれる変数はないものとする。)。
x1+x2+...+xn=1
2つ目の差異は、第4の実施形態の情報処理装置40は、不等式制約変換部12の代わりに不等式制約変換部122を用いて不等式制約を変換するという点である。またこのとき、制約変換部11は、不等式制約変換部122に対し、入力として変換対象の不等式制約だけでなく、制約付き二値最適化問題に含まれるONE-HOT制約全てからなるリストをも入力として受け取る。
次に、第4の実施形態の情報処理装置40における不等式制約変換部122の動作を説明する。図8は、不等式制約変換部122の動作を示したフローチャートである。
不等式制約変換部122は、前述の通り、制約変換部11から入力として不等式制約C「c1*x1+c2*x2+...+cn*xn≦c」と、ONE-HOT制約のリストとを受け取る。
不等式制約変換部122は、変数accumに0を、変数F[C]に不等式制約Cのコピーをそれぞれ初期値としてセットする(ステップS701)。
ステップS702では、不等式制約変換部122は、入力として受け取ったONE-HOT制約のリストから一つ選び、繰り返し処理を実行する。以下では選ばれたONE-HOT制約をxi1+xi2+xik=1とする。
不等式制約変換部122は、変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれているかをチェックする。変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれている場合、処理は、ステップS705に進む。変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれていない場合、処理は、ステップS703に戻る(ステップS704)。
不等式制約変換部122は、不等式制約F[C]に含まれる変数xi1,xi2,...,xikに関する項をci1*xi1,ci2*xi2,...,cik*xikとする。次に、不等式制約変換部122は、不等式制約F[C]に含まれるこれらの項に対し、係数にそれぞれ変数Δを加えて(ci1+Δ)*xi1,(ci2+Δ)*xi2,...,(cik+Δ)*xikに更新する。そして、不等式制約変換部122は、変数accumに1を加える(ステップS705)。
なお、上記の「係数を修正する」操作は、ONE-HOT制約xi1+xi2+xik=1が成り立つような全てのx1,...,xnへの値の割り当てに対する不等式制約F[C]の左辺の値が、ちょうどΔだけ大きくなるように左辺を変形することに相当する。
ステップS703において、未選択のONE-HOT制約がなくなった場合、処理は、ステップS706に進む。
ステップS706では、不等式制約変換部122は、不等式制約F[C]の右辺cにaccum*Δを加え、右辺をc+accum*Δに更新する(cおよびaccumは定数であるから、右辺には変数としてΔしか含まない)。
この右辺の調整の意味を以下に説明する。不等式制約変換部122は、ステップS705で左辺の項のうちいくつかを更新している。この更新操作を一回行うと、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、左辺の値が「ちょうどΔだけ」大きい値を取るようになる。
すると処理がステップS706に到達した時点では、不等式制約F[C]は元々の不等式制約Cの左辺より「(ステップS705の実行回数)×Δ」=「accum*Δ」の値だけ大きい値を取るようになっている。
そこで、右辺にaccum*Δを加えてやると、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、不等式制約F[C]の左辺・右辺の値が不等式制約Cの左辺・右辺の値に対し両方ともちょうどaccum*Δだけ大きい値を取るようになる。これは、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、元々の不等式制約Cが成り立つことと不等式制約F[C]が成り立つこととが同値となることを示している。
以上がステップS706の意味である。このステップ終了後、Δをどのような値に決めてもONE-HOT制約の下で不等式制約Cと不等式制約F[C]は等価となる。
次に、不等式制約変換部122は、不等式制約F[C]の係数サイズを最小にするようなΔの値を一つ求め、不等式制約F[C]中の各Δに前記の値を代入する(ステップS707)。
ステップS707では、例えばc_maxをc1,c2,...,cn,-c1,-c2,...,cnの最大値として、Δを-c_maxからc_maxまでのそれぞれの値としたときの係数サイズを実際に調べる方法などによって実装できるが、実装方法はこれに限られない。
次に、不等式制約変換部122は、変数bの値をb=1から順次b=2,3,...と増やしながら、ステップS708~ステップS711を繰り返し実行する(ステップS708)。
ステップS709では、不等式制約変換部122は、不等式制約F[C]の係数を、不等式制約F[C]の係数サイズがbになるよう「正規化」した不等式制約F’[C,b]を構成する。
前記不等式制約F[C]の正規化は、「係数を2で割って余りを切り捨てる」操作を係数サイズがb以下になるまで繰り返す方法や、係数の最大値が2b-1(または、最小値が-2b)となるように不等式制約全体に定数を掛けて適当な方法で整数への丸めを行うなどの方法で実装できるが、これらに限られない。
説明のため、F’[C,b]=「c’1*x1+c’2*x2+...+c’n*xn≦c’」とおく。
次に、不等式制約変換部12がステップS302およびステップS303で実施した手続きと同一の手続きにより、不等式制約変換部122は、n+1個の変数r1,r2,...,rn,rを新規に導入し、制約式R[C]および制約EQUIV(r1,...,rn,r)を作る。
ステップS710では、不等式制約変換部122は、制約EQUIV(r1,...,rn,r)を元に次の制約CHECK_res[C,b](r1,...,rn,r)を構築する。
CHECK_res[C,b](r1,...,rn,r)=「c’1-1≦r1≦c’1+1」かつ「-2b≦r1≦2b-1」かつ「c’2-1≦r2≦c’2+1」かつ「-2b≦r2≦2b-1」かつ...「c’n-1≦rn≦c’n+1」かつ「-2b≦rn≦2b-1」かつ「c’-1≦r≦c’+1」かつ「-2b≦r≦2b-1」かつ「EQUIV(r1,...,rn,r)が成り立つ」
ここで、制約CHECK_res[C,b](r1,...,rn,r)の意味を説明する。
制約CHECK_res[C,b](r1,...,rn,r)は、不等式制約変換部12がステップS305で構成していた制約CHECK[C,b](r1,...,rn,r)とほぼ同一の意味だが、変数riが満たすべき条件として「c’i-1,c’i,c’i+1」が追加されたものである。つまり、制約CHECK_res[C,b](r1,...,rn,r)は、制約CHECK[C,b](r1,...,rn,r)に比べて真に強い条件を変数r1,...,rn,rに課している。
したがって、制約CHECK_res[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が存在すれば、不等式制約Cと等価で係数サイズがb以下の不等式制約R[C][d1,...,dn,d]が得られたことになる。
以上が制約CHECK_res[C,b](r1,...,rn,r)の意味の説明である。
ステップS711では、不等式制約変換部122は、制約CHECK_res[C,b](r1,...,rn,r)を充足判定部13に入力する。充足判定部13の結果が「充足可能」の場合、処理は、ステップS712に進む。充足判定部13の結果が「充足不能」の場合、処理は、ステップS708に戻る。
ステップS712では、不等式制約変換部122は、充足判定部13から出力された値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約R[C][d1,...,dn,d]を構築し、結果を出力する。
以上が、第4の実施形態における不等式制約変換部122が、不等式制約をより係数サイズが小さい不等式制約に変換する動作の説明である。
以上に説明したように、第4の実施形態の情報処理装置40は、第1の実施形態の情報処理装置10と同様に入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変形した後で最適化部14による最適化を行う。その結果、第4の実施形態の情報処理装置40は、本来ハードウェアの制約から直接最適解を求めることができない最適化問題に対しても最適解を求めることができる。
一方、不等式制約変換部122は、入力された不等式制約に対する係数サイズ最小の不等式制約を必ずしも出力するとは限らない。しかし、係数を求めるために解くべき制約は不等式制約変換部12に比べ非常に強い制約である。そのため、充足判定部13による充足可能性のチェックは情報処理装置10の場合に比べて非常に高速に終了する。
以上のことから、第4の実施形態の情報処理装置40は、情報処理装置10と比べて短い時間で最適解を出力することができる。
なお、図4に示された問題変換部141と最適解算出部142とを含む最適化部14を、図5に示された第3の実施形態における最適化部14および図7に示された第4の実施形態における最適化部14に代えて使用することが可能である。
図10は、情報処理装置10を実現するためのハードウェア構成を例示する図である。情報処理装置10は、CPU1000、記憶装置1001、メモリ1002、および量子ビット回路1003を備える。
図1に示された情報処理装置10における最適化部14を除く各構成要素は、1つのハードウェア、または1つのソフトウェアで構成可能である。また、各構成要素は、複数のハードウェア、または、複数のソフトウェアでも構成可能である。また、各構成要素の一部をハードウェアで構成し、他部をソフトウェアで構成することもできる。
情報処理装置10における各構成要素が、CPU(Central Processing Unit )等のプロセッサやメモリ等を有するコンピュータで実現される場合には、例えば、図10に示すCPUを有するコンピュータで実現可能である。コンピュータは、CPU1000は、記憶装置1001に格納されたプログラムに従って処理(情報処理)を実行することによって、図1に示された情報処理装置10における各機能を実現する。すなわち、コンピュータは、図1に示された情報処理装置10における制約変換部11、不等式制約変換部12、充足判定部13の機能全て、および、最適化部14の機能の一部を実現する。CPU1000は、室温に置かれた半導体デバイスでもよく、数mKから数K程度の極低温に冷却された超電導回路であってもよい。
記憶装置1001は、例えば、非一時的なコンピュータ可読媒体(non-transitory computer readable medium )である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)のいずれかである。非一時的なコンピュータ可読媒体の具体例として、磁気記録媒体(例えば、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Compact Disc-Read Only Memory )、CD-R(Compact Disc-Recordable )、CD-R/W(Compact Disc-ReWritable )、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM )、フラッシュROM)がある。
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium )に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。
メモリ1002は、例えばRAM(Random Access Memory)で実現され、CPU1000が処理を実行するときに一時的にデータを格納する記憶手段である。メモリ1002に、記憶装置1001または一時的なコンピュータ可読媒体が保持するプログラムが転送され、CPU1000がメモリ1002内のプログラムに基づいて処理を実行するような形態も想定しうる。
量子ビット回路1003は、量子アニーリング中に、量子ビット回路の量子揺らぎと量子ビット間の結合の強さと磁場を制御する。例えば、上記の各実施形態における情報処理装置10(特に、最適化部14)は、量子ビット回路1003を含むアニーリングマシンで実現可能である。また、最適化部14を実現するためのアニーリングマシンは、量子ビット回路1003を利用する以外にもCMOS(Complementary Metal Oxide Semiconductor )やFPGA(Field Programmable Gate Array )を利用することによっても構築することができる。
図11は、情報処理装置の主要部を示すブロック図である。情報処理装置800は、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理装置であって、線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換部801(実施形態では、制約変換部11で実現される。)と、制約変換部801によって変換された線形不等式を含む制約に基づいて、二値最適化問題の最適解を算出する最適化部802(実施形態では、最適化部14で実現される。)とを含む。