(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】子問題生成装置および子問題生成方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20241001BHJP
G06N 10/60 20220101ALI20241001BHJP
G06Q 10/04 20230101ALI20241001BHJP
【FI】
G06N99/00 180
G06N10/60
G06Q10/04
(21)【出願番号】P 2023549196
(86)(22)【出願日】2021-09-21
(86)【国際出願番号】 JP2021034585
(87)【国際公開番号】W WO2023047462
(87)【国際公開日】2023-03-30
【審査請求日】2024-01-09
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】鷹野 芙美代
【審査官】多賀 実
(56)【参考文献】
【文献】特開2020-4384(JP,A)
【文献】特開2021-5282(JP,A)
【文献】国際公開第2021/059338(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/60
G06N 99/00
G06Q 10/04-10/047
(57)【特許請求の範囲】
【請求項1】
組合せ最適化問題の各スピンの中から、前記組合せ最適化問題の子問題に追加する1個のスピンを選択し、前記1個のスピンを前記子問題に追加する第1選択手段と、
前記子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、前記組を選択し、前記組に属していて前記子問題に追加されていない各スピンを選択し、前記各スピンを前記子問題に追加する第2選択手段とを備える
ことを特徴とする子問題生成装置。
【請求項2】
前記第1選択手段は、ランダムに、前記1個のスピンを選択する
請求項1に記載の子問題生成装置。
【請求項3】
前記第1選択手段は、
スピンの状態を反転させたときの前記最適化問題のエネルギー関数の増加量が最大であるスピンを、前記1個のスピンとして選択する
請求項1に記載の子問題生成装置。
【請求項4】
前記第1選択手段は、
制約が定められた組であって前記制約が満たされていない組に属するスピンを、前記1個のスピンとして選択する
請求項1に記載の子問題生成装置。
【請求項5】
制約の優先順位が予め定められていて、
前記第1選択手段は、
優先順位が最も高い制約が定められた組に属するスピンを、前記1個のスピンとして選択する
請求項1に記載の子問題生成装置。
【請求項6】
制約の優先順位が予め定められていて、
前記第2選択手段は、
前記子問題に含まれているいずれかのスピンが属している組であって、制約が定められた組が複数存在する場合に、その複数の組の中で、制約の優先順位が最も高い組を選択し、前記組に属していて前記子問題に追加されていない各スピンを選択し、前記各スピンを前記子問題に追加する
請求項1から請求項5のうちのいずれか1項に記載の子問題生成装置。
【請求項7】
コンピュータが、
組合せ最適化問題の各スピンの中から、前記組合せ最適化問題の子問題に追加する1個のスピンを選択し、前記1個のスピンを前記子問題に追加し、
前記子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、前記組を選択し、前記組に属していて前記子問題に追加されていない各スピンを選択し、前記各スピンを前記子問題に追加する
ことを特徴とする子問題生成方法。
【請求項8】
コンピュータに、
組合せ最適化問題の各スピンの中から、前記組合せ最適化問題の子問題に追加する1個のスピンを選択し、前記1個のスピンを前記子問題に追加する第1選択処理、および、
前記子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、前記組を選択し、前記組に属していて前記子問題に追加されていない各スピンを選択し、前記各スピンを前記子問題に追加する第2選択処理
を実行させるための子問題生成プログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組合せ最適化問題の子問題を生成する子問題生成装置、子問題生成方法および子問題生成プログラムに関する。
【背景技術】
【0002】
組合せ最適化問題を解く技術の研究が進められている。組合せ最適化問題の例として、巡回セールスマン問題、ナップサック問題、グラフ分割問題等が挙げられる。ただし、組合せ最適化問題は、これらの問題に限らない。
【0003】
イジングモデルは、個々のスピンによって磁性体の振る舞いを表す統計力学上のモデルであるが、組合せ最適化問題の求解にも適用可能である。イジングモデルでは、個々のスピンの状態は、“1”または“-1”で表される。
【0004】
また、個々のスピンの状態を“1”または“0”で表すモデルとして、QUBO(Quadratic Unconstrained Binary Optimization )も知られている。
【0005】
なお、イジングモデルにおける“1”やQUBOにおける“1”を第1の値と称することができる。そして、イジングモデルにおける“-1”やQUBOにおける“0”を第2の値と称することができる。
【0006】
イジングモデルにおけるエネルギー関数と、QUBOにおけるエネルギー関数とは、相互に変換可能である。
【0007】
一般に、組合せ最適化問題を解く場合、その組合せ最適化問題におけるエネルギーを表す式を、イジングモデルまたはQUBOのエネルギー関数に変換する。そして、そのエネルギー関数を用いて、例えば、シミュレーテッドアニーリングによって、組合せ最適化問題の解が求められる。組合せ最適化問題におけるエネルギーを表す式を、イジングモデルまたはQUBOのエネルギー関数に変換する方法は、公知である。
【0008】
イジングモデルのエネルギー関数は、以下の式(1)のように表される。
【0009】
【0010】
式(1)におけるsi,sjは、スピンの状態を表す変数である。この変数における添え字によってスピンが識別される。Jijは、i,jに応じた定数であり、hiは、iに応じた定数である。
【0011】
また、QUBOのエネルギー関数は、以下の式(2)のように表される。
【0012】
【0013】
式(2)におけるxi,xjは、スピンの状態を表す変数である。この変数における添え字によってスピンが識別される。Qijは、i,jに応じた定数である。
【0014】
また、組合せ最適化問題を解く際に、組合せ最適化問題の複数のスピンのうち、一部のスピンを選択することを、子問題を生成するという。そして、選択された一部のスピンを子問題という。
【0015】
子問題を生成しつつ組合せ最適化問題の解を求める方法の一例が、例えば、非特許文献1,2に記載されている。以下に、非特許文献2に記載されている求解方法の一例を示す。
図8は、非特許文献2に記載された求解方法の一例の概略を示すフローチャートである。以下、コンピュータが処理を行うものとして説明する。本例では、このコンピュータには、組合せ最適化問題に応じたQUBOのエネルギー関数が与えられているものとする。
【0016】
コンピュータは、組合せ最適化問題の暫定解を求める(ステップS101)。非特許文献2には、TABUサーチを用いて暫定解を求めることが記載されている。
【0017】
次に、コンピュータは、各スピンのimpact値に基づいて、降順にスピンをソートする(ステップS102)。impact値は、スピンの状態を反転させたときのエネルギー関数の増加量である。
【0018】
次に、コンピュータは、ソート後の上位5~15%のスピンを選択し、そのスピンを子問題とする(ステップS103)。
【0019】
そして、コンピュータは、子問題の解を求める(ステップS104)。子問題の解を求める場合には、子問題に含まれないスピンの状態を暫定解の状態で固定し、子問題に含まれる各スピンの状態を、例えば、シミュレーテッドアニーリングで求めればよい。
【0020】
次に、コンピュータは、子問題の解を用いて暫定解を更新し、再度、例えば、TABUサーチで暫定解を求める(ステップS105)。
【0021】
コンピュータは、終了条件が満たされたか否かを判定する(ステップS106)。終了条件が満たされたならば(ステップS106のYes)、処理を終了する。終了条件が満たされていなければ(ステップS106のNo)、ステップS102以降の処理を繰り返す。
【0022】
上記の例では、暫定解が求められた状態で、子問題が生成され、その子問題の解が求められている。
【先行技術文献】
【非特許文献】
【0023】
【文献】Michael Booth, Steven P. Reinhardt, and Aidan Roy, “Partitioning Optimization Problems for Hybrid Classical/Quantum Execution”, D-Wave Technical Report Series, 2017年1月9日
【文献】“Qbsolvの問題分割アルゴリズム調査”、[online]、2019年1月7日、[2021年7月16日検索]、インターネット<URL :https://quantum.fixstars.com/techresources/research/qbsolv/>
【発明の概要】
【発明が解決しようとする課題】
【0024】
組合せ最適化問題において、スピンの組、および、各組が満たすべき制約が予め定められる場合がある。この場合、スピンの組は、例えば、複数定められ、各組に対して制約が定められる。
【0025】
スピンの組に対して定められる制約の種々の例を説明する。以下、QUBOを例に説明する。
【0026】
(1)スピンの組に対する制約の例として、組に属する複数のスピンのうち、1つのスピンのみを“1”とし、その組に属する他の全てのスピンを“0”とするという制約が挙げられる。以下、この制約を「第1の制約」と記す。第1の制約は、one-hot制約と称されることもある
【0027】
(2)スピンの組に対する制約の他の例として、組に属する複数のスピンのうち、少なくとも1つのスピンを“0”とするという制約が挙げられる。以下、この制約を「第2の制約」と記す。
【0028】
(3)スピンの組に対する制約の他の例として、組に属する複数のスピンのうち、少なくとも1つのスピンを“1”とするという制約が挙げられる。以下、この制約を「第3の制約」と記す。
【0029】
制約は、例示した上記の制約のみに限定されるわけではない。
【0030】
前述の非特許文献2に記載された求解方法では、impact値の大きい順に上位5~15%のスピンを選択し、選択したスピンを子問題としている。この子問題の生成方法では、制約が定められた組に属するスピンが、子問題に含まれるスピンと、子問題に含まれないスピンとに分かれてしまうことが生じ得る。例えば、スピンx1,x2,x3,x4の組に対して予め制約が定められていたとしても、スピンx3,x4のみが子問題に含まれ、スピンx1,x2が子問題に含まれない場合が生じ得る。すると、子問題の解を求める際に、解の探索範囲が狭まってしまう。
【0031】
図9は、解の探索範囲が狭まる場合の一例を示す模式図である。
図9において、括弧内に示した値は、暫定解の値である。この点は、後述の
図10においても同様である。
図9に示す例では、スピンx
1,x
2の組に前述の第2の制約が定められているとする。そして、スピンx
2,x
3,x
4等は子問題として選択されたが、スピンx
1は、子問題に含まれないとする。子問題の解を求める場合、子問題に含まれないスピンの状態は、暫定解の状態に固定される。すなわち、x
1の値は1に固定される。従って、
図9に例示する場合には、{x
1=0,x
2=0}という場合や、{x
1=0,x
2=1}という場合は、子問題の解を求める際に探索されず、探索範囲が狭まることになる。
【0032】
図10は、解の探索範囲が狭まる場合の他の例を示す模式図である。
図10に示す例では、スピンx
1,x
2,x
3,x
4の組に、前述の第1の制約(one-hot制約)が定められているとする。そして、スピンx
3,x
4,x
5,x
6等は子問題として選択されたが、スピンx
1,x
2は子問題に含まれないとする。子問題の解を求める場合、スピンx
1,x
2の値はいずれも0(x
1,x
2の暫定解)に固定される。従って、
図10に例示する場合には、子問題の解を求める際に、{x
1=0,x
2=0,x
3=0,x
4=1}という場合や、{x
1=0,x
2=0,x
3=1,x
4=0}という場合は探索されるが、{x
1=1,x
2=0,x
3=0,x
4=0}という場合や、{x
1=0,x
2=1,x
3=0,x
4=0}という場合は探索されず、探索範囲が狭まることになる。
【0033】
そこで、本発明は、スピンの組に制約が定められている場合に、子問題の解の探索範囲が狭まることをできるだけ防止できるような子問題を生成することができる子問題生成装置、子問題生成方法および子問題生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0034】
本発明による子問題生成装置は、組合せ最適化問題の各スピンの中から、組合せ最適化問題の子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加する第1選択手段と、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する第2選択手段とを備えることを特徴とする。
【0035】
本発明による子問題生成方法は、コンピュータが、組合せ最適化問題の各スピンの中から、組合せ最適化問題の子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加し、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加することを特徴とする。
【0036】
本発明による子問題生成プログラムは、コンピュータに、組合せ最適化問題の各スピンの中から、組合せ最適化問題の子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加する第1選択処理、および、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する第2選択処理を実行させる。また、本発明は、上記の子問題生成プログラムを記録したコンピュータ読み取り可能な記録媒体であってもよい。
【発明の効果】
【0037】
本発明によれば、スピンの組に制約が定められている場合に、子問題の解の探索範囲が狭まることをできるだけ防止できるような子問題を生成することができる。
【図面の簡単な説明】
【0038】
【
図1】本発明の実施形態の子問題生成装置の構成例を示すブロック図である。
【
図2】本発明の実施形態の処理経過の例を示すフローチャートである。
【
図3】制約が定められたスピンの組の一例を示す模式図である。
【
図4】制約が定められたスピンの組の一例を示す模式図である。
【
図5】本発明の実施形態の変形例の一つにおける処理経過の例を示すフローチャートである。
【
図6】本発明の実施形態やその変形例の子問題生成装置に係るコンピュータの構成例を示す概略ブロック図である。
【
図7】本発明の子問題生成装置の概要を示すブロック図である。
【
図8】非特許文献2に記載された求解方法の一例の概略を示すフローチャートである。
【
図9】解の探索範囲が狭まる場合の一例を示す模式図である。
【
図10】解の探索範囲が狭まる場合の他の例を示す模式図である。
【発明を実施するための形態】
【0039】
以下、本発明の実施形態を図面を参照して説明する。
【0040】
以下に示す本発明の実施形態やその変形例において、組合せ最適化問題の各スピンの暫定解が予め定められているものとする。暫定解を定める方法は、特に限定されない。
【0041】
また、予め、組合せ最適化問題のエネルギー関数(イジングモデルまたはQUBOのエネルギー関数)が定められているものとする。
【0042】
また、スピンの各組、および、各組が満たすべき制約が予め定められているものとする。スピンの組は、例えば、複数定められ、各組にそれぞれ制約が定められる。
【0043】
スピンの各組、および、各組が満たすべき制約は、例えば、本実施形態の子問題生成装置を利用するユーザによって定められてもよい。ただし、スピンの各組、および、各組が満たすべき制約の設定態様は、上記の例に限定されない。
【0044】
また、1つのスピンが複数の組に属していてもよい。
【0045】
図1は、本発明の実施形態の子問題生成装置の構成例を示すブロック図である。本実施形態の子問題生成装置10は、第1選択部11と、第2選択部12とを備える。
【0046】
第1選択部11は、組合せ最適化問題の各スピンの中から、子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加する。本実施形態では、第1選択部11は、ランダムに1個のスピンを選択し、その1個のスピンを子問題に追加する。
【0047】
第2選択部12には、予め、スピンの各組、および、各組が満たすべき制約を表す情報が与えられている。
【0048】
そして、第2選択部12は、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択する。さらに、第2選択部12は、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する。
【0049】
第1選択部11および第2選択部12は、例えば、子問題生成プログラムに従って動作するコンピュータのCPU(Central Processing Unit )によって実現される。この場合、CPUは、コンピュータのプログラム記憶装置等のプログラム記録媒体から子問題生成プログラムを読み込み、その子問題生成プログラムに従って、第1選択部11および第2選択部12として動作すればよい。
【0050】
次に、処理経過について説明する。
図2は、本発明の実施形態の処理経過の例を示すフローチャートである。第2選択部12には、既に、スピンの各組、および、各組が満たすべき制約を表す情報が与えられているものとする。
【0051】
第1選択部11は、組合せ最適化問題の各スピンの中から、子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加する(ステップS1)。本実施形態では、ステップS1において、第1選択部11は、子問題に追加する1個のスピンをランダムに選択する。
【0052】
第2選択部12は、ステップS1で子問題に追加されたスピンが、制約が定められた組に属しているか否かを判定する(ステップS2)。ステップS1で子問題に追加されたスピンが、制約が定められた組に属していない場合(ステップS2のNo)、ステップS1以降の動作を繰り返す。
【0053】
ステップS1で子問題に追加されたスピンが、制約が定められた組に属している場合(ステップS2のYes)、ステップS3に移行する。以下、具体例を示しながら説明する。
図3は、制約が定められたスピンの組の一例を示す模式図である。
図3に示す例では、スピンの総数は16個である。また、制約が定められたスピンの組を枠で囲んで示している。例えば、スピンx
11,x
12,
13,x
14の組は、制約aが定められた組である。
図3に示す例では、制約が定められた組に属していないスピンは存在しない。従って、ステップS1で子問題に追加されたスピンが、制約が定められた組に属していないと判定されることはなく、ステップS2からステップS3に移行する。
【0054】
本例では、ステップS1で子問題に追加された1個のスピンがスピンx11である場合を例にして説明する。
【0055】
ステップS3では、第2選択部12が、子問題に含まれているいずれかのスピンが属している、制約が定められた組を選択する。第2選択部12は、2回目以降のステップS3では、既に選択した組を、選択対象から除外する。すなわち、第2選択部12は、子問題に含まれているいずれかのスピンが属している、制約が定められた組であって、未だ選択されていない組を選択する。
【0056】
本例では、1回目にステップS3に移行した時点では、子問題に含まれるスピンはスピンx
11のみである。そして、スピンx
11が属している、制約が定められた組としては、制約aの組と、制約eの組がある(
図3参照)。すなわち、この時点で選択可能な組は複数存在する。本実施形態では、このように選択可能な組が複数存在する場合、第2選択部12は、その組の中からランダムに組を選択してよい。本例では、第2選択部12は、制約aの組と、制約eの組のうち、制約aの組を選択するものとして説明する。
【0057】
ステップS3の次に、第2選択部12は、ステップS3で選択した組に属していて、子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する(ステップS4)。ステップS3で選択した制約aの組のうち、子問題に追加されていないスピンは、スピンx12,x13,x14である。従って、この場合、ステップS4で、第2選択部12は、スピンx12,x13,x14を子問題に追加する。この結果、子問題には、x11,x12,x13,x14が含まれる。
【0058】
次に、第2選択部12は、子問題のサイズが、予め定められた閾値以上であるか否かを判定する(ステップS5)。子問題のサイズは、例えば、子問題に含まれるスピンの個数である。メモリ等のリソースが不足せずに子問題の解を求めることができる子問題のサイズの上限を、閾値として予め定めておけばよい。子問題のサイズが閾値以上である場合(ステップS5のYes)、子問題の解を解くことができない状態になったとみなして、その時点で処理を終了する。本例では、子問題のサイズが閾値未満であるとする。子問題のサイズが閾値未満である場合(ステップS5のNo)、ステップS6に移行する。
【0059】
ステップS6では、第2選択部12は、子問題に含まれているいずれかのスピンが属している、制約が定められた組であって、ステップS3で選択されていない組があるか否かを判定する。そのような組がない場合(ステップS6のNo)、その時点で処理を終了する。また、そのような組がある場合には(ステップS6のYes)、ステップS3以降の処理を繰り返す。本例では、1回目にステップ6に移行した時点で、子問題には、スピンx11,x12,x13,x14が含まれる。スピンx12,x13,x14は、制約aの組のみに属していて、制約aの組は選択済みである。スピンx11は、制約aの組、および、制約eの組に属していて、制約eの組はまだ選択されていない(ステップS6のYes)。よって、ステップS3以降の処理を繰り返す。
【0060】
2回目のステップS3では、第2選択部12は、スピンx11が属している組であって、まだ選択されていない制約eの組を選択する。
【0061】
次のステップS4では、第2選択部12は、制約eの組に属していて、子問題に追加されていないスピンx
21(
図3参照)を選択し、そのスピンx
21を子問題に追加する。この結果、子問題には、x
11,x
12,x
13,x
14,x
21が含まれる。
【0062】
そして、まだ、子問題のサイズは閾値未満であるとする(ステップS5のNo)。
【0063】
2回目にステップS6に移行した時点で、子問題には、x11,x12,x13,x14,x21が含まれる。スピンx12,x13,x14は、制約aの組のみに属していて、制約aの組は選択済みである。スピンx11は、制約aの組、および、制約eの組に属していて、どちらの組も選択済みである。スピンx21は、制約eの組、および、制約bの組に属していて、制約bの組はまだ選択されていない(ステップS6のYes)。よって、ステップS3以降の処理を繰り返す。
【0064】
3回目のステップS3では、第2選択部12は、スピンx21が属している組であって、まだ選択されていない制約bの組を選択する。
【0065】
次のステップS4では、第2選択部12は、制約bの組に属していて、子問題に追加されていない各スピンx
22,x
23,x
24(
図3参照)を選択し、その各スピンx
22,x
23,x
24を子問題に追加する。この結果、子問題には、x
11,x
12,x
13,x
14,x
21,x
22,x
23,x
24が含まれる。
【0066】
そして、まだ、子問題のサイズは閾値未満であるとする(ステップS5のNo)。
【0067】
3回目にステップS6に移行した時点で、子問題には、x
11,x
12,x
13,x
14,x
21,x
22,x
23,x
24が含まれる。スピンx
12,x
13,x
14は、制約aの組のみに属していて、制約aの組は選択済みである。スピンx
11は、制約aの組、および、制約eの組に属していて、どちらの組も選択済みである。スピンx
21は、制約eの組、および、制約bの組に属していて、どちらの組も選択済みである。スピンx
22,x
23,x
24は、制約bの組のみに属していて、制約bの組は選択済みである。従って、第2選択部12は、子問題に含まれているいずれかのスピンが属している、制約が定められた組であって、ステップS3で選択されていない組はないと判定し(ステップS6のNo)、処理を終了する。この結果、本例では、スピンx
11,x
12,x
13,x
14,x
21,x
22,x
23,x
24が子問題となる。また、
図3に示すx
31,x
32,x
33,x
34,x
41,x
42,x
43,x
44は、子問題に含まれないスピンとなる。
【0068】
本実施形態の子問題生成装置によって生成された子問題を解く場合には、子問題に含まれないスピンの状態を暫定解の状態に固定して、生成された子問題の解を、エネルギー関数を用いて、例えば、シミュレーテッドアニーリングによって求めればよい。上記の例では、スピンx31,x32,x33,x34,x41,x42,x43,x44の状態を暫定解の状態に固定して、例えば、シミュレーテッドアニーリングによって、子問題に該当する各スピンx11,x12,x13,x14,x21,x22,x23,x24の状態を求めればよい。ただし、子問題の解を求める方法は、上記の例に限定されない。
【0069】
本実施形態によれば、第2選択部12は、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する。従って、子問題のサイズが閾値未満であれば、制約が定められた組に属するスピンが、子問題に含まれるスピンと、子問題に含まれないスピンとに分かれてしまうことを防止できる。よって、子問題の解の探索範囲が狭まることをできるだけ防止できるような子問題を生成することができる。
【0070】
次に、本発明の実施形態の変形例について説明する。
【0071】
上記の実施形態では、第1選択部11が、ステップS1(
図2参照)で、1個のスピンをランダムに選択し、その1個のスピンを子問題に追加する場合を示した。第1選択部11は、他の方法で1個のスピンを選択してもよい。
【0072】
例えば、第1選択部11は、ステップS1において、組合せ最適化問題の個々のスピン毎に、スピンの状態を反転させたときの組合せ最適化問題のエネルギー関数の増加量を計算する。そして、第1選択部11は、その増加量が最大である1個のスピンを選択し、その1個のスピンを子問題に追加してもよい。ステップS2で、そのスピンが、制約が定められた組に属していないと判定され(ステップS2のNo)、再度ステップS1に移行したときには、第1選択部11は、未選択のスピンの中で、上記の増加量が最大である1個のスピンを選択し、その1個のスピンを子問題に追加すればよい。なお、スピンの状態を反転させたときの組合せ最適化問題のエネルギー関数の増加量は、非特許文献2に記載されたimpact値に相当するので、以下、impact値と記す。
【0073】
また、第1選択部11は、ステップS1で、制約が定められた組であって、その制約が満たされていない組に属するスピンを1個選択し、その1個のスピンを子問題に追加してもよい。この変形例では、第1選択部11に、予め、スピンの各組、および、各組が満たすべき制約を表す情報が与えられる。また、第1選択部11は、制約が定められた組であって、その制約が満たされていない組に属する1個のスピンを選択する場合、その組に属するスピンの中から、ランダムに1個のスピンを選択してもよい。あるいは、第1選択部11は、その組に属するスピンのうち、impact値が最大であるスピンを選択してもよい。
【0074】
以下、
図3を参照して、具体例を説明する。例えば、
図3に示す制約aの組では制約aが満たされ、制約bの組では制約bが満たされ、制約cの組では制約cが満たされ、制約dの組では制約dが満たされているとする。また、制約eの組では、制約eは満たされておらず、制約fの組でも制約fは満たされていないとする。この場合、ステップS1で、第1選択部11は、制約eの組に属するスピン、および、制約fの組に属するスピンの中から、例えば、ランダムに1個のスピンを選択し、その1個のスピンを子問題に追加すればよい。上記の例では、制約が満たされていない組が複数存在する場合を示したが、制約が満たされていない組が1つだけ存在する場合には、第1選択部11は、その1つの組から1つのスピンを選択すればよい。
【0075】
また、制約の優先度が予め定められていてもよい。そして、第1選択部11は、ステップS1で、優先度が最も高い制約が定められた組に属するスピンを1個選択し、その1個のスピンを子問題に追加してもよい。この変形例でも、第1選択部11に、予め、スピンの各組、および、各組が満たすべき制約を表す情報が与えられる。また、第1選択部11に、制約の優先度を示す情報も、予め与えられる。なお、制約の優先度は、例えば、子問題生成装置10を利用するユーザが予め定めればよい。
【0076】
以下、
図3を参照して、具体例を説明する。本例では、予め、第1の制約(one-hot制約)の優先度が最も高く、第2の制約の優先度が2番目に高く、第3の制約の優先度が3番目に高いと定められているとする。また、
図3に示す制約eおよび制約fは、第1の制約であり、制約aおよび制約cは、第2の制約であり、制約bおよび制約dは、第3の制約であるとする。この場合、制約e、および、制約fが、優先度が最も高い第1の制約に該当する。従って、ステップS1で、第1選択部11は、制約eの組に属するスピン、および、制約fの組に属するスピンの中から、例えば、ランダムに1個のスピンを選択し、その1個のスピンを子問題に追加すればよい。上記の例では、優先度が最も高い制約の組が複数存在する場合を示したが、優先度が最も高い制約の組が1つだけ存在する場合には、第1選択部11は、その1つの組から1つのスピンを選択すればよい。
【0077】
また、上記の変形例と同様に、制約の優先度が予め定められていてもよい。そして、第2選択部12は、ステップS3で、子問題に含まれているいずれかのスピンが属している組であって、制約が定められた組が複数存在する場合に、その複数の組の中で、優先度が最も高い組を選択してもよい。この場合、第2選択部12には、スピンの各組、および、各組が満たすべき制約を表す情報だけでなく、制約の優先度を示す情報も、予め与えられる。前述のように、制約の優先度は、例えば、子問題生成装置10を利用するユーザが予め定めればよい。
【0078】
以下、
図3を参照して、具体例を説明する。前述の例と同様に、予め、第1の制約(one-hot制約)の優先度が最も高く、第2の制約の優先度が2番目に高く、第3の制約の優先度が3番目に高いと定められているとする。また、
図3に示す制約eおよび制約fは、第1の制約であり、制約aおよび制約cは、第2の制約であり、制約bおよび制約dは、第3の制約であるとする。ステップS1で、スピンx
11が選択され、スピンx
11が子問題に追加された状態で、ステップS3に移行したとする。スピンx
11が属している、制約が定められた組としては、制約aの組と、制約eの組がある(
図3参照)。ここで、制約a(第2の制約)と、制約e(第1の制約)とでは、制約eの優先度が最も高い。従って、この場合、ステップS3で、第2選択部12は、制約eの組を選択する。そして、次のステップS4で、第2選択部12は、制約eの組に属していて、子問題に追加されていないスピンx
21を選択し、スピンx
21を子問題に追加する。
【0079】
次にステップS3に移行した時点では、スピンx11が属していて、まだ選択されていない制約aの組と、スピンx21が属していて、まだ選択されていない制約bの組が存在する。ここで、制約a(第2の制約)と、制約b(第3の制約)とでは、制約aの優先度が最も高い。従って、第2選択部12は、制約aの組を選択する。そして、次のステップS4で、第2選択部12は、制約aの組に属していて、子問題に追加されていない各スピンx12,x13,x14を選択し、その各スピンx12,x13,x14を子問題に追加する。
【0080】
次にステップS3に移行した時点では、スピンx21が属していて、まだ選択されていない制約bの組が存在する。この時点でまだ選択されていない組は制約bの組だけであるので、第2選択部12は、制約bの組を選択する。そして、次のステップS4で、第2選択部12は、制約bの組に属していて、子問題に追加されていない各スピンx22,x23,x24を選択し、その各スピンx22,x23,x24を子問題に追加する。
【0081】
上記の例では、ステップS1で、スピンx11が選択された場合を例にして説明した。例えば、ステップS1でスピンx14が選択され、x14が子問題に追加された状態で、ステップS3に移行したとする。この場合、x14が属している、制約が定められた組は、制約aの組のみである。制約eや制約fは、制約aよりも優先度が高い。しかし、この時点で、制約eの組に属するスピンや制約fの組に属するスピンは1つも、子問題に追加されていない。従って、この場合には、第2選択部12は、制約aの組を選択する。そして、次のステップS4で、第2選択部12は、制約aの組に属していて、子問題に追加されていない各スピンx11,x12,x13を選択し、その各スピンx11,x12,x13を子問題に追加する。
【0082】
また、前述の実施形態では、第2選択部12が、ステップS3~S6のループ処理を繰り返す場合を示した(
図2参照)。しかし、第2選択部12が、ステップS3~S6のループ処理を繰り返す構成では、組合せ最適化問題に応じた制約の組の定め方によっては、組合せ最適化問題の全てのスピンを子問題として選択する可能性がある。
図4は、制約が定められたスピンの組の一例を示す模式図である。
図4に示す例では、スピンの総数は16個である。また、制約が定められたスピンの組を枠で囲んで示している。例えば、スピンx
11,x
12,
13,x
14の組に制約が定められている。また、例えば、スピンx
11,x
21,x
31,x
41の組に制約が定められている。例えば、巡回セールスマン問題では、
図4に例示するように、スピンの組が定められ、各組に第1の制約(one-hot制約)が定められる。
【0083】
図4に例示するようにスピンの組が定められた場合、第2選択部12が、ステップS3~S6のループ処理を繰り返す構成では、子問題のサイズが閾値以上にならなければ、組合せ最適化問題の全てのスピンを子問題として選択することになる。
【0084】
組合せ最適化問題の全てのスピンを子問題として選択することを防止するため、第2選択部12が、
図2に示すステップS3,S4の処理をそれぞれ1回実行した時点で処理を終了する構成としてもよい。
図5は、この場合のフローチャートである。
図5では、
図2に示す処理と同一の処理には、
図2と同一の符号を付し、説明を省略する。
図5に示すように、第2選択部12がステップS3,S4の処理をそれぞれ1回実行した時点で処理を終了してもよい。
【0085】
この変形例では、ステップS3は1回だけ実行されるので、制約が定められた組は、1組だけ選択される。そして、第2選択部12が、その組に属していて、子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加した時点で処理を終了する。
【0086】
従って、
図4に示すように制約が定められた組が複数個設定されていたとしても、組合せ最適化問題の全てのスピンを子問題として選択することはない。
【0087】
また、1組だけ選択された、制約が定められた組に属するスピンは、全て子問題に含まれている。従って、子問題の解の探索範囲が狭まることをできるだけ防止できるような子問題を生成することができる。
【0088】
前述の実施形態や上記の各変形例で示した子問題生成装置10は、例えば、非特許文献2に記載された組合せ最適化問題の求解方法(
図8参照)に適用することができるが、本発明の適用範囲は、非特許文献2に記載された求解方法に限定されない。すなわち、前述の実施形態や上記の各変形例で示した子問題生成装置10は、他の求解方法に適用されてもよい。
【0089】
図6は、本発明の実施形態やその変形例の子問題生成装置10に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004とを備える。
【0090】
本発明の実施形態やその変形例の子問題生成装置10は、例えば、コンピュータ1000によって実現される。子問題生成装置10の動作は、子問題生成プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのプログラムを読み出し、そのプログラムを主記憶装置1002に展開し、そのプログラムに従って、本発明の実施形態やその変形例で説明した処理を実行する。
【0091】
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って上記の実施形態で説明した処理を実行してもよい。
【0092】
また、各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
【0093】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0094】
次に、本発明の概要について説明する。
図7は、本発明の子問題生成装置の概要を示すブロック図である。本発明の子問題生成装置は、第1選択手段71と、第2選択手段72とを備える。
【0095】
第1選択手段71(例えば、第1選択部11)は、組合せ最適化問題の各スピンの中から、組合せ最適化問題の子問題に追加する1個のスピンを選択し、その1個のスピンを子問題に追加する。
【0096】
第2選択手段72(例えば、第2選択部12)は、子問題に含まれているいずれかのスピンが、制約が定められた組に属している場合、その組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する。
【0097】
そのような構成により、スピンの組に制約が定められている場合に、子問題の解の探索範囲が狭まることをできるだけ防止できるような子問題を生成することができる。
【0098】
第1選択手段71が、ランダムに、1個のスピンを選択する構成であってもよい。
【0099】
第1選択手段71が、スピンの状態を反転させたときの最適化問題のエネルギー関数の増加量が最大であるスピンを、1個のスピンとして選択する構成であってもよい。
【0100】
第1選択手段71が、制約が定められた組であってその制約が満たされていない組に属するスピンを、1個のスピンとして選択する構成であってもよい。
【0101】
制約の優先順位が予め定められていて、第1選択手段71が、優先順位が最も高い制約が定められた組に属するスピンを、1個のスピンとして選択する構成であってもよい。
【0102】
制約の優先順位が予め定められていて、第2選択手段72が、子問題に含まれているいずれかのスピンが属している組であって、制約が定められた組が複数存在する場合に、その複数の組の中で、制約の優先順位が最も高い組を選択し、その組に属していて子問題に追加されていない各スピンを選択し、その各スピンを子問題に追加する構成であってもよい。
【0103】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【0104】
本発明は、組合せ最適化問題の子問題を生成する子問題生成装置に好適に適用される。
【符号の説明】
【0105】
10 子問題生成装置
11 第1選択部
12 第2選択部