(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】求解装置、求解方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240813BHJP
G06F 17/10 20060101ALI20240813BHJP
【FI】
G06N99/00 180
G06F17/10 Z
(21)【出願番号】P 2021087125
(22)【出願日】2021-05-24
【審査請求日】2023-11-15
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】301063496
【氏名又は名称】東芝デジタルソリューションズ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 賢
【審査官】福西 章人
(56)【参考文献】
【文献】国際公開第2020/196862(WO,A1)
【文献】後藤 隼人,シミュレーテッド分岐アルゴリズム,日本オペレーションズ・リサーチ学会 2020年春季研究発表会アブストラクト集,2020年,pp.298-299,ISSN 1883-1893
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
0-1組合せ最適化問題を、前記0-1組合せ最適化問題に含まれる複数の離散変数を用いた不等式により表される1または複数の制約条件の下で解く求解装置であって、
第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記0-1組合せ最適化問題の解を出力する出力部と、
を備え、
前記複数の要素は、前記複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、前記第1変数を前記第2変数に基づき更新し、
前記複数の要素のそれぞれについて、前記第2変数を前記第1変数に基づき更新し、
前記1または複数の制約条件のそれぞれについて、前記複数の離散変数のそれぞれに対応する前記第1変数を代入した前記不等式を満たさない場合、前記複数の要素のそれぞれの前記第2変数から、前記不等式の境界から前記複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値を減算する
求解装置。
【請求項2】
前記出力部は、
前記終了時刻における前記複数の要素のそれぞれについて、前記第1変数を予め設定されたしきい値により2値化した離散変数の値を算出し、
算出した前記複数の離散変数の値を前記0-1組合せ最適化問題の解として出力する
請求項1に記載の求解装置。
【請求項3】
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第1変数を更新した後に前記第2変数を更新し、
前記第2変数を更新した後に前記第2変数から前記補正値を減算する
請求項2に記載の求解装置。
【請求項4】
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第2変数を更新した後に前記第1変数を更新し、
前記第2変数を更新した後、且つ、前記第1変数を更新する前に、前記第2変数から前記補正値を減算する
請求項2に記載の求解装置。
【請求項5】
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、対象時刻における前記第1変数を、前記対象時刻より単位時間前の直前時刻における前記第1変数に、前記第2変数と予め定められた定数と前記単位時間とを乗算した値を加算することにより、算出する
請求項2に記載の求解装置。
【請求項6】
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、
前記複数の要素のそれぞれの前記第1変数と、対象要素と前記複数の要素のそれぞれとの組毎に前記0-1組合せ最適化問題により定められる作用係数とに基づき、外力を算出し、
時間経過に従って増加する関数に基づき定まる値と、前記対象要素の前記第1変数とを乗算した時間発展値を算出し、
前記直前時刻における前記第2変数に、前記時間発展値と前記外力とを加算した値に前記単位時間を乗算した値を、加算することにより、前記対象時刻における前記第2変数を算出する
請求項5に記載の求解装置。
【請求項7】
前記0-1組合せ最適化問題は、N個の離散変数を含み、
前記更新部は、前記N個の離散変数のうちのi番目の離散変数に対応するi番目の要素の、前記対象時刻における前記第1変数を式(101)または式(102)により算出し、
【数1】
Nは、2以上の整数であり、
iは、1からNまでの整数であり、
Dは、前記定数であり、
Δtは、前記単位時間であり、
tは、前記直前時刻であり、
t+Δtは、前記対象時刻であり、
x
i(t)は、前記i番目の要素の前記直前時刻における前記第1変数であり、
y
i(t)は、前記i番目の要素の前記直前時刻における前記第2変数であり、
x
i(t+Δt)は、前記i番目の要素の前記対象時刻における前記第1変数であり、
y
i(t+Δt)は、前記i番目の要素の前記対象時刻における前記第2変数である
請求項6に記載の求解装置。
【請求項8】
前記0-1組合せ最適化問題は、0-1二次計画問題であり、
前記更新部は、前記i番目の要素の前記対象時刻における前記第2変数を式(103)または式(104)により算出し、
【数2】
g
i(t)およびg
i(t+Δt)は、前記時間発展値であり、
f
i(t+Δt)は、式(105)により表され、f
i(t)は、式(106)により表され、
【数3】
z
i(t+Δt)は、式(107)により表され、
z
i(t)は、式(108)により表され、
【数4】
jは、1からNまでの整数であり、
h
iは、N個の局所磁場係数を含む予め定められた配列に含まれる、i番目の局所磁場係数であり、
J
i,jは、N×N個の結合係数を含む予め定められた行列に含まれる、i行、j列の結合係数であり、
cは、予め定められた実数であり、
x
j(t)は、前記N個の離散変数のうちのj番目の離散変数に対応するj番目の要素の前記直前時刻における前記第1変数であり、
x
j(t+Δt)は、前記j番目の要素の前記対象時刻における前記第1変数であり、
α(t)は、tを変数とする予め定められた関数である
請求項7に記載の求解装置。
【請求項9】
g
i(t)は、式(109)により表され、
g
i(t+Δt)は、式(110)により表され、
【数5】
p(t)は、tを変数とする予め定められた関数であり、tに従って増加し、tが前記初期時刻において0となり、tが前記終了時刻において1となり、
Kは、予め定められた定数である
請求項8に記載の求解装置。
【請求項10】
前記1または複数の制約条件のうちのm番目の制約条件は、式(111)により表され、
【数6】
mは、1以上の整数であり、
x
iは、i番目の離散変数であり、
ω
m,iは、i番目の離散変数に乗算される係数であり、
W
mは、予め定められた定数である
請求項8または9に記載の求解装置。
【請求項11】
前記更新部は、前記i番目の要素の前記第2変数に対する前記補正値として、式(112)により表されるr
m,iを算出し、
【数7】
A
mは、前記m番目の制約条件に対して予め定められた係数であり、
kは、予め定められた1以上の整数であり、
S
mは、式(113)または式(114)により表される
【数8】
請求項10に記載の求解装置。
【請求項12】
前記更新部は、前記i番目の要素の前記第2変数に対する前記補正値として、式(115)により表されるr
m,iを算出し、
【数9】
A
mは、前記m番目の制約条件に対して予め定められた係数であり、
kは、予め定められた1以上の整数であり、
S
mは、式(116)または式(117)により表され、
【数10】
B
mは、0以上1以下の値であり、前記m番目の制約条件に対して予め定められた係数であり、
E
mは、式(118)により表される
【数11】
請求項10に記載の求解装置。
【請求項13】
前記1または複数の制約条件のうちの一つの制約条件は、式(119)により表され、
【数12】
x
iは、i番目の離散変数であり、
x
jは、j番目の離散変数であり、
Q
i,jは、半正定値行列に含まれるi行、j列の値であり、
qは、予め定められた定数である
請求項8または9に記載の求解装置。
【請求項14】
前記更新部は、前記i番目の要素の前記第2変数に対する前記補正値として、式(120)または(121)により表されるr
iを算出し、
【数13】
Aは、対応する制約条件に対して予め定められた係数であり、
kは、予め定められた1以上の整数であり、
Sは、式(120)の場合は式(122)により表され、式(121)の場合には式(123)により表される
【数14】
請求項13に記載の求解装置。
【請求項15】
情報処理装置により、0-1組合せ最適化問題を、前記0-1組合せ最適化問題に含まれる複数の離散変数を用いた不等式により表される1または複数の制約条件の下で解く求解方法であって、
前記情報処理装置により、第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新ステップと、
前記情報処理装置により、前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記0-1組合せ最適化問題の解を出力する出力ステップと、
を含み、
前記複数の要素は、前記複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記単位時間毎の更新ステップにおいて、前記情報処理装置は、
前記複数の要素のそれぞれについて、前記第1変数を前記第2変数に基づき更新し、
前記複数の要素のそれぞれについて、前記第2変数を前記第1変数に基づき更新し、
前記1または複数の制約条件のそれぞれについて、前記複数の離散変数のそれぞれに対応する前記第1変数を代入した前記不等式を満たさない場合、前記複数の要素のそれぞれの前記第2変数から、前記不等式の境界から前記複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値を減算する
求解方法。
【請求項16】
情報処理装置を、0-1組合せ最適化問題を、前記0-1組合せ最適化問題に含まれる複数の離散変数を用いた不等式により表される1または複数の制約条件の下で解く求解装置として機能させるためのプログラムであって、
前記情報処理装置を、
第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記0-1組合せ最適化問題の解を出力する出力部と、
して機能させ、
前記複数の要素は、前記複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、前記第1変数を前記第2変数に基づき更新し、
前記複数の要素のそれぞれについて、前記第2変数を前記第1変数に基づき更新し、
前記1または複数の制約条件のそれぞれについて、前記複数の離散変数のそれぞれに対応する前記第1変数を代入した前記不等式を満たさない場合、前記複数の要素のそれぞれの前記第2変数から、前記不等式の境界から前記複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値を減算する
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、求解装置、求解方法およびプログラムに関する。
【背景技術】
【0002】
従来、一次不等式による制約の下でイジング問題を解く方法として、スラック変数を利用した定式化をする方法が知られている。この方法は、一次不等式の定数項をWmとした場合、目的関数に、W個(Wは自然数)のスラック変数により表されたペナルティ項を加算して、イジング問題を解く。従って、この方法は、目的関数にN個の決定変数が含まれるならば、N+W個のイジングスピンを含むイジング問題を解く。また、例えば、M個の一次不等式による制限の下でイジング問題を解くのであれば、この方法は、N+{W1+…+Mm+…+WM}個のイジングスピンを含むイジング問題を解く。なお、Mmは、M個の一次不等式のうちのm番目の一次不等式の定数項であり、自然数を表す。
【0003】
株式のポートフォリオ最適化問題は、リスク回避のために、銘柄の投資割合を決定変数とし、複数の決定変数のそれぞれに重みを乗算した合計を上限値以下とする制約条件の下で、解かれる場合が多い。制約条件は、下記の式のような一次不等式により表される。
xA1・ωA1+xA2・ωA2+…+xSm・ωSm+…≦Wm
【0004】
この式において、Wmは、上限値を表す。xA1は、銘柄Aの投資割合を例えば1%とする決定変数を表す。xA2は、銘柄Aの投資割合を例えば2%とする決定変数を表す。xSsは、銘柄Sの投資割合をs%とする決定変数を表す。また、ωA1、ωA2およびωSmは、重みを表す。
【0005】
例えば、株式のポートフォリオ最適化問題は、複数の銘柄を、業種または企業規模毎にグループ化し、グループ毎に上記の制約条件を設定する。例えば、東京証券取引所は、約2000銘柄を取り扱っている。また、東京証券取引所は、これら約2000銘柄を、33種類の業種および3種類の規模に分類している。従って、東京証券所で取り扱われている約2000銘柄は、33業種×3規模の合計99個のグループに分けることができる。
【0006】
1つの銘柄の投資割合を1%から100%までの100段階で離散化して、東京証券取引所により取り扱われる2000銘柄に対してポートフォリオ最適化問題を解く場合、目的関数に含まれる決定変数の個数は、200000個となる。
【0007】
これに対して、99個のグループの全てに対して一次不等式による制約条件を設定するとする。上限値(Wm)を1000段階で離散化して、スラッグ変数を利用した定式化をした場合、スラッグ変数の個数は、99000個となる。このため、99個のグループの全てに対して一次不等式による制約条件を設定したポートフォリオ最適化問題を解く場合、イジングスピンの個数が20000+99000=299000個のイジング問題を解かなければならない。
【0008】
このように、スラック変数を利用した定式化をしてポートフォリオ最適化問題を解く場合、制約条件が無い場合と比較して、例えば東京証券取引所の例では、イジングスピンの数が50%程度増加してしまう。ソルバー等によりイジング問題を解く場合、イジングスピンの数が増加してしまうと、演算量および演算時間が多くなり、求解のためのコストが大きくなってしまう。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2017-73106号公報
【文献】特開2019-145010号公報
【文献】特開2021-043589号公報
【文献】国際公開第2020/196915号
【非特許文献】
【0010】
【文献】H. Goto,“Bifurcation-based adiabatic quantum computation with a nonlinear oscillator network”, Sci. Rep. 6, 21686 (2016).
【文献】Hayato Goto, Kosuke Tatsumura, Alexander R. Dixon, “Combinatorial optimization by simulating adiabatic bifurcations in nonlinear Hamiltonian systems”,Science Advances, Vol. 5, no. 4, eaav2372, 19 Apr. 2019
【文献】土屋和雄,西山岳宏,辻田勝吉, “分岐特性を用いた組合せ最適化問題の近似解法”, [online],[2021年5月17日検索],インターネット, <http://www.ynl.t.u-tokyo.ac.jp/project/RobotBrainCREST/publications/pdf/tsuchiya/4_01.pdf>
【文献】土屋和雄,西山岳宏,辻田勝吉, “分岐特性を用いた組合せ最適化問題の近似解法 第2報:決定論的アニーリングアルゴリズムの解析”, [online],[2021年5月17日検索],インターネット, <http://www.ynl.t.u-tokyo.ac.jp/project/RobotBrainCREST/publications/pdf/tsuchiya/4_02.pdf>
【文献】A. Lucas, “Ising formulations of many NP problems”, Frontiers in Physics 2, 5 (2014), DOI: 10.3389/fphy.2014.00005
【文献】Andrew Lucas, “Ising formulations of many NP problems”,Frontiers in Physics, Interdisciplinary Physics, Volume 2, Articles 5, 12 February 2014
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明が解決しようとする課題は、不等式により表される1または複数の制約条件の下で0-1組合せ最適化問題を少ない演算コストで解くことができる求解装置、求解方法およびプログラムを提供する。
【課題を解決するための手段】
【0012】
実施形態に係る求解装置は、0-1組合せ最適化問題を、前記0-1組合せ最適化問題に含まれる複数の離散変数を用いた不等式により表される1または複数の制約条件の下で解く。前記求解装置は、更新部と、出力部とを備える。前記更新部は、第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する。前記出力部は、前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記0-1組合せ最適化問題の解を出力する。前記複数の要素は、前記複数の離散変数に対応する。前記第1変数および前記第2変数のそれぞれは、実数により表される。前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、前記第1変数を前記第2変数に基づき更新する。前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、前記第2変数を前記第1変数に基づき更新する。前記単位時間毎の更新処理において、前記更新部は、前記1または複数の制約条件のそれぞれについて、前記複数の離散変数のそれぞれに対応する前記第1変数を代入した前記不等式を満たさない場合、前記複数の要素のそれぞれの前記第2変数から、前記不等式の境界から前記複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値を減算する。
【図面の簡単な説明】
【0013】
【
図1】
図1は、シミュレーテッド分岐アルゴリズムの分岐現象を示す図である。
【
図2】
図2は、本実施形態に係る求解装置の機能構成を示す図である。
【
図3】
図3は、更新部の処理の流れの第1例を示すフローチャートである。
【
図4】
図4は、更新部の処理の流れの第2例を示すフローチャートである。
【
図5】
図5は、制約処理の第1例の処理の流れを示すフローチャートである。
【
図6】
図6は、制約処理の第2例の処理の流れを示すフローチャートである。
【
図7】
図7は、制約処理の第3例の処理の流れを示すフローチャートである。
【
図10】
図10は、記憶部に記憶されるデータを示す図である。
【
図12】
図12は、ストレージに記憶されるデータを示す図である。
【発明を実施するための形態】
【0014】
(0-1組合せ最適化問題)
イジング問題を解くために使われる装置の一例として、イジングマシンが挙げられる。イジングマシンは、イジングモデルの基底状態のエネルギーを計算する。これまで、イジングモデルは、主に強磁性体や相転移現象のモデルとして使われることが多かった。しかし、近年、イジングモデルは、0-1組合せ最適化問題を解くためのモデルとしての利用が増えている。式(1)は、イジングモデルのエネルギーを示す。
【数1】
【0015】
si、sjはスピンを表す。スピンは、+1または-1のいずれかの値をとる2値変数である。siは、i番目のスピンを表す。sjは、j番目のスピンを表す。iおよびjは、1以上、N以下の整数である。Nは、スピンの数を表し、2以上の整数である。hiは、i番目のスピンに作用する局所磁場を表す。Jは、2つのスピン間に作用する力を表す結合係数の行列である。Jは、対角成分が0である実対称行列である。Jijは、Jのi行j列の要素を表す。つまり、Jijは、i番目のスピンと、j番目のスピンとの間に作用する力を表す結合係数である。
【0016】
イジングマシンは、式(1)により表されるエネルギーEIsingを目的関数とし、エネルギーEIsingを可能な限り小さくする解を算出する。エネルギーEIsingが最小値となるイジングモデルの解(s1、s2、・・・、sN)は、最適解と呼ばれる。ただし、イジングモデルの解は、最適解ではなく、エネルギーEIsingが最小値に近い近似解であってもよい。すなわち、イジング問題は、最適解のみならず、近似解を算出する問題であってもよい。
【0017】
また、0または1のいずれかの値をとる離散変数(ビット)の2次関数を目的関数とする0-1組合せ最適化問題は、0-1二次計画問題と呼ばれる。離散変数(ビット)は、(1+si)/2の演算を用いることにより、siに変換される。つまり、0-1二次計画問題は、式(1)で表されるイジング問題と等価であるといえる。従って、0-1二次計画問題は、イジング問題に変換し、イジングマシンにより解を算出することが可能である。
【0018】
イジングマシンは、例えば、量子アニーラ、コヒーレントイジングマシンおよび量子分岐マシン等によりハードウェア実装される。量子アニーラは、超伝導回路を使って量子アニーリングを実現する。コヒーレントイジングマシンは、光パラメトリック発振器で形成されたネットワークの発振現象を利用する。量子分岐マシンは、カー効果を有するパラメトリック発振器のネットワークにおける量子力学的な分岐現象を利用する。これらのハードウェア実装されたイジングマシンは、計算時間の大幅な短縮を実現する可能性がある一方、大規模化および安定的な運用が難しいという課題もある。
【0019】
イジング問題は、広く普及しているデジタルコンピュータを用いて解を算出することも可能である。デジタルコンピュータは、量子アニーラ、コヒーレントイジングマシンおよび量子分岐マシン等と比べ、大規模化および安定運用が可能である。シミュレーテッドアニーリング(SA)は、デジタルコンピュータでイジング問題を解くためのアルゴリズムの一例である。ただし、シミュレーテッドアニーリングは、それぞれの変数が逐次更新される逐次更新アルゴリズムであるため、並列化による計算処理の高速化は難しい。
【0020】
非特許文献2には、0-1組合せ最適化問題を解くためのアルゴリズムとして、シミュレーテッド分岐アルゴリズムが提案されている。シミュレーテッド分岐アルゴリズムは、イジングモデルを用いて、デジタルコンピュータによって、規模の大きい0-1組合せ最適化問題を高速に解くことが可能である。シミュレーテッド分岐アルゴリズムは、CPU(Central Processing Unit)、マイクロプロセッサ、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、または、これらの組合せの回路等の電子回路によっても、規模の大きい0-1組合せ最適化問題を高速に解くことが可能である。
【0021】
(シミュレーテッド分岐アルゴリズム)
シミュレーテッド分岐アルゴリズムは、それぞれがN個の要素に対応する変数xiおよび変数yiを用いる。変数xiを第1変数、変数yiを第2変数と呼ぶ場合もある。シミュレーテッド分岐アルゴリズムにおいて、N個の要素のそれぞれは、仮想的な粒子を表す。N個の要素は、イジング問題のN個のスピンに対応する。従って、N個の要素は、組合せ最適化問題のN個の離散変数(ビット)に対応する。変数xiおよび変数yiは、いずれも、実数で表される連続変数である。変数xiは、N個の粒子のうちのi番目の粒子の位置を表す。変数yiは、i番目の粒子の運動量を表す。Nは、2以上の整数である。iは、1以上、N以下の整数を表し、N個の要素のそれぞれを特定するインデックスを表す。
【0022】
シミュレーテッド分岐アルゴリズムは、それぞれN個ある変数x
iおよび変数y
iについて、下記の式(2)の連立常微分方程式を数値的に解く。
【数2】
【0023】
Hは、下記の式(3)のハミルトニアンである。
【数3】
【0024】
係数Dは、予め定められた定数であり、離調(detuning)に相当する。係数p(t)は、ポンピング振幅(pumping amplitude)に相当し、シミュレーテッド分岐アルゴリズムの計算時に更新回数に応じて値が単調増加する。tは、時刻を表す変数である。係数p(t)の初期値は0に設定されていてもよい。係数Kは、予め定められた定数であって、正のカー係数(Kerr coefficient)に相当する。なお、係数Kは、0であってもよい。
【0025】
f
iは、外力を表し、下記の式(4)で表される。
【数4】
【0026】
式(4)のziは、式(3)の中の小カッコの内の数式を変数xiで偏微分した式である。式(3)の中の小カッコの内の数式は、イジングモデルのエネルギーEIsingに対応する。
【0027】
cは、係数である。cは、例えば、計算を実行する前に予め定められる定数であってもよい。また、α(t)は、p(t)とともに増加する係数である。
【0028】
そして、シミュレーテッド分岐アルゴリズムは、p(t)の値を初期値(例えば、0)から所定の値まで増加させた後における変数xiの符号に基づき、スピンsiの値を算出する。シミュレーテッド分岐アルゴリズムは、例えば、xi>0の場合にsgn(xi)=1、xi<0の場合にsgn(xi)=-1となる符号関数を用いて、スピンsiの値を算出する。
【0029】
(シミュレーテッド分岐アルゴリズムの演算)
シミュレーテッド分岐アルゴリズムは、シンプレクティック・オイラー法を用いて、式(2)、式(3)および式(4)によって与えられる微分方程式を解く。
【0030】
ここで、シンプレクティック・オイラー法を使う場合、式(2)、式(3)および式(4)によって与えられる微分方程式は、式(5)または式(6)に示すような、離散的な漸化式に書き換えられる。
【数5】
【数6】
【0031】
tは、時刻を表す。Δtは、単位時間(時間ステップ、時間刻み幅)を表す。
【0032】
シミュレーテッド分岐アルゴリズムを実行する場合、デジタルコンピュータまたはFPGA等の電子回路は、式(5)または式(6)のアルゴリズムに基づき、それぞれN個ある変数xiおよび変数yiを初期時刻から単位時間毎に順次に、且つ、変数xiと変数yiとを交互に、更新する。そして、デジタルコンピュータまたはFPGA等の電子回路は、終了時刻におけるN個の変数xiの値を、符号関数を用いて2値化して、N個のスピンの値を出力する。
【0033】
なお、式(5)および式(6)は、微分方程式との対応関係を示すために、時刻tおよび単位時間Δtを用いて表されている。ただし、シンプレクティック・オイラー法をデジタルコンピュータまたはFPGA等の電子回路で実行する場合、式(5)および式(6)を演算するためのアルゴリズムは、明示的なパラメータとして時刻tおよび単位時間Δtを含まなくてよい。例えば、単位時間Δtを1とする場合、式(5)および式(6)を演算するためのアルゴリズムは、単位時間Δtを含まなくてよい。例えば、明示的なパラメータとして時刻tを含まない場合、式(5)および式(6)を演算するアルゴリズムは、xi(t+Δt)をxi(t)の更新後の値として処理を実行する。すなわち、式(5)および式(6)を演算するアルゴリズムは、“t”を更新前の変数を特定するパラメータ、“t+Δt”を更新後の変数を特定するパラメータとして処理を実行する。以降で説明する式(5)および式(6)を改良したアルゴリズムも同様である。
【0034】
図1は、シミュレーテッド分岐アルゴリズムにより最適化問題を解いた場合における、変数x
iの分岐現象を表す図である。シミュレーテッド分岐アルゴリズムにより最適化問題を解いた場合、系のパラメータが変化することに伴い、安定運動状態が1個のみの系から、安定運動状態が2個の系へと遷移する分岐現象が生じる。
図1に示すように、分岐現象が進むと、変数x
iは、-1または+1の近傍に集中するが、-1より小さい領域、または、+1より大きい領域にも広がる。
【0035】
(改良アルゴリズム)
発明者は、上述のシミュレーテッド分岐アルゴリズムを改良して、不等式により表される1または複数の制約条件の下で、0-1組合せ最適化問題を解く改良アルゴリズムを発明した。
【0036】
改良アルゴリズムは、式(3)のハミルトニアンに代えて、式(7)に示すハミルトニアンを用いて、式(2)の連立常微分方程式を数値的に解く。
【数7】
【0037】
Gmは、1または複数の制約条件のうちのm番目の制約条件に対応するペナルティ項を表す。1または複数の制約条件のそれぞれは、目的関数に含まれる複数の離散変数を含む不等式により表される。例えば、不等式は、複数の離散変数の一次項を含む一次不等式、または、複数の離散変数の二次項を含む二次不等式である。
【0038】
ペナルティ項は、対応する不等式を満たす場合に、ハミルトニアンにエネルギーとして0を加え、対応する不等式を満たさない場合に、ハミルトニアンに正のエネルギーを加える。より具体的には、Gmは、制約条件を表す不等式の境界から、N個の要素により特定される位置までの距離が大きい程、大きなエネルギーをハミルトニアンに加える関数である。なお、不等式の境界は、不等式を満たすか満たさないかの境界である。すなわち、不等式の境界は、不等式における不等号を、等号により代えた方程式により表される。
【0039】
そして、改良アルゴリズムは、シンプレクティック・オイラー法により、連立常微分方程式を式(8)または式(9)に示すような離散的な漸化式を用いて解く。
【数8】
【数9】
【0040】
式(8)および式(9)に示す漸化式は、式(5)および式(6)に示す漸化式と比較すると、第2変数(yi(t+Δt))の算出式が異なる。具体的には、式(8)および式(9)に示す漸化式は、第2変数(yi(t+Δt))の算出式に、1または複数の不等式のそれぞれのペナルティ項(Gm)のxiについての偏微分値の合計に、Δtを乗算した値が減算されている点において異なる。
【0041】
1または複数の不等式のそれぞれの偏微分値は、対応する不等式の境界からN個の要素により特定される位置までの距離における対応する要素の成分に相当する。この偏微分値は、対応する不等式の境界からN個の要素により特定される位置までの距離における対応する要素の成分が大きい程、大きい値となる。
【0042】
ただし、ペナルティ項は、対応する不等式を満たす場合に、0となる。従って、1または複数の不等式のそれぞれの偏微分値は、N個の要素が不等式を満たしている場合には、0となる。
【0043】
ここで、シミュレーテッド分岐アルゴリズムは、時刻を表す変数であるtを、単位時間(Δt)毎に増加させながら、複数の第1変数(xi)および複数の第2変数(yi)を交互に更新する。従って、シミュレーテッド分岐アルゴリズムは、単位時間(Δt)毎に、1または複数の制約条件のそれぞれについて、不等式を満たすか否かを判断することができる。
【0044】
そこで、改良アルゴリズムは、単位時間(Δt)毎に、複数の第2変数(yi)を更新した後に、1または複数の制約条件のそれぞれについて、複数の離散変数のそれぞれに対応する第1変数(xi)を代入した不等式を満たすか否かを判断する。そして、改良アルゴリズムは、単位時間(Δt)毎に、1または複数の制約条件のそれぞれについて、複数の離散変数のそれぞれに対応する第1変数を代入した不等式を満たさない場合、複数の第2変数(yi)のそれぞれから、対応する補正値を減算する。つまり、改良アルゴリズムは、単位時間(Δt)毎に、1または複数の制約条件のそれぞれについて、複数の離散変数のそれぞれに対応する第1変数を代入した不等式を満たさない場合、複数の第2変数(yi)のそれぞれから、不等式の境界から複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値を減算する。
【0045】
これにより、改良アルゴリズムは、複数の第1変数(xi)および複数の第2変数(yi)を単位時間(Δt)毎に、1または複数の制約条件のそれぞれを満たすように、複数の第1変数(xi)および複数の第2変数(yi)を補正することができる。この結果、改良アルゴリズムは、終了時刻(t=T)における複数の第1変数(xi)が1または複数の制約条件の全てを満たす確率を高くすることができる。
【0046】
このような改良アルゴリズムは、不等式により表される1または複数の制約条件の下で、0-1組合せ最適化問題を解く場合であっても、制約条件を設定しない場合と同一の変数の数により、解を得ることができる。従って、このような改良アルゴリズムは、スラッグ変数を設けずに、簡易に、不等式により表される1または複数の制約条件の下で0-1組合せ最適化問題を解くことができる。
【0047】
(制約条件が一次不等式であるのペナルティ項および偏微分値の第1例)
1または複数の制約条件の一つは、一次不等式により表される。例えば、改良アルゴリズムは、M個(Mは1以上の整数)の一次不等式の制約の下で、0-1組合せ最適化問題を解く。この場合において、1または複数の制約条件のうちのm番目の制約条件は、式(10)により表される。
【数10】
【0048】
式(10)において、mは、1以上、M以下の整数である。式(10)において、xiは、i番目の離散変数である。式(10)において、xjは、j番目の離散変数である。ωm,iは、i番目の離散変数に乗算される係数である。Wmは、予め定められた定数である。
【0049】
制約条件が一次不等式により表される場合、ペナルティ項であるG
mは、式(11)に示すように表すことができる。
【数11】
【0050】
Amは、m番目の制約条件に対して予め定められた係数である。kは、1以上の整数である。例えば、kは、2であってもよい。
【0051】
S
mは、一次不等式における定数項(W
m)を除く関数における複数の離散変数のそれぞれに、対応する第1変数(x
i)を代入して得られる値である。具体的には、S
mは、式(8)の漸化式を適用する場合には、式(12)のように表される。また、S
mは、式(9)の漸化式を適用する場合には、式(13)のように表される。
【数12】
【数13】
【0052】
この場合、偏微分値は、式(14)に示すように表される。
【数14】
【0053】
そこで、制約条件が一次不等式で表される場合、改良アルゴリズムは、単位時間(Δt)毎に、複数の第2変数(yi)を更新した後に、複数の離散変数のそれぞれに対応する第1変数(xi)を代入した一次不等式を満たすか否かを判断する。そして、改良アルゴリズムは、単位時間(Δt)毎に、対応する一次不等式を満たさない場合、複数の第2変数(yi)のそれぞれから、式(14)に表される偏微分値に単位時間を表すΔtを乗算した補正値を、減算する。
【0054】
このような処理を実行する改良アルゴリズムは、制約条件を設定しない場合と同一の変数の数により、一次不等式により表される制約条件の下で0-1組合せ最適化問題を簡易に解くことができる。
【0055】
(制約条件が一次不等式であるのペナルティ項および偏微分値の第2例)
式(14)に示す偏微分値は、A
mが大きい場合、計算誤差が蓄積して不安定となる可能性がある。そこで、改良アルゴリズムは、制約条件が一次不等式である場合、式(15)により表される偏微分値を用いてもよい。すなわち、改良アルゴリズムは、単位時間(Δt)毎に、対応する一次不等式を満たさない場合、複数の第2変数(y
i)のそれぞれから、式(15)に表される偏微分値に単位時間を表すΔtを乗算した補正値を、減算してもよい。
【数15】
【0056】
B
mは、0以上1以下の値であり、m番目の制約条件に対して予め定められた係数である。E
mは、一次不等式における定数項(W
m)を除く関数における複数の離散変数のそれぞれに、対応する第2変数(y
i)を代入して得られる値である。具体的には、E
mは、式(8)または式(9)の漸化式を適用する場合には、式(16)のように表される。
【数16】
【0057】
Emは、複数の要素により特定される方向の、一次不等式の境界に対する傾きを表す。従って、式(15)の偏微分値を用いた場合、補正値は、不等式の境界から複数の要素により特定される位置までの距離における対応する要素の成分と、複数の要素により特定される方向の、一次不等式の境界に対する傾きの対応する要素の成分とを加算した値に応じた値となる。これにより、改良アルゴリズムは、Amが大きいために距離に応じた成分が不安定となる場合であっても、補正値を安定化させることができる。
【0058】
(制約条件が二次不等式であるのペナルティ項および偏微分値)
1または複数の制約条件の一つは、二次不等式により表されてもよい。この場合において、制約条件は、式(17)により表される。
【数17】
【0059】
式(17)において、xiは、i番目の離散変数である。式(17)において、xjは、j番目の離散変数である。Qi,jは、N行、N列の半正定値行列に含まれるi行、j列の値である。qは、予め定められた定数である。
【0060】
制約条件が二次不等式により表される場合、ペナルティ項であるGは、式(18)に示すように表すことができる。
【数18】
【0061】
Aは、二次不等式による制約条件に対して予め定められた係数である。kは、1以上の整数である。例えば、kは、2であってもよい。
【0062】
Sは、二次不等式における定数項(q)を除く関数における複数の離散変数のそれぞれに、対応する第1変数(x
i,x
j)を代入して得られる値である。具体的には、Sは、式(8)の漸化式を適用する場合には、式(19)のように表される。また、Sは、式(9)の漸化式を適用する場合には、式(20)のように表される。
【数19】
【数20】
【0063】
この場合、偏微分値は、式(8)の漸化式を適用する場合には、式(21)に示すように表される。また、偏微分値は、式(9)の漸化式を適用する場合には、式(22)に示すように表される。
【数21】
【数22】
【0064】
そこで、制約条件が二次不等式で表される場合、改良アルゴリズムは、単位時間(Δt)毎に、複数の第2変数(yi)を更新した後に、複数の離散変数のそれぞれに対応する第1変数(xi,xj)を代入した二次不等式を満たすか否かを判断する。そして、改良アルゴリズムは、単位時間(Δt)毎に、対応する二次不等式を満たさない場合、複数の第2変数(yi)のそれぞれから、式(21)または式(22)に表される偏微分値に単位時間を表すΔtを乗算した補正値を、減算する。
【0065】
イジングモデルは、二次不等式による制約条件の下で0-1組合せ最適化問題を解くことは困難である。これに対して、改良アルゴリズムは、二次不等式により表される制約条件の下で、0-1組合せ最適化問題を、簡易に解を得ることができる。
【0066】
なお、改良アルゴリズムは、1または複数の制約条件の中に、一次不等式による制約条件と、二次不等式による制約条件との両者が含まれていても、0-1組合せ最適化問題を解くことができる。また、改良アルゴリズムは、1または複数の制約条件に一次不等式による制約条件のみが含まれていてもよい。また、改良アルゴリズムは、1つの二次不等式による制約条件のみの下で、0-1組合せ最適化問題を解いてもよい。
【0067】
(機能ブロック構成)
図2は、本実施形態に係る求解装置10の機能構成を示す図である。
【0068】
求解装置10は、改良アルゴリズムを用いて、0-1組合せ最適化問題を不等式により表される1または複数の制約条件の下で解く。求解装置10は、コンピュータ等の情報処理装置、ネットワークを介して複数のコンピュータまたはサーバが相互に通信をして構成されるコンピュータシステム、または、複数台のコンピュータが連携して情報処理を実行するPCクラスタ等により実現される。また、求解装置10は、CPU、マイクロプロセッサ、GPU、FPGAまたはASIC、または、これらの組合せの回路等の電子回路によって実現される。
【0069】
求解装置10は、機能構成として、入力部12と、更新部14と、出力部16とを備える。
【0070】
入力部12は、0-1組合せ最適化問題の目的関数を定義するための情報(例えば、N、J、h)、および、改良アルゴリズムを実行するために必要な係数を表す情報(例えば、D、c、Δt、T,p(t)、α(t))を外部装置から受け取る。さらに、入力部12は、1または複数の制約条件を定義するための情報(例えば、ωm,i,Wm,Qi,j,q)、および、制約処理を実行するために必要な係数(例えば、Am,k,Bm,A)を表す情報を外部装置から受け取る。そして、入力部12は、受け取ったこれらの情報を更新部14に与える。
【0071】
更新部14は、改良アルゴリズムを用いて、第1変数(xi)および第2変数(yi)が対応付けられた複数の要素のそれぞれについて、初期時刻(t=0)から終了時刻(t=T)まで単位時間(Δt)毎に順次に、第1変数(xi)および第2変数(yi)を交互に更新する。
【0072】
出力部16は、終了時刻(t=T)における複数の要素のそれぞれの第1変数(xi)に基づき、0-1組合せ最適化問題の解を出力する。例えば、出力部16は、終了時刻における複数の要素のそれぞれについて、第1変数(xi)を予め設定されたしきい値により2値化した離散変数の値を算出する。そして、出力部16は、算出した複数の離散変数の値を0-1組合せ最適化問題の解として出力する。
【0073】
ここで、複数の要素は、0-1組合せ最適化問題の複数の離散変数に対応する。また、第1変数(xi)および第2変数(yi)のそれぞれは、実数により表される。
【0074】
そして、単位時間毎の更新処理において、更新部14は、複数の要素のそれぞれについて、第1変数(xi)を第2変数(yi)に基づき更新する。また、単位時間毎の更新処理において、更新部14は、複数の要素のそれぞれについて、第2変数(yi)を第1変数(xi)に基づき更新する。
【0075】
例えば、単位時間毎の更新処理において、更新部14は、複数の要素のそれぞれについて、第1変数(xi)を更新した後に第2変数(yi)を更新する。これに代えて、単位時間毎の更新処理において、更新部14は、複数の要素のそれぞれについて、第2変数(yi)を更新した後に第1変数(xi)を更新してもよい。
【0076】
さらに、単位時間毎の更新処理において、更新部14は、第2変数(yi)を更新した後に、0-1組合せ最適化問題の解が1または複数の制約条件を満たすように、制約処理を実行する。更新部14は、1または複数の制約条件のそれぞれについて、複数の離散変数のそれぞれに対応する第1変数(xi)を代入した不等式を満たさない場合、複数の要素のそれぞれの第2変数(yi)から、対応する不等式の境界から複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値(rm,i)を減算する。
【0077】
単位時間毎の更新処理において、1または複数の制約条件のそれぞれについて制約処理を実行することにより、更新部14は、複数の第1変数(xi)が制約条件を満たしていない場合、複数の第1変数(xi)が制約条件を満たす方向に変化するように、複数の要素に対応する複数の第2変数(yi)を補正することができる。これにより、更新部14は、終了時刻(t=T)における複数の第1変数(xi)が1または複数の制約条件の全てを満たす確率を高くすることができる。
【0078】
なお、単位時間毎の更新処理において、更新部14は、第1変数(xi)を更新した後に第2変数(yi)を更新する場合には、複数の要素のそれぞれについて、第2変数(yi)を更新した後に第2変数(yi)から補正値(rm,i)を減算する。また、単位時間毎の更新処理において、更新部14は、第2変数(yi)を更新した後に第1変数(xi)を更新する場合には、複数の要素のそれぞれについて、第2変数(yi)を更新した後、且つ、第1変数(xi)を更新する前に、第2変数(yi)から補正値(rm,i)を減算する。
【0079】
(処理フロー)
図3は、更新部14の処理の流れの第1例を示すフローチャートである。更新部14は、例えば、
図3に示す流れで処理を実行する。
【0080】
まず、S101において、更新部14は、0-1組合せ最適化問題を解くためのパラメータを設定する。具体的には、更新部14は、N×N個の結合係数を含む行列であるJ、および、N個の局所磁場を表す局所磁場係数を含む配列であるhを設定する。さらに、更新部14は、係数であるD、係数であるc、単位時間を表すΔt、終了時刻を表すT、関数であるp(t)、および、関数であるα(t)を設定する。p(t)およびα(t)は、t=初期時刻(例えば0)で0、t=終了時刻(T)で1となる増加関数である。更新部14は、J、hを入力部12からの受け取った情報に応じて設定する。更新部14は、D、c、Δt、T、p(t)およびα(t)を、入力部12から受け取った値に応じて設定してもよいし、予め決定されており変更できない値を設定してもよい。
【0081】
続いて、S102において、更新部14は、制約条件に関する情報を設定する。具体的には、更新部14は、1または複数の制約条件を定義するための情報、および、制約処理を実行するために必要な係数を表す情報を設定する。例えば、更新部14は、制約条件が一次不等式により表される場合、変数に乗算される係数であるωm,i、定数項であるWm、制約処理を実行するために必要な係数であるAm(またはAmおよびBm)、並びに、kを設定する。また、例えば、制約条件が二次不等式により表される場合、更新部14は、変数に乗算される係数であるQi,jおよび定数項であるq、制約処理を実行するために必要な係数であるAおよびkを設定する。なお、更新部14は、制約処理を実行するために必要な係数であるAm、Bm、kおよびAを、入力部12から受け取ったパラメータに応じて設定してもよいし、予め決定されており変更できない値を設定してもよい。
【0082】
続いて、S103において、更新部14は、変数を初期化する。具体的には、更新部14は、時刻を表す変数であるtを初期時刻(例えば、0)に初期化する。さらに、更新部14は、N個の第1変数(x1(t)~xN(t))のそれぞれおよびN個の第2変数(y1(t)~yN(t))のそれぞれに、ユーザから受け取った初期値、予め定められた固定値、または、乱数を代入する。
【0083】
続いて、更新部14は、S104とS116との間のループ処理を、tがTより大きくなるまで繰り返す。1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第1変数(x1(t+Δt)~xN(t+Δt))を、直前時刻(t)におけるN個の第1変数(x1(t)~xN(t))、および、直前時刻(t)におけるN個の第2変数(y1(t)~yN(t))に基づき算出する。また、1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第2変数(y1(t+Δt)~yN(t+Δt))を、対象時刻(t+Δt)におけるN個の第1変数(x1(t+Δt)~xN(t+Δt))および直前時刻(t)におけるN個の第2変数(y1(t)~yN(t))に基づき算出する。
【0084】
なお、直前時刻(t)は、対象時刻(t+Δt)より単位時間(Δt)前の時刻である。すなわち、更新部14は、S104とS116との間のループ処理を繰り返すことにより、N個の第1変数(x1(t)~xN(t))およびN個の第2変数(y1(t)~yN(t))を、初期時刻(t=0)から終了時刻(t=T)まで単位時間(Δt)毎に順次に更新する。
【0085】
続いて、更新部14は、S105とS107との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。iは、1からNまでの整数であり、N個の要素のうちの処理対象を表すインデックスである。N個の要素のそれぞれは、第1変数(xi(t))および第2変数(yi(t))が対応付けられる。S105とS107との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
【0086】
S106において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x
i(t+Δt))を、対象要素の直前時刻(t)における第1変数(x
i(t))に、対象要素の直前時刻(t)における第2変数(y
i(t))と予め定められた定数(D)と単位時間(Δt)とを乗算した値を加算することにより算出する。具体的には、更新部14は、式(23)を算出する。
【数23】
【0087】
すなわち、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(xi(t+Δt))を、対象要素の直前時刻(t)における第1変数(xi(t))と、対象要素の直前時刻(t)における第2変数(yi(t))とに基づき更新する。
【0088】
更新部14は、S105とS107との間のループ処理をN回実行した場合、処理をS108に進める。
【0089】
続いて、更新部14は、S108とS113との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。
【0090】
S109において、更新部14は、N個の要素のそれぞれの対象時刻(t+Δt)における第1変数(x
1(t+Δt)~x
N(t+Δt))と、対象要素とN個の要素のそれぞれとの組毎に0-1組合せ最適化問題により予め定められる作用係数と、に基づき更新値(z
i(t+Δt))を算出する。作用係数は、Jに含まれる結合係数およびhに含まれる局所磁場係数である。具体的には、更新部14は、式(24)を算出する。
【数24】
【0091】
続いて、S110において、更新部14は、更新値(z
i(t+Δt))に、係数(c)と-1とを乗算することにより、外力(f
i(t+Δt))を算出する。具体的には、更新部14は、式(25)を算出する。
【数25】
【0092】
続いて、S111において、更新部14は、時間経過に従って増加する関数であるp(t+Δt)に基づき定まる値に、対象要素の対象時刻(t+Δt)における第1変数(x
1(t+Δt))を乗算した時間発展値(g
i(t+Δt))を算出する。具体的には、更新部14は、式(26)を算出する。
【数26】
【0093】
続いて、S112において、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y
i(t+Δ))を、対象要素の直前時刻(t)における第2変数(y
i(t))に、時間発展値(g
i(t+Δt))と外力(f
i(t+Δt))とを加算した値に単位時間(Δt)を乗算した値を、加算することにより、算出する。具体的には、更新部14は、式(27)を算出する。
【数27】
【0094】
更新部14は、以上のようなS108とS113との間のループ処理をN回実行することにより、N個の要素のそれぞれについて、対象時刻(t+Δt)における第2変数(yi(t+Δt))を、対象時刻(t+Δt)におけるN個の第1変数(x1(t+Δt)~xN(t+Δt))と、対象要素の直前時刻(t)におけるに第2変数(yi(t))とに基づき更新する。
【0095】
更新部14は、S108とS113との間のループ処理をN回実行した場合、処理をS114に進める。
【0096】
S114において、更新部14は、1または複数の制約条件に基づく制約処理を実行する。なお、制約処理については、
図5~
図7のフローチャートを用いて詳細を後述する。S114の処理を終えると、更新部14は、処理をS115に進める。
【0097】
S115において、更新部14は、直前時刻(t)および対象時刻(t+Δt)のそれぞれに単位時間(Δt)を加算して、直前時刻(t)および対象時刻(t+Δt)を更新する。S116において、更新部14は、S105からS115までの処理を、tが終了時刻(T)を超えるまで繰り返す。そして、更新部14は、tが終了時刻(T)より大きくなった場合、本フローを終了する。
【0098】
そして、出力部16は、N個の要素のそれぞれについて、終了時刻(t=T)における第1変数(xi(T))の符号に応じて、対応するスピンの値を算出する。例えば、出力部16は、終了時刻(t=T)における第1変数(xi(T))の符号が負である場合、対応するスピンを-1とし、正である場合、対応するスピンを+1とする。そして、出力部16は、算出した複数のスピンの値、または、算出した複数のスピンの値を離散変数に変換した値を組合せ最適化問題の解として出力する。
【0099】
以上のS101~S116の処理を実行することにより、更新部14は、改良アルゴリズムに従った演算を実行して、終了時刻(t=T)におけるN個の第1変数(x1(t)~xN(t))およびN個の第2変数(y1(t)~yN(t))を算出することができる。
【0100】
図4は、更新部14の処理の流れの第2例を示すフローチャートである。更新部14は、改良アルゴリズムを用いて0-1組合せ最適化問題を解く場合、
図3に示す流れに代えて、
図4に示す流れで処理を実行してもよい。
【0101】
まず、S201、S202およびS203において、更新部14は、
図3に示す第1例のS101、S102およびS103と同一の処理を実行する。
【0102】
続いて、更新部14は、S204とS216との間のループ処理を、tがTより大きくなるまで繰り返す。1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第2変数(y1(t+Δt)~yN(t+Δt))を、直前時刻(t)におけるN個の第1変数(x1(t)~xN(t))および直前時刻(t)におけるN個の第2変数(y1(t)~yN(t))に基づき算出する。また、1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第1変数(x1(t+Δt)~xN(t+Δt))を、直前時刻(t)におけるN個の第1変数(x1(t)~xN(t))、および、対象時刻(t+Δt)におけるN個の第2変数(y1(t+Δt)~yN(t+Δt))に基づき算出する。
【0103】
続いて、更新部14は、S205とS210との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S205とS210との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
【0104】
S206において、更新部14は、N個の要素のそれぞれの直前時刻(t)における第1変数(x
1(t)~x
N(t))と、対象要素とN個の要素のそれぞれとの組毎に0-1組合せ最適化問題により予め定められる作用係数と、に基づき更新値(z
i(t))を算出する。具体的には、更新部14は、式(28)を算出する。
【数28】
【0105】
続いて、S207において、更新部14は、更新値(z
i(t))に、係数(c)と-1とを乗算することにより、外力(f
i(t))を算出する。具体的には、更新部14は、式(29)を算出する。
【数29】
【0106】
続いて、S208において、更新部14は、時間経過に従って増加する関数であるp(t)に基づき定まる値に、対象要素の直前時刻(t)における第1変数(x
1(t))を乗算した時間発展値(g
i(t))を算出する。具体的には、更新部14は、式(30)を算出する。
【数30】
【0107】
続いて、S209において、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y
i(t+Δ))を、対象要素の直前時刻(t)における第2変数(y
i(t))に、時間発展値(g
i(t))と外力(f
i(t))とを加算した値に単位時間(Δt)を乗算した値を、加算することにより、算出する。具体的には、更新部14は、式(31)を算出する。
【数31】
【0108】
更新部14は、以上のようなS205とS210との間のループ処理をN回実行することにより、N個の要素のそれぞれについて、対象時刻(t+Δt)における第2変数(yi(t+Δt))を、直前時刻(t)におけるN個の第1変数(x1(t)~xN(t))と、対象要素の直前時刻(t)におけるに第2変数(yi(t))とに基づき更新する。
【0109】
更新部14は、S205とS210との間のループ処理をN回実行した場合、処理をS211に進める。
【0110】
S211において、更新部14は、1または複数の制約条件に基づく制約処理を実行する。なお、制約処理については、
図5~
図7のフローチャートを用いて詳細を後述する。S211の処理を終えると、更新部14は、処理をS212に進める。
【0111】
続いて、更新部14は、S212とS214との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。
【0112】
S213において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x
i(t+Δt))を、対象要素の直前時刻(t)における第1変数(x
i(t))に、対象要素の対象時刻(t+Δt)における第2変数(y
i(t+Δt))と予め定められた定数(D)と単位時間(Δt)とを乗算した値を加算することにより算出する。具体的には、更新部14は、式(32)を算出する。
【数32】
【0113】
すなわち、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(xi(t+Δt))を、対象要素の直前時刻(t)における第1変数(xi(t))と、対象要素の直前時刻(t)における第2変数(yi(t))とに基づき更新する。
【0114】
更新部14は、S212とS214との間のループ処理をN回実行した場合、処理をS215に進める。
【0115】
S215において、更新部14は、直前時刻(t)および対象時刻(t+Δt)のそれぞれに単位時間(Δt)を加算して、直前時刻(t)および対象時刻(t+Δt)を更新する。S216において、更新部14は、S212からS215までの処理を、tが終了時刻(T)を超えるまで繰り返す。そして、更新部14は、tが終了時刻(T)より大きくなった場合、本フローを終了する。
【0116】
そして、出力部16は、N個の要素のそれぞれについて、終了時刻(t=T)における第1変数(xi(T))の符号に応じて、対応するスピンの値を算出する。例えば、出力部16は、終了時刻(t=T)における第1変数(xi(T))の符号が負である場合、対応するスピンを-1とし、正である場合、対応するスピンを+1とする。そして、出力部16は、算出した複数のスピンの値、または、算出した複数のスピンの値を離散変数に変換した値を組合せ最適化問題の解として出力する。
【0117】
以上のS201~S216の処理を実行することにより、更新部14は、改良アルゴリズムに従った演算を実行して、終了時刻(t=T)におけるN個の第1変数(x1(t)~xN(t))およびN個の第2変数(y1(t)~yN(t))を算出することができる。
【0118】
(制約処理の第1例)
図5は、制約処理の第1例の処理の流れを示すフローチャートである。制約条件として、1または複数の制約条件としてM個の一次不等式が設定されている場合、更新部14は、
図3のS114および
図4のS211において、
図5に示す流れで処理を実行する。
【0119】
まず、更新部14は、S301とS308との間のループ処理を、m=1からi=Mまでmを1ずつインクリメントしながら繰り返す。なお、mは、M個の一次不等式のうちの処理対象となる一次不等式を表すインデックスである。
【0120】
S301とS308とのループ内において、まず、S302において、更新部14は、制約値(S
m)を算出する。具体的には、
図3のS114の制約処理において、更新部14は、式(33)の演算を実行する。また、
図4のS211の制約処理において、更新部14は、式(34)の演算を実行する。
【数33】
【数34】
【0121】
なお、制御値であるSmは、対応する一次不等式における定数項(Wm)を除く関数に含まれる複数の離散変数のそれぞれに、対応する第1変数(xi)を代入し得られる値である。
【0122】
続いて、S303において、更新部14は、制約値(Sm)が対応する一次不等式における定数項(Wm)以下であるか否かを判断する。すなわち、更新部14は、複数の第1変数(xi)が対応する一次不等式を満たすか否かを判断する。
【0123】
更新部14は、制約値(Sm)が対応する一次不等式における定数項(Wm)以下である場合、すなわち、複数の第1変数(xi)が対応する一次不等式を満たす場合(S303のYes)、処理をS308に進める。更新部14は、制約値(Sm)が対応する一次不等式における定数項(Wm)以下ではない場合、すなわち、複数の第1変数(xi)が対応する一次不等式を満たさない場合(S303のNo)、処理をS304に進める。
【0124】
続いて、更新部14は、S304とS307との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S304とS307との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
【0125】
S304とS307とのループ内において、まず、S305において、更新部14は、一次不等式の境界から複数の要素により特定される位置までの距離における対象要素の成分に応じた補正値(r
m,i)を算出する。具体的には、更新部14は、式(35)の演算を実行する。
【数35】
【0126】
続いて、S306において、更新部14は、対象要素の第2変数(y
i)から、補正値(r
m,i)を減算する。具体的には、更新部14は、式(36)の演算を実行する。
【数36】
【0127】
更新部14は、S304とS307との間のループ処理をN回実行した場合、処理をS308に進める。
【0128】
そして、更新部14は、S301とS308との間のループ処理をM回実行した場合、すなわち、M個の一次不等式の全てについて処理を実行した場合、本フローを終了する。
【0129】
以上の処理を実行することにより、更新部14は、M個の一次不等式のそれぞれについて、複数の第1変数(xi)が対応する一次不等式を満たさない場合、複数の要素のそれぞれの第2変数(yi)から、一次不等式の境界から複数の要素により特定される位置までの距離における対象要素の成分に応じた補正値(rm,i)を減算することができる。これにより、更新部14は、複数の第1変数(xi)が対応する一次不等式を満たしていない場合、複数の第1変数(xi)が対応する一次不等式を満たす方向に変化するように、複数の第2変数(yi)を補正することができる。この結果、更新部14は、終了時刻(t=T)における複数の第1変数(xi)が1または複数の制約条件の全てを満たす確率を高くすることができる。
【0130】
(制約処理の第2例)
図6は、制約処理の第2例の処理の流れを示すフローチャートである。制約条件として、1または複数の制約条件としてM個の一次不等式が設定されている場合、更新部14は、
図3のS114および
図4のS211において、
図6に示す流れで処理を実行してもよい。
【0131】
まず、更新部14は、S401とS409との間のループ処理を、m=1からi=Mまでmを1ずつインクリメントしながら繰り返す。
【0132】
S401とS409とのループ内において、まず、S402において、更新部14は、制約値(S
m)を算出する。S402の処理は、
図5のS302の処理と同一である。
【0133】
続いて、S403において、更新部14は、制約値(S
m)が対応する一次不等式における定数項(W
m)以下であるか否かを判断する。S403の処理は、
図5のS303の処理と同一である。更新部14は、制約値(S
m)が対応する一次不等式における定数項(W
m)以下である場合(S403のYes)、処理をS409に進める。更新部14は、制約値(S
m)が対応する一次不等式における定数項(W
m)以下ではない場合(S403のNo)、処理をS404に進める。
【0134】
S404において、更新部14は、複数の要素により特定される方向における対応する一次不等式の境界に対する傾き(E
m)を算出する。具体的には、更新部14は、式(37)の演算を実行する。
【数37】
【0135】
続いて、更新部14は、S405とS408との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S405とS408との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
【0136】
S405とS408とのループ内において、まず、S406において、更新部14は、一次不等式の境界から複数の要素により特定される位置までの距離における対象要素の成分、および、複数の要素により特定される方向の一次不等式の境界に対する傾きの対象要素の成分に応じた補正値(r
m,i)を算出する。具体的には、更新部14は、式(38)の演算を実行する。
【数38】
【0137】
続いて、S407において、更新部14は、対象要素の第2変数(y
i)から、補正値(r
m,i)を減算する。S407の処理は、
図5のS306の処理と同一である。
【0138】
更新部14は、S405とS408との間のループ処理をN回実行した場合、処理をS409に進める。
【0139】
そして、更新部14は、S401とS409との間のループ処理をM回実行した場合、すなわち、M個の一次不等式の全てについて処理を実行した場合、本フローを終了する。
【0140】
以上の処理を実行することにより、更新部14は、M個の一次不等式のそれぞれについて、複数の第1変数(xi)が対応する一次不等式を満たさない場合、複数の要素のそれぞれの第2変数(yi)から、一次不等式の境界から複数の要素により特定される位置までの距離における対象要素の成分、および、複数の要素により特定される方向の一次不等式の境界に対する傾きの対象要素の成分に応じた補正値(rm,i)を減算することができる。特に、更新部14は、補正値(rm,i)に、複数の要素により特定される方向の一次不等式の境界に対する傾きの対象要素の成分に応じた値を加えることにより、単位時間(Δt)毎の更新処理において、複数の第1変数(xi)および複数の第2変数(yi)が不安定に変動することを抑制することができる。
【0141】
これにより、更新部14は、複数の第1変数(xi)が対応する一次不等式を満たしていない場合、複数の第1変数(xi)が対応する一次不等式を満たす方向に安定して変化するように、複数の要素に対応する複数の第2変数(yi)を補正することができる。この結果、更新部14は、終了時刻(t=T)における複数の第1変数(xi)が1または複数の制約条件の全てを満たす確率を高くすることができる。
【0142】
(制約処理の第3例)
図7は、制約処理の第3例の処理の流れを示すフローチャートである。1または複数の制約条件のうちの一つに二次不等式が設定されている場合、更新部14は、二次不等式については、
図5のS302~S307または
図6のS402~S408の処理に代えて、
図7に示すS501~S506の処理を実行する。
【0143】
まず、S501において、更新部14は、制約値(S)を算出する。具体的には、
図3のS114の制約処理において、更新部14は、式(39)の演算を実行する。また、
図4のS211の制約処理において、更新部14は、式(40)の演算を実行する。
【数39】
【数40】
【0144】
なお、制御値であるSは、二次不等式における定数項(q)を除く関数に含まれる複数の離散変数のそれぞれに、対応する第1変数(xi)を代入して得られる値である。
【0145】
続いて、S502において、更新部14は、制約値(S)が二次不等式における定数項(q)以下であるか否かを判断する。すなわち、更新部14は、複数の第1変数(xi)が二次不等式を満たすか否かを判断する。
【0146】
更新部14は、制約値(S)が二次不等式における定数項(q)以下である場合、すなわち、複数の第1変数(xi)が対応する二次不等式を満たす場合(S502のYes)、本フローを終了する。更新部14は、制約値(S)が二次不等式における定数項(q)以下ではない場合、すなわち、複数の第1変数(xi)が対応する二次不等式を満たさない場合(S502のNo)、処理をS503に進める。
【0147】
続いて、更新部14は、S503とS506との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S503とS506との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
【0148】
S503とS506とのループ内において、まず、S504において、更新部14は、二次不等式の境界から複数の要素により特定される位置までの距離における対象要素の成分に応じた補正値(r
i)を算出する。具体的には、
図3のS114の制約処理において、更新部14は、式(41)の演算を実行する。また、
図4のS211の制約処理において、更新部14は、式(42)の演算を実行する。
【数41】
【数42】
【0149】
続いて、S505において、更新部14は、対象要素の第2変数(y
i)から、補正値(r
i)を減算する。具体的には、更新部14は、式(43)の演算を実行する。
【数43】
【0150】
更新部14は、S503とS506との間のループ処理をN回実行した場合、本フローを終了する。
【0151】
以上の処理を実行することにより、更新部14は、二次不等式について、複数の第1変数(xi)が対応する二次不等式を満たさない場合、複数の要素のそれぞれの第2変数(yi)から、二次不等式の境界から複数の要素により特定される位置までの距離の対象要素の成分に応じた補正値(ri)を減算することができる。これにより、更新部14は、複数の第1変数(xi)が対応する二次不等式を満たしていない場合、複数の第1変数(xi)が対応する二次不等式を満たす方向に変化するように、複数の第2変数(yi)を補正することができる。この結果、更新部14は、終了時刻(t=T)における複数の第1変数(xi)が1または複数の制約条件の全てを満たす確率を高くすることができる。
【0152】
以上のように、本実施形態に係る求解装置10は、シミュレーテッド分岐アルゴリズムにより0-1組合せ最適化問題を解く。本実施形態に係る求解装置10は、単位時間(Δt)毎の更新処理において、1または複数の制約条件のそれぞれについて、複数の離散変数のそれぞれに対応する第1変数を代入した不等式を満たさない場合、複数の要素のそれぞれの第2変数(yi)から、不等式の境界から複数の要素により特定される位置までの距離における対応する要素の成分に応じた補正値(ri)を減算する。
【0153】
これにより、本実施形態に係る求解装置10は、不等式により表される1または複数の制約条件の下で、0-1組合せ最適化問題を解く場合であっても、制約条件を設定しない場合と同一の変数の数により、解を得ることができる。従って、本実施形態に係る求解装置10によれば、スラッグ変数を設けずに、簡易に、不等式により表される1または複数の制約条件の下で0-1組合せ最適化問題を解くことができる。この結果、本実施形態に係る求解装置10は、変数の途中経過等を記憶するメモリ量を少なくし、計算量および計算時間を少なくすることができる。
【0154】
なお、求解装置10は、一次不等式の制約処理を実行する場合、M個の一次不等式を生成し、i番目の離散変数に乗算される係数であるω
m,i、および、一次不等式の定数であるW
mを呼び出してもよい。
【数44】
【0155】
求解装置10は、一回の列番号および行番号の指定により、ωm,iおよびWmを同時に読み出すことができ、容易に処理を実行することができる。
【0156】
(システム構成)
図8は、情報処理システム100の構成を示す図である。改良アルゴリズムは、例えば
図8に示すような情報処理システム100により実行させることが可能である。これにより、情報処理システム100は、大規模な組合せ最適化問題を、並列処理により高速に解くことができる。
【0157】
情報処理システム100は、管理サーバ101と、ネットワーク102と、複数の計算サーバ103(103a~103c)(情報処理装置)と、複数のケーブル104(104a~104c)と、スイッチ105を備える。また、端末装置106は、情報処理システム100と通信可能である。管理サーバ101、複数の計算サーバ103(103a~103c)、端末装置106は、ネットワーク102を介して互いにデータ通信をする。ネットワーク102は、例えば、複数のコンピュータネットワークが相互に接続されたインターネットである。ネットワーク102は、通信媒体として有線、無線、または、これらの組合せであってよい。
【0158】
また、複数の計算サーバ103(103a~103c)は、それぞれケーブル104(104a~104c)を介してスイッチ105に接続される。複数のケーブル104(104a~104c)およびスイッチ105は、計算サーバ103と計算サーバ103と間のインターコネクトを形成する。複数の計算サーバ103(103a~103c)のそれぞれは、インターコネクトを介して互いにデータ通信をすることも可能である。スイッチ105は、例えば、Infinibandのスイッチでる。ケーブル104a~104cは、例えば、Infinibandのケーブルである。ただし、スイッチ105およびケーブル104は、有線LANのスイッチ/ケーブルであってもよい。ケーブル104およびスイッチ105で使われる通信規格および通信プロトコルについては、特に問わない。端末装置106は、例えば、ノートPC、デスクトップPC、スマートフォン、タブレットまたは車載端末装置である。
【0159】
改良アルゴリズムを用いた組合せ最適化問題の求解処理は、並列的および分散的に実行可能である。従って、複数の計算サーバ103(103a~103c)のそれぞれおよび/または計算サーバ103(103a~103c)のプロセッサは、改良アルゴリズムを用いた組合せ最適化問題の求解処理における一部の計算処理の一部のステップを分担して実行してもよいし、異なる変数に対する同一の計算処理を並列的に実行してもよい。この場合、管理サーバ101は、例えば、ユーザによって入力された組合せ最適化問題を各計算サーバ103に処理可能な形式に変換し、各計算サーバ103に実行させる。そして、管理サーバ101は、各計算サーバ103から計算結果を取得し、集約した計算結果を組合せ最適化問題の解に変換する。
【0160】
図8には、3台の計算サーバ103(103a~103c)が示されている。しかし、情報処理システム100に含まれる計算サーバ103の台数は、3台に限定されない。例えば、情報処理システム100は、1台であっても、2台であっても、4台以上であってもよい。また、情報処理システム100は、含んでいる複数の計算サーバ103のうちの一部を用いて、組合せ最適化問題の求解の処理を実行してもよい。計算サーバ103は、どのような種類の情報処理装置であってもよい。例えば、計算サーバ103は、データセンターに設置されたサーバであってもよいし、オフィスに設置されたデスクトップPCであってもよい。また、計算サーバ103は、異なるローケーションに設置された複数の種類のコンピュータであってもよい。例えば、計算サーバ103は、汎用的なコンピュータであってもよいし、専用の電子回路または、これらの組合せであってもよい。
【0161】
図9は、管理サーバ101の構成を示す図である。管理サーバ101は、例えば、中央演算処理装置(CPU)とメモリとを含むコンピュータである。管理サーバ101は、プロセッサ110と、記憶部114と、通信回路115と、入力回路116と、出力回路117とを備える。プロセッサ110、記憶部114、通信回路115、入力回路116、出力回路117は、互いにバス120を介して接続される。プロセッサ110は、内部の機能構成として、管理部111と、変換部112と、制御部113を含む。
【0162】
プロセッサ110は、演算を実行し、管理サーバ101の制御を行う電子回路である。プロセッサ110は、例えば、CPU、マイクロプロセッサ、ASIC、FPGA、PLDまたはこれらの組合せであってよい。管理部111は、ユーザの端末装置106を介して管理サーバ101の操作を行うためのインタフェースを提供する。管理部111が提供するインタフェースは、例えば、API、CLIまたはウェブページ等である。例えば、ユーザは、管理部111を介して組合せ最適化問題の情報の入力を行ったり、計算された組合せ最適化問題の解の閲覧および/またはダウンロードを行ったりする。変換部112は、組合せ最適化問題に関するパラメータを入力して、入力したパラメータを各計算サーバ103が処理可能な形式に変換する。制御部113は、各計算サーバ103に制御指令を送信する。制御部113が各計算サーバ103から計算結果を取得した後、変換部112は、複数の計算結果を集約し、組合せ最適化問題の解に変換し、組合せ最適化問題の解を出力する。
【0163】
記憶部114は、管理サーバ101のプログラム、プログラムの実行に必要なデータ、プログラムによって生成されたデータを含む各種のデータを記憶する。プログラムは、OSとアプリケーションの両方を含む。記憶部114は、揮発性メモリ、不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリは、例えば、DRAMまたはSRAM等である。不揮発性メモリは、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAMまたはMRAM等である。また、記憶部114は、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置等であってもよい。
【0164】
通信回路115は、ネットワーク102に接続された各装置との間でデータの送受信を行う。通信回路115は、例えば、有線LANのNIC(Network Interface Card)である。ただし、通信回路115は、無線LANなど、その他の種類の通信回路であってもよい。入力回路116は、管理サーバ101へのデータ入力を実現する。入力回路116は、外部ポートとして、例えば、USB、PCI-Expressなどを含む。操作装置118は、入力回路116に接続される。操作装置118は、ユーザが管理サーバ101に情報を入力するための装置である。操作装置118は、例えば、キーボード、マウス、タッチパネル、音声認識装置などであるが、これらに限られない。出力回路117は、管理サーバ101からのデータ出力を実現する。出力回路117は、外部ポートとしてHDMI(登録商標)またはDisplayPort等を含む。例えば、表示装置119は、出力回路117に接続される。表示装置119は、例えば、LCD(液晶ディスプレイ)、有機EL(有機エレクトロルミネッセンス)ディスプレイまたはプロジェクタ等であるが、これらに限られない。
【0165】
管理者は、操作装置118および表示装置119を使って、管理サーバ101のメンテナンスを行うことができる。なお、操作装置118および表示装置119は、管理サーバ101に組み込まれたものであってもよい。また、操作装置118および表示装置119は、管理サーバ101に接続されていなくてもよい。例えば、管理者は、ネットワーク102と通信可能な端末装置を用いて管理サーバ101のメンテナンスを行ってもよい。
【0166】
図10は、管理サーバ101の記憶部114に記憶されるデータを示す図である。記憶部114は、例えば、問題データ114Aと、計算データ114Bと、管理プログラム114Cと、変換プログラム114Dと、制御プログラム114Eとを記憶する。例えば、問題データ114Aは、組合せ最適化問題のデータを含む。例えば、計算データ114Bは、各計算サーバ103から収集された計算結果を含む。例えば、管理プログラム114Cは、管理部111の機能を実現するプログラムである。例えば、変換プログラム114Dは、変換部112の機能を実現するプログラムである。例えば、制御プログラム114Eは、制御部113の機能を実現するプログラムである。
【0167】
図11は、計算サーバ103aの構成を示す図である。他の計算サーバ103は、計算サーバ103aと同様の構成であってもよいし、計算サーバ103aと異なる構成であってもよい。
【0168】
計算サーバ103aは、例えば、通信回路131と、共有メモリ132と、プロセッサ133a~133dと、ストレージ134と、ホストバスアダプタ135とを備える。通信回路131、共有メモリ132、プロセッサ133a~133d、ストレージ134、ホストバスアダプタ135は、バス136を介して互いに接続される。
【0169】
通信回路131は、ネットワーク102に接続された各装置との間でデータの送受信を行う。通信回路131は、例えば、有線LANのNIC(Network Interface Card)である。ただし、通信回路131は、無線LANなど、その他の種類の通信回路であってもよい。共有メモリ132は、プロセッサ133a~133dからアクセス可能なメモリである。共有メモリ132は、例えば、DRAMおよびSRAM等の揮発性メモリである。共有メモリ132は、不揮発性メモリ等の他の種類のメモリを含んでもよい。プロセッサ133a~133dは、共有メモリ132を介してデータを共有する。なお、共有メモリ132は、計算サーバ103aの全てメモリにより構成されていなくてもよい。例えば、計算サーバ103aの一部のメモリは、プロセッサ133a~133dのうちのいずれかからのみからアクセスできるローカルメモリであってもよい。
【0170】
プロセッサ133a~133dは、計算処理を実行する電子回路である。プロセッサ133a~133dは、例えば、CPU、GPU、FPGA、ASICのいずれであってもよいし、これらの組合せであってもよい。また、プロセッサ133a~133dは、CPUコアまたはCPUスレッドであってもよい。プロセッサ133a~133dがCPUである場合、計算サーバ103aが備えるソケット数については、特に問わない。また、プロセッサ133a~133dは、PCI expressなどのバスを介して計算サーバ103aのその他の構成要素に接続されていてもよい。
【0171】
図11の例では、計算サーバ103aは、4つのプロセッサ133a~133dを備える。しかし、1台の計算サーバ103aに含まれるプロセッサ数は、4個に限られない。
【0172】
ストレージ134は、計算サーバ103aのプログラム、プログラムの実行に必要なデータ、プログラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラムは、OSとアプリケーションの両方を含むものとする。ストレージ134は、揮発性メモリおよび不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリは、たとえば、DRAMまたはSRAMである。不揮発性メモリは、例えば、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAMまたはMRAM等である。また、ストレージ134は、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置を含んでもよい。
【0173】
ホストバスアダプタ135は、他の計算サーバ103との間のデータ通信を実現する。ホストバスアダプタ135は、ケーブル104aを介してスイッチ105に接続されている。ホストバスアダプタ135は、例えば、HCA(Host Channel Adaptor)である。ホストバスアダプタ135、ケーブル104a、スイッチ105で高スループットを実現可能なインターコネクトを形成することにより、並列的な計算処理の速度を向上させることができる。
【0174】
図12は、ストレージ134に記憶されるデータを示す図である。ストレージ134は、例えば、計算データ134Aと、計算プログラム134Bと、制御プログラム134Cとを記憶する。計算データ134Aは、計算サーバ103aの計算途中のデータまたは計算結果を含む。計算データ134Aの少なくとも一部は、共有メモリ132、プロセッサのキャッシュまたはプロセッサのレジスタ等の、異なる記憶階層に記憶されてもよい。計算プログラム134Bは、各プロセッサ133における計算処理および、共有メモリ132およびストレージ134へのデータの保存処理を実現するプログラムである。制御プログラム134Cは、管理サーバ101の制御部113から送信された指令に基づき、計算サーバ103aを制御し、計算サーバ103aの計算結果を管理サーバ101に送信するプログラムである。
【0175】
このような計算サーバ103aは、プロセッサ133a~133dが組合せ最適化問題を解くためのプログラムを実行する。このプログラムは、計算サーバ103aを、入力部12、更新部14および出力部16として機能させる。
【0176】
このような構成の情報処理システム100は、PCクラスタとして利用することが可能である。PCクラスタは、複数台のコンピュータを接続し、1台のコンピュータでは得られない計算性能を実現するシステムである。情報処理システム100は、例えばMPI(Message Passing Interface)を使うことにより、複数の計算サーバ103にメモリが分散して配置されている構成であっても、並列的な計算を実行することが可能である。
【0177】
なお、情報処理システム100は、高速リンクで接続された複数のGPUであってもよい。この場合、複数のGPUのそれぞれは、計算サーバ103と同様の処理を実行する。
【0178】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組合せてもよい。
【符号の説明】
【0179】
10 求解装置
12 入力部
14 更新部
16 出力部