IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社リクルートの特許一覧 ▶ 学校法人早稲田大学の特許一覧

特許7411397整数計画装置、整数計画方法及び整数計画プログラム
<>
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図1
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図2
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図3
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図4
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図5
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図6
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図7
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図8
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図9
  • 特許-整数計画装置、整数計画方法及び整数計画プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-27
(45)【発行日】2024-01-11
(54)【発明の名称】整数計画装置、整数計画方法及び整数計画プログラム
(51)【国際特許分類】
   G06N 99/00 20190101AFI20231228BHJP
   G06N 10/60 20220101ALI20231228BHJP
【FI】
G06N99/00 180
G06N10/60
【請求項の数】 8
(21)【出願番号】P 2019219811
(22)【出願日】2019-12-04
(65)【公開番号】P2021089596
(43)【公開日】2021-06-10
【審査請求日】2022-12-02
(73)【特許権者】
【識別番号】518135412
【氏名又は名称】株式会社リクルート
(73)【特許権者】
【識別番号】899000068
【氏名又は名称】学校法人早稲田大学
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100139066
【弁理士】
【氏名又は名称】伊藤 健太郎
(72)【発明者】
【氏名】棚橋 耕太郎
(72)【発明者】
【氏名】田中 宗
【審査官】多賀 実
(56)【参考文献】
【文献】特開2019-046038(JP,A)
【文献】特表2019-512134(JP,A)
【文献】特開2017-219979(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 10/04-10/047
(57)【特許請求の範囲】
【請求項1】
制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、前記制約条件を表し、前記複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する設定部と、
前記アニーリングマシンによって求められた前記複数のスピンの値を取得する取得部と、
前記第2項の係数を、前記第2項の値に基づいて更新する更新部と、
を備える整数計画装置。
【請求項2】
前記更新部は、前記第2項の前記係数を、前記係数を固定して前記アニーリングマシンによって求められた前記第2項の期待値に基づいて更新する、
請求項1に記載の整数計画装置。
【請求項3】
前記更新部は、前記第2項の前記係数を固定して前記アニーリングマシンによって所定回数求められた前記複数のスピンの値が前記制約条件を満たす頻度を算出し、前記頻度が閾値以上である場合に、前記第2項の前記係数の更新を終了する、
請求項1又は2に記載の整数計画装置。
【請求項4】
前記設定部は、前記制約条件が不等号条件の場合、前記不等号条件を満たす値が値域となる関数による等号条件を表す前記第2項及び前記第3項を含むハミルトニアンを前記アニーリングマシンに設定する、
請求項1から3のいずれか一項に記載の整数計画装置。
【請求項5】
前記更新部は、前記第3項の係数を、前記第2項の前記係数の更新とともに定数倍して更新する、
請求項1から4のいずれか一項に記載の整数計画装置。
【請求項6】
前記設定部は、前記第1項と、複数の制約条件を表し、前記複数のスピンに関する複数の1次式の重み付き和で表される第2項と、前記複数の制約条件を表し、前記複数のスピンに関する複数の2次式の和で表される第3項とを含むハミルトニアンを前記アニーリングマシンに設定し、
前記更新部は、前記第2項の重み係数を、前記複数の1次式の値に基づいて更新する、
請求項1から5のいずれか一項に記載の整数計画装置。
【請求項7】
整数計画装置の演算部によって、
制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、前記制約条件を表し、前記複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することと、
前記アニーリングマシンによって求められた前記複数のスピンの値を取得することと、
前記第2項の係数を、前記第2項の値に基づいて更新することと、
を含む整数計画方法。
【請求項8】
整数計画装置に備えられた演算部を、
制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、前記制約条件を表し、前記複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する設定部、
前記アニーリングマシンによって求められた前記複数のスピンの値を取得する取得部、及び
前記第2項の係数を、前記第2項の値に基づいて更新する更新部、
として機能させる整数計画プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、整数計画装置、整数計画方法及び整数計画プログラムに関する。
【背景技術】
【0002】
近年、量子アニーリングマシン等のアニーリングマシンを、組合せ最適化問題を解くために用いる試みが行われている。組合せ最適化問題の多くは、制約付き整数計画問題として定式化することができるため、アニーリングマシンによって組合せ最適化問題を解くことは、制約付き整数計画問題を解くことに帰着される。
【0003】
制約付き整数計画問題を解く方法として、例えば、下記非特許文献1には、制約条件を表すスピンの二次式をハミルトニアンに加えて、制約条件を満たすスピンの配列が基底状態となるようにする方法が記載されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】D-Wave, "Using QUBOs to Represent Constraints",[online],[令和元年11月15日検索]、インターネット〈URL:https://docs.dwavesys.com/docs/latest/c_gs_6.html>
【発明の概要】
【発明が解決しようとする課題】
【0005】
非特許文献1に記載のように、制約条件を表すスピンの2次式と、目的関数との和をハミルトニアンとすることで、制約条件を満たしつつ、目的関数を最小化又は最大化するスピンの配列を求めることができる。具体的には、二値変数(スピン)をxと表し、目的関数をf(x)と表し、複数の制約条件をgi(x)=ciと表すとき、以下の数式(1)で表されるハミルトニアンの基底状態を求めることで、制約付き整数計画問題を解くことができる。ここで、iが属する集合Cは、制約条件の集合を表す。
【0006】
【数1】
【0007】
ここで、制約条件を表すスピンの2次式の係数μiを適切な値に設定しなければ、精度の高い解を得ることができない。そのため、従来、適切な解が得られるように係数μiをグリッドサーチ等で探索している。しかしながら、係数μiの探索は、係数の数が増えるほど困難となるため、制約条件の数が増えるほど精度の高い解を得ることが困難となる。
【0008】
そこで、本発明は、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる整数計画装置、整数計画方法及び整数計画プログラムを提供する。
【課題を解決するための手段】
【0009】
本発明の一態様に係る整数計画装置は、制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、制約条件を表し、複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する設定部と、アニーリングマシンによって求められた複数のスピンの値を取得する取得部と、第2項の係数を、第2項の値に基づいて更新する更新部と、を備える。
【0010】
この態様によれば、1次式で表される第2項と、2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することで、第2項の係数を第2項の値に基づいて更新することができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。
【0011】
上記態様において、更新部は、第2項の係数を、係数を固定してアニーリングマシンによって求められた第2項の期待値に基づいて更新してもよい。
【0012】
この態様によれば、第2項の係数の更新をより適切に行うことができ、係数の更新回数を減らすことができる。
【0013】
上記態様において、更新部は、第2項の係数を固定してアニーリングマシンによって所定回数求められた複数のスピンの値が制約条件を満たす頻度を算出し、頻度が閾値以上である場合に、第2項の係数の更新を終了してもよい。
【0014】
この態様によれば、制約条件を満たす確率が高い係数を定めることができ、アニーリングマシンによって求められる解の精度をより高くすることができる。
【0015】
上記態様において、設定部は、制約条件が不等号条件の場合、不等号条件を満たす値が値域となる関数による等号条件を表す第2項及び第3項を含むハミルトニアンをアニーリングマシンに設定してもよい。
【0016】
この態様によれば、等号条件のみならず、不等号条件で表される制約条件を含む整数計画問題の解をより精度よく求めることができる。
【0017】
上記態様において、更新部は、第3項の係数を、第2項の係数の更新とともに定数倍して更新してもよい。
【0018】
この態様によれば、第3項の係数の更新を適切に行うことができ、アニーリングマシンによって求められる解の精度をより高くすることができる。
【0019】
上記態様において、設定部は、第1項と、複数の制約条件を表し、複数のスピンに関する複数の1次式の重み付き和で表される第2項と、複数の制約条件を表し、複数のスピンに関する複数の2次式の和で表される第3項とを含むハミルトニアンをアニーリングマシンに設定し、更新部は、第2項の重み係数を、複数の1次式の値に基づいて更新してもよい。
【0020】
この態様によれば、複数の制約条件がある場合であっても、第3項の係数を複数の2次式について共通として、調整する係数を第2項の重み係数に絞ることができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。
【0021】
本発明の他の態様に係る整数計画方法は、整数計画装置の演算部によって、制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、制約条件を表し、複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することと、アニーリングマシンによって求められた複数のスピンの値を取得することと、第2項の係数を、第2項の値に基づいて更新することと、を含む。
【0022】
この態様によれば、1次式で表される第2項と、2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することで、第2項の係数を第2項の値に基づいて更新することができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。
【0023】
本発明の他の態様に係る整数計画プログラムは、整数計画装置に備えられた演算部を、制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、制約条件を表し、複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する設定部、アニーリングマシンによって求められた複数のスピンの値を取得する取得部、及び第2項の係数を、第2項の値に基づいて更新する更新部、として機能させる。
【0024】
この態様によれば、1次式で表される第2項と、2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することで、第2項の係数を第2項の値に基づいて更新することができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。
【発明の効果】
【0025】
本発明によれば、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる整数計画装置、整数計画方法及び整数計画プログラムを提供することができる。
【図面の簡単な説明】
【0026】
図1】本発明の実施形態に係る整数計画システムのネットワーク構成を示す図である。
図2】本実施形態に係る整数計画装置の機能ブロックを示す図である。
図3】本実施形態に係る整数計画装置の物理的構成を示す図である。
図4】本実施形態に係る整数計画装置によりナップサック問題を解いた場合の目的関数の平均値と、従来法でナップサック問題を解いた場合の目的関数の平均値との関係を示す図である。
図5】本実施形態に係る整数計画装置によりナップサック問題を解く場合の係数の更新回数と、従来法でナップサック問題を解く場合の係数の更新回数との関係を示す図である。
図6】本実施形態に係る整数計画装置によりナップサック問題を解く場合及び従来法によりナップサック問題を解く場合における正規化した目的関数の値を示す図である。
図7】本実施形態に係る整数計画装置により制約付きスピングラス問題を解いた場合の目的関数の平均値と、従来法で制約付きスピングラス問題を解いた場合の目的関数の平均値との関係を示す図である。
図8】本実施形態に係る整数計画装置により制約付きスピングラス問題を解く場合の係数の更新回数と、従来法で制約付きスピングラス問題を解く場合の係数の更新回数との関係を示す図である。
図9】本実施形態に係る整数計画装置により実行される整数計画処理のフローチャートである。
図10】本実施形態に係る整数計画装置により実行される整数計画処理のフローチャートである。
【発明を実施するための形態】
【0027】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0028】
図1は、本発明の実施形態に係る整数計画システム100のネットワーク構成を示す図である。整数計画システム100は、整数計画装置10及びアニーリングマシン20を含む。整数計画装置10及びアニーリングマシン20は、インターネット等の通信ネットワークNを介して互いに通信可能に構成される。
【0029】
整数計画装置10は、汎用のコンピュータで構成され、制約付き整数計画問題を、アニーリングマシン20を用いて解く。ここで、制約付き整数計画問題は、1又は複数の制約条件を満たすように、所定の目的関数を最小化又は最大化するような整数値を求める問題である。本実施形態では、整数値が0又は1である、0-1整数計画問題を解く場合について説明する。
【0030】
アニーリングマシン20は、イジングモデルのハミルトニアンの基底状態を求める専用コンピュータであり、整数計画装置10により設定されたハミルトニアンについて、その基底状態を求める。整数計画装置10は、制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、制約条件を表し、複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシン20に設定する。
【0031】
アニーリングマシン20は、量子アニーリングマシンであっても、一般のアニーリングマシンであってもよい。ここで、アニーリングマシンとは、二値変数を引数とするイジングモデルの目的関数(ハミルトニアン)を最小化又は最大化する二値変数の値を確率的に求める装置である。二値変数は、古典ビットや量子ビットで実現されてよい。アニーリングマシンは、目的関数がイジングモデルの形式でハードウェアによって実装された非ノイマン型コンピュータであってよく、自然計算(natural computing)を実行する計算機であってよい。アニーリングマシン20は、量子アニーリングマシンの他、FPGA(Field-Programmable Gate Array)によって構成されてよく、二値変数を引数とする目的関数を最小化又は最大化する二値変数の値を確率的に求めるものであればどのようなハードウェアによって構成されるものであってもよく、目的関数の最小又は最大を求める過程において量子現象を利用していてもよいし、利用していなくてもよい。
【0032】
図2は、本実施形態に係る整数計画装置10の機能ブロックを示す図である。整数計画装置10は、設定部11、取得部12及び更新部13を備える。
【0033】
設定部11は、制約付き整数計画問題の目的関数を表す第1項と、制約条件を表し、複数のスピンに関する1次式で表される第2項と、制約条件を表し、複数のスピンに関する2次式で表される第3項とを含むハミルトニアンをアニーリングマシン20に設定する。より一般には、設定部11は、制約付き整数計画問題の目的関数を表す第1項と、複数の制約条件を表し、複数のスピンに関する複数の1次式の重み付き和で表される第2項と、複数の制約条件を表し、複数のスピンに関する複数の2次式の和で表される第3項とを含むハミルトニアンをアニーリングマシン20に設定する。
【0034】
二値変数(スピン)ベクトルをxと表し、目的関数をf(x)と表し、複数の制約条件をgi(x)=ciと表すとき、設定部11は、以下の数式(2)で表されるハミルトニアンをアニーリングマシン20に設定する。
【0035】
【数2】
【0036】
ここで、λiは、第2項に含まれる複数の1次式の重み係数であり、μは、第3項の係数である。従来の方法において設定されていたハミルトニアン(数式(1))と比較すると、係数λiが追加されているものの、第3項の係数μが、複数の制約条件を表す複数の2次式について共通となっている点が異なる。このように、複数の制約条件がある場合であっても、第3項の係数を複数の2次式について共通として、調整する係数を第2項の重み係数に絞ることができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。なお、第3稿の係数μを複数の制約条件毎に設定し、係数μiとしてもよい。
【0037】
取得部12は、アニーリングマシン20によって求められた複数のスピンの値を取得する。取得部12は、係数λi及びμを固定して、アニーリングマシン20によって複数回基底状態を求め、それぞれの場合の複数のスピンの値を取得してよい。
【0038】
更新部13は、第2項の係数を、第2項の値に基づいて更新する。より一般的には、更新部13は、第2項の重み係数λiを、複数の1次式の値に基づいて更新する。また、更新部13は、第3項の係数μを、第2項の係数の更新とともに定数倍して更新する。
【0039】
本実施形態に係る整数計画装置10によれば、1次式で表される第2項と、2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定することで、第2項の係数を第2項の値に基づいて更新することができ、係数の探索負荷を軽減することができ、アニーリングマシンによって制約付き整数計画問題の解をより精度よく求めることができる。また、第3項の係数の更新を適切に行うことができ、アニーリングマシンによって求められる解の精度をより高くすることができる。
【0040】
更新部13は、第2項の係数を、その係数を固定してアニーリングマシン20によって求められた第2項の期待値に基づいて更新してよい。具体的には、更新部13は、
以下の数式(3)により、第2項の係数λi及び第3項の係数μを更新する。ここで、<gi(x)-ci>は、アニーリングマシン20によって求められた第2項の期待値を表す。また、αは、任意のパラメータであり、例えば1.1~1.2程度としてよい。
【0041】
【数3】
【0042】
このように、第2項の期待値に基づいて係数を更新することで、第2項の係数の更新をより適切に行うことができ、係数の更新回数を減らすことができる。
【0043】
更新部13は、第2項の係数を固定してアニーリングマシン20によって所定回数求められた複数のスピンの値が制約条件を満たす頻度を算出し、その頻度が閾値以上である場合に、第2項の係数の更新を終了してよい。このようにして、制約条件を満たす確率が高い係数を定めることができ、アニーリングマシンによって求められる解の精度をより高くすることができる。
【0044】
図3は、本実施形態に係る整数計画装置10の物理的構成を示す図である。整数計画装置10は、演算部に相当するCPU(Central Processing Unit)10aと、記憶部に相当するRAM(Random Access Memory)10bと、記憶部に相当するROM(Read only Memory)10cと、通信部10dと、入力部10eと、表示部10fと、を有する。これらの各構成は、バスを介して相互にデータ送受信可能に接続される。なお、本例では整数計画装置10が一台のコンピュータで構成される場合について説明するが、整数計画装置10は、複数のコンピュータが組み合わされて実現されてもよい。また、図3で示す構成は一例であり、整数計画装置10はこれら以外の構成を有してもよいし、これらの構成のうち一部を有さなくてもよい。
【0045】
CPU10aは、RAM10b又はROM10cに記憶されたプログラムの実行に関する制御やデータの演算、加工を行う制御部である。CPU10aは、制約なし整数計画問題を、アニーリングマシンを用いて解くプログラム(整数計画プログラム)を実行する演算部である。CPU10aは、入力部10eや通信部10dから種々のデータを受け取り、データの演算結果を表示部10fに表示したり、RAM10bに格納したりする。
【0046】
RAM10bは、記憶部のうちデータの書き換えが可能なものであり、例えば半導体記憶素子で構成されてよい。RAM10bは、CPU10aが実行するプログラム、ハミルトニアンに含まれる相互作用や局所磁場に関するデータを記憶してよい。なお、これらは例示であって、RAM10bには、これら以外のデータが記憶されていてもよいし、これらの一部が記憶されていなくてもよい。
【0047】
ROM10cは、記憶部のうちデータの読み出しが可能なものであり、例えば半導体記憶素子で構成されてよい。ROM10cは、例えば広告配信プログラムや、書き換えが行われないデータを記憶してよい。
【0048】
通信部10dは、整数計画装置10を他の機器に接続するインターフェースである。通信部10dは、インターネット等の通信ネットワークNに接続されてよい。
【0049】
入力部10eは、ユーザからデータの入力を受け付けるものであり、例えば、キーボード及びタッチパネルを含んでよい。
【0050】
表示部10fは、CPU10aによる演算結果を視覚的に表示するものであり、例えば、LCD(Liquid Crystal Display)により構成されてよい。表示部10fは、例えば、アニーリングマシンによって求められた複数のスピンの配列を表示してよい。
【0051】
整数計画プログラムは、RAM10bやROM10c等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部10dにより接続される通信ネットワークを介して提供されてもよい。整数計画装置10では、CPU10aが整数計画プログラムを実行することにより、図2を用いて説明した様々な動作が実現される。なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、整数計画装置10は、CPU10aとRAM10bやROM10cが一体化したLSI(Large-Scale Integration)を備えていてもよい。
【0052】
[第1実施例]
第1実施例として、本実施形態に係る整数計画装置10により、アニーリングマシン20を用いてナップサック問題を解く例を説明する。ナップサック問題とは、i番目(i=1~N)の物品に関する価値vi及び重量wiが与えられた場合に、重量の合計を所定値W以下とする制約条件を満たしつつ、価値の合計を最大化する問題である。
【0053】
従来法では、以下の数式(4)に示すハミルトニアンの基底状態となる二値変数xiを求める。係数μは、定数α>1を用いて、μ←αμとして制約条件を満たすようになるまで(又は制約条件を満たす頻度が閾値を超えるまで)更新を繰り返すことで定められる。
【0054】
【数4】
【0055】
ここで、v(x)、w(x)及びh(y)は、以下の数式(5)で定義される。また、yi(i=1~d)は0又は1の値を取る二値変数であり、d=floor(log2(W-1))+1である。floor(・)は、引数を、引数以下の整数に切り下げる関数である。h(y)は、1からWまでのいずれかの値を取る関数となる。
【0056】
【数5】
【0057】
本実施形態に係る整数計画装置10は、以下の数式(6)に示すハミルトニアンの基底状態となる二値変数xiを求める。
【0058】
【数6】
【0059】
ここで、v(x)、w(x)及びh(y)は、数式(5)で定義される。第2項の係数λ及び第3項の係数μは、数式(3)により更新する。
【0060】
本実施形態に係る整数計画装置10の設定部11は、制約条件が不等号条件の場合、不等号条件を満たす値が値域となる関数による等号条件を表す第2項及び第3項を含むハミルトニアンをアニーリングマシン20に設定する。本例の場合、設定部11は、関数h(y)による等号条件を表す第2項及び第3項を含むハミルトニアンをアニーリングマシン20に設定する。このようにして、等号条件のみならず、不等号条件で表される制約条件を含む整数計画問題の解をより精度よく求めることができる。
【0061】
図4は、本実施形態に係る整数計画装置10によりナップサック問題を解いた場合の目的関数の平均値と、従来法でナップサック問題を解いた場合の目的関数の平均値との関係を示す図である。同図では、縦軸に従来法でナップサック問題を解いた場合の目的関数v(x)の平均値を示し、横軸に本実施形態に係る整数計画装置10によりナップサック問題を解いた場合の目的関数v(x)の平均値を示している。同図では、価値vi及び重量wiをランダムに生成して、従来法及び本実施形態に係る整数計画装置10によって、それぞれアニーリングマシン20を用いて解を求めた場合の目的関数v(x)の平均値をプロットしている。グラフ中に示した破線は、従来法による目的関数v(x)の平均値と、本実施形態に係る整数計画装置10による目的関数v(x)の平均値とが等しくなる場合を示している。また、同図では、ナップサック問題の物品数NがN=20である場合を丸印で示し、N=30である場合を三角印で示し、N=40である場合を四角印で示している。
【0062】
同図によれば、N=20,30,40いずれの場合でも、本実施形態に係る整数計画装置10によりナップサック問題を解いた場合の目的関数v(x)の平均値は、従来法でナップサック問題を解いた場合の目的関数v(x)の平均値よりも大きい。よって、本実施形態に係る整数計画装置10によれば、従来法の場合よりも大きな目的関数v(x)の値を達成できる確率が高く、制約付き整数計画問題についてより精度の高い解が得られていることが読み取れる。このような精度の違いは、ハミルトニアンに含まれる係数を適切に決定できるか否かにより生じていると考えられる。従来法では、係数μを適切に決定できなかったり、収束させるまでに時間がかかったりするが、本実施形態に係る整数計画装置10によれば、係数λ,μをより適切かつより迅速に決定することができる。
【0063】
図5は、本実施形態に係る整数計画装置10によりナップサック問題を解く場合の係数の更新回数と、従来法でナップサック問題を解く場合の係数の更新回数との関係を示す図である。ここで、更新回数は、従来法の場合及び本実施形態に係る整数計画装置10の場合いずれも、アニーリングマシン20によって求められる複数のスピンの値が制約条件を満たす頻度が閾値以上となるまでの回数である。
【0064】
同図では、縦軸に従来法でナップサック問題を解く場合の係数μの更新回数を示し、横軸に本実施形態に係る整数計画装置10によりナップサック問題を解く場合の係数λ,μの更新回数を示している。同図では、図4の場合と同様に、価値vi及び重量wiをランダムに生成して、従来法及び本実施形態に係る整数計画装置10によって、それぞれアニーリングマシン20を用いて解を求める場合の係数の更新回数をプロットしている。また、プロットの円の面積は、頻度に比例している。また、同図では、ナップサック問題の物品数NがN=20である場合を一点鎖線で示し、N=30である場合を破線で示し、N=40である場合を実線で示している。
【0065】
同図によれば、N=20,30,40いずれの場合でも、本実施形態に係る整数計画装置10によりナップサック問題を解く場合の係数の更新回数は、従来法でナップサック問題を解く場合の係数の更新回数よりも少ない。よって、本実施形態に係る整数計画装置10によれば、従来法の場合よりも係数λ,μをより高速に収束させることができていることが読み取れる。
【0066】
図6は、本実施形態に係る整数計画装置10によりナップサック問題を解く場合及び従来法によりナップサック問題を解く場合における正規化した目的関数の値を示す図である。同図では、縦軸に従来法及び本実施形態に係る整数計画装置10でナップサック問題を解いた場合の目的関数v(x)の平均値を、最適解の場合の目的関数の値で正規化した値を示し、横軸にランダムに生成した価値vi及び重量wiのナップサック問題を識別する問題IDを示している。同図は、価値vi及び重量wiが与えられた各問題について、係数λ,μが収束した後に得られた目的関数の値を箱ひげ図で示している。また、同図では、ナップサック問題の物品数NがN=40である場合の結果を示している。
【0067】
同図によれば、20個の問題全てについて、本実施形態に係る整数計画装置10によりナップサック問題を解いた場合の正規化した目的関数の値は1.0に近く、従来法でナップサック問題を解いた場合の正規化した目的関数の値(0.5~0.7程度)よりも大きい。同図から、本実施形態に係る整数計画装置10によれば、従来法の場合よりも目的関数の値が大きいだけでなく、ほとんどの場合に最適解が得られていることが読み取れる。
【0068】
[第2実施例]
第2実施例として、本実施形態に係る整数計画装置10により、アニーリングマシン20を用いて制約付きスピングラス問題を解く例を説明する。制約付きスピングラス問題とは、ランダムに生成された相互作用qij(i,j=1~N)が与えられた場合に、二値変数xiの合計がBとなるように、Σi≦jijijを最大化する問題である。本例では、qijを平均0、分散1の正規分布によって生成した。
【0069】
従来法では、以下の数式(7)に示すハミルトニアンの基底状態となる二値変数xiを求める。係数μは、定数α>1を用いて、μ←αμとして制約条件を満たすようになるまで(又は制約条件を満たす頻度が閾値を超えるまで)更新を繰り返すことで定められる。
【0070】
【数7】
【0071】
本実施形態に係る整数計画装置10は、以下の数式(8)に示すハミルトニアンの基底状態となる二値変数xiを求める。ここで、第2項の係数λ及び第3項の係数μは、数式(3)により更新する。
【0072】
【数8】
【0073】
図7は、本実施形態に係る整数計画装置10により制約付きスピングラス問題を解いた場合の目的関数の平均値と、従来法で制約付きスピングラス問題を解いた場合の目的関数の平均値との関係を示す図である。
同図では、縦軸に従来法で制約付きスピングラス問題を解いた場合の目的関数Σi≦jijijの平均値を示し、横軸に本実施形態に係る整数計画装置10により制約付きスピングラス問題を解いた場合の目的関数Σi≦jijijの平均値を示している。同図では、相互作用qijをランダムに生成して、従来法及び本実施形態に係る整数計画装置10によって、それぞれアニーリングマシン20を用いて解を求めた場合の目的関数Σi≦jijijの平均値をプロットしている。グラフ中に示した破線は、従来法による目的関数Σi≦jijijの平均値と、本実施形態に係る整数計画装置10による目的関数Σi≦jijijの平均値とが等しくなる場合を示している。また、同図では、制約付きスピングラス問題の制約パラメータBがB=8である場合を丸印で示し、B=16である場合を三角印で示し、B=32である場合を四角印で示している。
【0074】
同図によれば、B=8,16,32いずれの場合でも、本実施形態に係る整数計画装置10により制約付きスピングラス問題を解いた場合の目的関数Σi≦jijijの平均値は、従来法で制約付きスピングラス問題を解いた場合の目的関数Σi≦jijijの平均値の平均値よりも大きい場合が多い。よって、本実施形態に係る整数計画装置10によれば、従来法の場合よりも大きな目的関数Σi≦jijijの値を達成できる確率が高く、制約付きスピングラス問題についてより精度の高い解が得られていることが読み取れる。このような精度の違いは、ハミルトニアンに含まれる係数を適切に決定できるか否かにより生じていると考えられる。従来法では、係数μを適切に決定できなかったり、収束させるまでに時間がかかったりするが、本実施形態に係る整数計画装置10によれば、係数λ,μをより適切かつより迅速に決定することができる。
【0075】
図8は、本実施形態に係る整数計画装置10により制約付きスピングラス問題を解く場合の係数の更新回数と、従来法で制約付きスピングラス問題を解く場合の係数の更新回数との関係を示す図である。ここで、更新回数は、従来法の場合及び本実施形態に係る整数計画装置10の場合いずれも、アニーリングマシン20によって求められる複数のスピンの値が制約条件を満たす頻度が閾値以上となるまでの回数である。
【0076】
同図では、縦軸に従来法で制約付きスピングラス問題を解く場合の係数μの更新回数を示し、横軸に本実施形態に係る整数計画装置10により制約付きスピングラス問題を解く場合の係数λ,μの更新回数を示している。同図では、図7の場合と同様に、相互作用qijをランダムに生成して、従来法及び本実施形態に係る整数計画装置10によって、それぞれアニーリングマシン20を用いて解を求める場合の係数の更新回数をプロットしている。また、プロットの円の面積は、頻度に比例している。また、同図では、制約付きスピングラス問題の制約パラメータBがB=8である場合を一点鎖線で示し、B=16である場合を破線で示し、B=32である場合を実線で示している。
【0077】
同図によれば、B=8,16,32いずれの場合でも、本実施形態に係る整数計画装置10により制約付きスピングラス問題を解く場合の係数の更新回数は、従来法で制約付きスピングラス問題を解く場合の係数の更新回数よりも少ない。よって、本実施形態に係る整数計画装置10によれば、従来法の場合よりも係数λ,μをより高速に収束させることができていることが読み取れる。
【0078】
図9は、本実施形態に係る整数計画装置10により実行される整数計画処理のフローチャートである。同図では、制約条件が1つである場合の整数計画処理のフローチャートを示している。
【0079】
はじめに、整数計画装置10は、目的関数を表す第1項と、制約条件を表し、1次式で表される第2項と、制約条件を表し、2次式で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する(S10)。
【0080】
その後、整数計画装置10は、アニーリングマシンによって求められた複数のスピンの値を取得し(S11)、第2項の係数を固定してアニーリングマシンによって求められた第2項の期待値に基づいて、第2項の係数を更新する(S12)。また、整数計画装置10は、第3項の係数を定数倍して更新する(S13)。
【0081】
整数計画装置10は、複数のスピンの値が制約条件を満たす頻度を算出する(S14)。そして、整数計画装置10は、頻度が閾値以上である場合(S15:YES)、第2項の係数及び第3項の係数を決定する(S16)。なお、整数計画装置10は、決定された第2項の係数及び第3項の係数を含むハミルトニアンをアニーリングマシンに設定して、制約付き整数計画装置の解を求めてよい。一方、頻度が閾値未満である場合(S15:NO)、整数計画装置10は、処理S11~S15を再び実行する。
【0082】
図10は、本実施形態に係る整数計画装置10により実行される整数計画処理のフローチャートである。同図では、制約条件が2以上である場合の整数計画処理のフローチャートを示している。
【0083】
はじめに、整数計画装置10は、目的関数を表す第1項と、複数の制約条件を表し、複数の1次式の重み付き和で表される第2項と、複数の制約条件を表し、複数の2次式の和で表される第3項とを含むハミルトニアンをアニーリングマシンに設定する(S20)。
【0084】
その後、整数計画装置10は、アニーリングマシンによって求められた複数のスピンの値を取得し(S21)、第2項の重み係数を固定してアニーリングマシンによって求められた複数の1次式の期待値に基づいて、第2項の重み係数を更新する(S22)。また、整数計画装置10は、第3項の係数を定数倍して更新する(S23)。
【0085】
整数計画装置10は、複数のスピンの値が制約条件を満たす頻度を算出する(S24)。そして、整数計画装置10は、頻度が閾値以上である場合(S25:YES)、第2項の重み係数及び第3項の係数を決定する(S16)。なお、整数計画装置10は、決定された第2項の重み係数及び第3項の係数を含むハミルトニアンをアニーリングマシンに設定して、制約付き整数計画装置の解を求めてよい。一方、頻度が閾値未満である場合(S25:NO)、整数計画装置10は、処理S21~S25を再び実行する。
【0086】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【符号の説明】
【0087】
10…整数計画装置、10a…CPU、10b…RAM、10c…ROM、10d…通信部、10e…入力部、10f…表示部、11…設定部、12…取得部、13…更新部、20…アニーリングマシン、100…整数計画システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10