(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】情報処理装置、情報処理方法、および情報処理プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20241016BHJP
G06N 10/00 20220101ALI20241016BHJP
G06F 17/10 20060101ALI20241016BHJP
【FI】
G06N99/00 180
G06N10/00
G06F17/10 Z
(21)【出願番号】P 2020151287
(22)【出願日】2020-09-09
【審査請求日】2023-08-03
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】桑原 拓也
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-179364(JP,A)
【文献】国際公開第2019/224954(WO,A1)
【文献】特表2007-509437(JP,A)
【文献】米国特許第08020125(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06N 10/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、前記二値最適化問題の最適解を出力する情報処理装置であって、
入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、前記線形不等式の係数サイズを変換する不等式制約変換部と、
前記線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換部と、
前記制約変換部によって変換された前記線形不等式を含む制約に基づいて、前記二値最適化問題の最適解を算出する最適化部と
を備える情報処理装置。
【請求項2】
前記二値最適化問題は、等式制約を含み、
前記不等式制約変換部は、入力された等式制約を全て満たすように線形不等式制約を変換する
請求項
1記載の情報処理装置。
【請求項3】
前記二値最適化問題は、複数のブーリアン変数のうちただ1つに1が割り当てられなければならない等式制約を含み、
前記不等式制約変換部は、前記等式制約を用いた式変形により前記不等式制約を変換する
請求項
1又は
2記載の情報処理装置。
【請求項4】
前記最適化部は、前記二値最適化問題を、二次制約なし二値最適化問題に変換する問題変換部と、
前記問題変換部が変換した前記二次制約なし二値最適化問題の最適解を求める最適解算出部とを備える
請求項1から請求項
3のうちのいずれか1項に記載の情報処理装置。
【請求項5】
少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、前記二値最適化問題の最適解を出力する情報処理方法であって、
コンピュータが、入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、前記線形不等式の係数サイズを変換し、
前記コンピュータが、前記線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換し、
前記コンピュータが、変換された前記線形不等式を含む制約に基づいて、前記二値最適化問題の最適解を算出する
ことを特徴とする情報処理方法。
【請求項6】
前記二値最適化問題は、等式制約を含み、
前記コンピュータが、入力された等式制約を全て満たすように線形不等式制約を変換する
請求項
5記載の情報処理方法。
【請求項7】
少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、前記二値最適化問題の最適解を出力する情報処理プログラムであって、
コンピュータに、
入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、前記線形不等式の係数サイズを変換する不等式制約変換処理と、
前記線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換処理と、
前記制約変換処理によって変換された前記線形不等式を含む制約に基づいて、前記二値最適化問題の最適解を算出する最適化処理と
を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【0002】
組合せ最適化技術は、汎用的な技術であり、実世界における様々な分野で利用される。例えば、組合せ最適化技術は、配送コストの最小化、効率的なネットワーク構築、タスクスケジューリングや人的リソース・計算リソースの最適配置など、多種多様な産業に応用されている。
【0003】
ビッグデータを解析し実世界に向けて「対処」するためには、組合せ最適化問題を高速且つ高精度に求解することが重要である。
【0004】
組合せ最適化問題の一つに、ブーリアン変数(値として0または1を取るような変数)上の制約および目的関数によって定義される組合せ最適化問題がある。このような組合せ最適化問題は、「制約付き二値最適化問題」(または、「0-1最適化問題」、「擬似ブール最適化問題」など)と呼ばれる。
【0005】
本願で取り扱う「制約付き二値最適化問題」について、具体的な問題例を示して説明する。以下の数式OPT.1は、制約付き二値最適化問題の一例である。
【0006】
(OPT.1)
[目的関数]
x1+2*x2+3*x3+2*x4 ・・・(1)
[制約]
x1+x2+2*x3=2 ・・・(2)
x1+x3≦1 ・・・(3)
3*x1+2*x2+3*x3+x4≧4 ・・・(4)
【0007】
数式OPT.1は、1個の目的関数(1)と3個の制約(2),(3),(4)とからなり、変数としてx1,x2,x3,x4の4個を含んでいる制約付き二値最適化問題である。
【0008】
変数x1,x2,x3,x4は、ブーリアン変数であり、値として0または1を取る。
【0009】
制約(2),(3),(4)は、制約付き二値最適化問題で各変数が満たすべき制約を表している。ここで*は乗算、+は加算を表し、=,≦,≧は値の大小関係を表す。すなわち、制約(2)は、x1+x2+2*x3の値が2に等しいことを要請している。制約(3)は、x1+x3の値が1以下であることを要請している。制約(4)は、3*x1+2*x2+3*x3+x4の値が4以上であることを要請している。
【0010】
数式OPT.1に含まれる制約のうち、制約(3)と制約(4)を線形不等式制約と呼ぶ。すなわち、線形不等式制約は、「(定数)*(変数)」の和である左辺と、定数項である右辺を「≧」あるいは「≦」で比較する形式で表現する制約である。
【0011】
また、制約Cを満たすような変数への値の割り当て全てからなる集合を制約Cの「充足域」という。例えば、制約(2)の充足域は、(x1,x2,x3,x4)={(1,1,0,0),(1,1,0,1),(0,0,1,0),(0,0,1,1)}となる。
【0012】
ここで、充足域が等しいならば、制約は、表現が異なっていても同じ意味を有する制約となるという点に留意する。例えば、制約(2)は「x1+5*x2+6*x3=6・・・(2’)」と全く同じ充足域を有するので、制約(2)の代わりに制約(2’)が制約として入っていても数式OPT.1の解は全く変わらない。以下では、充足域が同じ2つの不等式制約のことを「等価である」と表現する。
【0013】
目的関数(1)は、制約付き二値最適化問題OPT.1で最適化する対象を示している。すなわち、数式OPT.1は、制約(2),(3),(4)を全て満たすような変数x1,x2,x3,x4への値の割り当てであって、数式OPT.1が最も小さい値となるものを発見する問題として定義される。
【0014】
数式OPT.1においては、制約(2),(3),(4)を満たすx1,x2,x3,x4の値の割り当ては(x1,x2,x3,x4)={(1,1,0,0),(1,1,0,1),(0,0,1,1)}の3通りしかない。このうち、(x1,x2,x3,x4)=(1,1,0,0)のとき、目的関数(1)の値が最も小さくなり、値は3である。前記の割り当て(x1,x2,x3,x4)=(1,1,0,0)および目的関数の値の最小値3が数式OPT.1の最適解である。
【0015】
以上が、制約付き二値最適化問題の具体例による説明である。
【0016】
従来のいわゆるノイマン型コンピュータと呼ばれる汎用計算機による計算では、いくつかの組合せ最適化問題において最適解を算出するまでに非常に長い時間を要することが知られている。制約付き二値最適化問題もその一つである。
【0017】
そこで、ノイマン型コンピュータとは別の動作原理を持つ装置によって、組合せ最適化問題をより効率的に解こうとする試みが行われている。以下ではそのような装置を単に「最適化特化装置」と呼ぶ。
【0018】
最適化特化装置の一例として、「焼き鈍し(アニーリング)」と呼ばれる自然現象を利用したアニーリングマシンがある。これはアニーリング現象、すなわち高いエネルギー水準を持つ状態がより低いエネルギー水準を持つ別の状態(安定状態と呼ぶ)へと十分な時間をかけて遷移する自然現象のプロセスを、人工的にハードウェア上で再現し利用する装置である。
【0019】
直接的にはアニーリングマシンは、「入力した物理モデルの安定状態はどうなっているか」を計算する装置でしかない。しかし、一部の組合せ最適化問題は、アニーリングマシンで解ける問題の入力にマッピングすることが可能であり、アニーリングマシンの結果を元に元々の問題の解を得ることができる。上記の手段により、一部の組合せ最適化問題は、汎用ノイマン型コンピュータより効率的に最適解を求めることが可能である。
【先行技術文献】
【特許文献】
【0020】
【非特許文献】
【0021】
【文献】Michael Booth et al., Partitioning Optimization Problems for Hybrid Classical/Quantum Execution, D-Wave Technical Report Series, 2017年1月
【文献】Andrew Lucas., Ising formulations of many NP problems, Frontiers in Physics, vol. 2, 2014年12月
【文献】Kotaro Tanahashi et al., Application of Ising Machines and a Software Development for Ising Machines, Journal of the Physical Society of Japan, vol 88, 2019年5月
【発明の概要】
【発明が解決しようとする課題】
【0022】
以下、本発明により解決される課題を説明する。
【0023】
アニーリングマシンに代表される、自然現象を直接利用するような装置は、一般に制御が困難である。そのため、ハードウェア上で再現できる自然現象の規模には技術的な限界により厳しい制限がかかる。また、同様の理由から、最適化特化装置が扱える問題の大きさは、ノイマン型コンピュータに比べより強く制約される傾向にある。
【0024】
前記の制約は、入力可能な問題のサイズを制限するだけでなく、問題に関連するパラメータまで制限してしまうことがある。以下、制限について説明する。
【0025】
まず、問題に関連するパラメータに関する制限について、実際の問題例を元に具体的に説明する。
【0026】
以下はブーリアン変数に係る3つの制約C1,C2,C3である。
【0027】
(C1)=「x1+2*x2+x3≦2」
【0028】
(C2)=「x1+x2+x3+...+x100≦30」
【0029】
(C3)=「112345*x1+113579*x2+112345*x3≦225000」
【0030】
制約C1は、3個の変数x1,x2,x3からなる非常に単純な制約の一例であり、問題の表現も簡潔である。入力の制限が強くとも、このような制約であれば問題なく入力することができる。
【0031】
一方、制約C2は、100個もの変数x1,x2,...,x100からなる。制約C2は、制約C1よりサイズの大きな制約である。このような制約は、例えば扱えるブーリアン変数が50個以下に制限されているアニーリングマシンには入力することができない。
【0032】
最後の制約C3は、制約C1と同じく3個の変数からなる制約であり、制約C1と同じく制約としては単純なものである。
【0033】
しかし、制約C3は、制約C1に比べて出現する定数が非常に大きい。制約C1の最大の定数は2であるのに対し、制約C3では225000である。十進数としての表現を比較しても分かる通り、より大きい係数を含む問題は、その表現もより大きいデータ領域を必要とする。したがって、最適化特化装置に入力可能なデータのサイズに技術的な上限がある場合、このような制約も入力できない。
【0034】
以上が、問題に関連するパラメータに関する制限についての説明である。
【0035】
次に「最適化特化装置に入力可能な問題に関する制約」について、具体例を元に説明する。ここでは、具体的な最適化特化装置としてアニーリングマシンを選択したケースについて記述する。
【0036】
アニーリングマシンの場合、前記の入力可能なデータのサイズの制約には、「(変数間相互作用の)階調」という概念が関わる。
【0037】
直観的には、不等式制約における係数の大きさは、それが係る変数が「他の変数に比べて」どれだけの影響力を持つかを示す。例えば、制約C1においては、変数x2の係数は、変数x1の係数の2倍であり、変数x2のもたらす影響が変数x1に比べて2倍大きいことを示している。
【0038】
不等式制約をアニーリングマシンにマッピングする方法はいくつかあるものの、少なくとも前述したような「変数間の影響の大きさ」は、アニーリングマシンのハードウェア上においても再現される必要がある。
【0039】
アニーリングマシンにおける変数間の影響の大小は、「各変数同士がどのような強さで相互作用するか」という設定項目によって表現する。ここで設定できる値は離散的なものであり、ハードウェアによって「-2,-1,0,1」の4段階、「0,1」の2段階、「-256~255」の512段階など様々に異なっている。ハードウェアで設定できる段階の数を「階調」と呼ぶ。
【0040】
すなわち、ハードウェア固有の「階調」の数が、扱うことのできる不等式制約の係数(の絶対値)の大きさを制限する。
【0041】
実際、階調の値はハードウェアによっては非常に小さいものである。例えば特許文献1には、-1,0,1の3階調を持つ装置が記載されている。このようなハードウェアに対しては、入力可能な問題は極めて制限されてしまう。
【0042】
以上が、「最適化特化装置に入力可能な問題に関する制約」についての具体的な説明である。
【0043】
ここまでの説明をまとめると、最適化特化装置には入力可能な不等式制約の係数に制約があり、その制約はハードウェア固有の値(アニーリングマシンの場合、「階調」の値)に依存して決まる。
【0044】
本発明の課題は、前記「最適化特化装置に固有の、係数の制約」を越えた問題であっても同じ最適化特化装置で扱えるようにすることである。
【0045】
なお、最適化特化装置Mに入力不可能な制約を含む問題を最適化特化装置Mで解くために、近似した問題を入力する方法が存在する。
【0046】
例えば最適化特化装置Mでは、不等式制約の係数として-128~127の256個の値しか取れないとする。このような状況では不等式制約C3は「直接扱えない」不等式制約の一例となるが、各係数に128/225000を掛けて四捨五入することで入力可能な不等式制約C3’を得られる。
【0047】
C3’=「63*x1+64*x2+63*x3≦127」
【0048】
この方法により制約C3に類似の制約を入力することが可能になるが、例えば変数への値の割り当て(x1,x2,x3)=(1,1,0)は、制約C3を満たすが制約C3’を満たさない。したがって、そもそもこれらの不等式制約は充足域の異なる全く別の制約であり、このような「近似」を行う手法では本発明の課題を解決することはできない。
【課題を解決するための手段】
【0049】
本発明の一態様において、情報処理装置は、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理装置であって、入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、線形不等式の係数サイズを変換する不等式制約変換部と、線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換部と、制約変換部によって変換された線形不等式を含む制約に基づいて、二値最適化問題の最適解を算出する最適化部とを含む。
【0050】
本発明の一態様において、情報処理方法は、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理方法であって、コンピュータが、入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、線形不等式の係数サイズを変換し、コンピュータが、線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換し、コンピュータが、変換された線形不等式を含む制約に基づいて、二値最適化問題の最適解を算出する。
【0051】
本発明の一態様において、情報処理プログラムは、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理プログラムであって、コンピュータに、入力された線形不等式制約を満たす変数の値の割り当てが変化しないように、線形不等式の係数サイズを変換する不等式制約変換処理と、線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換処理と、制約変換処理によって変換された線形不等式を含む制約に基づいて、二値最適化問題の最適解を算出する最適化処理とを実行させる。
【発明の効果】
【0052】
本発明によれば、最適化特化装置に固有の制約を越えた問題であっても同じ最適化特化装置で扱うことができる。
【図面の簡単な説明】
【0053】
【
図1】第1の実施形態の情報処理装置の一例を示すブロック図である。
【
図2】第1の実施形態の情報処理装置の動作の一例を示すフローチャートである。
【
図3】第1の実施形態の不等式制約変換部の動作の一例を示すフローチャートである。
【
図4】第2の実施形態の情報処理装置の一例を示すブロック図である。
【
図5】第3の実施形態の情報処理装置の一例を示すブロック図である。
【
図6】第3の実施形態の不等式制約変換部の動作の一例を示すフローチャートである。
【
図7】第4の実施形態の情報処理装置の一例を示すブロック図である。
【
図8】第4の実施形態の不等式制約変換部の動作の一例を示すフローチャートである。
【
図9】第4の実施形態の不等式制約変換部の動作の一例を示すフローチャートである。
【
図10】CPUを有するコンピュータの一例を示すブロック図である。
【
図11】情報処理装置の主要部を示すブロック図である。
【発明を実施するための形態】
【0054】
実施形態1.
以下、本発明の第1の実施形態を、図面を参照して説明する。
図1は、第1の実施形態の情報処理装置10の一例を示すブロック図である。第1の実施形態に係る情報処理装置10は、
図1に記載の4つの処理ブロックを含む。すなわち、情報処理装置10は、制約変換部11、不等式制約変換部12、充足判定部13、および最適化部14を含む。
【0055】
制約変換部11は、入力として線形不等式で表される線形不等式制約を含む制約付き二値最適化問題を受け取り、入力に含まれる線形不等式制約を、より少ないデータサイズで表現可能な別の等価な線形不等式制約に変換した制約付き二値最適化問題を出力する。
【0056】
不等式制約変換部12は、入力として線形不等式制約を受け取り、より少ないデータサイズで表現可能な係数のみからなる別の等価な線形不等式制約を出力する。
【0057】
充足判定部13は、入力として不等式制約変換部12から制約式を受け取り、これを充足するような変数への値の割り当てがあるならば「充足可能」と判定し、その値の組合せを出力する。充足判定部13は、そのような値の組合せがなければ「充足不能」と判定する。
【0058】
最適化部14は、制約変換部11が変換した線形不等式を含む制約付き二値最適化問題を受け取り、その解を求めて出力する。
【0059】
以下、本発明における不等式制約の「係数のデータサイズ」について、より詳細な定義を説明する。以下では係数および定数項の値を整数として議論するが、小数の場合でも、両辺に適当な定数を掛けることで整数と同じ扱いにできる(例えば、0.4*x1+0.3*x2≦1.0という不等式制約は、両辺を10倍すれば4*x1+3*x2≦10という整数係数の不等式制約に変換できる。)。
【0060】
不等式制約としては「制約(1)左辺≦右辺」,「制約(2)左辺≧右辺」,「制約(3)左辺<右辺」,「制約(4)左辺>右辺」の4通りのタイプが考えられる。しかし、制約(2),(4)は両辺に-1を掛けることで、制約(1),(3)のタイプにそれぞれ変換できる。
【0061】
また、制約(3)のタイプの不等式制約も制約(1)のタイプに変換することができる。このことを説明するために、次の制約(3)のタイプの不等式制約C.T3を考える。
【0062】
C.T3=「c1*x1+c2*x2+...+cn*xn<c」
【0063】
このC.T3の「<」部分を「≦」に置き換えた次の不等式制約C.T1を考える。
【0064】
C.T1=「c1*x1+c2*x2+...+cn*xn≦c」
【0065】
不等式制約C.T1の充足域は、不等式制約C.T3の充足域に等式制約「c1*x1+c2*c2+...+cn*xn=c」を加えたものである。ここで、不等式制約C.T1からこの等式制約の充足域のみを除去するように、1/2を右辺から差し引くことで次の不等式制約C.T1’を作る。なお、右辺から差し引いている値は1未満の値なので、この操作により充足域に含まれていた割り当てが充足域外に出たり、逆に充足域外の割り当てが充足域に入ってくることはない。
【0066】
C.T1’=c1*x1+c2*x2+...+cn*xn≦c-1/2
【0067】
不等式制約C.T1’は、不等式制約C.T3と同じ充足域を持つため、制約としては全く等しいが制約(1)のタイプの不等式制約が得られたことになる。さらに、この両辺を2倍することによって、以下に示す「不等式制約C.T3と等価、かつ制約タイプ(1)であるような」整数係数の不等式制約を得ることができる。
【0068】
2*c1*x1+2*c2*x2+...+2*cn*xn≦2*c-1
【0069】
以上の説明により、不等式制約は、全て制約(1)のタイプとして表現できる。したがって、次のように不等式制約の「係数サイズ」は定義できる。ある不等式制約「c1*x1+c2*x2+...+cn*xn≦c」の係数サイズとは、c1,c2,...,cnおよびcを全て表現するのに必要最小限のビット数のことである。なお、bビットで-2bから2b-1までの整数を表現できる。
【0070】
例えば、制約付き二値最適化問題OPT.1に含まれる不等式制約(4)は、定数項4の表現に3ビット必要なので、不等式制約(4)の係数サイズは3となる。
【0071】
次に、第1の実施形態の情報処理装置10が、制約付き二値最適化問題の解を算出する動作を
図2を用いて説明する。
【0072】
図2は、情報処理装置10が、入力された制約付き二値最適化問題の解を算出するフローチャートである。
【0073】
最初に、情報処理装置10における入出力装置(図示せず)を介して、制約付き二値最適化問題が制約変換部11に入力される(ステップS201)。
【0074】
次に、制約変換部11は、入力された制約付き二値最適化問題に不等式制約Cがある場合に、各不等式制約Cを1つずつ不等式制約変換部12に入力する(ステップS202)。
【0075】
不等式制約変換部12は、入力された不等式制約Cと等価な、係数サイズが小さい不等式制約R[C]を制約変換部11に返す(ステップS203)。
【0076】
制約変換部11は、元々の不等式制約Cを不等式制約変換部12によって変換された不等式制約R[C]に変換する(ステップS204)。
【0077】
制約変換部11は、全ての不等式制約の変換が終わった時点で制約付き二値最適化問題を最適化部14に入力する(ステップS205)。
【0078】
最適化部14は、入力された制約付き二値最適化問題の最適解を求め、元々の問題の最適解として出力する(ステップS206)。
【0079】
以上が情報処理装置10の動作の説明である。
【0080】
次に、第1の実施形態の不等式制約変換部12が、不等式制約をより係数サイズの小さい不等式制約に変換する動作を
図3を用いて説明する。
【0081】
図3は、不等式制約変換部12が入力された不等式制約をより係数サイズの小さい不等式制約に変換するフローチャートである。
【0082】
最初に、不等式制約変換部12は、制約変換部11から入力として不等式制約C=「c1*x1+c2*x2+...+cn*xn≦c」を受け取る。x1,...,xnは、変数であり、c1,...,cn,cは定数(具体的な数値)である。
【0083】
次に、不等式制約変換部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)。
【0084】
次に、不等式制約変換部12は、不等式制約Cと制約式R[C]とを組み合わせることで、変数r1,...,rn,rに関する以下の制約EQUIV(r1,...,rn,r)を構成する(ステップS302)。
【0085】
EQUIV(r1,...,rn,r)=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」
【0086】
ここで、変数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]との間の関係を表すものと解釈できる。
【0087】
EQUIV[d1,...,dn,d]=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『不等式制約R[C][d1,...,dn,d]が成り立つ』」
【0088】
すなわち、命題EQUIV[d1,...,dn,d]が成り立つことは、「あるx1,...,xnへの割り当てが、不等式制約Cを満たすこととと、不等式制約R[C][d1,...,dn,d]を満たすこととは同値である」こと、すなわちこれら2つの不等式制約の充足域が等しいことを示している。したがって、命題EQUIV[d1,...,dn,d]が成り立つとき、不等式制約Cと不等式制約R[C][d1,...,dn,d]とは等価となる。
【0089】
以上が値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が制約EQUIV(r1,...,rn,r)を満たすことの意味の説明である。
【0090】
以上のことから、制約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への値の割り当てを計算する手続きを実施する。
【0091】
次に、不等式制約変換部12は、変数bの値をb=1から順次b=2,3,...と増やしながら、ステップS305およびステップS306を繰り返し実行する(ステップS304)。
【0092】
ステップS305では、不等式制約変換部12は、制約EQUIV(r1,...,rn,r)を元に次の制約CHECK[C,b](r1,...,rn,r)を構築する。
【0093】
CHECK[C,b](r1,...,rn,r)=「r1,...,rn,rが全てbビットで表現可能」かつ「EQUIV(r1,...,rn,r)が成り立つ」
【0094】
ここで、制約CHECK[C,b](r1,...,rn,r)の意味を説明する。
【0095】
制約CHECK[C,b](r1,...,rn,r)は、制約EQUIV(r1,...,rn,r)に加えて変数r1,...,rn,rが満たすべき条件として「全てbビット以下である」が追加されたものである。
【0096】
上述した制約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以下である」ことを意味する。
【0097】
すなわち、制約CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が存在すれば、不等式制約Cと等価で係数サイズがb以下の不等式制約R[C][d1,...,dn,d]が得られたことになる。
【0098】
逆に制約CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rへの値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)が存在しなければ、不等式制約Cと等価な係数サイズがb以下の不等式制約は存在しないことになる。
【0099】
以上が制約CHECK[C,b](r1,...,rn,r)の意味の説明である。
【0100】
ステップS306では、不等式制約変換部12は、制約CHECK[C,b](r1,...,rn,r)を充足判定部13に入力する。充足判定部13の結果が「充足可能」の場合、処理は、ステップS307に進む。充足判定部13の結果が「充足不能」の場合、処理は、ステップS304に戻る。
【0101】
ステップS307では、不等式制約変換部12は、充足判定部13から出力された値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約R[C][d1,...,dn,d]を構築し、結果を出力する。
【0102】
以上が、第1の実施形態の不等式制約変換部12が、不等式制約をより係数サイズの小さい不等式制約に変換する動作の説明である。
【0103】
以下、具体的な不等式制約の例を用いて第1の実施形態の不等式制約変換部12の具体的な動作を説明する。
【0104】
具体的な入力として不等式制約C3が与えられたときの動作を後述する。不等式制約C3は、以下のような不等式制約であり、その係数サイズは18である。
【0105】
C3=「112345*x1+113579*x2+112345*x3≦225000」
【0106】
これに対して、不等式制約変換部12は、ステップS302で4個の変数r1,r2,r3,rを用意し、次の制約式R[C3]を生成する。
【0107】
R[C3]=「r1*x1+r2*x2+r3*x3≦r」
【0108】
続いて、不等式制約変換部12は、ステップS303で次の制約EQUIV[C3](r1,r2,r3,r)を構成する。
【0109】
EQUIV[C3](r1,r2,r3,r)=「全てのx1,x2,x3への割り当てに対し、『C3が成り立つ』⇔『R[C3]が成り立つ』」。
【0110】
続いて、処理は、ステップS304から繰り返し手続きに入る。まず、不等式制約変換部12は、b=1として、次の制約CHECK[C3,1](r1,r2,r3,r)を充足判定部13に入力する。
【0111】
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-1または0」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
【0112】
CHECK[C3,1](r1,r2,r3,r)を満たすようなr1,r2,r3,rへの値の割り当ては存在しないため、充足判定部13は、「充足不能」を不等式制約変換部12に返す。
【0113】
次に、不等式制約変換部12は、b=2として、次の制約CHECK[C3,2](r1,r2,r3,r)を充足判定部13に入力する。
【0114】
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-2,-1,0,1のいずれか」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
【0115】
制約CHECK[C3,1](r1,r2,r3,r)を満たすようなr1,r2,r3,rへの値の割り当ては存在しないため、充足判定部13は、「充足不能」を不等式制約変換部12に返す。
【0116】
次に、不等式制約変換部12は、b=3として、次の制約CHECK[C3,3](r1,r2,r3,r)を充足判定部13に入力する。
【0117】
CHECK[C3,1](r1,r2,r3,r)=「r1,r2,r3,rがすべて-4以上、3以下の値」かつ「EQUIV[C3](r1,r2,r3,r)が成り立つ」
【0118】
CHECK[C3,1](r1,r2,r3,r)を満たすような値の割り当てとして(r1,r2,r3,r)=(1,2,1,2)が存在する。よって、充足判定部13は、「充足可能」と共に前記値の割り当てを不等式制約変換部12に返す。
【0119】
ステップS307において、不等式制約変換部12は、充足判定部13から返された値の割り当て(r1,r2,r3,r)=(1,2,1,2)を用い、不等式制約「x1+2*x2+x3≦2」を結果として制約変換部11に出力する。
【0120】
前記不等式制約の係数サイズの値は、3であり不等式制約C3の係数サイズの値である18に比べ小さくなっている。さらに、これら2つの不等式制約の充足域は、共に(x1,x2,x3)={(0,0,0),(1,0,0),(0,0,1),(0,1,0),(1,0,1)}であるので、等価な不等式制約である。
【0121】
以上が、具体的な不等式制約の例C3を用いた第1の実施形態の不等式制約変換部12の具体的な動作である。
【0122】
次に、充足判定部13の動作について説明する。上述の通り充足判定部13は、不等式制約変換部12から入力された制約式CHECK[C,b](r1,...,rn,r)を満たすような変数r1,...,rn,rに対する値の割り当てを求める。
【0123】
充足判定部13が整数型変数への値の割り当てを算出する方法は、特に限定されず、公知の方法でよい。以下では、公知の方法によって値の割り当てを算出する方法を具体的にいくつか示す。
【0124】
第一の方法として、制約式CHECK[C,b](r1,...,rn,r)を直接解くことのできる制約解決ソルバを利用する方法が考えられる。制約式CHECK[C,b](r1,...,rn,r)は、形式的には量化された整数型変数に対する制約式であるから、これを直接解くことのできる制約解決ソルバによって、変数r1,...,rn,rに対する値の割り当てを求めることができる。
【0125】
第二の方法として、制約式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)は、以下のような不等式制約の連言と等価になる。
【0126】
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」
【0127】
上記の形式化を通すことで、充足判定部13は、変数の量化に対応していない整数の不等式制約の連言を解くことができるソルバによって、変数r1,...,rn,rに対する値の割り当てを求めることができる。
【0128】
第三の方法として、上記の変数r1,r2,...,rn,rをブーリアン変数に分解し、全ての変数をブーリアン変数に変換する方法が考えられる。詳細は省略するが、定義から制約式CHECK[C,b](r1,...,rn,r)を満たすr1,...,rn,rの値は、必ずbビットで表わせる。そのため、充足判定部13は、変数riに対しb個のブーリアン変数を使うことでそのビット表現そのものをエンコードできる。
【0129】
例えば、変数riが4ビットで表現可能であると仮定したとき、充足判定部13は、変数riに対し4つのブーリアン変数ri[1],ri[2],ri[3],ri[4]を用意し、変数riを以下の項で置換することができる。
【0130】
ri[4]*8+ri[3]*4+ri[2]*2+ri[1]
【0131】
このように全てをブーリアン変数で表現してしまうことで、制約式CHECK[C,b](r1,...,rn,r)に含まれる変数は、(量化されたx1,...,xnも含めて)全てブーリアン変数となる。
【0132】
変数の全てがブーリアン変数であり、係数に数値を含むような問題は、SAT(satisfiability problem,充足可能性問題)に帰着させて解く方法が知られている。したがって、上記の変換を施した問題をさらにSATに帰着させることで、充足判定部13は、公知のSAT求解技術によって値の割り当てを求めることが可能である。
【0133】
以上が、充足判定部13が変数r1,...,rn,rに対する値の割り当てを求めるために使うことのできる、公知の方法を利用した手法の具体的な説明である。
【0134】
第1の実施形態の最適化部14は、入力として制約付き二値最適化問題を受け取り、最適化特化装置を用いて最適解を求め、出力する。
【0135】
第1の実施形態の最適化部14が、最適化特化装置を用いて制約付き二値最適化問題の最適解を求める方法は特に限定されず、公知の方法でよい。例えば、非特許文献3には、不等式制約付きの最適化問題を、最適化特化装置の一つであるイジングマシンを用いて解くための手法が記載されている。最適化部14の実装として、この手法を用いてもよい。
【0136】
以上に説明したように、第1の実施形態の情報処理装置10は、入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変換した後で最適化部14による最適化を行う。その結果、第1の実施形態の情報処理装置10は、本来ハードウェアの制約から直接最適解を求めることができない二値最適化問題に対しても最適解を求めることができる。
【0137】
実施形態2.
以下、本発明の第2の実施形態を、図面を参照して説明する。
図4は、第2の実施形態の情報処理装置20の一例を示すブロック図である。第2の実施形態に係る情報処理装置20は、
図4に記載の4つの処理ブロックを含む。すなわち、情報処理装置20は、制約変換部11、不等式制約変換部12、充足判定部13、および最適化部14を含む。
【0138】
情報処理装置20は、情報処理装置10と大部分が共通している。しかし、最適化部14は、問題変換部141と最適解算出部142との二つの装置から構成される。
【0139】
第2の実施形態の情報処理装置20の動作を説明する。第2の実施形態の情報処理装置20の構成は、問題変換部141と最適解算出部142との二つの装置から構成される最適化部14を用いて制約付き二値最適化問題の最適解を求めるという構成以外は情報処理装置10の構成と同じである。
【0140】
第2の実施形態の最適化部14の動作を説明する。第2の実施形態の最適化部14は、まず入力された制約付き二値最適化問題を問題変換部141に入力する。その後、最適化部14は、最適解算出部142を介して問題変換部141から返された出力を、数式OPTの最適解として出力する。
【0141】
問題変換部141は、入力された制約付き二値最適化問題を等価な二次制約なし二値最適化問題(Quadratic Unconstrained Binary Optimization ,QUBO)に変換し、最適解算出部142に入力する。さらに、最適化部14は、最適解算出部142から返された出力を受け取り、元々の制約付き二値最適化問題の解に変換した上で出力する。
【0142】
問題変換部141が制約付き二値最適化問題を二次制約なし二値最適化問題に変換する方法は、特に限定されず公知の方法でよい。以下に、制約付き二値最適化問題を二次制約なし二値最適化問題に変換する具体的な方法の例を、具体的な問題を変換する手順を例示することで説明する。この方法は非特許文献2において「整数重みナップサック問題(Knapsack with Integer Weight)」を二次制約なし二値最適化問題に変換する方法として紹介されている手法と類似のものである。
【0143】
なお、以下で説明する方法は、最適化問題が二次以下の項しか含まず、かつ制約式(等式・不等式)が線形のものである時に限って有効な手法である。
【0144】
以下の問題OPT.2が問題変換部141に入力されたとする。問題OPT.2は、目的関数OBJ、等式制約EQ、不等式制約IEQからなる。
【0145】
(OPT.2)
[目的関数]
x1+2*x2+3*x3 ・・・(OBJ)
[制約]
x1+x2=1 ・・・(EQ)
2*x1+2*x2+3*x3≦5 ・・・(IEQ)
【0146】
最初に、問題変換部141は、それぞれの制約式を「制約式が成り立つ⇔補助目的関数の値が最小」かつ「制約式が成り立たない⇔補助目的関数の値が1以上」が成り立つような「補助目的関数」に変換する。
【0147】
まず等式制約について述べる。等式制約EQを変形し「x1+x2-1=0」とすると、この式が成り立つことは左辺を二乗して得られる補助目的関数「(x1+x2-1)2」が最小値を取ることと同値である。また、制約式が成り立たないとき補助目的関数の値は1以上の値を取る。
【0148】
次に不等式制約について述べる。不等式制約IEQは、「2*x1+2*x2+3*x3の値が、0,1,2,3,4,5のいずれか」と言いかえられるので、新しいブーリアン変数c1,c2,c3,c4,c5,c6を導入することで、不等式制約IEQと等価な以下の等式制約が得られる。
【0149】
IEQ’=「2*x1+2*x2+3*x3-c1-c2-c3-c4-c5-c6=0」
【0150】
よって、これは等式制約EQと同様に補助目的関数「(2*x1+2*x2+3*x3-c1-c2-c3-c4-c5-c6)2」と同値である。また、制約式が成り立たないとき補助目的関数の値は1以上の値を取る。
【0151】
以上が、問題変換部141が制約式をそれぞれ目的関数に変換する方法の説明である。
【0152】
次に、問題変換部141が、元々の目的関数OBJも含め全ての目的関数を一つにまとめる方法を説明する。
【0153】
まず、制約を無視した場合の目的関数OBJの上限値を考えると、明らかに全ての変数が1に割り当てられた場合の6であることがわかる。
【0154】
そこで、元々の目的関数はそのまま、制約を変換することで生成された補助目的関数は「7」を掛けたものを、それぞれ足し合わせることで以下の二次制約なし二値最適化問題OPT-UCを得ることができる。
【0155】
(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
【0156】
結果得られた前記の二次制約なし二値最適化問題の目的関数を最小化する値の割り当ては、元々の最適化問題OPT.2の最適解を与える。このことを説明する。
【0157】
補助目的関数はその元となった制約式が満たされないときに1以上の値を取る。値の割り当て(x1,x2,x3)=(v1,v2,v3)が元々の制約式を全て満たす場合、二値最適化問題OPT-UCの値は6以下となる。逆に一つでも満たさない制約式がある場合、二値最適化問題OPT-UCの値は7以上の値を取る。よって、二値最適化問題OPT-UCの最小値を与えるような値の割り当ては、必ず問題OPT.2の持つ全ての制約を満たす。
【0158】
すなわち、二値最適化問題OPT-UCは、補助目的関数の値が0であるような値の割り当てのうち、元々の目的関数の値が最小となる値の割り当てで最小値を取ることになる。よって、二値最適化問題OPT-UCの最適解を与えるような値の割り当ては、問題OPT.2の最適解を与える。
【0159】
以上が、問題変換部141が制約付き二値最適化問題を二次制約なし二値最適化問題に変換する具体的な方法の例に関する説明である。
【0160】
また、問題変換部141が、最適解算出部142に返された解を元に元々の問題の最適解を構成する方法は、その直前のステップで採用した方法、すなわち制約付き二値最適化問題から二次制約なし二値最適化問題への変換方法に依存する。
【0161】
具体的には、問題変換部141が、問題OPT.2を二値最適化問題OPT-UCに変換して最適解算出部142に入力したとすると、例えば値の割り当て(x1,x2,x3,c1,c2,c3,c4,c5,c6)=(1,0,0,1,1,0,0,0,0)が得られる。
【0162】
前記のケースでは、元々の問題OPT.2の変数x1,x2,x3に対する値の割り当てが前記の割り当てに含まれるため、それを取り出すだけで問題OPT.2の解(x1,x2,x3)=(1,0,0)を構成できる。
【0163】
以上が、問題変換部141の動作の具体的な説明である。
【0164】
最適解算出部142が二次制約なし二値最適化問題の最適解を求める方法は、特に限定されず公知のものでよい。例えば、課題の説明において言及したアニーリングマシンの一種である量子アニーリングマシンによる手法が、非特許文献1に記載されている。当該手法によって、最適解算出部142は、入力された二次制約なし二値最適化問題の最適解を求めることができる。換言すれば、最適解算出部142として、上述した最適化特化装置を使用可能である。
【0165】
以上に説明したように、第2の実施形態の情報処理装置20は、入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変形した後で問題変換部141により二次制約なし二値最適化問題に変換する。
【0166】
その結果、第2の実施形態の情報処理装置20は、元々の制約付き二値最適化問題を直接問題変換部141によって二次制約なし二値最適化問題に変換するよりも、より係数サイズの小さい問題に変換することができる。すなわち、第2の実施形態の情報処理装置20は、本来ハードウェアの制約から直接最適解算出部142による最適解の計算ができない最適化問題に対しても、最適解を計算することができる。
【0167】
実施形態3.
以下、本発明の第3の実施形態を、図面を参照して説明する。
図5は、第3の実施形態の情報処理装置30の一例を示すブロック図である。第3の実施形態に係る情報処理装置30は、
図5に記載の4つの処理ブロックを含む。すなわち、情報処理装置30は、制約変換部11、不等式制約変換部121、充足判定部13、および最適化部14を含む。
【0168】
情報処理装置30は、情報処理装置10と大部分が共通しているが、不等式制約変換部12の代わりに動作の異なる不等式制約変換部121が接続されている。
【0169】
第3の実施形態の情報処理装置30の動作を説明する。第3の実施形態の情報処理装置30の構成は、不等式制約変換部12の代わりに不等式制約変換部121を用いて不等式制約を変換するという構成以外は、情報処理装置10の構成と同じである。
【0170】
ただし、後述するように第3の実施形態の情報処理装置30では、制約変換部11は不等式制約変換部121に入力として変換する不等式制約に加えて、制約付き二値最適化問題に含まれる全ての等式制約のリストを入力する。
【0171】
次に、第3の実施形態の情報処理装置30における不等式制約変換部121の動作を説明する。
図6は、不等式制約変換部121の動作を示したフローチャートである。
【0172】
不等式制約変換部121は、前述の通り、制約変換部11から入力として変換する不等式制約C=「c1*x1+c2*x2+...+cn*xn≦c」と、制約付き二値最適化問題に含まれる全ての等式制約のリストEQ[1],EQ[2],...,EQ[p]とを受け取る(ステップS301)。
【0173】
不等式制約変換部121は、不等式制約Cに対し
図3と同様のステップS302とステップS303とを実行することで、制約式EQUIV(r1,...,rn,r)を生成する。
【0174】
不等式制約変換部121は、等式制約のリストEQ[1],EQ[2],...,EQ[p]のうち、不等式制約Cで用いられている変数のみに関する等式制約を選び、新しい等式制約のリストEQ’[1],EQ’[2],...,EQ’[q]を生成する(ステップS601)。
【0175】
ステップ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」が入力として与えられたとする。
【0176】
不等式制約Cは、変数x1,x2,x4,x6に関する。
【0177】
等式制約EQ[1]は、変数x1,x2,x3に関する。等式制約EQ[2]は、変数x2,x4に関する。等式制約EQ[3]は、変数x1,x3,x5に関する。等式制約EQ[4]は、変数x2,x4,x6に関する。
【0178】
したがって、ステップS601において、不等式制約変換部121は、等式制約EQ[2]と等式制約EQ[4]の等式制約のリストを出力する。
【0179】
以上が具体的な入力が行われた場合のステップS601の処理の説明である。
【0180】
次に、不等式制約変換部121は、ステップS601の処理で得られた等式制約のリストEQ’[1],EQ’[2],...,EQ’[q]を制約EQUIV(r1,...,rn,r)=「全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」と組み合わせ、制約EQUIV(r1,...,rn,r)を次のように更新する(ステップS602)。
【0181】
EQUIV(r1,...,rn,r)=「EQ’[1],EQ’[2],...,EQ’[q]を満たすような全てのx1,x2,...,xnへの割り当てに対し、『不等式制約Cが成り立つ』⇔『制約式R[C]が成り立つ』」
【0182】
以降は、
図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を出力として返す。
【0183】
以上が不等式制約変換部121の動作の説明である。
【0184】
次に、前記の手続きにより不等式制約変換部121が返す不等式制約によって制約付き二値最適化問題OPTに含まれる元々の不等式制約Cが置き換えられることについて補足して説明する。
【0185】
ステップS602において、等式制約EQ’[1],...,EQ’[q]を組み合わせて更新された後の制約EQUIV(r1,r2,...,rn,r)を考え、さらにこの制約を満たす値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約変換部121が不等式制約R[C][d1,...,dn,d]を構成したとする。
【0186】
制約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に含まれる制約全て」の充足域に変化はないことになる。
【0187】
以上のことから、制約付き二値最適化問題に含まれる元々の不等式制約を、これを不等式制約変換部121に入力した際に返される不等式制約と変換しても、元々の制約付き二値最適化問題の最適解は変わらないことになる。
【0188】
以上に説明したように、第3の実施形態の情報処理装置30は、第1の実施形態の情報処理装置10と同等の効果を持つが、不等式制約変換部12の代わりに不等式制約変換部121によって不等式制約を変換することで、以下に説明する2つの効果を得ることが可能である。
【0189】
1つ目は、第3の実施形態の情報処理装置30は、より少ない係数サイズ、かつより少ない変数の不等式制約に変換できることがある、という効果である。
【0190】
例えば、制約式5*x1+8*x2+5*x3≦9は、これと等価な最小係数サイズの不等式制約はx1+2*x2+x3≦2で、係数サイズが3なのに対し、等式制約「x1+x3=1」が成り立つという前提なら係数サイズ2のx2≦0に変換できる。
【0191】
2つ目は、第3の実施形態の情報処理装置30は、より高速に不等式制約の変換が行えることがある、という点である。これは主に、前述した1つ目の効果より、
図6における繰り返しステップS304~S306の繰り返し回数が減ることによる効果である。
【0192】
実施形態4.
以下、本発明の第4の実施形態を、図面を参照して説明する。
図7は、第4の実施形態の情報処理装置40の一例を示すブロック図である。第4の実施形態に係る情報処理装置40は、
図7に記載の4つの処理ブロックを含む。すなわち、情報処理装置40は、制約変換部11、不等式制約変換部122、充足判定部13、および最適化部14を含む。
【0193】
情報処理装置40は、情報処理装置10と大部分が共通している。しかし、情報処理装置40には、不等式制約変換部12の代わりに動作の異なる不等式制約変換部122が接続されている。
【0194】
第4の実施形態の情報処理装置40の動作を説明する。第4の実施形態の情報処理装置40の構成は、以下に説明する2つの差異以外は情報処理装置10の構成と同じである。
【0195】
1つ目の差異は、第4の実施形態の情報処理装置40が入力として受け取る制約付き二値最適化問題は、不等式制約の係数および定数項が全て整数であり、かつ変数に対する「ONE-HOT制約」を一つまたは複数含む、という点である。「ONE-HOT制約」とは、「変数x1,x2,...,xnのうち、ただ一つだけが1であり、その他は0である」ことを表現する制約のことであり、制約付き二値最適化問題に対しては以下のような等式制約として表される(ただし、2つ以上のONE-HOT制約に同時に含まれる変数はないものとする。)。
【0196】
x1+x2+...+xn=1
【0197】
2つ目の差異は、第4の実施形態の情報処理装置40は、不等式制約変換部12の代わりに不等式制約変換部122を用いて不等式制約を変換するという点である。またこのとき、制約変換部11は、不等式制約変換部122に対し、入力として変換対象の不等式制約だけでなく、制約付き二値最適化問題に含まれるONE-HOT制約全てからなるリストをも入力として受け取る。
【0198】
次に、第4の実施形態の情報処理装置40における不等式制約変換部122の動作を説明する。
図8は、不等式制約変換部122の動作を示したフローチャートである。
【0199】
不等式制約変換部122は、前述の通り、制約変換部11から入力として不等式制約C「c1*x1+c2*x2+...+cn*xn≦c」と、ONE-HOT制約のリストとを受け取る。
【0200】
不等式制約変換部122は、変数accumに0を、変数F[C]に不等式制約Cのコピーをそれぞれ初期値としてセットする(ステップS701)。
【0201】
ステップS702では、不等式制約変換部122は、入力として受け取ったONE-HOT制約のリストから一つ選び、繰り返し処理を実行する。以下では選ばれたONE-HOT制約をxi1+xi2+xik=1とする。
【0202】
不等式制約変換部122は、変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれているかをチェックする。変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれている場合、処理は、ステップS705に進む。変数xi1,xi2,...,xikが、全て不等式制約F[C]の左辺に含まれていない場合、処理は、ステップS703に戻る(ステップS704)。
【0203】
不等式制約変換部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)。
【0204】
なお、上記の「係数を修正する」操作は、ONE-HOT制約xi1+xi2+xik=1が成り立つような全てのx1,...,xnへの値の割り当てに対する不等式制約F[C]の左辺の値が、ちょうどΔだけ大きくなるように左辺を変形することに相当する。
【0205】
ステップS703において、未選択のONE-HOT制約がなくなった場合、処理は、ステップS706に進む。
【0206】
ステップS706では、不等式制約変換部122は、不等式制約F[C]の右辺cにaccum*Δを加え、右辺をc+accum*Δに更新する(cおよびaccumは定数であるから、右辺には変数としてΔしか含まない)。
【0207】
この右辺の調整の意味を以下に説明する。不等式制約変換部122は、ステップS705で左辺の項のうちいくつかを更新している。この更新操作を一回行うと、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、左辺の値が「ちょうどΔだけ」大きい値を取るようになる。
【0208】
すると処理がステップS706に到達した時点では、不等式制約F[C]は元々の不等式制約Cの左辺より「(ステップS705の実行回数)×Δ」=「accum*Δ」の値だけ大きい値を取るようになっている。
【0209】
そこで、右辺にaccum*Δを加えてやると、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、不等式制約F[C]の左辺・右辺の値が不等式制約Cの左辺・右辺の値に対し両方ともちょうどaccum*Δだけ大きい値を取るようになる。これは、ONE-HOT制約を満たすような全てのx1,...,xnへの値の割り当てに対し、元々の不等式制約Cが成り立つことと不等式制約F[C]が成り立つこととが同値となることを示している。
【0210】
以上がステップS706の意味である。このステップ終了後、Δをどのような値に決めてもONE-HOT制約の下で不等式制約Cと不等式制約F[C]は等価となる。
【0211】
次に、不等式制約変換部122は、不等式制約F[C]の係数サイズを最小にするようなΔの値を一つ求め、不等式制約F[C]中の各Δに前記の値を代入する(ステップS707)。
【0212】
ステップS707では、例えばc_maxをc1,c2,...,cn,-c1,-c2,...,cnの最大値として、Δを-c_maxからc_maxまでのそれぞれの値としたときの係数サイズを実際に調べる方法などによって実装できるが、実装方法はこれに限られない。
【0213】
次に、不等式制約変換部122は、変数bの値をb=1から順次b=2,3,...と増やしながら、ステップS708~ステップS711を繰り返し実行する(ステップS708)。
【0214】
ステップS709では、不等式制約変換部122は、不等式制約F[C]の係数を、不等式制約F[C]の係数サイズがbになるよう「正規化」した不等式制約F’[C,b]を構成する。
【0215】
前記不等式制約F[C]の正規化は、「係数を2で割って余りを切り捨てる」操作を係数サイズがb以下になるまで繰り返す方法や、係数の最大値が2b-1(または、最小値が-2b)となるように不等式制約全体に定数を掛けて適当な方法で整数への丸めを行うなどの方法で実装できるが、これらに限られない。
【0216】
説明のため、F’[C,b]=「c’1*x1+c’2*x2+...+c’n*xn≦c’」とおく。
【0217】
次に、不等式制約変換部12がステップS302およびステップS303で実施した手続きと同一の手続きにより、不等式制約変換部122は、n+1個の変数r1,r2,...,rn,rを新規に導入し、制約式R[C]および制約EQUIV(r1,...,rn,r)を作る。
【0218】
ステップS710では、不等式制約変換部122は、制約EQUIV(r1,...,rn,r)を元に次の制約CHECK_res[C,b](r1,...,rn,r)を構築する。
【0219】
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)が成り立つ」
【0220】
ここで、制約CHECK_res[C,b](r1,...,rn,r)の意味を説明する。
【0221】
制約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に課している。
【0222】
したがって、制約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]が得られたことになる。
【0223】
以上が制約CHECK_res[C,b](r1,...,rn,r)の意味の説明である。
【0224】
ステップS711では、不等式制約変換部122は、制約CHECK_res[C,b](r1,...,rn,r)を充足判定部13に入力する。充足判定部13の結果が「充足可能」の場合、処理は、ステップS712に進む。充足判定部13の結果が「充足不能」の場合、処理は、ステップS708に戻る。
【0225】
ステップS712では、不等式制約変換部122は、充足判定部13から出力された値の割り当て(r1,r2,...,rn,r)=(d1,d2,...,dn,d)を元に不等式制約R[C][d1,...,dn,d]を構築し、結果を出力する。
【0226】
以上が、第4の実施形態における不等式制約変換部122が、不等式制約をより係数サイズが小さい不等式制約に変換する動作の説明である。
【0227】
以上に説明したように、第4の実施形態の情報処理装置40は、第1の実施形態の情報処理装置10と同様に入力された制約付き二値最適化問題を等価な、より係数サイズが小さい制約付き二値最適化問題に変形した後で最適化部14による最適化を行う。その結果、第4の実施形態の情報処理装置40は、本来ハードウェアの制約から直接最適解を求めることができない最適化問題に対しても最適解を求めることができる。
【0228】
一方、不等式制約変換部122は、入力された不等式制約に対する係数サイズ最小の不等式制約を必ずしも出力するとは限らない。しかし、係数を求めるために解くべき制約は不等式制約変換部12に比べ非常に強い制約である。そのため、充足判定部13による充足可能性のチェックは情報処理装置10の場合に比べて非常に高速に終了する。
【0229】
以上のことから、第4の実施形態の情報処理装置40は、情報処理装置10と比べて短い時間で最適解を出力することができる。
【0230】
なお、
図4に示された問題変換部141と最適解算出部142とを含む最適化部14を、
図5に示された第3の実施形態における最適化部14および
図7に示された第4の実施形態における最適化部14に代えて使用することが可能である。
【0231】
図10は、情報処理装置10を実現するためのハードウェア構成を例示する図である。情報処理装置10は、CPU1000、記憶装置1001、メモリ1002、および量子ビット回路1003を備える。
【0232】
図1に示された情報処理装置10における最適化部14を除く各構成要素は、1つのハードウェア、または1つのソフトウェアで構成可能である。また、各構成要素は、複数のハードウェア、または、複数のソフトウェアでも構成可能である。また、各構成要素の一部をハードウェアで構成し、他部をソフトウェアで構成することもできる。
【0233】
情報処理装置10における各構成要素が、CPU(Central Processing Unit )等のプロセッサやメモリ等を有するコンピュータで実現される場合には、例えば、
図10に示すCPUを有するコンピュータで実現可能である。コンピュータは、CPU1000は、記憶装置1001に格納されたプログラムに従って処理(情報処理)を実行することによって、
図1に示された情報処理装置10における各機能を実現する。すなわち、コンピュータは、
図1に示された情報処理装置10における制約変換部11、不等式制約変換部12、充足判定部13の機能全て、および、最適化部14の機能の一部を実現する。CPU1000は、室温に置かれた半導体デバイスでもよく、数mKから数K程度の極低温に冷却された超電導回路であってもよい。
【0234】
記憶装置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)がある。
【0235】
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium )に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。
【0236】
メモリ1002は、例えばRAM(Random Access Memory)で実現され、CPU1000が処理を実行するときに一時的にデータを格納する記憶手段である。メモリ1002に、記憶装置1001または一時的なコンピュータ可読媒体が保持するプログラムが転送され、CPU1000がメモリ1002内のプログラムに基づいて処理を実行するような形態も想定しうる。
【0237】
量子ビット回路1003は、量子アニーリング中に、量子ビット回路の量子揺らぎと量子ビット間の結合の強さと磁場を制御する。例えば、上記の各実施形態における情報処理装置10(特に、最適化部14)は、量子ビット回路1003を含むアニーリングマシンで実現可能である。また、最適化部14を実現するためのアニーリングマシンは、量子ビット回路1003を利用する以外にもCMOS(Complementary Metal Oxide Semiconductor )やFPGA(Field Programmable Gate Array )を利用することによっても構築することができる。
【0238】
図11は、情報処理装置の主要部を示すブロック図である。情報処理装置800は、少なくとも線形不等式で表される線形不等式制約を含む二値最適化問題が入力された際に、二値最適化問題の最適解を出力する情報処理装置であって、線形不等式の係数サイズよりも小さい係数サイズの線形不等式で表される制約に変換する制約変換部801(実施形態では、制約変換部11で実現される。)と、制約変換部801によって変換された線形不等式を含む制約に基づいて、二値最適化問題の最適解を算出する最適化部802(実施形態では、最適化部14で実現される。)とを含む。
【符号の説明】
【0239】
10,20,30,40 情報処理装置
11 制約変換部
12,121,122 不等式制約変換部
13 充足判定部
14 最適化部
141 問題変換部
142 最適解算出部
800 情報処理装置
801 制約変換部
802 最適化部
1000 CPU
1001 記憶装置
1002 メモリ
1003 量子ビット回路