(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】最適化装置、最適化方法及び最適化プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240730BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2020077844
(22)【出願日】2020-04-24
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】松浦 聡
(72)【発明者】
【氏名】三品 健
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2020-057306(JP,A)
【文献】特開2020-035179(JP,A)
【文献】特開2016-051314(JP,A)
【文献】特開2020-061012(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
温度を示す温度値を制御する温度制御部と、
いずれか1つ又は複数が多値を取る複数の状態変数を含むエネルギーを表す評価関数における、前記多値を取る状態変数の場合には値が1増減するようにいずれか1つの前記状態変数の状態を変化させた場合の、前記評価関数が表すエネルギーの変化量を算出し、前記温度値及び乱数値を基に算出した閾値と
前記変化量との相関関係によって前記状態変数の状態変化を候補とするか否かを決定する焼鈍部と、
前記焼鈍部により前記候補とされた前記状態変化を採択するか否かを確率的に決定する決定部と、
前記決定部により採択が決定された前記状態変化にしたがい前記状態変数の状態遷移を実行した後の遷移後エネルギーを算出するエネルギー計算部と、
前記エネルギー計算部により算出された前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める探索部と
を備えたことを特徴とする最適化装置。
【請求項2】
前記焼鈍部は、状態を変化させた場合の前記多値を取る状態変数の状態が予め決められた上限値及び下限値の範囲内に収まらない場合、前記状態変数の状態変化を前記候補としないことを特徴とする請求項1に記載の最適化装置。
【請求項3】
前記焼鈍部は、前記多値を取る状態変数の場合には、値を1加算させる加算状態変化及び値を1減算する減算状態変化を行い、前記加算状態変化及び前記減算状態変化のいずれの状態も前記上限値及び前記下限値の範囲内に収まる場合、前記加算状態変化又は前記減算状態変化のいずれかを選択して前記候補とすることを特徴とする請求項2に記載の最適化装置。
【請求項4】
前記焼鈍部は、前記加算状態変化及び前記減算状態変化に選択のための優先度をつけて、前記加算状態変化又は前記減算状態変化の選択を行うことを特徴とする請求項3に記載の最適化装置。
【請求項5】
前記焼鈍部は、前記多値を取る状態変数の初期値を、前記上限値又は前記下限値にすることを特徴とする請求項2~4のいずれか一つに記載の最適化装置。
【請求項6】
温度を示す温度値を制御し、
いずれか1つ又は複数が多値を取る複数の状態変数を含むエネルギーを表す評価関数における、前記多値を取る状態変数の場合には値が1増減するようにいずれか1つの前記状態変数の状態を変化させた場合の、前記評価関数が表すエネルギーの変化量を算出し、
前記温度値及び乱数値を基に算出した閾値と
前記変化量との相関関係によって前記状態変数の状態変化を候補とするか否かを決定し、
前記候補とされた前記状態変化を採択するか否かを確率的に決定し、
採択が決定した前記状態変化にしたがい前記状態変数の状態遷移を実行した後の遷移後エネルギーを算出し、
算出した前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める
ことを特徴とする最適化方法。
【請求項7】
温度を示す温度値を制御し、
いずれか1つ又は複数が多値を取る複数の状態変数を含むエネルギーを表す評価関数における、前記多値を取る状態変数の場合には値が1増減するようにいずれか1つの前記状態変数の状態を変化させた場合の、前記評価関数が表すエネルギーの変化量を算出し、
前記温度値及び乱数値を基に算出した閾値と
前記変化量との相関関係によって前記状態変数の状態変化を候補とするか否かを決定し、
前記候補とされた前記状態変化を採択するか否かを確率的に決定し、
採択が決定した前記状態変化にしたがい前記状態変数の状態遷移を実行した後の遷移後エネルギーを算出し、
算出した前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める
処理をコンピュータに実行させることを特徴とする最適化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置、最適化方法及び最適化プログラムに関する。
【背景技術】
【0002】
我々の社会には、災害復旧の手順や配送ルートの最適化など、限られた人や時間などの制約の下で、多くの要素の組合せの中から最適なものを選択する「組合せ最適化問題」が数多く存在する。これら、組合せ最適化問題の最適解を探索する方法の一つとして、モンテカルロ法の一種で、乱数値を用いて確率的に解を求める方法である疑似焼き鈍し法を応用したイジング演算装置がある。
【0003】
イジング演算装置は、所定の評価式で表現されるイジングモデルのエネルギーを最小とする変数の組み合わせを探索する演算装置である。この変数をスピンと呼び、変数の値をスピン状態と呼び、スピン状態が遷移することを反転と呼ぶ場合がある。
【0004】
イジング演算装置1は、評価関数である数式(1)~(4)で表されるイジングモデルのエネルギーを最小とする変数xiの組み合わせ(x0,x1,・・・,xn)を探索する最適化装置である。ここで、数式(1)の変数xiは、状態変数であり0又は1の値をとる。Wijは相互作用係数、biは磁場項と呼ばれる値である。
【0005】
【0006】
【0007】
【0008】
【0009】
ここで、Eはエネルギーであり、ΔEiはxiが反転した場合のエネルギー変化量である。また、hiはxiにおける局所場であり、δhiはxiにおける局所場の変化量である。また、以下では、エネルギー変化量をΔEと表す場合がある。
【0010】
実問題を、数式(1)で表されるイジングモデルのエネルギー式に定式化し、このエネルギーを最小とするスピン状態の組合せをイジング演算装置で探索することにより、様々な種類の組合せ最適化問題を解くことが可能である。
【0011】
イジング演算装置は、1スピンずつ反転判定式に基づき反転の有無を決定し、逐次的に状態を遷移させて最小エネルギーの探索を行う。そして、実問題をイジングモデルのエネルギー式に定式化し、このエネルギーを最小とするスピン状態の組合せをイジング演算装置で探索することにより、様々な種類の組合せ最適化問題を解くことが可能である。
【0012】
ここで、簡単に擬似焼き鈍し法での最小エネルギー探索方法を説明する。イジング演算装置は、解決する問題を表現する評価関数が有する各変数に、0又は1を代入した初期状態から探索を始める。そして、イジング演算装置は、変数の組み合わせの現在の状態から、それに近い状態を選択してその状態遷移を考える。現在の状態に近い状態とは、例えば、1つの変数の状態を変化させた状態である。次に、イジング演算装置は、その状態に対するエネルギー変化量を計算し、その値に応じて、その状態遷移を採択するか、採択せずに元の状態を保つかを確率的に選択する。エネルギーが下がる場合の採択確率をエネルギーが上がる場合の採択確率よりも高くすると、平均的にはエネルギーが下がる方向に状態変化がおこり、イジング演算装置は、最終的に最適解又は最適解に近いエネルギーに到達することが可能である。もし、これを決定論的にエネルギーが下がる場合に採択し、上がる場合に不採択とすると、エネルギーの変化は時間に対して広義の単調減少となるが、局所解に到達した場合にはそれ以上の状態遷移が起こらなくなり、最適解への到達を期待することが困難である。したがって、組み合わせ最適化問題の探索では、状態遷移を採択するかどうかを確率的に決定することが重要である。
【0013】
さらに、イジング演算装置が問題を解く際に変数の範囲制約が存在する場合がある。このような問題として、例えば、「容量」と「価値」とが決められた複数の荷物から、ナップザックの最大容量を超えない範囲で入れる対象を選択し、入れた荷物の価値が最大となる組み合わせを求めるナップザック問題がある。このような変数の範囲制約が与えられた問題を解く場合、従来のイジング演算装置では、範囲制約を表す補助スピンを評価式に導入することが行われている。
【0014】
例えば、ナップザック問題をイジング演算装置で解くためには、最小化すべき対象を数式(1)で表すことが求められる。そこで、各荷物をナップザックに入れるかどうかを変数xiで表し、xi=0であれば荷物を入れないとし、xi=1であれば荷物を入れるとする。さらに、各荷物の容量をwi、荷物の価値をpiで表し、最小化すべき対象をナップザックに入れた品物の総価値にマイナス符号を付加した値とし、次の数式(5)の第一項のように表す。
【0015】
【0016】
さらに、ナップザックの最大容量を超えないという条件が制約項として付加される。ナップザックの最大容量を超えないという条件は、入れた荷物の総容量が、0以上で最大容量以下の範囲のある値に等しいということであるため、それ以外の値になる場合には、制約項の値kがペナルティとして加算されるよう、数式(5)に示したように第二項を追加する。ここで、y0~ymは補助スピンで、値が1の状態である補助スピンの総数が範囲制約を表す。
【0017】
なお、焼き鈍し法を行う際に、エネルギーが極小ではない場合のオフセット値よりエネルギーが極小となる局所解のオフセット値が大きくなるように、エネルギー変化値にオフセットを加えたうえで、遷移状態の確率的な選択を実行する従来技術がある。
【先行技術文献】
【特許文献】
【0018】
【発明の概要】
【発明が解決しようとする課題】
【0019】
しかしながら、補助スピンを導入して変数の範囲制約が与えられた問題を解く方法では、取り得る値の数に応じて補助スピンを用意することになる。そのため、範囲制約条件が1つであっても、多くのスピンを使用することになる。例えば、補助スピンを用いて6つの品物を最大容量が190のナップザックに入れるナップザック問題を従来の方法で定式化した場合、範囲制約条件のために190ものスピンを導入することになる。
【0020】
またこの場合、190ビットの補助スピンで0~190の範囲全てを表すのではなく、ナップザックの最大容量から補助スピンの値を減じたものが範囲制約を表すことにして、例えば補助スピンを10ビットに絞り、180~190を許容することにする方法もある。しかし、この方法でも、多くの補助スピンを使用することに変わりがない。また、問題を解く前に範囲を予測して絞り込みを行うことになるが、この予測を誤った場合、解に到達しなくなるというおそれもある。
【0021】
以上のことから、イジング演算装置が使用可能な限られたスピンの中から、補助スピン用に多くのスピンを割り当てることで、取り扱える問題の規模が制限されてしまう。また、最小エネルギー探索の際に、通常のスピンに比べて補助スピンが占める割合が多く、反転候補になった際に選択され易い傾向がある。このため、スピン状態の選択に偏りが生じて探索効率が悪くなり、最小エネルギーへの到達時間が長くなるおそれがある。このように、範囲制約が存在する場合に組合せ最適化問題に対する処理性能を向上させることが困難となる。
【0022】
また、エネルギー変化値にオフセットを加えたうえで遷移状態の確率的な選択を実行する従来技術であっても、範囲制約が存在する問題の場合には、補助スピンを導入することは同じであり、組合せ最適化問題に対する処理性能を向上させることは困難である。
【0023】
開示の技術は、上記に鑑みてなされたものであって、組合せ最適化問題に対する処理性能を向上させる最適化装置、最適化方法及び最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0024】
本願の開示する最適化装置、最適化方法及び最適化プログラムの一つの態様において、温度制御部は、温度を示す温度値を制御する。焼鈍部は、いずれか1つ又は複数が多値を取る複数の状態変数を含むエネルギーを表す評価関数における、前記多値を取る状態変数の場合には値が1増減するようにいずれか1つの前記状態変数の状態を変化させた場合の、前記評価関数が表すエネルギーの変化量を算出し、前記温度値及び乱数値を基に算出した閾値と前記変化量との相関関係によって前記状態変数の状態変化を候補とするか否かを決定する。決定部は、前記焼鈍部により前記候補とされた前記状態変化を採択するか否かを確率的に決定する。エネルギー計算部は、前記決定部により採択が決定された前記状態変化にしたがい前記状態変数の状態遷移を実行した後の遷移後エネルギーを算出する。探索部は、前記エネルギー計算部により算出された前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める。
【発明の効果】
【0025】
1つの側面では、本発明は、組合せ最適化問題に対する処理性能を向上させることができる。
【図面の簡単な説明】
【0026】
【
図1】
図1は、イジング演算装置のブロック図である。
【
図2】
図2は、実施例1に係る補助スピンに関する計算例を表す図である。
【
図3】
図3は、焼鈍部の詳細を表すブロック図である。
【
図4】
図4は、初期設定指示のためのファイルの一例を表す図である。
【
図5】
図5は、実施例1に係るイジング演算装置による最適解の探索処理のフローチャートである。
【
図6】
図6は、イジング演算装置の配置構成図である。
【
図7】
図7は、単位回路の回路イメージの図である。
【
図8】
図8は、イジング演算装置を利用時の処理のフローチャートである。
【
図9】
図9は、実施例1の変形例に係る補助スピンに関する計算例を表す図である。
【発明を実施するための形態】
【0027】
以下に、本願の開示する最適化装置、最適化方法及び最適化プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する最適化装置、最適化方法及び最適化プログラムが限定されるものではない。
【実施例1】
【0028】
図1は、イジング演算装置のブロック図である。イジング演算装置1は、複数の焼鈍部10、温度制御部20、閾値生成部30、乱数生成部40、反転スピン選択部50、エネルギー計算部60及び探索結果保持部70を有する。焼鈍部10は、例えば、1台のイジング演算装置1に1024個搭載される。以下の説明における「反転」には、従来の0から1又は1から0のスピン状態の変化に加え、補助スピンが値を変更することも含む。
【0029】
本実施例に係るイジング演算装置1は、評価関数である数式(1)で表されるイジングモデルのエネルギーを最小とする変数xiの組み合わせ(x0,x1,・・・,xn)を探索する最適化装置である。
【0030】
【0031】
ここで、数式(6)のEは、エネルギーを表す。そして、数式(6)の変数xiは、状態変数であり0又は1の値をとる。また、変数y0は、範囲制約の条件であり、予め設定された範囲における任意の値をとることが可能である。ただし、変数y0は、1つずつ増えるか減るかする。さらに、数式(6)におけるkは、制約項の係数である。
【0032】
以下の説明では、変数xiを「スピン」と呼び、変数xiの値を「スピン状態」と呼ぶ。スピン状態は、0又は1と表される。また、変数y0を「補助スピン」と呼ぶ。すなわち、この場合の補助スピンは1つである。そして、変数y0は、所定範囲の任意の値をとるため、変数y0については、変数y0に与えられた値をスピン状態と呼ぶ。
【0033】
また以下では、スピン状態が遷移すること及び補助スピンの値を変更することを「反転」と呼ぶ。すなわち、反転は、スピン状態が0から1へ遷移すること、又は、1から0へ遷移すること、もしくは、y0の値がMからM+1に変化すること、又は、MからM-1に変化することにあたる。
【0034】
数式(6)は、
図2の式変形11に示すように変形可能である。
図2は、実施例1に係る補助スピンに関する計算例を表す図である。式変形11の変形後の式からy
0の値をMからM+1へ増加させた場合の差分及びy
0の値をMからM-1へ減少させた場合の差分は、式12により表される。すなわち、この場合の補助スピンの値を増減した場合のエネルギー変化量は次の数式(7)で表される。
【0035】
【0036】
さらに、補助スピンにおける局所場は、次の数式(8)で表される。
【0037】
【0038】
また、スピン反転が生じた場合の補助スピンにおける局所場の変化量は、次の数式(9)で表される。
【0039】
【0040】
数式(9)は、上から補助スピンが1増えた場合の局所場の変化量、補助スピンが1減った場合の局所場の変化量、スピン状態が0から1へ変化した場合の局所場の変化量、スピン状態が1から0へ変化した場合の局所場の変化量である。
【0041】
ここで、補助スピンに対する相互作用係数Wijの値を次の数式(10)と表した場合で説明する。
【0042】
【0043】
この場合、通常のスピン及び補助スピンともに、スピン状態が変化した場合のエネルギーの変化量は、次の数式(11)で表される。数式(11)における制約項の係数であるkは、通常のスピンの場合は「0」と設定される。
【0044】
【0045】
さらに、その場合の局所場の値の変化量は次の数式(12)で表される。
【0046】
【0047】
ここで、本実施例に係る評価関数では、補助ビットの変化量は1ずつしか変わらない。そのため、補助ビットは多値を取れるように設定されるが、各演算における補助ビットの値の算出は1の加算又は減算であり、補助ビットの計算は大きくならない。そして補助ビットの値に関しては、変化させたときにエネルギー的に得か否かを判定して、補助ビットの値が選択されることで、補助ビットが取り得る値の範囲を網羅することができる。
【0048】
本実施例では、補助スピンy0で表される範囲制約の下限値を制約項の初期値として用いる場合で説明する。
【0049】
温度制御部20は、温度パラメータの値を制御する回路である。温度パラメータは、温度を制御する温度値である。以下では、温度パラメータをTと表す場合がある。
【0050】
温度制御部20は、例えば、擬似焼き鈍し法にしたがい、十分高い初期温度から開始して探索の反復回数に応じて徐々に温度パラメータの値を低くすることで温度を減少させていく。初期状態から始めて、温度制御部20で温度を下げながら反復を繰り替えし、一定の反復回数の達成や、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。他にも、温度制御部20は、温度条件の異なるいくつかのレプリカと呼ばれる系を並列に実行し、所定の反復回数毎に系を交換することで、低温条件と高温条件とをわたりながら、最小エネルギー探索を行うレプリカ交換法を用いることも可能である。
【0051】
乱数生成部40は、乱数値を発生する回路である。乱数生成部40は、発生させた乱数を閾値生成部30及び反転スピン選択部50へ出力する。
【0052】
閾値生成部30は、各スピンが反転候補となるか否かを判定するための閾値を生成する回路である。閾値生成部30は、温度制御部20から温度パラメータを取得する。また、閾値生成部30は、乱数値を乱数生成部40から取得する。
【0053】
ここで、本実施例では、次の数式(13)にしたがって、変数の反転が採択される。すなわち、e-ΔE/T又は1のうちの小さい方を採択確率として変数の反転の採択が行われる。
【0054】
【0055】
本実施例では、乱数生成部40が発生させた乱数により、確率的に数式(13)にしたがった反転スピンの採択が行われる。この場合、採択確率が数式(13)にしたがうという条件は、一様乱数rを用いて次の数式(14)を満たした場合に反転を採択することと同値である。
【0056】
【0057】
この数式(14)は、反転を採択するか否かを判定するための式であり、以下では、「反転判定式」と呼ぶ場合がある。
【0058】
そこで、閾値生成部30は、温度パラメータと乱数値を用いて数式(14)の右辺の値を生成する。そして、閾値生成部30は、生成した数式(14)の右辺の値を焼鈍部10へ出力する。
【0059】
焼鈍部10は、スピン又は補助スピンのうちのスピン1つ分のスピン状態と局所場とを保持する。以下では、各焼鈍部10が制御対象とするスピン又は補助スピンを自スピンと言う。そして、焼鈍部10は、自スピンが反転した際のエネルギー変化量を基に、自スピンが反転候補となるか否かを判定する回路である。以下に、
図2を参照して、焼鈍部10の詳細について説明する。
図3は、焼鈍部の詳細を表すブロック図である。焼鈍部10は、
図1に示すように、複数存在する。そして、各焼鈍部10は、制御するスピンが異なるが、実行する処理は同一である。そこで、以下では、特定の焼鈍部10について説明する。
【0060】
焼鈍部10は、
図3に示すように、局所場管理部101、スピン状態管理部102、エネルギー変化量計算部103、制約項係数保持部104、フラグ生成部105、制約値保持部106及びスピン番号保持部107を有する。
【0061】
スピン番号保持部107は、自スピンを識別するためのスピン番号を保持する。例えば、スピン番号は、スピンをxiと表した場合のiもしくは補助スピンy0を識別するための番号にあたる。自スピンがスピンxiである焼鈍部10であれば、スピン番号保持部107は、スピンxiを識別するためのスピン番号としてiを保持する。また、自スピンが補助スピンy0である焼鈍部10であれば、スピン番号保持部107は、補助スピンy0を識別するためのスピン番号としてiを保持する。そして、スピン番号保持部107は、保持するスピン番号をスピン状態管理部102及び反転スピン選択部50へ出力する。
【0062】
スピン状態管理部102は、現在の自スピンのスピン状態を保持して、自スピンのスピン状態を管理する。具体的には、スピン状態管理部102は、最適解の探索処理の開始時に、自スピンのスピン状態の初期値の設定を受ける。例えば、xiの初期値が全て0の場合、自スピンがスピンxiである焼鈍部10のスピン状態管理部102は、0の値を初期値として取得する。また、本実施例では制約項の初期値が0であるので、自スピンが補助スピンy0である焼鈍部10のスピン状態管理部102は、0の値を初期値として取得する。
【0063】
図4は、初期設定指示のためのファイルの一例を表す図である。本実施例では、各スピンのスピン状態の初期値は、全て0であるので、ファイル13おけるスピン状態は、全て0と設定される。イジング演算装置1がこのファイル13を読み込むことで、各スピン状態管理部102に、ファイル13に登録された各スピン状態が設定される。
【0064】
また、スピン状態管理部102は、スピン番号をスピン番号保持部107から取得する。そして、スピン状態管理部102は、スピン状態をスピン番号とともにフラグ生成部105へ出力する。
【0065】
その後、スピン状態管理部102は、反転スピン選択部50により反転が採択された場合、反転スピンの確定の通知を反転スピンのスピン番号とともに反転スピン選択部50から受ける。また、スピン状態管理部102は、スピンに対して1を加算した反転を表す加算フラグ又は補助スピンに対して1を減算した反転を表す減算フラグのいずれかの入力を反転スピン選択部50から受ける。そして、スピン状態管理部102は、反転スピンが自スピンである場合、以下の処理を実行する。スピン状態管理部102は、加算フラグであれば現在のスピンの値に1を加算した値を新しいスピンの値として保持する値を更新する。また、減算フラグであれば、スピン状態管理部102は、現在のスピンの値から1を減算した値を新しいスピンの値として保持する値を更新する。
【0066】
局所場管理部101は、現在の局所場の情報を保持して、自スピンに対応する局所場を管理する。ここで、自スピンが反転した場合のエネルギー変化量が局所場とスピン状態とを基に数式(11)から算出できるので、エネルギー変化量を各焼鈍部10が算出するために、焼鈍部10毎に局所場管理部101が局所場の情報を保持する。そして、局所場管理部101は、保持する局所場をエネルギー変化量計算部103へ出力する。
【0067】
より具体的には、局所場管理部101は、最適解の探索処理の開始時に、自スピンに対する局所場の初期値の設定を受ける。例えば、イジング演算装置1が
図4のファイル13を読み込むことで、局所場管理部101に、ファイル13に登録された各スピンの局所場が設定される。他にも、局所場管理部101は、各スピンの初期値の入力を受けて自スピンに対する局所場の初期値を算出してもよい。
【0068】
その後、局所場管理部101は、反転スピン選択部50により反転が採択され、反転スピンが確定した際に、反転スピンのスピン番号とともに反転スピンの確定の通知を反転スピン選択部50から受ける。次に、局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(12)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する。
【0069】
制約項係数保持部104は、例えば、レジスタである。そして、制約項係数保持部104は、数式(6)におけるkにあたる制約項の係数の予め決められた値を保持する。例えば、イジング演算装置1が
図4のファイル13を読み込むことで、制約項係数保持部104に、ファイル13に登録された各スピンの制約項係数が格納される。ファイル13に示すように通常のスピンx
iには制約項係数として0が設定され、補助スピンy
0には制約項係数として所定の値が設定される。ファイル13を用いた場合、補助スピンy
0に対する制約項係数は、100に設定される。
【0070】
エネルギー変化量計算部103は、局所場の情報の入力を局所場管理部101から受ける。また、エネルギー変化量計算部103は、数式(6)におけるkにあたる制約項の係数を制約項係数保持部104から取得する。そして、エネルギー変化量計算部103は、数式(11)を用いて自スピンの反転によるエネルギー変化量を算出する。その後、エネルギー変化量計算部103は、算出した自スピンの反転によるエネルギー変化量をフラグ生成部105へ出力する。
【0071】
制約値保持部106は、例えば、レジスタである。そして、制約値保持部106は、範囲制約における上限値及び下限値を保持する。自スピンが通常のスピンであれば、上限値が1に設定され、下限値が0に設定されることで、スピン状態が常に範囲制約の範囲内に収まる。例えば、イジング演算装置1が
図4のファイル13を読み込むことで、制約値保持部106に、ファイル13に登録された各スピンに対する上限値及び下限値が格納される。ファイル13に示すように通常のスピンx
iには上限値として1が設定され、下限値として0が設定される。また、ファイル13では、補助スピンy
0には上限値及び下限値として所定の値が設定される。ファイル13を用いた場合、補助スピンy
0に対する上限値は190に設定され、下限値は0に設定される。これは、例えば最大容量が190のナップザックに品物を詰める場合のナップザック問題を解く場合の設定である。
【0072】
フラグ生成部105は、スピン状態の入力をスピン状態管理部102から受ける。また、フラグ生成部105は、制約値保持部106から範囲制約における上限値及び下限値を取得する。また、フラグ生成部105は、エネルギー変化量の入力をエネルギー変化量計算部103から受ける。さらに、フラグ生成部105は、数式(14)で表される反転判定式の右辺の値の入力を閾値生成部30から受ける。
【0073】
次に、フラグ生成部105は、反転後のスピン状態が上限値及び下限値の範囲内にあるか否かを判定する。そして、フラグ生成部105は、スピン状態が上限値と一致する場合、加算候補判定が不可であると判定し、上限値未満であれば、加算候補判定が可であると判定する。また、フラグ生成部105は、スピン状態が下限値と一致する場合、減算候補判定が不可であると判定する、スピン状態が下限値を上回って入れば、減算候補判定が可であると判定する。
【0074】
次に、加算候補判定又は減算候補判定のいずれか一方もしくは双方が可であれば、フラグ生成部105は、エネルギー変化量が数式(14)の右辺を閾値生成部30から取得した値とした反転判定式を満たすか否かを判定する。
【0075】
フラグ生成部105は、エネルギー変化量が反転判定式を満たす場合、自スピンが反転候補であることを示す反転候補フラグを生成する。これに対して、エネルギー変化量が反転判定式を満たしていなければ、フラグ生成部105は、自スピンが反転候補にはならないことを示す反転候補フラグを生成する。例えば、反転候補フラグをFとすると、フラグ生成部105は、自スピンが反転候補であることを示す場合はFの値を1とし、自スピンが反転候補にならないことを示す場合はFの値を0とする。
【0076】
次に、フラグ生成部105は、自スピンが補助スピンである場合、現在の補助スピンy0の値に1を加算したスピン状態への遷移と、現在の補助スピンy0の値から1を減算したスピン状態への遷移が可能である。2つのスピン状態への遷移が可能である場合、フラグ生成部105は、加算候補判定が可であり、減算候補判定が不可であれば、加算した場合のスピン状態への遷移を候補として選択する。逆に、加算候補判定が不可であり、減算候補判定が可であれば、フラグ生成部105は、減算した場合のスピン状態への遷移を候補として選択する。また、両方とも可の場合、フラグ生成部105は、どちらか一方を選択する。そして、フラグ生成部105は、加算した場合のスピン状態への遷移を選択した場合、加算フラグを生成する。また、減算した場合のスピン状態への遷移を選択した場合、フラグ生成部105は、減算フラグを生成する。
【0077】
その後、フラグ生成部105は、生成した反転候補フラグ、並びに、加算フラグ又は減算フラグがあればそれを反転スピン選択部50へ出力する。以下では、反転候補フラグ、加算フラグ及び減算フラグをまとめてフラグと呼ぶ場合がある。
【0078】
図1に戻って説明を続ける。反転スピン選択部50は、各焼鈍部10における自スピンのスピン番号を各焼鈍部10のスピン番号保持部107から取得する。また、反転スピン選択部50は、各焼鈍部10における自スピンのフラグの入力を受ける。さらに、反転スピン選択部50は、乱数の入力を乱数生成部40から受ける。
【0079】
そして、反転スピン選択部50は、各焼鈍部10から取得した反転候補フラグを確認して、反転候補となることを表す反転候補フラグを有するスピンである反転候補スピンが存在するか否かを判定する。
【0080】
反転スピン選択部50は、反転候補スピンが存在する場合、乱数生成部40から取得した乱数にしたがって取得した反転候補スピンの中から1つの反転候補スピンを選択する。
【0081】
そして、反転スピン選択部50は、選択した反転候補スピンを反転スピンとして確定する。その後、反転スピン選択部50は、反転スピンの確定の通知とともに、反転スピンのスピン番号、スピン状態をエネルギー計算部60及び探索結果保持部70へ出力する。反転スピン選択部50は、反転スピンの確定の通知とともに、反転スピンのスピン番号を焼鈍部10へ出力する。この際、加算フラグ又は減算フラグを有する場合、反転スピン選択部50は、その有する加算フラグ又は減算フラグを焼鈍部10へ出力する。
【0082】
エネルギー計算部60は、例えば、全てのスピン状態が0とされた各スピンの初期値を予め有する。そして、エネルギー計算部60は、各スピンの初期値を数式(6)に用いてエネルギーを求めて保持する。
【0083】
その後、エネルギー計算部60は、反転スピンの確定の通知とともに反転スピンのスピン番号及びスピン状態の入力を反転スピン選択部50から受ける。次に、エネルギー計算部60は。自己が保持する各スピンのスピン状態において、反転スピン選択部50から通知されたスピン番号を有するスピンのスピン状態を反転させて、新たな各スピンのスピン状態を生成する。また、エネルギー計算部60は、反転スピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン選択部50から取得する。そして、エネルギー計算部60は、保持するエネルギーの値に取得したエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。
【0084】
エネルギー計算部60は、反転スピンのスピン状態を反転させた状態の各スピンのスピン状態を保持する。さらに、エネルギー計算部60は、算出した反転スピンのスピン状態を反転させた状態のエネルギーを探索結果保持部70へ出力する。
【0085】
探索結果保持部70は、算出されたエネルギーの情報の入力をエネルギー計算部60から受ける。さらに、探索結果保持部70は、反転スピンのスピン番号、スピン状態の入力を反転スピン選択部50から受ける。そして、最小エネルギーを未保持の場合、探索結果保持部70は、取得したエネルギーを最小エネルギーとする。この場合、探索結果保持部70は、最小エネルギーとなる場合の各スピンのスピン状態を保持する。
【0086】
これに対して、既に最小エネルギーを保持する場合、探索結果保持部70は、取得したエネルギーと保持する最小エネルギーとを比較する。取得したエネルギーが最小エネルギー未満の場合、探索結果保持部70は、取得したエネルギーを最小エネルギーとする。さらに、探索結果保持部70は、取得したエネルギーとなる場合の各スピンのスピン状態を保持する。一方、取得したエネルギーが最小エネルギー以上の場合、探索結果保持部70は、保持する最小エネルギー及び各スピンのスピン状態の保持をそのまま継続する。ただし、最小エネルギーの初期値として初期エネルギーが設定される場合があり、その場合、探索結果保持部70が最小エネルギーを未保持の状態は存在せず、既に最小エネルギーを保持する場合から処理が開始する。この探索結果保持部70が、「探索部」の一例にあたる。
【0087】
次に、
図5を参照して、本実施例に係るイジング演算装置1による最適解の探索処理の流れについて説明する。
図5は、実施例1に係るイジング演算装置による最適解の探索処理のフローチャートである。
【0088】
イジング演算装置1は、図示しない外部端末などを用いた操作者からの入力ファイルなどを基に、各部において初期値の設定を行う(ステップS101)。具体的には、焼鈍部10のスピン状態管理部102は、自スピンのスピン状態の初期値が設定される。また、スピン番号保持部107は、自スピンのスピン番号が設定される。また、局所場管理部101は、自スピンに対する局所場の初期値が設定される。また、制約項係数保持部104は、制約項係数の値が設定される。また、制約値保持部106は、上限値及び下限値が設定される。
【0089】
次に、焼鈍部10のエネルギー変化量計算部103は、局所場管理部101が保持する局所場の情報を取得する。また、エネルギー変化量計算部103は、自スピンで使用する制約項係数の値を制約項係数保持部104から取得する。そして、エネルギー変化量計算部103は、自スピンの反転時のエネルギー変化量を数式(11)を用いて計算する(ステップS102)。ここで、エネルギー変化量計算部103は、加算の場合の状態遷移と減算の場合の状態遷移が存在する場合、加算の場合のエネルギー変化量及び減算の場合のエネルギー変化量の双方を算出する。その後、エネルギー変化量計算部103は、算出した自スピンの反転時のエネルギー変化量をフラグ生成部105へ出力する。
【0090】
フラグ生成部105は、加算候補判定及び減算候補判定のそれぞれの可否を識別する(ステップS103)。
【0091】
次に、フラグ生成部105は、加算候補判定又は減算候補判定のいずれかが可か否かを判定する(ステップS104)。加算候補判定及び減算候補判定のいずれも不可の場合(ステップS104:否定)、最適解の探索処理は、ステップS107へ進む。ただし、ステップS102~S106は、各焼鈍部10において並列して行われ、その結果は全て反転スピン選択部50へ入力される。すなわち、ある焼鈍部10ではステップS104において否定の判定を得て、ステップS107へ進むが、他の焼鈍部10ではステップS104において肯定の判定を得て、ステップS105、S106を経由してステップS107へ進むというように別々の処理となる場合がある。
【0092】
これに対して、加算候補判定及び減算候補判定のいずかが可の場合(ステップS104:肯定)、フラグ生成部105は、エネルギー変化量と閾値生成部30から入力された閾値との比較結果にしたがって反転候補フラグを生成する(ステップS105)。具体的には、エネルギー変化量が閾値を代入した反転判定式を満たす場合、フラグ生成部105は、反転候補となることを表す反転候補フラグを生成する。逆に、エネルギー変化量が閾値を代入した反転判定式を満たさない場合、フラグ生成部105は、反転候補とならないことを表す反転候補フラグを生成する。
【0093】
さらに、フラグ生成部105は、加算フラグ又は減算フラグのいずれかを有効に設定する(ステップS106)。具体的には、フラグ生成部105は、加算候補判定が可の場合には加算フラグを有効に設定し、減算候補判定が可の場合には減算フラグを有効に設定する。また、加算候補判定及び減算候補判定のいずれも可の場合、フラグ生成部105は、加算フラグ又は減算フラグのいずれかを選択して有効に設定する。その後、フラグ生成部105は、生成したフラグを反転スピン選択部50へ出力する。
【0094】
反転スピン選択部50は、反転候補スピンのスピン番号の入力をスピン番号保持部107から受ける。また、反転スピン選択部50は、フラグの入力をフラグ生成部105から受ける。そして、反転スピン選択部50は、反転候補フラグが有効なスピンが存在するか否かを判定する(ステップS107)。反転候補フラグが有効なスピンが存在しない場合(ステップS107:否定)、最適解の探索処理は、ステップS114へ進む。
【0095】
これに対して、反転候補フラグが有効なスピンが存在する場合(ステップS107:肯定)、反転スピン選択部50は、反転候補フラグが有効なスピンの中から、乱数生成部40から入力された乱数にしたがってスピンを選択して反転スピンを確定する(ステップS108)。その後、反転スピン選択部50は、反転スピンの確定の通知をスピン番号とともに、焼鈍部10、エネルギー計算部60及び探索結果保持部70へ出力する。また、反転スピン選択部50は、加算フラグ又は減算フラグのいずれかが有効とされている場合、その有効とされた加算フラグ又は減算フラグを焼鈍部10へ出力する。
【0096】
エネルギー計算部60は、反転スピンの確定の通知を受けると、保持する各スピンのスピン状態において、反転スピン選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部60は、反転スピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン選択部50から取得する。そして、エネルギー計算部60は、保持するエネルギーの値に取得したエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。そして、エネルギー計算部60は、各スピンのスピン状態及び保持するエネルギーの情報を更新する(ステップS109)。
【0097】
その後、エネルギー計算部60は、算出したエネルギーを探索結果保持部70へ出力する。探索結果保持部70は、エネルギー計算部60から取得したエネルギーが保持する最小エネルギー未満か否かを判定する(ステップS110)。エネルギー計算部60から取得したエネルギーが保持する最小エネルギー以上の場合(ステップS110:否定)、最適解の探索処理は、ステップS112へ進む。
【0098】
これに対して、エネルギー計算部60から取得したエネルギーが保持する最小エネルギー未満の場合(ステップS110:肯定)、探索結果保持部70は、エネルギー計算部60から取得したエネルギーを最小エネルギーとして、保持する最小エネルギーを更新する。さらに、探索結果保持部70は、保持する各スピンのスピン状態において反転スピンのスピン状態を反転させた各スピンのスピン状態を、新たな最小エネルギーの場合のスピン状態として保存する(ステップS111)。
【0099】
焼鈍部10は、反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン選択部50から受ける。スピン状態管理部102は、反転が確定された反転スピンが自スピンである場合、自スピンのスピン状態を更新する(ステップS112)。ここで、スピン状態管理部102は、加算フラグ又は減算フラグが付加されている場合、加算フラグ又は減算フラグにしたがって、スピンの値を更新してスピン状態の更新を行う。
【0100】
局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(12)に用いて局所場の変化量を算出する。ここで、局所場管理部101は、加算フラグ又は減算フラグが付加されている場合、加算フラグ又は減算フラグにしたがって、相互作用係数を用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する(ステップS113)。
【0101】
その後、探索結果保持部70は、予め決められた演算回数が終了したか否かを判定する(ステップS114)。予め決められた演算回数が終了していない場合(ステップS114:否定)、最適解の探索処理は、ステップS102へ戻る。これに対して、予め決められた演算回数が終了した場合(ステップS114:肯定)、探索結果保持部70は、その時点で有する最小エネルギーのスピン状態を最適解と決定して最適解の探索処理を終了する。
【0102】
図6は、イジング演算装置の配置構成図である。本実施例に係るイジング演算装置1は、
図6におけるアニーリング回路201にあたる。アニーリング回路201は、アニーリングが実行可能な機能単位である。各アニーリング回路201は、複数の単位回路202及び制御回路203を有する。例えば、1つのアニーリング回路201に、1024個の単位回路202が搭載される。単位回路202は、1つのスピン判定や状態管理を実施する論理及び実装の単位であり、焼鈍部10及び反転スピン選択部50にあたる。また、制御回路203は、アニーリング回路201内の制御を行う回路であり、エネルギー計算部60及び探索結果保持部70などにあたる。すなわち、単位回路202においてフラグが生成され、その後に反転スピンが確定すると単位回路202でスピン状態及び局所場の更新が行われる。
【0103】
また、
図7は、単位回路の回路イメージの図である。
図7に示すレジスタ211が制約項係数保持部104の一例にあたり、レジスタ216及び217が制約値保持部106の一例にあたる。また、回路212~215及び218におけるレジスタ216及び217以外の部分が、エネルギー変化量計算部103及びフラグ生成部105にあたる。
【0104】
単位回路202のうちの領域221の回路はスピン反転判定側の回路である。回路212は、補助スピンの値を減算する場合又は通常のスピンのスピン状態が1から0へ遷移する場合の局所場を求め、反転判定式を用いて反転候補フラグを生成する。また、回路213は、補助スピンの値を加算する場合又は通常のスピンのスピン状態が0から1へ遷移する場合の局所場を求め、反転判定式を用いて反転候補フラグを生成する。回路215は、反転後のスピン状態が上限値以下か及び下限値以上かを判定して、加算候補判定の可否及び減算候補判定の可否を識別する。そして、回路215は、加算フラグ及び減算フラグを生成する。回路214は、加算フラグが有効無効及び減算フラグの有効無効により、反転候補となることが可能なことを表す反転候補フラグが設定されたスピンのスピン状態が制約範囲を超えないようにマスクする。その後、回路218は、加算側の反転候補フラグ及び減算側の反転候補フラグの両方がある場合には、いずれか一方を選択して出力する。単位回路202の内部的には、自スピンが補助スピンであればスピン状態は多値をとるが、トーナメントには0又は1の値で参加する。この場合、トーナメントへ参加する際の値は、例えば0が加算の場合を表し、1が減算の場合を表すと決められる。その後、反転スピン選択部50は、回路218から出力された信号を用いてトーナメントにより反転スピンを確定する。
【0105】
また、単位回路202のうちの領域222の回路はスピン状態及び局所場更新側の回路である。領域222の回路はスピン状態及び局所場更新側の回路は、反転スピン選択部50から入力された確定された反転スピンの情報を用いて、スピン状態及び局所場の更新を行う。この領域222の回路が、局所場管理部101及びスピン状態管理部102の一例にあたる。領域222の回路から出力された局所場及びスピン状態が、領域221の回路に入力されて次の反転時の計算に用いられる。
【0106】
図8は、イジング演算装置を利用時の処理のフローチャートである。ここでは、イジング演算装置1を利用する利用者をユーザと言う。
図8を参照して、ユーザによるイジング演算装置1の利用の全体の流れを説明する。
【0107】
ユーザが解きたい解決対象問題51が存在する。ユーザは、コンピュータなどを用いて、解決対象問題をイジングモデルへ問題変換する(ステップS151)。これにより、数式(1)で表されるイジングモデルエネルギー式53が取得される。さらに、スピン状態及び局所場の初期値54が取得される。
【0108】
次に、イジングモデルエネルギー式53、スピン状態及び局所場の初期値54、並びに、演算の反復回数などと言った最適解の探索処理を実行させるための動作条件52がパラメータとしてイジング演算装置1に入力される(ステップS152)。
【0109】
その後、イジング演算装置1により、演算が実行される(ステップS153)。この処理が、上述したイジング演算装置1による最適解の探索処理である。この演算の実行により、演算結果56が得られる。
【0110】
ユーザは、演算結果56を取得する(ステップS154)。そして、ユーザは、取得した演算結果56の解釈を行う(ステップS155)。これにより、ユーザは、解決対象問題51に対する解決対象問題の演算結果56を得る。
【0111】
以上に説明したように、本実施例に係るイジング演算装置は、多値を取り得る補助スピンを導入して、範囲制約を有する最適化問題の探索処理を行う。これにより、範囲制約の条件を設定するための資源の増加を抑えることができ、取り扱う問題の規模を大きくすることが可能となる。また、通常のスピンに対して補助スピンの占める割合を低く抑えることができ、探索効率が向上し、最小エネルギーへの到達時間を短縮することが可能となる。したがって、組合せ最適化問題に対するイジング演算装置の処理性能、特に範囲制約を有する最適化問題の解決における処理性能を向上させることができる。
【0112】
(変形例)
以上の説明では、補助スピンの初期値を0の場合で説明したが、補助スピンの初期値は他の値を取ることも可能である。例えば、補助スピンの初期値は他の下限値でもよい。さらに、補助スピンの初期値を0などの下限値にした場合、補助スピンの値が上限値に達するまでに時間がかかるため、上限値付近が最適解に近い場合に余分な時間がかかる。そこで、補助スピンの初期値を上限値にしてもよい。
【0113】
補助スピンの初期値を上限値にする場合の評価関数は、次の数式(15)で表される。ここで、Cは、上限値を表す。
【数15】
【0114】
ここで、M=Σy
mとすると、数式(15)は、
図9の式変形14に示すように変形可能である。
図9は、実施例1の変形例に係る補助スピンに関する計算例を表す図である。式変形14の変形後の式からy
0の値をMからM+1へ増加させた場合の差分及びy
0の値をMからM-1へ減少させた場合の差分は、式15により表される。この場合も、kの後の加算又は減算より後の項を補助スピンy
0における局所場とすることで、スピン状態が変化した場合のエネルギー変化量及び局所場の値の変化量は、数式(11)及び(12)で表される。
【0115】
したがって、焼鈍部10、反転スピン選択部50、エネルギー計算部60及び探索結果保持部70は、実施例1と同様に演算を行って最適解の探索処理を実行することができる。ただしこの場合、補助ビットの初期値を上限値として、値を減らしていく制御を行うため、上限値に近い範囲で最適解が求まる場合には探索時間を短縮することが可能である。例えば、ナップザック問題の場合、ナップザックの容量が上限値となり、上限値に近い範囲で最適解が求まるため、変形例のように上限値から値を減らす方法をとることで、最適解への到達時間を短縮することができる。
【実施例2】
【0116】
次に、実施例2について説明する。本実施例に係るイジング演算装置は、加算候補判定と減算候補判定とのいずれもが可の場合に、加算フラグと減算フラグとのいずれを有効にするかの選択において、優先度を与えることが実施例1と異なる。本実施例に係るイジング演算装置1及び焼鈍部10も、
図1及び3で表される。以下の説明では、実施例1と同様の各部の動作については説明を省略する場合がある。
【0117】
本実施例に係る焼鈍部10のフラグ生成部105は、加算フラグ及び減算フラグの選択方法として、「加算優先」、「減算優先」及び「ランダム」の3通りの選択方法を有する。そして、フラグ生成部105は、操作者からの指示を受けて、「加算優先」、「減算優先」及び「ランダム」の3つの中から操作者により指定された選択方法を採用する。
【0118】
フラグ生成部105は、自スピンが補助スピンの場合、1を加算した場合のスピン状態と1を減算した場合の補助スピンの入力を受ける。そして、フラグ生成部105は、1を加算した場合のスピン状態が上限値以下か否かにより、加算候補判定の可否を識別する。また、フラグ生成部105は、1を減算した場合のスピン状態が下限値以上か否かにより、減算候補判定の可否を識別する。そして、フラグ生成部105は、エネルギー変化量が反転判定式を満たす場合に反転候補フラグを生成する。
【0119】
さらに、フラグ生成部105は、加算候補判定及び減算候補判定のいずれもが可の場合、いずれかの選択を行う。この際に、加算優先が選択方法として採用されていれば、フラグ生成部105は、加算フラグを優先して選択して有効にする。また、減算優先が選択方法として採用されていれば、フラグ生成部105は、減算フラグを優先して選択して有効にする。これに対して、ランダムが選択方法として採用されていれば、フラグ生成部105は、加算フラグ又は減算フラグをランダムに選択して有効にする。
【0120】
例えば、ナップザック問題の最適解を探索する場合を例に説明する。この場合、加算を優先することで、ランダムに選択する場合に比べて、より上限値に近い値での最適解の探索処理が多く実行される。
【0121】
ナップザック問題の場合、補助スピンはナップザックの容量であり、値が大きい方がより品物の総価値が高くなる可能性が高いことから、加算を優先してより上限値に近い値で最適解を求めることで、最適解への到達時間を短縮することができる。
【0122】
さらに、多値を取れる補助スピンを複数用いる場合、補助スピン毎に加算又は減算のいずれを優先したほうがよいかが異なる場合がある。そこで、各補助スピンを自スピンとする焼鈍部10のそれぞれに設定レジスタを用意して、設定値によってフラグ生成部105による選択ルールを切り替えられるようにしてもよい。
【0123】
以上に説明したように、本実施例に係るイジング演算装置は、補助スピンの値に対して加算を行ったスピン状態と減算を行ったスピン状態とのいずれも反転スピンとして選択可能な場合に、いずれかを優先して選択することが可能である。対象とする問題によっては、加算を優先した場合に最適解への到達時間を短くできる場合や、減算を優先した場合に最適解への到達時間を短くできる場合などがある。そのため、優先度をつけて補助スピンの値への加算又は減算の選択を行うことで、より最適解への到達時間を短くすることができ、組合せ最適化問題に対するイジング演算装置の処理性能能を向上させることができる。
【0124】
1 イジング演算装置
10 焼鈍部
20 温度制御部
30 閾値生成部
40 乱数生成部
50 反転スピン選択部
60 エネルギー計算部
70 探索結果保持部
101 局所場管理部
102 スピン状態管理部
103 エネルギー変化量計算部
104 制約項係数保持部
105 フラグ生成部
106 制約値保持部
107 スピン番号保持部