以下に、本願の開示する最適化装置、最適化方法及び最適化プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する最適化装置、最適化方法及び最適化プログラムが限定されるものではない。
図1は、実施例1に係るイジング演算装置のブロック図である。イジング演算装置1は、複数の焼鈍部10、温度制御部20、閾値生成部30、乱数生成部40、反転スピン選択部50、制御信号生成部60、エネルギー管理部70及び探索結果保持部80を有する。焼鈍部10は、例えば、1台のイジング演算装置1に1024個搭載される。
イジング演算装置1は、評価関数である数式(1)〜(4)で表されるイジングモデルのエネルギーを最小とする変数xiの組み合わせ(x0,x1,・・・,xn)を探索する最適化装置である。ここで、数式(1)の変数xiは、状態変数であり0又は1の値をとる。以下の説明では、変数xiを「スピン」と呼び、変数xiの値を「スピン状態」と呼び、スピン状態が遷移することを「反転」と呼ぶ。すなわち、スピン状態は、0又は1と表される。そして、反転は、スピン状態が0から1へ遷移すること、又は、1から0へ遷移することにあたる。
ここで、Eはエネルギーであり、ΔEiはxiが反転した場合のエネルギー変化量である。また、hiはxiにおける局所場であり、δhiはxiにおける局所場の変化量である。また、以下では、エネルギー変化量をΔEと表す場合がある。
また、本実施形態のイジング演算装置1は、特定のスピンを反転した場合のエネルギー変化の評価結果に依らず、一時的にスピンの反転を維持しつつ他のスピンの反転を行う。そして、イジング演算装置1は、複数のスピンの反転を重畳させ、その場合のエネルギー変化の評価結果により複数のスピンの反転を一括して採択するか否かを判定する。そこで、以下の説明では、複数のスピンの反転を一括して行うことを、「一括反転」と呼ぶ。また、一括反転を行う場合に、エネルギー変化の評価結果に依らず、一時的にスピンを反転させておくことを、「投機反転」と呼ぶ。また、投機反転により一時的に反転させられたスピンを、「投機反転スピン」と呼ぶ。一括反転を行う場合の、採択の可否を判定するための評価対象となるエネルギー変化を取得する際の投機反転スピンを、「採択判定対象スピン」と呼ぶ。
温度制御部20は、温度パラメータの値を制御する回路である。温度パラメータは、温度を制御する温度値である。以下では、温度パラメータをTと表す場合がある。
温度制御回路20は、例えば、擬似焼き鈍し法にしたがい、十分高い初期温度から開始して探索の反復回数に応じて徐々に温度パラメータの値を低くすることで温度を減少させていく。初期状態から始めて、温度制御部20で温度を下げながら反復を繰り替えし、一定の反復回数の達成や、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。他にも、温度制御回路20は、温度条件の異なるいくつかのレプリカと呼ばれる系を並列に実行し、所定の反復回数毎に系を交換することで、低温条件と高温条件とをわたりながら、最小エネルギー探索を行うレプリカ交換法を用いることも可能である。
乱数生成部40は、乱数値を発生する回路である。乱数生成部40は、発生させた乱数を閾値生成部30及び反転スピン選択部50へ出力する。
閾値生成部30は、各スピンが反転候補となるか否かを判定するための閾値を生成する回路である。閾値生成部30は、温度制御部20から温度パラメータを取得する。また、閾値生成部30は、乱数値を乱数生成部40から取得する。
ここで、本実施例では、次の数式(5)にしたがって、変数の反転が採択される。すなわち、e−ΔE/T又は1のうちの小さい方を採択確率として変数の反転の採択が行われる。
本実施例では、乱数生成部40が発生させた乱数により、確率的に数式(5)にしたがった反転スピンの採択が行われる。この場合、採択確率が数式(5)にしたがうという条件は、一様乱数rを用いて次の数式(6)を満たした場合に反転を採択することと同値である。
この数式(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は、自スピンを識別するためのスピン番号を保持する。例えば、スピン番号は、スピンをxiと表した場合のiにあたる。自スピンがスピンxiである焼鈍部10であれば、スピン番号保持部107は、スピンxiを識別するためのスピン番号として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)を用いて反転判定式の評価を行う。ここで、ΔEiは、i番目の投機反転スピンを反転させた際のエネルギー変化量を表す。
ΔE1+ΔE2+・・・+ΔEN−1+ΔEN<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、xj≠xi及び判定判定式を満たすという読出条件を生成する。ここで、Gi、Ni、xiは、それぞれ、1ビット目に選択されたスピンのグループ番号182、グループ内識別子183、スピン状態を表す。また、Tj、Gj、Nj、xjは、2ビット目に選択されるスピンのスピン属性の値を表す。
Tj=1により、2番目のビットとしてn−hot制約に従うビットが選ばれる。また、Gj=Gi及びxj≠xiにより、2番目のビットとしてn−hot制約グループが1番目のビットと同一で且つスピン状態が異なるビットが選ばれる。さらに、Nj≠Niにより、投機反転した1番目のビットと同じビットが2番目のビットとして再度選択されることが排除される。
そして、読出条件生成部64は、Tj=1、Gj=Gi、Nj≠Ni、xj≠xi及び判定判定式を満たすという読出条件を焼鈍部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制約を有する問題を短時間で解くことが可能である。このように、イジング演算装置の組合せ最適化問題に対する処理性能を向上させることが可能となる。