JP7181454B2 - 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム - Google Patents

最適化装置、最適化装置の制御方法および最適化装置の制御プログラム Download PDF

Info

Publication number
JP7181454B2
JP7181454B2 JP2018212135A JP2018212135A JP7181454B2 JP 7181454 B2 JP7181454 B2 JP 7181454B2 JP 2018212135 A JP2018212135 A JP 2018212135A JP 2018212135 A JP2018212135 A JP 2018212135A JP 7181454 B2 JP7181454 B2 JP 7181454B2
Authority
JP
Japan
Prior art keywords
value
state
energy
change
optimization device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018212135A
Other languages
English (en)
Other versions
JP2020079991A (ja
Inventor
昇 米岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2018212135A priority Critical patent/JP7181454B2/ja
Priority to US16/679,124 priority patent/US11562210B2/en
Publication of JP2020079991A publication Critical patent/JP2020079991A/ja
Application granted granted Critical
Publication of JP7181454B2 publication Critical patent/JP7181454B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Description

本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット(スピンビット)のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば、疑似焼き鈍し法(シミュレーテッド・アニーリング)等の確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、最適解として求める。
例えば、デジタル回路を用いて疑似焼き鈍し法を行うことでエネルギーが最小となる各ビットの値の組合せを計算する最適化装置が提案されている。最適化装置は、一度に1ビットだけ変化するとしてエネルギー変化を計算し、エネルギー変化と温度に対応するノイズ値との比較に応じてビットの変化を許容するか否かを決定する。最適化装置は、ビットの変化による状態遷移が起こらないとき、エネルギー変化にオフセット値を加えてからビットの変化を許容するか否かを決定することで、局所解からの脱出を促進し、計算時間を短縮する。最適化装置は、状態遷移が起こらないときオフセット値を少しずつ増やし、状態遷移が起こった場合に、オフセット値を0にリセットする。
特開2018-63626号公報 特開平10-328155号公報 特開2014-160457号公報
状態遷移が起こらないときにオフセット値を加算する上記の方法では、オフセット値の大きさが問題となる。例えば、オフセット値が小さ過ぎると、局所解から脱出する時間を十分短縮できない。一方、オフセット値が大き過ぎると、各エネルギー変化に対する状態遷移の受入確率に差がなくなる。すると、ある状態から他の状態へ遷移する分岐比が、疑似焼き鈍し法における適切な分岐比からずれてしまい、解の精度が低下する。
1つの側面では、本発明は、演算を高速化する、最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。
1つの態様では、最適化装置が提供される。最適化装置は、状態保持部とエネルギー計算部と温度制御部と保持部と遷移制御部とを有する。状態保持部は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。エネルギー計算部は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の第1の変化値を複数の状態遷移のそれぞれに対して計算する。温度制御部は、温度を示す温度値を制御する。保持部は、エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応するエネルギー値の第2の変化値を、識別情報に対応して複数のエントリにそれぞれ保持する。遷移制御部は、温度値と第1の変化値と乱数値とに基づいて、第1の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された識別情報に基づいて複数のエントリから選択される何れかのエントリが保持する第2の変化値に対して係数情報を乗じたオフセット値を第1の変化値に加えることにより、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。
また、1つの態様では、最適化装置の制御方法が提供される。
また、1つの態様では、最適化装置の制御プログラムが提供される。
1つの側面では、演算を高速化することができる。
第1の実施の形態の最適化装置を示す図である。 エネルギー変化値と比較される判定閾値の例を示す図である。 状態に応じたエネルギー分布の例を示す図である。 局所解での1ハミング距離の状態遷移の受入確率の例を示す図である。 オフセット増分値の例を示す図である。 オフセット増分値の比較例を示す図である。 第2の実施の形態の最適化装置のハードウェア例を示す図である。 最適化装置の機能例を示す図である。 遷移制御部の回路例を示す図である。 保持されるエネルギー変化値の例を示す図である。 演算スケジュールの例を示す図である。 最適化装置の処理例を示すフローチャートである。 確率的探索部の回路例を示す図である。 第3の実施の形態の最適化装置の機能例を示す図である。 最適化装置の処理例を示すフローチャートである。 確率的探索部の回路例を示す図である。 第4の実施の形態の情報処理装置のハードウェア例を示す図である。 最適化装置の回路例を示す図である。 ΔE選択部の回路例を示す図である。 ΔE選択部の選択論理の例を示す図である。 ΔE選択部による選択例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置10は、疑似焼き鈍し法により、組合せ最適化問題に対する解を求める。ここで、疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したいエネルギー関数の値を最小化する問題を例に説明する。最大化の場合は、エネルギー関数の符号を変えればよい。エネルギー関数は、評価関数、コスト関数または目的関数と呼ばれることもある。
各変数に離散値の1つを代入した初期状態から始め、現在の状態(変数の値の組合せ)から、それに近い状態(例えば、1つの変数だけ変化させた状態)を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして、最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
疑似焼き鈍し法においては、状態遷移の採択(受入)確率を次のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
状態遷移に伴うエネルギー変化値(-ΔE)に対して、その状態遷移の受入確率pを次の何れかの関数f()により決める。
Figure 0007181454000001
Figure 0007181454000002
Figure 0007181454000003
ここでTは温度値と呼ばれるパラメータで式(4)で表される。すなわち、温度値Tは反復回数tに対して対数的に減少させる。
Figure 0007181454000004
ここでT0は初期温度値であり問題に応じて十分大きくとることが望ましい。
(1)、(2)(または、(1)、(3))の式で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって、実際の疑似焼き鈍し法では対数的な温度変化ではなくより早く温度を下げることが多い。
なお、下記の説明では、状態遷移の候補を複数発生させる場合について述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を1つずつ発生させるものであり、遷移候補を1つずつ発生する場合に下記機能を適用してもよい。また、各状態変数を全て状態遷移の候補とするものとして説明するが、各状態変数の一部のみを状態遷移の候補とすることも可能である。
最適化装置10は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)等を用いて実現される。最適化装置10は、入力部11、状態保持部12、エネルギー計算部13、温度制御部14、保持部15、遷移制御部16および計算部17を有する。
入力部11は、識別情報と係数情報とを入力する。識別情報は、計算部17におけるエネルギー値の変化値の選択に用いられる。識別情報は、kで表される。識別情報kは、1以上で複数の状態変数の数よりも小さい整数である。係数情報は、計算部17におけるオフセット増分値の計算に用いられる。係数情報は、αで表される。αは0<|α|<1の実数である。本例では、一例として、0<α<1であるとする。
状態保持部12は、現在の状態S(複数の状態変数の値)を保持する。
エネルギー計算部13は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の変化値(エネルギー変化値)を複数の状態遷移のそれぞれに対して計算する。ここで、状態変数の数をn個(nは2以上の整数)とする。また、状態変数を識別する情報をインデックスと呼び、i(iは1以上n以下の整数)で表す。インデックスi=1~nの各状態変数の変化に応じたエネルギー変化値は、{-ΔE}と表される。
温度制御部14は、温度を示す温度値Tを制御する。
保持部15は、エネルギー計算部13が計算した所定回数の状態遷移のそれぞれに対応する複数のエネルギー変化値{-ΔE}を、識別情報kに対応して複数のエントリにそれぞれ保持する。例えば、保持部15は、ある最適化問題の演算において、エネルギー値の最小値が更新されると、当該最小値における複数の状態変数の値(状態)を遷移元とする状態遷移に対応するエネルギー変化値{-ΔE}により保持するエネルギー変化値を更新する。ただし、保持部15により保持される値の符号は、回路構成に応じて、逆転していてもよい。例えば、保持部15は、エネルギー変化値{ΔE}を保持してもよい。図1の例では、αの符号が正であり、後述するオフセット加算回路22を熱励起エネルギーに対する減算を行う減算器22aで実現するため、保持部15は、エネルギー変化値{ΔE}を保持する。
なお、エネルギーが極小値を取る状態から生じる状態遷移に対して、ΔE>0である。すなわち、エネルギーが極小値を取る状態(局所解)は、どの状態変数の変化に対してもエネルギーが増大する状態であると言える。
遷移制御部16は、温度値Tとエネルギー変化値{-ΔE}と乱数値とに基づいて、エネルギー変化値{-ΔE}と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。
計算部17は、保持部15に保持されたエネルギー変化値{-ΔE}(前述のようにエネルギー変化値{ΔE}でもよい)に基づいて、オフセット増分値を計算し、遷移制御部16に供給する。計算部17は、CPU(Central Processing Unit)等の汎用のプロセッサ(演算部)により実現されてもよいし、専用の電子回路により実現されてもよい。
最適化装置10による一回の反復(1イタレーション)における動作例は次のようなものである。まず、遷移制御部16は、状態保持部12に保持された現在の状態Sから次の状態への状態遷移の候補を1つまたは複数発生する。エネルギー計算部13は、現在の状態Sと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化値{-ΔE}を計算する。遷移制御部16は、温度制御部14で発生した温度値Tと、最適化装置10内の乱数発生部(図示を省略している)で生成した確率変数(乱数値)を用い、各状態遷移のエネルギー変化値{-ΔE}に応じて、上記(1)、(2)または、(1)、(3)の式の許容確率(受入確率)で、その状態遷移を許容する。そして、遷移制御部16は、各状態遷移を受け入れるか否か(以下、遷移可否と言う場合もある)を示す遷移可否{f}を出力する。許容された状態遷移が複数ある場合には、遷移制御部16は、乱数値を用いてランダムにそのうちの1つを選択する。そして、遷移制御部16は、選択した状態遷移の遷移番号Nと、遷移可否fを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部12に記憶された状態変数の値が更新される。
初期状態から始めて、温度制御部14で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したときや、エネルギーが一定の値を下回る等の終了判定条件が満たされたとき、動作が終了する。最適化装置10が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度値が0にならないため、終了時においても状態の占有率はボルツマン分布等で表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
ここで、(1)~(3)の式で表される許容確率で状態遷移を許容するメカニズムについて説明する。
許容確率pで1を、(1-p)で0を出力する回路は、2つの入力A,Bを持ち、A>Bのとき1を出力し、A≦Bのとき0を出力する比較器の入力Aに許容確率pを、入力Bに区間[0,1)の値を取る一様乱数を入力することで実現することができる。したがってこの比較器の入力Aに、エネルギー変化値と温度値Tにより(1)の式を用いて計算される許容確率pの値を入力すれば、上記の機能を実現することができる。
すなわちfを(1)の式で用いる関数、uを区間[0,1)の値を取る一様乱数とするとき、f(ΔE/T)がuより大きいとき1を出力する回路で、上記の機能を実現できる。
このままでもよいのであるが、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてfの逆関数f-1を採用すると、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよいことがわかる。更に温度値Tが正であることから-ΔEがTf-1(u)より大きいとき1を出力する回路でよい。最適化装置10は、逆関数f-1(u)を実現するための変換テーブル(図示を省略している)を有する。当該変換テーブルは、区間[0,1)を離散化した入力に対して次の式(5)または(6)の関数の値を出力するテーブルである。
Figure 0007181454000005
Figure 0007181454000006
遷移制御部16は、上記判定により状態遷移が生じない場合、エネルギー変化値{-ΔE}にオフセット値を加えることで、状態遷移を促進する機能を提供する。特に、遷移制御部16は、計算部17により供給されるオフセット増分値を用いることで、オフセット値を適応的に決定する。
遷移制御部16は、熱励起エネルギー生成部21、オフセット加算回路22、オフセット制御回路23、比較器24およびセレクタ25を有する。なお、遷移制御部16には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図1では図示を簡単にするため省略されている。
熱励起エネルギー生成部21は、各遷移候補に対する乱数値u(一様乱数)を、前述した逆関数f-1(u)の値に変換する変換テーブルを有し、その値に温度値Tを乗算した積を、メトロポリス法またはギブス法における熱励起エネルギーとして出力する。例えば、遷移制御部16は、乱数値uを生成する乱数生成部(図示を省略している)を有する。乱数生成部は、各遷移候補に対して個別の乱数値を生成してもよいし、共通の乱数を生成してもよい。また、乱数生成部は、所定数の遷移候補毎に共通の乱数を生成してもよい。
オフセット加算回路22は、状態遷移に伴うエネルギー変化値{-ΔE}にオフセット値yを加えるオフセット加算回路として機能する。図1の回路の例では、オフセット加算回路22は、減算器22aである。このため、図1の例では、エネルギー変化値{-ΔE}にオフセット値yを加える代わりに、比較対象である温度値Tと乱数値の積Tf-1(u)からオフセット値yを減ずる構成となっているがどちらでも同じである。減算器22aは、熱励起エネルギーから、全ての状態遷移の候補に共通なオフセット値yを減ずる。
オフセット制御回路23は、オフセット値yに対するオフセット増分値Δyの加算を制御する。オフセット制御回路23は、オフセット値yの初期値を0とする。図1の例では、オフセット制御回路23は、リセット端子Rを有する累算器23aである。累算器23aは、リセット端子Rに入力される遷移可否fが、状態遷移を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値yを0にする。また、累算器23aは、入力端子と、クロック端子を有する。累算器23aは、遷移可否fが状態遷移を許容しないことを示すとき(つまり状態遷移が生じないとき)には、クロック端子に図示しないパルス信号が入力されるたびに、オフセット値yに入力されるオフセット増分値Δyを加えていく。
すなわち、遷移制御部16は、複数の状態遷移の何れも受け入れない場合、複数の状態遷移の何れも受け入れないと継続して決定した期間の長さに比例した回数でオフセット値(y=Δy)を累算した値をエネルギー変化値に加え(あるいは、当該値を熱励起エネルギーから減らし)、複数の状態遷移の何れかを受け入れる場合、オフセット値yを0にする。
なお、図示しないパルス信号は、例えば、図示しないステートマシンによって供給される。オフセット増分値Δyは、計算部17によって供給される。
比較器24は、減算器22aが出力する減算結果と、各状態遷移によるエネルギー変化値{-ΔE}とを比較することで各状態遷移の可否を示す遷移可否{f}を出力する。
セレクタ25は、遷移可否{f}に基づいて、許容された状態遷移が複数存在するときは、乱数を用いてその中から1つをランダムに選択する。そして、セレクタ25は、選択した状態遷移の候補の番号(遷移番号N)を出力するとともに、遷移可否fとして1を出力する。状態遷移が生じないときには、遷移可否fは0となる。遷移番号Nおよび遷移可否fは、状態保持部12およびエネルギー計算部13に供給される。
次に、計算部17によるオフセット増分値Δyの計算方法を説明する。計算部17は、選択部31および乗算器32を有する。
選択部31は、入力部11により入力された識別情報kに基づいて、保持部15により保持された{ΔE}から、エネルギー変化値ΔEを選択する。
乗算器32は、入力部11により入力された係数情報αをエネルギー変化値ΔEに乗じた結果をオフセット増分値Δyとする。具体的には、Δy=max(0,α×ΔE)である。max(a,b)演算は、(a,b)のうちの大きい方を選択する演算である。Δyをmax演算により0以上とする理由は、ΔE<0の場合、局所解に滞在していないと考えられ、遷移確率の調整が不要だからである。乗算器32は、当該オフセット増分値Δyを累算器23aに供給する。
ここで、識別情報kは、例えば、1以上の整数であり、オフセットにより遷移確率1としたい状態変数の数である。ΔEは、{ΔE}を小さい方から昇順にソートしたときの、小さい方から数えてk番目の値を示す。例えば、状態変数の数が1024個(n=1024)のとき、そのうち1%の割合で遷移確率1としたい場合は、k=10とする。
係数情報αは、上記割合の状態変数を、局所解から何回のオフセットインクリメントで遷移確率1とするかを指定するための値である。前述のように、本例では、係数情報αは、0<α<1の実数である。状態遷移の分岐比に大きな影響を及ぼさないためには、局所解における平均滞在時間が局所解でないときの平均滞在時間の数倍程度になるようにするのがよいと考えられる。局所解でないときの平均滞在時間が上記1イタレーションの所要時間であるとき、例えば、α=0.1やα=0.3等とすることが考えられる。
このように、計算部17は、保持部15に保持されるエネルギー変化値{ΔE}のうち、絶対値の小さい方から数えてk番目に相当する変化値ΔEを選択し、選択したΔEに係数情報αを乗じてオフセット増分値Δyを計算する。なお、オフセット値yの初期値は0なので、最初の更新後のオフセット値yは、y=Δyである。
また、計算部17は、複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに保持部15が保持する変化値{ΔE}を取得し、オフセット増分値(局所解に陥ったときに最初に加えるオフセット値)を更新する。温度の低下に伴って、Tf-1(u)が変化し、各状態遷移の受入確率も変化するからである。
ここで、エネルギー変化値{-ΔE}と比較される判定閾値(Tf-1)について説明する。
図2は、エネルギー変化値と比較される判定閾値の例を示す図である。
一例として、メトロポリス法を適用する場合を考える。この場合、式(1)、(2)から、遷移受入確率A=p(ΔE,T)と、エネルギー増分ΔEとの関係は、グラフ41で表される。グラフ41の横軸は、エネルギー増分ΔEであり、縦軸は遷移受入確率Aである。グラフ41によれば、エネルギーが下がる場合(ΔE≦0の場合)、A=1である。エネルギーが上がる場合(ΔE>0の場合)、遷移受入確率Aは、A=A(ΔE)である。図1に例示した比較器24では、前述のように、式(1)、(2)の両辺に単調増加関数である逆関数f-1を作用させた結果により比較を行う。式(5)によれば、一様乱数uに対する判定閾値Tf-1(u)=T×log(u)は、グラフ42で表される。グラフ42の横軸は一様乱数uを示し、縦軸は判定閾値Tf-1である。
オフセット値yを考慮する場合、エネルギー変化値{-ΔE}と、判定閾値Tf-1(u)との間に次の式(7)または式(8)の関係がある場合、インデックスiの状態変数の変化が許容される。図1では、比較器24により、式(7)の関係性を評価して、遷移可否{f}を出力する例を示している。
Figure 0007181454000007
Figure 0007181454000008
次に、局所解における遷移受入確率について説明する。
図3は、状態に応じたエネルギー分布の例を示す図である。
グラフ43は、各状態変数で表される状態に対するエネルギーの関係を示す。グラフ43の横軸は状態であり、縦軸はエネルギーである。グラフ43では、エネルギーが最小になる状態(最適解)の他に、エネルギーが最小ではない極小値になる状態(局所解)が示されている。
前述の式(1)、(2)、(3)より、温度が低いほど、または、エネルギー変化値が(正に)大きくなるほど状態遷移の受入確率は低くなる。
最適化装置10において、演算の実行時間が長くなる主な原因の1つに、最適解を安定な状態にするには温度を十分に下げなければならない一方で、比較的低い温度では局所解からの脱出が非常に低い頻度でしか起こらない(状態遷移の受入確率が低い)ことが挙げられる。
図4は、局所解での1ハミング距離の状態遷移の受入確率の例を示す図である。
グラフ44は、局所解における状態遷移候補の状態遷移sに対する1ハミング距離の状態遷移の受入確率を示す。グラフ44の横軸は、状態遷移候補となる状態遷移sであり、縦軸は状態遷移の受入確率である。
グラフ44における波形は、局所解における各状態遷移の受入確率が1よりもはるかに小さいことを示す。このため、状態遷移が生じる可能性が低く、局所解からの脱出に時間がかかる。
そこで、最適化装置10は、オフセット値yを用いて、局所解からの脱出を促進する。特に、最適化装置10は、オフセット増分値を適応的に決定することで、解の精度の悪化を抑えつつ、演算を高速化する。
図5は、オフセット増分値の例を示す図である。
図5(A)はグラフ45を示す。図5(B)はグラフ46を示す。グラフ45,46の横軸は、状態遷移候補となる状態遷移sであり、縦軸は状態遷移の受入確率である。
前述のように、識別情報kは、オフセット値を用いて、遷移可としたい状態変数の割合(または数)に応じて決定される。係数情報αは、例えば、0.33である。
このとき、図5(A)の例において、エネルギー変化値{-ΔE}にオフセット値yとしてΔyを3回加算した場合に、波形45aで示される受入確率は、波形45bで示される受入確率となることが期待される。波形45bにおいて、遷移確率が1となる状態変数の割合は、k/n程度となることが期待される。
同様に、図5(B)の例において、エネルギー変化値{-ΔE}にオフセット値yとしてΔyを3回加算した場合に、波形46aで示される受入確率は、波形46bで示される受入確率となることが期待される。波形46bにおいて、遷移確率が1となる状態変数の割合は、k/n程度となることが期待される。
このように、受入確率を表す波形にピークがあっても、係数情報αに応じた回数のオフセットインクリメントによって、一定の割合の状態遷移候補を、遷移確率1とすることができる。
次に、オフセット増分値の比較例を説明する。
図6は、オフセット増分値の比較例を示す図である。
図6(A)は、オフセット増分値が小さ過ぎる場合のグラフ47を例示する。図6(B)は、オフセット増分値が大き過ぎる場合のグラフ48を例示する。グラフ47,48の横軸は状態遷移候補となる状態遷移sであり、縦軸は状態遷移の受入確率である。
グラフ47で例示されるように、オフセット増分値Δyが小さ過ぎると、局所解からの脱出に多くの時間を要し、最適化装置10の演算を十分に高速化できない。具体的には、オフセット増分値Δyが小さいほど、波形47aで示される受入確率を波形47bで示される受入確率とするまでのオフセットインクリメントの回数が増す。このため、局所解での滞在時間が長くなり、最適化装置10の演算が遅延する。
また、グラフ48で例示されるように、オフセット増分値Δyが大き過ぎると、比較的大きなエネルギー増加をもたらす状態遷移が発生する可能性が過剰に高まる。具体的には、オフセット増分値Δyが大き過ぎると、波形48aで示される受入確率が、波形48bで示される受入確率まで一気に上昇する。すると、本来は、局所解においても比較的エネルギーの増加が少ない状態遷移の受入確率が高くなるべきであるにも関わらず、比較的エネルギーの増加が少ない状態遷移が候補に挙がる前にオフセット値yが大きくなってしまう。すなわち、波形48bで示されるように、各エネルギー変化に対して、状態遷移の受入確率に差がなくなる。その結果、ある状態から別の状態への分岐比が、疑似焼き鈍し法における適切な分岐比からずれてしまい、解の精度が低下する。
これに対して、最適化装置10は、識別情報kと係数情報αと保持部15に保持されたエネルギー変化値とに基づいて、局所解の特徴からオフセット増分値Δyを求めることで、ユーザの介入なしに、問題毎に適切なΔyにより、オフセット値yを取得できる。エネルギー変化値{ΔE}の小さい方から数えてk番目の値を基にオフセット増分値Δyを算出することで、所定回数のオフセットインクリメントにより、一定割合のビットの遷移確率が1になるように上昇させることができる。このため、オフセット値yが小さくなり過ぎないように、また、オフセット値yが大きくなり過ぎないように、適切に調整可能になる。その結果、状態の分岐比のずれを抑制して解の精度の悪化を抑えつつ、演算を高速化できる。
なお、最適化するエネルギーがイジングモデルで表される場合の疑似焼き鈍し法について、遷移候補の発生及び状態遷移に伴うエネルギーの変化の計算法について以下に簡単に説明する。
イジングモデルは、互いに相互作用を行うn個のスピンからなる系を表すモデルであり、各スピン(前述の状態変数に対応する)xは±1の2値を取る。系のエネルギーは、以下の式(9)で表される。式(9)は、評価関数の一例である。
Figure 0007181454000009
式(9)において、Wijは、スピンxとスピンx間の相互作用係数を示し、bは、系のバイアス値である外部磁場係数を示す。Wijとbは、解きたい問題に応じて決定される定数である。
現在の状態から次の状態への状態遷移の候補は、1つのスピンの反転であり、n通り存在する。したがって遷移候補としては反転する1つのスピン番号または複数のスピンの番号の集合を発生させればよい。
そしてi番目のスピン反転に伴うエネルギーの変化は、以下の式(10)で表される。
Figure 0007181454000010
ここで、hは、式(11)で表される。hは、ローカルフィールド(局所場)値と呼ばれ、各スピンの反転によるエネルギー変化の割合を表している。
Figure 0007181454000011
状態遷移を許容するかどうかはエネルギーの変化で決まるため、基本的にはエネルギーそのものを計算せずにローカルフィールド値からエネルギーの変化を計算すればよい。出力として得られた最低エネルギーに対する状態を用いる場合には、ローカルフィールド値からエネルギーの変化を計算しそれを累算していくことでエネルギーを求めることができる。
更に、
Figure 0007181454000012
であるから、ローカルフィールド値を行列演算により毎回計算し直す必要はなく、状態遷移に伴って反転のあったスピンによる変化分だけ加算すればよい。状態遷移に伴って反転のあったスピンによる変換分は、例えば、式(13)により表される。
Figure 0007181454000013
このため、図1に示した状態保持部12やエネルギー計算部13は、n個のスピンの値を保持するnビットレジスタと加算器、排他的論理和等の比較的簡単な演算回路を用いて実現できる。
なお、疑似焼き鈍し法においては、状態遷移に伴い変化する状態変数は1つだけであり、それに対するエネルギー変化値はローカルフィールド値を用いて予め計算しておくことができる。図1では、各状態変数に対するエネルギー変化値{-ΔE}を求め、各状態変数に対して並列に遷移可否{f}を判定し、その中から1つを選択する構成を例示した。一方、予め計算しておいたエネルギー変化値を遷移候補の発生に応じて1つ選択して、遷移可否fを判定する構成としてもよい。並列に遷移可否{f}を判定する前者の構成における並列度をgとすると、前者の構成では、エネルギー変化値を1つ選択する後者の構成よりも、1イタレーションにおける状態遷移確率を約g倍に増加できる。
また、ボルツマンマシンでないときは、複数の状態変数が変化する遷移を考える場合もあるため、遷移候補の発生後に必要なエネルギー変化値を計算するような実装が有利になる場合もある。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図7は、第2の実施の形態の最適化装置のハードウェア例を示す図である。
最適化装置50は、組合せ最適化問題を、イジングモデルの基底状態を求める問題に置き換えて演算することで、組合せ最適化問題の解を求める。イジングモデルにおける1つの状態変数は、1ビットで表される。当該ビットを、スピンビットまたは単にスピンと言うことがある。イジングモデルの状態は、複数のスピンビット(スピンビット列)により表される。
最適化装置50は、CPU51、RAM(Random Access Memory)52、HDD(Hard Disk Drive)53、NIC(Network Interface Card)54、出力IF(Interface)55、入力IF56、媒体リーダ57および確率的探索部100を有する。CPU51、RAM52、HDD53、NIC54、出力IF55、入力IF56、媒体リーダ57および確率的探索部100は、最適化装置50のバスに接続される。バスは、例えばPCIe(Peripheral Component Interconnect express)バスである。
CPU51は、プログラムの命令を実行するプロセッサ(演算部)である。CPU51は、HDD53に記憶されたプログラムやデータの少なくとも一部をRAM52にロードし、プログラムを実行する。なお、CPU51は複数のプロセッサコアを含んでもよい。また、最適化装置50は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM52は、最適化装置50の主記憶装置である。RAM52は、CPU51が実行するプログラムやCPU51が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。最適化装置50は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD53は、最適化装置50の補助記憶装置である。HDD53は、OS(Operating System)やミドルウェアやアプリケーションソフトウェア等のソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。最適化装置50は、HDDに代えて、または、HDDと併せて、SSD(Solid State Drive)等の他の種類の補助記憶装置を備えてもよい。
NIC54は、ネットワーク60に接続され、ネットワーク60を介して他のコンピュータと通信を行うインタフェースである。NIC54は、例えば、ネットワーク60に属するスイッチやルータ等の通信装置とケーブルで接続される。
出力IF55は、CPU51からの命令に従って、最適化装置50に接続されたディスプレイ61に画像を出力する。ディスプレイ61としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ等、任意の種類のディスプレイを用いることができる。
入力IF56は、最適化装置50に接続された入力デバイス62から入力信号を取得し、CPU51に出力する。入力デバイス62としては、マウスやタッチパネル等のポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチ等を用いることができる。
媒体リーダ57は、記録媒体63に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体63として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリ等を使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ57は、例えば、記録媒体63から読み取ったプログラムやデータを、RAM52やHDD53等の他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU51によって実行される。なお、記録媒体63は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体63やHDD53を、コンピュータ読み取り可能な記録媒体と言うことがある。
確率的探索部100は、ハードウェアにより疑似焼き鈍し法を実行するアクセラレータである。確率的探索部100は、例えば、1チップの半導体集積回路であり、FPGA等を用いて実現される。確率的探索部100は、最適化問題に関する設定情報をCPU51から受け付け、最適化問題に対する演算を実行する。確率的探索部100は、最適化問題の演算結果をRAM52またはHDD53に出力する。最適化装置50は、確率的探索部100を複数有してもよい。
なお、最適化装置50は、ネットワーク60に接続された端末装置(図示を省略している)から最適化問題に関する設定情報を受信し、ネットワーク60を介して、当該端末装置に最適化問題に対する演算結果を送信してもよい。
図8は、最適化装置の機能例を示す図である。
最適化装置50の確率的探索部100およびCPU51の機能を主に説明する。確率的探索部100は、状態保持部110、エネルギー計算部120、遷移制御部130、制御部140およびΔE保持部150を有する。
状態保持部110は、現在の状態Sを保持する。
状態保持部110は、イジングモデルの現在の状態S(複数のスピンビット)を保持する。
エネルギー計算部120は、状態Sで示されるスピンビット列の何れかが変化することに応じて状態遷移が起こる場合、エネルギー変化値を、複数の状態遷移(状態遷移の候補)のそれぞれに対して計算する。ここで、スピンビットの数をn個(nは2以上の整数)とする。また、スピンビットを識別する情報をインデックスと呼び、i(iは1以上n以下の整数)で表す。インデックスi=1~nの各スピンビットの変化(反転)に応じたエネルギー変化値は、{-ΔE}と表される。
遷移制御部130は、状態遷移の候補{N}をエネルギー計算部120に供給する。本例では、スピンビット列に含まれる全てのスピンビットが状態遷移の候補になるものとする。遷移制御部130は、温度値Tとエネルギー変化値{-ΔE}と乱数値とに基づいて、エネルギー変化値{-ΔE}と熱励起エネルギーとの相対関係によって複数の状態遷移(状態遷移の候補)の何れかを受け入れるか否かを確率的に決定する。遷移制御部130は、決定したスピンビットのインデックスN(遷移番号N)と反転可否を示すフラグfとを状態保持部110およびエネルギー計算部120に供給する。後述するように、何れのスピンビットも反転しない場合(fが反転不可を示す場合)、遷移制御部130は、エネルギー変化値{-ΔE}にオフセット値yを加算して、熱励起エネルギーとの相対関係を評価することで、状態遷移を促進する。
制御部140は、確率的探索部100による演算を制御する。具体的には、制御部140は、スピンビット列の初期値を状態保持部110に設定する。また、制御部140は、スピンビット間の相互作用係数Wijやバイアス値bをエネルギー計算部120に設定する。制御部140は、温度を示す温度値Tを遷移制御部130へ供給する。更に、制御部140は、遷移制御部130に、オフセット増分値Δyを供給する。ここで、第2の実施の形態では、オフセット増分値Δyは、CPU51によって計算される。制御部140は、ΔE保持部150に保持されているエネルギー変化値を取得し、CPU51に供給する。制御部140は、確率的探索部100による演算が終了すると、最終状態のスピンビット列を状態保持部110から取得し、最適化問題の解として、CPU51に供給する。
ΔE保持部150は、エネルギー計算部120が計算した所定回数の状態遷移のそれぞれに対応する複数のエネルギー変化値{-ΔE}を、識別情報に対応して複数のエントリにそれぞれ保持する。例えば、ΔE保持部150は、ある最適化問題の演算において、演算の開始から演算途中の所定タイミングまでに得られた状態のうち、最低エネルギー状態からの状態遷移による複数のエネルギー変化値{-ΔE}を保持する。ただし、ΔE保持部150により保持される値の符号は、回路構成に応じて、逆転していてもよい。図8の例では、後述する遷移制御部130の回路構成に対して、ΔE保持部150は、エネルギー変化値{ΔE}を保持する。
具体的には、ΔE保持部150には、状態Sに対する最小エネルギーが更新された旨を示す信号M(最小エネルギー更新信号M)が入力される。ΔE保持部150は、最小エネルギー更新信号Mが入力されたときの、エネルギー計算部120により計算されたエネルギー変化値({ΔEminと表す)を保持する。
ここで、例えば、イジングモデルの状態に対して得られた最小エネルギーは、制御部140により保持されてもよい。イジングモデルの状態に対するエネルギーは、式(9)により計算される。制御部140は、式(9)により計算される最小エネルギーが更新されると、最小エネルギー更新信号Mを、ΔE保持部150に供給してもよい。あるいは、確率的探索部100は、式(9)により計算される最小エネルギーを保持する最小エネルギー保持部(図8では図示を省略している)を有してもよい。そして、当該最小エネルギー保持部が、最小エネルギーの更新に応じて、最小エネルギー更新信号Mを、ΔE保持部150に供給してもよい。
CPU51は、RAM52に記憶された最適化装置50の制御プログラム70を実行することで、Δy計算部71の機能を発揮する。
Δy計算部71は、入力IF56による識別情報kおよび係数情報αの入力を受け付ける。識別情報kは1≦k<nの整数である。係数情報αは0<α<1の実数である。
Δy計算部71は、制御部140から取得したエネルギー変化値{ΔEmin、識別情報kおよび係数情報αに基づいて、オフセット増分値Δyを計算し、制御部140に供給する。具体的には、Δy計算部71は、エネルギー変化値{ΔEminを昇順にソートし、上位k番目(小さい方から数えてk番目)のΔEを取得する。そして、Δy計算部71は、Δy=max(0,α×ΔE)を求める。
ここで、確率的探索部100の処理では、温度値Tが徐々に下げられる。温度値Tの低下に伴って、判定閾値Tf-1(u)も変化するため、Δy計算部71は、オフセット増分値Δyを温度値Tの低下に伴って変化させる。例えば、Δy計算部71は、確率的探索部100による一定イタレーション回数毎に、オフセット増分値Δyを更新することが考えられる。一定イタレーション回数は、Δy算出処理の所要時間(CPU51によるΔy算出の処理時間)が、確率的探索部100による演算時間に対して十分小さくなる値(オーバーヘッドが小さくなる値)に設定される。一例では、確率的探索部100による演算時間がCPU51によるΔy算出の処理時間に対して10倍以上(オーバーヘッド10%以下)となるようなイタレーション回数が予め設定される。
ここで、遷移制御部130の回路例を説明する。
図9は、遷移制御部の回路例を示す図である。
遷移制御部130は、熱励起エネルギー生成部131、オフセット加算回路132、オフセット制御回路133、比較器134およびセレクタ135を有する。なお、遷移制御部130には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図9では図示を簡単にするため省略されている。
ここで、熱励起エネルギー生成部131、オフセット加算回路132、オフセット制御回路133、比較器134およびセレクタ135は、図1で説明した同名の回路要素に対応するため、説明を省略する。図9におけるオフセット加算回路132の減算器132aは、図1の減算器22aに相当する。また、図9におけるオフセット制御回路133の累算器133aは、図1の累算器23aに相当する。エネルギー変化値{ΔEminは、ΔE保持部150に保持される。
オフセット制御回路133には、CPU51によって実現されるΔy計算部71により計算されたオフセット増分値Δyが供給される。また、Δy計算部71には、入力IF56により、識別情報kおよび係数情報αが供給される。Δy計算部71は、図1で説明した選択部31および乗算器32の機能をCPU51により実行されるソフトウェアにより実現したものである。この場合、CPU51は、第1の実施の形態の計算部17の一例である。入力IF56は、第1の実施の形態の入力部11の一例である。
図10は、保持されるエネルギー変化値の例を示す図である。
テーブルT1は、ΔE保持部150により保持され、CPU51に供給される{ΔEminの一例を示す。ただし、図10のテーブルT1では、CPU51により{ΔEminで昇順にソートされた後の状態を示している。
テーブルT1におけるkは、識別情報を示す。ΔEは、ΔE保持部150により保持されるエネルギー変化値を示す。
例えば、Δy計算部71は、テーブルT1に基づいて、ソート後のエネルギー変化値の上位k番目の値ΔEを選択する。一例として、k=10のとき、テーブルT1によれば、ΔE=7795である。
次に、確率的探索部100による演算およびΔy計算部71によるΔyの計算を含む、最適化装置50の演算スケジュールの例を説明する。
図11は、演算スケジュールの例を示す図である。
最適化装置50では、確率的探索部100とΔy計算部71とが連携して、最適化問題の演算を行う。前述のように、Δy計算部71は、CPU51により実現される。例えば、次のような演算スケジュールが考えられる。
まず、CPU51は、確率的探索部100を起動する(ステップST1)。CPU51は、確率的探索部100に対して初期設定(スピンビット列、相互作用係数Wij、バイアス値b等)や動作条件の設定(温度変更スケジュール等)を行い、演算の実行を開始させる。なお、オフセット増分値Δyの初期値は0である。また、オフセット値yの初期値は0である。
確率的探索部100は、イジングモデルの基底状態を探索する(ステップST2)。
CPU51は、ステップST2において確率的探索部100により一定イタレーション回数の探索が実行されたことを検出すると、ΔE保持部150からエネルギー変化値{ΔEminを取得する。CPU51は、エネルギー変化値{ΔEminと、識別情報kと係数情報αとに基づいて、オフセット増分値Δyを計算する(ステップST3)。なお、識別情報kおよび係数情報αは、入力IF56により予め入力される。CPU51は、計算したオフセット増分値Δyを、確率的探索部100に供給する。
確率的探索部100は、ステップST3で供給されたオフセット増分値Δyを用いて、イジングモデルの基底状態を探索する(ステップST4)。
CPU51は、ステップST4において確率的探索部100により一定イタレーション回数の探索が実行されたことを検出すると、ΔE保持部150からエネルギー変化値{ΔEminを取得する。CPU51は、ステップST3と同様に、オフセット増分値Δyを計算する(ステップST5)。CPU51は、計算したオフセット増分値Δyを、確率的探索部100に供給する。これにより、確率的探索部100に供給されるオフセット増分値Δyが更新される。
確率的探索部100は、ステップST5で供給されたオフセット増分値Δyを用いて、イジングモデルの基底状態を探索する(ステップST6)。
CPU51は、確率的探索部100により目標回数のイタレーションが実行されると、確率的探索部100から最終状態に相当するスピンビット列を取得する。例えば、CPU51は、取得したスピンビット列に応じた最適化問題の解を、出力IF55を介してディスプレイ61に表示させる。
図11の例では、CPU51によるΔy計算ステップ(ST3,ST5)を2回行う例を示したが、3回以上行ってもよい。Δy計算ステップを何回行うかは、前述のように、確率的探索部100の演算時間に対して許容されるオーバーヘッドに応じて決定される。
次に、CPU51による上記の処理手順を説明する。
図12は、最適化装置の処理例を示すフローチャートである。
(S10)CPU51は、イタレーション回数を係数するカウンタitをit=0に設定する。
(S11)CPU51は、初期状態(スピンビット列の初期値や温度値Tの初期値等)と、初期エネルギーと、温度スケジュールとを確率的探索部100に設定する。このとき、CPU51は、スピンビット間の相互作用係数Wij、バイアス値bを、確率的探索部100に設定する。
(S12)CPU51は、オフセット増分値Δy=0に設定する。
(S13)CPU51は、オフセット増分値Δy=0を確率的探索部100に供給する。
(S14)CPU51は、Δy計算までのイタレーション回数p_itrで、確率的探索部100を起動する。
(S15)CPU51は、確率的探索部100によるイタレーション回数p_itrまでの演算の終了を待つ。確率的探索部100によるp_itr回のイタレーション後の状態や最小エネルギー時の状態は、確率的探索部100の内部に保持される。
(S16)CPU51は、確率的探索部100によるイタレーション回数p_itrまでの演算が終了すると、確率的探索部100のΔE保持部150に保持される{ΔE}(={ΔEmin)を取得する。
(S17)CPU51は、入力IF56により入力される識別情報kと係数情報αと{ΔE}(={ΔEmin)に基づいて、オフセット増分値Δyを計算する。
(S18)CPU51は、カウンタitにp_itrを加算する(it=it+p_itr)。
(S19)CPU51は、it>num_itrであるか否かを判定する。it>num_itrの場合、ステップS20に処理が進む。it≦num_itrの場合、ステップS13に処理が進む。ここで、num_itrは、確率的探索部100により最終状態を得るまでに実行するイタレーションの回数である。
(S20)CPU51は、確率的探索部100から最終状態(最終状態を示すスピンビット列)を取得する。そして、処理が終了する。
図13は、確率的探索部の回路例を示す図である。
例えば、確率的探索部200の回路構成により、確率的探索部100と等価な機能を実現することができる。確率的探索部200は、エネルギー計算部21a1,…,21ai,…,21an、遷移制御部220、状態更新部230およびΔE保持部240を有している。
エネルギー計算部21a1~21anは、図8に示したエネルギー計算部120の一例であり、エネルギー変化値(ΔE,…,ΔE,…,ΔE({ΔE}に相当))を計算し、出力する。
例えば、エネルギー計算部21aiは、レジスタ211、セレクタ212,213、乗算器214、加算器215、レジスタ216、セレクタ217および乗算器218を有する。
レジスタ211は、前述の式(9)等におけるスピンビット間の相互作用係数Wi1,Wi2,…,Winを格納する。
なお、相互作用係数Wi1~Winは、例えば、確率的探索部100内の制御部140(図13では図示を省略している)、または、CPU51により計算対象の問題に応じて予め計算され、レジスタ211に格納される。なお、上記のような相互作用係数Wi1~Winは、RAM等のメモリに格納されてもよい。
セレクタ212は、遷移制御部220が出力する遷移番号Nに基づき、レジスタ211に格納されている相互作用係数Wi1~Winのうち1つを選択して出力する。
例えば、N=nがセレクタ212に入力されたとき、セレクタ212は、相互作用係数Winを選択する。
セレクタ213は、状態更新部83が出力する更新後のスピンビットxに基づき、1または-1を選択して出力する。セレクタ213は、更新後のxが0のときには-1を選択して出力し、更新後のxが1のときには1を選択して出力する。
乗算器214は、セレクタ212が出力する相互作用係数と、セレクタ213が出力する値とを乗算した積を出力する。
加算器215は、乗算器214が出力する乗算結果と、レジスタ216に格納されている値とを加算した和を出力する。
レジスタ216は、図示しないクロック信号に同期して、加算器215が出力する値を取り込む。レジスタ216は、例えば、フリップフロップである。なお、レジスタ216に格納される値が、式(11)におけるローカルフィールド値hである。
セレクタ217は、変化後のスピンビットxが、0のとき1を出力し、1のとき-1を出力する。セレクタ217の出力は、式(10)の-Δxに相当する。図13では、セレクタ217に、変化前のスピンビットxが供給される例を示している。
乗算器218は、レジスタ216が出力するローカルフィールド値hとセレクタ217が出力する値とを乗算した積をエネルギー変化値(ΔE)として出力する。
遷移制御部220は、回路部22a1,…,22ai,…,22an、セレクタ22b、オフセット制御回路22cを有する。
回路部22a1~22anは、図9に示した遷移制御部130の熱励起エネルギー生成部131、オフセット加算回路132、比較器134の機能を、状態遷移の候補毎に分割して行うものである。セレクタ22bは、図9に示したセレクタ135に相当する。また、オフセット制御回路22cは、図9に示したオフセット制御回路133に相当する。
例えば、回路部22aiは、符号反転回路221、加算器222、乱数発生回路223、選択法則適用部224、乗算器225、比較回路226およびインデックス保持部227を有する。
符号反転回路221は、エネルギー計算部21aiにより出力されたエネルギー変化値ΔEの符号を反転させて、-ΔEを出力する。図13の例では、遷移制御部220において、ΔEを-ΔEとする点が、遷移制御部130と異なっている。
加算器222は、符号反転回路221が出力する-ΔEに、オフセット制御回路22cにより供給されるオフセット値yを加算する。図13の例では、熱励起エネルギーからオフセット値yを減算するのではなく、エネルギー変化値(-ΔE)にオフセット値yを加算する点が、遷移制御部130と異なっている。
乱数発生回路223は、一様乱数uを発生させ、選択法則適用部224に供給する。選択法則適用部224は、メトロポリス法またはギブス法のうちの使用する法則に対応する変換テーブルに基づいて、一様乱数uに応じた関数f-1(u)の値を出力する。
乗算器225は、図示を省略している温度制御部から供給される温度値Tと関数f-1(u)とを乗算した積Tf-1(u)(熱励起エネルギーに相当)を比較回路226に出力する。
比較回路226は、-ΔEと、Tf-1(u)に関して、式(8)に基づく判定を行う。式(8)が満たされる場合、比較回路226は、遷移可を示すfをセレクタ22bに出力する。式(8)が満たされない場合、比較回路226は、遷移不可を示すfをセレクタ22bに出力する。
インデックス保持部227は、エネルギー計算部21aiおよび回路部22aiに対応するスピンビットのインデックスiをセレクタ22bに出力する。
遷移制御部220は、上記構成により、図9に示した遷移制御部130と同様の動作を行う。
状態更新部230は、図8に示した状態保持部110の機能を有し、遷移制御部220が出力する遷移可否fと遷移番号Nに基づき、保持されているスピンビットx~xの値を更新して、その値の組合せ(State)を出力する。また、状態更新部230は、更新後のスピンビットの値(図13の例ではxと表記されている)を出力する。
ΔE保持部240は、最低エネルギー状態のときのエネルギー変化値{ΔE}={ΔEminを保持する。ΔE保持部240は、図8に示したΔE保持部150に相当する。
最適化装置50は、確率的探索部200により、確率的探索部100と同様の機能を実現することができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、ΔE保持部150またはΔE保持部240により、最小エネルギー状態のときのエネルギー変化値{ΔEminを保持するものとした。一方、第3の実施の形態では、最小エネルギー状態のときのエネルギー変化値{ΔEminではなく、最小エネルギー状態を表すスピンビット列を保持する最小エネルギー状態保持部を、確率的探索部に設ける点が異なる。第3の実施の形態では、エネルギー変化値{ΔEminは、最小エネルギー状態を表すスピンビット列に基づいてCPU51により計算される。
図14は、第3の実施の形態の最適化装置の機能例を示す図である。
第3の実施の形態の最適化装置50aのハードウェアは、図7で例示した第2の実施の形態の最適化装置50のハードウェアと同様である。ただし、最適化装置50aは、確率的探索部100に代えて、確率的探索部300を有する。
確率的探索部300は、状態保持部310、エネルギー計算部320、遷移制御部330、制御部340および最小エネルギー状態保持部350を有する。ここで、状態保持部310、エネルギー計算部320および遷移制御部330は、図8に示した同名の回路に相当する。
制御部340は、確率的探索部300による演算を制御する。具体的には、制御部340は、スピンビット列の初期値を状態保持部310に設定する。また、制御部340は、スピンビット間の相互作用係数Wijやバイアス値bをエネルギー計算部320に設定する。制御部340は、温度を示す温度値Tを遷移制御部330へ供給する。更に、制御部340は、遷移制御部330に、オフセット増分値Δyを供給する。
また、制御部340は、最小エネルギー状態保持部350に保持されている最小エネルギー状態のスピンビット列(Sminと表す)を取得し、CPU51に供給する。制御部340は、確率的探索部300による演算が終了すると、最終状態のスピンビット列を状態保持部310から取得し、最適化問題の解として、CPU51に供給する。
最小エネルギー状態保持部350は、エネルギー値の最小値が更新されると、当該最小値におけるスピンビット列(複数の状態変数の値)を保持する。より具体的には、最小エネルギー状態保持部350は、最小エネルギー更新信号Mが供給されると、Mの供給タイミングにおいて状態保持部310により供給されるスピンビット列を、最小エネルギー状態のスピンビット列Sminとして保持する。最小エネルギー状態保持部350は、スピンビット列Sminを制御部340に供給する。
ここで、例えば、イジングモデルの状態に対して得られた最小エネルギーは、制御部340により保持されてもよい。イジングモデルの状態に対するエネルギーは、式(9)により計算される。制御部340は、式(9)により計算される最小エネルギーが更新されると、最小エネルギー更新信号Mを、最小エネルギー状態保持部350に供給してもよい。あるいは、確率的探索部300は、式(9)により計算される最小エネルギーを保持する最小エネルギー保持部(図8では図示を省略している)を有してもよい。そして、当該最小エネルギー保持部が、最小エネルギーの更新に応じて、最小エネルギー更新信号Mを、最小エネルギー状態保持部350に供給してもよい。
CPU51は、RAM52に記憶された最適化装置50aの制御プログラム70aを実行することで、ΔE計算部72およびΔy計算部74の機能を発揮する。
ΔE計算部72は、スピンビット列S(複数の状態変数)に関する状態遷移の可否の決定を一定回数行うごとに、最小エネルギー状態保持部350に保持されたスピンビット列Sminに基づいて、当該スピンビット列Smin(最小エネルギー状態)を遷移元とする状態遷移のそれぞれに対応するエネルギー変化値{ΔEminを計算し、RAM52におけるΔE保持部73に格納する。
すなわち、ΔE計算部72は、制御部340からスピンビット列Sminを取得し、式(10)、(11)により、エネルギー変化値{ΔEminを計算する。ΔE計算部72は、計算したエネルギー変化値{ΔEminを、ΔE保持部73に格納する。ΔE保持部73は、図1に示した第1の実施の形態の保持部15の一例である。
Δy計算部74は、ΔE保持部73に格納されたエネルギー変化値{ΔEminに基づいて、オフセット増分値Δyを計算する。具体的には、Δy計算部74は、入力IF56により入力される識別情報kに基づいて、エネルギー変化値{ΔEminからΔEを取得する。ΔEの取得方法は、Δy計算部71によるΔEの取得方法と同様である。そして、Δy計算部74は、入力IF56により入力された係数情報αを用いて、オフセット増分値Δy=max(0,α×ΔE)を計算する。Δy計算部74は、計算したオフセット増分値Δyを制御部340に出力する。
ここで、第2の実施の形態と同様に、ΔE計算部72およびΔy計算部74は、確率的探索部300による一定イタレーション回数毎に、オフセット増分値Δyを更新することが考えられる。一定イタレーション回数は、Δy算出処理の所要時間(CPU51によるΔy算出の処理時間)が、確率的探索部300による演算時間に対して十分小さくなる値(オーバーヘッドが小さくなる値)に設定される。
次に、最適化装置50aにおけるCPU51の処理手順を説明する。
図15は、最適化装置の処理例を示すフローチャートである。
第3の実施の形態では、図12に示した第2の実施の形態の手順のうち、ステップS16に代えて、ステップS16a,S16bを実行する点が異なる。そこで、以下では、ステップS16a,S16bを説明し、他のステップの説明を省略する。ステップS16aは、ステップS15の次に実行される。
(S16a)CPU51は、確率的探索部300によるイタレーション回数p_itrまでの演算が終了すると、確率的探索部300の最小エネルギー状態保持部350に保持されるスピンビット列Smin(={x})を取得する。
(S16b)CPU51は、式(10)、(11)に基づいて、エネルギー変化値{ΔE}={ΔEminを計算する。そして、ステップS17に処理が進む。
このように、CPU51によりエネルギー変化値{ΔEminを計算してもよい。この場合、確率的探索部300は、CPU51にスピンビット列Sminを供給すればよいので、確率的探索部300がエネルギー変化値をCPU51に供給する機能をもたなくても、オフセット増分値Δyを適切に変更可能になる。
図16は、確率的探索部の回路例を示す図である。
例えば、確率的探索部400の回路構成により、確率的探索部300と等価な機能を実現することができる。確率的探索部400は、エネルギー計算部41a1,…,41ai,…,41an、遷移制御部420、状態更新部430および最小エネルギー状態保持部440を有している。
エネルギー計算部41a1~41anは、図14に示したエネルギー計算部320の一例であり、エネルギー変化値(ΔE,…,ΔE,…,ΔE({ΔE}に相当)を計算し、出力する。
例えば、エネルギー計算部41aiは、レジスタ411、セレクタ412,413、乗算器414、加算器415、レジスタ416、セレクタ417および乗算器418を有する。
ここで、レジスタ411、セレクタ412,413、乗算器414、加算器415、レジスタ416、セレクタ417および乗算器418は、図13に示した同名の回路要素と同様である。
遷移制御部420は、回路部42a1,…,42ai,…,42an、セレクタ42b、オフセット制御回路42cを有する。
回路部42a1~42anは、図13に示した回路部22a1~22anに相当する。例えば、回路部42aiは、符号反転回路421、加算器422、乱数発生回路423、選択法則適用部424、乗算器425、比較回路426およびインデックス保持部427を有する。符号反転回路421、加算器422、乱数発生回路423、選択法則適用部424、乗算器425、比較回路426およびインデックス保持部427は、図13に示した同名の回路要素と同様である。また、セレクタ42bは、図13に示したセレクタ22bに相当する。オフセット制御回路42cは、図13に示したオフセット制御回路22cに相当する。オフセット制御回路42cには、図示を省略している制御部により、オフセット増分値Δyが供給される。オフセット制御回路42cは、オフセット増分値Δyに基づいて算出されるオフセット値yを回路部42a1~42anに供給する。
遷移制御部420は、上記構成により、図14に示した遷移制御部330と同様の動作を行う。
状態更新部430は、図14に示した状態保持部310の機能を有し、遷移制御部330が出力する遷移可否fと遷移番号Nに基づき、保持されているスピンビットx~xの値を更新して、その値の組合せ(State)を出力する。また、状態更新部430は、更新後のスピンビットの値(図16の例ではxと表記されている)を出力する。
最小エネルギー状態保持部440は、最低エネルギー状態のときのスピンビット列を状態更新部430から取得し、保持する。
最適化装置50aは、確率的探索部400により、確率的探索部300と同様の機能を実現することができる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
第2,第3の実施の形態では、オフセット増分値Δyの計算機能をCPU51により実行されるソフトウェアにより実現する例を示した。第4の実施の形態では、オフセット増分値Δyの計算機能を、専用のハードウェアにより実現する例を示す。この場合、「最適化装置」は、下記に示すようにCPU51を含まなくてもよい(ただし、「最適化装置」はCPU51を含んでもよい)。
図17は、第4の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置50bは、CPU51、RAM52、HDD53、NIC54、出力IF55、入力IF56、媒体リーダ57および最適化装置500を有する。各ハードウェアは、情報処理装置50bのバスに接続される。バスは、例えばPCIeバスである。
CPU51、RAM52、HDD53、NIC54、出力IF55、入力IF56および媒体リーダ57は、図7に示した同名のハードウェアと同様である。
最適化装置500は、確率的探索部100と同様に、CPU51の指示に応じて、最適化問題の演算を実行する。最適化装置500は、例えば、1チップの半導体集積回路であり、FPGA等を用いて実現される。最適化装置500は、オフセット増分値Δyを計算する専用のハードウェアを有する。
図18は、最適化装置の回路例を示す図である。
最適化装置500は、遷移制御部510、ΔE保持部520、入力部530、ΔE選択部540、Δy計算部550、更新制御部570およびイタレーションカウンタ560を有する。ここで、最適化装置500は、図8に例示した状態保持部110、エネルギー計算部120および制御部140に相当する回路も有するが、図18では図示を簡単にするため省略している。
遷移制御部510は、図1に示す遷移制御部16と同様の機能を実現する。遷移制御部510は、熱励起エネルギー生成部511、オフセット加算回路512、オフセット制御回路513、比較器514およびセレクタ515を有する。熱励起エネルギー生成部511、オフセット加算回路512、オフセット制御回路513、比較器514およびセレクタ515は、図1に示した同名の回路要素と同様である。なお、遷移制御部510には、判定結果等を保持するラッチやそのタイミングを発生するステートマシン等も存在するが、図18では図示を簡単にするため省略されている。
ΔE保持部520は、最小エネルギー更新信号Mが供給されると、そのときの{ΔE}={ΔEminを保持する。ΔE保持部520は、図1に示した保持部15に相当する。
入力部530は、CPU51による識別情報kの入力を受け付け、ΔE選択部540に識別情報kを供給する。入力部530は、CPU51による係数情報αの入力を受け付け、Δy計算部550に係数情報αを供給する。
ΔE選択部540は、ΔE保持部520に保持されたエネルギー変化値{ΔEminのうち、上位k番目(小さい方から数えてk番目)のΔEを選択する。ΔE選択部540は、Δy計算部550にΔEを供給する。ΔE選択部540の回路例は後述される。
Δy計算部550は、オフセット増分値Δy=max(0,α×ΔE)を計算し、オフセット増分値Δyを更新制御部570に供給する。
イタレーションカウンタ560は、状態遷移のイタレーション回数を計数するカウンタである。
更新制御部570は、イタレーションカウンタ560により計数されたイタレーション回数が一定回数(p_itr)に達するたびに、累積器513aに供給するオフセット増分値Δyを更新する。
次に、ΔE選択部540の回路例を説明する。
図19は、ΔE選択部の回路例を示す図である。
ΔE選択部540は、レジスタ54a1,54a2,…,54a(n-1),54anを有する。レジスタ54a1~54anは、スピンビット毎に設けられる。レジスタ54a1~54anのそれぞれは、各スピンビットに対応するΔE(=ΔE,ΔE,…,ΔEn-1,ΔE)およびインデックス(index=1,2,…,n-1,n)が格納される。ここで、各スピンビットに対応するΔEは、ΔE保持部520により、ΔE選択部540に供給される。
ΔE選択部540は、ツリー状に多段に接続された複数のセレクタを有する。当該複数のセレクタは、レジスタ54a1~54anのそれぞれに格納されたΔEのうち、小さい方から数えてk番目のΔEを選択する。
1段目のセレクタ54b1~54bmのそれぞれは、前段のレジスタ54a1~54anのうちの隣り合う2つのレジスタに格納されたΔEおよびインデックスの2つの組のうち、ΔEが小さい方を選択して出力する。セレクタ54b1~54bmの数mは、m=n/2である。
2段目のセレクタ54c1~54cpのそれぞれは、前段のセレクタ54b1~54bmのうちの隣り合う2つのセレクタから出力されたΔEおよびインデックスの2つの組のうち、ΔEが小さい方を選択して出力する。セレクタ54c1~54cpの数pは、p=m/2である。
3段目以降も同様に、3段目以降のセレクタにより、隣り合う2つの前段セレクタから出力されたΔEおよびインデックスの2つの組からΔEが小さい方が選択される。そして、最終段のセレクタ54q1に、2つの前段セレクタからΔEおよびインデックスの2つの組が入力される。セレクタ54q1により、入力された2つの組のうちΔEが小さい方を選択することで、最終的に1つに絞り込まれたΔE=ΔEminおよびインデックス(minインデックス)の組が、セレクタ54q1により出力される。
こうして、セレクタ54b1~54q1により、レジスタ54a1~54anに格納された(有効な)ΔEのうちの最小値ΔEminが選択される。
セレクタ54q1は、レジスタ54a1~54anに格納されたインデックスのうち、minインデックスに相当するインデックスを無効値(例えば、-1)に設定する。レジスタ54a1~54anにおいて、インデックスに無効値が設定されると、当該インデックスに対応するΔEが無効になる。すると、セレクタ54b1~54q1による次の選択では、前回選択されたΔEminを除いて、最小のΔE=ΔEminが選択される。
次に、ΔE選択部540による選択論理を具体的に説明する。以下の説明では、セレクタ54b1~54q1のそれぞれの2つの入力に対応するインデックスのうち、図面に向かって左側(インデックスが小さい方)を「インデックスL」、右側(インデックスが大きい方)を「インデックスR」と呼ぶことがある。図19では、一例として、セレクタ54b1の入力に、インデックスLを示す「L」、および、インデックスRを示す「R」を図示している。
図20は、ΔE選択部の選択論理の例を示す図である。
選択論理Z1は、セレクタ54b1~54q1のそれぞれによる選択論理の一例を示す。選択論理Z1では、インデックスL、インデックスR、ΔEとΔEの関係および選択結果の項目が示されている。
インデックスLは、セレクタ54b1~54q1のそれぞれに入力されるインデックスのうちの小さい方を示す。インデックスRは、セレクタ54b1~54q1のそれぞれに入力されるインデックスのうちの大きい方を示す。ΔEは、インデックスLに対応するエネルギー変化値である。ΔEは、インデックスRに対応するエネルギー変化値である。ΔEとΔEの関係は、ΔEとΔEの大小関係を示す。選択結果は、インデックスL、インデックスRおよびΔEとΔEの関係に応じたセレクタ54b1~54q1のそれぞれによる選択結果を示す。図中の「d/c」はドントケアを示し、選択結果に影響を与えないことを示す。
例えば、インデックスL,Rが「0以上」かつΔEとΔEの関係が「ΔE≦ΔE」の場合、セレクタ54b1~54q1のそれぞれは、インデックスLおよびΔEの組を選択する。
また、インデックスL,Rが「0以上」かつΔEとΔEの関係が「ΔE>ΔE」の場合、セレクタ54b1~54q1のそれぞれは、インデックスRおよびΔEの組を選択する。
また、インデックスLが「-1」(無効値)かつインデックスRが「0以上」の場合、セレクタ54b1~54q1のそれぞれは、インデックスRおよびΔEの組を選択する。
また、インデックスLが「0以上」かつインデックスRが「-1」の場合、セレクタ54b1~54q1のそれぞれは、インデックスLおよびΔEの組を選択する。
また、インデックスL,Rが「-1」(無効値)の場合、セレクタ54b1~54q1のそれぞれは、インデックスLおよびΔEの組を選択する。
次に、選択論理Z1によるΔE選択部540の選択例を説明する。
図21は、ΔE選択部による選択例を示す図である。
例えば、ΔE選択部540による1回目の選択の結果、セレクタ54q1はレジスタ54a4に格納されたインデックスを「-1」(無効値)に設定する(ステップST11)。すると、レジスタ54a4に格納されたΔEは、ΔE選択部540による以降の選択の候補から除外される。
次に、ΔE選択部540による2回目の選択の結果、セレクタ54q1はレジスタ54a(n-2)に格納されたインデックスを「-1」(無効値)に設定する(ステップST12)。すると、レジスタ54a(n-2)に格納されたΔEn-2は、ΔE選択部540による以降の選択の候補から除外される。
次に、ΔE選択部540による3回目の選択の結果、セレクタ54q1はレジスタ54a3に格納されたインデックスを「-1」(無効値)に設定する(ステップST13)。すると、レジスタ54a3に格納されたΔEは、ΔE選択部540による以降の選択の候補から除外される。
こうして、セレクタ54q1による「-1」(無効値)の設定をk-1回行った状態で出力されるΔEminをΔEとして採用することで、ΔE保持部520に格納された{ΔEminのうちの上位k番目のΔEを選択することができる。例えば、k=10の場合、セレクタ54q1による「-1」の設定を9回繰り返すことで、所望のΔEを得ることができる。そして、Δy計算部74は、ΔE選択部540により選択されたΔEに基づいて、オフセット増分値Δyを計算する。
このように、第2,第3の実施の形態で例示したCPU51により実現されるΔy計算部71やΔy計算部74の機能をハードウェアにより実現することもできる。Δy計算機能をハードウェアにより実現することで、図11に示したステップST2,ST4の間、および、ステップST4,ST6の間のΔy計算ステップの所要時間が短縮され、解の精度の悪化を抑えながら、最適化問題の計算時間を一層短縮できる。
なお、第1の実施の形態の最適化装置10の制御は、最適化装置10が備えるCPU等のプロセッサにプログラムを実行させることで実現できる。また、第2,第3,第4の実施の形態の最適化装置50,50a,500の制御は、CPU51にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体63に記録できる。
例えば、プログラムを記録した記録媒体63を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体63に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM62やHDD63等の記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 最適化装置
11 入力部
12 状態保持部
13 エネルギー計算部
14 温度制御部
15 保持部
16 遷移制御部
17 計算部
21 熱励起エネルギー生成部
22 オフセット加算回路
22a 減算器
23 オフセット制御回路
23a 累算器
24 比較器
25 セレクタ
31 選択部
32 乗算器

Claims (9)

  1. エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
    前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第1の変化値を複数の状態遷移のそれぞれに対して計算するエネルギー計算部と、
    温度を示す温度値を制御する温度制御部と、
    前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第2の変化値を、識別情報に対応して複数のエントリにそれぞれ保持する保持部と、
    前記温度値と前記第1の変化値と乱数値とに基づいて、前記第1の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第2の変化値に対して係数情報を乗じたオフセット値を前記第1の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部と、
    を有することを特徴とする最適化装置。
  2. 前記最適化装置はさらに、前記識別情報と前記係数情報とを入力する入力部を有することを特徴とする請求項1記載の最適化装置。
  3. 前記保持部は、前記エネルギー値の最小値が更新された場合、前記最小値における状態からの状態遷移に応じた前記エネルギー値の変化値により、保持する前記第2の変化値を更新する、
    ことを特徴とする請求項1又は2記載の最適化装置。
  4. 前記識別情報は、1以上かつ前記複数の状態変数の数よりも小さい整数kを示し、
    前記保持部に保持される複数の第2の変化値のうち、絶対値の小さい方から数えてk番目に相当する前記第2の変化値を選択し、選択した前記第2の変化値に前記係数情報を乗じることでオフセット増分値を計算する計算部、
    を更に有することを特徴とする請求項2又は3記載の最適化装置。
  5. 前記計算部は、前記複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに前記保持部が保持する複数の第2の変化値を取得し、前記オフセット増分値を更新する、
    ことを特徴とする請求項4記載の最適化装置。
  6. 前記遷移制御部は、前記複数の状態遷移の何れも受け入れない場合、前記複数の状態遷移の何れも受け入れないと継続して決定した期間の長さに比例した回数で前記オフセット値を累算した値を前記第1の変化値に加え、前記複数の状態遷移の何れかを受け入れる場合、前記オフセット値を0にする、
    ことを特徴とする請求項1記載の最適化装置。
  7. 前記エネルギー値の最小値が更新された場合、前記最小値における前記複数の状態変数の値を保持する最小エネルギー状態保持部と、
    前記複数の状態変数に関する状態遷移の可否の決定を一定回数行うごとに、前記最小エネルギー状態保持部に保持された前記複数の状態変数の値に基づいて、前記最小値における状態からの状態遷移のそれぞれに対応する前記第2の変化値を計算し、前記第2の変化値を前記保持部に格納する演算部と、
    を更に有することを特徴とする請求項1記載の最適化装置。
  8. エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部を有する最適化装置の制御方法において、
    前記最適化装置が有するエネルギー計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第1の変化値を複数の状態遷移のそれぞれに対して計算し、
    前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
    前記最適化装置が有する保持部が、前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第2の変化値を、識別情報に対応して複数のエントリにそれぞれ保持し、
    前記最適化装置が有する遷移制御部が、前記温度値と前記第1の変化値と乱数値とに基づいて、前記第1の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第2の変化値に対して係数情報を乗じたオフセット値を前記第1の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する、
    ことを特徴とする最適化装置の制御方法。
  9. エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部を有する最適化装置の制御プログラムにおいて、
    前記最適化装置が有するエネルギー計算部に、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の第1の変化値を複数の状態遷移のそれぞれに対して計算させ、
    前記最適化装置が有する温度制御部に、温度を示す温度値を制御させ、
    前記最適化装置が有する保持部に、前記エネルギー計算部が計算した所定回数の状態遷移のそれぞれに対応する前記エネルギー値の第2の変化値を、識別情報に対応して複数のエントリにそれぞれ保持させ、
    前記最適化装置が有する遷移制御部に、前記温度値と前記第1の変化値と乱数値とに基づいて、前記第1の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、入力された前記識別情報に基づいて前記複数のエントリから選択される何れかのエントリが保持する前記第2の変化値に対して係数情報を乗じたオフセット値を前記第1の変化値に加えることにより、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定させる、
    ことを特徴とする最適化装置の制御プログラム。
JP2018212135A 2018-11-12 2018-11-12 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム Active JP7181454B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018212135A JP7181454B2 (ja) 2018-11-12 2018-11-12 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US16/679,124 US11562210B2 (en) 2018-11-12 2019-11-08 Stochastically determining to accept a state transition for an optimization device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018212135A JP7181454B2 (ja) 2018-11-12 2018-11-12 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム

Publications (2)

Publication Number Publication Date
JP2020079991A JP2020079991A (ja) 2020-05-28
JP7181454B2 true JP7181454B2 (ja) 2022-12-01

Family

ID=70550527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018212135A Active JP7181454B2 (ja) 2018-11-12 2018-11-12 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム

Country Status (2)

Country Link
US (1) US11562210B2 (ja)
JP (1) JP7181454B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7174244B2 (ja) * 2018-12-26 2022-11-17 富士通株式会社 最適化装置及び最適化装置の制御方法
JP2023049630A (ja) 2021-09-29 2023-04-10 富士通株式会社 最適化プログラム、最適化方法および最適化装置
CN115858999B (zh) * 2023-02-07 2023-04-25 华南理工大学 一种基于改进模拟退火算法的组合优化问题处理电路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063626A (ja) 2016-10-14 2018-04-19 富士通株式会社 最適化装置及び最適化装置の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139414B2 (ja) 1997-05-29 2001-02-26 日本電気株式会社 生体内活動部位推定方法及び生体内活動部位推定装置
US8296120B2 (en) * 2008-06-20 2012-10-23 Utah State University FPGA simulated annealing accelerator
JP2014160457A (ja) 2013-02-20 2014-09-04 Nec Corp 対話的変数選択装置、対話的変数選択方法および対話的変数選択プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063626A (ja) 2016-10-14 2018-04-19 富士通株式会社 最適化装置及び最適化装置の制御方法

Also Published As

Publication number Publication date
JP2020079991A (ja) 2020-05-28
US20200151548A1 (en) 2020-05-14
US11562210B2 (en) 2023-01-24

Similar Documents

Publication Publication Date Title
JP7206476B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7108185B2 (ja) 最適化装置および最適化装置の制御方法
JP7071638B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7181454B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7319539B2 (ja) 組合せ最適化装置、組合せ最適化方法および組合せ最適化プログラム
US11645496B2 (en) Optimization apparatus and optimization apparatus control method
JP2021033341A (ja) 最適化装置および最適化装置の制御方法
CN113536229A (zh) 采样装置、采样方法以及用于存储采样程序的存储介质
US20200363848A1 (en) Optimization device and method of controlling optimization device
JP2021135744A (ja) 情報処理装置、情報処理方法およびプログラム
JP7111966B2 (ja) 最適化装置及び最適化装置の制御方法
US20220012291A1 (en) Information processing system, information processing method, and non-transitory computer-readable storage medium for storing program
US20210334332A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program
JP7339539B2 (ja) 最適化装置、最適化装置の温度設定方法及び最適化装置の温度設定プログラム
JP7256378B2 (ja) 最適化システムおよび最適化システムの制御方法
JP7219402B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
WO2020054046A1 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
JP2023061477A (ja) プログラム、データ処理方法及びデータ処理装置
US20240111833A1 (en) Data processing apparatus and data processing method
US20220092380A1 (en) Optimization device, optimization method, and computer-readable recording medium storing optimization program
JP2024077351A (ja) データ処理装置、プログラム及びデータ処理方法
JP2023028347A (ja) プログラム、データ処理方法及びデータ処理装置
CN116894496A (zh) 信息处理设备和信息处理方法
JP2022161128A (ja) プログラム、データ処理方法及びデータ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210820

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221031

R150 Certificate of patent or registration of utility model

Ref document number: 7181454

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150