(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025140504
(43)【公開日】2025-09-29
(54)【発明の名称】組合せ最適化方法、組合せ最適化装置、及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20250919BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2024039942
(22)【出願日】2024-03-14
(71)【出願人】
【識別番号】000004226
【氏名又は名称】NTT株式会社
(71)【出願人】
【識別番号】390001421
【氏名又は名称】学校法人早稲田大学
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】大野 乾太郎
(72)【発明者】
【氏名】白井 達彦
(72)【発明者】
【氏名】戸川 望
(57)【要約】
【課題】従来の組合せ最適化装置では、質の高い実行可能解が得られなかった。
【解決手段】上記課題を解決する組合せ最適化装置は、変換部と、イジングマシンと、修復処理部と、改善処理部とを備える。変換部は、制約付き組合せ問題を、目的関数とペナルティ関数とペナルティ係数とからなるイジングモデルに変換する。イジングマシンは、イジングモデルを解いて暫定解を生成する。暫定解が制約を満たさない場合、修復処理部は、制約が満たされるように暫定解を補正して実行可能解を生成する。改善処理部は、制約が満たされるように、または制約を満たしかつ目的関数の値が改善されるように、実行可能解を補正して改善解を生成する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
制約付き組合せ問題の最適解を求める方法であって、
変換部が前記制約付き組合せ問題を目的関数とペナルティ関数とペナルティ係数とからなるイジングモデルに変換し、
イジングマシンが、前記イジングモデルを解いて暫定解を生成し、
前記暫定解が前記制約を満たさない場合、修復処理部が、前記制約が満たされるように前記暫定解を補正して実行可能解を生成し、
改善処理部が、前記制約が満たされるように、または前記制約を満たしかつ目的関数の値が改善されるように、前記実行可能解を補正して改善解を生成する
組合せ最適化方法。
【請求項2】
請求項1に記載の組合せ最適化方法であって、
前記目的関数の変数を、前記目的関数への寄与が小さく前記制約への負荷が大きい順に並べた順番を昇順として、
前記修復処理部は、前記暫定解において値が1の変数の中から前記昇順に基づいて選択した変数の値を0に補正して前記実行可能解を求める
ことを特徴とする組合せ最適化方法。
【請求項3】
請求項1に記載の組合せ最適化方法であって、
前記目的関数の変数を、前記目的関数への寄与が大きく前記制約への負荷が小さい順に並べた順番を降順として、
前記改善処理部は、前記実行可能解において値が0の変数の中から前記降順に基づいて選択した変数の値を1に補正して前記改善解を求める
ことを特徴とする組合せ最適化方法。
【請求項4】
請求項1に記載の組合せ最適化方法であって、
前記目的関数の変数を、前記目的関数への寄与が小さく前記制約への負荷が大きい順に並べた順番を昇順、前記目的関数への寄与が大きく前記制約への負荷が小さい順に並べた順番を降順として、
前記改善処理部は、前記実行可能解において値が1の変数の中から前記昇順に基づいて選択した変数の値を0に補正すると共に、前記実行可能解において値が0の変数の中から前記降順に基づいて選択した変数の値を1に補正して前記実行可能解を求める
ことを特徴とする組合せ最適化方法。
【請求項5】
制約付き組合せ問題の最適解を求める装置であって、
前記制約付き組合せ問題を目的関数とペナルティ関数とペナルティ係数とからなるイジングモデルに変換する変換部と、
前記イジングモデルを解いて暫定解を生成するイジングマシンと、
前記暫定解が前記制約を満たさない場合、前記制約が満たされるように前記暫定解を補正して実行可能解を生成する修復処理部と、
改善処理部が、前記制約が満たされるように、または前記制約を満たしかつ目的関数の値が改善されるように、前記実行可能解を補正して改善解を生成する改善処理部と、
を備えた組合せ最適化装置。
【請求項6】
請求項5に記載の組合せ最適化装置であって、
前記目的関数の変数を、前記目的関数への寄与が小さく前記制約への負荷が大きい順に並べた順番を昇順として、
前記修復処理部は、前記暫定解において値が1の変数の中から前記昇順に基づいて選択した変数の値を0に補正して前記実行可能解を求める
ことを特徴とする組合せ最適化装置。
【請求項7】
請求項5に記載の組合せ最適化方法であって、
前記目的関数の変数を、前記目的関数への寄与が大きく前記制約への負荷が小さい順に並べた順番を降順として、
前記改善処理部は、前記実行可能解において値が0の変数の中から前記降順に基づいて選択した変数の値を1に補正して前記改善解を求める
ことを特徴とする組合せ最適化装置。
【請求項8】
請求項5に記載の組合せ最適化方法であって、
前記目的関数の変数を、前記目的関数への寄与が小さく前記制約への負荷が大きい順に並べた順番を昇順、前記目的関数への寄与が大きく前記制約への負荷が小さい順に並べた順番を降順として、
前記改善処理部は、前記実行可能解において値が1の変数の中から前記昇順に基づいて選択した変数の値を0に補正すると共に、前記実行可能解において値が0の変数の中から前記降順に基づいて選択した変数の値を1に補正して前記実行可能解を求める
ことを特徴とする組合せ最適化装置。
【請求項9】
請求項5から8のいずれかに記載の組合せ最適化装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示技術は、イジングマシンと呼ばれる計算機を用いて組合せ最適化問題を解く技術に関する。特に、制約付き最適化問題において、質の高い実行可能解を得るための技術に関する。
【背景技術】
【0002】
組合せ最適化は、特定の条件を満たす多数の組合せの中から特定の評価指標(目的関数)についてできるだけ良いもの、すなわち質の高い解を選択する技術である。組合せ最適化は、人員計画、経路探索、創薬といったビジネスでの意思決定から学術的な研究まで広い分野で現れる。
一方、組合せ最適化問題を効率的に(問題サイズに対して多項式時間で)解くことは従来の汎用計算機では難しい。そのため、物理現象などを利用し、最適解の探索を行う計算機ハードウェアを用いて高速に組合せ最適化を実行する技術が重要となっている。
【0003】
組合せ最適化における発見的解法を実装した(従来の汎用計算機とは異なる種類の)計算機としてイジングマシンがある。イジングマシンは、イジングモデルの基底状態探索を効率的に実行するハードウェアである。イジングモデルとは、+1または-1の二値をとる複数の変数(スピン)に関する2次多項式(ハミルトニアン)により定義される物理モデルである。スピンの値の組み合わせを状態と呼び、状態に対して各スピンの値をハミルトニアンに代入した値をエネルギーと呼ぶ。エネルギーを最小化するような状態を基底状態と呼ぶ。イジングマシンは、入力されたハミルトニアンに対してエネルギーが低い解を出力するアルゴリズムが実装された計算機の総称である。
【0004】
イジングマシンはその定義から、組合せ最適化に応用される。イジングマシンの実現方法には、量子プロセッサ(量子力学の原理を用いた計算プロセッサ)や縮退光パラメトリック発振器を用いたもの、従来の半導体技術を用いた専用集積回路を用いたものなどがある。
【0005】
なお、イジングモデルにおけるスピンを、0あるいは1のいずれかの値をとるバイナリ変数で置き換えたモデルをQUBOモデルと呼ぶ。スピン変数をσ
i∈{+1, -1}、バイナリ変数をq
i∈{0, 1}として、イジングモデルとQUBOモデルは次の式で相互に変換可能であり、等価である。
【数1】
組合せ最適化問題の定式化に、イジングモデルを用いるかQUBOモデルを用いるかは、組合せ問題の性質に応じて、使い分ければよい。
【0006】
イジングマシンを用いた一般的な組合せ最適化装置を
図1に示す。
組合せ最適化装置10は、QUBO変換部101、イジングマシン102、逆変換部103、評価部104、ペナルティ係数更新部105を備え、組合せ最適化問題を入力とし、最適解を出力とする。
【0007】
図2は、組合せ最適化装置10の作用を説明するフローチャートである。
以下、
図1と
図2を用いて従来技術を説明する。ここでは、「制約付き組合せ最適化問題」を解く場合について説明する。
ユーザが組合せ最適化問題を入力すると(ステップS201)、QUBO変換部101がQUBOモデルに変換する(ステップS202)。このとき、元の問題の変数は(場合によっては複数の)バイナリ変数に変換される。
問題が「制約付き組合せ最適化問題」だった場合、QUBOモデルは、目的関数と、ペナルティ関数とペナルティ係数とからなる(詳しくは後述)。
ペナルティ係数更新部106は、ペナルティ係数を初期化する(ステップS203)。
【0008】
イジングマシン102は、QUBOモデルを解いて、暫定解を出力する(ステップS204)。
逆変換部103は、暫定解の変数(QUBOモデルの変数)の値を、元の組合せ最適化問題の変数の値(原始解)に変換する(ステップS205)。
評価部104は、原始解が終了条件を満足するか否か判定する(ステップS206)。具体的には、原始解が制約を満たすか否か(原始解は実行可能解であるか否か)、実行可能解の出力確率が一定以上を達成したか、イジングマシンの実行回数が一定回数に到達したか、などを判定する。
【0009】
終了条件を満足していない場合(ステップS206でNo)、ペナルティ係数更新部105は、制約が満たされるように、あるいは実行可能解の出力確率がより高くなるようにペナルティ係数を更新する(ステップS207)。
イジングマシン102は、ペナルティ係数が更新されたQUBOモデルを解く(ステップS204)。
終了条件を満足していれば(ステップS206でYes)、原始解を、最適化問題の解として出力する。
【0010】
組合せ最適化問題の入力時におけるイジングモデルへの変換とペナルティ係数について補足する。
イジングモデルの基底状態探索は、二値に値をとる変数上の制約なし最小化問題とみなせる。したがって、組合せ最適化問題を二値変数で表現した際に生じる制約は、実行不能解に対しては正の値を返し、実行可能解に対してはゼロを返す関数(ペナルティ関数と呼ぶ)に変換する。目的関数にペナルティ関数の正の定数(ペナルティ係数と呼ぶ)倍を足したものを新たな目的関数とすることで、制約を除去した問題に変換し、イジングモデル/QUBOモデルに変換する。本明細書の段落[0041]に具体例を示した。
【0011】
ペナルティ係数が小さい場合、イジングマシンの出力は制約を満たさない。一方で、ペナルティ係数が大きい場合は得られる解の目的関数値が悪くなる。ペナルティ係数の値はユーザが入力する場合や装置の内部で自動的に決定する場合がある。いずれの場合においても、ペナルティ係数はイジングマシンの出力が実行可能解となるよう大きな値で設定される。または、そのような大きな値になるよう、装置の実行を複数回試行し調整される。
複数回の試行によって調整される場合は、実行可能解が得られた場合はその確率及び解の目的関数値によりペナルティ係数の良し悪しを評価し、より高い実行可能解確率を得る必要がある場合にはペナルティ係数をより大きな値に更新し、十分高い実行可能解確率が達成されている場合はより小さな値に更新する。また、実行可能解が得られなかった場合はペナルティ係数を大きな値に更新する。
【0012】
上記装置の課題は、質の高い実行可能解が得られないことである。すなわち、どのようなペナルティ係数を設定しても、イジングマシンの出力において、制約を満たさない(実行不能である)か、制約を満たす(実行可能である)ものの目的関数値が悪く質が低いことである。
イジングマシンの出力が実行不能解である場合に、実行可能解に変換する技術が提案されている(非特許文献1)。しかし、イジングマシンの出力が制約を満たすよう修正して得られる実行可能解は、多くの場合元の組合せ最適化問題の局所最適を達成できず、質の高い解ではない。
また、イジングマシンが出力する実行可能解を改善する後処理を実行する技術が提案されている(非特許文献2)。しかし、この技術ではイジングマシンが実行可能解を出力することを必要とするため、ペナルティ係数が大きいことを必要とする。大きなペナルティ係数におけるイジングマシンの出力を修正しても質の高い解は達成できないため、この技術においても質の高い解が得られない。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】S. Kanamaru et al., "Solving constrained slot placement problems using an Ising machine and its evaluations", IEICE Transactions on Information and Systems, Vol.E104-D, No.2, pp.226-236, 2021.
【非特許文献2】M. Parizy et al., "Analysis and acceleration of the quadratic knapsack problem on an Ising machine", IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Vol.E104-A, No.11, pp. 1526-1535, 2021.
【発明の概要】
【発明が解決しようとする課題】
【0014】
上述の通り、従来の組合せ最適化装置10では、質の高い実行可能解が得られない。
非特許文献1のようにイジングマシンの出力が制約を満たすよう修正して得られる実行可能解は、元の組合せ最適化問題の局所最適を達成できず、質の高い解ではない。
非特許文献2の技術ではペナルティ係数が大きいことを必要とするため、イジングマシンの出力を修正しても質の高い解は達成できない。
【課題を解決するための手段】
【0015】
開示技術に係る組合せ最適化装置は、上記課題を解決するものであり、変換部と、イジングマシンと、修復処理部と、改善処理部とを備える。
変換部は、制約付き組合せ問題を、目的関数とペナルティ関数とペナルティ係数とからなるイジングモデルに変換する。
イジングマシンは、イジングモデルを解いて暫定解を生成する。
暫定解が制約を満たさない場合、修復処理部は、制約が満たされるように暫定解を補正して実行可能解を生成する。
改善処理部は、制約が満たされるように、または制約を満たしかつ目的関数の値が改善されるように、実行可能解を補正して改善解を生成する。
【発明の効果】
【0016】
実行不能解を実行可能解に変換する処理、及び実行可能解を改善する処理を二段階に実行することで、質の高い実行可能解が得られるようになる。
【図面の簡単な説明】
【0017】
【
図1】従来技術に係る組合せ最適化装置の機能ブロック図。
【
図2】従来技術に係る組合せ最適化装置の作用を説明するフローチャート。
【
図3】第1実施形態に係る組合せ最適化装置の機能ブロック図。
【
図4】第1実施形態に係る組合せ最適化装置の作用を説明するフローチャート。
【
図5】修復処理部の作用の一例を説明するフローチャート。
【
図6】改善処理部の作用の一例を説明するフローチャート
【発明を実施するための形態】
【0018】
以下、開示技術の実施形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0019】
開示技術は、組合せ最適化において、イジングマシンを用いて質の高い実行可能解を得るものであり、次のアイデアから構成される
(1)イジングマシンの出力が組合せ最適化問題の実行可能解に変換できなければ、実行可能解に変換できるよう修正する。これを修復処理と呼ぶ。
(2)その後実行可能解の質を改善するよう修正する。これを改善処理と呼ぶ。
上記アイデアのポイントは、修復処理と改善処理を併用することで、これらの効果を相乗的に活用することである。より具体的には、修復処理により、ペナルティ法において小さなペナルティ係数においても常に実行可能解を得ることができる。小さなペナルティ係数を用いて得られる解に改善処理を適用することで、質の高い実行可能解を得ることができる。
【0020】
イジングマシンの出力はすべて実行可能解に変換されるため、ペナルティ係数の評価・更新において実行可能解の出力確率を評価しない点で、開示技術は、従来の組合せ最適化装置と大きく異なる。修復・改善処理後の解の目的関数値に基づいて調整されたペナルティ係数(多くの場合、出力が実行可能解であるために必要なペナルティ係数よりも小さい)を設定することで、修復処理及び改善処理の一方だけを使用する場合よりも質の良い解を得ることが可能となる。
【0021】
[第1実施形態]
図3に、開示技術の第1実施形態に係る組合せ最適化装置30の機能ブロック図を示す。組合せ最適化装置30は、QUBO変換部101、イジングマシン102、逆変換部103、評価部104、ペナルティ係数更新部105に加えて、制約判定部301、修復処理部302、改善処理部303を備える。
図4は、組合せ最適化装置30の作用を説明するフローチャートである。
以下、
図3と
図4を用いて第1実施形態について詳しく説明する。
【0022】
ユーザが組合せ最適化問題を入力すると(ステップS401)、QUBO変換部101が問題をQUBOモデルに変換する(ステップS402)。問題が「制約付き組合せ最適化問題」だった場合、QUBOモデルは、目的関数とペナルティ関数とペナルティ係数とからなる。
ペナルティ係数更新部105は、ペナルティ係数を初期化する(ステップS403)。
イジングマシン102は、QUBOモデルを解いて、複数の変数からなる暫定解を出力する(ステップS404)。
【0023】
制約判定部301は、暫定解が制約を満足するか否か判定する(ステップS405)。
制約を満足しない場合(ステップS405のNo)、修復処理部302は、暫定解の変数を、制約が満たされるように補正して、実行可能解を生成する(修復処理の具体例は後述する)。なお、暫定解の一部が補正された実行可能解もまた、複数の変数から成る。
【0024】
逆変換部103は、実行可能解、または、制約を満足する暫定解の変数の値を、元の組合せ最適化問題の変数の値(原始解)に変換する(ステップS407)。
評価部104は、得られた原始解により最初に入力した組合せ最適化問題を評価し、終了条件を満足していれば(ステップS408でYes)、組合せ最適化の解として、原始解を出力する。
終了条件を満足していない場合(ステップS408でNo)、改善処理部303は、実行可能解の変数を、制約が破られないように、または制約を守りかつ目的関数の値が改善されるように補正して、改善解を生成する(改善処理の具体例は後述する)。なお、実行可能解の一部が補正された改善解もまた、複数の変数から成る。
【0025】
ペナルティ係数更新部105は、改善解を代入した目的関数の値に基づき、ペナルティ係数の値を調整する(ステップS410)。
イジングマシン102は、ペナルティ係数が更新されたQUBOモデルを解く(ステップS404)。
【0026】
以上が、第1実施形態に係る組合せ最適化装置の基本的な作用の説明である。
【0027】
[修復処理と改善処理の具体例]
修復処理(ステップS406)と改善処理(ステップS409)を、具体例を用いて説明する。なお、修復処理と改善処理の具体的な実現方法は、対象となる最適化問題の種類に依存し、また一つの問題に対して複数の実現方法が存在しうる。以下では入力される組合せ最適化問題が「二次ナップサック問題」である場合について説明するが、これらは開示技術の適用範囲を制限するものではない。
【0028】
二次ナップサック問題は、複数の品物とナップサック容量のデータから定義される組合せ最適化問題である。
品物の数をnとする。i(i=1,…,n)番目の品物には重さ w
i≧0 とナップサックに入れたときの利得 p
i≧0 が与えられ、さらに二つの品物 i,j (i<j) を両方ナップサックに入れたときの利得 p
ij≧0 が与えられる。このとき、品物の重さの合計がナップサックの容量(ナップサックに収容可能な重さの限界)以下となるように利得を最大化せよという課題が、二次ナップサック問題である。すなわち、利得の合計をV、ナップサック容量をCとして、式(3)の制約の下で式(2)のVを最大化する問題として定式化される。
【数2】
【数3】
【0029】
二次ナップサック問題をQUBOモデルに変換する方法については、非特許文献2を参照されたい。以下、イジングマシンを実行して得られる出力 x→∈{0,1}n に対する修復処理および改善処理を説明する。
【0030】
<修復処理>
二次ナップサック問題における実行不能解とは、次式の関係を与えるx
→=(x
1,x
2,…,x
n)である。
【数4】
ナップサックに入れた品物を減らせば、容量制限を守ることができる。つまり、いくつかの変数x
iの値を1から0に変更すれば、制約(式(3))を満たすようにx
→を修正できる。このとき、変数の値の変更に伴い目的関数の値(V)が減少することに注意する。修復処理においては、目的関数の値の減少幅が最小となるような x
i を逐次的に選択しながら変数の値を1から0に変更することで、実行可能解を出力する。
【0031】
以下、
図5を用いて、修復処理部302の作用の一例について説明する。
修復処理部302は、イジングマシンが出力した暫定解x
→を取得する(ステップS501)。
【0032】
x
iの選択のため、品物iの効率性(目的関数の値への寄与と、制約への負荷)に注目する。式(2)、(3)から、品物iの効率性e
iを、例えば、次式で定義する。
【数5】
e
iは、分子が大きいほど(利得p
iやp
ijが大きいほど)大きな値になり(高効率になり)、分母が大きいほど(品物が重いほど)小さな値になる(低効率になる)。
修復処理部302は、e
i(i=1,2,…,n)を計算する(ステップS502)。
【0033】
修復処理部302は、値が1の変数x
iの添え字iのうち、最小のe
iを与えるiを取得し(ステップS503)、x
iの値を1から0に変更する(ステップS504)。
続いて、Wが次式で与えられるものとして、
【数6】
WがCより大きいか判定する(ステップS505)。つまり、品物iを取り出してもまだ、制約(式(4))が満足されないかを確認する。
WがCより大きい場合(ステップS505でYes)、補正したx
iを用いてe
i(i=1,2,…,n)を計算し直し(ステップS502)、次の品物(変数)を処理する。
【0034】
WがC以下となって制約が満足された場合(ステップS505でNo)、ステップS506に進んで補正後のx→を実行可能解として出力する(ステップS506)。
【0035】
<改善処理>
次に改善処理を説明する。改善処理は、まず、制約を満たす範囲でナップサックに品物を追加する処理(第1処理)を行い、次いで、制約を破らない条件でナップサック内の品物を交換する処理(第2処理)を行う。
以下、
図6を用いて、改善処理部303の作用の一例について説明する。
【0036】
改善理部303は、終了条件を満足しない実行可能解x→を取得する(ステップS601)。
次いで、ek(k=1,2,…,n)を計算する(ステップS602)
次いで、値が0の変数xjの添え字jのうち、大きなejを与えるjから順に、以下を実施する(ループ1)。
Wが式(6)で与えられるものとして、W+wjがC以下か判定する。つまり、品物jを追加してもまだ制約が守られることを確認する(ステップS603)。
W+wjがCを上回ってしまう場合(ステップS603でNo)、次に大きなejを与えるjで品物追加を試行する。
W+wjがC以下だった場合(ステップS603でYes)、xjの値を1に補正する(ステップS604)。
次いで、補正したxjを用いてek(k=1,2,…,n)を更新し(ステップS605)、次のj(品物)を処理する。ek(k=1,2,…,n)は、x→の全てを用いて定義通り計算し直す必要はなく、補正した要素と関係する利得pijを足して算出し直せばよい。
なお、ek(k=1,2,…,n)を更新しても、ループ1の対象とする品物と順番は変更しない。
【0037】
ループ1が終了したら、第2処理に進む。第2処理では、第1処理で更新したx
→とe
k(k=1,2,…,n)を用いる。
改善処理部303は、値が1の変数x
iの添え字iのうち小さなe
iを与えるiから順に(ループ2)、そして値が0の変数x
jの添え字jのうち大きなe
jを与えるjから順に(ループ3)、iとjの組を作り、以下を実施する。
改善処理部303は、W-wi+wjがC以下の条件で(つまり、品物iを取り出して品物jを入れても制約が守られる前提で)、下記式(7)が満足されるか否か(つまり、品物の交換でVの値が減少しないか)を判定する(ステップS606)。
【数7】
式(7)の右辺は、補正前のx
i=1を用いてe
jw
jを計算するので、入れ替えにより品物iが失われることで効率性に寄与しなくなるp
ijを差し引いておく必要があることに注意する。また、式(7)に限り、i>jの場合、p
ijはp
jiで読み替えることとする。
【0038】
ステップS606でNoの場合、iとjの組を次の値に進めて品物交換を試行する。
ステップS606でYesの場合、xiの値を0に、xjの値を1に補正する(ステップS607)。
次いで、補正したxiとxjを用いてek(k=1,2,…,n)を計算し直し(ステップS608)、次のiとjの組を処理する。ek(k=1,2,…,n)の更新は、x→の全てを用いて定義通り計算し直す必要はなく、補正した要素と関係する利得pijを足し引きして算出し直せばよい。
なお、ek(k=1,2,…,n)を更新してもループ2-3の対象とするi/jの組と順番は変更しないが、ステップS606の判定には、更新したek(k=1,2,…,n)の値を用いる。
【0039】
ループ2-3が終了したら、最新のx→を改善解として出力する(ステップS608)。
【0040】
以上が、二次ナップサック問題を例にした修復処理と改善処理の具体例の説明である。
【0041】
[補足:制約の定式化]
組合せ最適化問題の制約をペナルティ関数として定式化する方法を、具体例を用いて説明する。
x1,x2,x3∈{0,1}とする。
最小化したい関数(目的関数)H
0が次の式だったとする。
【数8】
制約がない場合は、H
0の基底状態をイジングマシンで探索する。
【0042】
<等式制約の場合>
次の等式で制約が与えられたとする。
【数9】
この制約をQUBOモデルに取り込むには次のように定式化する。
【数10】
H
1がペナルティ関数、αがペナルティ係数、H'
0が新たな目的関数である。H
1は2次多項式なので、イジングマシンで扱うことができる。H
1は、x
1+x
2+x
3=2が満たされるとき(制約を満たすとき)値がゼロとなり、満たされないときは正の値をとる。
【0043】
<不等式制約の場合>
次の不等式で制約が与えられたとする。
【数11】
この場合は、追加の二値変数r
1,r
2,r
3∈{0,1}を導入して式(11)を等式制約に変換する。
【数12】
【数13】
r
1,r
2,r
3∈{0,1}なので、式(13)の条件はr
1,r
2,r
3のうち一つだけを1とし、式(12)の右辺は、r
1=1なら0、r
2=1なら1、r
3=1なら2となる。
式(12)と式(13)は等式制約なので、上記<等式制約の場合>と同様にして、新たな目的関数H''
0を次のように定める。
【数14】
H
2とH
3は2次多項式なのでイジングマシンで扱うことができ、x1, x2, x3, r1, r2, r3が制約を満たすとき値がゼロとなり、満たさないときは正の値をとる。
【0044】
以上が制約の定式化の説明である。さらに詳しくは、例えば参考文献1(A. Lucas, "Ising formulations of many NP problems", Frontiers in Physics, Vol.2, Article 5, 2014)を参照されたい。
【0045】
[プログラム、記録媒体]
本明細書中に記載されている構成要素により実現される機能は、当該記載された機能を実現するようにプログラムされた、汎用プロセッサ、特定用途プロセッサ、集積回路、ASICs(Application Specific Integrated Circuits)、CPU(a Central Processing Unit)、従来型の回路、および/又はそれらの組合せを含む、circuitry又はprocessing circuitryにおいて実装されてもよい。プロセッサは、トランジスタやその他の回路を含み、 circuitry又はprocessing circuitryとみなされる。プロセッサは、メモリに格納されたプログラムを実行する、programmed processorであってもよい。
【0046】
本明細書において、circuitry、ユニット、手段は、記載された機能を実現するようにプログラムされたハードウェア、又は実行するハードウェアである。当該ハードウェアは、本明細書に開示されているあらゆるハードウェア、又は、当該記載された機能を実現するようにプログラムされた、又は、実行するものとして知られているあらゆるハードウェアであってもよい。
【0047】
当該ハードウェアがcircuitryのタイプであるとみなされるプロセッサである場合、当該circuitry、手段、又はユニットは、ハードウェアと、当該ハードウェア及び又はプロセッサを構成する為に用いられるソフトウェアの組合せである。
【0048】
上述の各種の処理は、
図7に示すコンピュータ2000の記録部2020に、上記方法の各ステップを実行させるプログラムを読み込ませ、制御部2010、入力部2030、出力部2040、表示部2050などに動作させることで実施できる。
【0049】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0050】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0051】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって処理を実行する構成としてもよい。さらには、サーバコンピュータの一部をプログラムと共にユーザに使用させる、いわゆるSaaS(Software as a Service)型のサービスを利用して、端末の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0052】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0053】
10,30 組合せ最適化装置
101 QUBO変換部
102 イジングマシン
103 逆変換部
104 評価部
105 ペナルティ係数更新部
301 制約判定部
302 修復処理部
303 改善処理部
2000 コンピュータ
2010 制御部
2020 記録部
2030 入力部
2040 出力部
2050 表示部