JP2021165965A - 最適化装置、最適化方法及び最適化プログラム - Google Patents

最適化装置、最適化方法及び最適化プログラム Download PDF

Info

Publication number
JP2021165965A
JP2021165965A JP2020069398A JP2020069398A JP2021165965A JP 2021165965 A JP2021165965 A JP 2021165965A JP 2020069398 A JP2020069398 A JP 2020069398A JP 2020069398 A JP2020069398 A JP 2020069398A JP 2021165965 A JP2021165965 A JP 2021165965A
Authority
JP
Japan
Prior art keywords
spin
unit
reversal
energy
state
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.)
Granted
Application number
JP2020069398A
Other languages
English (en)
Other versions
JP7508842B2 (ja
Inventor
聡 松浦
Satoshi Matsuura
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020069398A priority Critical patent/JP7508842B2/ja
Priority to EP21153977.0A priority patent/EP3975032A1/en
Priority to US17/168,398 priority patent/US20210312108A1/en
Priority to CN202110183745.6A priority patent/CN113496280A/zh
Publication of JP2021165965A publication Critical patent/JP2021165965A/ja
Application granted granted Critical
Publication of JP7508842B2 publication Critical patent/JP7508842B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/067Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using optical means
    • G06N3/0675Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using optical means using electro-optical, acousto-optical or opto-electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/08Computing arrangements based on specific mathematical models using chaos models or non-linear system models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Hall/Mr Elements (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】組合せ最適化問題に対する処理性能を向上させる最適化装置、最適化方法及び最適化プログラムを提供する。
【解決手段】焼鈍部10は、評価関数に含まれる複数の状態変数のうちの1つの状態変数の状態を変化させ、評価関数が表すエネルギーの変化量を算出し、既に算出した合計変化量と取得した変化量とを合計して合計変化量を求める。投機反転制御部62は、変化させる状態変数を投機的に選択して焼鈍部10に合計変化量を求めさせる処理を、変化させた状態変数が所定数になるまで繰り返させる。反転スピン確定部61は、温度値及び乱数値を基に算出した閾値と焼鈍部10により求められた合計変化量との相関関係によって、所定数の状態遷移が変化させられた状態遷移を採択するか否かを確率的に決定する。エネルギー計算部72は、採択が決定された状態遷移を実行した後の遷移後エネルギーを算出する。探索結果保持部80は、最小エネルギーを求める。
【選択図】図1

Description

本発明は、最適化装置、最適化方法及び最適化プログラムに関する。
我々の社会には、災害復旧の手順や配送ルートの最適化など、限られた人や時間などの制約の下で、多くの要素の組合せの中から最適なものを選択する「組合せ最適化問題」が数多く存在する。これら、組合せ最適化問題の最適解を探索する方法の一つとして、モンテカルロ法の一種で、乱数値を用いて確率的に解を求める方法である疑似焼き鈍し法を応用したイジング演算装置がある。
イジング演算装置は、所定の評価式で表現されるイジングモデルのエネルギーを最小とする変数の組み合わせを探索する演算装置である。この変数をスピンと呼び、変数の値をスピン状態と呼び、スピン状態が遷移することを反転と呼ぶ場合がある。
イジング演算装置は、1スピンずつ反転判定式に基づき反転の有無を決定し、逐次的に状態を遷移させて最小エネルギーの探索を行う。そして、実問題をイジングモデルのエネルギー式に定式化し、このエネルギーを最小とするスピン状態の組合せをイジング演算装置で探索することにより、様々な種類の組合せ最適化問題を解くことが可能である。
ここで、簡単に擬似焼き鈍し法での最小エネルギー探索方法を説明する。イジング演算装置は、解決する問題を表現する評価関数が有する各変数に、0又は1を代入した初期状態から探索を始める。そして、イジング演算装置は、変数の組み合わせの現在の状態から、それに近い状態を選択してその状態遷移を考える。現在の状態に近い状態とは、例えば、1つの変数の状態を変化させた状態である。次に、イジング演算装置は、その状態に対するエネルギー変化量を計算し、その値に応じて、その状態遷移を採択するか、採択せずに元の状態を保つかを確率的に選択する。エネルギーが下がる場合の採択確率をエネルギーが上がる場合の採択確率よりも高くすると、平均的にはエネルギーが下がる方向に状態変化がおこり、イジング演算装置は、最終的に最適解又は最適解に近いエネルギーに到達することが可能である。もし、これを決定論的にエネルギーが下がる場合に採択し、上がる場合に不採択とすると、エネルギーの変化は時間に対して広義の単調減少となるが、局所解に到達した場合にはそれ以上の状態遷移が起こらなくなり、最適解への到達を期待することが困難である。したがって、組み合わせ最適化問題の探索では、状態遷移を採択するかどうかを確率的に決定することが重要である。
なお、組合せ最適化問題を解く方法として、複数のニューロン回路の状態の同時更新において、複数の重み値に基づき相互接続されていない複数のニューロン回路の状態が同時に変化する場合に状態の更新を許可する従来技術がある。また、評価関数の構成要素である部分評価関数が局所解よりも改善する状態だけに絞って探索を行うことで局所解から脱出する従来技術がある。
特開2017−219952号公報 特開2006−072820号公報
しかしながら、1スピンずつ反転の有無を決定して逐次的に状態を遷移させて探索する従来方法では、以下の問題が発生する。例えば、2つのスピンを反転させた状態などの周辺のスピン状態に、より低いエネルギー状態が存在したとしても、1スピンを反転させた場合にエネルギーが大きく増加する場合は、一度そのエネルギーの高い状態への遷移を選択することになる。
簡単な例として、1状態のスピンの数が偶数になるという制約がある場合などは、1ビットのみの反転で遷移可能な状態は全てエネルギーが高い状態であり、別の状態に移行することは困難となる。このように、1スピンずつ反転判定式に基づき採択判定を実施する従来方法では、問題の種類によっては効率的に最小エネルギーの探索を行うことが困難となるおそれがある。
また、相互接続されていない複数のニューロン回路の状態が同時に変化する場合に状態の更新を許可する従来技術であっても、エネルギーの高い状態への遷移を選択後に低い状態へ遷移することは困難である。これは、部分評価関数が局所解よりも改善する状態だけに絞って探索を行うことで局所解から脱出する従来技術であっても同様である。したがって、これらの従来技術を用いても、問題の種類によっては効率的に最小エネルギーの探索を行うことが困難となるおそれがある。
開示の技術は、上記に鑑みてなされたものであって、組合せ最適化問題に対する処理性能を向上させる最適化装置、最適化方法及び最適化プログラムを提供することを目的とする。
本願の開示する最適化装置、最適化方法及び最適化プログラムの一つの態様において、温度制御部は、温度を示す温度値を制御する。焼鈍部は、エネルギーを表す評価関数に含まれる複数の状態変数のうちのいずれか1つの前記状態変数の状態を変化させ、前記評価関数が表すエネルギーの変化量を算出し、既に算出した合計変化量と取得した前記変化量とを合計して新たに前記合計変化量を求める。投機反転制御部は、変化させる前記状態変数を投機的に選択して前記焼鈍部に前記合計変化量を求めさせる処理を、前記変化させた状態変数が所定数になるまで繰り返させる。採択判定部は、前記温度値及び乱数値を基に算出した閾値と前記焼鈍部により求められた前記合計変化量との相関関係によって、前記焼鈍部により前記所定数の前記状態変数が変化させられた状態遷移を採択するか否かを確率的に決定する。エネルギー計算部は、前記採択判定部により採択が決定された前記状態遷移を実行した後の遷移後エネルギーを算出する。探索部は、前記エネルギー計算部により算出された前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める。
1つの側面では、本発明は、組合せ最適化問題に対する処理性能を向上させることができる。
図1は、実施例1に係るイジング演算装置のブロック図である。 図2は、実施例1に係る焼鈍部の詳細を表すブロック図である。 図3は、実施例1に係るイジング演算装置による最適解の探索処理のフローチャートである。 図4は、イジング演算装置の配置構成図である。 図5は、単位回路の回路イメージの図である。 図6は、実施例1に係るイジング演算装置の最適解の探索処理実行時の動作イメージの図である。 図7は、イジング演算装置を利用時の処理のフローチャートである。 図8は、実施例2に係る焼鈍部の詳細を表すブロック図である。 図9は、実施例2に係るイジング演算装置による最適解の探索処理のフローチャートである。 図10は、実施例2に係るイジング演算装置の最適解の探索処理実行時の動作イメージの図である。 図11は、実施例3に係る焼鈍部の詳細を表すブロック図である。 図12は、実施例3に係るイジング演算装置による初期値の設定指示の一例を示す図である。 図13は、実施例3に係るイジング演算装置によるn−hot制約を有する問題の最適解の探索処理のフローチャートである。 図14は、巡回セールスマン問題のスピンへの変形例を表す図である。 図15は、実施例4に係る焼鈍部の詳細を表すブロック図である。 図16は、実施例4に係るイジング演算装置による2way1hot制約に従うスピンの反転方法の一例を示す図である。 図17は、実施例4に係る読出条件の一例を表す図である。 図18は、実施例4に係るイジング演算装置による初期値の設定指示の一例を示す図である。
以下に、本願の開示する最適化装置、最適化方法及び最適化プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する最適化装置、最適化方法及び最適化プログラムが限定されるものではない。
図1は、実施例1に係るイジング演算装置のブロック図である。イジング演算装置1は、複数の焼鈍部10、温度制御部20、閾値生成部30、乱数生成部40、反転スピン選択部50、制御信号生成部60、エネルギー管理部70及び探索結果保持部80を有する。焼鈍部10は、例えば、1台のイジング演算装置1に1024個搭載される。
イジング演算装置1は、評価関数である数式(1)〜(4)で表されるイジングモデルのエネルギーを最小とする変数xの組み合わせ(x,x,・・・,x)を探索する最適化装置である。ここで、数式(1)の変数xiは、状態変数であり0又は1の値をとる。以下の説明では、変数xiを「スピン」と呼び、変数xiの値を「スピン状態」と呼び、スピン状態が遷移することを「反転」と呼ぶ。すなわち、スピン状態は、0又は1と表される。そして、反転は、スピン状態が0から1へ遷移すること、又は、1から0へ遷移することにあたる。
Figure 2021165965
Figure 2021165965
Figure 2021165965
Figure 2021165965
ここで、Eはエネルギーであり、ΔEはxが反転した場合のエネルギー変化量である。また、hはxにおける局所場であり、δhはxにおける局所場の変化量である。また、以下では、エネルギー変化量をΔEと表す場合がある。
また、本実施形態のイジング演算装置1は、特定のスピンを反転した場合のエネルギー変化の評価結果に依らず、一時的にスピンの反転を維持しつつ他のスピンの反転を行う。そして、イジング演算装置1は、複数のスピンの反転を重畳させ、その場合のエネルギー変化の評価結果により複数のスピンの反転を一括して採択するか否かを判定する。そこで、以下の説明では、複数のスピンの反転を一括して行うことを、「一括反転」と呼ぶ。また、一括反転を行う場合に、エネルギー変化の評価結果に依らず、一時的にスピンを反転させておくことを、「投機反転」と呼ぶ。また、投機反転により一時的に反転させられたスピンを、「投機反転スピン」と呼ぶ。一括反転を行う場合の、採択の可否を判定するための評価対象となるエネルギー変化を取得する際の投機反転スピンを、「採択判定対象スピン」と呼ぶ。
温度制御部20は、温度パラメータの値を制御する回路である。温度パラメータは、温度を制御する温度値である。以下では、温度パラメータをTと表す場合がある。
温度制御回路20は、例えば、擬似焼き鈍し法にしたがい、十分高い初期温度から開始して探索の反復回数に応じて徐々に温度パラメータの値を低くすることで温度を減少させていく。初期状態から始めて、温度制御部20で温度を下げながら反復を繰り替えし、一定の反復回数の達成や、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。他にも、温度制御回路20は、温度条件の異なるいくつかのレプリカと呼ばれる系を並列に実行し、所定の反復回数毎に系を交換することで、低温条件と高温条件とをわたりながら、最小エネルギー探索を行うレプリカ交換法を用いることも可能である。
乱数生成部40は、乱数値を発生する回路である。乱数生成部40は、発生させた乱数を閾値生成部30及び反転スピン選択部50へ出力する。
閾値生成部30は、各スピンが反転候補となるか否かを判定するための閾値を生成する回路である。閾値生成部30は、温度制御部20から温度パラメータを取得する。また、閾値生成部30は、乱数値を乱数生成部40から取得する。
ここで、本実施例では、次の数式(5)にしたがって、変数の反転が採択される。すなわち、e−ΔE/T又は1のうちの小さい方を採択確率として変数の反転の採択が行われる。
Figure 2021165965
本実施例では、乱数生成部40が発生させた乱数により、確率的に数式(5)にしたがった反転スピンの採択が行われる。この場合、採択確率が数式(5)にしたがうという条件は、一様乱数rを用いて次の数式(6)を満たした場合に反転を採択することと同値である。
Figure 2021165965
この数式(6)は、反転を採択するか否かを判定するための式であり、以下では、「反転判定式」と呼ぶ場合がある。
そこで、閾値生成部30は、温度パラメータと乱数値を用いて数式(6)の右辺の値を生成する。そして、閾値生成部30は、生成した数式(6)の右辺の値を焼鈍部10へ出力する。
焼鈍部10は、スピン1つ分のスピン状態と局所場とを保持し、自スピンが反転した際のエネルギー変化量を基に、反転させたスピンが反転候補となるか否かを判定する回路である。以下に、図2を参照して、焼鈍部10の詳細について説明する。図2は、実施例1に係る焼鈍部の詳細を表すブロック図である。焼鈍部10は、図1に示すように、複数存在する。そして、各焼鈍部10は、制御するスピンが異なるが、実行する処理は同一である。そこで、以下では、特定の焼鈍部10について説明する。以下では、各焼鈍部10が制御対象とするスピンを自スピンと言う。
焼鈍部10は、図2に示すように、局所場管理部101、スピン状態管理部102、エネルギー変化量計算部103、投機反転分エネルギー加算部104、反転判定式評価部105、判定部106、スピン番号保持部107及びスピン属性保持部108を有する。さらに、本実施例に係る焼鈍部10は、復元用局所場保持部111及び復元用スピン状態保持部112を有する。
スピン番号保持部107は、自スピンを識別するためのスピン番号を保持する。例えば、スピン番号は、スピンをxと表した場合のiにあたる。自スピンがスピンxである焼鈍部10であれば、スピン番号保持部107は、スピンxを識別するためのスピン番号としてiを保持する。そして、スピン番号保持部107は、保持するスピン番号をスピン状態管理部102及び反転スピン候補選択部50へ出力する。
スピン状態管理部102は、現在の自スピンのスピン状態を保持して、自スピンのスピン状態を管理する。具体的には、スピン状態管理部102は、最適解の探索処理の開始時に、自スピンのスピン状態の初期値の設定を受ける。また、スピン状態管理部102は、スピン番号をスピン番号保持部107から取得する。そして、スピン状態管理部102は、スピン状態をスピン番号とともにエネルギー変化量計算部103及び反転スピン候補選択部50へ出力する。
その後、スピン状態管理部102は、通常の1つのスピンの反転又は一括反転のいずれの場合であっても、反転が採択された場合、反転スピンの確定の通知を反転スピンのスピン番号とともに制御信号生成部60から受ける。そして、スピン状態管理部102は、反転スピンが自スピンである場合、反転後のスピン状態を現在の自スピンのスピン状態として、保持するスピン状態を更新する。その後、スピン状態管理部102は、保持するスピン状態を復元用スピン状態保持部112へ出力する。
また、スピン状態管理部102は、投機反転が行われた場合も、反転スピンの確定の通知を反転スピンのスピン番号とともに制御信号生成部60から受ける。そして、スピン状態管理部102は、自スピンが反転スピンの場合、反転後のスピン状態を現在の自スピンのスピン状態として、保持するスピン状態を更新する。この場合、スピン状態管理部102は、復元用スピン状態保持部112へのスピン状態の出力は行わない。
また、スピン状態管理部102は、一括反転における投機反転が行われた後に一括反転が不採択とされた場合、一括反転の不採択の通知とともに復元指示を制御信号生成部60から受ける。その場合、スピン状態管理部102は、投機反転の実行前の自スピンのスピン状態を復元用スピン状態保持部112から取得する。その後、スピン状態管理部102は、取得した投機反転の実行前の自スピンのスピン状態を現在の自スピンのスピン状態として、保持するスピン状態を更新して、スピン状態の復元を行う。
復元用スピン状態保持部112は、自スピンの反転前のスピン状態の入力をスピン状態管理部102から受ける。そして、復元用スピン状態保持部112は、自スピンの反転前のスピン状態を保持する。その後、復元用スピン状態保持部112は、スピン状態を復元する際に、保持する反転前のスピン状態をスピン状態管理部102へ出力する。
局所場管理部101は、現在の局所場の情報を保持して、自スピンに対応する局所場を管理する。ここで、自スピンが反転した場合のエネルギー変化量が局所場とスピン状態とを基に数式(2)から算出できるので、エネルギー変化量を各焼鈍部10が算出するために、焼鈍部10毎に局所場管理部101が局所場の情報を保持する。そして、局所場管理部101は、保持する局所場をエネルギー変化量計算部103へ出力する。
より具体的には、局所場管理部101は、最適解の探索処理の開始時に、自スピンに対する局所場の初期値の設定を受ける。他にも、局所場管理部101は、各スピンの初期値の入力を受けて自スピンに対する局所場の初期値を算出してもよい。その後、局所場管理部101は、投機反転や反転スピンが確定した際に、後述するように保持する自スピンに対する局所場の情報を更新する。そして、局所場管理部101は、保持する局所場の情報をエネルギー変化量計算部103へ出力する。
局所場管理部101は、1つのスピンの反転又は一括反転のいずれの場合であっても、反転が採択された場合、反転スピンのスピン番号とともに反転スピンの確定の通知を制御信号生成部60から受ける。次に、局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する。さらに、局所場管理部101は、更新後の現在の局所場の情報を復元用局所場保持部111へ出力する。
また、局所場管理部101は、一括反転における投機反転が行われた場合、反転が確定された投機反転スピンのスピン番号とともに反転スピン確定の通知を制御信号生成部60から受ける。次に、局所場管理部101は、反転が確定された投機反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する。この場合、局所場管理部101は、復元用局所場保持部111への局所場の情報の出力は行わない。
また、局所場管理部101は、複数ビット一括反転における投機反転が行われた後に一括反転が不採択となった場合、一括反転の不採択の通知とともに復元指示を制御信号生成部60から受ける。その場合、局所場管理部101は、投機反転の実行前の局所場の情報を復元用スピン状態保持部112から取得する。その後、局所場管理部101は、投機反転の実行前の局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する。
復元用局所場保持部111は、自スピンの反転前の局所場の情報の入力を局所場管理部101から受ける。そして、復元用局所場保持部111は、自スピンの反転前の局所場の情報を保持する。その後、復元用局所場保持部111は、局所場を復元する際に、保持する自スピンの反転前の局所場の情報を局所場管理部101へ出力する。
エネルギー変化量計算部103は、局所場の情報の入力を局所場管理部101から受ける。また、エネルギー変化量計算部103は、自スピンのスピン状態の入力をスピン状態管理部102から受ける。そして、エネルギー変化量計算部103は、数式(2)を用いて自スピンの反転によるエネルギー変化量を算出する。その後、エネルギー変化量計算部103は、算出した自スピンの反転によるエネルギー変化量を投機反転分エネルギー加算部104及び反転スピン候補選択部50へ出力する。
投機反転分エネルギー加算部104は、自スピンの反転によるエネルギー変化量の入力をエネルギー変化量計算部103から受ける。また、投機反転分エネルギー加算部104は、投機反転が行われた場合、投機反転によるエネルギーの変化量である投機反転分のエネルギー変化量の入力をエネルギー計算部72から受ける。投機反転が行われていない場合は、投機反転分エネルギー加算部104は、投機反転分のエネルギー変化量として0の入力を受ける。
そして、投機反転分エネルギー加算部104は、自スピンの反転によるエネルギー変化量と投機的反転分のエネルギー変化量とを加算してこれまでの合計変化量を算出する。ここで、一括反転の場合、数式(6)で表される反転判定式は、左辺は複数のスピンを反転させた際の合計エネルギーとなる。ただし、各焼鈍部10は、自スピンの反転によるエネルギー変化量を算出する。そこで、エネルギー計算部72から取得したそれまでの投機反転分のエネルギー変化量を自スピンの反転によるエネルギー変化量に加算することで、自スピンを投機反転させた場合のそれまでのエネルギー変化量を算出することが可能となる。
投機反転分エネルギー加算部104は、加算結果であるエネルギー変化量を反転判定式評価部105へ出力する。投機反転が行われている場合、加算結果は、それまでの投機反転に自スピンの反転を加えた場合の投機的反転分のエネルギー変化量となる。また、投機反転が行われていない場合は、投機反転分エネルギー加算部104は、自スピンの反転によるエネルギー変化量に0を加えることになり、加算結果は、自スピンの反転によるエネルギー変化量と一致する。
反転判定式評価部105は、エネルギー変化量の入力を投機反転分エネルギー加算部104から受ける。さらに、反転判定式評価部105は、数式(6)で表される反転判定式の右辺の値の入力を閾値生成部30から受ける。そして、反転判定式評価部105は、エネルギー変化量が数式(6)の右辺を閾値生成部30から取得した値とした反転判定式を満たすか否かを判定する。そして、反転判定式評価部105は、エネルギー変化量が反転判定式を満たすか否かの判定結果を判定部106へ出力する。
一括反転の場合、反転判定式評価部105は、複数のスピンに対する投機反転によるエネルギー変化量の合計を用いて反転判定式の評価を行う。例えば、N個のスピンの投機反転が行われた場合、反転判定式評価部105は、次の式(7)を用いて反転判定式の評価を行う。ここで、ΔEは、i番目の投機反転スピンを反転させた際のエネルギー変化量を表す。
ΔE+ΔE+・・・+ΔEN−1+ΔE<T×log(1/r)・・・(7)
スピン属性保持部108は、自スピンのスピン属性を保持する。スピン属性は、解決する問題の制約条件から決定される値である。スピン属性には、スピン種別及び種別内属性が含まれる。具体的には、スピン属性には、一括反転対象のスピンか否か、いくつの投機反転を行うか、投機反転中の後続のスピンをどのような条件で選択するかなどの情報が含まれる。そして、スピン属性保持部108は、保持する自スピンのスピン属性の情報を判定部106及び反転スピン候補選択部50へ出力する。
判定部106は、エネルギー変化量が反転判定式を満たすか否かの判定結果の入力を反転判定式評価部105から受ける。さらに、判定部106は、制御信号生成部60から読出条件の入力を受ける。ここで、読出条件とは、投機反転が行われたスピンと組となり一括反転の対象になるスピンがどれかを判定するための情報であり、投機反転が行われたスピンのスピン状態、スピン属性及びスピン番号の各情報を含むスピン情報から生成される。投機反転が行われていない場合、読出条件は無条件となる。
投機反転が行われていない場合は読出条件が無条件であるので、判定部106は、エネルギー変化量が反転判定式を満たせば、自スピンが反転候補であることを示す反転候補フラグを生成して反転スピン候補選択部50に出力する。これに対して、エネルギー変化量が反転判定式を満たしていなければ、判定部106は、自スピンが反転候補にはならないことを示す反転候補フラグを生成して反転スピン候補選択部50へ出力する。例えば、反転候補フラグをFとすると、判定部106は、自スピンが反転候補であることを示す場合はFの値を1とし、自スピンが反転候補にならないことを示す場合はFの値を0とする。
一方、投機反転が行われている場合、判定部106は、自スピンのスピン属性の情報をスピン属性保持部108から取得する。そして、判定部106は、自スピンのスピン属性を用いて自スピンが読出条件を満たすか否かを判定する。この読み出し条件を満たすか否かの判定には、反転候補フラグを用いてエネルギー変化量が反転判定式を満たすか否かの判定も含まれる。自スピンが読出条件を満たす場合、判定部106は、自スピンが反転候補であることを示す反転候補フラグを生成して反転スピン候補選択部50に出力する。これに対して、自スピンが読出条件を満たさない場合、自スピンが反転候補にはならないことを示す反転候補フラグを生成して反転スピン候補選択部50へ出力する。さらに、判定部106は、自スピンが一括反転対象のスピンか否かの情報、また、何個のスピンを一括反転するのかといった一括反転制御の情報を反転スピン候補選択部50へ出力する。
図1に戻って説明を続ける。反転スピン候補選択部50は、各焼鈍部10における自スピンのスピン番号とともに、スピン属性、スピン状態、エネルギー変化量及び反転候補フラグの入力をそれぞれの焼鈍部10から受ける。
そして、反転スピン候補選択部50は、乱数生成部40から入力された乱数値にしたがって、各焼鈍部10から取得したスピン番号の中から反転候補スピンを選択する。その後、反転スピン候補選択部50は、選択した反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグを制御信号生成部60へ出力する。また、反転スピン候補選択部50は、反転候補スピンを反転させたことによるエネルギー変化量をエネルギー管理部70へ出力する。
ここで、一括反転を行う場合、反転スピン候補選択部50は、自スピンが一括反転対象のスピンか否かの情報、また、何個のスピンを一括反転するのかといった一括反転制御の情報の入力を判定部106から受ける。そして、反転スピン候補選択部50は、取得した情報も用いて反転スピン候補選択のトーナメントを行う。ここで、読み出し条件が特定のスピンを選択できるように設定され、選択しなくないスピンは反転スピン候補選択部50に入る前の段階でフラグが立たないように設定されるため、反転スピン候補選択部50は、一括反転の対象となるスピンを優先的に選択することができる。
制御信号生成部60は、図1に示すように、反転スピン確定部61、投機反転制御部62、スピン情報保持部63及び読出条件生成部64を有する。制御信号生成部60は、反転候補スピンのスピン番号、スピン属性、スピン状態及び反転候補フラグの入力を反転スピン候補選択部50から受ける。
投機反転制御部62は、反転候補スピンのスピン属性から、反転候補スピンが一括反転の対象となるスピンか否かを判定する。反転候補スピンが一括反転の対象でない場合、投機反転制御部62は、反転採択判定の依頼を反転スピン確定部61へ出力する。
一方、反転候補スピンが一括反転の対象となるスピンの場合、投機反転制御部62は、反転候補スピンが一括反転における採択反転対象スピンか否かを判定する。反転候補スピンが採択反転対象スピンでない場合、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。これに対して、反転候補スピンが採択反転対象スピンの場合、投機反転制御部62は、一括反転の反転採択判定の依頼を反転スピン確定部61へ出力する。
反転スピン確定部61は、反転採択判定の依頼を投機反転制御部62から受けると、反転候補スピンの反転候補フラグを確認して、反転候補スピンの反転を採択するか否かを判定する。反転候補フラグの値が反転対象のスピンが反転候補となることを示す場合、反転スピン確定部61は、反転候補スピンの反転の採択を決定する。そして、反転スピン確定部61は、反転候補スピンを反転スピンとして確定する。その後、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、反転スピンのスピン番号とともに反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、スピン情報及び読出条件のクリアをスピン情報保持部63及び読出条件生成部64に通知する。
これに対して、反転候補フラグの値が反転対象のスピンが反転候補とならないことを示す場合、反転スピン確定部61は、反転候補スピンの不採択を決定する。そして、反転スピン確定部61は、反転候補スピンの不採択をスピン情報保持部63及び読出条件生成部64に通知する。
また、反転スピン確定部61は、投機反転における反転スピンの確定の指示を投機反転制御部62から受けると、反転候補スピンを反転スピンとして確定する。そして、反転スピン確定部61は、投機反転における反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、投機反転スピンのスピン番号とともに反転スピンの確定を各焼鈍部10に通知する。これにより、エネルギー増加量の評価結果に依らずに反転候補スピンが反転されることになり、投機反転が実行される。さらに、反転スピン確定部61は、投機反転スピンのスピン番号、スピン属性及びスピン状態を含むスピン情報をスピン情報保持部63へ出力する。また、反転スピン確定部61は、読出条件の生成を読出条件生成部64に指示する。
また、一括反転における反転採択判定の依頼を投機反転制御部62から受けると、反転スピン確定部61は、反転候補スピンの反転候補フラグを確認して、一括反転を採択するか否かを判定する。反転候補フラグの値が反転対象のスピンが反転候補となることを示す場合、反転スピン確定部61は、反転候補スピンの反転の採択を決定する。そして、反転スピン確定部61は、反転候補スピンを反転スピンとして確定する。その後、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、反転スピンのスピン番号と共に反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、一括反転の採択をスピン情報保持部63及び読出条件生成部64に通知する。
これに対して、反転候補フラグの値が反転対象のスピンが反転候補とならないことを示す場合、反転スピン確定部61は、一括反転の不採択を決定する。そして、反転スピン確定部61は、一括反転の不採択をスピン情報保持部63、読出条件生成部64及びエネルギー管理部70に通知する。さらに、反転スピン確定部61は、一括反転の不採択の通知、並びに、スピン状態及び局所場の復元指示を各焼鈍部10に通知する。この反転スピン確定部61が、「採択判定部」の一例にあたる。
スピン情報保持部63は、投機的に反転されたスピンのスピン番号、スピン属性及びスピン状態を含むスピン情報の入力を反転スピン確定部61から受ける。そして、スピン情報保持部63は、取得した投機的に反転されたスピンのスピン情報を記憶して保存する。スピン情報保持部63は、投機反転が繰り返される毎に、反転されたスピンのスピン情報を順次追加的に順次記憶する。
また、スピン情報保持部63は、反転の採択又は不採択の通知を受信する。そして、スピン情報保持部63は、保持するスピン情報が存在する場合、保持するスピン情報をクリアする。また、スピン情報保持部63は、一括反転の不採択の通知を受けた場合、保持するスピン情報をクリアする。
読出条件生成部64は、投機反転が行われた場合、読出条件の生成の指示を反転スピン確定部61から受ける。この場合、読出条件生成部64は、投機反転が行われた各スピンのスピン情報をスピン情報保持部63から取得する。そして、読出条件生成部64は、すでに投機反転が行われたスピンを含む一括反転の対象となるスピンの中からすでに選択されたスピンを除いたスピンを選択可能とする情報を含む読出条件を、取得したスピン情報を用いて生成する。その後、読出条件生成部64は、生成した読出条件を保持しつつ焼鈍部10の判定部106へ出力する。
読出条件生成部64は、反転の採択又は不採択の通知を受信する。その場合、読出条件生成部64は、保持する読出条件が存在する場合、保持する読出条件をクリアする。また、読出条件生成部64は、一括反転の不採択の通知を受けた場合、保持する読出条件生をクリアする。
エネルギー管理部70は、スピン状態に応じたエネルギーの算出を行う。投機反転分エネルギー計算部71及びエネルギー計算部72を有する。
エネルギー計算部72は、各スピンの初期値を予め有する。この初期値は、例えば、全てのスピン状態が0としても良いし、計算に応じて予め適切な各スピンのスピン状態が設定されても良い。エネルギー計算部72は、各スピンの初期値を数式(1)に用いて初期状態のエネルギーを求めて保持する。また、エネルギー計算部72は、反転候補スピンのスピン番号の入力を反転スピン候補選択部50から受ける。さらに、エネルギー計算部72は、反転スピン候補選択部50から入力された反転スピンのスピン状態を反転させた場合のエネルギー変化量を取得する。
その後、エネルギー計算部72は、1つのスピンの反転において、反転が確定した場合、反転スピンの確定の通知を反転スピン確定部61から受ける。エネルギー計算部72は、自己が保持する各スピンのスピン状態の中で、反転スピン候補選択部50から通知されたスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。その後、エネルギー計算部72は、反転スピンのスピン状態を反転させた状態の各スピンのスピン状態を保持する。さらに、エネルギー計算部72は、反転スピンのスピン状態を反転させた状態の各スピンのスピン状態及び算出したエネルギーを探索結果保持部80へ出力する。さらに、エネルギー計算部72は、投機反転分エネルギーの情報のクリアを投機反転分エネルギー計算部71に指示する。
また、エネルギー計算部72は、一括反転において、採択判定対象の反転が確定した場合、反転スピンの確定の通知を反転スピン確定部61から受ける。次に、エネルギー計算部72は、それまでの投機反転を加えた各スピンのスピン状態を投機反転分エネルギー計算部71から取得する。そして、エネルギー計算部72は、取得した各スピンのスピン状態の中で、反転スピン候補選択部50から通知されたスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。その後、エネルギー計算部72は、一括反転の対象の各スピンのスピン状態を反転させた状態の各スピンのスピン状態を保持する。さらに、エネルギー計算部72は、一括反転の対象の各スピンのスピン状態を反転させた状態の各スピンのスピン状態及び算出したエネルギーを探索結果保持部80へ出力する。さらに、エネルギー計算部72は、投機反転分の情報のクリアを投機反転分エネルギー計算部71に指示する。
投機反転分エネルギー計算部71は、一括反転において、投機反転が実行された場合、投機反転における反転スピンの確定の通知を反転スピン確定部61から受ける。さらに、投機反転分エネルギー計算部71は、反転スピン候補選択部50から入力された投機反転スピンのスピン情報を取得する。さらに、一括反転における最初の投機反転の場合、投機反転分エネルギー計算部71は、各スピンのスピン状態をエネルギー計算部72から取得する。
投機反転分エネルギー計算部71は、反転スピン候補選択部50から通知されたスピン番号を有するスピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン候補選択部50から取得する。最初の投機反転の場合、投機反転分エネルギー計算部71は、取得したエネルギー変化量をそのまま投機反転分エネルギー変化量とする。一方、既に投機反転分エネルギー変化量を算出済みの場合、投機反転分エネルギー計算部71は、保持する投機反転分エネルギー変化量に取得したエネルギー変化量を加算して、加算結果を投機反転分エネルギー変化量とする。その後、投機反転分エネルギー計算部71は、算出した投機反転分エネルギー変化量を各焼鈍部10へ出力する。さらに、投機反転分エネルギー計算部71は、保持する各スピンのスピン状態において、反転スピン確定部61から通知されたスピン番号を有するスピンのスピン状態を反転させた場合の各スピンのスピン状態を記憶する。
その後、一括反転において採択判定対象の反転が確定した場合、投機反転分エネルギー計算部71は、それまでの投機反転を加えた各スピンのスピン状態の情報をエネルギー計算部72へ通知する。その後、投機反転分エネルギー計算部71は、投機反転分の情報のクリアの指示をエネルギー計算部72から受ける。そして、投機反転分エネルギー計算部71は、記憶する投機反転分エネルギー変化量及び投機反転を加えた各スピンのスピン状態の情報をクリアする。
探索結果保持部80は、反転スピンが確定した場合、各スピンのスピン状態及び算出されたエネルギーの情報の入力をエネルギー管理部70から受ける。最小エネルギーを未保持の場合、探索結果保持部80は、取得したエネルギーを最小エネルギーとする。この場合、探索結果保持部80は、最小エネルギーとなる場合の各スピンのスピン情報を保持する。
これに対して、既に最小エネルギーを保持する場合、探索結果保持部80は、取得したエネルギーと保持する最小エネルギーとを比較する。取得したエネルギーが最小エネルギー未満の場合、探索結果保持部80は、取得したエネルギーを最小エネルギーとする。さらに、探索結果保持部80は、取得したエネルギーとなる場合の各スピンのスピン状態を最小エネルギーのスピン状態として保持する。一方、取得したエネルギーが最小エネルギー以上の場合、探索結果保持部80は、保持する最小エネルギーをそのまま保持する。また、探索結果保持部80は、保持する最小エネルギーとなる場合の各スピンのスピン状態をそのまま保持する。この探索結果保持部80が、「探索部」の一例にあたる。
次に、図3を参照して、本実施例に係るイジング演算装置1による最適解の探索処理の流れについて説明する。図3は、実施例1に係るイジング演算装置による最適解の探索処理のフローチャートである。
イジング演算装置1は、図示しない外部端末などを用いた操作者からの入力情報などを基に、各部において初期値の設定を行う(ステップS101)。具体的には、焼鈍部10のスピン状態管理部102は、自スピンのスピン状態の初期値が設定される。また、スピン番号保持部107は、自スピンのスピン番号が設定される。また、局所場管理部101は、自スピンに対する局所場の初期値が設定される。また、スピン属性保持部108は、自スピンのスピン属性が設定される。また、エネルギー計算部72は、各スピンの初期値が入力される。さらに、投機反転分エネルギー計算部71が保持する投機反転分エネルギー変化量及び各スピンのスピン状態、スピン情報保持部63が保持するスピン情報、並びに、読出条件生成部64が保持する読出条件がクリアされる。
次に、焼鈍部10のエネルギー変化量計算部103は、局所場管理部101が保持する局所場の情報を取得する。また、エネルギー変化量計算部103は、反転させた自スピンのスピン状態の入力をスピン状態管理部102から受ける。そして、エネルギー変化量計算部103は、自スピンの反転時のエネルギー変化量を数式(2)を用いて計算する(ステップS102)。その後、エネルギー変化量計算部103は、算出した自スピンの反転時のエネルギー変化量を投機反転分エネルギー加算部104へ出力する。
投機反転分エネルギー加算部104は、自スピンの反転時のエネルギー変化量の入力をエネルギー変化量計算部103から受ける。次に、投機反転分エネルギー加算部104は、投機反転が行われている場合、既に実行された投機反転による投機反転分エネルギー変化量をエネルギー計算部72から取得する。投機反転が行われていない場合、エネルギー管理部70から取得する投機反転分エネルギー変化量は0である。そして、投機反転分エネルギー加算部104は、取得した自スピンの反転時のエネルギー変化量と投機反転分エネルギー変化量とを加算する(ステップS103)。その後、投機反転分エネルギー加算部104は、加算結果のエネルギー変化量を反転判定式評価部105へ出力する。
反転判定式評価部105は、エネルギー変化量の入力を投機反転分エネルギー加算部104から受ける。また、反転判定式評価部105は、閾値となる数式(6)の右辺の値の入力を閾値生成部30から受ける。そして、反転判定式評価部105は、数式(6)の右辺を閾値生成部30から取得した値とした反転判定式を取得したエネルギー変化量が満たすか否かを判定する。その後、反転判定式評価部105は、エネルギー変化量が反転判定式を満たすか否かの判定結果を判定部106へ出力する。判定部106は、エネルギー変化量が反転判定式を満たすか否かの判定結果の入力を反転判定式評価部105から受ける。さらに、判定部106は、制御信号生成部60から読出条件の入力を受ける。また、判定部106は、自スピンのスピン属性の情報をスピン属性保持部108から取得する。そして、判定部106は、自スピンが読出条件を満たす場合、自スピンが反転候補であることを示す反転候補フラグを生成する。これに対して、自スピンが読出条件を満たさない場合、判定部106は、自スピンが反転候補にはならないことを示す反転候補フラグを生成する(ステップS104)。その後、判定部106は、生成した反転候補フラグを反転スピン候補選択部50へ出力する。
反転スピン候補選択部50は、各焼鈍部10における自スピンのスピン番号とともに、スピン属性、スピン状態、エネルギー変化量及び反転候補フラグの入力をそれぞれの焼鈍部10から受ける。そして、反転スピン候補選択部50は、乱数生成部40から入力された乱数値にしたがって、各焼鈍部10から取得したスピン番号の中から反転候補スピンを選択する(ステップS105)。その後、反転スピン候補選択部50は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグを制御信号生成部60へ出力する。
制御信号生成部60は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグの入力を反転スピン候補選択部50から受ける。そして、投機反転制御部62は、反転候補スピンのスピン属性から、反転候補スピンが一括反転の対象となるスピンか否かを判定する(ステップS106)。
反転候補スピンが一括反転の対象となるスピンの場合(ステップS106:肯定)、投機反転制御部62は、反転候補スピンが一括反転における採択反転対象スピンか否かを判定する(ステップS107)。
反転候補スピンが採択反転対象スピンでない場合(ステップS107:否定)、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。反転スピン確定部61は、投機反転における反転スピンの確定の指示を受けて、反転候補スピンを反転スピンとして確定する(ステップS108)。その後、反転スピン確定部109は、投機反転における反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、投機反転スピンのスピン番号とともに反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、投機反転スピンのスピン番号、スピン属性及びスピン状態を含むスピン情報をスピン情報保持部63へ出力する。また、反転スピン確定部61は、読出条件の生成を読出条件生成部64に指示する。
スピン情報保持部63は、投機反転スピンのスピン情報の入力を反転スピン確定部61から受ける。そして、スピン情報保持部63は、投機反転スピンのスピン情報を保存する(ステップS109)。
読出条件生成部64は、読出条件の生成の指示を受けて、投機反転が行われた各スピンのスピン情報をスピン情報保持部63から取得する。そして、読出条件生成部64は、取得したスピン情報を用いて読出条件を生成する(ステップS110)。
エネルギー管理部70の投機反転分エネルギー計算部71は、投機反転における反転スピンの確定の通知を受ける。また、投機反転分エネルギー計算部71は、反転スピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン候補選択部50から取得する。そして、エネルギー管理部70は、エネルギー変化量を既に保持する投機反転分エネルギー変化量に加算したものを投機反転分エネルギー変化量として、保持する投機反転分エネルギー変化量を更新する(ステップS111)。さらに、投機反転分エネルギー計算部71は、保持する各スピンのスピン状態において、反転スピン確定部61から通知されたスピン番号を有するスピンのスピン状態を反転させた場合の各スピンのスピン状態を記憶する。
焼鈍部10は、投機反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン確定部109から受ける。スピン状態管理部102は、自スピンが反転が確定された投機反転スピンである場合、スピン状態を更新する(ステップS112)。
局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する(ステップS113)。その後、最適解の探索処理は、ステップS128へ進む。
これに対して、反転候補スピンが採択反転対象スピンである場合(ステップS107:肯定)、投機反転制御部62は、一括反転の反転採択判定の依頼を反転スピン確定部61へ出力する。一括反転の反転採択判定の依頼を受けて、反転スピン確定部61は、反転候補スピンの反転候補フラグを確認して、一括反転を採択するか否かを判定する(ステップS114)。一括反転を採択する場合(ステップS114:肯定)、最適解の探索処理は、ステップS119へ進む。
これに対して、一括反転が不採択の場合(ステップS114:否定)、一括反転の不採択を、スピン情報保持部63、読出条件生成部64及びエネルギー管理部70に通知する。また、反転スピン確定部61は、一括反転の不採択の通知、並びに、スピン状態及び局所場の復元指示を各焼鈍部10に通知する。スピン情報保持部63は、一括反転の不採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の不採択の通知を受けると保持する読出条件をクリアする(ステップS115)。
また、エネルギー管理部70の投機反転分エネルギー計算部71は、一括反転の不採択の通知を受けると保持する投機反転分エネルギー変化量をクリアする(ステップS116)。
また、各焼鈍部10は、一括反転の不採択の通知、並びに、スピン状態及び局所場の復元指示を反転スピン確定部61から受ける。そして、スピン状態管理部102は、自スピンが一括反転の対象のスピンである場合、復元用スピン状態保持部112からスピン状態を取得して、取得したスピン状態を現在の自スピンのスピン状態として、スピン状態を復元する。また、局所場管理部101は、復元用局所場保持部111から局所場の情報を取得して、取得した局所場の情報を現在の自スピンに対応する局所場の情報として、局所場を復元する(ステップS117)。
一方、反転候補スピンが一括反転の対象とならないスピンの場合(ステップS106:否定)、投機反転制御部62は、反転採択判定の依頼を反転スピン確定部61へ出力する。反転採択判定の依頼を投機反転制御部62から受けると、反転候補スピンの反転候補フラグを確認して、反転候補スピンの反転を採択するか否かを判定する(ステップS118)。反転候補スピンの反転が不採択の場合(ステップS118:否定)、最適解の探索処理は、ステップS128へ進む。
一括反転を採択する場合(ステップS114:肯定)及び反転候補スピンの反転を採択する場合(ステップS118:肯定)、反転スピン確定部61は、反転候補スピンを反転スピンとして確定する(ステップS119)。そして、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、反転スピンのスピン番号と共に反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、反転の採択をスピン情報保持部63及び読出条件生成部64に通知する。
スピン情報保持部63は、一括反転の採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の採択の通知を受けると保持する読出条件をクリアする(ステップS120)。
エネルギー管理部70のエネルギー計算部72は、反転スピンの確定の通知を受けると、それまでの投機反転を加えた各スピンのスピン状態を投機反転分エネルギー計算部71から取得する。そして、エネルギー計算部72は、それまでの投機反転を加えた各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。ここで、投機反転が行われていない場合、投機反転分エネルギー計算部71からスピン情報を受け取らないため、エネルギー計算部72は自己が有する各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させて、数式(1)を用いてエネルギーを算出する。その後、エネルギー計算部72は、各スピンのスピン状態及び保持するエネルギーの情報を更新する(ステップS121)。
次に、エネルギー計算部72は、投機反転分エネルギー変化量のクリアを投機反転分エネルギー計算部71に指示する。投機反転分エネルギー計算部71は、エネルギー計算部72からの指示を受けて、保持する投機反転分エネルギー変化量をクリアする(ステップS122)。
さらに、エネルギー計算部72は、算出したエネルギーの情報及び各スピンのスピン状態を探索結果保持部80へ出力する。探索結果保持部80は、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満か否かを判定する(ステップS123)。エネルギー計算部72から取得したエネルギーが保持する最小エネルギー以上の場合(ステップS123:否定)、最適解の探索処理は、ステップS125へ進む。
これに対して、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満の場合(ステップS123:肯定)、探索結果保持部80は、エネルギー計算部72から取得したエネルギーを最小エネルギーとして、保持する最小エネルギーを更新する。さらに、探索結果保持部80は、エネルギー計算部72から取得した各スピンのスピン状態を、最小エネルギーの場合のスピン状態として保存する(ステップS124)。
焼鈍部10は、反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン確定部109から受ける。スピン状態管理部102は、自スピンが反転が確定された反転スピンである場合、スピン状態を更新する(ステップS125)。
局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する(ステップS126)。
その後、復元用スピン状態保持部112は、スピン状態管理部102が保持するスピン状態を保存する。また、復元用局所場保持部111は、局所場管理部101が保持する局所場の情報を保存する(ステップS127)。
その後、探索結果保持部80は、予め決められた演算回数が終了したか否かを判定する(ステップS128)。予め決められた演算回数が終了していない場合(ステップS128:否定)、最適解の探索処理は、ステップS102へ戻る。これに対して、予め決められた演算回数が終了した場合(ステップS128:肯定)、探索結果保持部80は、その時点で有する最小エネルギーのスピン状態を最適解と決定して最適解の探索処理を終了する。
図4は、イジング演算装置の配置構成図である。本実施例に係るイジング演算装置1は、図4におけるアニーリング回路201にあたる。アニーリング回路201は、アニーリングが実行可能な機能単位である。各アニーリング回路201は、複数の単位回路202及び制御回路203を有する。例えば、1つのアニーリング回路201に、1024個の単位回路202が搭載される。単位回路202は、1つのスピン判定や状態管理を実施する論理及び実装の単位であり、焼鈍部10にあたる。また、制御回路203は、アニーリング回路201内の制御を行う回路であり、制御信号生成部60、エネルギー管理部70及び探索結果保持部80などにあたる。すなわち、単位回路202のそれぞれが担当する自スピンのいずれかが反転候補スピンとして選択され、その反転候補スピンの採択を制御回路203が行い、反転スピンが確定すると、単位回路202への通知が行われる。
また、図5は、単位回路の回路イメージの図である。図5に示す選択回路204が、反転スピン候補選択部50の一例にあたり、各単位回路202から入力された情報を用いて、スピンを選択するためのトーナメントを実行する。制御回路203は、選択回路204で選択されたスピンの情報を基に、スピン状態の反転又は復元やスピン選択条件となる読出条件の作成などを行う。
単位回路202のうちのスピン反転判定側として示した回路は、局所場管理部101による局所場の算出処理から、エネルギー変化量計算部103、投機反転分エネルギー加算部104、反転判定式評価部105及び判定部106による処理までを行う。単位回路202のスピン反転判定側には、制御回路203よりそれまでの投機反転分エネルギー変化量が入力され、次のスピン反転によるエネルギー変化量が加えられて、合計値が算出される。また、条件一致を判定する回路21は、読出条件の入力を受けて条件が一致するか否かの判定を行う。
また、単位回路202のうちのスピン状態及び局所場更新側の回路は、制御回路203から入力された反転スピンの情報を用いて、スピン反転判定回路へ送るデータの生成までを行うための情報を出力するまでの回路である。この場合、データ保持用のRAM(Random Access Memory)210が搭載される。反転スピンの確定時には、save信号が選択回路22に入力される。その場合、選択回路22は1の値をとる経路の値、すなわち出力した局所場の値を選択する。また、選択回路23は0の値を取る経路の値、すなわち現在の局所場の値を選択する。復元時には、restore信号が選択回路23に入力される。選択回路23は1の値をとる経路の値、すなわち、復元用の局所場の値を選択する。また、選択回路22は0の値をとる経路の値、すなわち復元用の局所場の値を選択する。このRAM210が、復元用局所場保持部111及び復元用スピン状態保持部112の一例にあたる。
さらに、図6を参照して、本実施例に係るイジング演算装置1の最適解の探索処理実行時の動作をまとめて説明する。図6は、実施例1に係るイジング演算装置の最適解の探索処理実行時の動作イメージの図である。ここでは、4つのスピンを一括反転させる場合で説明する。ここで、図6における(1)〜(4)は、N(N=1、2、3、4)番目に読み出した投機反転スピンのスピン番号を表す。
一括反転を行う場合、状態211に示すように、一括反転における1番目のスピンが選択されて、1番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。次に、状態212に示すように、2番目のスピンが選択されて、2番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。次に、状態213に示すように、3番目のスピンが選択されて、3番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。その後、4番目のスピンが選択された段階で、一括反転の採択を制御回路203が行う。一括反転が採択された場合、状態214に示すように、4番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られスピン状態及び局所場が更新される。これに対して、一括反転が不採択の場合、状態215に示すように、一括反転の不採択が制御回路203から単位回路202に送られる。そして、各単位回路202において投機反転の実行前の状態にスピン状態及び局所場が復元される。この場合、採択の場合も、不採択の場合も、実行されるサイクルは同じサイクル数となる。すなわち、表216に示すように、一括反転の対象となるスピンの数がN個の場合、サイクル数は、採択時及び不採択時ともにNサイクルとなる。
図7は、イジング演算装置を利用時の処理のフローチャートである。ここでは、イジング演算装置1を利用する利用者をユーザと言う。
ユーザが解きたい解決対象問題51が存在する。ユーザは、コンピュータなどを用いて、解決対象問題をイジングモデルへ問題変換する(ステップS151)。これにより、数式(1)で表される、イジングモデルエネルギー式53が取得される。
また、イジングモデルへの問題変換後に、ユーザは、その問題を解くための制約条件を抽出する(ステップS152)。これにより、スピン属性及び初期スピン状態54が取得される。
次に、イジングモデルエネルギー式53、並びに、スピン属性及び初期スピン状態54を用いて、コンピュータなどにより、局所場及びエネルギーの初期値の計算が行われる(ステップS153)。
さらに、ユーザは、計算を行う際の演算回数といった動作条件52を決定する。そして、以上で取得した、イジングモデルエネルギー式53、スピン属性及び初期スピン状態54、局所場及びエネルギーの初期値、並びに、動作条件52がイジング演算装置1にパラメータとして入力される(ステップS154)。
その後、イジング演算装置1により、演算が実行される(ステップS155)。この処理が、上述したイジング演算装置1による最適解の探索処理である。これにより、演算結果55が得られる。
ユーザは、演算結果55を取得する(ステップS156)。そして、ユーザは、取得した演算結果55の解釈を行う(ステップS157)。これにより、ユーザは、解決対象問題51に対する解決対象問題の解56を得る。
以上に説明したように、本実施例に係るイジング演算装置は、条件を満たす復数のスピンを投機的に反転させ、一連のスピン反転の採択判定をまとめて行う。そして、反転が採択されなかった場合には、復元用に保存した情報を用いて元の値の戻すことができる。これにより、より短時間で最小エネルギーに到達することが可能となり、イジング演算装置の組合せ最適化問題に対する処理性能を向上させることが可能となる。また、本実施例に係るイジング演算装置の場合、復元用のスピン状態及び局所場を保持する記憶装置を配置するためその分の物理量は増えるが、復元のための余計なサイクルは不要となり、処理効率を向上させることができる。
図8は、実施例2に係る焼鈍部の詳細を表すブロック図である。本実施例に係るイジング演算装置1は、一括反転が不採択になった場合に、投機反転スピンの再反転を行うことにより復元することが実施例1と異なる。以下では、投機反転スピンの再反転による復元処理に関して主に説明する。以下の説明では、実施例1と同様の各部の処理については説明を省略する場合がある。
ここで、一括反転を行う場合、反転スピン候補選択部50は、自スピンが一括反転対象のスピンか否かの情報や何個のスピンを一括反転するのかといった一括反転制御の情報の入力を判定部106から受ける。そして、反転スピン候補選択部50は、取得した一括反転制御の情報を用いて反転スピン候補選択のトーナメントを行う。ここで、読み出し条件が特定のスピンを選択できるように設定され、選択しなくないスピンは反転スピン候補選択部50に入る前の段階でフラグが立たないように設定されるため、反転スピン候補選択部50は、一括反転の対象となるスピンを優先的に選択することができる。
投機反転制御部62は、反転候補スピンのスピン番号が反転スピン候補選択部50から入力されると、自己が保持する復元過程フラグを確認して、復元過程か否かを判定する。復元過程の場合、投機反転制御部62は、復元過程における反転スピンの確定を反転スピン確定部61に指示する。
これに対して、復元過程でない場合、投機反転制御部62は、実施例1と同様に、反転候補スピンのスピン属性から、反転候補スピンが一括反転の対象となるスピンか否かを判定し、判定結果に応じて一括反転の処理又は1つのスピンの反転の処理を行う。
また、投機反転制御部62は、一括反転が不採択となった場合、一括反転の不採択の通知を反転スピン確定部61から受ける。そして、投機反転制御部62は、復元過程実効中を表す復元過程フラグを生成する。
また、投機反転制御部62は、全ての投機反転スピンの復元が完了すると、復元過程フラグのクリアの指示を反転スピン確定部61から受ける。そして、投機反転制御部62は、反転スピン確定部61からの指示にしたがい、保持する復元過程フラグをクリアする。
反転スピン確定部61は、一括反転を採択するか否かの判定において一括反転を不採択とした場合、一括反転の不採択をスピン情報保持部63、読出条件生成部64及びエネルギー管理部70に通知する。また、本実施例では、スピン情報保持部63は、スピン情報保持部63が保持するスピン情報から復元において反転スピンとするスピンの条件を生成する。そして、スピン情報保持部63は、一括反転の不採択を投機反転制御部62に通知するとともに、復元において反転スピンとするスピンの条件を焼鈍部10へ出力する。
また、反転スピン確定部61は、復元過程を実行中の場合、復元過程における反転スピンの確定の指示を投機反転制御部62から受ける。そして、反転スピン確定部61は、反転スピン候補選択部50から出力された反転候補スピンを反転スピンとして確定する。その後、反転スピン確定部61は、復元過程における反転スピンの確定をエネルギー管理部70に通知する。
次に、反転スピン確定部61は、反転スピンとして確定した投機反転スピンのスピン情報をスピン情報保持部63に削除させる。そして、反転スピン確定部61は、スピン情報保持部63が保持するスピン情報が残っているか否かにより、全ての復元対象の復元が完了したか否かを判定する。全ての復元対象の復元が完了した場合、反転スピン確定部61は、復元過程フラグのクリアを投機反転制御部62に指示する。
エネルギー管理部70が復元過程における反転スピンの確定の通知を受けた場合、エネルギー計算部72は、保持するエネルギーの情報を維持する。その他の場合は、エネルギー管理部70は、実施例1と同様に動作する。
焼鈍部10は、復元過程の場合、復元する投機反転スピンのスピン番号とともに反転スピンの確定の通知を受けて、通常の最適解の探索処理と同様にスピン状態及び局所場の更新を行う。具体的には、焼鈍部10は、反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン確定部109から受ける。そして、スピン状態管理部102は、自スピンが反転が確定された反転スピンである場合、スピン状態を更新する。また、局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する。これにより、投機反転スピンのうちの1つのスピンが反転されて復元が行われる。
さらに、焼鈍部10は、復元において反転スピンとするスピンの条件の入力を制御信号生成部60から受ける。そして、焼鈍部10の判定部106は、一括反転時と同様に、復元において反転スピンとするスピンの条件を用いて判定を行う。そして、判定部106は、判定結果とともに、自スピンが復元するスピンであるかの情報などの復元制御に用いる情報を反転スピン候補選択部50へ出力する。
反転スピン候補選択部50は、復元制御に用いる情報も反転候補スピンを選択するトーナメントに参加させて、スピンを選択する。ここで、読み出し条件が特定のスピンを選択できるように設定され、選択しなくないスピンは反転スピン候補選択部50に入る前の段階でフラグが立たないように設定されるため、反転スピン候補選択部50は、一括反転の対象となるスピンを優先的に選択することができる。
次に、図9を参照して、本実施例に係るイジング演算装置1による最適解の探索処理の流れについて説明する。図9は、実施例2に係るイジング演算装置による最適解の探索処理のフローチャートである。
イジング演算装置1は、図示しない外部端末などを用いた操作者からの入力情報などを基に、各部において初期値の設定を行う(ステップS201)。
次に、焼鈍部10のエネルギー変化量計算部103は、局所場管理部101が保持する局所場の情報を取得する。また、エネルギー変化量計算部103は、反転させた自スピンのスピン状態の入力をスピン状態管理部102から受ける。そして、エネルギー変化量計算部103は、自スピンの反転時のエネルギー変化量を数式(2)を用いて計算する(ステップS202)。その後、エネルギー変化量計算部103は、算出した自スピンの反転時のエネルギー変化量を投機反転分エネルギー加算部104へ出力する。
投機反転分エネルギー加算部104は、自スピンの反転時のエネルギー変化量の入力をエネルギー変化量計算部103から受ける。次に、投機反転分エネルギー加算部104は、投機反転が行われている場合、既に実行された投機反転による投機反転分エネルギー変化量をエネルギー計算部72から取得する。投機反転が行われていない場合、エネルギー管理部70から取得する投機反転分エネルギー変化量は0である。そして、投機反転分エネルギー加算部104は、取得した自スピンの反転時のエネルギー変化量と投機反転分エネルギー変化量とを加算する(ステップS203)。その後、投機反転分エネルギー加算部104は、加算結果のエネルギー変化量を反転判定式評価部105へ出力する。
反転判定式評価部105は、エネルギー変化量の入力を投機反転分エネルギー加算部104から受ける。また、反転判定式評価部105は、閾値となる数式(6)の右辺の値の入力を閾値生成部30から受ける。そして、そして、反転判定式評価部105は、数式(6)の右辺を閾値生成部30から取得した値とした反転判定式を取得したエネルギー変化量が満たすか否かを判定する。そして、反転判定式評価部105は、エネルギー変化量が反転判定式を満たすか否かの判定結果を判定部106へ出力する。判定部106は、エネルギー変化量が反転判定式を満たすか否かの判定結果の入力を反転判定式評価部105から受ける。さらに、判定部106は、制御信号生成部60から読出条件の入力を受ける。また、判定部106は、自スピンのスピン属性の情報をスピン属性保持部108から取得する。そして、判定部106は、自スピンが読出条件を満たす場合、自スピンが反転候補であることを示す反転候補フラグを生成する。これに対して、自スピンが読出条件を満たさない場合、判定部106は、自スピンが反転候補にはならないことを示す反転候補フラグを生成する(ステップS204)。その後、判定部106は、生成した反転候補フラグを反転スピン候補選択部50へ出力する。
反転スピン候補選択部50は、各焼鈍部10における自スピンのスピン番号とともに、スピン属性、スピン状態、エネルギー変化量及び反転候補フラグの入力をそれぞれの焼鈍部10から受ける。そして、反転スピン候補選択部50は、乱数生成部40から入力された乱数値にしたがって、各焼鈍部10から取得したスピン番号の中から反転候補スピンを選択する(ステップS205)。その後、反転スピン候補選択部50は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグを制御信号生成部60へ出力する。
制御信号生成部60は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグの入力を反転スピン候補選択部50から受ける。次に、投機反転制御部62は、自己が保持する復元過程フラグを確認して、復元過程か否かを判定する(ステップS206)。復元過程でない場合(ステップS206:否定)、投機反転制御部62は、反転候補スピンのスピン属性から、反転候補スピンが一括反転の対象となるスピンか否かを判定する(ステップS207)。
反転候補スピンが一括反転の対象となるスピンの場合(ステップS207:肯定)、投機反転制御部62は、反転候補スピンが一括反転における採択反転対象スピンか否かを判定する(ステップS208)。
反転候補スピンが採択反転対象スピンでない場合(ステップS208:否定)、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。反転スピン確定部61は、投機反転における反転スピンの確定の指示を受けて、反転候補スピンを反転スピンとして確定する(ステップS209)。その後、反転スピン確定部109は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、投機反転スピンのスピン番号とともに反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、投機反転スピンのスピン番号、スピン属性及びスピン状態を含むスピン情報をスピン情報保持部63へ出力する。また、反転スピン確定部61は、読出条件の生成を読出条件生成部64に指示する。
スピン情報保持部63は、投機反転スピンのスピン情報の入力を反転スピン確定部61から受ける。そして、スピン情報保持部63は、投機反転スピンのスピン情報を保存する(ステップS210)。
読出条件生成部64は、読出条件の生成の指示を受けて、投機反転が行われた各スピンのスピン情報をスピン情報保持部63から取得する。そして、読出条件生成部64は、取得したスピン情報を用いて読出条件を生成する(ステップS211)。
エネルギー管理部70の投機反転分エネルギー計算部71は、投機反転における反転スピンの確定の通知を受けて、反転スピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン候補選択部50から取得する。そして、エネルギー管理部70は、エネルギー変化量を既に保持する投機反転分エネルギー変化量に加算したものを投機反転分エネルギー変化量として、保持する投機反転分エネルギー変化量を更新する(ステップS212)。さらに、投機反転分エネルギー計算部71は、保持する各スピンのスピン状態において、反転スピン確定部61から通知されたスピン番号を有するスピンのスピン状態を反転させた場合の各スピンのスピン状態を記憶する。その後、最適解探索処理は、ステップS221へ進む。
これに対して、反転候補スピンが採択反転対象スピンである場合(ステップS208:肯定)、投機反転制御部62は、一括反転の反転採択判定の依頼を反転スピン確定部61へ出力する。一括反転の反転採択判定の依頼を受けて、反転スピン確定部61は、反転候補スピンの反転候補フラグを確認して、一括反転を採択するか否かを判定する(ステップS213)。一括反転を採択する場合(ステップS213:肯定)、最適解の探索処理は、ステップS218へ進む。
これに対して、一括反転が不採択の場合(ステップS213:否定)、反転スピン確定部61は、スピン情報保持部63が保持するスピン情報を確認して、投機反転スピンを特定する(ステップS214)。
次に、反転スピン確定部61は、一括反転の不採択を、スピン情報保持部63、読出条件生成部64及びエネルギー計算部72に通知する。また、スピン情報保持部63は、一括反転の不採択の通知とともに特定した投機反転スピンを選択するための条件を投機反転制御部62に通知する。投機反転制御部62は、一括反転の不採択の通知を受けて、復元過程実効中を表す復元過程フラグを生成する(ステップS215)。
スピン情報保持部63は、一括反転の不採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の不採択の通知を受けると保持する読出条件をクリアする(ステップS216)。その後、最適解の探索処理はステップS221へ進む。
一方、反転候補スピンが一括反転の対象とならないスピンの場合(ステップS207:否定)、投機反転制御部62は、反転採択判定の依頼を反転スピン確定部61へ出力する。反転スピン確定部61は、反転採択判定の依頼を投機反転制御部62から受けると、反転候補スピンの反転候補フラグを確認して、反転候補スピンの反転を採択するか否かを判定する(ステップS217)。反転候補スピンの反転が不採択の場合(ステップS217:否定)、最適解の探索処理は、ステップS229へ進む。
一括反転を採択する場合(ステップS213:肯定)及び反転候補スピンの反転を採択する場合(ステップS217:肯定)、反転スピン確定部61は、反転候補スピンを反転スピンとして確定する(ステップS218)。そして、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、反転スピンのスピン番号と共に反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、反転の採択をスピン情報保持部63及び読出条件生成部64に通知する。
スピン情報保持部63は、一括反転の採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の採択の通知を受けると保持する読出条件をクリアする(ステップS219)。
エネルギー管理部70のエネルギー計算部72は、反転スピンの確定の通知を受けると、それまでの投機反転を加えた各スピンのスピン状態を投機反転分エネルギー計算部71から取得する。そして、エネルギー計算部72は、それまでの投機反転を加えた各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。ここで、投機反転が行われていない場合、投機反転分エネルギー計算部71からスピン情報を受け取らないため、エネルギー計算部72は自己が有する各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。その後、エネルギー計算部72は、各スピンのスピン状態及び保持するエネルギーの情報を更新する(ステップS220)。エネルギー計算部72は、算出したエネルギーの情報及び各スピンのスピン状態を探索結果保持部80へ出力する。
また、エネルギー計算部72は、投機反転分エネルギー変化量のクリアを投機反転分エネルギー計算部71に指示する。投機反転分エネルギー計算部71は、エネルギー計算部72からの指示を受けて、保持する投機反転分エネルギー変化量をクリアする(ステップS221)。
探索結果保持部80は、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満か否かを判定する(ステップS222)。エネルギー計算部72から取得したエネルギーが保持する最小エネルギー以上の場合(ステップS222:否定)、最適解の探索処理は、ステップS227へ進む。
これに対して、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満の場合(ステップS222:肯定)、探索結果保持部80は、エネルギー計算部72から取得したエネルギーを最小エネルギーとして、保持する最小エネルギーを更新する。さらに、探索結果保持部80は、エネルギー計算部72から取得した各スピンのスピン状態を、最小エネルギーの場合のスピン状態として保存する(ステップS223)。
一方、復元過程の場合(ステップS206:肯定)、投機反転制御部62は、復元過程における反転スピンの確定を反転スピン確定部61に指示する。反転スピン確定部61は、復元過程における反転スピンの確定の指示を受けて、スピン情報保持部63が保持するスピン情報から反転スピンとするスピンを選択して反転スピンを確定する(ステップS224)。そして、反転スピン確定部61は、復元過程における反転スピンの確定をエネルギー管理部70に通知する。エネルギー管理部70のエネルギー計算部72は、復元過程における反転スピンの確定の通知を受けた場合、保持するエネルギーの情報を維持する。
次に、反転スピン確定部61は、反転スピンとして確定した投機反転スピンのスピン情報をスピン情報保持部63に削除させる。そして、反転スピン確定部61は、スピン情報保持部63が保持するスピン情報が残っているか否かにより、全ての復元対象の復元が完了したか否かを判定する(ステップS225)。復元対象が未だ残っている場合(ステップS225:否定)、最適解の探索処理はステップS227へ進む。
これに対して、全ての復元対象の復元が完了した場合(ステップS225:肯定)、反転スピン確定部61は、復元過程フラグのクリアを投機反転制御部62に指示する。投機反転制御部62は、反転スピン確定部61からの指示を受けて、保持する復元過程フラグをクリアする(ステップS226)。その後、最適解の探索処理はステップS227へ進む。
焼鈍部10は、反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン確定部109から受ける。スピン状態管理部102は、自スピンが反転が確定された反転スピンである場合、スピン状態を更新する(ステップS227)。
局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する(ステップS228)。
その後、探索結果保持部80は、予め決められた演算回数が終了したか否かを判定する(ステップS229)。予め決められた演算回数が終了していない場合(ステップS229:否定)、最適解の探索処理は、ステップS202へ戻る。これに対して、予め決められた演算回数が終了した場合(ステップS229:肯定)、探索結果保持部80は、その時点で有する最小エネルギーのスピン状態を最適解と決定して最適解の探索処理を終了する。
さらに、図10を参照して、本実施例に係るイジング演算装置1の最適解の探索処理実行時の動作をまとめて説明する。図10は、実施例2に係るイジング演算装置の最適解の探索処理実行時の動作イメージの図である。ここでは、4つのスピンを一括反転させる場合で説明する。図10における(1)〜(4)は、N(N=1、2、3、4)番目に読み出した投機反転スピンのスピン番号を表す。
一括反転を行う場合、状態221に示すように、一括反転における1番目のスピンが選択されて、1番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。次に、状態222に示すように、2番目のスピンが選択されて、2番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。次に、状態223に示すように、3番目のスピンが選択されて、3番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られる。その後、4番目のスピンが選択された段階で、一括反転の採択を制御回路203が行う。一括反転が採択された場合、状態224に示すように、4番目のスピンに対する反転スピンの確定が制御回路203から単位回路202に送られスピン状態及び局所場が更新される。
これに対して、一括反転が不採択の場合、状態225に示すように、3番目のスピンの反転スピンとしの確定が制御回路203から単位回路202に送られ、3番目のスピンが反転されて復元される。次に、状態226に示すように、2番目のスピンの反転スピンとしの確定が制御回路203から単位回路202に送られ、2番目のスピンが反転されて復元される。次に、状態227に示すように、1番目のスピンの反転スピンとしの確定が制御回路203から単位回路202に送られ、1番目のスピンが反転されて復元される。これにより、各単位回路202において投機反転の実行前の状態にスピン状態及び局所場が復元される。
この場合、採択の場合よりも、不採択の場合の方が実行されるサイクルが2サイクル多くなる。すなわち、表228に示すように、一括反転の対象となるスピンの数がN個の場合、サイクル数は、採択時はNサイクルであるのに対して、不採択時は2(N−1)サイクルとなる。
以上に説明したように、本実施例に係るイジング演算装置は、条件を満たす復数のスピンを投機的に反転させ、一連のスピン反転の採択判定をまとめて行う。そして、反転が採択されなかった場合には、投機反転スピンを順番に再度反転させていくことで元の値の戻すことができる。これにより、イジング演算装置の組合せ最適化問題に対する処理性能を向上させることが可能となる。また、本実施例に係るイジング演算装置の場合、復元のためのサイクルが増えるが、復元用の情報を格納する記憶装置を新たに設けなくてもよく、物理量を抑えることができる。
次に、実施例3について説明する。本実施例に係るイジング演算装置1は、各スピンのそれぞれを表すビットを割り当てた場合に、決められた所定数のビットのスピンにおいてnビットが1である制約条件を有する問題を解く。以下では、この制約条件を、「n−hot制約」と呼ぶ。n−hot制約を有する問題としては、四色問題などがある。以下では、スピンのことをそのスピンに割り当てられたビットを指して「ビット」と呼ぶ場合がある。
ここで、n−hot制約を有する問題の最適解を探索する場合は、以下の条件を満たすことでn−hot制約を守ることができる。第1の条件は、n−hot制約に従うスピン状態が1のスピンを反転させる場合、同じn−hot制約に従うスピンの集合の中でスピン状態が0のスピンを一括反転させるという条件である。また、第2の条件は、n−hot制約に従うスピン状態が0のスピンを反転させる場合、同じn−hot制約に従うスピンの集合の中でスピン状態が1のスピンを一括反転させるという条件である。そのため、n−hot制約を有する問題の場合、2つのスピンを一括反転させる探索が効果的であると考えられる。そこで、以下では、2つのスピンを一括反転させる場合で説明する。以下では、同じn−hot制約に従うスピンの集合を、n−hot制約グループと呼ぶ。
また、本実施例では、復元方法として、実施例2で説明した投機反転スピンを順次復元する方法を採用する。ただし、2つのスピンの一括反転であるので、一括反転が不採択となった際に、1つの投機反転スピンを戻すことで、復元が完了するので、復元過程は発生しない。
図11は、実施例3に係る焼鈍部の詳細を表すブロック図である。本実施例に係るスピン属性保持部108は、スピン属性として、n−hot対象情報181、グループ番号182及びグループ内識別子183を有する。
n−hot対象情報181は、n−hot制約にしたがうビットか否かを判定するためのフラグである。例えば、n−hot対象情報181をTiと表し、Ti=1の場合にそのビットがn−hot制約に従うことを表し、Ti=0の場合にそのビットがn−hot制約に従わないことを表す。また、グループ番号182は、そのビットがn−hot制約にしたがう場合に、そのビットが属するn−hot制約グループのグループ番号を表す。以下では、グループ番号をGiと表す場合がある。また、グループ内識別子183は、n−hot制約グループ内でスピンを区別するための識別子である。以下では、グループ内識別子183をNiと表す場合がある。
投機反転制御部62は、反転スピン候補選択部50から入力された反転候補スピンがTi=1を満たす場合、その反転候補スピンがn−hot制約にしたがう一括反転の対象であると判定する。そして、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。
反転スピン確定部61は、投機反転における反転スピンの確定の指示を投機反転制御部62から受けて、反転候補フラグの値に係わらず、反転候補スピンの反転を確定して、投機反転を実行する。
また、反転スピン確定部61は、選択候補スピンが採択判定対象の場合、一括反転の採択判定の指示を投機反転制御部62から受ける。そして、反転スピン確定部61は、反転候補フラグを確認して一括反転の採択判定を行う。一括反転を採択する場合、反転スピン確定部61は、選択候補スピンを反転スピンとして確定する。そして、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70及び各焼鈍部10へ出力する。
これに対して、一括反転を採択しない場合、反転スピン確定部61は、投機反転スピンをスピン情報保持部63が保持するスピン情報から特定して、投機反転スピンを選択する条件を生成し焼鈍部10へ出力する。さらに、反転スピン確定部61は、スピン情報及び読出条件のクリアをスピン情報保持部63及び読出条件生成部64へ出力する。その後、反転スピン確定部61は、復元における反転スピンの確定の指示を投機反転制御部62から受けて、反転スピンの確定をエネルギー管理部70及び焼鈍部10へ出力する。反転スピン確定部61による一括反転の不採択時の上述した処理により、復元が完了する。
読出条件生成部64は、後続ビットの読出条件として、Tj=1、Gj=Gi、Nj≠Ni、x≠x及び判定判定式を満たすという読出条件を生成する。ここで、Gi、Ni、xは、それぞれ、1ビット目に選択されたスピンのグループ番号182、グループ内識別子183、スピン状態を表す。また、Tj、Gj、Nj、xは、2ビット目に選択されるスピンのスピン属性の値を表す。
Tj=1により、2番目のビットとしてn−hot制約に従うビットが選ばれる。また、Gj=Gi及びx≠xにより、2番目のビットとしてn−hot制約グループが1番目のビットと同一で且つスピン状態が異なるビットが選ばれる。さらに、Nj≠Niにより、投機反転した1番目のビットと同じビットが2番目のビットとして再度選択されることが排除される。
そして、読出条件生成部64は、Tj=1、Gj=Gi、Nj≠Ni、x≠x及び判定判定式を満たすという読出条件を焼鈍部10へ出力する。
焼鈍部10には、初期設定としてn−hot制約を満たす状態が入力される。図12は、実施例3に係るイジング演算装置による初期値の設定指示の一例を示す図である。図12に示すように、本実施例に係るイジング演算装置1では、1−hot制約を満たすスピン属性、並びに、局所場及びスピン状態の初期値が設定される。
次に、図13を参照して、本実施例に係るイジング演算装置1による最適解の探索処理の流れについて説明する。図13は、実施例3に係るイジング演算装置によるn−hot制約を有する問題の最適解の探索処理のフローチャートである。
イジング演算装置1は、図示しない外部端末などを用いた操作者からの入力情報などを基に、各部において初期値の設定を行う(ステップS301)。
次に、焼鈍部10のエネルギー変化量計算部103は、局所場管理部101が保持する局所場の情報を取得する。また、エネルギー変化量計算部103は、反転させた自スピンのスピン状態の入力をスピン状態管理部102から受ける。そして、エネルギー変化量計算部103は、自スピンの反転時のエネルギー変化量を数式(2)を用いて計算する(ステップS302)。その後、エネルギー変化量計算部103は、算出した自スピンの反転時のエネルギー変化量を投機反転分エネルギー加算部104へ出力する。
投機反転分エネルギー加算部104は、自スピンの反転時のエネルギー変化量の入力をエネルギー変化量計算部103から受ける。次に、投機反転分エネルギー加算部104は、投機反転が行われている場合、既に実行された投機反転による投機反転分エネルギー変化量をエネルギー計算部72から取得する。投機反転が行われていない場合、エネルギー管理部70から取得する投機反転分エネルギー変化量は0である。そして、投機反転分エネルギー加算部104は、取得した自スピンの反転時のエネルギー変化量と投機反転分エネルギー変化量とを加算する(ステップS303)。その後、投機反転分エネルギー加算部104は、加算結果のエネルギー変化量を反転判定式評価部105へ出力する。
反転判定式評価部105は、エネルギー変化量の入力を投機反転分エネルギー加算部104から受ける。また、反転判定式評価部105は、閾値となる数式(6)の右辺の値の入力を閾値生成部30から受ける。そして、反転判定式評価部105は、数式(6)の右辺を閾値生成部30から取得した値とした反転判定式を取得したエネルギー変化量が満たすか否かを判定する。その後、反転判定式評価部105は、エネルギー変化量が反転判定式を満たすか否かの判定結果を判定部106へ出力する。判定部106は、エネルギー変化量が反転判定式を満たすか否かの判定結果の入力を反転判定式評価部105から受ける。さらに、判定部106は、制御信号生成部60から読出条件の入力を受ける。また、判定部106は、自スピンのスピン属性の情報をスピン属性保持部108から取得する。そして、判定部106は、自スピンが読出条件を満たす場合、自スピンが反転候補であることを示す反転候補フラグを生成する。これに対して、自スピンが読出条件を満たさない場合、判定部106は、自スピンが反転候補にはならないことを示す反転候補フラグを生成する(ステップS304)。その後、判定部106は、生成した反転候補フラグを反転スピン候補選択部50へ出力する。
反転スピン候補選択部50は、各焼鈍部10における自スピンのスピン番号とともに、スピン属性、スピン状態、エネルギー変化量及び反転候補フラグの入力をそれぞれの焼鈍部10から受ける。そして、反転スピン候補選択部50は、乱数生成部40から入力された乱数値にしたがって、各焼鈍部10から取得したスピン番号の中から反転候補スピンを選択する(ステップS305)。その後、反転スピン候補選択部50は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグを制御信号生成部60へ出力する。
制御信号生成部60は、反転候補スピンのスピン番号とともに、スピン属性、スピン状態及び反転候補フラグの入力を反転スピン候補選択部50から受ける。次に、投機反転制御部62は、反転候補スピンのスピン属性に含まれるn−hot対象情報181を確認して、T=1か否かを判定する(ステップS306)。
T=1の場合(ステップS306:肯定)、反転候補スピンが一括反転の対象となるスピンであるので、投機反転制御部62は、反転候補スピンが一括反転における採択反転対象スピンか否かを判定する(ステップS307)。
反転候補スピンが採択反転対象スピンでない場合(ステップS307:否定)、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。反転スピン確定部61は、投機反転における反転スピンの確定の指示を受けて、反転候補スピンを反転スピンとして確定する(ステップS308)。その後、反転スピン確定部109は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、投機反転スピンのスピン番号とともに反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、投機反転スピンのスピン番号、スピン属性及びスピン状態を含むスピン情報をスピン情報保持部63へ出力する。また、反転スピン確定部61は、読出条件の生成を読出条件生成部64に指示する。
スピン情報保持部63は、投機反転スピンのスピン情報の入力を反転スピン確定部61から受ける。そして、スピン情報保持部63は、投機反転スピンのスピン情報を保存する(ステップS309)。
読出条件生成部64は、読出条件の生成の指示を受けて、投機反転が行われた各スピンのスピン情報をスピン情報保持部63から取得する。そして、読出条件生成部64は、取得したスピン情報を用いて読出条件を生成する(ステップS310)。
エネルギー管理部70の投機反転分エネルギー計算部71は、投機反転における反転スピンの確定の通知を受けて、反転スピンのスピン状態を反転させた場合のエネルギー変化量を反転スピン候補選択部50から取得する。そして、エネルギー管理部70は、エネルギー変化量を既に保持する投機反転分エネルギー変化量に加算したものを投機反転分エネルギー変化量として、保持する投機反転分エネルギー変化量を更新する(ステップS311)。さらに、投機反転分エネルギー計算部71は、保持する各スピンのスピン状態において、反転スピン確定部61から通知されたスピン番号を有するスピンのスピン状態を反転させた場合の各スピンのスピン状態を記憶する。その後、最適解探索処理は、ステップS322へ進む。
これに対して、反転候補スピンが採択反転対象スピンである場合(ステップS307:肯定)、投機反転制御部62は、一括反転の反転採択判定の依頼を反転スピン確定部61へ出力する。一括反転の反転採択判定の依頼を受けて、反転スピン確定部61は、反転候補スピンの反転候補フラグを確認して、一括反転を採択するか否かを判定する(ステップS312)。一括反転を採択する場合(ステップS312:肯定)、最適解の探索処理は、ステップS316へ進む。
これに対して、一括反転が不採択の場合(ステップS312:否定)、反転スピン確定部61は、スピン情報保持部63が保持するスピン情報を確認して、投機反転スピンを特定する(ステップS313)。次に、反転スピン確定部61は、一括反転の不採択を、スピン情報保持部63、読出条件生成部64及びエネルギー計算部72に通知する。また、スピン情報保持部63は、一括反転の不採択の通知とともに特定した投機反転スピンを選択するための条件を投機反転制御部62に通知する。
スピン情報保持部63は、一括反転の不採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の不採択の通知を受けると保持する読出条件をクリアする(ステップS314)。その後、最適解の探索処理はステップS320へ進む。
一方、反転候補スピンが一括反転の対象とならないスピンの場合(ステップS306:否定)、投機反転制御部62は、反転採択判定の依頼を反転スピン確定部61へ出力する。反転採択判定の依頼を投機反転制御部62から受けると、反転スピン確定部61は、反転候補スピンの反転候補フラグを確認して、反転候補スピンの反転を採択するか否かを判定する(ステップS315)。反転候補スピンの反転が不採択の場合(ステップS315:否定)、最適解の探索処理は、ステップS324へ進む。
一括反転を採択する場合(ステップS315:肯定)及び反転候補スピンの反転を採択する場合(ステップS312:肯定)、反転スピン確定部61は、反転候補スピンを反転スピンとして確定する(ステップS316)。そして、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70に通知する。また、反転スピン確定部61は、反転スピンのスピン番号と共に反転スピンの確定を各焼鈍部10に通知する。さらに、反転スピン確定部61は、反転の採択をスピン情報保持部63及び読出条件生成部64に通知する。
スピン情報保持部63は、一括反転の採択の通知を受けると保持するスピン情報をクリアする。また、読出条件生成部64は、一括反転の採択の通知を受けると保持する読出条件をクリアする(ステップS317)。
エネルギー管理部70のエネルギー計算部72は、反転スピンの確定の通知を受けると、それまでの投機反転を加えた各スピンのスピン状態を投機反転分エネルギー計算部71から取得する。そして、エネルギー計算部72は、それまでの投機反転を加えた各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。ここで、投機反転が行われていない場合、エネルギー計算部72は、投機反転分エネルギー計算部71からスピン情報を受け取らない。その場合、エネルギー計算部72は、自己が有する各スピンのスピン状態において、反転スピン候補選択部50から取得したスピン番号を有するスピンのスピン状態を反転させる。また、エネルギー計算部72は、自己が保持する現在のエネルギーに反転スピン候補選択部50から入力されたエネルギー変化量を加算して反転スピンのスピン状態を反転させた場合のエネルギーを算出する。その後、エネルギー計算部72は、各スピンのスピン状態及び保持するエネルギーの情報を更新する(ステップS318)。エネルギー計算部72は、算出したエネルギーの情報及び各スピンのスピン状態を探索結果保持部80へ出力する。
また、エネルギー計算部72は、投機反転分エネルギー変化量のクリアを投機反転分エネルギー計算部71に指示する。投機反転分エネルギー計算部71は、エネルギー計算部72からの指示を受けて、保持する投機反転分エネルギー変化量をクリアする(ステップS319)。
探索結果保持部80は、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満か否かを判定する(ステップS320)。エネルギー計算部72から取得したエネルギーが保持する最小エネルギー以上の場合(ステップS320:否定)、最適解の探索処理は、ステップS322へ進む。
これに対して、エネルギー計算部72から取得したエネルギーが保持する最小エネルギー未満の場合(ステップS320:肯定)、探索結果保持部80は、エネルギー計算部72から取得したエネルギーを最小エネルギーとして、保持する最小エネルギーを更新する。さらに、探索結果保持部80は、エネルギー計算部72から取得した各スピンのスピン状態を、最小エネルギーの場合のスピン状態として保存する(ステップS321)。
焼鈍部10は、反転スピンのスピン番号とともに反転スピンの確定の入力を反転スピン確定部109から受ける。スピン状態管理部102は、自スピンが反転が確定された反転スピンである場合、スピン状態を更新する(ステップS322)。
局所場管理部101は、反転が確定した反転スピンのスピン番号を数式(4)に用いて局所場の変化量を算出する。そして、局所場管理部101は、自己が保持する局所場の情報に算出した局所場の変化量を用いて、自スピンに対する局所場を算出する。その後、局所場管理部101は、算出した局所場の情報を現在の局所場の情報として、保持する局所場の情報を更新する(ステップS323)。
その後、探索結果保持部80は、予め決められた演算回数が終了したか否かを判定する(ステップS324)。予め決められた演算回数が終了していない場合(ステップS324:否定)、最適解の探索処理は、ステップS302へ戻る。これに対して、予め決められた演算回数が終了した場合(ステップS324:肯定)、探索結果保持部80は、その時点で有する最小エネルギーのスピン状態を最適解と決定して最適解の探索処理を終了する。
以上に説明したように、本実施例に係るイジング演算装置は、n−hot制約を有する問題を短時間で解くことが可能である。このように、イジング演算装置の組合せ最適化問題に対する処理性能を向上させることが可能となる。
次に、実施例4について説明する。本実施例に係るイジング演算装置1は、各々のスピンが、ある2つのグループに属し、いずれのグループにおいても所属するスピンのうちのスピン状態が1であるスピンの数が1つであるという制約条件を有する問題を解く。以下では、この制約条件を、「2way1hot制約」と呼ぶ。2way1hot制約を有する問題としては、巡回セールスマン問題(TSP:Traveling Salesman Problem)や二次割当問題(QAP:Quadratic Assignment Problem)などがある。ここでも、各スピンにビットが割り当てられた状態を想定して説明する。
図14は、巡回セールスマン問題のスピンへの変形例を示す図である。図14は、グラフ401で表される5都市の巡回セールスマン問題を、グラフ402で示されるように巡回する順番と都市名とを25ビットのスピンで表した例である。各スピンは、順番を示す「順番グループ」と、都市名を示す「都市名グループ」の2つのグループに属する。そして、すべての順番グループ、すべての都市名グループ内で、特定の1ビットの値が1である。グラフ402で示す5×5のマトリックス表記で見た場合、すべての縦の列、および、すべての横の行で、スピン状態が1のスピンは1つだけという制約を満たすことが求められ、サラリーマン巡回問題は、2way1hot制約を有する問題であるといえる。本実施例のイジング演算装置1は、このグラフ402の各ビットを1列に並べて1次元化したグラフ403で表される各スピンの最小エネルギーのスピン状態を求める。
イジング演算装置1は、2way1hot制約を満たす状態を初期状態として設定されてから演算を開始する。縦横に2つずつ並べられた4ビットの場合、2way1hot制約を満たすには、縦と横の両方でスピン状態が1のスピンの数が1つになることが求められる。そこで、2way1hot制約に従うスピンを反転する場合は、イジング演算装置1は、縦横に2つずつ並べられた4ビットを一括して反転するようにすれば、反転した結果も2way1hot制約を満たしつつ、最小エネルギーの探索演算を進めることができる。
図15は、実施例4に係る焼鈍部の詳細を表すブロック図である。本実施例に係るスピン属性保持部108は、スピン属性として、2way1hot対象情報185、第1グループ番号186及び第2グループ番号187を有する。
2way1hot対象情報185は、n−hot制約に従うビットか否かを判定するためのフラグである。例えば、2way1hot対象情報185をTiと表し、Ti=2tの場合にそのビットが2way1hot制約に従うことを表し、Tiがそれ以外の値の場合にそのビットが2way1hot制約に従わないことを表す。また、第1グループ番号186は、そのビットが2way1hot制約に従う場合に、そのビットが属する2つの2way1hot制約グループのうちの一方の第1グループのグループ番号である。また、第2グループ番号187は、そのビットが2way1hot制約に従う場合に、そのビットが属する2つの2way1hot制約グループのうちの他方の第2グループのグループ番号である。以下では、第1グループ番号186をXiと表し、第2グループ番号187をYiと表す場合がある。
投機反転制御部62は、反転スピン候補選択部50から入力された反転候補スピンがTi=2を満たす場合、その反転候補スピンが2way1hot制約にしたがう一括反転の対象であると判定する。そして、投機反転制御部62は、投機反転における反転スピンの確定を反転スピン確定部61に指示する。
反転スピン確定部61は、投機反転における反転スピンの確定の指示を投機反転制御部62から受けて、反転候補フラグの値に係わらず、反転候補スピンの反転を確定して、投機反転を実行する。
また、反転スピン確定部61は、選択候補スピンが採択判定対象の場合、一括反転の採択判定の指示を投機反転制御部62から受ける。そして、反転スピン確定部61は、反転候補フラグを確認して一括反転の採択判定を行う。一括反転を採択する場合、反転スピン確定部61は、選択候補スピンを反転スピンとして確定する。そして、反転スピン確定部61は、反転スピンの確定をエネルギー管理部70及び各焼鈍部10へ出力する。
これに対して、一括反転を採択しない場合、反転スピン確定部61は、投機反転スピンをスピン情報保持部63が保持するスピン情報から特定して、投機反転スピンを選択する条件を生成し焼鈍部10へ出力する。さらに、反転スピン確定部61は、スピン情報及び読出条件のクリアをスピン情報保持部63及び読出条件生成部64へ出力する。その後、反転スピン確定部61は、復元における反転スピンの確定の指示を投機反転制御部62から受けて、反転スピンの確定をエネルギー管理部70及び焼鈍部10へ出力する。反転スピン確定部61による一括反転の不採択時の上述した処理により、復元が完了する。
読出条件生成部64は、図16に示すように一括反転の対象となるビットが選ばれるように、読出条件を設定する。図16は、実施例4に係るイジング演算装置による2way1hot制約に従うスピンの反転方式の一例を示す図である。
ここで、4つのビットをビットi、ビットk、ビットj、ビットlと表す。ビットi〜lは、縦横2つずつ格子状に並ぶ。そして、ビットiは、第1グループXi及び第2グループYiに属する。また、ビットjは、第1グループXi及び第2グループYjに属する。また、ビットkは、第1グループXj及び第2グループYiに属する。また、ビットlは、第1グループXj及び第2グループYjに属する。この場合、2way1hot制約に従うため、ビットi〜lの隣合うビットは異なるスピン状態となる。
そして、図16に示す反転を行うように、読出条件生成部64は、一括反転対象となる最初のビットの後続ビットの読出条件を図17のように設定する。図17は、実施例4に係る読出条件の一例を示す図である。ここで、1〜4ビット目は、それぞれ、一括反転における1〜4番目に選択されるビットを表す。
例えば、図16における反転遷移411のように一括反転を行う1番目のスピンのスピン状態が0であった場合、読出条件生成部64は、図17の読出条件421のように、2〜4ビット目の読出条件を生成する。ここで、i、j、k、lは、それぞれ1ビット目、2ビット目、3ビット目、4ビット目に選択するスピンを表す。また、fは反転式を満たすことを求める条件であり、fの値が1の時に反転式を満たすことが条件となる。4ビット目は一括反転の採択判定を実施する対象となるビットであるため、読出条件生成部64は、4ビット目のスピンの読出条件にf=1を含める。これに対して、2ビット目及び3ビット目は反転判定式を満たさなくても投機反転が行われるため、読出条件生成部64は、2ビット目及び3ビット目のスピンの読出条件にfの条件を含めない。また、Ti=2により、2〜4番目のビットとして2way1hot制約に従うビットが選ばれる。
1ビット目は、一括反転の対象であれば投機反転が行われる。次に、読出条件421における2ビット目の読出条件により、2ビット目は、図16の2ビット目に示すようにビットxjが反転される。次に、読出条件421における3ビット目の読出条件により、3ビット目は、図16の3ビット目に示すようにビットxkが反転される。次に、読出条件421における4ビット目の読出条件により、4ビット目は、図16の4ビット目に示すようにビットxlが反転され、さらに採択判定が行われる。
また、図16における反転遷移412のように一括反転を行う1番目のスピンのスピン状態が1であった場合、読出条件生成部64は、図17の読出条件422のように、2〜4ビット目の読出条件を生成する。
1ビット目は、一括反転の対象であれば投機反転が行われる。次に、読出条件422における2ビット目の読出条件により、2ビット目は、図16の2ビット目に示すようにビットxjが反転される。次に、読出条件422における3ビット目の読出条件により、3ビット目は、図16の3ビット目に示すようにビットxlが反転される。次に、読出条件422における4ビット目の読出条件により、4ビット目は、図16の4ビット目に示すようにビットxkが反転され、さらに採択判定が行われる。
焼鈍部10には、初期設定として2way1hot制約を満たす状態が入力される。図18は、実施例4に係るイジング演算装置による初期値の設定指示の一例を示す図である。図18に示すように、本実施例に係るイジング演算装置1では、2way1hot制約を満たすスピン属性、並びに、局所場及びスピン状態の初期値が設定される。
本実施例に係るイジング演算装置1は、実施例1と同様に、復元用スピン状態及び復元用局所場の情報を保持する。そして、イジング演算装置1は、復元用スピン状態及び復元用局所場の情報を用いてスピン状態及び局所場の復元を行う。そこで、本実施例に係るイジング演算装置1による最適解の探索処理も実施例1と同様に、図3のフローチャートで表される。そして、本実施例に係るイジング演算装置1では、図3のフローチャートにおけるステップS107の処理において、投機反転制御部62は、反転候補スピンが一括反転の対象となるスピンの4ビット目のスピンであれば、反転候補スピンを一括反転の採択判定対象と判定する。
以上に説明したように、本実施例に係るイジング演算装置は、2way1hot制約を有する問題を短時間で解くことが可能である。このように、イジング演算装置の組合せ最適化問題に対する処理性能を向上させることが可能となる。
1 イジング演算装置
10 焼鈍部
20 温度制御部
30 閾値生成部
40 乱数生成部
50 反転スピン候補選択部
60 制御信号生成部
61 反転スピン確定部
62 投機反転制御部
63 スピン情報保持部
64 読出条件生成部
70 エネルギー管理部
71 投機反転分エネルギー計算部
72 エネルギー計算部
101 局所場管理部
102 スピン状態管理部
103 エネルギー変化量計算部
104 投機反転分エネルギー加算部
105 反転判定式評価部
106 判定部
107 スピン番号保持部
108 スピン属性保持部
111 復元用局所場保持部
112 復元用スピン状態保持部

Claims (8)

  1. 温度を示す温度値を制御する温度制御部と、
    エネルギーを表す評価関数に含まれる複数の状態変数のうちのいずれか1つの前記状態変数の状態を変化させ、前記評価関数が表すエネルギーの変化量を算出し、既に算出した合計変化量と取得した前記変化量とを合計して新たに前記合計変化量を求める焼鈍部と、
    変化させる前記状態変数を投機的に選択して前記焼鈍部に前記合計変化量を求めさせる処理を、前記変化させた状態変数が所定数になるまで繰り返させる投機反転制御部と、
    前記温度値及び乱数値を基に算出した閾値と前記焼鈍部により求められた前記合計変化量との相関関係によって、前記焼鈍部により前記所定数の前記状態変数が変化させられた状態遷移を採択するか否かを確率的に決定する採択判定部と、
    前記採択判定部により採択が決定された前記状態遷移を実行した後の遷移後エネルギーを算出するエネルギー計算部と、
    前記エネルギー計算部により算出された前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める探索部と
    を備えたことを特徴とする最適化装置。
  2. 前記投機反転制御部により選択された前記状態変数を基に、次に選択される前記状態変数を決定するための読出条件を生成し、生成した読出条件を満たす前記状態変数の状態の変化を前記焼鈍部に行わせる読出条件生成部をさらに備えたことを特徴とする請求項1に記載の最適化装置。
  3. 前記読出条件生成部は、前記状態変数の特定の範囲であって、前記焼鈍部により状態が変化された前記状態変数を含み、且つ、複数の状態変数のうち1つが1であり他の状態変数が0となる前記特定の範囲に含まれる前記状態変数を選択する前記読出条件を生成することを特徴とする請求項2に記載の最適化装置。
  4. 前記読出条件生成部は、前記状態変数をグループ分けした内の2つのグループであって、前記焼鈍部により状態が変化された前記状態変数を含み、且つ、各グループのそれぞれにおいて前記状態変数のうちの1つが1である前記2つのグループに含まれる前記状態変数を選択させる前記読出条件を生成することを特徴とする請求項2に記載の最適化装置。
  5. 前記焼鈍部、前記状態遷移前の前記状態変数及び局所場を記憶し、前記採択判定部により不採択が決定された場合に、記憶した前記状態変数及び前記局所場を基に、前記状態遷移前の状態を復元することを特徴とする請求項1〜4のいずれか一つに記載の最適化装置。
  6. 前記焼鈍部は、前記採択判定部により不採択が決定された場合に、前記所定数の前記状態変数のそれぞれを元の状態となるように状態を順次変化させていくことで、前記状態遷移前の状態を復元することを特徴とする請求項1〜4のいずれか一つに記載の最適化装置。
  7. 温度を示す温度値を制御し、
    エネルギーを表す評価関数に含まれる複数の状態変数のうち変化させる前記状態変数を投機的に選択し
    選択した前記状態変数の状態を変化させ、前記評価関数が表すエネルギーの変化量を算出し、既に発生した合計変化量と取得した前記変化量とを合計して新たに前記合計変化量を求め、
    前記変化させた状態変数が所定数になるまで前記合計変化量を求める処理を繰り返し、
    前記温度値、前記温度値及び乱数値を基に算出した閾値と前記焼鈍部により求められた前記合計変化量との相関関係によって、前記所定数の前記状態変数が変化させられた状態遷移を採択するか否かを確率的に決定し、
    採択を決定した前記状態遷移を実行した後の遷移後エネルギーを算出し、
    算出した前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める
    ことを特徴とする最適化方法。
  8. 温度を示す温度値を制御し、
    エネルギーを表す評価関数に含まれる複数の状態変数のうち変化させる前記状態変数を投機的に選択し
    選択した前記状態変数の状態を変化させ、前記評価関数が表すエネルギーの変化量を算出し、既に発生した合計変化量と取得した前記変化量とを合計して新たに前記合計変化量を求め、
    前記変化させた状態変数が所定数になるまで前記合計変化量を求める処理を繰り返し、
    前記温度値及び乱数値を基に算出した閾値と前記焼鈍部により求められた前記合計変化量との相関関係によって、前記所定数の前記状態変数が変化させられた状態遷移を採択するか否かを確率的に決定し、
    採択を決定した前記状態遷移を実行した後の遷移後エネルギーを算出し、
    算出した前記遷移後エネルギーが最小エネルギー未満の場合、前記遷移後エネルギーを前記最小エネルギーとしていくことで、前記最小エネルギーを求める
    処理をコンピュータに実行させることを特徴とする最適化プログラム。
JP2020069398A 2020-04-07 2020-04-07 最適化装置、最適化方法及び最適化プログラム Active JP7508842B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020069398A JP7508842B2 (ja) 2020-04-07 2020-04-07 最適化装置、最適化方法及び最適化プログラム
EP21153977.0A EP3975032A1 (en) 2020-04-07 2021-01-28 Optimization apparatus, optimization method, and optimization program
US17/168,398 US20210312108A1 (en) 2020-04-07 2021-02-05 Optimizer, optimization method, and non-transitory computer-readable storage medium
CN202110183745.6A CN113496280A (zh) 2020-04-07 2021-02-10 优化设备、优化方法和优化程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020069398A JP7508842B2 (ja) 2020-04-07 2020-04-07 最適化装置、最適化方法及び最適化プログラム

Publications (2)

Publication Number Publication Date
JP2021165965A true JP2021165965A (ja) 2021-10-14
JP7508842B2 JP7508842B2 (ja) 2024-07-02

Family

ID=74346945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020069398A Active JP7508842B2 (ja) 2020-04-07 2020-04-07 最適化装置、最適化方法及び最適化プログラム

Country Status (4)

Country Link
US (1) US20210312108A1 (ja)
EP (1) EP3975032A1 (ja)
JP (1) JP7508842B2 (ja)
CN (1) CN113496280A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4375831A1 (en) 2022-11-28 2024-05-29 Fujitsu Limited Data processing apparatus, program, and data processing method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7410394B2 (ja) * 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003223322A (ja) * 2002-01-30 2003-08-08 Mitsubishi Electric Corp 組合せ最適化問題の解析装置
JP2006072820A (ja) 2004-09-03 2006-03-16 Mitsubishi Electric Corp 組合せ最適化問題の解析装置
US8296120B2 (en) * 2008-06-20 2012-10-23 Utah State University FPGA simulated annealing accelerator
US8839006B2 (en) * 2010-05-28 2014-09-16 Nvidia Corporation Power consumption reduction systems and methods
US9898024B2 (en) * 2015-06-08 2018-02-20 Honeywell International Inc. Energy consumption modeling
JP6468247B2 (ja) 2016-06-06 2019-02-13 富士通株式会社 イジング装置及びイジング装置の制御方法
JP6468254B2 (ja) * 2016-07-01 2019-02-13 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6465092B2 (ja) 2016-10-14 2019-02-06 富士通株式会社 最適化装置及び最適化装置の制御方法
JP6777016B2 (ja) 2017-06-08 2020-10-28 株式会社デンソー 情報処理装置及び情報処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4375831A1 (en) 2022-11-28 2024-05-29 Fujitsu Limited Data processing apparatus, program, and data processing method

Also Published As

Publication number Publication date
EP3975032A1 (en) 2022-03-30
JP7508842B2 (ja) 2024-07-02
US20210312108A1 (en) 2021-10-07
CN113496280A (zh) 2021-10-12

Similar Documents

Publication Publication Date Title
US11797865B2 (en) System and method for performing fast computations using quantum counting and pseudo-random sets
JP7108185B2 (ja) 最適化装置および最適化装置の制御方法
JP6892599B2 (ja) 最適化装置及び最適化装置の制御方法
JP2019159637A (ja) 最適化装置及び最適化装置の制御方法
JP7319539B2 (ja) 組合せ最適化装置、組合せ最適化方法および組合せ最適化プログラム
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP2021165965A (ja) 最適化装置、最適化方法及び最適化プログラム
US20210150356A1 (en) Optimization device, method for controlling optimization device, and computer-readable recording medium recording program for controlling optimization device
US11537916B2 (en) Optimization apparatus, control method for optimization apparatus, and recording medium
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
JP7181454B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US11199884B2 (en) Optimization device and method of controlling optimization device utilizing a spin bit
JP7283318B2 (ja) 最適化装置、最適化プログラム、及び最適化方法
JP7137074B2 (ja) 最適化計算方法、最適化計算装置及び最適化計算プログラム
JP2021135744A (ja) 情報処理装置、情報処理方法およびプログラム
JP6975685B2 (ja) 学習制御方法及び計算機システム
CN111412795B (zh) 测试点设置方案生成方法及装置
JP2022015503A (ja) 情報処理システム、情報処理方法及びプログラム
JP7528517B2 (ja) 最適化装置、最適化方法及び最適化プログラム
Kanazawa et al. FPGA acceleration to solve maximum clique problems encoded into partial MaxSAT
JP7491032B2 (ja) 最適化装置、最適化方法及び最適化プログラム
CN116579437B (zh) 一种量子线路训练方法、装置、存储介质及电子装置
JP2019071113A (ja) イジング装置及びイジング装置の制御方法
JP6824450B2 (ja) 反復特徴選択方法
US12008479B2 (en) Automatic determination of the run parameters for a software application on an information processing platform by genetic algorithm and enhanced noise management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240109

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: 20240521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240603