JP7108185B2 - 最適化装置および最適化装置の制御方法 - Google Patents

最適化装置および最適化装置の制御方法 Download PDF

Info

Publication number
JP7108185B2
JP7108185B2 JP2018219079A JP2018219079A JP7108185B2 JP 7108185 B2 JP7108185 B2 JP 7108185B2 JP 2018219079 A JP2018219079 A JP 2018219079A JP 2018219079 A JP2018219079 A JP 2018219079A JP 7108185 B2 JP7108185 B2 JP 7108185B2
Authority
JP
Japan
Prior art keywords
temperature
value
search
state
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018219079A
Other languages
English (en)
Other versions
JP2020086821A (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 JP2018219079A priority Critical patent/JP7108185B2/ja
Priority to US16/583,344 priority patent/US11262717B2/en
Priority to EP19200238.4A priority patent/EP3660705A1/en
Priority to CN201910993506.XA priority patent/CN111210046B/zh
Publication of JP2020086821A publication Critical patent/JP2020086821A/ja
Application granted granted Critical
Publication of JP7108185B2 publication Critical patent/JP7108185B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • 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
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/50Machine tool, machine tool null till machine tool work handling
    • G05B2219/50333Temperature

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • Operations Research (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Tourism & Hospitality (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Automation & Control Theory (AREA)
  • Feedback Control In General (AREA)
  • Probability & Statistics with Applications (AREA)
  • Development Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)

Description

本発明は最適化装置および最適化装置の制御方法に関する。
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置で行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の1つとして最適化というものがあり重要な分野となっている。例えばあることを行うのに必要な資源やコストを最小化したり、その効果を最大化する解を求める問題などであり、これらが非常に重要であるのは明らかであろう。
最適化問題の中でも離散最適化問題、組合せ最適化問題などと呼ばれている問題の多くは、変数が連続値ではなく離散的な値を取るため解くのが非常に難しいことが知られている。離散最適化問題を解くのを困難にしている最大の原因は、最適解ではないが局所的近傍のなかで最小値をとる局所解と呼ばれる状態が非常に多数存在することである。
離散最適化問題を解く効率の良い一般解法は存在しないため、問題に固有な性質を利用した近似解法や、問題の性質にあまり頼らないメタヒューリステックと呼ばれる方法を用いる必要がある。
以下に説明する内容は、後者のうちマルコフ連鎖モンテカルロ法を用いた解法に関するもので、特に交換モンテカルロ法、又はレプリカ交換法と呼ばれる広い意味での疑似焼き鈍し法に関するものである。
疑似焼き鈍し法は、乱数を用いて確率的に状態(変数ベクトルの値)を変化させることで最適解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
疑似焼き鈍し法においては、状態遷移の受け入れ(許容)確率を、その遷移に伴うエネルギー変化と温度を用いて次のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
Figure 0007108185000001
Figure 0007108185000002
Figure 0007108185000003
式(2)はメトロポリス法である。式(3)はギブス法である。式(2),(3)は何れか一方が用いられる。
ここで、Tは温度を表すパラメータであり、その初期値は問題に応じて十分大きくとり、十分ゆっくり下げていくことが必要となる。
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上記のように温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では理論的に収束することが保証される温度変化ではなくより速く温度を下げることが多い。
実際の疑似焼き鈍し法では、初期状態から始めて、温度を下げながら上記反復が繰り返され、一定の反復回数に達したり、エネルギーが一定の値を下回るなどの終了判定条件が満たされたとき、動作が終了する。出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度が0にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布をもっており、必ずしも最適値や良い解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
上記の説明からある程度想像できると思われるが、疑似焼き鈍し法は汎用的で非常に魅力的ではあるが、温度をゆっくり下げる必要があるため計算時間が比較的長くなってしまうという問題がある。さらにその温度の下げ方を問題に合わせて適切に調節することが難しいという問題もある。温度の下げ方が遅すぎると有限時間ではあまり温度が下がらないため、最終的な熱分布のエネルギー範囲が広くなることから良い解の占有確率が上がらない。逆に速く下げすぎると、局所解を脱出する前に温度が下がってしまい、悪い解に捕まったままになってしまうため、良い解が得られる確率が下がってしまう。
レプリカ交換法は複数の温度を用いたモンテカルロ探索(以下、「確率的探索」という)を同時に行い、ある反復回数ごとに、それぞれの状態のエネルギーを比較し、適切な確率で2つの温度に対する状態を交換するという操作を行う方法である。
図25は、通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。最適化装置50は、通常の疑似焼き鈍し法を用いた最適化装置と異なり、複数のレプリカ(図25では探索部51a1,51a2,…,51ai,…,51an)と、交換制御部52とを有する。交換制御部52は、探索部51a1~51anに温度情報(以下では逆温度βi(Tの逆数)(1≦i≦n)とする)を与える。
図25には、探索部51aiの例が示されている。他の探索部も同様の構成である。探索部51aiは、状態保持部60、エネルギー計算部61、遷移制御部62を有する。
状態保持部60は、評価関数に含まれる複数の状態変数の値を保持する。また、状態保持部60は、状態遷移の可否を示すフラグfと、そのフラグfが示す状態変数の番号(インデックス)Nに基づいて、複数の状態変数の値(上記変数ベクトルの値)である状態sを更新する。
エネルギー計算部61は、状態変数の変化(状態遷移)に伴うエネルギー変化を計算する。例えば、評価関数が2つの状態変数間の結合で表されるイジングモデルで表され、しかも一度に1つの状態変数の遷移のみを許す場合、エネルギー計算部61は、各状態変数の値と、状態変数間の結合の強さを示す結合係数と、番号Nと、フラグfとに基づいて、複数の状態変数のそれぞれの変化(状態遷移)に伴うエネルギー変化を計算する。エネルギー変化ΔEijは、j番目の状態変数の変化に伴うエネルギー変化を示す。なお、計算したい最適化問題に応じた結合係数の値は、予めメモリ又はレジスタなどに記憶されている。評価関数がイジングモデルでない場合、及び一度に複数の状態変数の遷移を許す場合には、状態遷移の番号と変化する状態変数の番号は必ずしも一致しないが、状態遷移の番号に対するエネルギー変化を適切に計算できればよい。エネルギー計算部61は、例えば、積和演算回路などの論理回路を用いて実現できる。
遷移制御部62は、通常の疑似焼き鈍し法と同様に、エネルギー変化ΔEijと交換制御部52により割り当てられた逆温度βを用いて、j番目の状態変数の状態遷移の受け入れ確率を以下の式(4)により決定することで、確率的探索を行う。
Figure 0007108185000004
なお、式(4)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。遷移制御部62は、上記の状態遷移の受け入れ確率に基づいて、状態遷移の可否を示すフラグfと、そのフラグfが示す状態遷移の番号を出力する。また、遷移制御部62は、エネルギー変化ΔEijに基づいて、エネルギーEを更新して出力する。
交換制御部52は、一定の反復回数ごとに各探索部におけるエネルギーEを観測し、探索部51a1~51anのうちの2つにおけるエネルギーEと逆温度βを用い、以下の式(5)で表される交換確率に基づいて2つの探索部における各状態変数の値を交換する。状態変数の値の代りに、2つの探索部の各々に供給される逆温度を交換してもよい。
Figure 0007108185000005
なお、式(5)では、βを探索部51aiに与えられた逆温度、βを図示しないj番目の探索部に与えられた逆温度、Eを探索部51aiにおけるエネルギー、Eをj番目の探索部におけるエネルギーとしている。また、式(5)において、関数fは式(1)と同じものであり、例えば式(2)のメトロポリス法のものが用いられる。
このような交換を行ってもそれぞれの温度の状態の確率分布はその温度に対するボルツマン分布に収束する。そして、この分布に収束するのに必要とされる緩和時間は、交換を行わない時より著しく短縮することができる。
なお、交換が行われる2つの探索部は、交換確率が小さくなりすぎないように、供給される温度が近いもの(例えば、隣接温度が供給されるもの)が選択される。
最適化装置50において、多数回の反復処理を行う探索部51a1~51anを専用の回路で実現し、交換制御部52の機能をソフトウェアで実現する場合、ポインタ渡しにより、温度が近い2つの探索部の各状態変数の値(又は温度情報)を交換すればよい。この場合、交換ごとに温度の低い順又は高い順に探索部51a1~51anを識別する情報を並べるソート処理などを行わなくてよい。
例えば、異なる温度が設定された複数のネットワーク(アンサンブルと呼ばれる)で確率的探索を行う情報処理装置が提案されている(例えば、特許文献1参照)。提案の情報処理装置は、温度が隣接して設定されているアンサンブル間で各アンサンブルのエネルギーの差分に応じ、各アンサンブルのノードの状態を交換する。これにより、局所解に陥ることが防止され、より高速に最適値に収束させる。
また、シミュレーティド・アニーリング処理手段が第1の温度の下で効率的に動作するように、シミュレーティド・アニーリングのアルゴリズムの実行を制御するパラメータを変更する温度並列シミュレーティド・アニーリング用恒温槽装置が提案されている(例えば、特許文献2参照)。提案の装置は、設定された条件でシミュレーティド・アニーリング処理を行い、このシミュレーティド・アニーリング処理の結果得られた状態を、第2の温度の下でシミュレーティド・アニーリング処理を行うことにより得られた状態と確率的に交換する。
なお、初期世代又は第2世代以降の任意の世代に属する遺伝子毎にハミング距離と適合度との2軸で張られた平面上の頻度分布を求め、この頻度分布に応じて遺伝的アルゴリズムのパラメータを変更する解析システムの提案もある(例えば、特許文献3参照)。
特開2018-5541号公報 特開平9-231197号公報 特開平9-325949号公報
上記のように異なる温度が設定された複数の探索部で確率的探索を行う場合、各探索部に設定される温度によっては求解性能が低下するという問題がある。
1つの側面では、本発明は、解精度を向上させることが可能な最適化装置および最適化装置の制御方法を提供することを目的とする。
1つの態様では、複数の探索部と複数の探索部を制御する制御部を有する最適化装置が提供される。複数の探索部の各々は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の変化値を複数の状態遷移のそれぞれに対して計算することにより基底状態探索を行うエネルギー計算部と、設定された温度値と変化値と乱数値とに基づいて、エネルギー値の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部とを有する。制御部は、複数の探索部の各々における温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した温度統計情報に基づいて複数の探索部の各々に設定する温度値を決定する温度調整部と、決定した温度値を複数の探索部の各々に対して設定する温度制御部と、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、複数の探索部間で温度値又は複数の状態変数の値を入れ替える交換制御部と、を有する。
また、1つの態様では、最適化装置の制御方法が提供される。
1つの側面では、解精度を向上できる。
第1の実施の形態の最適化装置を示す図である。 最適化装置の回路構成例を示す図である。 状態遷移判定回路の回路構成例を示す図である。 セレクタ部の回路構成例を示す図である。 温度調整部の回路構成例を示す図である。 レジスタに格納されるデータ例を示す図である。 データ取得のアルゴリズムの例を示す図である。 最低エネルギーおよび温度の変化例を示す図である。 温度ヒストグラムの例を示す図である。 累積ヒストグラムの例を示す図である。 レプリカ交換の全体制御例を示すフローチャートである。 探索部処理例を示すフローチャートである。 データ収集処理例を示すフローチャートである。 交換制御例を示すフローチャートである。 処理の流れの例(その1)を示す図である。 処理の流れの例(その2)を示す図である。 最適化装置の他のハードウェア例を示す図である。 第2の実施の形態の最適化装置の回路構成例を示す図である。 温度調整部の回路構成例を示す図である。 レジスタに格納されるデータ例を示す図である。 レプリカ交換の全体制御例を示すフローチャートである。 データ収集処理例を示すフローチャートである。 交換制御例を示すフローチャートである。 解の個数の例を示す図である。 通常のレプリカ交換法を用いた最適化装置の構成例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置1は、複数の探索部(探索部10a1,10a2,…,10aN)および制御部20を有する。Nは2以上の整数であり、探索部の数に相当する。探索部10a1~10aNの各々は、状態保持部とエネルギー計算部と遷移制御部とを有する。例えば、探索部10a1は、状態保持部11とエネルギー計算部12と遷移制御部13とを有する。
状態保持部11は、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。図1では、探索部10a1におけるエネルギー値をEで表し、探索部10a1における複数の状態変数の値をsで表している。
エネルギー計算部12は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギー値の変化値(ΔE1j)を複数の状態遷移のそれぞれに対して計算することにより基底状態探索を行う。
遷移制御部13は、設定された温度値と変化値と乱数値とに基づいて、エネルギー値の変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。遷移制御部13は、前述のように、式(4)に基づいて、状態遷移の可否を判定し、状態遷移の可否を示すフラグfと、そのフラグfが示す状態遷移の番号を出力する。図1では、フラグfが示す状態遷移の番号をindexで表している。
探索部10a1~10aNは、並列に動作して、上記の基底状態探索を行う。
制御部20は、探索部10a1~10aNを制御する。制御部20は、温度調整部21、温度制御部22および交換制御部23を有する。
温度調整部21は、探索部10a1~10aNの各々における温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した温度統計情報に基づいて探索部10a1~10aNの各々に設定する温度値を決定する。探索部10a1~10aNの数はN個なので、設定される温度値の数はN個である。N個の温度値は互いに異なる。例えば、温度値は、温度T,T,…,Tの逆数である逆温度β,β,…,β(β=1/T)でもよい。
温度制御部22は、決定した温度値を探索部10a1~10aNの各々に対して設定する。
交換制御部23は、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、複数の探索部間で温度値又は複数の状態変数の値を入れ替える。交換制御部23は、探索部10a1~10aNの各々からエネルギー値E,E,…,Eを取得し、前述のように、式(5)に基づいて、探索部間で温度値を入れ替えるか否かを決定する。又は、交換制御部23は、探索部間で温度値を入れ替えるか否かの決定に代えて、式(5)に基づいて、探索部間で複数の状態変数の値を入れ替えるか否かを決定してもよい。
ここで、温度調整部21による温度決定例を説明する。例えば、温度調整部21は、取得した温度統計情報のうち、温度値の遷移に関し、各温度値の出現頻度を計数した温度頻度情報において、出現頻度の最大値に対応する温度値を探索部10a1~10aNの各々に設定してもよい。
より具体的には、温度調整部21は、いずれかの探索部でエネルギー値の最小値が更新された場合に、当該エネルギー値の最小値の前回の更新から今回の更新までに該当の探索部に設定された温度のうちの最高の温度値を、温度統計情報として取得する。例えば、温度調整部21は、取得した温度値の出現頻度を温度値毎に計数したヒストグラムにおいて、出現頻度が最大である温度値を特定し、特定した温度値に基づいて、探索部10a1~10aNの各々に設定する温度値を計算する。
一例では、温度調整部21は、式(6),(7)により、N個の温度値のうちのi番目の温度tmp[i](i=1,2,…,N)を計算する。
Figure 0007108185000006
Figure 0007108185000007
max_tmpは、設定温度の最高値であり、上記ヒストグラムにおいて出現頻度が最大である温度値である。min_tmpは、設定温度の最低値であり、予め与えられる。このように、温度調整部21は、取得した温度統計情報から温度値の最高値max_tmpを決定し、最高値max_tmpに基づいて探索部10a1~10aNの各々に設定する温度値を決定する。設定温度の最高値max_tmpを、上記のように温度統計情報において出現頻度が最大である温度値とする理由は、当該出現頻度が最大である温度値を最高値として用いることで探索部のエネルギー値の最小値を更新できる可能性が高いと推定されるからである。ただし、最高値max_tmpを、例えば、出現頻度が最大である温度値よりも所定値(あるいは所定割合)だけ高い温度としてもよい。
あるいは、温度調整部21は、取得した温度統計情報のうち、温度値の遷移に関し、各温度値の出現頻度を累積した累積頻度を表す温度累積頻度情報において、累積頻度の最大値に所定係数を乗じて得られた頻度に対応する温度値を探索部10a1~10aNの各々に設定してもよい。
より具体的には、温度調整部21は、上記ヒストグラムにおける各温度値の出現頻度を、温度値の小さい方から累積した累積頻度を温度累積頻度情報として取得する。そして、温度調整部21は、当該累積頻度を表す累積ヒストグラムにおける累積頻度の最大値に所定係数を乗じた頻度に対応する温度値を特定し、特定した温度値に基づいて、探索部10a1~10aNの各々に設定する温度値を計算する。すなわち、温度調整部21は、当該特定した温度値を最高値max_tmpとして、式(6),(7)により、温度tmp[i]を計算する。
なお、温度調整部21により決定された温度tmp[i](温度値)は、温度制御部22により、探索部10a1~10aNの各々に設定されてもよい。
また、温度調整部21は、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、探索部10a1~10aNの各々からエネルギー値を取得し、エネルギー値の最小値が更新されたか否かを、複数の探索部の各々に対して確認する。例えば、温度調整部21は、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後における、交換制御部23による複数の探索部間での温度値(又は複数の状態変数の値)の入れ替えの前に、エネルギー値の最小値が更新されたか否かの確認を行う。
そして、温度調整部21は、探索部10a1~10aNの各々に第1の温度値が設定されている所定期間で温度統計情報を取得し、所定期間の終了後に、温度統計情報に基づいて探索部10a1~10aNの各々に設定する第2の温度値を決定する。
例えば、温度調整部21は、探索部10a1~10aNによる基底状態探索の全期間のうちの初期の一部期間において温度統計情報を取得し、当該温度統計情に基づいて温度tmp[i]を決定する。制御部20は、決定した温度tmp[i]を用いて、残りの期間での探索部10a1~10aNによる基底状態探索を継続させる。
あるいは、温度調整部21は、探索部10a1~10aNによる基底状態探索の全期間に関して所定の部分期間毎に温度統計情報を取得し、部分期間後に温度tmp[i]を決定してもよい。そして、制御部20は、前回の部分期間で取得した温度統計情報を基に決定した温度tmp[i]を、次回の部分期間で用いて、探索部10a1~10aNによる基底状態探索を継続させてもよい。
ここで、「期間」は、探索部10a1~10aNによる基底状態探索の繰り返し回数により定められてもよいし、時間間隔により定められてもよい。
ところで、上記のようにレプリカ交換法を用いて最適化演算を行うことが考えられる。レプリカ交換法は、複数のレプリカと呼ばれる系において各々異なる温度で基底状態探索を行い、ある周期で、エネルギーと温度から決定される遷移確率に従って、例えば隣接する系の温度、又は状態(複数の状態変数の値)を交換する方法である。レプリカ交換法によれば、温度が低下したときに局所解に陥っても、レプリカ交換により一度高い温度まで上がって再び大域解を探索でき、複雑な温度スケジューリングを考えなくても、高速に解を求められる。しかし、各レプリカに設定する温度を適切に決める必要があり、温度(特に、温度の最高値)が高過ぎても低過ぎても解精度が低下し、探索に時間がかかる問題がある。また、温度を適切に決定するために、幾つもの温度のパラメータで何度も最適化演算を行っていると非常に大きな手間と時間を要し、ユーザの利便性を損なう問題もある。
最適化装置1では、上記のように、レプリカ(例えば、探索部)の最低エネルギーが更新される間に当該レプリカが到達した最高温度の統計情報を取得し、統計情報に基づいて探索部10a1~10aNの設定温度を決定する。このように、最適化装置1は、実際の演算過程で取得された温度の統計情報により、その後の演算に用いる温度を適応的に決定することで、解精度の向上を図れる。また、演算の高速化を図れる。すなわち、求解性能が向上する。更に、温度調整の手間を省くことができ、ユーザの利便性を向上できる。
次に、最適化装置1の回路構成例を説明する。以下では、最適化問題がイジングモデルで表される場合を例示する。まず、探索部10a1~10aNにおける温度を交換する場合を例示する。その後、第2の実施の形態として、探索部10a1~10aNにおける複数の状態変数の値を交換する場合を例示する。
図2は、最適化装置の回路構成例を示す図である。
最適化装置1は、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のスピンビットのそれぞれの値の組合せ(状態)のうち、評価関数が最小値となるときの各スピンビットの値(基底状態)を探索する。
イジング型の評価関数E(x)は、例えば、以下の式(8)で定義される。
Figure 0007108185000008
右辺第1項は、イジングモデルに含まれる全スピンビットから選択可能な2つのスピンビットの全組合せについて、漏れと重複なく、2つのスピンビットの値(0又は1)と結合係数との積を積算したものである。イジングモデルに含まれる全スピンビット数をn個(nは2以上の整数)とする。例えば、n=1024である。また、i,jの各々を、1以上n以下の整数とする。xは、i番目のスピンビットの値を表す変数(状態変数とも呼ばれる)である。xは、j番目のスピンビットの値を表す変数である。Wijは、i番目とj番目のビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(すなわち、重み係数による係数行列は対称行列である場合が多い)。
右辺第2項は、全スピンビットのそれぞれのバイアス係数とスピンビットの値との積の総和を求めたものである。bは、i番目のスピンビットのバイアス係数を示している。
また、変数xの値が変化して1-xとなると、変数xの増加分は、δx=(1-x)-x=1-2xと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEは、以下の式(9)で表される。
Figure 0007108185000009
はローカルフィールド(局所場)と呼ばれ、式(10)で表される。
Figure 0007108185000010
δxに応じてローカルフィールドhに符号(+1又は-1)を乗じたものがエネルギー変化ΔEとなる。ある変数xが変化したときのローカルフィールドhの変化分δh (j)は式(11)で表される。
Figure 0007108185000011
ある変数xが変化したときのローカルフィールドhを更新する処理は各変数に対して並列に行われる。
最適化装置1は、例えば、FPGA(Field Programmable Gate Array)などの半導体集積回路を用いて実現される。最適化装置1は、図1で例示した探索部10a1~10aN、温度調整部21、温度制御部22および交換制御部23に加えて、全体制御部24を有する。なお、図2の例では、交換制御部23は温度制御部22に含まれるため、交換制御部23の図示を省略している。
探索部10a1~10aNの各々は、式(8)で表されるイジング型の評価関数に基づく基底状態探索を下記のような回路により実現する。以下では、探索部10a1を主に説明するが、探索部10a2~10aNも同様の回路構成となる。
探索部10a1は、状態保持部11、レジスタ12a1,12a2,…,12an,h計算部12b1,12b2,…,12bn、ΔE生成部12c1,12c2,…,12cn、加算器13a1,13a2,…,13an、状態遷移判定回路13b1,13b2,…,13bn、セレクタ部13c、オフセット制御部13dおよびE計算部14を有する。
図2では、h計算部12b1~12bnに対し、i番目のスピンビットに対応することが分かり易い様に「h」計算部のように添え字を付して名称を表記している。また、図2では、ΔE生成部12c1~12cnに対し、i番目のスピンビットに対応することが分かり易い様に「ΔE」計算部のように添え字を付して名称を表記している。
ある探索部においてスピンビット列に含まれる何れかのスピンビットを反転させるかの判定および反転させる場合に該当のスピンビットを反転させる処理が、当該探索部による基底状態探索(確率的探索と言うこともある)の1回分の処理に相当する。
レジスタ12a1~12an、h計算部12b1~12bnおよびΔE生成部12c1~12cnは、エネルギー計算部12に相当する。すなわち、エネルギー計算部12は、レジスタ12a1~12an、h計算部12b1~12bnおよびΔE生成部12c1~12cnを有する。また、加算器13a1~13an、状態遷移判定回路13b1~13bn、セレクタ部13cおよびオフセット制御部13dは、遷移制御部13に相当する。すなわち、遷移制御部13は、加算器13a1~13an、状態遷移判定回路13b1~13bn、セレクタ部13cおよびオフセット制御部13dを有する。
n個のスピンビットのうち、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1が1番目のスピンビットに関する演算を行う。また、レジスタ12a2、h計算部12b2、ΔE生成部12c2、加算器13a2および状態遷移判定回路13b2が2番目のスピンビットに関する演算を行う。同様に、「12a1」、「12b1」などの符号の末尾の数値iがi番目のスピンビットに対応する演算を行うことを示す。すなわち、1つの探索部は、レジスタ、h計算部、ΔE生成部、加算器および状態遷移判定回路のセット(1スピンビットに関する演算を行う演算処理回路の一単位であり、「ニューロン」と呼ばれることもある)を、n個有する。n個のセットが並列に、各セットに対応するスピンビットに関する演算を行う。
以下では、主に、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1を例示して説明する。同名の構成であるレジスタ12a2~12an、h計算部12b2~12bn、ΔE生成部12c2~12cn、加算器13a2~13anおよび状態遷移判定回路13b2~13bnも同様の機能である。
ここで、レジスタ12a1、h計算部12b1、ΔE生成部12c1、加算器13a1および状態遷移判定回路13b1のセットに対応するスピンビットを自スピンビット、探索部10a1で演算されるそれ以外のスピンビットを他スピンビットと称する。各スピンビットは、indexと呼ばれる識別情報により識別される。例えば、i番目のスピンビットのindexは、iである。
レジスタ12a1は、自スピンビットと他スピンビットとの間の重み係数W1j(j=1~n)を記憶する。ここで、スピンビット数nに対して、重み係数の総数はnである。レジスタ12a1にはn個の重み係数が格納される。また、重み係数Wijの添え字iは、自スピンビットのindexを示し、同添え字jは、自スピンビットを含む何れかのスピンビットのindexを示す。
レジスタ12a1は、自スピンビットに対して、n個の重み係数W11,W12,…,W1nを記憶する。なお、Wii=W11=0である。レジスタ12a1は、セレクタ部13cにより出力されるindex=jに対応する重み係数W1jをh計算部12b1に出力する。
h計算部12b1は、レジスタ12a1から供給される重み係数W1jを用いて、式(10),(11)に基づくローカルフィールドhを計算する。例えば、h計算部12b1は、前回計算されたローカルフィールドhを保持するレジスタを有し、index=jで示されるスピンビットの反転方向に応じたδh (j)を、hに積算することで、当該レジスタに格納されるhを更新する。index=jで示されるスピンビットの反転方向を示す信号は、状態保持部11からh計算部12b1に供給されてもよい。hの初期値は、問題に応じて、h計算部12b1のレジスタに予め設定される。また、bの値も、問題に応じて、h計算部12b1のレジスタに予め設定される。h計算部12b1は、計算したローカルフィールドhをΔE生成部12c1およびE計算部14に出力する。
ΔE生成部12c1は、ローカルフィールドhを用いて、式(9)に基づき、自スピンビットの反転に応じたイジングモデルのエネルギー変化値ΔEを生成する。ΔE生成部12c1は、例えば、状態保持部11から供給される自スピンビットの現在の値から、自スピンビットの反転方向を判別してもよい(現在の値が0なら0から1が反転方向となり、現在の値が1なら1から0が反転方向となる)。ΔE生成部12c1は、生成したエネルギー変化値ΔEを、加算器13a1に出力する。ここで、後段の加算器13a1での加算処理および状態遷移判定回路13b1での判定処理に応じて、ΔE生成部12c1は、エネルギー変化値ΔEの符号を逆転したエネルギー変化値-ΔEを、加算器13a1に出力してもよい。本例では、ΔE生成部12c1は、エネルギー変化値として、-ΔEを加算器13a1に出力するものとする。
加算器13a1は、ΔE生成部12c1から供給される-ΔEとオフセット制御部13dから供給されるオフセット値Eoffとを加算する。オフセット値Eoffは、後述されるように、状態遷移を促すためのパラメータであり、オフセット制御部13dにより制御される。本例では、Eoff≧0である。加算器13a1は、加算結果(-ΔE+Eoff)を状態遷移判定回路13b1に出力する。
状態遷移判定回路13b1は、加算器13a1から供給されるエネルギー変化値とオフセットΔEoffとの和(-ΔE+Eoff)に応じて、自スピンビットの反転可否を示すフラグfをセレクタ部13cに出力する。具体的には、状態遷移判定回路13b1は、-ΔE+Eoffと閾値との比較に応じて、自スピンビットの反転可否を判定する。
ここで、状態遷移判定回路13b1による判定について説明する。
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率p(ΔE,T)を前述の式(1)のように決める。式(1)においてTは、前述の温度情報Tである。温度情報Tは、温度制御部22により状態遷移判定回路13b1に設定される。また、関数fとしては、式(2)(メトロポリス法)、または、式(3)(ギブス法)が用いられる。
例えば、許容確率p(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。
ただし、次のような変形を行っても同じ機能を実現可能である。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数uに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをuとしたf-1(u)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよい。更に、温度パラメータTが正であることから、状態遷移判定回路13b1は、-ΔEがT・f-1(u)以上のとき(あるいは、ΔEが-(T・f-1(u))以下のとき)、flg=1を出力する回路でよい。
状態遷移判定回路13b1は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を生成する。メトロポリス法が適用される場合、f-1(u)は、式(12)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(13)で与えられる。
Figure 0007108185000012
Figure 0007108185000013
変換テーブルは、例えば、状態遷移判定回路13b1が有するレジスタに記憶される。状態遷移判定回路13b1は、温度パラメータTと、f-1(u)との積(T・f-1(u))を閾値として生成し、-ΔE+Eoffと比較する。ここで、T・f-1(u)は、熱励起エネルギーに相当する。状態遷移判定回路13b1は、(-ΔE+Eoff)≧T・f-1(u)の場合にフラグf=1(遷移可)をセレクタ部13cに出力する。状態遷移判定回路13b1は、(-ΔE+Eoff)<T・f-1(u)の場合にフラグf=0(遷移不可)をセレクタ部13cに出力する。
セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力された遷移可否を示すフラグを受け付ける。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがある場合には、遷移可を示す何れか1つのフラグを選択する。セレクタ部13cは、状態遷移判定回路13b1~13bnの各々から出力されたフラグに遷移可を示すフラグがない場合には、1つの所定のフラグを選択する。
セレクタ部13cは、遷移可否を示すフラグと、選択したフラグに対応するスピンビットを示すindex=jとを含む更新信号(update)を状態保持部11に出力する。それとともに、セレクタ部13cは、選択した遷移可否を示すフラグをオフセット制御部13dに出力し、選択したフラグに対応するindex=jを、レジスタ12a1~12anの各々に出力する。
オフセット制御部13dは、セレクタ部13cから出力される遷移可否を示すフラグに基づいて、加算器13a1~13anの各々に供給するオフセット値を制御する。具体的には、オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移可を示す場合、オフセット値を0にリセットする。オフセット制御部13dは、セレクタ部13cから出力されるフラグが遷移不可を示す場合、オフセット値に増分値ΔEoffを加算する。当該フラグが連続して遷移不可を示す場合、オフセット制御部13dは、ΔEoffを積算することで、EoffをΔEoffずつ増加させる。
セレクタ部13cから出力されるフラグが遷移不可を示す場合、現在の状態が局所解に陥っていると考えられる。-ΔEへのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
状態保持部11は、セレクタ部13cから出力されるフラグとindexとに基づいて、状態保持部11が有するレジスタにより保持されるビットステート(x,x,…,x)を更新する。ここで、ビットステートは、探索部10a1におけるn個のスピンビットを含むスピンビット列(複数の状態変数の値)である。図中、ビットステートをBS(Bit States)と略記することがある。状態保持部11は、現在のビットステートをE計算部14に出力する。状態保持部11は、探索部10a1における探索処理の完了時におけるビットステートを全体制御部24に出力する。
E計算部14は、h計算部12b1~12bnの各々から出力されるローカルフィールドh~hおよび状態保持部11から出力されるビットステート(x~x)に基づいて、探索部10a1におけるイジングモデルの現在のエネルギー値Eを計算する。エネルギー値Eは、式(8)の評価関数で定義されるエネルギー値(単にエネルギーと言うこともある)である。E計算部14は、計算したエネルギー値Eを温度調整部21に出力する。また、E計算部14は、探索部10a1における所定回数または所定期間の探索処理が完了すると、計算したエネルギー値Eを、温度制御部22に出力する。
温度調整部21は、探索部10a1~10aNの各々から出力されるエネルギー値E~Eを受け付ける。また、温度調整部21は、探索部10a1~10aNの各々に設定されている温度の情報を、温度制御部22から取得する。図2では、探索部10a1に温度T、探索部10a2に温度T、…、探索部10aNに温度Tが設定されている例が示されている。温度調整部21は、エネルギー値E~Eの変化と探索部10a1~10aNに設定される温度の変化とに応じて、探索部10a1~10aNの各々に設定する新規温度を示す新規温度情報を決定する。温度調整部21は、決定した新規温度情報と、新規温度の設定信号(T set sig.(sig.はsignalの略))を、温度制御部22に出力する。
温度制御部22は、探索部10a1~10aNの各々に供給する温度を制御する。温度制御部22は、温度を示す温度情報と、温度の設定信号(T set sig.)とを、探索部10a1~10aNの各々が有する状態遷移回路に供給する。また、温度制御部22は、交換制御部23の機能を有し、探索部10a1~10aNにおける温度の交換(温度交換)を制御する(図2では交換制御部23の図示を省略している)。交換制御部23は、式(5)の交換確率に基づいて、探索部のペア(2つの探索部)に関し、温度交換を行うか否かを判定する。温度制御部22は、交換後の温度を、各探索部に供給する。
例えば、交換制御部23は、温度の識別情報(温度インデックス又は温度番号と言う)と、温度とを対応付けた第1の対応情報を、交換制御部23が有するレジスタに保持する。例えば、温度インデックスは、温度の昇順に温度に対応付けられる(温度インデックスが大きいほど温度も高い)。更に、交換制御部23は、例えば昇順に配列された温度インデックスと探索部10a1~10aNの各々の識別番号とを対応付けた第2の対応情報を、交換制御部23が有するレジスタに保持する。この場合、第2の対応情報で隣接する温度インデックスに対応する探索部のペアは、設定された温度が隣接することになる。交換制御部23は、第1の対応情報および第2の対応情報に基づいて、探索部10a1~10aNに対する温度交換を制御し、交換に応じて、第2の対応情報を更新する。温度制御部22は、第1の対応情報および第2の対応情報に基づいて、各探索部に温度を供給する。なお、第1の対応情報において温度インデックスに対応付けられる温度は、温度調整部21による新規温度の計算結果に応じて更新される。
ただし、交換制御部23は、探索部10a1~10aNの各々の識別番号と温度値とを対応付けた対応情報を保持し、当該対応情報を温度値でソートすることで、設定された温度が隣接する探索部のペアを特定することもできる。その場合、温度調整部21による新規温度の計算結果に応じて、当該対応情報における温度値が更新される。
全体制御部24は、最適化装置1の全体の動作を制御する。全体制御部24は、起動信号の入力を受け付けると、温度制御部22に起動信号を出力し、探索部10a1~10aNを起動させて、最適化問題に関する基底状態探索の演算を開始させる。全体制御部24は、演算が終了すると、探索部10a1~10aNの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部24は、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部24は、最適化装置1に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
次に、状態遷移判定回路13b1~13bnの回路構成を説明する。以下では、状態遷移判定回路13b1を例示して説明するが、他の状態遷移判定回路も同様の回路構成である。
図3は、状態遷移判定回路の回路構成例を示す図である。
状態遷移判定回路13b1は、乱数生成部111、閾値生成部112および比較部113を有する。
乱数生成部111は、一様乱数uを生成し、閾値生成部112に出力する。
閾値生成部112は、一様乱数uと、温度制御部22により供給された温度Tを示す温度情報とを用いて、前述の変換テーブルにより、式(12)(または、式(13))に基づく閾値T・f-1(u)を生成する。閾値生成部112は、生成した閾値T・f-1(u)を、比較部113に出力する。
比較部113は、加算器13a1により出力された(-ΔE+Eoff)と閾値T・f-1(u)とを比較し、遷移可否を示すフラグを、セレクタ部13cに出力する。前述のように、例えば、比較部113は、(-ΔE+Eoff)≧T・f-1(u)の場合に遷移可をセレクタ部13cに出力する。状態遷移判定回路13b1は、(-ΔE+Eoff)<T・f-1(u)の場合に遷移不可をセレクタ部13cに出力する。
次に、セレクタ部13cの回路構成例を説明する。
図4は、セレクタ部の回路構成例を示す図である。
セレクタ部13cは、複数段にわたってツリー状に接続された複数の選択回路および乱数ビット生成部32a,32b,32c,…,32rを有する。乱数ビット生成部32a~32rは、ツリー状に接続された複数の選択回路の段毎に設けられる。乱数ビット生成部32a~32rの各々は、0または1の値をとる1ビット乱数を生成し、各段の選択回路に供給する。1ビット乱数は、入力されたフラグのペアのうちの何れか一方を選択するために用いられる。
初段の選択回路31a1,31a2,31a3,31a4,…,31apの各々には、状態遷移判定回路13b1~13bnの各々が出力する遷移可否を示すフラグの組が入力される。例えば、選択回路31a1には、1番目の状態遷移判定回路13b1が出力するフラグと、2番目の状態遷移判定回路13b2が出力するフラグとのペアが入力される。また、選択回路31a2には、3番目の状態遷移判定回路が出力するフラグと、4番目の状態遷移判定回路が出力するフラグとのペアが入力される。以降、同様にして、選択回路31apには、n-1番目の状態遷移判定回路が出力するフラグと、n番目の状態遷移判定回路13bnが出力するフラグとのペアが入力される。このように、隣り合う状態遷移判定回路が出力するフラグとのペアが初段の選択回路に入力される。初段の選択回路32a1~31apの数は、n/2となる。以降、段を経る毎に選択回路の数は半分になる。
選択回路31a1~31apの各々は、入力されたフラグのペアと、乱数ビット生成部32aが出力する1ビット乱数に基づいて、入力されたフラグのペアのうちの一方を選択する。選択回路31a1~31apの各々は、選択したフラグと選択したフラグに対応する1ビットの識別値とを含む状態信号を、2段目の選択回路31b1~31bqに出力する。例えば、選択回路31a1が出力する状態信号と、選択回路31a2が出力する状態信号とが選択回路31b1に入力される。同様に、選択回路31a1~31apの隣り合う選択回路が出力する状態信号のペアが、2段目の選択回路に入力される。
選択回路31b1~31bqの各々は、入力された状態信号のペアと、乱数ビット生成部32bが出力する1ビット乱数に基づいて、入力された状態信号のうちの一方を選択する。選択回路31b1~31bqの各々は、選択した状態信号を、3段目の選択回路31c1,…に出力する。ここで、選択回路31b1~31bqは、選択した方の状態信号に含まれる状態信号について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。
3段目以降の選択回路においても同様の処理が行われ、各段の選択回路で1ビットずつ識別値のビット幅が増えていき、最終段の選択回路31rから、セレクタ部13cの出力である状態信号が出力される。セレクタ部13cが出力する状態信号に含まれる識別値が、2進数で表されたindexに対応する。ただし、図4で示す回路構成例では、探索部のindexを0~1023とする場合としている。選択回路31rが出力する識別値に1を加算した値が、図2で示されるjに相当する。
例えば、図4では、選択回路31bqの回路構成例が示されている。2段目以降の他の選択回路も、選択回路31bqと同様の回路構成により実現される。
選択回路31bqの入力は、1つ目の状態信号(status_1)と、2つ目の状態信号(status_2)である。選択回路31b1の出力は、状態信号(status)である。選択回路31bqは、OR回路131、NAND回路132およびセレクタ133,134を有する。
OR回路131には、状態信号(status_1)に含まれるフラグ(flag1)と、状態信号(status_2)に含まれるフラグ(flag2)とが入力される。例えば、状態信号(status_1)が前段の2つの選択回路のうちの上位側(indexの大きい側)の出力、状態信号(status_2)が前段の2つの選択回路のうちの下位側(indexの小さい側)の出力である。OR回路131は、flag1とflag2とのOR演算結果(flag)を出力する。
NAND回路132には、flag1とflag2とが入力される。NAND回路132は、flag1とflag2とのNAND演算結果を、セレクタ133の選択信号入力端子に出力する。
セレクタ133には、flag1と1ビット乱数(rand)とが入力される。セレクタ133は、NAND回路132から入力されるNAND演算結果に基づいて、flag1又はrandの何れかを選択し、出力する。例えば、セレクタ133は、NAND回路132のNAND演算結果が「1」の場合、flag1を選択し、NAND回路132のNAND演算結果が「0」の場合、randを選択する。
セレクタ134には、状態信号(status_1)に含まれるindex1と、状態信号(status_2)に含まれるindex2とが入力される。セレクタ134の選択信号入力端子には、セレクタ133の選択結果が入力される。セレクタ134は、セレクタ133の選択結果に基づいて、index1またはindex2の何れかを選択し、出力する。例えば、セレクタ134は、セレクタ133の選択結果が「1」の場合、index1を選択し、セレクタ133の選択結果が「0」の場合、index2を選択する。
OR回路131およびセレクタ133,134の出力の組が、選択回路31bqが出力する状態信号(status)となる。
なお、初段の選択回路の入力は識別値を含まない。このため、初段の選択回路は、識別値(図中ではindexと表記)として、選択した方に対応するビット値(下位側の場合に「0」、上位側の場合に「1」)を追加して出力する回路となる。
このように、セレクタ部13cは、遷移可であるスピンビットから1つをトーナメント方式で選択する。トーナメントの各試合(すなわち、各選択回路での選択)では、勝った方(すなわち、選択された方)のエントリ番号(0又は1)をindex wordの上位ビットに付け加えていく。最終段の選択回路31rが出力するindexが選ばれたスピンビットを示す。例えば、1つの探索部におけるスピンビットの数が1024個の場合、最終段の選択回路31rが出力する状態信号は、遷移可否を示すフラグと、10ビットで表されるindexとを含む。
ただし、indexの出力方法は、上記のようにセレクタ部13cで生成する方法以外の方法も考えられる。例えば、状態遷移判定回路13b1~13bnの各々からセレクタ部13cに各状態遷移判定回路に対応するindexを供給し、セレクタ部13cにより遷移可否を示すフラグとともに、当該フラグに対応するindexを選択してもよい。この場合、状態遷移判定回路13b1~13bnの各々は、自身に対応するindexを格納するindexレジスタを更に有し、indexレジスタからセレクタ部13cにindexを供給する。
図5は、温度調整部の回路構成例を示す図である。
温度調整部21は、レジスタ210、最低エネルギー更新確認回路220、最高温度更新確認回路230、温度ヒストグラム計算回路240および温度計算回路250を有する。
レジスタ210は、探索部10a1~10aNの各々に対応付けて、到達した最低エネルギーと、設定された温度の最高値(最高温度)とを記憶する。
最低エネルギー更新確認回路220は、所定のデータ取得タイミングにおいて、探索部10a1~10aNの各々からエネルギー値Eを受け付ける。最低エネルギー更新確認回路220は、受け付けた探索部毎のエネルギー値Eをレジスタ210に記憶された探索部毎の最低エネルギーと比較することで、最低エネルギーが更新されたか否かを、探索部毎に確認する。最低エネルギー更新確認回路220は、最低エネルギーが更新されたか否かの探索部毎の確認結果を示す信号を、最高温度更新確認回路230および温度ヒストグラム計算回路240に出力する。最低エネルギー更新確認回路220は、ある探索部において最低エネルギーが更新された場合、レジスタ210に記録された該当の探索部の最低エネルギーを、該当の探索部から今回取得したエネルギーに更新する。
最高温度更新確認回路230は、ある探索部について、最低エネルギー更新確認回路220による確認結果が、最低エネルギーが更新されていないことを示す場合、温度制御部22から供給される温度をレジスタ210に記憶された該当の探索部の最高温度と比較する。最高温度更新確認回路230は、当該比較に応じて、該当の探索部について、前回の最低エネルギーの更新から、最高温度が更新されたか否かを確認する。最高温度更新確認回路230は、最高温度が更新された場合、該当の探索部に設定されている温度で、レジスタ210に記録されている最高温度の情報を更新する。
温度ヒストグラム計算回路240は、ある探索部について、最低エネルギー更新確認回路220による確認結果が、最低エネルギーが更新されたことを示す場合、レジスタ210に記憶されている該当の探索部の最高温度を、温度ヒストグラム上にカウントする。温度ヒストグラムは、探索部10a1~10aNの全体に対して1つ生成される。
温度計算回路250は、温度ヒストグラム計算回路240により生成された温度ヒストグラムに基づいて、探索部10a1~10aNに設定するN個の新規温度を計算する。温度計算回路250は、新規温度の計算に、式(6)、(7)を用いる。最低温度tmp_minは、温度計算回路250に予め設定される。最高温度tmp_maxは、温度ヒストグラムに基づいて温度計算回路250により決定される。温度計算回路250には、新規温度の計算に用いられる所定係数αが外部から入力され得る。温度計算回路250は、計算した新規温度を示す新規温度情報と、温度設定信号(T set sig.)とを温度制御部22に出力する。
図6は、レジスタに格納されるデータ例を示す図である。
レジスタ210の各アドレスは、何れかの探索部に対応付けられており、当該探索部に関するデータが格納される。例えば、レジスタ210のアドレス「0xXXXXXX00」は、探索部10a1に対応付けられており、当該アドレスには探索部10a1が到達した最低エネルギーが格納される。例えば、最低エネルギーは、128ビット幅で表される。以降、同様に、例えば128ビット幅毎に、2番目の探索部10a2の最低エネルギー、3番目の探索部の最低エネルギーというように、各探索部に関する最低エネルギーが、レジスタ210に格納される。
また、レジスタ210のアドレス「0xXXXXXXY0」は、探索部10a1に対応付けられており、当該アドレスには探索部10a1において前回の最低エネルギーの更新から、探索部10a1に設定された最高の温度が格納される。例えば、温度は32ビット幅で表される。以降、同様に、例えば32ビット幅毎に、2番目の探索部10a2の温度の情報、3番目の探索部の温度の情報というように、各探索部について前回の最低エネルギーの更新時から設定された最高の温度が、レジスタ210に格納される。
上記の構成例では、温度調整部21を専用の電子回路を用いて実現する場合であるが、温度調整部21の機能をCPU(Central Processing Unit)などのプロセッサが実行するソフトウェアの処理によって実現することもできる。そこで、温度調整部21によるデータ取得のアルゴリズムの例を説明する。
図7は、データ取得のアルゴリズムの例を示す図である。
コードC1は、変数の定義を示す。
min_egは、データ取得タイミングで得られたエネルギーを示す。
min_eg_preは、現在までの最低エネルギーを示す。
tmp_idxは、現在の温度値(あるいは温度に対応する温度インデックス)を示す。温度インデックスは、番号が大きいほど、温度が高いことを示すものとする。
tmp_idx_preは、過去の温度の最高値を示す。tmp_idx_preに対して言う「過去」は、前回の最低エネルギーの更新時を起点とした現在までの期間を示す。
histogramは、温度のヒストグラム(温度ヒストグラム)を示す。
変数min_eg、min_eg_pre、tmp_idx、tmp_idx_preは、探索部毎に設けられる。histogramは、探索部10a1~10aNに対して1つである。
コードC2は、コードC1で定義される変数を用いて記述された温度調整部21のアルゴリズムを示す。コードC2は、探索部毎に繰り返し、あるいは並列に、実行される。
1行目では、min_eg<min_eg_preを判定する。すなわち、1行目は、最低エネルギーが更新されたか否かの判定である。min_eg<min_eg_preの場合、2行目~4行目が順番に実行され、処理が終了する。min_eg≧min_eg_preの場合、6行目が実行される。
2行目では、tmp_idx_preの頻度を温度ヒストグラムに加算する(tmp_idx_preの度数(頻度)が1加算される)。
3行目では、min_eg_preに、min_egの値が設定される。すなわち、これまでの最低エネルギーが更新される。
4行目では、tmp_idx_preに、tmp_idxの値が設定される。すなわち、tmp_idx_preが、最低エネルギーが更新されたときの温度インデックスにリセットされる。
6行目では、tmp_idx>tmp_idx_preを判定する。すなわち、6行目は、過去の温度の最高値が更新されたか否かの判定である。tmp_idx>tmp_idx_preの場合、7行目が実行される。tmp_idx≦tmp_idx_preの場合、処理が終了する。
7行目では、tmp_idx_preに、tmp_idxの値が設定される。すなわち、tmp_idx_preが、該当の探索部に対して設定されている現在の温度に更新される。
図8は、最低エネルギーおよび温度の変化例を示す図である。
グラフ70は、ある探索部における最低エネルギーの変化例を示す。グラフ71は、当該探索部における温度の変化例を示す。
グラフ70,71の横軸は時間であり、左側から右側へ向かう方向が時間の正方向である。グラフ70,71の横軸の同一位置は、同一時刻を示す。グラフ70の縦軸は、エネルギーである。グラフ71の縦軸は温度である。グラフ71の縦軸には温度Ta,Tb,Tc,Tdが示されている。ここで、Ta>Tb>Tc>Tdである。
グラフ70は、系列70aを含む。系列70aによれば、期間70b,70cの2つの期間で、最低エネルギーが更新されている。
グラフ71は、系列71aを含む。系列71aによれば、期間70bで最低エネルギーが更新された時点と期間70cで最低エネルギーが更新された時点との間に該当の探索部が到達した最高温度は、Taである。
グラフ70,71の例では、該当の探索部において、最低エネルギーを更新するために、最高温度Taまで一旦上がることが必要であることを示している。そこで、温度調整部21は、このように最低エネルギーを更新するために達した最高温度を統計情報として取得し、当該統計情報に基づいて、各探索部に設定する温度を決定する。
図9は、温度ヒストグラムの例を示す図である。
温度ヒストグラム80は、温度ヒストグラム計算回路240により生成される。また、CPUなどのプロセッサを用いて温度調整を行う場合、温度ヒストグラム80は、図7の「histogram」に相当する。
温度ヒストグラム80の横軸は温度インデックスを示し、縦軸は頻度を示す。
例えば、温度計算回路250は、温度ヒストグラム80において最大頻度の温度インデックスに対応する温度を、最高温度tmp_maxと決定する。具体的には、温度計算回路250は、温度ヒストグラム80のうち、頻度の高い温度の中から、最高温度tmp_maxを決定する。一例では、温度計算回路250は、ピークp1で示される最大頻度の温度を、最高温度tmp_maxと決定する。なお、温度計算回路250は、温度インデックスに対して温度ヒストグラム80を作成した場合、温度インデックスに対応する温度値を、例えば、前述の第1の対応情報を参照することで特定する。この場合、例えば、温度制御部22が保持する前述の第1の対応情報を、温度計算回路250により参照可能にすることが考えられる。温度計算回路250は、決定した最高温度tmp_maxを用いて、式(6)、(7)により、新規温度tmp[i](1≦i≦N)を計算する。
ただし、問題によっては、上記のようなピークp1が出現しない場合やピークが複数出現する場合もある。そのような場合に、例えば、温度計算回路250は、次のように、温度ヒストグラム80に基づく累積ヒストグラムを用いて、最高温度tmp_maxを決定する。
図10は、累積ヒストグラムの例を示す図である。
累積ヒストグラム81は、温度ヒストグラム80で示される頻度を温度の小さい方から累積したヒストグラムである。累積ヒストグラム81は、温度計算回路250により生成される。累積ヒストグラム81の横軸は温度インデックスを示し、縦軸は累積頻度を示す。
温度計算回路250は、累積ヒストグラムの割合(累積割合)により最高温度tmp_maxを決定する。例えば、累積割合を、一例として、70%(係数α=0.7)とする。累積ヒストグラム81には、累積割合70%を示す直線82が示されている。この場合、温度計算回路250は、累積ヒストグラム81における累積頻度の最大値に累積割合を示す係数αを乗じた累積頻度に対応する温度(点p2の累積頻度に対応する温度)を特定し、当該温度を、最高温度tmp_maxと決定する。本例の場合、累積頻度の最大値は、温度インデックスの最大値に対応する累積頻度である。累積頻度の最大値は、各探索部の最低エネルギーが更新された総回数に相当する。
温度計算回路250は、決定した最高温度tmp_maxを用いて、式(6)、(7)により、新規温度tmp[i](1≦i≦N)を計算する。なお、累積割合として用いられる係数αは、前述のように、外部から入力されてもよい。
上記のように、温度計算回路250は、温度ヒストグラム80においてピークp1が検出されない場合や複数のピークが検出される場合などに、累積ヒストグラム81を用いて、最高温度tmp_maxを決定してもよい。あるいは、温度ヒストグラム80を用いるか、累積ヒストグラム81を用いるかを、温度計算回路250に予め設定可能としてもよい。
次に、最適化装置1による処理手順を説明する。
図11は、レプリカ交換の全体制御例を示すフローチャートである。
(S1)全体制御部24は、外部から入力データとして初期温度を示す温度情報を受け取り、当該温度情報とともに起動信号を温度制御部22に出力する。
(S2)温度制御部22は、全体制御部24からの起動信号を受けて、探索部10a1~10aNの各々に温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索の処理を実行させる。探索部10a1~10aNの各々による処理(探索処理)の詳細は後述される。
(S3)温度調整部21は、探索部10a1~10aNの各々で規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部10a1~10aNの各々で計算されたエネルギー値の取得を含むデータ収集処理を行う。データ収集処理の詳細は後述される。
(S4)探索部10a1~10aNは、隣接探索部毎のエネルギー値を温度制御部22に伝達する。温度制御部22は、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部毎に取得する。
(S5)交換制御部23は、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。交換制御部23は、温度が隣接する探索部のペア毎に、温度の交換制御を行う。交換制御の詳細は後述される。
(S6)温度調整部21は、温度調整用のデータ取得期間内であるか否かを判定する。温度調整用のデータ取得期間内である場合、ステップS2に処理が進む。温度調整用のデータ取得期間内でない場合、ステップS7に処理が進む。
(S7)温度調整部21は、ステップS3のデータ収集処理の結果として生成される温度ヒストグラム80(または累積ヒストグラム81)に基づいて、式(6)、(7)で用いられる最高温度tmp_maxを計算する。温度調整部21は、計算した最高温度tmp_maxを用いて、式(6)、(7)に基づき、新規温度tmp[i]を計算する。温度調整部21は、計算した新規温度を示す新規温度情報と温度設定信号とを温度制御部22に出力する。温度制御部22は、温度調整部21により出力された新規温度情報と温度設定信号とを受け付け、温度制御部22が保持する前述の第1の対応情報における各温度インデックスに対応付けられた温度を更新する。
(S8)温度制御部22は、探索部10a1~10aNの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索(基底状態探索)の処理を実行させる。
(S9)探索部10a1~10aNは、探索部10a1~10aNで規定の時間、又は規定のイタレーション数の確率的探索が実行されると、隣接探索部毎のエネルギー値を交換制御部23に伝達する。交換制御部23は、探索部10a1~10aNで計算されたエネルギー値を、温度が隣接する探索部毎に取得する。
(S10)交換制御部23は、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、温度の交換制御を行う。交換制御部23は、温度が隣接する探索部のペア毎に、温度の交換制御を行う。
(S11)探索部10a1~10aNは、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、探索部10a1~10aNは、全体制御部24にビットステートを出力し、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、探索部10a1~10aNは、ステップS8に処理を進め、確率的探索の処理を継続する。
図12は、探索部処理例を示すフローチャートである。
探索部処理は、ステップS2,S8に相当する。
(S20)温度制御部22は、探索部10a1~10aNの各々に温度を設定する。例えば、温度制御部22は、前述の温度インデックスと温度とを対応付けた第1の対応情報および温度インデックスと探索部の識別情報とを対応付けた第2の対応情報に基づいて、探索部10a1~10aNの各々に温度を設定する。あるいは、温度制御部22は、前述のように、探索部の識別情報と温度とを対応付けた対応情報に基づいて、探索部10a1~10aNの各々に温度を設定してもよい。なお、探索部10a1~10aNの各々に設定される温度の初期値は、問題などに応じて予め定められる。
(S21)探索部10a1~10aNの各々は、スピンビット毎にローカルフィールドhを計算する。例えば、探索部10a1に着目すると、h計算部12b1~12bnは、ローカルフィールドh~hを計算する。ローカルフィールドhは、式(10)に基づいて計算される。なお、式(10)によりローカルフィールドhが計算された後は、例えば、式(11)で示される差分δhをローカルフィールドhに加算することで、更新後のローカルフィールドh=h+δhを求めることができる。
(S22)探索部10a1~10aNの各々は、計算したローカルフィールドhに基づいて、スピンビット毎にエネルギーの変化値ΔEを計算する。例えば、探索部10a1に着目すると、ΔE生成部12c1~12cnは、エネルギーの変化値ΔE1~ΔEnを計算する。ΔEは、式(9)に基づいて計算される。
(S23)探索部10a1~10aNの各々は、エネルギーの変化値-ΔEにオフセット値Eoffを加算する。例えば、探索部10a1に着目すると、加算器13a1~13anは、-ΔE~-ΔEに対して、オフセット値Eoffを加算する。オフセット値Eoffは、前述のように、オフセット制御部13dにより制御される。例えば、オフセット制御部13dは、セレクタ部13cにより出力される遷移可否を示すフラグが遷移不可を示す場合に、0より大きいオフセット値Eoffを加算器13a1~13anに供給する。オフセット制御部13dは、当該フラグが遷移可を示す場合に、オフセット値Eoff=0を加算器13a1~13anに供給する。なお、オフセット値Eoffの初期値は0である。
(S24)探索部10a1~10aNの各々は、反転候補のスピンビットのうち、反転させるスピンビットを選択する。例えば、探索部10a1に着目すると、状態遷移判定回路13b1~13bnの各々は、該当の状態遷移判定回路に対応するスピンビットの遷移可否を示すフラグをセレクタ部13cに出力する。セレクタ部13cは、入力されたフラグの中から1つを選択し、選択したフラグと、選択したフラグに対応するスピンビットを示すindexとを出力する。
(S25)探索部10a1~10aNの各々は、選択されたスピン(スピンビット)を反転させる。例えば、探索部10a1に着目すると、状態保持部11は、セレクタ部13cにより出力されたフラグと、indexとに基づいて、ビットステートに含まれるスピンビットのうち、indexで示されるスピンビットの値を更新する。
(S26)探索部10a1~10aNの各々は、ステップS20の直後の確率的探索の開始時点から、規定のイタレーション回数に到達したか、または、規定時間が経過したか否かを判定する。規定のイタレーション回数に到達した、または、規定時間が経過した場合、ステップS27に処理が進む。規定のイタレーション回数に到達しておらず、かつ、規定時間も経過していない場合、ステップS21に処理が進む。
(S27)探索部10a1~10aNの各々は、該当の探索部におけるエネルギー値(E~E)を計算し、温度調整部21および温度制御部22に出力する。
上記のように、探索部10a1~10aNの各々は、温度値とエネルギーの変化値と乱数値とに基づいて、当該変化値と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。当該決定の際、探索部10a1~10aNの各々の遷移制御部(例えば、遷移制御部13)は、エネルギー値の変化値に所定のオフセット値を加算する。これにより、局所解からの脱出が促進され、演算の高速化を図れる。
図13は、データ収集処理例を示すフローチャートである。
データ収集処理は、ステップS3に相当する。以下では、温度調整部21による探索部10a1に対する手順を説明するが、探索部10a2~10aNに対しても同様の手順となる。下記のステップS31~S34は、探索部10a1~10aNの各々に対して実行される。ステップS34の温度ヒストグラム80は、探索部10a1~10aNに対して1つ計算される。
(S30)最低エネルギー更新確認回路220は、データ収集タイミングであるか否かを判定する。データ収集タイミングである場合、ステップS31に処理が進む。データ収集タイミングでない場合、データ収集処理が終了する。ここで、データ収集タイミングは、探索部10a1~10aNの探索処理(図12の手順)の完了毎のタイミングでもよいし、当該探索処理の複数回の完了毎のタイミングでもよい。データ収集タイミングをどのようなタイミングとするかは、温度調整部21に対して予め設定される。
(S31)最低エネルギー更新確認回路220は、探索部10a1からエネルギーEを取得する。最低エネルギー更新確認回路220は、レジスタ210に格納された探索部10a1の最低エネルギーと、取得したエネルギーEとを比較し、最低エネルギーが更新されたか否かを判定する。探索部10a1に関して最低エネルギーが更新された場合とは、探索部10a1から取得したエネルギーEがレジスタ210に格納された探索部10a1の最低エネルギーよりも低い場合である。最低エネルギーが更新された場合、最低エネルギー更新確認回路220は、レジスタ210に格納された探索部10a1の最低エネルギーの記録を、探索部10a1から今回取得されたエネルギーEに更新し、ステップS34に処理が進む。最低エネルギーが更新されていない場合、ステップS32に処理が進む。
(S32)最高温度更新確認回路230は、温度制御部22から探索部10a1に設定されている温度を取得し、レジスタ210に格納されている探索部10a1に対する最高温度が更新されたか否かを判定する。探索部10a1に関して最高温度が更新された場合とは、探索部10a1に設定されている温度が、レジスタ210に格納されている探索部10a1に対する最高温度よりも高い場合である。最高温度が更新された場合、ステップS33に処理が進む。最高温度が更新されていない場合、探索部10a1に関するデータ収集処理が終了する。
(S33)最高温度更新確認回路230は、レジスタ210に格納された探索部10a1の最高温度の記録を、温度制御部22から取得される、探索部10a1に現在設定されている温度に更新する。そして、探索部10a1に関するデータ収集処理が終了する。
(S34)温度ヒストグラム計算回路240は、レジスタ210から探索部10a1に対応する最高温度を読み出し、温度ヒストグラム80における当該最高温度の度数(頻度)に1を加算する。なお、前述のように、温度ヒストグラム80は、探索部10a1~10aNに対して1つ生成される。また、最高温度更新確認回路230は、レジスタ210に格納された探索部10a1の最高温度の記録を、温度制御部22から取得される、探索部10a1に現在設定されている温度に更新する。そして、探索部10a1に関するデータ収集処理が終了する。
なお、温度調整部21は、ステップS31~S34の処理を、探索部10a1~10aNの各々に対して並列に実行してもよい。あるいは、温度調整部21は、探索部10a1~10aNの中から何れか1つを順番に選択して、ステップS31~S34の処理を繰り返して実行してもよい。
図14は、交換制御例を示すフローチャートである。
交換制御は、ステップS5,S10に相当する。
(S40)交換制御部23は、偶数番目の探索部に関し、式(5)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部と温度を交換するか否かを判定する。温度の交換の判定は、探索部のペア毎に行われる。式(5)の関数fには、式(2)のメトロポリス法の関数、または、式(3)のギブス法の関数が用いられる。温度を交換すると判定された探索部のペアがある場合、ステップS41に処理が進む。温度を交換すると判定された探索部のペアがない場合、ステップS42に処理が進む。
(S41)交換制御部23は、ステップS40で温度を交換すると判定された探索部のペアについて、温度を交換する。交換制御部23は、温度の交換に応じて、交換制御部23が保持する前述の第2の対応情報を更新する。
(S42)交換制御部23は、奇数番目の探索部に関し、式(5)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部と温度を交換するか否かを判定する。温度の交換の判定は、探索部のペア毎に行われる。式(5)の関数fには、式(2)のメトロポリス法の関数、または、式(3)のギブス法の関数が用いられる。また、交換制御部23は、ステップS40において、偶数番目の探索部について上位温度の探索部と温度を交換するか否かを判定した場合、ステップS42では奇数番目の探索部について上位温度の探索部と温度を交換するか否かを判定する。交換制御部23は、ステップS40において、偶数番目の探索部について下位温度の探索部と温度を交換するか否かを判定した場合、ステップS42では奇数番目の探索部について下位温度の探索部と温度を交換するか否かを判定する。温度を交換すると判定された探索部のペアがある場合、ステップS43に処理が進む。温度を交換すると判定された探索部のペアがない場合、交換制御が終了する。
(S43)交換制御部23は、ステップS42で温度を交換すると判定された探索部のペアについて、温度を交換する。交換制御部23は、温度の交換に応じて、交換制御部23が保持する第2の対応情報を更新する。そして、交換制御が終了する。
なお、上記の例では、偶数番目の探索部の次に奇数番目の探索部に着目して、温度の交換制御を行うものとしたが、奇数番目の探索部の次に偶数番目の探索部に着目して、温度の交換制御を行ってもよい。すなわち、ステップS42,S43の後に、ステップS40,S41を実行してもよい。
次に、最適化装置1による処理の流れの例を説明する。以下では、CPUによるソフトウェア処理で温度調整を行う場合と、温度調整部21で示されるハードウェア処理で温度調整を行う場合とを例示する。
まず、CPUによるソフトウェア処理で温度調整を行う場合を例示する。この場合、例えば、温度調整部21の機能は、CPUにより実行されるソフトウェアの機能として最適化装置1に実装される。また、温度制御部22(交換制御部23を含む)の機能は、ハードウェアとしてだけでなく、CPUにより実行されるソフトウェアの機能としても、最適化装置1に実装される。そして、図11のステップS3~S7は、CPUにより実行されるソフトウェア処理として実行され、図11のステップS2,S8~S11は、ハードウェア処理として実行される。
図15は、処理の流れの例(その1)を示す図である。
図15の横軸は、イタレーション回数(又は時間)を示し、左側から右側へ向かう方向が正方向である。
CPUによるデータ取得期間は、HW(Hardware)起動単位の期間t11,t12,t13,t14を含む。HW起動単位の期間とは、探索部10a1~10aNを起動して、探索処理(基底状態探索)を実行させる単位期間である。温度調整後の確率的探索を行う期間(コアインターバル)は、HW起動単位の期間t15を含む。図中、「X」印は、レプリカ交換(すなわち、温度交換)を行うタイミングを示す。CPUによるデータ取得は、データ取得期間におけるレプリカ交換の直前に行われる。
例えば、CPUは、期間t11の完了直後に、探索部10a1~10aNにおけるエネルギー(最低エネルギーが更新されていない場合は温度も)を取得する。CPUは、最低エネルギーの更新に応じて、温度ヒストグラム80を作成する。その後、CPUによりレプリカ交換(温度の交換制御)が行われる。そして、次の期間t12における探索部10a1~10aNによる確率的探索が行われる。こうして、データ取得期間において、期間t11,t12,t13,t14の各々の直後に、CPUにより探索部10a1~10aNに関するデータ取得および温度ヒストグラム80の作成が行われる。データ取得期間が完了すると、CPUにより、温度ヒストグラム80に基づいて、新規温度tmp[i]が決定される。なお、データ取得期間の長さは、CPUが実行するソフトウェアに対して予め設定される(例えば、確率的探索のための総イタレーション数が定められる場合、総イタレーション数の1%程度とするなど)。
そして、新規温度tmp[i]を用いて、コアインターバルの期間t15が開始される。コアインターバルでは、CPUが処理に介入せず、探索部10a1~10aNおよびハードウェアで実装された温度制御部22(交換制御部23を含む)によって、確率的探索およびレプリカ交換が実行される。このため、コアインターバルの期間は、HW起動単位の期間t15に相当する。
なお、上記の例では、探索部10a1~10aNによる確率的探索の全期間の初めのデータ取得期間後は、調整後の温度を変えずに確率的探索を実行する。一方、データ取得期間を定期的に設けて、CPUはデータ取得および取得したデータに基づく温度決定を繰り返し実行し、その都度、探索部10a1~10aNに設定する温度を変更してもよい。
次に、ハードウェア処理で温度調整を行う場合の処理の流れを説明する。
図16は、処理の流れの例(その2)を示す図である。
図16の横軸は、イタレーション回数(又は時間)を示し、左側から右側へ向かう方向が正方向である。
温度調整をハードウェア処理で行う場合、データ取得期間およびコアインターバルを含む全期間が、HW起動単位の期間となる。
温度調整部21によるデータ取得期間は、単位期間t21,t22,t23,t24を含む。期間t25は、コアインターバルである。また、図中、「X」印は、レプリカ交換(すなわち、温度交換)を行うタイミングを示す。温度調整部21によるデータ取得は、データ取得期間におけるレプリカ交換の直前に行われる。
例えば、温度調整部21は、期間t21の完了直後に、探索部10a1~10aNにおけるエネルギー(最低エネルギーが更新されていない場合は温度も)を取得する。温度調整部21は、最低エネルギーの更新に応じて、温度ヒストグラム80を作成する。その後、交換制御部23によりレプリカ交換(温度の交換制御)が行われる。そして、次の期間t22における探索部10a1~10aNによる確率的探索が行われる。こうして、データ取得期間において、期間t21,t22,t23,t24の各々の直後に、温度調整部21により探索部10a1~10aNに関するデータ取得および温度ヒストグラム80の作成が行われる。データ取得期間が完了すると、温度調整部21により、温度ヒストグラム80に基づいて、新規温度tmp[i]が決定される。
なお、データ取得期間の長さは、温度調整部21に対して予め設定される(例えば、確率的探索のための総イタレーション数が定められる場合、総イタレーション数の1%程度とするなど)。そして、新規温度tmp[i]を用いて、コアインターバルの期間t25が開始される。
なお、上記の例では、探索部10a1~10aNによる確率的探索の全期間の初めのデータ取得期間後は、調整後の温度を変えずに確率的探索を実行する。一方、データ取得期間を定期的に設けて、温度調整部21は、データ取得および取得したデータに基づく温度決定を繰り返し実行し、その都度、探索部10a1~10aNに設定する温度を変更してもよい。
最適化装置1によれば、探索部10a1~10aNに設定する温度を適切に決定できる。具体的には、データ取得期間における最低エネルギーの更新、および、設定された最高温度の統計情報に基づいて、新規温度tmp[i]の最高値を決定することで、各探索部に設定する温度が高過ぎたり、低過ぎたりすることを抑えられる。このため、最適化装置1における解精度を向上させることができる。また、解精度の向上により、より早く適切な解に到達する可能性を高められ、演算の高速化を図れる。
また、適切な最高温度(tmp_maxに相当する温度)を決定するために、最適化装置1による最適化処理を繰り返し実行して、ユーザが手作業で調整することも考えられるが、この作業には膨大な手間がかかる。一方、上記のように、温度の統計情報に基づいて、最高温度tmp_maxを決定することで、ユーザ作業による温度調整の手間を軽減できる。
なお、温度調整をハードウェア処理で行う場合、ソフトウェア処理で行う場合に比べて、CPUに対するデータ出力やCPUからのデータ入力に伴うオーバヘッドを軽減できるため、演算が高速化される。
ここで、最適化装置1のハードウェア構成として、次の例も考えられる。
図17は、最適化装置の他のハードウェア例を示す図である。
最適化装置1aは、CPU101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、NIC(Network Interface Card)104、出力IF(Interface)105、入力IF106、媒体リーダ107および確率的探索部108を有する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、最適化装置1aは複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」又は単に「プロセッサ」と言うことがある。CPU101は、例えば、全体制御部24として機能させることができる。また、前述のように、制御部20(すなわち、温度調整部21、温度制御部22および交換制御部23)の機能をCPU101により実行されるソフトウェア(制御プログラム)の処理で実現することもできる。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、最適化装置1aは、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、最適化装置1aは、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
NIC104は、ネットワーク40に接続され、ネットワーク40を介して他のコンピュータと通信を行うインタフェースである。NIC104は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
出力IF105は、CPU101からの命令に従って、最適化装置1aに接続されたディスプレイ41に画像を出力する。ディスプレイ41としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力IF106は、最適化装置1aに接続された入力デバイス42から入力信号を取得し、CPU101に出力する。入力デバイス42としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、最適化装置1aに、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ107は、記録媒体43に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体43として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ107は、例えば、記録媒体43から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体43は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体43やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
確率的探索部108は、レプリカ交換の方法により、組合せ最適化問題に対する演算をハードウェアにより行うアクセラレータである。確率的探索部108は、探索部10a1~10aN、温度調整部21、温度制御部22および交換制御部23を有し、前述の図11~図14の手順により、イジングモデルの基底状態を探索する確率的探索を行う。
上記の最適化装置1aにより、最適化装置1と同様の機能を実現することができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態では、探索部10a1~10aNにおける複数の状態変数の値(スピンビット列)を交換する点が、第1の実施の形態で説明した図2以降の構成と異なる。第2の実施の形態では、探索部10a1~10aNに設定される温度は、温度調整が行われない限り、一定である。例えば、探索部10a1~10aNに対して、昇順、または、降順に温度が設定される。
図18は、第2の実施の形態の最適化装置の回路構成例を示す図である。
最適化装置2は、例えば、FPGAなどの半導体集積回路を用いて実現される。最適化装置2は、探索部10a1~10aN、温度調整部21a、状態制御部23aおよび全体制御部24aを有する。
探索部10a1~10aNは、図2で例示した探索部10a1~10aNと同様の回路構成であるため、説明を省略する。
ただし、第2の実施の形態では、各探索部の状態保持部に対して、状態制御部23aによりビットステート(スピンビット列)およびビットステートの識別情報であるレプリカ番号が設定される。探索部10a1~10aNの数は、N個なので、最適化装置2におけるビットステートの総数もN個である。また、各探索部のh計算部に対して、状態制御部23aにより、ローカルフィールドが設定される。
また、各探索部のE計算部は、温度調整部21aおよび状態制御部23aに対して、エネルギーEを出力する。各探索部のE計算部は、エネルギーEとともに、各探索部に設定されたレプリカ番号を温度調整部21aに出力する。例えば、図18では、探索部10a1からレプリカ番号「rep_1」が出力され、探索部10a2からレプリカ番号「rep_2」が出力され、探索部10aNからレプリカ番号「rep_N」が出力される場合が例示されている。
更に、状態保持部11は、状態制御部23aに対して、ビットステートとh計算部12b1~12bnに設定されたローカルフィールド(図中、LF(Local Field)と略記することがある)とを出力する。
温度調整部21aは、探索部10a1~10aNの各々から出力されるエネルギー値とレプリカ番号とを受け付ける。温度調整部21aは、探索部10a1~10aNの各々に設定されている温度を取得する。図18では、探索部10a1に温度T、探索部10a2に温度T、…、探索部10aNに温度Tが設定されている例が示されている。温度調整部21aは、エネルギー値の変化とビットステートに対応する温度の変化とに応じて、探索部10a1~10aNの各々に設定する新規温度を示す新規温度情報を決定する。温度調整部21aは、決定した新規温度情報と、新規温度の設定信号(T set sig.)を、図示を省略している温度制御部を介して、探索部10a1~10aNに出力する。新規温度情報は、各探索部の状態遷移判定回路(例えば、状態遷移判定回路13b1~13bn)に設定される。
状態制御部23aは、探索部10a1~10aNにおけるステート(ビットステートとローカルフィールドとを含む)の交換制御を行う。状態制御部23aは、交換制御部23の一例である。
状態制御部23aは、ビットステートと、ビットステートの設定信号(BS set sig.)とを探索部10a1~10aNの各々が有する状態保持部に供給する。ビットステートの設定信号は、ビットステートに対応するレプリカ番号を含む。また、状態制御部23aは、ローカルフィールドとローカルフィールドの設定信号(LF set sig.)とを探索部10a1~10aNの各々が有するh計算部に供給する。
状態制御部23aは、式(5)の交換確率に基づいて、温度が隣接する2つの探索部のペアに関し、ステートの交換を行うか否かを判定する。状態制御部23aは、交換後のビットステートおよびローカルフィールドを、各探索部に供給する。
例えば、状態制御部23aは、温度インデックスと温度とを対応付けた第1の対応情報を、状態制御部23aが有するレジスタに保持する。例えば、温度インデックスは、温度の昇順に温度に対応付けられる(温度インデックスが大きいほど温度も高い)。第2の実施の形態では、温度インデックスは、探索部の識別情報でもある。更に、状態制御部23aは、例えば、温度の昇順に配列された温度インデックスとビットステートの識別番号(レプリカ番号)とを対応付けた第3の対応情報を、状態制御部23aが有するレジスタに保持する。状態制御部23aは、第1の対応情報および第3の対応情報に基づいて、探索部10a1~10aNに対するステートの交換を制御し、交換に応じて、第3の対応情報を更新する。第2の対応情報において温度インデックスが隣接する探索部のペアに対して、ステートの交換が行われ得る。状態制御部23aは、第3の対応情報に基づいて、探索部10a1~10aNにビットステートおよびローカルフィールドを供給する。
ただし、状態制御部23aは、レプリカ番号と温度値(探索部に対応する順序で昇順、または降順に配列された温度値)とを対応付けた対応情報を保持し、当該対応情報に基づいてステートの交換制御を行ってもよい。その場合、温度調整部21aによる新規温度の計算結果に応じて、当該対応情報における温度値が更新される。
全体制御部24aは、最適化装置2の全体の動作を制御する。全体制御部24aは、起動信号の入力を受け付ける。すると、全体制御部24aは、探索部10a1~10aNに初期の温度情報と温度の設定信号(T set sig.)とを出力し、探索部10a1~10aNの各々に初期温度を設定する。そして、全体制御部24aは、状態制御部23aに起動信号を出力し、探索部10a1~10aNを起動させて、最適化問題に対する演算を開始させる。
全体制御部24aは、演算が終了すると、探索部10a1~10aNの各々からビットステートを取得し、最適化問題に対する解を得る。全体制御部24aは、演算の終了を示す終了信号を出力する。終了信号は、演算により得られた解を示す情報を含み得る。例えば、全体制御部24aは、最適化装置2に接続された表示装置に、解を示す画像情報を出力し、解を示す画像情報を表示装置により表示させることで、得られた解の内容をユーザに提示してもよい。
図19は、温度調整部の回路構成例を示す図である。
温度調整部21aは、レジスタ310、最低エネルギー更新確認回路320、最高温度更新確認回路330、温度ヒストグラム計算回路340および温度計算回路350を有する。また、最適化装置2は、更に、温度制御部22aを有する。
レジスタ310は、N個のビットステートの各々のレプリカ番号に対応付けて、到達した最低エネルギーと、設定された温度の最高値(最高温度)とを記憶する。
最低エネルギー更新確認回路320は、所定のデータ取得タイミングにおいて、探索部10a1~10aNの各々から、エネルギー値Eと各探索部におけるビットステートのレプリカ番号とを受け付ける。最低エネルギー更新確認回路320は、受け付けたレプリカ番号毎のエネルギー値Eを、レジスタ310に記憶されたレプリカ番号毎の最低エネルギーと比較することで、最低エネルギーが更新された否かを、レプリカ番号毎に確認する。最低エネルギー更新確認回路320は、最低エネルギーが更新されたか否かのレプリカ番号毎の確認結果を示す信号を、最高温度更新確認回路330および温度ヒストグラム計算回路340に出力する。最低エネルギー更新確認回路320は、あるレプリカ番号において最低エネルギーが更新された場合、レジスタ310に記録された該当のレプリカ番号の最低エネルギーを、該当のレプリカ番号に対して今回取得したエネルギーに更新する。
最高温度更新確認回路330は、あるレプリカ番号について、最低エネルギー更新確認回路320による確認結果が、最低エネルギーが更新されていないことを示す場合、該当のレプリカ番号(ビットステート)に対する現在の温度を、レジスタ310に記憶された該当のレプリカ番号の最高温度と比較する。最高温度更新確認回路330は、当該比較に応じて、該当のレプリカ番号について、前回の最低エネルギーの更新からの最高温度が今回の設定温度により更新されたか否かを確認する。最高温度更新確認回路330は、最高温度が更新された場合、該当のレプリカ番号に対応する現在の設定温度で、レジスタ310に記録されている当該レプリカ番号の最高温度の情報を更新する。
温度ヒストグラム計算回路340は、あるレプリカ番号について、最低エネルギー更新確認回路320による確認結果が、最低エネルギーが更新されたことを示す場合、レジスタ310に記憶されている該当のレプリカ番号の最高温度を、温度ヒストグラム上にカウントする。温度ヒストグラムは、N個のビットステートの全体に対して1つ生成される。
温度計算回路350は、温度ヒストグラム計算回路340により生成された温度ヒストグラムに基づいて、探索部10a1~10aNに設定するN個の新規温度を計算する。温度計算回路350は、新規温度の計算に、式(6)、(7)を用いる。最低温度tmp_minは、温度計算回路350に予め設定される。最高温度tmp_maxは、温度ヒストグラムに基づいて温度計算回路350により決定される。温度計算回路350には、新規温度の計算に用いられる係数αが外部から入力され得る。温度計算回路350は、計算した新規温度を示す新規温度情報と、温度設定信号(T set sig.)とを温度制御部22aに出力する。更に、温度計算回路350は、新規温度情報を状態制御部23aに出力し、状態制御部23aが保持する第1の対応情報において温度インデックスに対応付けられる温度を更新させる。なお、温度計算回路350による温度計算方法は、温度計算回路250による温度計算方法と同様である。
ここで、温度制御部22aは、温度計算回路350から新規温度情報と温度設定信号(T set sig.)とを受け付ける。すると、温度制御部22aは、新規温度情報と温度設定信号(T set sig.)とを探索部10a1~10aNに出力することで、探索部10a1~10aNに対して新規温度を設定する。
また、温度調整部21aは、基底状態探索の全期間において、所定周期などで繰り返し温度調整を行う場合、温度制御部22aまたは状態制御部23aから、探索部10a1~10aNの各々に現在設定される温度の情報を取得してもよい。
図20は、レジスタに格納されるデータ例を示す図である。
レジスタ310では、所定オフセットを隔てた3つのアドレスが、1組のレコードに対応付けられる。例えば、アドレス「0xXXXXXX00」、「0xXXXXXXY0」、「0xXXXXXXZ0」は、アドレス「0xXXXXXXZ0」に格納されたレプリカ番号に対応する1組のレコードである。アドレス「0xXXXXXX00」には、該当のレプリカ番号に対応するビットステートが到達した最低エネルギーが格納される。例えば、最低エネルギーは、128ビット幅で表される。アドレス「0xXXXXXXY0」には、該当のレプリカ番号のビットステートにおいて前回の最低エネルギーの更新から、当該ビットステートに設定された最高の温度が格納される。例えば、温度は32ビット幅で表される。また、例えば、レプリカ番号は16ビット幅で表される。
同様に、他のレプリカ番号のビットステートに対しても、最低エネルギーと、温度と、レプリカ番号とが、レジスタ310に格納される。
このように、温度調整部21aは、探索部に設定されるビットステート(複数の状態変数)の識別情報(レプリカ番号)に対応付けて、当該ビットステートに対して到達したエネルギー値の最小値と、当該ビットステートに対して設定された最高温度を記録する。そして、温度調整部21aは、いずれかの探索部でエネルギー値の最小値が更新された場合に、当該エネルギー値の最小値の前回の更新から今回の更新までに該当の探索部におけるビットステート(複数の状態変数)に対して設定された温度のうちの最高の温度値を、温度統計情報として取得する。
次に、最適化装置2による処理手順を説明する。
図21は、レプリカ交換の全体制御例を示すフローチャートである。
(S1a)全体制御部24aは、外部から入力データとして初期温度を示す温度情報を受け取り、当該温度情報を探索部10a1~10aNに出力するとともに起動信号を状態制御部23aに出力する。
(S2a)状態制御部23aは、全体制御部24aからの起動信号を受けて、探索部10a1~10aNの各々による確率的探索の処理を実行させる。探索部10a1~10aNの各々による処理(探索処理)手順は、図12で例示した手順と同様である。
(S3a)温度調整部21aは、探索部10a1~10aNで規定の時間、又は規定のイタレーション数の確率的探索が実行されると、探索部10a1~10aNで計算されたエネルギー値およびレプリカ番号の取得を含むデータ収集処理を行う。データ収集処理の詳細は後述される。
(S4a)探索部10a1~10aNは、隣接探索部毎のエネルギー値、ビットステートおよびローカルフィールドを状態制御部23aに伝達する。状態制御部23aは、探索部10a1~10aNで計算されたエネルギー値、ビットステートおよびローカルフィールドを、隣接探索部のペア毎に取得する。隣接探索部のペアは、設定されている温度が隣接する探索部のペアである。当該探索部のペアにおける2つのビットステートは、温度が隣接していることになる。
(S5a)状態制御部23aは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、ステートの交換制御を行う。状態制御部23aは、温度が隣接する探索部のペア毎に、ステートの交換制御を行う。交換制御の詳細は後述される。
(S6a)温度調整部21aは、温度調整用のデータ取得期間内であるか否かを判定する。温度調整用のデータ取得期間内である場合、ステップS2aに処理が進む。温度調整用のデータ取得期間内でない場合、ステップS7aに処理が進む。
(S7a)温度調整部21aは、ステップS3aのデータ収集処理の結果として生成される温度ヒストグラム80(または累積ヒストグラム81)に基づいて、式(6)、(7)で用いられる最高温度tmp_maxを計算する。温度調整部21aは、計算した最高温度tmp_maxを用いて、式(6)、(7)に基づき、新規温度tmp[i]を計算する。温度調整部21aは、計算した新規温度を示す新規温度情報と温度設定信号とを温度制御部22aおよび状態制御部23aに出力する。状態制御部23aは、温度調整部21aにより出力された新規温度情報と温度設定信号とを受け付け、状態制御部23aが保持する第1の対応情報における各温度インデックスに対応付けられた温度を更新する。
(S8a)温度制御部22aは、探索部10a1~10aNの各々に新規温度情報および温度設定信号を出力することで、温度を設定し、探索部10a1~10aNの各々による確率的探索の処理を実行させる。
(S9a)探索部10a1~10aNは、探索部10a1~10aNで規定の時間、又は規定のイタレーション数の確率的探索が実行されると、隣接探索部毎のエネルギー値、ビットステートおよびローカルフィールドを状態制御部23aに伝達する。状態制御部23aは、探索部10a1~10aNで計算されたエネルギー値、ビットステートおよびローカルフィールドを、隣接探索部毎に取得する。
(S10a)状態制御部23aは、温度が隣接する探索部間でのエネルギー差を用いた式(5)に基づく交換確率により、ステートの交換制御を行う。状態制御部23aは、温度が隣接する探索部のペア毎に、ステートの交換制御を行う。
(S11a)探索部10a1~10aNは、規定回数、最低温度の探索部におけるビットステートに変化がなくなったか否かを判定する。最低温度の探索部におけるビットステートに変化がなくなると、探索部10a1~10aNは、全体制御部24aにビットステートを出力し、レプリカ交換の全体制御処理を終了する。最低温度の探索部におけるビットステートに変化がある場合、探索部10a1~10aNは、ステップS8aに処理を進め、確率的探索の処理を継続する。
図22は、データ収集処理例を示すフローチャートである。
データ収集処理は、ステップS3aに相当する。以下では、温度調整部21aによる探索部10a1に対する手順を説明するが、探索部10a2~10aNに対しても同様の手順となる。下記のステップS31a~S34aは、探索部10a1~10aNの各々に対して実行される。ステップS34aの温度ヒストグラム80は、探索部10a1~10aNに対して1つ計算される。
(S30a)最低エネルギー更新確認回路320は、データ収集タイミングであるか否かを判定する。データ収集タイミングである場合、ステップS31aに処理が進む。データ収集タイミングでない場合、データ収集処理が終了する。前述のように、データ収集タイミングは、探索部10a1~10aNの探索処理(図12の手順)の完了毎のタイミングでもよいし、当該探索処理の複数回の完了毎のタイミングでもよい。
(S31a)最低エネルギー更新確認回路320は、探索部10a1からエネルギーEとレプリカ番号とを取得する。最低エネルギー更新確認回路320は、レジスタ310に格納された該当のレプリカ番号の最低エネルギーと、取得したエネルギーEとを比較し、最低エネルギーが更新されたか否かを判定する。最低エネルギーが更新された場合、最低エネルギー更新確認回路320は、レジスタ310に格納された該当のレプリカ番号の最低エネルギーの記録を、探索部10a1から今回取得されたエネルギーEに更新し、ステップS34aに処理が進む。最低エネルギーが更新されていない場合、ステップS32aに処理が進む。
(S32a)最高温度更新確認回路330は、探索部10a1に設定されている温度を取得し、レジスタ310に格納されている該当のレプリカ番号に対する最高温度が更新されたか否かを判定する。最高温度が更新された場合、ステップS33aに処理が進む。最高温度が更新されていない場合、該当のレプリカ番号に関するデータ収集処理が終了する。
(S33a)最高温度更新確認回路330は、レジスタ310に格納された該当のレプリカ番号の最高温度の記録を、探索部10a1に設定されている温度に更新する。そして、該当のレプリカ番号に関するデータ収集処理が終了する。
(S34a)温度ヒストグラム計算回路340は、レジスタ310から該当のレプリカ番号に対応する最高温度を読み出し、温度ヒストグラム80における当該最高温度の度数(頻度)に1を加算する。なお、前述のように、温度ヒストグラム80は、探索部10a1~10aN(N個のビットステート)に対して1つ生成される。また、最高温度更新確認回路330は、レジスタ310に格納された該当のレプリカ番号の最高温度の記録を、探索部10a1に現在設定されている温度に更新する。そして、該当のレプリカ番号に関するデータ収集処理が終了する。
なお、温度調整部21aは、ステップS31a~S34aの処理を、探索部10a1~10aNの各々に対して並列に実行してもよい。あるいは、温度調整部21aは、探索部10a1~10aNの中から何れか1つを順番に選択して、ステップS31a~S34aの処理を繰り返して実行してもよい。
このように、温度調整部21aは、エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、探索部10a1~10aNの各々からエネルギー値を取得する。そして、温度調整部21aは、エネルギー値の最小値が更新されたか否かを、探索部10a1~10aNの各々におけるビットステート(複数の状態変数の値)に対して確認することで、データ収集処理を行う。
図23は、交換制御例を示すフローチャートである。
交換制御は、ステップS5a,S10aに相当する。
(S40a)状態制御部23aは、偶数番目の探索部に関し、式(5)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部とビットステートおよびローカルフィールドを交換するか否かを判定する。ビットステートおよびローカルフィールドの交換の判定は、探索部のペア毎に行われる。式(5)の関数fには、式(2)のメトロポリス法の関数、または、式(3)のギブス法の関数が用いられる。ビットステートおよびローカルフィールドを交換すると判定された探索部のペアがある場合、ステップS41aに処理が進む。ビットステートおよびローカルフィールドを交換すると判定された探索部のペアがない場合、ステップS42aに処理が進む。
(S41a)状態制御部23aは、ステップS40aでビットステートおよびローカルフィールドを交換すると判定された探索部のペアについて、ビットステートおよびローカルフィールドを交換する。状態制御部23aは、ステートの交換に応じて、状態制御部23aが保持する前述の第3の対応情報を更新する。
(S42a)状態制御部23aは、奇数番目の探索部に関し、式(5)で示される交換確率に基づいて、隣接する上位(又は下位)温度の探索部とビットステートおよびローカルフィールドを交換するか否かを判定する。ビットステートおよびローカルフィールドの交換の判定は、探索部のペア毎に行われる。式(5)の関数fには、式(2)のメトロポリス法の関数、または、式(3)のギブス法の関数が用いられる。また、状態制御部23aは、ステップS40aにおいて、偶数番目の探索部について上位温度の探索部とステートを交換するか否かを判定した場合、ステップS42aでは奇数番目の探索部について上位温度の探索部とステートを交換するか否かを判定する。状態制御部23aは、ステップS40aにおいて、偶数番目の探索部について下位温度の探索部と温度を交換するか否かを判定した場合、ステップS42aでは奇数番目の探索部について下位温度の探索部とステートを交換するか否かを判定する。ビットステートおよびローカルフィールドを交換すると判定された探索部のペアがある場合、処理がステップS43aに進む。ビットステートおよびローカルフィールドを交換すると判定された探索部のペアがない場合、交換制御が終了する。
(S43a)状態制御部23aは、ステップS42aでビットステートおよびローカルフィールドを交換すると判定された探索部のペアについて、ビットステートおよびローカルフィールドを交換する。状態制御部23aは、ステートの交換に応じて、状態制御部23aが保持する第3の対応情報を更新する。そして、交換制御が終了する。
なお、上記の例では、偶数番目の探索部の次に奇数番目の探索部に着目して、ステートの交換制御を行うものとしたが、奇数番目の探索部の次に偶数番目の探索部に着目して、ステートの交換制御を行ってもよい。すなわち、ステップS42a,S43aの後に、ステップS40a,S41aを実行してもよい。
このように、最適化装置2は、レプリカ交換において、探索部間でステートを交換することで、イジングモデルの基底状態探索を行ってもよい。
最適化装置2によれば、探索部10a1~10aNに設定する温度を適切に決定できる。具体的には、データ取得期間における最低エネルギーの更新、および、設定された最高温度の統計情報に基づいて、新規温度tmp[i]の最高値を決定することで、各探索部に設定する温度が高過ぎたり、低過ぎたりすることを抑えられる。このため、最適化装置2における解精度を向上させることができる。また、解精度の向上により、より早く適切な解に到達する可能性を高められ、演算の高速化を図れる。
また、適切な最高温度(tmp_maxに相当する温度)を決定するために、最適化装置2による最適化処理を繰り返し実行して、ユーザが手作業で調整することも考えられるが、この作業には膨大な手間がかかる。一方、上記のように、温度の統計情報に基づいて、最高温度tmp_maxを決定することで、ユーザ作業による温度調整の手間を軽減できる。
更に、第1の実施の形態と同様に、最適化装置2における温度調整の機能は、CPUによるソフトウェア処理によって実現されてもよい。最適化装置2は、最適化装置1aと同様のハードウェア構成とすることもできる。ただし、確率的探索部では、レプリカ交換において、探索部間でステートを交換する制御を行う。
図24は、解の個数の例を示す図である。
グラフ90は、比較例の方法で温度を決定して演算を行った場合に得られた組合せ最適化問題の解の個数と、最適化装置1,2(または最適化装置1a)により温度調整を行って演算を行った場合に得られた組合せ最適化問題の解の個数とを例示する。グラフ90の横軸は問題を示し、縦軸は解の個数を示す。比較例の方法は、演算開始時に、スピンビット間の結合を表す係数行列Wに基づいて、所定の演算により最高温度を決定し、各探索部に設定する温度を決定する方法である。
実験条件は次の通りである。基底状態探索の総イタレーション数は、1000万回である。レプリカ数(探索部10a1~10aNの数に相当)は、100である。各探索部のオフセット制御部により局所解脱出のために用いるオフセット値の増分値は1000である。実験では、組合せ最適化問題として、解が予め判明しているものを用い、基底状態探索の総イタレーション数の完了後に、その解の得られた探索部の個数をカウントする。
ここで、横軸に付された文字列は問題の名称であり、アルファベットまたはアルファベットと数字との組で示される接頭辞は、問題の種類を示す。例えば、接頭辞「mcp」は、最大カット問題を示す。接頭辞「molsim」は、分子類似性問題を示す。接頭辞「tsp32」は、巡回セールスマン問題を示す。更に、接頭辞に後続する文字列は、該当の種類の問題でのバリエーションを示す。
グラフ90によれば、分子類似性問題(「molsim_950_XX」)および巡回セールスマン問題(「tsp32_mapXX」)において、解が増加することが分かる。また、最大カット問題については、幾つかのバリエーション(例えば、mcp_G51~mcp_G54)において、比較例の方法とほぼ同等の求解性能であることが分かる。グラフ90に関して、総合的にみれば、最適化装置1,2の方法によれば、比較例の方法に対して改善傾向にあり、求解性能が向上することが分かる。また、解の個数が増すことから、比較例の方法よりも早く最適解に到達する可能性が高まり、演算の高速化を図れる。
1 最適化装置
10a1,10a2,…,10aN 探索部
11 状態保持部
12 エネルギー計算部
13 遷移制御部
20 制御部
21 温度調整部
22 温度制御部
23 交換制御部

Claims (10)

  1. 複数の探索部と前記複数の探索部を制御する制御部を有する最適化装置において、
    前記複数の探索部の各々は、
    エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
    前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の変化値を複数の状態遷移のそれぞれに対して計算することにより基底状態探索を行うエネルギー計算部と、
    設定された温度値と前記変化値と乱数値とに基づいて、前記エネルギー値の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部とを有し、
    前記制御部は、
    前記複数の探索部の各々における温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した温度統計情報に基づいて前記複数の探索部の各々に設定する前記温度値を決定する温度調整部と、
    決定した前記温度値を前記複数の探索部の各々に対して設定する温度制御部と、
    前記エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、前記複数の探索部間で前記温度値又は前記複数の状態変数の値を入れ替える交換制御部と、
    を有する最適化装置。
  2. 前記温度調整部は、取得した温度統計情報のうち、温度値の遷移に関し、各温度値の出現頻度を計数した温度頻度情報において、前記出現頻度の最大値に対応する温度値を前記複数の探索部の各々に設定する、
    請求項1記載の最適化装置。
  3. 前記温度調整部は、取得した温度統計情報のうち、温度値の遷移に関し、各温度値の出現頻度を累積した累積頻度を表す温度累積頻度情報において、前記累積頻度の最大値に所定係数を乗じて得られた頻度に対応する温度値を前記複数の探索部の各々に設定する、
    請求項1記載の最適化装置。
  4. 前記所定係数は、外部から入力される、
    請求項3記載の最適化装置。
  5. 前記遷移制御部は、前記温度値と前記変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する際、前記エネルギー値の変化値に所定のオフセット値を加算する、
    請求項1乃至4のいずれか一項に記載の最適化装置。
  6. 前記温度調整部は、取得した温度統計情報から、前記複数の探索部の各々に設定する前記温度値の最高値を決定し、前記最高値に基づいて前記複数の探索部の各々に設定する前記最高値以外の温度値を決定する、
    請求項1乃至5の何れか一項に記載の最適化装置。
  7. 前記温度調整部は、いずれかの探索部で前記エネルギー値の最小値が更新された場合に、前記エネルギー値の最小値の前回の更新から今回の更新までに、前記探索部又は前記探索部における前記複数の状態変数の値に対して設定された最高の温度値を、温度統計情報として取得する、
    請求項1乃至6のいずれか一項に記載の最適化装置。
  8. 前記温度調整部は、前記エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、前記複数の探索部の各々から前記エネルギー値を取得し、前記エネルギー値の最小値が更新されたか否かを、前記複数の探索部の各々、又は前記複数の探索部の各々における前記複数の状態変数の値に対して確認する、
    請求項7記載の最適化装置。
  9. 前記温度調整部は、前記複数の探索部の各々に第1の温度値が設定されている所定期間で温度統計情報を取得し、前記所定期間の終了後に、温度統計情報に基づいて前記複数の探索部の各々に設定する第2の温度値を決定する、
    請求項1乃至8のいずれか一項に記載の最適化装置。
  10. 複数の探索部と前記複数の探索部を制御する制御部を有する最適化装置の制御方法において、
    前記複数の探索部の各々が有する状態保持部が、エネルギー値を表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
    前記複数の探索部の各々が有するエネルギー計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギー値の変化値を複数の状態遷移のそれぞれに対して計算することにより基底状態探索を行い、
    前記複数の探索部の各々が有する遷移制御部が、設定された温度値と前記変化値と乱数値とに基づいて、前記エネルギー値の変化値と熱励起エネルギーとの相対関係によって前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定し、
    前記制御部が有する温度調整部が、前記複数の探索部の各々における温度値の遷移に関する統計情報である温度統計情報を取得するとともに、取得した温度統計情報に基づいて前記複数の探索部の各々に設定する前記温度値を決定し、
    前記制御部が有する温度制御部が、決定した前記温度値を前記複数の探索部の各々に対して設定し、
    前記制御部が有する交換制御部が、前記エネルギー値の基底状態探索の繰り返し回数到達又は一定時間経過後に、前記複数の探索部間で前記温度値又は前記複数の状態変数の値を入れ替える、
    最適化装置の制御方法。
JP2018219079A 2018-11-22 2018-11-22 最適化装置および最適化装置の制御方法 Active JP7108185B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018219079A JP7108185B2 (ja) 2018-11-22 2018-11-22 最適化装置および最適化装置の制御方法
US16/583,344 US11262717B2 (en) 2018-11-22 2019-09-26 Optimization device and control method of optimization device based on temperature statistical information
EP19200238.4A EP3660705A1 (en) 2018-11-22 2019-09-27 Optimization device and control method of optimization device
CN201910993506.XA CN111210046B (zh) 2018-11-22 2019-10-18 优化装置及优化装置的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018219079A JP7108185B2 (ja) 2018-11-22 2018-11-22 最適化装置および最適化装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020086821A JP2020086821A (ja) 2020-06-04
JP7108185B2 true JP7108185B2 (ja) 2022-07-28

Family

ID=68165437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018219079A Active JP7108185B2 (ja) 2018-11-22 2018-11-22 最適化装置および最適化装置の制御方法

Country Status (4)

Country Link
US (1) US11262717B2 (ja)
EP (1) EP3660705A1 (ja)
JP (1) JP7108185B2 (ja)
CN (1) CN111210046B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7174244B2 (ja) * 2018-12-26 2022-11-17 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7201911B2 (ja) * 2019-05-13 2023-01-11 富士通株式会社 最適化装置および最適化装置の制御方法
JP7248907B2 (ja) 2019-08-14 2023-03-30 富士通株式会社 最適化装置および最適化装置の制御方法
JP7051771B2 (ja) * 2019-09-09 2022-04-11 株式会社東芝 計算装置、計算方法およびプログラム
JP2021168068A (ja) * 2020-04-13 2021-10-21 富士通株式会社 最適化装置、最適化方法及び最適化プログラム
JP2022015503A (ja) * 2020-07-09 2022-01-21 富士通株式会社 情報処理システム、情報処理方法及びプログラム
JP2022090249A (ja) * 2020-12-07 2022-06-17 富士通株式会社 最適化装置、最適化方法、及び最適化プログラム
CN115858999B (zh) * 2023-02-07 2023-04-25 华南理工大学 一种基于改进模拟退火算法的组合优化问题处理电路
CN116151171B (zh) * 2023-04-17 2023-07-18 华南理工大学 一种基于并行回火的全连接伊辛模型退火处理电路

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 (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231197A (ja) 1996-02-22 1997-09-05 Fujitsu Ltd 温度並列シミュレーティド・アニーリング用恒温槽装置及び温度並列シミュレーティド・アニーリング方法
JPH09325949A (ja) 1996-06-04 1997-12-16 Nissan Motor Co Ltd 遺伝的アルゴリズムの最適化方法及び遺伝的アルゴリズムの解析システム
EP2020911A4 (en) * 2006-05-13 2011-07-27 Tensys Medical Inc CONTINUOUS POSITIONING DEVICE AND METHOD
CN100573557C (zh) * 2007-08-06 2009-12-23 北京航空航天大学 一种快速退火的基于mrf的sar图像分割方法
WO2012167498A1 (zh) * 2011-08-03 2012-12-13 华为技术有限公司 基于模拟退火算法的频率优化方法和装置
KR102108939B1 (ko) * 2012-04-18 2020-05-12 어플라이드 머티어리얼스, 인코포레이티드 발전된 어닐링 프로세스에서 입자를 감소시키기 위한 장치 및 방법
CN102982240B (zh) * 2012-11-19 2016-01-06 华侨大学 基于变尺度混沌模拟退火算法的圆度误差评定方法
GB2520293B (en) * 2013-11-14 2018-02-07 Passivsystems Ltd Improvements in and relating to temperature controlled systems
CN107077642B (zh) * 2014-08-22 2021-04-06 D-波系统公司 可用于量子计算的用于求解问题的系统和方法
CN104933328A (zh) * 2015-06-08 2015-09-23 浙江工业大学 一种基于副本交换的变步长蛋白质构象空间搜索方法
JP6468254B2 (ja) 2016-07-01 2019-02-13 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
CN107633157B (zh) * 2017-08-29 2020-10-27 浙江工业大学 一种基于分布估计和副本交换策略的蛋白质构象空间优化方法

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 富士通株式会社 最適化装置及び最適化装置の制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
三木光範 ほか,シミュレーテッドアニーリングプログラミングの温度並列化,情報処理学会論文誌 論文誌ジャーナル[CD-ROM],日本,社団法人情報処理学会,2010年07月15日,第51巻、第7号,pp.1371-1381,ISSN:1882-7837

Also Published As

Publication number Publication date
JP2020086821A (ja) 2020-06-04
CN111210046A (zh) 2020-05-29
EP3660705A1 (en) 2020-06-03
US11262717B2 (en) 2022-03-01
US20200166900A1 (en) 2020-05-28
CN111210046B (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
JP7108185B2 (ja) 最適化装置および最適化装置の制御方法
JP7248907B2 (ja) 最適化装置および最適化装置の制御方法
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7201911B2 (ja) 最適化装置および最適化装置の制御方法
JP2019185602A (ja) 最適化装置及び最適化装置の制御方法
US20210271274A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
JP2020204929A (ja) サンプリング装置およびサンプリング方法
JP7181454B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US20210334332A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program
EP3937090A1 (en) Information processing system, information processing method, and program
EP3851953B1 (en) Optimization apparatus, temperature setting method, and temperature setting program
JP6997404B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
CN111861519A (zh) 用于数据处理的方法、装置和介质
US20220366011A1 (en) Non-transitory computer-readable storage medium and information processing apparatus
WO2020263440A1 (en) Data-driven cross feature generation
JP2024022267A (ja) 計算方法、計算システム、及びプログラム
CN116186343A (zh) 信息处理设备、信息处理方法和计算机可读记录介质
JP2023122981A (ja) プログラム、データ処理装置及びデータ処理方法
CN117041073A (zh) 网络行为预测方法、系统、设备及存储介质

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

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220627

R150 Certificate of patent or registration of utility model

Ref document number: 7108185

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150