(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022177458
(43)【公開日】2022-12-01
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G06N 10/00 20220101AFI20221124BHJP
【FI】
G06N10/00
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021083725
(22)【出願日】2021-05-18
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成31年度、国立研究開発法人科学技術振興機構、「戦略的創造研究推進事業」、「チーム型研究(CREST)」、「Society5.0を支える革新的コンピューティング技術」、「学習/数理モデルに基づく時空間展開型アーキテクチャの創出と応用」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】川村 一志
(72)【発明者】
【氏名】本村 真人
(57)【要約】
【課題】良質な解を高速に得ることが可能な情報処理装置を提供する。
【解決手段】アニーリング制御部110は、アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、イジングモデルにおける複数のスピンの更新試行率とを制御する。瞬間磁場計算部120は、複数のスピンの瞬間磁場を並列に計算する。更新確率計算部130は、瞬間磁場に基づいて、複数のスピンの更新確率を並列に計算する。スピン状態決定部150は、更新確率と更新試行率とに基づいて、複数のスピンの状態を並列に決定する。
【選択図】
図9
【特許請求の範囲】
【請求項1】
イジングモデルを用いて解を求める情報処理装置であって、
アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御するアニーリング制御部と、
前記複数のスピンの瞬間磁場を並列に計算する瞬間磁場計算部と、
前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算する更新確率計算部と、
前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定するスピン状態決定部と、
を有する情報処理装置。
【請求項2】
前記アニーリング制御部は、アニーリングのステップが経過するにつれて前記更新試行率が減少するように、前記更新試行率を制御する、
請求項1に記載の情報処理装置。
【請求項3】
前記複数のスピンそれぞれについて、第1の乱数及び第2の乱数を生成する乱数生成部、
をさらに有し、
前記スピン状態決定部は、前記複数のスピンそれぞれについて、前記更新確率が前記第1の乱数よりも大きく、前記更新試行率が前記第2の乱数よりも大きい場合に、当該スピンの状態を更新する、
請求項1又は2に記載の情報処理装置。
【請求項4】
イジングモデルを用いて解を求める情報処理方法であって、
アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御し、
前記複数のスピンの瞬間磁場を並列に計算し、
前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算し、
前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定する、
情報処理方法。
【請求項5】
イジングモデルを用いて解を求める情報処理方法を実現するプログラムであって、
アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御する処理と、
前記複数のスピンの瞬間磁場を並列に計算する処理と、
前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算する処理と、
前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定する処理と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
例えば量子アニーリング又はシミュレーテッドアニーリング等の、イジングモデルの基底状態を探索する問題を求解するためのアニーリングアルゴリズム(焼き鈍し法)が知られている。例えば、特許文献1は、自己作用のパラメータを導入することによって、イジングモデルの全スピンの状態を並列に更新することが可能な情報処理装置を開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1にかかる技術では、イジングモデルの全スピンの状態を並列に更新することによって、スピンの状態を逐次的に更新するシミュレーテッドアニーリングよりも高速な処理を実現できる。また、特許文献1にかかる技術では、自己作用のパラメータの値を小さくすると、更新されるスピンの数が増加する傾向となるので、処理をさらに高速にすることが可能となる。しかしながら、自己作用のパラメータの値を小さくすると、イジングモデルにおける状態が正常に収束しないおそれがある。したがって、特許文献1にかかる技術では、高速な処理を実現しつつ、イジングモデルにおける状態を正常に収束させることは困難である。したがって、特許文献1にかかる技術では、良質な解を高速に得ることは困難である。
【0005】
本発明は、良質な解を高速に得ることが可能な情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明にかかる情報処理装置は、イジングモデルを用いて解を求める情報処理装置であって、アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御するアニーリング制御部と、前記複数のスピンの瞬間磁場を並列に計算する瞬間磁場計算部と、前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算する更新確率計算部と、前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定するスピン状態決定部と、を有する。
【0007】
また、本発明にかかる情報処理方法は、イジングモデルを用いて解を求める情報処理方法であって、アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御し、前記複数のスピンの瞬間磁場を並列に計算し、前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算し、前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定する。
【0008】
また、本発明にかかるプログラムは、イジングモデルを用いて解を求める情報処理方法を実現するプログラムであって、アニーリングのステップを制御するとともに、温度のパラメータと、自己作用のパラメータと、前記イジングモデルにおける複数のスピンの更新試行率とを制御する処理と、前記複数のスピンの瞬間磁場を並列に計算する処理と、前記瞬間磁場に基づいて、前記複数のスピンの更新確率を並列に計算する処理と、前記更新確率と前記更新試行率とに基づいて、前記複数のスピンの状態を並列に決定する処理と、をコンピュータに実行させる。
【発明の効果】
【0009】
本発明によれば、良質な解を高速に得ることが可能な情報処理装置、情報処理方法及びプログラムを提供できる。
【図面の簡単な説明】
【0010】
【
図1】比較例にかかるスピンシステムを示す図である。
【
図2】比較例にかかるスピン状態の更新を模式的に示す図である。
【
図3】比較例にかかるアニーリング処理を示すフローチャートである。
【
図4】比較例にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図5】比較例にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図6】比較例にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図7】本実施の形態にかかる更新試行率を説明するための図である。
【
図8】本実施の形態にかかる更新試行率を説明するための図である。
【
図9】実施の形態1にかかる情報処理装置の構成を示す図である。
【
図10】実施の形態1にかかる更新試行率の関数を例示する図である。
【
図11】実施の形態1にかかる情報処理装置によって実行される情報処理方法を示すフローチャートである。
【
図12】実施の形態1にかかるスピン状態決定部の処理を説明するための図である。
【
図13】実施の形態1にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図14】実施の形態1にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図15】実施の形態1にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
【
図16】実施の形態1にかかる情報処理装置で実現可能な別のアルゴリズムについて説明するための図である。
【発明を実施するための形態】
【0011】
(実施の形態の概要)
実施の形態の説明に先立って、本発明にかかる実施の形態の概要について説明する。なお、以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0012】
<シミュレーテッドアニーリングについて>
まず、一般的なシミュレーテッドアニーリング(Simulated Annealing:SA)による組み合わせ最適化問題について説明する。組み合わせ最適化問題は、以下の式1で示されるエネルギーHを最小化するσを求めることと等価である。言い換えると、組み合わせ最適化問題は、エネルギーHが式1で与えられるイジングモデルの、最小エネルギー状態(基底状態)を求める問題に等しい。式1は、シミュレーテッドアニーリングにおけるエネルギー関数(ハミルトニアン)を示す。
【数1】
・・・(1)
【0013】
ここで、式1の左辺のσは、以下の式2で定義されるベクトル(σ
iの組み合わせ;スピン配列)である。また、σ
i(及びσ
j)は、σの成分である。
【数2】
・・・(2)
【0014】
ここで、σiは、イジングモデルにおけるスピン(ノード;格子点)iの状態(イジングスピン)を示す二値パラメータ(状態パラメータ)である。式2に示すように、σiは、-1又は+1のいずれかの値をとる。なお、以下の説明において、便宜上、スピンiの意味で、σiを用いることがある。また、Nは、スピン数である。また、式1のJijは、スピンi(σi)とスピンj(σj)との間の相互作用(結合の強さ)を示す相互作用係数(結合係数)である。相互作用係数Jijは、例えば、スピンiとスピンjとの間の距離、又は、スピンiとスピンjとの間の重みを示す。また、hiは、スピンi(σi)に対する外部磁場を示す外部磁場係数である。なお、相互作用係数Jij及び外部磁場係数hiは、アニーリングアルゴリズムによる求解の対象である問題に応じて予め与えられる。つまり、解くべき組み合わせ最適化問題が決定すれば、相互作用係数Jij及び外部磁場係数hiは一意に定まり得る。
【0015】
また、シミュレーテッドアニーリングにおいて、組み合わせ最適化問題は、式1のエネルギーHを最小化するσを探索することに対応する。基底状態におけるスピン状態は、以下の式3で表される。σ
gは、最小エネルギー状態をとるスピン状態の組み合わせを示す。
【数3】
・・・(3)
【0016】
ここで、一般的に、Hを最小化するσを解析的に解くことはできない。そのため、解を確率的にサンプリングすることによって探索することが行われる。例えば、モンテカルロ法に基づくシミュレーテッドアニーリングアルゴリズムが実行される。そして、アニーリングステップが進むにつれて、更新スピン数(各アニーリングステップで更新されるスピンの数;フリップ数)が減少し、式1で示したエネルギーHが低下していくように、シミュレーテッドアニーリングアルゴリズムが実行される。そして、基底状態に近づくにつれて、更新スピン数は0に収束し、エネルギーHは、最低エネルギーに収束していく。つまり、アニーリングアルゴリズムの実行が進むにつれて、イジングモデルにおける状態が収束していく。
【0017】
ここで、シミュレーテッドアニーリングにおいて、全スピン間に相互作用を持つ全結合型(完全グラフ)のイジングモデルでは、各スピンの状態の更新(フリップ)が、他の全てのスピンの状態に影響を及ぼす。したがって、スピンの状態を並列に更新することができず、1つ1つのスピンの状態を、逐次、更新する。したがって、シミュレーテッドアニーリングでは、処理速度(収束速度)が遅くなるおそれがある。
【0018】
これに対し、特許文献1(以下、「比較例」と称する)にかかる技術では、自己作用のパラメータqを導入することによって、イジングモデルの全スピンの状態を並列に更新することが可能である。比較例では、SCA(stochastic cellular automata annealing:確率的セルラオートマタアニーリング)と呼ばれる手法を用いて、アニーリングアルゴリズムを実行している。以下、比較例にかかる技術について、説明する。
【0019】
<比較例について>
図1は、比較例にかかるスピンシステムを示す図である。
図1は、スピン数N=5とした場合の例を示している。
図1では、各スピンを円で示し、円の中の矢印の方向が、対応するスピンの状態を示している。ここで、上向きの矢印は、対応するスピンの状態が「+1」であることを示し、下向きの矢印は、対応するスピンの状態が「-1」であることを示している。したがって、σ
1=-1、σ
2=+1、σ
3=-1、σ
4=+1、σ
5=+1である。
【0020】
また、τ
iは、σ
iの次の状態に対応する。つまり、比較例では、各スピンσ
iに対するコピーであるレプリカスピンτ
iを導入している。ここで、
図1において、各スピンσ
iは、全てのレプリカスピンτと結合しているが、他のスピンσ
jと結合していない。同様に、各レプリカスピンτ
iは、他のレプリカスピンτ
jと結合していない。これにより、スピン状態の並列更新を妨げるσ-σ間の相互作用(依存性)を排除することができる。したがって、比較例では、スピン状態の並列更新を行うことが可能となる。なお、
図1において、σ
iからτ
iに向かっている太線の矢印は、自己作用を示している。
【0021】
ここで、比較例にかかるエネルギー関数(ハミルトニアン)は、以下の式4のように表される。言い換えると、スピン状態の並列更新を実現するために、式1に示したエネルギー関数が、以下の式4のように書き換えられる。
【数4】
・・・(4)
【0022】
ここで、式4において、左辺のτは、上記の式2に対応するベクトル(τiの組み合わせ;スピン配列)である。また、Jijは、スピンσiとスピンτjとの間の相互作用を示す。また、qは、スピンσiとスピンτiとの間の自己作用を示す自己作用係数(パラメータ)である。そして、自己作用係数qは、スピンの更新を抑制する機能を有する。
【0023】
また、右辺第3項は、スピン状態が更新されるとエネルギーHを+2qだけ増加させる、ペナルティ項として機能する。すなわち、スピン更新処理の後でスピンσiの状態が変化すると(つまりσi≠τi)、式4の右辺の第3項は、+2qとなる。このことは、1つのスピン状態が変化すると、系のエネルギーが2q増加することを示している。一方、スピンσiの状態が変化しない場合(つまりσi=τi)、式4の右辺の第3項は、0となる。また、このとき、式4の右辺第1項及び第2項は、それぞれ、式1の右辺第1項及び第2項と実質的に同じとなる。したがって、このとき、式4は、式1と等価となる。ここで、自己作用係数qが大きいと、第3項がペナルティ項として機能しやすくなるので、スピンが反転されにくいようになる。つまり、自己作用係数qが大きいと、更新スピン数が減少する。これに対し、自己作用係数qが小さいほどスピンの反転が容易となる。つまり、自己作用係数qが小さいと、更新スピン数が増加する。
【0024】
なお、上述したように、基底状態に近づくにつれて、更新スピン数は減少していく。したがって、基底状態では、σi=τi(及びσj=τj)となる。したがって、理論的には、基底状態では、式4は、式1と等価となり得る。したがって、適切な条件では、比較例にかかるアルゴリズム(SCA)における基底状態(最小エネルギー状態)に対応するスピン状態(式2で示したベクトル;スピン配列)で、シミュレーテッドアニーリングでも、基底状態(最小エネルギー状態)となるはずである。
【0025】
図2は、比較例にかかるスピン状態の更新を模式的に示す図である。上述したように、各スピンσ
iは、他のスピンσ
jと結合していない。同様に、各スピンτ
iは、他のスピンτ
jと結合していない。これにより、スピン状態の並列更新を妨げるσ-σ間の相互作用が排除されているので、
図2に示すように、比較例では、スピン状態の並列更新を行うことが可能となる。つまり、一度のモンテカルロステップにおいて、σ
1の状態からτ
1の状態への更新、σ
2の状態からτ
2の状態への更新、σ
3の状態からτ
3の状態への更新、及びσ
4の状態からτ
4の状態への更新を、並列して行うことが可能となる。なお、τ
1~τ
4は、次のモンテカルロステップにおいて、σ
1~σ
4となる。
【0026】
図3は、比較例にかかるアニーリング処理を示すフローチャートである。まず、データの初期化を行う(処理S101)。具体的には、アニーリングステップtを初期値「0」に設定する。また、アニーリングステップtの最大ステップ(t
max)を設定し、スピンの更新を何回繰り返すかを設定する。また、温度Tを、初期値T
0に設定する。あるいは、逆温度β(=1/T)を、初期値β
0に設定する。
【0027】
また、イジングモデルにおけるN個のスピン(ノード)σのそれぞれに対してランダムに初期状態を設定する。スピンの値は2値であればよいが、ここでは+1と-1とする。また、各ノードσiに対して外部磁場係数hiを定め、各ノード間(σi-σj間)の相互作用係数Jijを定める。そして、自己作用係数qを初期値q0に設定する。これらのデータは、モデルに基づいて定められ、アニーリングマシンに設定される。
【0028】
次に、スピン状態の更新を行う(処理S102~S104)。まず、処理S102において、瞬間磁場(局所場:local field)を計算する。瞬間磁場は、以下の式5によって計算される。
【数5】
・・・(5)
【0029】
ここで、便宜上、本明細書において、式5の左辺を、「~hi」と表す。瞬間磁場~hiは、各スピンについて、並列に計算される。ここで、σi
(t)は、スピンiの、ステップtにおけるスピン状態を示す。
【0030】
そして、処理S103において、それぞれのスピンσ
i(i=1~N)について、更新確率P
iを、並列に計算する。具体的には、以下の式6で示すように、シグモイド関数を用いて、更新確率P
iを計算する。
【数6】
・・・(6)
【0031】
処理S104では、スピンの更新確率Piによって、各スピンσi(i=1~N)の更新可否を決定し、並列的に更新する。スピン状態が更新される場合、σi←-σiとなる。これにより、そのアニーリングステップtにおける各スピンのスピン状態σが得られる。例えば、スピンごとに、0以上1未満の一様乱数randを生成し、乱数randと更新確率Piとを比較して、Pi>randの場合に、スピンiの状態σiを更新する。
【0032】
処理S105では、アニーリングパラメータを更新する。具体的には、アニーリングステップを1進める(t←t+1)。また、温度Tまたは逆温度βを更新する((T←T(t))あるいは(β←β(t)))。また、自己作用係数qを更新する(q←q(t))。ここで、T(t)、β(t)、q(t)は、ユーザによって予め定義された関数とする。
【0033】
なお、T(t)、β(t)、q(t)の設定は、ユーザが任意に選択できる。一般に、アニーリングステップが進むにつれて、温度Tは次第に小さくなり、Tの逆数である逆温度βは次第に大きくなっていく。また、q(t)は、原理的に、
図1に示した上側のスピン群のi番目のスピンσ
iと下側のスピン群のi番目のスピンτ
iとが、基底状態において同値となるように設定すればよい。すなわちアニーリングの最終ステップにおいて、q(t)が十分大きくなるような関数を選ぶ。一般に、最後のアニーリングのステップにおいて、q(t)は最大値を取る。
【0034】
処理S106において、アニーリングステップtがtmax未満であるか否かが判定される。t<tmaxである場合(S106のYES)、S102~S105の処理が繰り返される。一方、アニーリングステップtがtmaxになると(S106のNO)、スピン配列σi(i=1~N)を読み出して、最適化されたスピン配列として出力する(処理S107)。
【0035】
<比較例の問題点>
ここで、比較例の問題点について説明する。上述したように、自己作用係数qが大きいと、更新スピン数が減少し、したがって、収束速度が低下する。一方、自己作用係数qが小さいと、更新スピン数が増加し、したがって、収束速度が増加する。したがって、良質な解(基底状態におけるエネルギーが低くなるようなスピン状態)を高速に得るためには、自己作用係数qを小さくする必要がある。しかしながら、以下に説明するように、自己作用係数qが小さいと、イジングモデルにおける状態(更新スピン数及びエネルギー)の収束が正常に行われない可能性がある。
【0036】
図4~
図6は、比較例にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。
図4~
図6は、スピン数N=2000の場合の例を示している。また、
図4~
図6において、横軸は、モンテカルロステップの回数、つまり、アニーリングステップtを示す。また、左側の縦軸は、エネルギーHを示す。また、右側の縦軸は、更新スピン数を示す。これらのことは、後述する他のシミュレーション結果においても同様である。
【0037】
また、
図4~
図6において、矢印Aで示す曲線は、式1で示す系(SA)のエネルギーHを示す。つまり、矢印Aで示す曲線は、各アニーリングステップについて、比較例にかかる手法でアニーリングアルゴリズムを実行して得られたスピン状態σを式1に代入して得られたエネルギーHの、アニーリングステップごとの軌跡を示す。
【0038】
また、矢印Bで示す曲線は、式4で示す系(SCA)のエネルギーHを示す。つまり、矢印Bで示す曲線は、各アニーリングステップについて、比較例にかかる手法でアニーリングアルゴリズムを実行して得られたスピン状態σ及びτを式4に代入して得られたエネルギーHの、アニーリングステップごとの軌跡を示す。
【0039】
また、矢印Cで示す曲線は、アニーリングステップごとの更新スピン数の軌跡を示す。更新スピン数は、各アニーリングステップの前後でスピン状態が変化した(+1→-1又は-1→+1)スピンの数である。また、
図4~
図6の下の表において、H
meanは、アニーリングアルゴリズムの実験を複数回(ここでは128回)実行した場合の、シミュレーションの最終状態における式1で示す系のエネルギーの平均値である。また、H
minは、その場合のシミュレーションの最終状態における式1で示す系のエネルギーの最小値である。また、H
maxは、その場合のシミュレーションの最終状態における式1で示す系のエネルギーの最大値である。これらのことは、後述する他のシミュレーション結果においても同様である。なお、理想的には、シミュレーションの最終状態は、基底状態に対応する。
【0040】
ここで、比較例にかかるアニーリングアルゴリズムを実行すると、各アニーリングステップについて、スピン状態σの組み合わせ(σ
i(i=1~N))が得られる(
図3のS104)。そして、得られた各スピン状態σ
i(i=1~N)を式1に代入することで、式1で示す系のエネルギーHが得られる。同様に、得られた各スピン状態σ
i(i=1~N)と、スピン状態σ
iに対応するτ
i(σ
iの次のスピン状態)とを式4に代入することで、式4で示す系のエネルギーHが得られる。
【0041】
また、
図4は、q=10.538の場合のシミュレーション結果を示す。また、
図5は、q=5.296の場合のシミュレーション結果を示す。また、
図6は、q=3.513の場合のシミュレーション結果を示す。
図4及び
図5の例では、式1で示す系のエネルギー、式4で示す系のエネルギー及び更新スピン数は、正常に収束している。したがって、この場合、適切に、基底状態に近い状態を得ることができる。また、
図4及び
図5の下の表のエネルギーHの値から、qの値が小さい方が、シミュレーションの最終状態(基底状態に近い状態)におけるエネルギーHが低いことが分かる。
【0042】
一方、
図6の例では、矢印Bで示すように、式4で示す系のエネルギーは、見かけ上、収束しているが、矢印A及びCで示すように、式1で示す系のエネルギー及び更新スピン数は、収束していない。したがって、
図6の例では、イジングモデルにおける状態が正常に収束しているとは言えない。
【0043】
すなわち、式6で表された更新確率p
iは、アニーリングステップが進むにつれて、式4で示したエネルギー関数Hが下がるように、構成されている。そして、
図4及び
図5の例のようにqが大きい場合、qによる影響が大きいので、式4の右辺第3項を小さくするようにスピン状態が更新されていく。一方、
図6の例のようにqが小さい場合、式4の右辺第1項及び第2項の影響の方が、右辺第3項の影響よりも大きくなり得る。したがって、式4の右辺第1項及び第2項で右辺第3項の影響を打ち消すように、スピン状態が更新されてしまう。この場合、常にσ
i≠τ
iとなっている場合に、式4のエネルギーが低くなることがある。すなわち、
図6の矢印Cで示すように全てのスピンがスピン状態の更新を繰り返す状態(振動状態)において、矢印Bで示すように式4のエネルギーが最小となってしまう。この場合、
図6の矢印Cで示すように、更新スピン数は、最大(2000)となってしまう。また、
図6の矢印Aで示すように、式1のエネルギーは、高いエネルギー状態に発散してしまう。したがって、比較例にかかる技術では、自己作用係数qが小さいと、イジングモデルにおける状態が正常に収束しないおそれがある。したがって、比較例にかかる技術では、高速に良質な解を得ることは困難である。
【0044】
これに対し、本実施の形態では、アニーリングアルゴリズムに、更新試行率εを導入する。更新試行率εは、全スピン数Nに対する、スピン状態の更新が試行されるスピン(更新される可能性のあるスピン)の数の割合を示す。言い換えると、更新試行率εは、全スピン数に対する、スピン状態を更新するか否かの判定がなされる対象のスピン(更新判定対象スピン)の数の割合である。ここで、更新判定対象スピンの数は、更新スピン数の最大値に対応している。なお、更新判定対象スピンのスピン状態は、必ず更新されるわけではなく、更新確率に応じて更新されることに留意されたい。更新試行率εを導入することにより、一度のアニーリングステップで更新されるスピンの数が抑制される。したがって、
図6で示したような、全てのスピンが更新を繰り返すといった現象を、抑制することができる。
【0045】
図7及び
図8は、本実施の形態にかかる更新試行率εを説明するための図である。
図7は、比較例にかかるスピンシステムを示し、
図8は、本実施の形態にかかるスピンシステムを示す。
図7及び
図8は、
図1と同様に、スピン数N=5とした場合の例を示している。ここで、
図7及び
図8において、一点鎖線の矩形で囲まれたスピンは、更新判定対象スピンである。
図7に示すように、比較例では、常に、全てのスピンが、更新判定対象スピンである。
【0046】
これに対し、
図8に示すように、本実施の形態では、更新試行率εに応じて、更新判定対象スピンとならないスピンも存在する。例えば、ε=0.6とすると、全スピンの60%のスピンが、更新判定対象スピンとなる。
図8の例では、アニーリングステップt
nでは、更新判定対象スピンは、スピンσ
1,σ
3,σ
4である。したがって、σ
1,σ
3,σ
4は、対応する更新確率によっては、更新される可能性がある。一方、更新判定対象スピンではないσ
2,σ
5は、対応する更新確率が高い場合であっても、更新されることはない。
【0047】
また、アニーリングステップtn+1では、更新判定対象スピンは、スピンσ2,σ4,σ5である。したがって、σ2,σ4,σ5は、対応する更新確率によっては、更新される可能性がある。一方、更新判定対象スピンではないσ1,σ3は、たとえ更新確率が高い場合であっても、更新されることはない。このように、更新判定対象スピンは、アニーリングステップごとに、変更され得る。なお、全スピン数に対する更新判定対象スピン数の割合は、厳密に、更新試行率εに一致する必要はない。つまり、ε=0.6であるからといって、全スピン数に対する更新判定対象スピン数の割合は、厳密に、60%である必要はない。つまり、更新判定対象スピン数をNfとすると、結果的に、ε≒Nf/Nとなればよい。
【0048】
(実施の形態1)
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下に説明する実施の形態1では、上述した比較例にかかるアニーリングアルゴリズム(SCA)を改良したものに対応する。
【0049】
<情報処理装置>
図9は、実施の形態1にかかる情報処理装置100の構成を示す図である。情報処理装置100は、主要なハードウェア構成として、制御部102と、記憶部104と、通信部106と、インタフェース部108(IF;Interface)とを有する。制御部102、記憶部104、通信部106及びインタフェース部108は、データバスなどを介して相互に接続されている。
【0050】
制御部102は、例えばCPU(Central Processing Unit)等のプロセッサである。制御部102は、制御処理及び演算処理等を実行する機能を有する。記憶部104は、例えばメモリ又はハードディスク等の記憶デバイスである。記憶部104は、例えばROM(Read Only Memory)又はRAM(Random Access Memory)等である。記憶部104は、制御部102によって実行される制御プログラム及び演算プログラム等を記憶するための機能を有する。また、記憶部104は、処理データ等を一時的に記憶するための機能を有する。記憶部104は、データベースを含み得る。
【0051】
通信部106は、他の装置と有線又は無線のネットワークを介して通信を行うために必要な処理を行う。通信部106は、通信ポート、ルータ、ファイアウォール等を含み得る。インタフェース部108は、例えばユーザインタフェース(UI;User Interface)である。インタフェース部108は、キーボード、タッチパネル又はマウス等の入力装置と、ディスプレイ又はスピーカ等の出力装置とを有する。インタフェース部108は、ユーザによるデータの入力の操作を受け付け、ユーザに対して情報を出力する。
【0052】
また、情報処理装置100は、構成要素として、アニーリング制御部110と、瞬間磁場計算部120と、更新確率計算部130と、乱数生成部140と、スピン状態決定部150と、スピン配列出力部160とを有する。また、アニーリング制御部110は、ステップ制御部112と、温度制御部114と、自己作用制御部116と、更新試行率制御部118とを有する。
【0053】
なお、各構成要素は、例えば、制御部102の制御によって、プログラムを実行させることによって実現できる。より具体的には、各構成要素は、記憶部104に格納されたプログラムを、制御部102が実行することによって実現され得る。また、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてそのプログラムをインストールすることで、各構成要素を実現するようにしてもよい。また、各構成要素は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組み合わせ等により実現してもよい。また、各構成要素は、例えばFPGA(field-programmable gate array)又はマイコン(Micro Computer)等の、ユーザがプログラミング可能な集積回路を用いて実現してもよい。この場合、この集積回路を用いて、上記の各構成要素から構成されるプログラムを実現してもよい。
【0054】
アニーリング制御部110は、アニーリングステップを制御するように構成されている。また、アニーリング制御部110は、アニーリングアルゴリズムにおけるパラメータを更新するように構成されている。具体的には、アニーリング制御部110は、温度のパラメータと、自己作用のパラメータと、更新試行率とを制御するように構成されている。
【0055】
ステップ制御部112は、アニーリングアルゴリズムにおいて、アニーリングステップtを制御するように構成されている。具体的には、ステップ制御部112は、アニーリングステップが進むにつれて、アニーリングステップtを更新する。つまり、ステップ制御部112は、あるアニーリングステップにおいて各スピンについての処理が終了するごとに、アニーリングステップtを1つインクリメントする。ステップ制御部112は、最大ステップtmaxまで、アニーリングステップtを更新する。
【0056】
温度制御部114は、温度のパラメータである温度T又は逆温度βを制御するように構成されている。具体的には、温度制御部114は、アニーリングステップごとに、温度T又は逆温度βを更新する。ここで、上述した比較例と同様に、温度Tは、アニーリングステップtの関数である。具体的には、温度T(t)は、アニーリングステップtが増加するにつれて減少するような関数である。また、逆温度βは、アニーリングステップtの関数である。具体的には、逆温度β(t)は、アニーリングステップtが増加するにつれて増加するような関数である。温度T(t)及び逆温度β(t)は、ユーザによって予め定められた関数である。
【0057】
自己作用制御部116は、自己作用係数qを制御するように構成されている。具体的には、自己作用制御部116は、アニーリングステップごとに、自己作用係数qを更新する。ここで、自己作用係数qは、アニーリングステップtの関数であってもよい。自己作用係数q(t)は、アニーリングステップtが増加するにつれて増加するような関数であってもよい。また、自己作用係数q(t)は、一定値(つまりq(t)=q0)であってもよい。自己作用係数q(t)は、ユーザによって予め定められた関数である。
【0058】
更新試行率制御部118は、更新試行率εを制御するように構成されている。具体的には、更新試行率制御部118は、アニーリングステップごとに、更新試行率εを更新する。ここで、更新試行率εは、アニーリングステップtの関数であってもよい。更新試行率ε(t)は、アニーリングステップtが増加するにつれて減少するような関数であってもよい。つまり、更新試行率制御部118は、アニーリングのステップが経過するにつれて減少するように、更新試行率εを制御してもよい。また、更新試行率ε(t)は、一定値(つまりε(t)=ε0)であってもよい。更新試行率ε(t)は、ユーザによって予め定められた関数である。
【0059】
図10は、実施の形態1にかかる更新試行率εの関数を例示する図である。
図10に例示した更新試行率ε(t)は、t=1で初期値ε
initをとり、t=t
maxで最終値ε
finをとる、線形関数である。ここで、更新試行率ε(t)は、初期値ε
initで最大となり、最終値ε
finで最小となる。したがって、更新試行率ε(t)は、アニーリングステップtの経過ととともに、徐々に減少する。なお、更新試行率ε(t)は、線形関数でなくてもよい。また、更新試行率ε(t)は、連続的な関数でなくてもよい。更新試行率ε(t)は、アニーリングステップtが経過するにつれて階段状に減少するような関数でもよい。つまり、更新試行率ε(t)は、アニーリングステップtが1つ増加するごとに必ず減少する必要はない。
【0060】
瞬間磁場計算部120は、複数のスピンの瞬間磁場を並列に計算するように構成されている。具体的には、瞬間磁場計算部120は、上記の式5を用いて、各スピンi=1~Nについて、瞬間磁場~hiを、並列に計算する。
【0061】
更新確率計算部130は、瞬間磁場計算部120によって計算された瞬間磁場に基づいて、複数のスピンの更新確率を並列に計算するように構成されている。具体的には、更新確率計算部130は、例えば上記の式6を用いて、各スピンi=1~Nについて、更新確率Piを、並列に計算する。
【0062】
乱数生成部140は、乱数を生成するように構成されている。具体的には、乱数生成部140は、0以上1未満の一様乱数であるrandを生成する。乱数生成部140は、各アニーリングステップにおいて、複数のスピンそれぞれについて、乱数randを生成する。したがって、乱数randは、スピンごとに異なり得る。さらに具体的には、乱数生成部140は、rand(P)と、rand(ε)とを生成する。rand(P)(第1の乱数)は、スピン状態決定部150において、更新確率Piと比較される。rand(ε)(第2の乱数)は、スピン状態決定部150において、更新試行率εと比較される。
【0063】
スピン状態決定部150は、更新確率と更新試行率とに基づいて、複数のスピンの状態を並列に決定するように構成されている。具体的には、スピン状態決定部150は、複数のスピンそれぞれについて、更新確率Piが乱数rand(P)よりも大きく、且つ、更新試行率εが乱数rand(ε)よりも大きい場合に、当該スピンの状態を更新する。詳しくは後述する。
【0064】
スピン配列出力部160は、アニーリングステップt=tmaxにおけるスピン配列を出力するように構成されている。この、アニーリングステップt=tmaxにおけるスピン配列σ_1^(tmax),・・・,σ_N^(tmax)は、アニーリングアルゴリズムによって最適化されたものであることが期待される。
【0065】
<情報処理方法>
図11は、実施の形態1にかかる情報処理装置100によって実行される情報処理方法を示すフローチャートである。まず、アニーリング制御部110は、データの初期化を行う(処理S202)。具体的には、ステップ制御部112は、アニーリングステップtを初期値「1」に設定する。また、ステップ制御部112は、アニーリングステップtの最大ステップ(t
max)を設定し、スピンの更新を何回繰り返すかを設定する。また、温度制御部114は、温度Tを初期温度T
1に設定する。あるいは、温度制御部114は、逆温度β(=1/T)を、初期逆温度β
1(=1/T
1)に設定する。
【0066】
また、アニーリング制御部110は、以下の式7のように、N個のスピンの初期状態σ_1^(0),・・・,σ_N^(0)を、ランダムに設定する。スピンの値は2値であればよいが、ここでは+1と-1とする。
【数7】
・・・(7)
【0067】
また、アニーリング制御部110は、全てのi(i=1,・・・,N)に対して、各ノードσiの外部磁場係数hiを定める。また、アニーリング制御部110は、全てのi(i=1,・・・,N)及びj(j=1,・・・,N)に対して、各ノード間(σi-σj間)の相互作用係数Jijを定める。
【0068】
また、自己作用制御部116は、自己作用係数qを初期値q
1に設定する。また、更新試行率制御部118は、更新試行率εを初期値ε
1に設定する。例えば、初期値ε
1は、
図10の初期値ε
initに対応する。
【0069】
次に、情報処理装置100は、アニーリングアルゴリズムを実行する(処理S204~処理S212)。まず、瞬間磁場計算部120は、瞬間磁場を計算する(処理S204)。具体的には、瞬間磁場計算部120は、上述したように、上記の式5を用いて、全てのスピンi=1~Nについて、瞬間磁場~hiを、並列に計算する。
【0070】
次に、更新確率計算部130は、瞬間磁場計算部120によって計算された瞬間磁場に基づいて、スピンの更新確率を計算する(処理S206)。具体的には、更新確率計算部130は、上記の式6を用いて、全てのスピンi=1~Nについて、更新確率Piを、並列に計算する。
【0071】
次に、スピン状態決定部150は、各スピンの次の状態を決定する(処理S208)。具体的には、スピン状態決定部150は、各スピンi=1~Nに対して、更新確率計算部130によって計算された更新確率Piと、更新試行率εとに基づいて、スピン状態σi
(t)を決定する。なお、σi
(t)は、次のスピン状態に対応する。すなわち、t=1であれば、σi
(t)(つまりσi
(1))は、初期状態σi
(0)の次の状態に対応する。スピン状態決定部150の具体的な処理については後述する。
【0072】
次に、ステップ制御部112は、t=tmaxであるか否かを判定する(処理S210)。t=tmaxでない場合、つまりアニーリングステップtが最大ステップに達していない場合(S210のNO)、アニーリング制御部110は、アニーリングパラメータを更新する(処理S212)。具体的には、ステップ制御部112は、アニーリングステップを1進める(t←t+1)。また、温度制御部114は、温度Tを更新する(T←T(t))。あるいは、温度制御部114は、逆温度βを更新する(β←β(t))。また、自己作用制御部116は、自己作用係数qを更新する(q←q(t))。さらに、更新試行率制御部118は、更新試行率εを更新する(ε←ε(t))。ここで、T(t)、β(t)、q(t)、ε(t)は、ユーザによって予め定義された関数とする。そして、S204~S212の処理が繰り返される。これにより、アニーリングアルゴリズムの実行が継続し、アニーリングステップが進行する。
【0073】
なお、S204の処理において、瞬間磁場計算部120は、スピン状態が更新されたスピンに対してのみ、瞬間磁場を計算してもよい。すなわち、瞬間磁場計算部120は、更新されたスピンiについて、以下の式8によって、全てのスピンj(j=1~N)について瞬間磁場を更新してもよい。この場合、更新されたスピン状態σ
i又はそのスピンの識別子iが、リストに記憶されるようにしてもよい。
【数8】
・・・(8)
【0074】
なお、スピン状態が更新されたか否かに関わらず式5を用いて瞬間磁場を計算する場合と、上記のようにスピン状態が更新されたスピンに対してのみ瞬間磁場を更新する場合とで、各スピンについての瞬間磁場は同じであることに留意されたい。すなわち、スピン状態が更新されたか否かに関わらず式5を用いて瞬間磁場を計算することにより、結果的に、スピン状態が更新されたスピンについての瞬間磁場が更新される。一方、スピン状態が更新されていないスピンについての瞬間磁場については、前回のアニーリングステップと同じ瞬間磁場が計算される。しかしながら、スピン状態が更新されたスピンに対してのみ瞬間磁場を更新することにより、不要な計算が抑制されるので、計算資源の負荷を抑制することができる。
【0075】
一方、t=tmaxである場合、つまりアニーリングステップtが最大ステップに達した場合(S210のYES)、スピン配列出力部160は、アニーリングステップt=tmaxにおけるスピン配列を出力する(処理S214)。具体的には、スピン配列出力部160は、アニーリングステップt=tmaxにおけるスピン配列σi(i=1~N)を読み出して、最適化されたスピン配列σ_1^(tmax),・・・,σ_N^(tmax)として出力する。
【0076】
図12は、実施の形態1にかかるスピン状態決定部150の処理(S208)を説明するための図である。
図12は、スピン数N=5とした場合の例を示している。上述したように、アニーリングステップ(t-1)について、各スピンの瞬間磁場(
~h
i)が計算され(S204)、各スピンの更新確率P
iが計算される(S206)。そして、S208において、乱数生成部140が、スピンごとに、rand
(P)及びrand
(ε)を生成する。ここで、上述したように、0≦rand
(P)<1、0≦rand
(ε)<1である。
【0077】
スピン状態決定部150は、判定Aとして、更新確率P
iに基づく判定を行う。具体的には、スピン状態決定部150は、全てのスピンi(i=1,・・・,N)に対して、それぞれのスピンについて生成されたrand
(P)を用いて、P
i>rand
(P)であるか否かを判定する。スピン状態決定部150は、各スピンについて、この判定結果が真である場合に判定結果を「1」とし、判定結果が偽である場合に判定結果を「0」とする。
図12の例では、スピンσ
1,σ
2,σ
3,σ
4,σ
5についての判定Aの判定結果は、それぞれ、「1」,「1」,「0」,「1」,「0」である。
【0078】
また、スピン状態決定部150は、判定Bとして、更新試行率εに基づく判定を行う。具体的には、スピン状態決定部150は、全てのスピンi(i=1,・・・,N)に対して、独立して、それぞれのスピンについて生成されたrand
(ε)を用いて、ε>rand
(ε)であるか否かを判定する。なお、全てのスピンiに対してそれぞれ乱数rand
(ε)が生成され、互いに独立に判定がなされるので、各スピンについて判定Bの結果は異なり得る。スピン状態決定部150は、各スピンについて、この判定結果が真である場合に判定結果を「1」とし、判定結果が偽である場合に判定結果を「0」とする。
図12の例では、スピンσ
1,σ
2,σ
3,σ
4,σ
5についての判定Bの判定結果は、それぞれ、「1」,「0」,「1」,「1」,「0」である。
【0079】
そして、スピン状態決定部150は、各スピンi(i=1,・・・,N)について、判定Aの判定結果及び判定Bの判定結果が共に真である場合にスピン状態の更新を行うと判定する。つまり、スピン状態決定部150は、各スピンi(i=1,・・・,N)について、判定Aの判定結果及び判定Bの判定結果のAND演算により、以下の式9によって、スピン状態の更新を判定する。
【数9】
・・・(9)
【0080】
図12の例では、スピンσ
1,σ
2,σ
3,σ
4,σ
5についてのスピン更新判定は、それぞれ、「1」,「0」,「0」,「1」,「0」である。ここで、判定「1」の場合に、スピン状態の更新を行うとする。これにより、スピン状態決定部150は、アニーリングステップtについての各スピンのスピン状態σ
1
(t),σ
2
(t),σ
3
(t),σ
4
(t),σ
5
(t)を決定する。
図12の例では、σ
1
(t)=-σ
1
(t-1),σ
2
(t)=σ
2
(t-1),σ
3
(t)=σ
3
(t-1),σ
4
(t)=-σ
4
(t-1),σ
5
(t)=σ
5
(t-1)である。なお、スピン状態σ
i
(t-1)を「σ
i」とすると、スピン状態σ
1
(t)は、「τ
i」に対応する。
【0081】
ここで、
図12の例では、スピンσ
2については、その更新確率P
2が乱数rand
(P)よりも大きいにも関わらず、スピン状態が更新されない。これに対し、比較例では、更新確率が乱数randよりも大きいスピンについては、全て、スピン状態が更新されてしまう。
【0082】
<シミュレーション結果>
図13~
図15は、実施の形態1にかかる手法にてアニーリングアルゴリズムを実行した場合のシミュレーション結果を例示する図である。矢印Aで示す曲線は、各アニーリングステップについて、実施の形態1にかかる手法でアニーリングアルゴリズムを実行して得られたスピン状態σを式1に代入して得られたエネルギーHの、アニーリングステップごとの軌跡を示す。また、矢印Bで示す曲線は、各アニーリングステップについて、実施の形態1にかかる手法でアニーリングアルゴリズムを実行して得られたスピン状態σ及びτを式4に代入して得られたエネルギーHの、アニーリングステップごとの軌跡を示す。矢印Cで示す曲線は、アニーリングステップごとの更新スピン数の軌跡を示す。
【0083】
図13は、
図6に示した例と同様に、q=3.513の場合のシミュレーション結果を示す。また、
図13では、更新試行率εは、アニーリングステップの進行に伴って、1.0から0.5に変化する。つまり、ε
init=1.0、ε
fin=0.5である。ここで、上述したように、
図6の例では、イジングモデルにおける状態が正常に収束していない。これに対し、
図13では、式1で示す系のエネルギー(矢印A)及び更新スピン数(矢印C)が、収束している。つまり、
図6の例と異なり、
図13の例では、イジングモデルにおける状態が正常に収束している。
【0084】
また、
図14は、q=2.0の場合のシミュレーション結果を示す。また、
図14では、更新試行率εは、アニーリングステップの進行に伴って、0.95から0.3に変化する。つまり、ε
init=0.95、ε
fin=0.3である。この場合でも、式1で示す系のエネルギー(矢印A)及び更新スピン数(矢印C)が、収束している。つまり、
図14で示すように、自己作用係数qが
図13の例よりも小さい場合であっても、イジングモデルにおける状態が正常に収束している。
【0085】
また、
図15は、q=1.5の場合のシミュレーション結果を示す。また、
図15では、更新試行率εは、アニーリングステップの進行に伴って、0.95から0.3に変化する。つまり、ε
init=0.95、ε
fin=0.3である。この場合でも、式1で示す系のエネルギー(矢印A)及び更新スピン数(矢印C)が、収束している。つまり、
図15で示すように、自己作用係数qが
図14の例よりも小さい場合であっても、イジングモデルにおける状態が正常に収束している。
【0086】
このように、実施の形態1では、自己作用係数qが小さい場合であっても、適切に、基底状態(最小エネルギー状態)に近い状態を得ることができる。すなわち、実施の形態1では、更新試行率εを導入することにより、更新されるスピンの最大数を抑制している。これにより、どのアニーリングステップにおいても、全スピンのうちの一部のみのスピンが更新されることとなる。したがって、
図6に例示した比較例のような、自己作用係数qが小さい場合に全てのスピンが更新を繰り返すといった現象(振動状態)の発生を、抑制することができる。これにより、
図13~
図15に示すように、正常に基底状態に近い状態が得られる。したがって、実施の形態1にかかる情報処理装置100は、高速に良質な解を得ることが可能となる。
【0087】
また、
図13~
図15の下の表のエネルギーHの値から、qの値が小さい方が、最終状態(基底状態に近い状態)におけるエネルギーHが低いことが分かる。すなわち、実施の形態1では、良質な解を、適切に得ることが可能となる。したがって、実施の形態1では、並行にスピン更新を行うことにより高速に処理を行いつつ、良質な解を得ることが可能となる。
【0088】
また、実施の形態1にかかる情報処理装置100は、複数のスピンそれぞれについて、更新確率Piがrand(P)(第1の乱数)よりも大きく、更新試行率εがrand(ε)(第2の乱数)よりも大きい場合に、当該スピンの状態を更新している。これにより、上述したような、全てのスピンがスピン状態の更新を繰り返すといった現象(振動状態)の発生を抑制できるようなアルゴリズムを、容易に実現することが可能となる。
【0089】
また、実施の形態1にかかる情報処理装置100は、アニーリングステップが経過するにつれて減少するように、更新試行率εを制御している。これにより、より確実に、アニーリングステップが経過するにつれてスピン状態が更新されにくくすることができる。ここで、上述したように、アニーリングアルゴリズムでは、基底状態に近づくにつれて、更新スピン数は減少していく。したがって、上記のように更新試行率εを制御することにより、より確実に、基底状態に近い状態を得ることが可能となる。したがって、良質な解を得ることが可能となる。
【0090】
(実施の形態1の変形例)
図16は、実施の形態1にかかる情報処理装置100で実現可能な別のアルゴリズムについて説明するための図である。上述したように、実施の形態1にかかる情報処理装置100は、比較例にかかるSCAのアルゴリズムを改良したアルゴリズムを実現するように構成されている。しかしながら、実施の形態1にかかる情報処理装置100は、SCA以外のアルゴリズムに対しても、適用可能である。例えば、以下に説明するように、実施の形態1にかかる情報処理装置100は、モーメンタムアニーリング(Momentum Annealing:MA)に対しても、適用可能である。つまり、実施の形態1にかかる情報処理装置100にかかるアルゴリズムは、SCAに限定されない。実施の形態1にかかる情報処理装置100は、複数のスピンのスピン状態を並行して更新可能な任意のアルゴリズムに対して、適用可能である。
【0091】
モーメンタムアニーリングは、SCAと同様に、イジングモデルの全スピンの状態を並列に更新することが可能である。
図16の矢印M1に示すように、モーメンタムアニーリングにおけるイジングモデルは、全スピン間に相互作用を持つ全結合型(完全グラフ)のモデルである。
図16の例では、スピン数N=5のスピンσ
i(i=1~5)からなるモデルとした場合の例を示している。
【0092】
このモデルを、矢印M2で示すように、左右に2分割されたグラフに変換する。この変換されたモデル300において、右側のσi
Rは、左側のσi
Lの次のスピン状態に対応する。つまり、モデル300において、σi
Lとσi
Rとが、対になっている。モーメンタムアニーリングでは、この変換されたモデル300の構成が、予め決まっている。
【0093】
ここで、矢印M3で示すように、スピン状態の更新プロセスを時系列で示す。t=0からt=tmaxまで、各スピンiのスピン状態σ_i^(t)が更新されていく。ここで、モデル300において、t=0のときのスピン状態σ_i^(0)がスピン状態σi
Lに対応するとき、t=1のときのスピン状態σ_i^(1)は、スピン状態σ_i^(0)に対応するスピン状態σi
Lと対になるスピン状態σi
Rに対応する。そして、モデル300において、t=2のときのスピン状態σ_i^(2)は、スピン状態σi
Lの位置における、スピン状態σ_i^(0)の次のスピン状態に対応する。また、モデル300において、t=3のときのスピン状態σ_i^(3)は、スピン状態σi
Rの位置における、スピン状態σ_i^(1)の次のスピン状態に対応する。これにより、スピン状態σ_i^(2)とスピン状態σ_i^(3)とが対になる。以下同様にして、モデル300において、t=tmaxのときのスピン状態σ_i^(tmax)がスピン状態σi
Rに対応するとき、t=(tmax-1)のときのスピン状態σ_i^(tmax-1)は、スピン状態σi
Lに対応する。これにより、スピン状態σ_i^(tmax-1)とスピン状態σ_i^(tmax)とが対になる。
【0094】
ここで、モーメンタムアニーリングにかかるモデル300において、σi
Lの位置に対応するスピンiのスピン状態は、このσi
Lの位置の1つ前のスピン状態に基づいて行われる。同様に、モデル300において、σi
Rの位置に対応するスピンiのスピン状態は、このσi
Rの位置の1つ前のスピン状態に基づいて行われる。つまり、各スピンのスピン状態の更新は、時系列で示した更新プロセス(矢印M3で示す)において2つ前のアニーリングステップにおけるスピン状態に基づいて行われる。例えば、スピン状態σ_i^(2)の更新は、スピン状態σ_i^(0)に基づいて行われる。
【0095】
ここで、上述した実施の形態1にかかる情報処理装置100を、モーメンタムアニーリングのアルゴリズムに適用する場合、
図11に示したフローチャートを、以下に説明するように変形すればよい。すなわち、S202において、アニーリング制御部110は、N個のスピンの初期状態を、式7に示したものだけでなく、以下の式10のように、N個のスピンの初期状態σ_1^(-1),・・・,σ_N^(-1)を、ランダムに設定する。
【数10】
・・・(10)
【0096】
また、S206において、更新確率計算部130は、処理S204で計算された瞬間磁場に基づいて、以下の式11を用いて、全てのスピンi=1~Nについて、更新確率P
iを、並列に計算する。
【数11】
・・・(11)
【0097】
また、S208において、スピン状態決定部150は、各スピンi(i=1,・・・,N)について、
図12を用いて説明した判定Aの判定結果及び判定Bの判定結果のAND演算により、以下の式12によって、スピン状態の更新を判定する。
【数12】
・・・(12)
【0098】
上述したように、実施の形態1にかかる情報処理装置100は、SCAだけでなく、モーメンタムアニーリングに対しても、適用可能である。つまり、実施の形態1にかかる情報処理装置100は、SCAに限定されない。実施の形態1にかかる情報処理装置100は、複数のスピンのスピン状態を並行して更新可能な任意のアルゴリズムに対して、適用可能である。
【0099】
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートにおいて、各処理(ステップ)の順序は、適宜、変更可能である。また、複数ある処理(ステップ)のうちの1つ以上は、省略されてもよい。
【0100】
例えば、
図11に示したフローチャートにおいて、処理S208の後で、S210の処理ではなくS212の処理が実行されてもよい。この場合、S212の処理の後で、
図3のフローチャートのS106と実質的に同様の処理が実行されてもよい。また、S210の処理で、「t≧t
max」であるか否かが判定されてもよい。
【0101】
また、上述した実施の形態1において、スピン状態決定部150は、複数のスピンそれぞれについて、更新確率が乱数rand(P)よりも大きく、且つ、更新試行率が乱数rand(ε)よりも大きい場合に、当該スピンの状態を更新するとした。しかしながら、このような構成に限られない。Pi×ε>randのときに、スピンiのスピン状態が更新されるようにしてもよい。つまり、スピン状態決定部150は、更新確率Piと更新試行率εとの積が乱数よりも大きい場合に、スピンiのスピン状態を更新するように決定してもよい。言い換えると、更新確率Piに基づく判定と更新試行率εに基づく判定とを、互いに独立して行わなくてもよい。
【0102】
上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disk(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【符号の説明】
【0103】
100 情報処理装置
110 アニーリング制御部
112 ステップ制御部
114 温度制御部
116 自己作用制御部
118 更新試行率制御部
120 瞬間磁場計算部
130 更新確率計算部
140 乱数生成部
150 スピン状態決定部
160 スピン配列出力部
300 モデル