JP7472062B2 - 計算装置、計算方法およびプログラム - Google Patents

計算装置、計算方法およびプログラム Download PDF

Info

Publication number
JP7472062B2
JP7472062B2 JP2021036688A JP2021036688A JP7472062B2 JP 7472062 B2 JP7472062 B2 JP 7472062B2 JP 2021036688 A JP2021036688 A JP 2021036688A JP 2021036688 A JP2021036688 A JP 2021036688A JP 7472062 B2 JP7472062 B2 JP 7472062B2
Authority
JP
Japan
Prior art keywords
variable
value
time
elements
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021036688A
Other languages
English (en)
Other versions
JP2022136875A (ja
Inventor
太郎 金尾
隼人 後藤
亮 日高
光介 辰村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2021036688A priority Critical patent/JP7472062B2/ja
Priority to CN202111002962.7A priority patent/CN115034125A/zh
Priority to US17/461,452 priority patent/US11741187B2/en
Publication of JP2022136875A publication Critical patent/JP2022136875A/ja
Application granted granted Critical
Publication of JP7472062B2 publication Critical patent/JP7472062B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/06Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明の実施形態は、計算装置、計算方法およびプログラムに関する。
組合せ最適化問題とは、複数の組合せの中から目的に最も適した組合せを選ぶ問題である。組合せ最適化問題は、数学的には、「目的関数」と呼ばれる、複数の離散変数を有する関数を最大化させる問題、または、当該関数を最小化させる問題に帰着される。組合せ最適化問題は、金融、物流、交通、設計、製造、生命科学など各種の分野において普遍的な問題であるが、組合せ数が問題サイズの指数関数のオーダーで増える、いわゆる「組合せ爆発」のため、必ず最適解を算出することができるとは限らない。また、最適解に近い近似解を得ることすら難しい場合が多い。
各分野における問題を解決し、社会のイノベーションおよび科学技術の進歩を促進するために、組合せ最適化問題の解を精度良く算出する技術の開発が要求されている。
特開2017-73106号公報 特開2019-145010号公報
A. Lucas, "Ising formulations of many NP problems", Frontiers in Physics 2, 5 (2014), DOI: 10.3389/fphy.2014.00005 M. W. Johnson et al., "Quantum annealing with manufactured spins", Nature 473, 194-198, 11 May. 2011 T. Inagaki et al.,"A coherent Ising machine for 2000-node optimization problems", Science 354, 603 (2016). H. Goto,"Bifurcation-based adiabatic quantum computation with a nonlinear oscillator network", Sci. Rep. 6, 21686 (2016). M. Yamaoka et al., H. IEEE J. Solid-State Circuits 51, 303 (2016). S. Tsukamoto et al., FUJITSU Sci. Tech. J. 53, 8 (2017). 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 EGOR S. TIUNOV, ALEXANDER E. ULANOV, AND A. I. LVOVSKY, "Annealing by simulating the coherent Ising machine",OPTICS EXPRESS 10291, Vol. 27, no. 7, Apr. 2019 H. Goto, K. Endo, M. Suzuki, Y. Sakai, T. Kanao, Y. Hamakawa, R. Hidaka, M. Yamasaki, K. Tatsumura, "High-performance combinatorial optimization based on classical mechanics", Science Advances; 7, eabe7953",Feb. 2021
本発明の実施形態は、組合せ最適化問題の解を精度良く算出する計算装置、計算方法およびプログラムを提供する。
実施形態に係る計算装置は、組合せ最適化問題を解く。前記計算装置は、更新部と、出力部とを備える。前記更新部は、第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する。前記出力部は、前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する。前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応する。前記第1変数および前記第2変数のそれぞれは、実数により表される。前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、前記第1変数を前記第2変数に基づき更新し、前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、前記第2変数に、予め定められた演算により算出された加速値を加算する。前記加速値は、直前時刻における対応する前記第2変数に、所定係数と前記単位時間との積を乗じた値である。
シミュレーテッド分岐アルゴリズムの分岐現象を示す図。 改良アルゴリズムの分岐現象を示す図。 最大カット問題を解いた場合におけるカット数の平均値を示す図。 最大カット問題を解いた場合におけるカット数の最大値を示す図。 最大カット問題を解いた場合における成功確率を示す図。 本実施形態に係る計算装置の機能構成図。 更新部の処理の流れの第1例を示す図。 更新部の処理の流れの第2例を示す図。 更新部のブロック構成図。 情報処理システムの構成図。 管理サーバの構成図。 記憶部に記憶されるデータを示す図。 計算サーバの構成図。 ストレージに記憶されるデータを示す図。
以下、実施形態について説明する。
(組合せ最適化問題)
イジング問題を解くために使われる装置の一例として、イジングマシンが挙げられる。イジングマシンは、イジングモデルの基底状態のエネルギーを計算する。これまで、イジングモデルは、主に強磁性体や相転移現象のモデルとして使われることが多かった。しかし、近年、イジングモデルは、組合せ最適化問題を解くためのモデルとしての利用が増えている。式(1)は、イジングモデルのエネルギーを示す。
Figure 0007472062000001
、sはスピンを表す。スピンは、+1または-1のいずれかの値をとる2値変数である。sは、i番目のスピンを表す。sは、j番目のスピンを表す。iおよびjは、1以上、N以下の任意の整数である。Nは、スピンの数を表し、2以上の整数である。hは、i番目のスピンに作用する局所磁場を表す。Jは、2つのスピン間に作用する力を表す結合係数の行列である。Jは、対角成分が0である実対称行列である。Jijは、Jのi行j列の要素を表す。つまり、Jijは、i番目のスピンと、j番目のスピンとの間に作用する力を表す結合係数である。なお、式(1)のイジングモデルは、スピンの2次式である。イジングモデルは、スピンの3次以上の項を含む拡張されたモデル(多体相互作用を有するイジングモデル)であってもよい。
イジングマシンは、式(1)により表されるエネルギーEIsingを目的関数とし、エネルギーEIsingを可能な限り小さくする解を算出する。エネルギーEIsingが最小値となるイジングモデルの解(s、s、・・・、s)は、最適解と呼ばれる。ただし、イジングモデルの解は、最適解でなく、エネルギーEIsingが最小値に近い近似解であってもよい。すなわち、イジング問題は、最適解のみならず、近似解を算出する問題であってもよい。
また、0または1のいずれかの値をとる離散変数(ビット)の2次関数を目的関数とする組合せ最適化問題は、QUBO(Quadratic Unconstrained Binary Optimization)問題と呼ばれる。離散変数(ビット)は、(1+s)/2の演算を用いることにより、sに変換される。つまり、QUBO問題は、式(1)で表されるイジング問題と等価であるといえる。従って、0-1組合せ最適化問題は、イジング問題に変換し、イジングマシンにより解を算出することが可能である。
イジングマシンは、例えば、量子アニーラ、コヒーレントイジングマシンおよび量子分岐マシン等によりハードウェア実装される。量子アニーラは、超伝導回路を使って量子アニーリングを実現する。コヒーレントイジングマシンは、光パラメトリック発振器で形成されたネットワークの発振現象を利用する。量子分岐マシンは、カー効果を有するパラメトリック発振器のネットワークにおける量子力学的な分岐現象を利用する。これらのハードウェア実装されたイジングマシンは、計算時間の大幅な短縮を実現する可能性がある一方、大規模化および安定的な運用が難しいという課題もある。
イジング問題は、広く普及しているデジタルコンピュータを用いて解を算出することも可能である。デジタルコンピュータは、量子アニーラ、コヒーレントイジングマシンおよび量子分岐マシン等と比べ、大規模化および安定運用が可能である。シミュレーテッドアニーリング(SA)は、デジタルコンピュータでイジング問題を解くためのアルゴリズムの一例である。ただし、シミュレーテッドアニーリングは、それぞれの変数が逐次更新される逐次更新アルゴリズムであるため、並列化による計算処理の高速化は難しい。
非特許文献7には、組合せ最適化問題を解くためのアルゴリズムとして、シミュレーテッド分岐アルゴリズムが提案されている。シミュレーテッド分岐アルゴリズムは、イジングモデルを用いて、デジタルコンピュータによって、規模の大きい組合せ最適化問題を高速に解くことが可能である。シミュレーテッド分岐アルゴリズムは、CPU(Central Processing Unit)、マイクロプロセッサ、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、または、これらの組合せの回路等の電子回路によっても、規模の大きい組合せ最適化問題を高速に解くことが可能である。
(シミュレーテッド分岐アルゴリズム)
シミュレーテッド分岐アルゴリズムは、それぞれがN個の要素に対応する2つの変数xおよび変数yを用いる。変数xを第1変数、変数yを第2変数と呼ぶ場合もある。シミュレーテッド分岐アルゴリズムにおいて、N個の要素のそれぞれは、仮想的な粒子を表す。N個の要素は、イジング問題のN個のスピンに対応する。従って、N個の要素は、組合せ最適化問題のN個の離散変数(ビット)に対応する。変数xおよび変数yは、いずれも、実数で表される連続変数である。変数xは、N個の粒子のうちのi番目の粒子の位置を表す。変数yは、i番目の粒子の運動量を表す。Nは、イジングモデルに含まれるスピンの数を表し、2以上の整数である。iは、1以上、N以下の任意の整数を表し、N個の要素のそれぞれを特定するインデックスを表す。
シミュレーテッド分岐アルゴリズムは、それぞれN個ある2つの変数xおよび変数yについて、下記の式(2)の連立常微分方程式を数値的に解く。
Figure 0007472062000002
Hは、下記の式(3)のハミルトニアンである。
Figure 0007472062000003
係数Dは、予め定められた定数であり、離調(detuning)に相当する。係数p(t)は、ポンピング振幅(pumping amplitude)に相当し、シミュレーテッド分岐アルゴリズムの計算時に更新回数に応じて値が単調増加する。tは、時刻を表す変数である。係数p(t)の初期値は0に設定されていてもよい。係数Kは、正のカー係数(Kerr coefficient)に相当する。
は、外力を表し、下記の式(4)で表される。
Figure 0007472062000004
式(4)のzは、式(3)の中の小カッコの内の数式を変数xで偏微分した式である。式(3)の中の小カッコの内の数式は、イジングモデルのエネルギーEIsingに対応する。
cは、係数である。cは、例えば、計算を実行する前に予め定められる定数であってもよい。例えば、cは、J行列の最大固有値の逆数に近い値に設定してもよい。また、cは、例えば、0.5D√(N/2n)であってもよい。ここで、nは、組合せ最適化問題に係るグラフのエッジ数である。また、α(t)は、p(t)とともに増加する係数である。例えば、α(t)は、√(p(t))であってもよい。
また、シミュレーテッド分岐アルゴリズムは、3次以上の離散変数を含む目的関数を最小化する組合せ最適化問題を解くことも可能である。3次以上の離散変数を含む目的関数を最小化する組合せ最適化問題は、HOBO(Higher Order Binary Optimization)問題と呼ばれる。HOBO問題を解く場合、シミュレーテッド分岐アルゴリズムは、高次へ拡張されたイジングモデルを用いる。
高次へ拡張されたイジングモデルにおけるエネルギーは、下記の式(5)により表される。
Figure 0007472062000005
ここで、J(n)は、n階テンソルを表す。J(n)は、式(1)の局所磁場を表すhおよび結合係数の行列を表すJを一般化して表した表記である。例えば、J(1)は、hに相当する。J(n)は、複数の下付き添え字に同じ値を含む場合、要素の値は0となる。式(5)は、3次の項までを表しているが、4次以降も同様に定義することができる。式(5)は、多体相互作用を含むイジングモデルのエネルギーに相当する。
シミュレーテッド分岐アルゴリズムは、HOBO問題を解く場合、式(3)のハミルトニアンHが式(6)に置き換えられる。
Figure 0007472062000006
また、シミュレーテッド分岐アルゴリズムは、HOBO問題を解く場合、式(4)の外力fが式(7)に置き換えられる。
Figure 0007472062000007
式(7)のzは、式(6)の中の小カッコの内の数式を変数xで偏微分した式である。式(6)の中の小カッコの内の数式は、高次へ拡張されたイジングモデルのエネルギーEIsingに対応する。
そして、シミュレーテッド分岐アルゴリズムは、p(t)の値を初期値(例えば、0)から所定の値まで増加させた後における変数xの符号に基づき、スピンsの値を算出する。シミュレーテッド分岐アルゴリズムは、例えば、x>0の場合にsgn(x)=1、x<0の場合にsgn(x)=-1となる符号関数を用いて、スピンsの値を算出する。
(シミュレーテッド分岐アルゴリズムの演算)
シミュレーテッド分岐アルゴリズムは、QUBO問題を解く場合、シンプレクティック・オイラー法を用いて、式(2)、式(3)および式(4)によって与えられる微分方程式を解く。HOBO問題を解く場合、シミュレーテッド分岐アルゴリズムは、シンプレクティック・オイラー法を用いて、式(2)、式(6)、式(7)によって与えられる微分方程式を解く。
ここで、シンプレクティック・オイラー法を使う場合、式(2)、式(3)および式(4)によって与えられる微分方程式および式(2)、式(6)、式(7)によって与えられる微分方程式は、式(8)に示すような、離散的な漸化式に書き換えられる。
Figure 0007472062000008
tは、時刻を表す。Δtは、時間ステップ(単位時間、時間刻み幅)を表す。
シミュレーテッド分岐アルゴリズムを実行する場合、デジタルコンピュータまたはFPGA等の電子回路は、式(8)のアルゴリズムに基づき、それぞれN個ある2つの変数xおよび変数yを、初期時刻から時間ステップ毎に順次に、変数xと変数yとを交互に更新する。そして、デジタルコンピュータまたはFPGA等の電子回路は、終了時刻におけるN個の変数xの値を、符号関数を用いて2値化して、N個のスピンの値を出力する。
なお、式(8)は、微分方程式との対応関係を示すために、時刻tおよび時間ステップΔtを用いて表されている。ただし、シンプレクティック・オイラー法をデジタルコンピュータまたはFPGA等の電子回路で実行する場合、式(8)を演算するためのアルゴリズムは、明示的なパラメータとして時刻tおよび時間ステップΔtを含まなくてよい。例えば、時間ステップΔtを1とする場合、式(8)を演算するためのアルゴリズムは、時間ステップΔtを含まなくてよい。例えば、明示的なパラメータとして時刻tを含まない場合、式(8)を演算するアルゴリズムは、x(t+Δt)をx(t)の更新後の値として処理を実行する。すなわち、式(8)を演算するアルゴリズムは、式(8)における“t”を更新前の変数を特定するパラメータ、“t+Δt”を更新後の変数を特定するパラメータとして処理を実行する。以降で説明する式(8)を改良したアルゴリズムも同様である。
(改良アルゴリズム)
発明者は、シミュレーテッド分岐アルゴリズムを改良したアルゴリズム(改良アルゴリズム)を発明した。改良アルゴリズムは、シンプレクティック・オイラー法を用いて、式(8)により表される微分方程式を演算する場合において、次の処理をさらに実行する。
すなわち、改良アルゴリズムは、変数xの更新後、変数xが予め定められた第1値より小さい場合、変数xを第1値に変更し、且つ、変数yを予め定められた第3値に変更する。また、改良アルゴリズムは、変数xの更新後、変数xが第1値より大きい第2値より大きい場合、変数xを第2値に変更し、且つ、変数yを第3値に変更する。
例えば、第1値は、-1であり、第2値は、+1であり、第3値は、0である。この場合、改良アルゴリズムは、変数xの更新後、変数xが-1より小さい場合、変数xを-1に変更し、且つ、変数yを0に変更する。また、改良アルゴリズムは、変数xの更新後、変数xが+1より大きい場合、変数xを+1に変更し、且つ、変数yを0に変更する。
さらに、改良アルゴリズムは、変数xおよび変数yを更新した後に、変数yに、予め定められた演算により算出された加速値を加算する。加速値は、例えば、直前時刻における変数y(すなわち、更新前の変数y)に、所定係数(r)と単位時間(Δt)との積(rΔt)を乗じた値である。所定係数(r)は、例えば予め定められた定数である。また、所定係数は、更新毎に乱数に基づき定まる値であってもよい。第1値は、-1であり、第2値は、+1であり、第3値は、0である場合、所定係数は、例えば、0より大きく、1より小さい値である。
また、式(8)の“Kx (t+Δt)”は、計算中に変数xが発散するのを防止する機能を有する項である。改良アルゴリズムは、更新毎に、変数xが第1値(例えば-1)以上、第2値(例えば+1)以下の範囲に制限されるので、計算中に変数xが発散することはない。従って、改良アルゴリズムは、式(8)により表される微分方程式における“Kx (t+Δt)”の項を削除した微分方程式を演算することができる。
そこで、改良アルゴリズムは、式(8)のアルゴリズムに代わり、下記の式(9)を用いて演算される。
Figure 0007472062000009
QUBO問題の場合、式(9)のz(t+Δt)は、下記の式(10)により表される。
Figure 0007472062000010
HOBO問題の場合、式(9)のz(t+Δt)は、下記の式(11)により表される。
Figure 0007472062000011
上述の式(9)の改良アルゴリズムは、式(8)と同様、ハミルトン方程式を解くものであり、変数yが運動量に相当する。そのため、シンプレクティック・オイラー法を使うことにより、時間ステップΔtとして小さな値を使わなくても、安定的に解を算出することができる。
なお、改良アルゴリズムによる求解が可能な組合せ最適化問題は、イジング問題に限られず、一般的な2値変数の組合せ最適化問題を解くことが可能である。例えば、改良アルゴリズムは、目的関数の変数が、a(第1値)と、aより大きいb(第2値)のいずれかをとる2値変数である、組合せ最適化問題に適用することが可能である。また、一定の更新回数の後に目的関数の解を算出する場合、符号関数の代わりに、値域がaまたはbの2値である関数f(x)を使ってもよい。この関数f(x)がとる値は、変数xの値をしきい値v(a<v<b)と比較した結果に基づいて決まる。例えば、x<vであるならば、f(x)=aとなる。また、v<xであるならば、f(x)=bとなる。例えば、x=vである場合、f(x)=aまたは、f(x)=bとなる。しきい値vは、例えば、(a+b)/2であってもよい。
図1は、シミュレーテッド分岐アルゴリズムにより最適化問題を解いた場合における、変数xの分岐現象を表す図である。シミュレーテッド分岐アルゴリズムにより最適化問題を解いた場合、系のパラメータが変化することに伴い、安定運動状態が1個のみの系から、安定運動状態が2個の系へと遷移する分岐現象が生じる。図1に示すように、分岐現象が進むと、変数xは、-1または+1の近傍に集中するが、-1より小さい領域、または、+1より大きい領域にも広がる。
図2は、改良アルゴリズムにより最適化問題を解いた場合における、変数xの分岐現象を表す図である。改良アルゴリズムにより最適化問題を解いた場合、シミュレーテッド分岐アルゴリズムと同様に、系のパラメータが変化することに伴い、安定運動状態が1個のみの系から、安定運動状態が2個の系へと遷移する分岐現象が生じる。しかし、改良アルゴリズムは、-1より小さいxを-1に戻し、+1より大きいxを+1に戻すので、-1より小さい領域および+1より大きい領域に広がらない。
図3および図4は、改良アルゴリズムを用いて、最大カット問題K2000を10000回解いた場合における、時間ステップ数に対するカット数の結果を示す図である。図3は、カット数の平均値を表す。図4は、カット数の最大値を表す。また、図5は、改良アルゴリズムを用いて、最大カット問題K2000を10000回解いた場合における、最大カット数が得られた確率である成功確率を表す。
なお、図3、図4および図5は、Dを1、Kを1、cを0.9√(1999)、rを0.5、Δtを1.1に設定し、pを0から1に線形に増加させて、改良アルゴリズムを実行した結果を表す。図3および図4の破線Cmaxは、K2000で知られている最大カット数である33337を示している。また、図3および図4を参照すると、改良アルゴリズムは、最大カット数に近づいており、精度良く最適化問題を解くことができることがわかった。また、非特許文献9には、シミュレーテッド分岐アルゴリズムを改良した他の方式(bSB,dSB)が記載されている。図3、図4および図5には、比較例として、bSBおよびdSBにより同一のパラメータで最大カット問題K2000を解いた結果も示している。改良アルゴリズムは、bSBおよびdSBと比較しても同等以上の結果が得られることがわかった。また、図5に示すように、改良アルゴリズムは、bSBおよびdSBと比較して高い成功確率が得られることがわかった。
(機能構成)
図6は、本実施形態に係る計算装置10の機能構成を示す図である。
計算装置10は、改良アルゴリズムを用いて、最適化問題を解く。計算装置10は、例えば、コンピュータ等の情報処理装置、ネットワークを介して複数のコンピュータまたはサーバが相互に通信をして構成されるコンピュータシステム、または、複数台のコンピュータが連携して情報処理を実行するPCクラスタ等により実現される。また、計算装置10は、CPU、マイクロプロセッサ、GPU、FPGAまたはASIC、または、これらの組合せの回路等の電子回路によって実現される。
計算装置10は、機能構成として、入力部12と、更新部14と、出力部16とを備える。
入力部12は、組合せ最適化問題の目的関数を定義するための情報(例えば、N、J、h)、および、改良アルゴリズムを実行するために必要な係数を表す情報(x、Δt、T,p(t)、α(t))を外部装置から受け取り、更新部14に与える。更新部14は、改良アルゴリズムを用いて、第1変数(x)および第2変数(y)が対応付けられた複数の要素のそれぞれについて、初期時刻(t=0)から終了時刻(t=T)まで単位時間(Δt)毎に順次に、第1変数(x)および第2変数(y)を交互に更新する。
そして、出力部16は、終了時刻(t=T)における複数の要素のそれぞれの第1変数(x)に基づき、組合せ最適化問題の解を出力する。例えば、出力部16は、終了時刻における複数の要素のそれぞれについて、第1変数(x)を予め設定されたしきい値により2値化した離散変数の値を算出する。そして、出力部16は、算出した複数の離散変数の値を組合せ最適化問題の解として出力する。
(処理フロー)
図7は、更新部14の処理の流れの第1例を示す図である。更新部14は、例えば、図7に示す流れで処理を実行する。
まず、S101において、更新部14は、パラメータを設定する。具体的には、更新部14は、N×N個の結合係数を含む行列であるJ、および、N個の局所磁場を表す局所磁場係数を含む配列であるhを設定する。なお、更新部14は、HOBO問題を解く場合には、Jおよびhに代えて、N個の作用係数を含むm次テンソルであるJ(m)を設定する。この場合、(m)は、HOBO問題の目的関数の変数の次数を表す。さらに、更新部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から受け取ったパラメータに応じて設定してもよいし、予め決定されており変更できないパラメータを設定してもよい。
続いて、S102において、更新部14は、変数を初期化する。具体的には、更新部14は、時刻を表す変数であるtを初期時刻(例えば、0)に初期化する。さらに、更新部14は、N個の第1変数(x(t)~x(t))のそれぞれおよびN個の第2変数(y(t)~y(t))のそれぞれに、ユーザから受け取った初期値、予め定められた固定値、または、乱数を代入する。
続いて、更新部14は、S103とS118との間のループ処理を、tがTより大きくなるまで繰り返す。1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第1変数(x(t+Δt)~x(t+Δt))を、対象時刻(t)におけるN個の第2変数(y(t+Δt)~y(t+Δt))に基づき算出する。また、1回のループ処理において、更新部14は、対象時刻(t+Δt)におけるN個の第2変数(y(t+Δt)~y(t+Δt))を、直前時刻(t)におけるN個の第1変数(x(t)~x(t))および直前時刻(t)におけるN個の第2変数(y(t)~y(t))に基づき算出する。
なお、直前時刻(t)は、対象時刻(t+Δt)より単位時間(Δt)前の時刻である。すなわち、更新部14は、S103とS118との間のループ処理を繰り返すことにより、N個の第1変数(x(t)~x(t))およびN個の第2変数(y(t)~y(t))を、初期時刻(t=0)から終了時刻(t=T)まで単位時間(Δt)毎に順次に更新する。
S104において、更新部14は、直前時刻(t)におけるN個の第2変数(y(t)~y(t))を記憶する。更新部14は、記憶したN個の第2変数(y(t)~y(t))を後述のS115で加速値を算出するために用いる。
続いて、更新部14は、S105とS109との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。iは、1からNまでの整数であり、N個の要素のうちの処理対象を表すインデックスである。N個の要素のそれぞれは、第1変数(x(t))および第2変数(y(t))が対応付けられる。S105とS109との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
S106において、更新部14は、N個の要素のそれぞれの直前時刻(t)における第1変数(x(t)~x(t))と、対象要素とN個の要素のそれぞれとの組毎に予め定められる作用係数と、に基づき更新値(z(t))を算出する。QUBO問題の場合、作用係数は、Jに含まれる結合係数およびhに含まれる局所磁場係数である。HOBO問題の場合、作用係数は、J(n)に含まれる。
QUBO問題の場合、更新部14は、式(12)を算出する。
Figure 0007472062000012
また、HOBO問題の場合、更新部14は、式(13)を算出する。
Figure 0007472062000013
続いて、S107において、更新部14は、更新値(z(t))に係数(c)を乗算することにより、外力(f(t))を算出する。具体的には、更新部14は、式(14)を算出する。
Figure 0007472062000014
続いて、S108において、更新部14は、対象要素の対象時刻(t+Δ)における第2変数(y(t+Δ))を、対象要素の直前時刻(t)における第2変数(y(t))に、外力(f(t))と対象要素の直前時刻(t)における第1変数(x(t))とに基づく値に単位時間(Δt)を乗算した値を、加算することにより、算出する。具体的には、更新部14は、式(15)を算出する。
Figure 0007472062000015
更新部14は、以上のようなS105とS109との間のループ処理をN回実行することにより、N個の要素のそれぞれについて、対象時刻(t+Δt)における第2変数(y(t+Δt))を、直前時刻(t)における第1変数(x(t)~x(t))に基づき更新する。更新部14は、S105とS109との間のループ処理をN回実行した場合、処理をS110に進める。
続いて、更新部14は、S110とS116との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S110とS116との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
S111において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を、対象要素の直前時刻(t)における第1変数(x(t))に、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))と予め定められた定数(D)と単位時間(Δt)とを乗算した値を加算することにより算出する。具体的には、更新部14は、式(16)を算出する。
Figure 0007472062000016
続いて、S112において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が予め定められた第1値以上、予め定められた第2値以下であるか否かを判断する。本例において、第1値は、-1であり、第2値は、+1である。例えば、第2値は、連続量である第1変数(x(t))の単位量である。例えば、第1値は、第1値の正負を反転した値である。
更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値以上、第2値以下である場合(S112のYes)、処理をS115に進める(S112のYes)。対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値より小さいまたは第2値より大きい場合(S112のNo)、処理をS113に進める。
S113において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))の制約処理をする。具体的には、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値より小さい場合、第1変数(x(t+Δt))を第1値に変更する。また、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第2値より大きい場合、第1変数(x(t+Δt))を第2値に変更する。本例においては、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が-1より小さい場合、第1変数(x(t+Δt))を-1に変更する。また、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が+1より大きい場合、第1変数(x(t+Δt))を+1に変更する。
S113に続いて、S114において、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))の制約処理をする。具体的には、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))を、予め定められた第3値に変更する。第3値は、例えば、第1値より大きく、第2値より小さい値である。本例において、第3値は、0である。更新部14は、S114を終えると、処理をS115に進める。
S115において、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))に、予め定められた演算により算出された加速値を加算する。例えば、加速値は、直前時刻における第2変数(y(t))に、所定係数(r)と単位時間(Δt)との積(rΔt)を乗じた値である。所定係数(r)は、予め定められた定数である。例えば、所定係数(r)は、0より大きく1より小さい値である。この場合、更新部14は、式(17)に示す演算を実行する。
Figure 0007472062000017
なお、所定係数(r)は、時刻(t)に依存しない値であれば、他の値であってもよい。例えば、所定係数(r)は、0より大きく1より小さい範囲内における、乱数に基づく値であってもよい。更新部14は、S115を終えると、処理をS116に進める。
更新部14は、以上のようなS110とS116との間のループ処理をN回実行することにより、次の処理を実行する。すなわち、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))に基づき更新する。続いて、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値より小さい場合、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を第1値に変更する。また、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第2値より大きい場合、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を第2値に変更する。また、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が、第1値より小さいまたは第2値より大きい場合、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))を第3値に変更する。さらに、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δt))に、対象要素の直前時刻(t)における第2変数(y(t))に所定係数(r)と単位時間(Δt)との積(rΔt)を乗じた加速値を加算する。
更新部14は、S110とS116との間のループ処理をN回実行した場合、処理をS117に進める。
S117において、更新部14は、直前時刻(t)に単位時間(Δt)を加算して、対象時刻(t+Δt)を更新する。S118において、更新部14は、S104からS117までの処理を、tが終了時刻(T)を超えるまで繰り返す。そして、更新部14は、tが終了時刻(T)より大きくなった場合、本フローを終了する。
そして、更新部14は、N個の要素のそれぞれについて、終了時刻(t=T)における第1変数(x(T))の符号に応じて、対応するスピンの値を算出する。例えば、更新部14は、終了時刻(t=T)における第1変数(x(T))の符号が負である場合、対応するスピンを-1とし、正である場合、対応するスピンを+1とする。そして、更新部14は、算出した複数のスピンの値、または、算出した複数のスピンの値を離散変数に変換した値を組合せ最適化問題の解として出力する。
図7に示すフローチャートに従った処理を実行することにより、更新部14は、N個の要素のそれぞれについて、初期時刻(t=0)から終了時刻(t=T)まで単位時間毎に順次に、第1変数(x(t+Δt))および第2変数(y(t+Δt))を交互に更新する。また、図7に示すフローチャートに従った処理を実行することにより、更新部14は、単位時間毎の更新処理において、N個の要素のそれぞれについて、対象時刻(t+Δt)における第2変数(y(t+Δt))を算出した後に、対象時刻(t+Δt)における第1変数(x(t+Δt))を算出する。さらに、図7に示すフローチャートに従った処理を実行することにより、更新部14は、単位時間毎の更新処理において、N個の要素のそれぞれについて、対象時刻(t+Δt)における第1変数(x(t+Δt))を更新する前において、対象時刻(t+Δt)における第2変数(y(t+Δt))を算出し、対象時刻(t+Δt)における第1変数(x(t+Δt))を更新した後において、対象時刻(t+Δt)における第2変数(y(t+Δt))に加速値を加算する。
以上により、更新部14は、シンプレクティック・オイラー法を用いて改良アルゴリズムに従った演算を実行して、終了時刻(t=T)におけるN個の第1変数(x(t)~x(t))およびN個の第2変数(y(t)~y(t))を算出することができる。
図8は、更新部14の処理の流れの第2例を示す図である。更新部14は、改良アルゴリズムを用いて最適化問題を解く場合、図7に示す流れに代えて、図8に示す流れで処理を実行してもよい。なお、図8のフローチャートは、図7で示したフローチャートの処理とほぼ同一の処理を実行するステップには、同一のステップ番号を付けている。
まず、S101およびS102において、更新部14は、図7に示す第1例と同様の処理を実行する。続いて、更新部14は、S103とS118との間のループ処理を、図7に示す第1例と同様に実行する。
S104において、更新部14は、図7に示す第1例と同様の処理を実行する。
続いて、更新部14は、S110とS116との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。S110とS116との間のループ処理において、更新部14は、N個の要素のうちのi番目の要素を、対象要素として処理を実行する。
S111において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を、対象要素の直前時刻(t)における第1変数(x(t))に、対象要素の直前時刻(t)における第2変数(y(t))と予め定められた定数(D)と単位時間(Δt)とを乗算した値を加算することにより算出する。具体的には、更新部14は、式(18)を算出する。
Figure 0007472062000018
続いて、S112において、更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が予め定められた第1値以上、予め定められた第2値以下であるか否かを判断する。更新部14は、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値以上、第2値以下である場合(S112のYes)、処理をS115に進める(S112のYes)。対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値より小さいまたは第2値より大きい場合(S112のNo)、処理をS113に進める。
S113において、更新部14は、図7に示す第1例と同様の処理を実行する。S113に続いて、S114において、更新部14は、対象要素の直前時刻(t)における第2変数(y(t))の制約処理をする。具体的には、更新部14は、対象要素の直前時刻(t)における第2変数(y(t))を第3値に変更する。更新部14は、S114を終えると、処理をS115に進める。
S115において、更新部14は、対象要素の直前時刻(t)における第2変数(y(t))に、予め定められた演算により算出された加速値を加算する。例えば、加速値は、制約処理をする前の直前時刻における第2変数(y´(t))に、所定係数(r)と単位時間(Δt)との積(rΔt)を乗じた値である。更新部14は、制約処理をする前の直前時刻における第2変数(y´(t))を、S104において予め記憶している。例えば、更新部14は、式(19)に示す演算を実行する。
Figure 0007472062000019
更新部14は、S115を終えると、処理をS116に進める。更新部14は、以上のようなS110とS116との間のループ処理をN回実行することにより、次の処理を実行する。
すなわち、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を、対象要素の直前時刻(t)における第2変数(y(t))に基づき更新する。続いて、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第1値より小さい場合、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を第1値に変更する。また、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が第2値より大きい場合、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))を第2値に変更する。また、更新部14は、N個の要素のそれぞれについて、対象要素の対象時刻(t+Δt)における第1変数(x(t+Δt))が、第1値より小さいまたは第2値より大きい場合、対象要素の直前時刻(t)における第2変数(y(t))を第3値に変更する。さらに、更新部14は、N個の要素のそれぞれについて、対象要素の直前時刻(t)における第2変数(y(t))に、制約処理をする前の対象要素の直前時刻(t)における第2変数(y(t))に所定係数(r)と単位時間(Δt)との積(rΔt)を乗じた加速値を加算する。
更新部14は、S110とS116との間のループ処理をN回実行した場合、処理をS105に進める。
続いて、更新部14は、S105とS109との間のループ処理を、i=1からi=Nまでiを1ずつインクリメントしながら繰り返す。
S106において、更新部14は、N個の要素のそれぞれの対象時刻(t+Δt)における第1変数(x(t+Δt)~x(t+Δt))と、対象要素とN個の要素のそれぞれとの組毎に予め定められる作用係数と、に基づき更新値(z(t+Δt))を算出する。
QUBO問題の場合、更新部14は、式(20)を算出する。
Figure 0007472062000020
また、HOBO問題の場合、更新部14は、式(21)を算出する。
Figure 0007472062000021
続いて、S107において、更新部14は、更新値(z(t+Δt))に係数(c)を乗算することにより、外力(f(t+Δt))を算出する。具体的には、更新部14は、式(22)を算出する。
Figure 0007472062000022
続いて、S108において、更新部14は、対象要素の対象時刻(t+Δt)における第2変数(y(t+Δ))を、対象要素の直前時刻(t)における第2変数(y(t))に、外力(f(t))と対象要素の対象時刻(t+Δ)における第1変数(x(t+Δ))とに基づく値に単位時間(Δt)を乗算した値を、加算することにより、算出する。具体的には、更新部14は、式(23)を算出する。
Figure 0007472062000023
更新部14は、以上のようなS105とS109との間のループ処理をN回実行することにより、N個の要素のそれぞれについて、対象時刻(t+Δt)における第2変数(y(t+Δt))を、対象時刻(t+Δt)における第1変数(x(t+Δt)~x(t+Δt))に基づき更新する。
更新部14は、S105とS109との間のループ処理をN回実行した場合、処理をS117に進める。
S117において、更新部14は、直前時刻(t)に単位時間(Δt)を加算して、対象時刻(t+Δt)を更新する。S118において、更新部14は、S104からS117までの処理を、tが終了時刻(T)を超えるまで繰り返す。そして、更新部14は、tが終了時刻(T)より大きくなった場合、本フローを終了する。
そして、更新部14は、N個の要素のそれぞれについて、終了時刻(t=T)における第1変数(x(T))の符号に応じて、対応するスピンの値を算出する。
図8に示すフローチャートに従った処理を実行することにより、更新部14は、N個の要素のそれぞれについて、初期時刻(t=0)から終了時刻(t=T)まで単位時間毎に順次に、第1変数(x(t+Δt))および第2変数(y(t+Δt))を交互に更新する。また、図8に示すフローチャートに従った処理を実行することにより、更新部14は、単位時間毎の更新処理において、N個の要素のそれぞれについて、対象時刻(t+Δt)における第1変数(x(t+Δt))を算出した後に、対象時刻(t+Δt)における第2変数(y(t+Δt))を算出する。さらに、図8に示すフローチャートに従った処理を実行することにより、更新部14は、単位時間毎の更新処理において、N個の要素のそれぞれについて、第1変数(x(t+Δt))を更新した後、且つ、対象時刻(t+Δt)における第2変数(y(t+Δt))を更新する前において、直前時刻(t)における第2変数(y(t))に加速値を加算する。
以上により、更新部14は、シンプレクティック・オイラー法を用いて改良アルゴリズムに従った演算を実行して、終了時刻(t=T)におけるN個の第1変数(x(t)~x(t))およびN個の第2変数(y(t)~y(t))を算出することができる。
なお、更新部14は、S110~S116の処理を、N個の要素のそれぞれに対して実行する。更新部14は、これらの処理をM個(Mは、2以上、N以下の整数)の処理回路、プロセッサ、コンピュータまたはサーバ等の演算処理装置により並列に実行させてもよい。例えば、Mは、Nの約数である。この場合、N個の要素のそれぞれは、M個の演算処理装置の何れか1つに対応している。そして、M個の演算処理装置のそれぞれは、N個の要素のうちの対応する要素について、S110~S116の処理を実行する。このような処理を実行することにより、更新部14は、これらの処理を複数のFPGA等の回路により分散して実行させて、高速に処理結果を得ることができる。
さらに、更新部14は、S105~S109の処理も、N個の要素のそれぞれに対して実行する。更新部14は、これらの処理をM個の処理回路、プロセッサ、コンピュータまたはサーバ等の演算処理装置により並列に実行させてもよい。例えば、Mは、Nの約数である。この場合、N個の要素のそれぞれは、M個の演算処理装置の何れか1つに対応している。そして、M個の演算処理装置のそれぞれは、N個の要素のうちの対応する要素について、S105~S109の処理を実行する。このような処理を実行することにより、更新部14は、これらの処理を複数のFPGA等の回路により分散して実行させて、高速に処理結果を得ることができる。
(演算回路)
図9は、更新部14を回路化する場合のブロック構成を示す図である。更新部14は、回路化する場合、一例として図9に示すように構成される。なお、図9の説明において、直前時刻は、tと表される。また、対象時刻は、tと表される。
図9に示す更新部14は、式(9)および式(10)で表される改良アルゴリズムを実行する。更新部14は、Xメモリ66と、Yメモリ67と、作用演算回路68と、更新回路69と、制御回路70とを備える。
Xメモリ66は、直前時刻(t)におけるN個の第1変数(x(t))を記憶する。Xメモリ66は、時刻の更新に伴って、記憶している直前時刻(t)におけるN個の第1変数(x(t))が書き換えられる。すなわち、Xメモリ66は、対象時刻(t)におけるN個の第1変数(x(t))が算出された場合、算出された対象時刻(t)におけるN個の第1変数(x(t))が、新たな直前時刻(t)におけるN個の第1変数(x(t))として書き込まれる。制御回路70は、演算に先だって、初期時刻におけるN個の第1変数xをXメモリ66に書き込む。
Yメモリ67は、直前時刻(t)におけるN個の第2変数(y(t))を記憶する。Yメモリ67は、時刻の更新に伴って、記憶している直前時刻(t)におけるN個の第2変数(y(t))が書き換えられる。すなわち、Yメモリ67は、対象時刻(t)におけるN個の第2変数(y(t))が算出された場合、算出された対象時刻(t)におけるN個の第2変数(y(t))が、新たな直前時刻(t)におけるN個の第2変数(y(t))として書き込まれる。制御回路70は、演算に先だって、初期時刻におけるN個の第2変数yをYメモリ67に書き込む。
作用演算回路68は、直前時刻(t)におけるN個の第1変数(x(t))をXメモリ66から取得する。そして、作用演算回路68は、N個の要素のそれぞれについて、更新値(z(t))を算出する。
更新回路69は、N個の要素のそれぞれについて、更新値(z(t))を作用演算回路68から取得する。さらに、更新回路69は、N個の要素のそれぞれについて、直前時刻(t)における第1変数(x(t))をXメモリ66から取得し、直前時刻(t)における第2変数(y(t))をYメモリ67から取得する。そして、更新回路69は、N個の要素のそれぞれについて、対象時刻(t)における第1変数(x(t))を算出し、Xメモリ66に記憶されている直前時刻(t)における第1変数(x(t))を書き換える。これとともに、更新回路69は、N個の要素のそれぞれについて、対象時刻(t)における第2変数(y(t))を算出し、Yメモリ67に記憶されている直前時刻(t)における第2変数(y(t))を書き換える。
制御回路70は、対象時刻(t)を単位時間(Δt)毎に順次に更新することにより、作用演算回路68および更新回路69に対して単位時間(Δt)毎の第1変数(x(t))および第2変数(y(t))を順次に算出させる。
さらに、制御回路70は、1からNまでのインクリメントすることによりインデックス(i)を発生して、作用演算回路68および更新回路69に対して、N個の要素のそれぞれに対応する、対象時刻(t)における第1変数(x(t))および対象時刻(t)における第2変数(y(t))をインデックス順に算出させる。なお、作用演算回路68および更新回路69は、複数個のインデックスに対応する複数個の第1変数(x(t))および複数個の第2変数(y(t))を並列に算出してもよい。
作用演算回路68は、Jメモリ71と、Hメモリ72と、行列演算回路73と、α関数回路74と、第1加算回路75とを有する。
Jメモリ71は、(N×N)個の結合係数を含むN×Nの行列を記憶する。Jは、行列に含まれるi行j列の結合係数を表す。Jは、組合せ最適化問題に対応するイジングモデルにおける、i番目のスピンとj番目のスピンとの結合係数を表す。制御回路70は、演算に先だって、ユーザ等により予め生成された行列をJメモリ71に書き込む。
Hメモリ72は、N個の局所磁場係数を含む配列を記憶する。hは、配列に含まれるi番目の局所磁場係数を表す。hは、組合せ最適化問題に対応するイジングモデルにおける、i番目のスピンに作用する局所磁場を表す。制御回路70は、演算に先だって、ユーザ等により予め生成された配列をHメモリ72に書き込む。
行列演算回路73は、Xメモリ66から、直前時刻(t)におけるN個の第1変数(x(t))を取得する。行列演算回路73は、N個の要素のそれぞれについて、Jメモリ71から対象の行に含まれるN個の結合係数Jを取得する。そして、行列演算回路73は、N個の要素のそれぞれについて、直前時刻(t)におけるN個の第1変数(x(t))と、対象の行に含まれるN個の結合係数Jとの積和演算を実行する。
α関数回路74は、N個の要素のそれぞれについて、Hメモリ72から対象の局所磁場係数hを取得する。α関数回路74は、N個の要素のそれぞれについて、{-hα(t)}の演算を実行する。α(t)は、予め設定された関数である。
第1加算回路75は、N個の要素のそれぞれについて、行列演算回路73による積和演算結果と、α関数回路74による演算結果とを加算する。この演算により、第1加算回路75は、N個の要素のそれぞれについて、式(24)で表される直前時刻(t)における更新値(z(t))を出力する。
Figure 0007472062000024
更新回路69は、第1乗算回路79と、P関数回路80と、第2乗算回路81と、第2加算回路82と、第3乗算回路83と、第3加算回路84と、制約前Yメモリ85と、第4乗算回路86と、第4加算回路87と、判定回路91と、X制約回路92と、Y制約回路93と、加速値算出回路94と、加速値加算回路95とを有する。
第1乗算回路79は、N個の要素のそれぞれについて、更新値(z(t))に係数である-cを乗算する。P関数回路80は、N個の要素のそれぞれについて、{-D+p(t)}の演算を実行する。第2乗算回路81は、N個の要素のそれぞれについて、Xメモリ66から直前時刻(t)における第1変数(x(t))を取得する。そして、第2乗算回路81は、N個の要素のそれぞれについて、直前時刻(t)における第1変数(x(t))と、P関数回路80の演算結果とを乗算する。
第2加算回路82は、N個の要素のそれぞれについて、第1乗算回路79の演算結果と、第2乗算回路81の演算結果とを加算する。第3乗算回路83は、第2加算回路82の演算結果に単位時間であるΔtを乗算する。
第3加算回路84は、N個の要素のそれぞれについて、Yメモリ67から直前時刻(t)における第2変数(y(t))を取得する。第3加算回路84は、N個の要素のそれぞれについて、直前時刻(t)における第2変数(y(t))と、第3乗算回路83の演算結果とを加算する。この演算により、第3加算回路84は、N個の要素のそれぞれについて、式(25)で表される対象時刻(t)における第2変数(y(t))を出力する。
Figure 0007472062000025
そして、第3加算回路84は、算出したN個の要素のそれぞれの対象時刻(t)における第2変数(y(t))を、制約前Yメモリ85に書き込む。制約前Yメモリ85は、Y制約回路93による制約前の、対象時刻(t)におけるN個の第2変数(y(t))を記憶する。
第4乗算回路86は、N個の要素のそれぞれについて、制約前Yメモリ85から対象時刻(t)における、制約前の第2変数(y(t))を取得する。第4乗算回路86は、N個の要素のそれぞれについて、対象時刻(t)における制約前の第2変数(y(t))に、{DΔt}を乗算する。
第4加算回路87は、N個の要素のそれぞれについて、Xメモリ66から直前時刻(t)における第1変数(x(t))を取得する。第4加算回路87は、N個の要素のそれぞれについて、直前時刻(t)における第1変数(x(t))と、第4乗算回路86の演算結果とを加算する。この演算により、第4加算回路87は、N個の要素のそれぞれについて、式(26)で表される対象時刻(t)における第1変数(x(t))を出力する。
Figure 0007472062000026
判定回路91は、N個の要素のそれぞれについて、第4加算回路87により算出された対象時刻(t)における第1変数(x(t))が、予め定められた第1値以上、予め定められた第2値以下であるか否かを判断する。例えば、第1値は、-1である。第2値は、+1である。判定回路91は、対象時刻(t)における第1変数(x(t))が第1値より小さいまたは第2値より大きい場合、X制約回路92およびY制約回路93にイネーブル信号(EN)を与える。
X制約回路92は、N個の要素のそれぞれについて、第4加算回路87により算出された対象時刻(t)における第1変数(x(t))を受け取る。X制約回路92は、N個の要素のそれぞれについて、判定回路91からイネーブル信号(EN)を受け取らなかった場合、第4加算回路87により算出された対象時刻(t)における第1変数(x(t))を、そのままXメモリ66に書き込む。
X制約回路92は、N個の要素のそれぞれについて、判定回路91からイネーブル信号(EN)を受け取った場合、第4加算回路87により算出された対象時刻(t)における第1変数(x(t))に対して制約処理を実行し、制約処理をした後の第1変数(x(t))をXメモリ66に書き込む。
X制約回路92は、制約処理として、対象時刻(t)における第1変数(x(t))が第1値(例えば-1)より小さい場合、対象時刻(t)における第1変数(x(t))を第1値(例えば-1)に変更する。X制約回路92は、制約処理として、対象時刻(t)における第1変数(x(t))が第2値(例えば+1)より大きい場合、対象時刻(t)における第1変数(x(t))を第2値(例えば+1)に変更する。
Y制約回路93は、N個の要素のそれぞれについて、制約前Yメモリ85から、対象時刻(t)における第2変数(y(t))を取得する。Y制約回路93は、N個の要素のそれぞれについて、判定回路91からイネーブル信号(EN)を受け取らなかった場合、制約前Yメモリ85から取得した対象時刻(t)における第2変数(y(t))を、そのまま出力する。
Y制約回路93は、N個の要素のそれぞれについて、判定回路91からイネーブル信号(EN)を受け取った場合、制約前Yメモリ85から取得した対象時刻(t)における第2変数(y(t))に対して制約処理を実行し、制約処理をした後の第2変数(y(t))を出力する。
ここで、Y制約回路93は、制約処理として、対象時刻(t)における第2変数(y(t))を、第3値(例えば0)に変更する。Y制約回路93は、制約処理として、例えば、第1値以上、第2値以下のランダムな値に変更してもよい。
加速値算出回路94は、N個の要素のそれぞれについて、Yメモリ67から直前時刻(t)における第2変数(y(t))を取得する。また、加速値算出回路94は、所定係数(r)を制御回路70から演算に先だって受け取る。例えば、所定係数(r)は、0より大きく1より小さい値である。そして、加速値算出回路94は、N個の要素のそれぞれについて、直前時刻(t)における第2変数(y(t))と、所定係数(r)と単位時間(Δt)との積(rΔt)とを乗算して加速値を算出する。
加速値加算回路95は、N個の要素のそれぞれについて、Y制約回路93から、対象時刻(t)における第2変数(y(t))を取得する。また、加速値加算回路95は、N個の要素のそれぞれについて、加速値算出回路94から加速値(rΔt×(y(t)))を取得する。加速値加算回路95は、N個の要素のそれぞれについて、対象時刻(t)における第2変数(y(t))に加速値(rΔt×(y(t)))を加算する。そして、加速値加算回路95は、加速値(rΔt×(y(t)))が加算された対象時刻(t)における第2変数(y(t))を、Yメモリ67に書き込む。
以上により、更新部14は、式(9)の改良アルゴリズムを実行して、終了時刻(T)におけるN個の第1変数(x(T))およびN個の第2変数(y(T))を算出することができる。
なお、上述した更新部14は、単位時間毎に、対象時刻(t)における第2変数(y(t))を算出した後に、対象時刻(t)における第1変数(x(t))を算出する。これに代えて、更新部14は、単位時間毎に、対象時刻(t)における第1変数(x(t))を算出した後に、対象時刻(t)における第2変数(y(t))を算出してもよい。
この場合、制約前Yメモリ85は、Y制約回路93による制約前の、直前時刻(t)におけるN個の第2変数(y(t))を記憶する。そして、第4加算回路87は、N個の要素のそれぞれについて、式(27)で表される対象時刻(t)における第1変数(x(t))を出力する。
Figure 0007472062000027
行列演算回路73は、Xメモリ66から、対象時刻(t)におけるN個の第1変数(x(t))を取得する。そして、第1加算回路75は、N個の要素のそれぞれについて、式(28)で表される対象時刻(t)における更新値(z(t))を出力する。
Figure 0007472062000028
また、第1乗算回路79は、N個の要素のそれぞれについて、対象時刻(t)における更新値(z(t))に-cを乗算する。P関数回路80は、N個の要素のそれぞれについて、{-D+p(t)}の演算を実行する。第2乗算回路81は、N個の要素のそれぞれについて、直前時刻(t)における第1変数(x(t))と、P関数回路80の演算結果とを乗算する。
そして、第3加算回路84は、N個の要素のそれぞれについて、式(29)で表される対象時刻(t)における第2変数(y(t))を出力する。
Figure 0007472062000029
このような処理によっても、更新部14は、改良アルゴリズムを実行して、終了時刻(T)におけるN個の第1変数(x(T))およびN個の第2変数(y(T))を算出することができる。
なお、更新回路69は、N個の要素のそれぞれに対して、第2変数(y(t))に基づき第1変数(x(t))を更新するX更新処理、第1変数(x(t))を第1値または第2値に変更するX制約処理、第2変数(y(t))を第3値に変更するY制約処理、および、第2変数(y(t))に対して加速値(rΔt×(y(t)))を加算する加速値加算処理を実行する。更新回路69は、これらの処理をM個の処理回路により並列に実行してもよい。この場合、N個の要素のそれぞれは、M個の処理回路の何れか1つに対応している。そして、M個の処理回路のそれぞれは、N個の要素のうちの対応する要素について、X更新処理、X制約処理、Y制約処理および加速値加算処理を実行する。このような処理を実行することにより、更新回路69は、これらの処理を複数の処理回路により分散して実行させて、高速に処理結果を得ることができる。
さらに、作用演算回路68は、N個の要素のそれぞれについて、更新値(z(t))を算出する。作用演算回路68は、更新値(z(t))の算出処理を、M個の処理回路により並列に実行させてもよい。この場合、N個の要素のそれぞれは、M個の処理回路の何れか1つに対応している。そして、M個の処理回路のそれぞれは、N個の要素のうちの対応する要素について、更新値(z(t))の算出処理を実行する。また、作用演算回路68を並列化する場合、行列演算回路73の並列度と、α関数回路74の並列度と、第1加算回路75の並列度とが異なっていてもよいし、行列演算回路73のみが並列化されていてもよい。このような処理を実行することにより、作用演算回路68は、更新値(z(t))の算出処理を複数の処理回路により分散して実行させて、高速に処理結果を得ることができる。特に、行列演算回路73が並列化されることにより、作用演算回路68は、行列演算に伴う膨大な量の乗算および加算処理を効率良く実行することができる。
(システム構成)
図10は、情報処理システム100の構成を示す図である。改良アルゴリズムは、例えば図10に示すような情報処理システム100により実行させることが可能である。これにより、情報処理システム100は、大規模な組合せ最適化問題を、並列処理により高速に解くことができる。
情報処理システム100は、管理サーバ101と、ネットワーク102と、複数の計算サーバ103(103a~103c)(情報処理装置)と、複数のケーブル104(104a~104c)と、スイッチ105を備える。また、端末装置106は、情報処理システム100と通信可能である。管理サーバ101、複数の計算サーバ103(103a~103c)、端末装置106は、ネットワーク102を介して互いにデータ通信をする。ネットワーク102は、例えば、複数のコンピュータネットワークが相互に接続されたインターネットである。ネットワーク102は、通信媒体として有線、無線、または、これらの組合せであってよい。
また、複数の計算サーバ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、スマートフォン、タブレットまたは車載端末装置である。
改良アルゴリズムを用いた組合せ最適化問題の求解処理は、並列的および分散的に実行可能である。従って、複数の計算サーバ103(103a~103c)のそれぞれおよび/または計算サーバ103(103a~103c)のプロセッサは、改良アルゴリズムを用いた組合せ最適化問題の求解処理における一部の計算処理の一部のステップを分担して実行してもよいし、異なる変数に対する同一の計算処理を並列的に実行してもよい。この場合、管理サーバ101は、例えば、ユーザによって入力された組合せ最適化問題を各計算サーバ103に処理可能な形式に変換し、各計算サーバ103に実行させる。そして、管理サーバ101は、各計算サーバ103から計算結果を取得し、集約した計算結果を組合せ最適化問題の解に変換する。
図10には、3台の計算サーバ103(103a~103c)が示されている。しかし、情報処理システム100に含まれる計算サーバ103の台数は、3台に限定されない。例えば、情報処理システム100は、1台であっても、2台であっても、4台以上であってもよい。また、情報処理システム100は、含んでいる複数の計算サーバ103のうちの一部を用いて、組合せ最適化問題の求解の処理を実行してもよい。計算サーバ103は、どのような種類の情報処理装置であってもよい。例えば、計算サーバ103は、データセンターに設置されたサーバであってもよいし、オフィスに設置されたデスクトップPCであってもよい。また、計算サーバ103は、異なるローケーションに設置された複数の種類のコンピュータであってもよい。例えば、計算サーバ103は、汎用的なコンピュータであってもよいし、専用の電子回路または、これらの組合せであってもよい。
図11は、管理サーバ101の構成を示す図である。管理サーバ101は、例えば、中央演算処理装置(CPU)とメモリとを含むコンピュータである。管理サーバ101は、プロセッサ110と、記憶部114と、通信回路115と、入力回路116と、出力回路117とを備える。プロセッサ110、記憶部114、通信回路115、入力回路116、出力回路117は、互いにバス120を介して接続される。プロセッサ110は、内部の機能構成として、管理部111と、変換部112と、制御部113を含む。
プロセッサ110は、演算を実行し、管理サーバ101の制御を行う電子回路である。プロセッサ110は、例えば、CPU、マイクロプロセッサ、ASIC、FPGA、PLDまたはこれらの組合せであってよい。管理部111は、ユーザの端末装置106を介して管理サーバ101の操作を行うためのインタフェースを提供する。管理部111が提供するインタフェースは、例えば、API、CLIまたはウェブページ等である。例えば、ユーザは、管理部111を介して組合せ最適化問題の情報の入力を行ったり、計算された組合せ最適化問題の解の閲覧および/またはダウンロードを行ったりする。変換部112は、組合せ最適化問題に関するパラメータを入力して、入力したパラメータを各計算サーバ103が処理可能な形式に変換する。制御部113は、各計算サーバ103に制御指令を送信する。制御部113が各計算サーバ103から計算結果を取得した後、変換部112は、複数の計算結果を集約し、組合せ最適化問題の解に変換し、組合せ最適化問題の解を出力する。
記憶部114は、管理サーバ101のプログラム、プログラムの実行に必要なデータ、プログラムによって生成されたデータを含む各種のデータを記憶する。プログラムは、OSとアプリケーションの両方を含む。記憶部114は、揮発性メモリ、不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリは、例えば、DRAMまたはSRAM等である。不揮発性メモリは、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAMまたはMRAM等である。また、記憶部114は、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置等であってもよい。
通信回路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(有機エレクトロルミネッセンス)ディスプレイまたはプロジェクタ等であるが、これらに限られない。
管理者は、操作装置118および表示装置119を使って、管理サーバ101のメンテナンスを行うことができる。なお、操作装置118および表示装置119は、管理サーバ101に組み込まれたものであってもよい。また、操作装置118および表示装置119は、管理サーバ101に接続されていなくてもよい。例えば、管理者は、ネットワーク102と通信可能な端末装置を用いて管理サーバ101のメンテナンスを行ってもよい。
図12は、管理サーバ101の記憶部114に記憶されるデータを示す図である。記憶部114は、例えば、問題データ114Aと、計算データ114Bと、管理プログラム114Cと、変換プログラム114Dと、制御プログラム114Eとを記憶する。例えば、問題データ114Aは、組合せ最適化問題のデータを含む。例えば、計算データ114Bは、各計算サーバ103から収集された計算結果を含む。例えば、管理プログラム114Cは、管理部111の機能を実現するプログラムである。例えば、変換プログラム114Dは、変換部112の機能を実現するプログラムである。例えば、制御プログラム114Eは、制御部113の機能を実現するプログラムである。
図13は、計算サーバ103aの構成を示す図である。他の計算サーバ103は、計算サーバ103aと同様の構成であってもよいし、計算サーバ103aと異なる構成であってもよい。
計算サーバ103aは、例えば、通信回路131と、共有メモリ132と、プロセッサ133a~133dと、ストレージ134と、ホストバスアダプタ135とを備える。通信回路131、共有メモリ132、プロセッサ133a~133d、ストレージ134、ホストバスアダプタ135は、バス136を介して互いに接続される。
通信回路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のうちのいずれかからのみからアクセスできるローカルメモリであってもよい。
プロセッサ133a~133dは、計算処理を実行する電子回路である。プロセッサ133a~133dは、例えば、CPU、GPU、FPGA、ASICのいずれであってもよいし、これらの組合せであってもよい。また、プロセッサ133a~133dは、CPUコアまたはCPUスレッドであってもよい。プロセッサ133a~133dがCPUである場合、計算サーバ103aが備えるソケット数については、特に問わない。また、プロセッサ133a~133dは、PCI expressなどのバスを介して計算サーバ103aのその他の構成要素に接続されていてもよい。
図13の例では、計算サーバ103aは、4つのプロセッサ133a~133dを備える。しかし、1台の計算サーバ103aに含まれるプロセッサ数は、4個に限られない。
ストレージ134は、計算サーバ103aのプログラム、プログラムの実行に必要なデータ、プログラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラムは、OSとアプリケーションの両方を含むものとする。ストレージ134は、揮発性メモリおよび不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリは、たとえば、DRAMまたはSRAMである。不揮発性メモリは、例えば、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAMまたはMRAM等である。また、ストレージ134は、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置を含んでもよい。
ホストバスアダプタ135は、他の計算サーバ103との間のデータ通信を実現する。ホストバスアダプタ135は、ケーブル104aを介してスイッチ105に接続されている。ホストバスアダプタ135は、例えば、HCA(Host Channel Adaptor)である。ホストバスアダプタ135、ケーブル104a、スイッチ105で高スループットを実現可能なインターコネクトを形成することにより、並列的な計算処理の速度を向上させることができる。
図14は、ストレージ134に記憶されるデータを示す図である。ストレージ134は、例えば、計算データ134Aと、計算プログラム134Bと、制御プログラム134Cとを記憶する。計算データ134Aは、計算サーバ103aの計算途中のデータまたは計算結果を含む。計算データ134Aの少なくとも一部は、共有メモリ132、プロセッサのキャッシュまたはプロセッサのレジスタ等の、異なる記憶階層に記憶されてもよい。計算プログラム134Bは、各プロセッサ133における計算処理および、共有メモリ132およびストレージ134へのデータの保存処理を実現するプログラムである。制御プログラム134Cは、管理サーバ101の制御部113から送信された指令に基づき、計算サーバ103aを制御し、計算サーバ103aの計算結果を管理サーバ101に送信するプログラムである。
このような計算サーバ103aは、プロセッサ133a~133dが組合せ最適化問題を解くためのプログラムを実行する。このプログラムは、計算サーバ103aを、入力部12、更新部14および出力部16として機能させる。
このような構成の情報処理システム100は、PCクラスタとして利用することが可能である。PCクラスタは、複数台のコンピュータを接続し、1台のコンピュータでは得られない計算性能を実現するシステムである。情報処理システム100は、例えばMPI(Message Passing Interface)を使うことにより、複数の計算サーバ103にメモリが分散して配置されている構成であっても、並列的な計算を実行することが可能である。
なお、情報処理システム100は、高速リンクで接続された複数のGPUであってもよい。この場合、複数のGPUのそれぞれは、計算サーバ103と同様の処理を実行する。
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組合せてもよい。
(技術案)
なお、上記の実施形態を、以下の技術案にまとめることができる。
技術案1
組合せ最適化問題を解く計算装置であって、
第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力部と、
を備え、
前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第1変数を前記第2変数に基づき更新し、
前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
前記第2変数に、予め定められた演算により算出された加速値を加算する
計算装置。
技術案2
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第1変数を更新する前において、前記第2変数を更新し、
前記第1変数を更新した後において、前記第2変数に前記加速値を加算する
技術案1に記載の計算装置。
技術案3
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第1変数を更新した後において、前記第2変数を更新し、
前記第1変数を更新した後、且つ、前記第2変数を更新する前において、前記第2変数に前記加速値を加算する
技術案1に記載の計算装置。
技術案4
前記出力部は、
前記終了時刻における前記複数の要素のそれぞれについて、前記第1変数を予め設定されたしきい値により2値化した離散変数の値を算出し、
算出した前記複数の離散変数の値を前記組合せ最適化問題の解として出力する
技術案1から3の何れか1項に記載の計算装置。
技術案5
前記加速値は、直前時刻における対応する前記第2変数に、所定係数と前記単位時間との積を乗じた値である
技術案1から4の何れか1項に記載の計算装置。
技術案6
前記所定係数は、予め定められた定数である
技術案5に記載の計算装置。
技術案7
前記所定係数は、乱数に基づき定まる値である
技術案5に記載の計算装置。
技術案8
前記第1値は、-1、
前記第2値は、+1、および、
前記第3値は、0である
技術案1から7の何れか1項に記載の計算装置。
技術案9
前記複数の要素のそれぞれは、複数の処理回路の何れか1つに対応しており、
前記複数の処理回路のそれぞれは、前記複数の要素のうちの対応する要素について、前記第1変数を前記第2変数に基づき更新する処理、前記第1変数を前記第1値または前記第2値に変更する処理および前記第2変数を前記第3値に変更する処理、および、前記第2変数に前記加速値を加算する処理を実行する
技術案1から8何れか1項に記載の計算装置。
技術案10
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、対象時刻における前記第1変数を、前記対象時刻より単位時間前の直前時刻における前記第1変数に、前記第2変数と予め定められた定数と前記単位時間とを乗算した値を加算することにより、算出する
技術案1から9の何れか1項に記載の計算装置。
技術案11
前記単位時間毎の更新処理において、前記更新部は、
前記複数の要素のそれぞれについて、
前記複数の要素のそれぞれの前記第1変数と、対象要素と前記複数の要素のそれぞれとの組毎に予め定められる作用係数とに基づき、外力を算出し、
前記直前時刻における前記第2変数に、前記外力と前記第1変数とにより定まる値に前記単位時間とを乗算した値を加算することにより、前記対象時刻における前記第2変数を算出する
技術案10に記載の計算装置。
技術案12
前記組合せ最適化問題は、N個の離散変数を含み、
前記更新部は、前記N個の離散変数のうちのi番目の離散変数に対応するi番目の要素の、前記対象時刻における前記第1変数を式(101)または(102)により算出し、
Figure 0007472062000030
Nは、2以上の整数であり、
iは、1からNまでの任意の整数であり、
Dは、前記定数であり、
Δtは、前記単位時間であり、
tは、前記直前時刻であり、
t+Δtは、前記対象時刻であり、
(t)は、前記i番目の要素の前記直前時刻における前記第1変数であり、
(t)は、前記i番目の要素の前記直前時刻における前記第2変数であり、
(t+Δt)は、前記i番目の要素の前記対象時刻における前記第1変数であり、
(t+Δt)は、前記i番目の要素の前記対象時刻における前記第2変数である
技術案11に記載の計算装置。
技術案13
前記組合せ最適化問題は、QUBO(Quadratic Unconstrained Binary Optimization)問題であり、
前記更新部は、前記i番目の要素の前記対象時刻における前記第2変数を式(103)または式(104)により算出し、
Figure 0007472062000031
(t+Δt)は、式(105)により表され、f(t)は、式(106)により表され、
Figure 0007472062000032
(t+Δt)は、式(107)により表され、
(t)は、式(108)により表され、
Figure 0007472062000033
jは、1からNまでの任意の整数であり、
は、N個の局所磁場係数を含む予め定められた配列に含まれる、i番目の局所磁場係数であり、
i,jは、N×N個の結合係数を含む予め定められた行列に含まれる、i行、j列の結合係数であり、
cは、係数であり、
(t)は、前記N個の離散変数のうちのj番目の離散変数に対応するj番目の要素の前記直前時刻における前記第1変数であり、
(t+Δt)は、前記j番目の要素の前記対象時刻における前記第1変数であり、
p(t)は、tを変数とする予め定められた関数であり、tが増大するに従って増加し、tが前記初期時刻において0となり、tが前記終了時刻において1となり、
α(t)は、tを変数とする予め定められた関数である
技術案12に記載の計算装置。
技術案14
情報処理装置により、組合せ最適化問題を解くための計算方法であって、
前記情報処理装置により、第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新ステップと、
前記情報処理装置により、前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力ステップと、
を実行し、
前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記更新ステップにおける前記単位時間毎の更新処理において、前記情報処理装置は、前記複数の要素のそれぞれについて、
前記第1変数を前記第2変数に基づき更新し、
前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
前記第2変数に、予め定められた演算により算出された加速値を加算する
計算方法。
技術案15
情報処理装置を、組合せ最適化問題を解く計算装置として機能させるためのプログラムであって、
前記情報処理装置を、
第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力部と、
して機能させ、
前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
前記第1変数および前記第2変数のそれぞれは、実数により表され、
前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
前記第1変数を前記第2変数に基づき更新し、
前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
前記第2変数に、予め定められた演算により算出された加速値を加算する
プログラム。
10 計算装置
12 入力部
14 更新部
16 出力部
100 情報処理システム
101 管理サーバ
102 ネットワーク
103,103a,103b,103c 計算サーバ
104,104a,104b,104c ケーブル
105 スイッチ
106 端末装置
110 プロセッサ
111 管理部
112 変換部
113 制御部
114 記憶部
115 通信回路
116 入力回路
117 出力回路
120 バス
131 通信回路
132 共有メモリ
133a,133b,133c,133d プロセッサ
134 ストレージ
135 ホストバスアダプタ

Claims (9)

  1. 組合せ最適化問題を解く計算装置であって、
    第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
    前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力部と、
    を備え、
    前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
    前記第1変数および前記第2変数のそれぞれは、実数により表され、
    前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
    前記第1変数を前記第2変数に基づき更新し、
    前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
    前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
    前記第2変数に、予め定められた演算により算出された加速値を加算し、
    前記加速値は、直前時刻における対応する前記第2変数に、所定係数と前記単位時間との積を乗じた値である
    計算装置。
  2. 前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
    前記第1変数を更新する前において、前記第2変数を更新し、
    前記第1変数を更新した後において、前記第2変数に前記加速値を加算する
    請求項1に記載の計算装置。
  3. 前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
    前記第1変数を更新した後において、前記第2変数を更新し、
    前記第1変数を更新した後、且つ、前記第2変数を更新する前において、前記第2変数に前記加速値を加算する
    請求項1に記載の計算装置。
  4. 前記出力部は、
    前記終了時刻における前記複数の要素のそれぞれについて、前記第1変数を予め設定されたしきい値により2値化した離散変数の値を算出し、
    算出した前記複数の離散変数の値を前記組合せ最適化問題の解として出力する
    請求項1から3の何れか1項に記載の計算装置。
  5. 前記複数の要素のそれぞれは、複数の処理回路の何れか1つに対応しており、
    前記複数の処理回路のそれぞれは、前記複数の要素のうちの対応する要素について、前記第1変数を前記第2変数に基づき更新する処理、前記第1変数を前記第1値または前記第2値に変更する処理および前記第2変数を前記第3値に変更する処理、および、前記第2変数に前記加速値を加算する処理を実行する
    請求項1から4の何れか1項に記載の計算装置。
  6. 前記単位時間毎の更新処理において、前記更新部は、
    前記複数の要素のそれぞれについて、対象時刻における前記第1変数を、前記対象時刻より単位時間前の直前時刻における前記第1変数に、前記第2変数と予め定められた定数と前記単位時間とを乗算した値を加算することにより、算出する
    請求項1からの何れか1項に記載の計算装置。
  7. 前記単位時間毎の更新処理において、前記更新部は、
    前記複数の要素のそれぞれについて、
    前記複数の要素のそれぞれの前記第1変数と、対象要素と前記複数の要素のそれぞれとの組毎に予め定められる作用係数とに基づき、外力を算出し、
    前記直前時刻における前記第2変数に、前記外力と前記第1変数とにより定まる値に前記単位時間とを乗算した値を加算することにより、前記対象時刻における前記第2変数を算出する
    請求項に記載の計算装置。
  8. 情報処理装置により、組合せ最適化問題を解くための計算方法であって、
    前記情報処理装置により、第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新ステップと、
    前記情報処理装置により、前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力ステップと、
    を実行し、
    前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
    前記第1変数および前記第2変数のそれぞれは、実数により表され、
    前記更新ステップにおける前記単位時間毎の更新処理において、前記情報処理装置は、前記複数の要素のそれぞれについて、
    前記第1変数を前記第2変数に基づき更新し、
    前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
    前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
    前記第2変数に、予め定められた演算により算出された加速値を加算し、
    前記加速値は、直前時刻における対応する前記第2変数に、所定係数と前記単位時間との積を乗じた値である
    計算方法。
  9. 情報処理装置を、組合せ最適化問題を解く計算装置として機能させるためのプログラムであって、
    前記情報処理装置を、
    第1変数および第2変数が対応付けられた複数の要素のそれぞれについて、初期時刻から終了時刻まで単位時間毎に順次に、前記第1変数および前記第2変数を交互に更新する更新部と、
    前記終了時刻における前記複数の要素のそれぞれの前記第1変数に基づき前記組合せ最適化問題の解を出力する出力部と、
    して機能させ、
    前記複数の要素は、前記組合せ最適化問題の複数の離散変数に対応し、
    前記第1変数および前記第2変数のそれぞれは、実数により表され、
    前記単位時間毎の更新処理において、前記更新部は、前記複数の要素のそれぞれについて、
    前記第1変数を前記第2変数に基づき更新し、
    前記第1変数が予め定められた第1値より小さい場合、前記第1変数を、前記第1値に変更し、前記第2変数を予め定められた第3値に変更し、
    前記第1変数が、前記第1値より大きい予め定められた第2値より大きい場合、前記第1変数を前記第2値に変更し、前記第2変数を前記第3値に変更し、
    前記第2変数に、予め定められた演算により算出された加速値を加算し、
    前記加速値は、直前時刻における対応する前記第2変数に、所定係数と前記単位時間との積を乗じた値である
    プログラム。
JP2021036688A 2021-03-08 2021-03-08 計算装置、計算方法およびプログラム Active JP7472062B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021036688A JP7472062B2 (ja) 2021-03-08 2021-03-08 計算装置、計算方法およびプログラム
CN202111002962.7A CN115034125A (zh) 2021-03-08 2021-08-30 计算装置、计算方法以及程序
US17/461,452 US11741187B2 (en) 2021-03-08 2021-08-30 Calculation device, calculation method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021036688A JP7472062B2 (ja) 2021-03-08 2021-03-08 計算装置、計算方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2022136875A JP2022136875A (ja) 2022-09-21
JP7472062B2 true JP7472062B2 (ja) 2024-04-22

Family

ID=83117086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021036688A Active JP7472062B2 (ja) 2021-03-08 2021-03-08 計算装置、計算方法およびプログラム

Country Status (3)

Country Link
US (1) US11741187B2 (ja)
JP (1) JP7472062B2 (ja)
CN (1) CN115034125A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019145010A (ja) 2018-02-23 2019-08-29 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP2020035179A (ja) 2018-08-30 2020-03-05 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
WO2020196883A1 (ja) 2019-03-28 2020-10-01 株式会社 東芝 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10250271B2 (en) 2015-10-07 2019-04-02 Kabushiki Kaisha Toshiba Quantum computation apparatus and quantum computation method
JP6530326B2 (ja) 2015-10-07 2019-06-12 株式会社東芝 量子計算装置、及び、方法
JP6901448B2 (ja) 2018-09-14 2021-07-14 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP7421291B2 (ja) 2019-09-10 2024-01-24 株式会社東芝 情報処理装置、プログラム、情報処理方法、および電子回路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019145010A (ja) 2018-02-23 2019-08-29 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP2020035179A (ja) 2018-08-30 2020-03-05 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
WO2020196883A1 (ja) 2019-03-28 2020-10-01 株式会社 東芝 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム

Also Published As

Publication number Publication date
JP2022136875A (ja) 2022-09-21
US11741187B2 (en) 2023-08-29
US20220283780A1 (en) 2022-09-08
CN115034125A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
Okuyama et al. An Ising computer based on simulated quantum annealing by path integral Monte Carlo method
US10755193B2 (en) Implementation of error mitigation for quantum computing machines
WO2020196862A1 (ja) 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム
JP7421291B2 (ja) 情報処理装置、プログラム、情報処理方法、および電子回路
WO2019216277A1 (ja) 情報処理装置、演算装置、及び情報処理方法
US11205030B2 (en) Avoiding data exchange in gate operation for quantum computing gates on a chip
KR20210134724A (ko) 시뮬레이션된 양자 알고리즘에 기초한 데이터 검색 방법 및 장치 및 디바이스
US20220012307A1 (en) Information processing device, information processing system, information processing method, and storage medium
JP7472062B2 (ja) 計算装置、計算方法およびプログラム
JP7341965B2 (ja) 計算装置、計算方法およびプログラム
US20220012306A1 (en) Information processing device, information processing system, information processing method, and storage medium
Leleu et al. Scaling advantage of nonrelaxational dynamics for high-performance combinatorial optimization
US10671550B1 (en) Memory offloading a problem using accelerators
WO2022249785A1 (ja) 求解装置、求解方法およびプログラム
JP7421545B2 (ja) 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム
JP7474242B2 (ja) 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム
JP7361175B2 (ja) 計算装置、計算プログラム、記録媒体及び計算方法
CN117313877A (zh) 量子电路处理方法、装置及电子设备
Mandelbaum et al. You need 100 qubits to accelerate discovery with quantum

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240410

R150 Certificate of patent or registration of utility model

Ref document number: 7472062

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150