(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024102928
(43)【公開日】2024-08-01
(54)【発明の名称】アニーリング処理装置、アニーリング処理方法及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240725BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023007010
(22)【出願日】2023-01-20
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人科学技術振興機構、「戦略的創造研究推進事業」、「チーム型研究(CREST)」、「Society5.0を支える革新的コンピューティング技術」、「学習/数理モデルに基づく時空間展開型アーキテクチャの創出と応用」、「学習/数理モデルに基づく時空間展開型アーキテクチャの創出と応用」、委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】川村 一志
(72)【発明者】
【氏名】劉 載勲
(72)【発明者】
【氏名】本村 真人
(57)【要約】
【課題】1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが可能なアニーリング処理装置を提供する。
【解決手段】アニーリングポリシー設定部120は、複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定する。アニーリング制御部130は、第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行う。反転可否判定部150は、瞬間磁場に基づいて複数のスピンの反転確率を計算して、反転確率に基づいて複数のスピンそれぞれについて反転の可否を判定する反転スピン選択部160は、第1のアニーリングポリシーに応じた方法で、実際に反転されるスピンを選択する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
イジングモデルを用いて解を求めるアニーリング処理装置であって、
アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定するように構成されているアニーリングポリシー設定部と、
設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行うように構成されているアニーリング制御部と、
前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算するように構成されている瞬間磁場計算部と、
前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定するように構成されている反転可否判定部と、
前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定するように構成されている反転スピン選択部と、
を有するアニーリング処理装置。
【請求項2】
前記複数のアニーリングポリシーそれぞれについて予め設けられたビットパターンで構成された複数のマスクを格納するように構成されているマスク格納部、
をさらに有し、
前記反転可否判定部は、前記複数のスピンそれぞれの反転の可否を示すビットを成分とする反転可否ベクトルを生成し、
前記反転スピン選択部は、前記複数のマスクのうちの前記第1のアニーリングポリシーに対応する第1のマスクを用いて、前記反転可否ベクトルに対応する各ビット列のうち前記第1のアニーリングポリシーに応じた位置のビットを選択することによって、実際に反転される前記スピンを選択する、
請求項1に記載のアニーリング処理装置。
【請求項3】
前記反転スピン選択部は、
前記反転可否ベクトルの各ビットに対してランダムな数だけサイクリックシフトを行い、
サイクリックシフトが行われた前記反転可否ベクトルの各ビットと前記第1のマスクの各ビットとで論理積を行って得られたビット列のうち、前記第1のアニーリングポリシーに応じた位置のビットを選択することによって、実際に反転される前記スピンを選択する、
請求項2に記載のアニーリング処理装置。
【請求項4】
前記マスク格納部は、前記複数のアニーリングポリシーそれぞれについて1つのマスクを格納する、
請求項3に記載のアニーリング処理装置。
【請求項5】
前記アニーリングポリシー設定部は、アニーリング処理が実行されている間に、前記第1のアニーリングポリシーを変更するように構成されている、
請求項1に記載のアニーリング処理装置。
【請求項6】
前記アニーリング制御部は、疑似温度の変化に対応する第1のステップごとに温度のパラメータを更新し、1つの前記第1のステップにおいて、1つ以上の第2のステップが実行されるように制御を行い、前記第2のステップごとに、前記複数のスピンの状態が決定されるように制御を行い、
前記第1のステップにおける前記第2のステップの数は、前記第1のアニーリングポリシーに応じて設定され、
前記第1のアニーリングポリシーが変更されるときに、前記第2のステップの数が変更される、
請求項5に記載のアニーリング処理装置。
【請求項7】
イジングモデルを用いて解を求めるアニーリング処理方法であって、
アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定し、
設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行い、
前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算し、
前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定し、
前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定する、
アニーリング処理方法。
【請求項8】
イジングモデルを用いて解を求めるアニーリング処理方法を実現するプログラムであって、
アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定する処理と、
設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行う処理と、
前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算するように制御を行う処理と、
前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定するように制御を行う処理と、
前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定するように制御を行う処理と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、アニーリング処理装置、アニーリング処理方法及びプログラムに関する。
【背景技術】
【0002】
例えば量子アニーリング又はシミュレーテッドアニーリング等の、イジングモデルの基底状態を探索する問題を求解するためのアニーリングアルゴリズム(焼き鈍し法)が知られている。アニーリングアルゴリズムの種類には様々なものがある。古典的かつ一般的なアニーリングアルゴリズムの種類として、シミュレーテッドアニーリング(Simulated Annealing:SA)が挙げられる。また、特許文献1は、デジタルアニーリング(Digital Annealing:DA)に関する技術を開示する。また、特許文献2は、自己作用のパラメータを導入することによって、イジングモデルの全スピンの状態を並列に更新することが可能な技術(確率的セルラオートマタアニーリング;Stochastic Cellular Automata Annealing:SCA)を開示する。また、特許文献3は、更新確率と更新試行率とに基づいて、複数のスピンの状態を並列に決定する技術(更新試行率制御並列アニーリング;Ratio-Controlled Parallel Annealing:RPA)を開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第11372034号明細書
【特許文献2】特開2021-43508号公報
【特許文献3】特開2022-177458号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したように、アニーリングアルゴリズムの種類(アニーリングポリシー)には様々なものがある。一方、解を求めようとする問題(組み合わせ最適化問題)の性質によって、どのアニーリングポリシーが優れているかが、異なることがある。このような場合、複数のアニーリングポリシーのうちの1つのみに関するアニーリング処理を実行するような装置では、解を求めようとする問題によっては良好にアニーリング処理を行うことができないおそれがある。したがって、1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが望ましい。
【0005】
本開示は、1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが可能なアニーリング処理装置、アニーリング処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示にかかるアニーリング処理装置は、イジングモデルを用いて解を求めるアニーリング処理装置であって、アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定するように構成されているアニーリングポリシー設定部と、設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行うように構成されているアニーリング制御部と、前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算するように構成されている瞬間磁場計算部と、前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定するように構成されている反転可否判定部と、前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定するように構成されている反転スピン選択部と、を有する。
【0007】
また、本開示にかかるアニーリング処理方法は、イジングモデルを用いて解を求めるアニーリング処理方法であって、アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定し、設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行い、前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算し、前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定し、前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定する。
【0008】
また、本開示にかかるプログラムは、イジングモデルを用いて解を求めるアニーリング処理方法を実現するプログラムであって、アニーリングアルゴリズムの種類である複数のアニーリングポリシーの中からアニーリング処理を実行するための第1のアニーリングポリシーを設定する処理と、設定された前記第1のアニーリングポリシーに関するアニーリング処理が実行されるように制御を行う処理と、前記イジングモデルにおける複数のスピンに関する瞬間磁場を計算するように制御を行う処理と、前記瞬間磁場に基づいて前記複数のスピンの反転確率を計算して、前記反転確率に基づいて前記複数のスピンそれぞれについて反転の可否を判定するように制御を行う処理と、前記第1のアニーリングポリシーに応じた方法で、実際に反転される前記スピンを選択し、これによって前記複数のスピンの状態を決定するように制御を行う処理と、をコンピュータに実行させる。
【発明の効果】
【0009】
本開示によれば、1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが可能なアニーリング処理装置、アニーリング処理方法及びプログラムを提供できる。
【図面の簡単な説明】
【0010】
【
図1】複数のアニーリングポリシーの違いを説明するための図である。
【
図2】複数のアニーリングポリシーの違いを説明するための図である。
【
図3】複数のアニーリングポリシーの違いを説明するための図である。
【
図4】複数のアニーリングポリシーの違いを説明するための図である。
【
図5】解くべき最適化問題の性質と最良なアニーリングポリシーとの関係を説明するための図である。
【
図6】解くべき最適化問題の性質と最良なアニーリングポリシーとの関係を説明するための図である。
【
図7】実施の形態1にかかるアニーリング処理装置の構成を示す機能ブロック図である。
【
図8】実施の形態1にかかる疑似温度について説明するための図である。
【
図9】実施の形態1にかかる疑似温度について説明するための図である。
【
図10】実施の形態1にかかるアニーリング処理装置によって実行されるアニーリング処理方法を示すフローチャートである。
【
図11】実施の形態1にかかる反転スピン選択部の処理について説明するための図である。
【
図12】実施の形態1にかかる反転スピン選択部の処理について説明するための図である。
【
図13】実施の形態1にかかる反転スピン選択部の処理について説明するための図である。
【
図14】実施の形態2にかかるアニーリング処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【0011】
(実施の形態の概要)
実施の形態の説明に先立って、本実施の形態の概要について説明する。なお、以下、本実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0012】
<アニーリングについて>
まず、一般的なシミュレーテッドアニーリング(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】
なお、本実施の形態では、アニーリングアルゴリズムの種類を、「アニーリングポリシー」と称する。そして、本実施の形態では、アニーリングポリシーの例として、上述したシミュレーテッドアニーリング(SA)、特許文献1にかかるデジタルアニーリング(DA)、特許文献2にかかるSCA、及び、特許文献3にかかるRPAを挙げる。しかしながら、本実施の形態にかかるアニーリングポリシーは、これらに限定されない。
【0018】
<アニーリングポリシーについて>
図1~
図4は、複数のアニーリングポリシーの違いを説明するための図である。
図1~
図4では、スピン数N=6として、スピンσ
1~σ
6を反転(フリップ)させることを考える場合の例を示している。
図1~
図4では、各スピンを円で示し、円の中の矢印の方向が、対応するスピンの状態を示している。ここで、上向きの矢印は、対応するスピンの状態が「+1」であることを示し、下向きの矢印は、対応するスピンの状態が「-1」であることを示している。したがって、
図1~
図4において、各スピンの初期状態は、σ
1=+1、σ
2=-1、σ
3=-1、σ
4=-1、σ
5=+1、σ
6=-1である。
【0019】
図1は、シミュレーテッドアニーリング(SA)に関するアニーリング処理を説明するための図である。
図1に示すように、シミュレーテッドアニーリング(SA)では、スピンσ
1~σ
6から、スピンがランダムに1つ選択される。
図1の例では、スピンσ
5が選択されている。そして、このスピンσ
5に関して計算された瞬間磁場に基づいてスピンσ
5を反転させるかが判定され、スピンσ
5が反転される。つまり、SAでは、逐次的に、スピンの反転処理を行っている。なお、瞬間磁場については後述する。
【0020】
図2は、デジタルアニーリング(DA)に関するアニーリング処理を説明するための図である。
図2に示すように、デジタルアニーリング(DA)では、スピンσ
1~σ
6のそれぞれについて、並列に、反転され得るか否か(反転可能であるか否か)が判定される。つまり、スピンσ
1~σ
6のそれぞれについて、並列に、更新可能であるか否かが判定される。ここで、スピンσ
1~σ
6のそれぞれについて並列に瞬間磁場が計算される。そして、計算された瞬間磁場に基づいて、スピンσ
1~σ
6のそれぞれの反転確率が並列に計算される。そして、その反転確率に基づいて、スピンσ
1~σ
6のそれぞれが反転され得るか否かが、判定される。
図2の例では、スピンσ
1~σ
4が反転可能であると判定されている。そして、反転可能であるスピンから、実際に反転されるスピンが、ランダムに選択される。
図2の例では、反転可能であるスピンσ
1~σ
4から、実際に反転されるスピンσ
4が選択される。
【0021】
図3は、SCAに関するアニーリング処理を説明するための図である。
図3に示すように、SCAでは、スピンσ
1~σ
6のそれぞれについて、並列に、反転され得るか否か(反転可能であるか否か)が判定される。つまり、スピンσ
1~σ
6のそれぞれについて、並列に、更新可能であるか否かが判定される。ここで、スピンσ
1~σ
6のそれぞれについて並列に瞬間磁場が計算される。そして、計算された瞬間磁場に基づいて、スピンσ
1~σ
6のそれぞれの反転確率が並列に計算される。そして、その反転確率に基づいて、スピンσ
1~σ
6のそれぞれが反転され得るか否かが、判定される。その際に、SCAでは、スピンの反転を抑制するような自己作用(パラメータq)を用いて、反転確率が計算されている。
図3の例では、スピンσ
1,σ
3,σ
4が反転可能であると判定されている。そして、SCAでは、反転可能であるスピンが全て反転される。したがって、
図3の例では、反転可能であるスピンσ
1,σ
3,σ
4の全てが、実際に反転される。
【0022】
図4は、RPAに関するアニーリング処理を説明するための図である。RPAは、SCAの技術を改良したものに対応する。
図4に示すように、RPAでは、スピンσ
1~σ
6のそれぞれについて、並列に、反転され得るか否か(反転可能であるか否か)が判定される。つまり、スピンσ
1~σ
6のそれぞれについて、並列に、更新可能であるか否かが判定される。ここで、スピンσ
1~σ
6のそれぞれについて並列に瞬間磁場が計算される。そして、計算された瞬間磁場に基づいて、スピンσ
1~σ
6のそれぞれの反転確率が並列に計算される。そして、その反転確率に基づいて、スピンσ
1~σ
6のそれぞれが反転され得るか否かが、判定される。その際に、RPAでは、スピンの反転を抑制するような自己作用(パラメータq)を用いて、反転確率が計算されている。
図4の例では、スピンσ
1~σ
4が反転可能であると判定されている。そして、RPAでは、更新試行率ε(0<ε<1)に従って、反転可能であるスピンの一部を実際に反転させる。例えば、更新試行率がε=0.5である場合、反転可能である全てのスピンのうちの50%の数のスピンを実際に反転させる。すなわち、反転可能であるスピンの数をN’とすると、実際に反転するスピンの数は、εN’となり得る。
図4の例では、4個の反転可能であるスピンσ
1~σ
4のうち、2個のスピンσ
1,σ
3が、実際に反転される。ここで、SCAで導入された自己作用係数qが大きいとスピンの反転が一様に制限されてしまうので、更新スピン数が減少し、収束速度が低下する。一方で、SCAにおいて自己作用係数qを小さくすると、イジングモデルにおける状態(更新スピン数及びエネルギー)の収束が正常に行われない可能性がある。これに対し、RPAで更新試行率εを導入することにより、自己作用係数qを小さくしても(あるいはq=0としても)、イジングモデルにおける状態を正常に収束させることができる。
【0023】
<問題提起>
図5及び
図6は、解くべき最適化問題の性質と最良なアニーリングポリシーとの関係を説明するための図である。ここで、最良なアニーリングポリシーとは、基底状態のエネルギーが最も低い結果となるアニーリングポリシーに対応する。また、最適化問題の性質は、イジングモデルの特徴量に対応する。そして、
図5及び
図6の例では、イジングモデルの特徴量として、相互作用係数J
ijに着目している。
【0024】
図5及び
図6は、以下の式4においてp+及びp-を変化させて最適化問題を疑似的に作成してアニーリング処理を行ったときの、最良なアニーリングポリシーを示している。
【数4】
・・・(4)
【0025】
ここで、
図5及び
図6では、相互作用係数J
ijが、「+1」、「-1」及び「0」のいずれかの値をとるとしている。そして、J
ij=+1を「正の相互作用」、J
ij=-1を「負の相互作用」とする。
図5及び
図6は、正の相互作用と負の相互作用をそれぞれある割合(p+,p-)で持つイジングモデルを各アニーリングポリシー(アニーリング手法)で解いた際に、どのアニーリング手法が最も優れた結果を示すのかを示している。
図5及び
図6に示されたグラフにおいて、横軸は、正の相互作用の割合p+を示し、縦軸は、負の相互作用の割合p-を示す。
【0026】
図5は、イジングモデルの正の相互作用の割合p+及び負の相互作用の割合p-を変化させて上述した4つのアニーリングポリシーそれぞれに関するアニーリング処理を実行したときに最も優れた結果が得られたアニーリングポリシーを示している。つまり、
図5は、イジングモデルに応じて、4つのアニーリングポリシーのうちのどれによって優れた結果が得られるかを示している。
【0027】
図5は、負の相互作用の割合p-が高いイジングモデルを解く場合、つまり、負の相互作用を多く有するイジングモデルを解く場合、概ね、RPAによるアニーリング処理によって最も優れた結果が得られることを示している。また、
図5は、負の相互作用の割合p-が1.0に近いイジングモデルを解く場合、つまり、負の相互作用を非常に多く有するイジングモデルを解く場合では、DAによるアニーリング処理によって最も優れた結果が得られることを示している。また、
図5は、正の相互作用の割合p+が高いイジングモデルを解く場合、つまり、正の相互作用を多く有するイジングモデルを解く場合では、どのアニーリングポリシーによるアニーリング処理でも同様の結果が得られることを示している。
【0028】
図6は、イジングモデルの正の相互作用の割合p+及び負の相互作用の割合p-を変化させてSCAとSAとのそれぞれに関するアニーリング処理を実行したときに優れた結果が得られたアニーリングポリシーを示している。つまり、
図6は、イジングモデルに応じて、SCA及びSAのどちらによって優れた結果が得られるかを示している。言い換えると、
図6は、イジングモデルにより、SAのような逐次的な反転処理のアニーリングポリシーが良いのか、又はSCAのような並列的な反転処理のアニーリングポリシーが良いのかを、示している。
【0029】
図6は、正の相互作用の割合p+が高いイジングモデルを解く場合、つまり、正の相互作用を多く有するイジングモデルを解く場合では、どちらのアニーリングポリシーによるアニーリング処理でも、同様の結果が得られることを示している。また、
図6は、負の相互作用の割合p-が正の相互作用の割合p+よりも高いイジングモデルを解く場合、つまり、負の相互作用を多く有するイジングモデルを解く場合では、SAによるアニーリング処理によって最も優れた結果が得られることを示している。一方、
図6は、負の相互作用の割合p-と正の相互作用の割合p+とが概ね同じイジングモデルを解く場合では、SCAによるアニーリング処理によって最も優れた結果が得られることを示している。つまり、負の相互作用を正の相互作用よりも多く有するイジングモデルを解く場合では、逐次的な反転処理のアニーリングポリシーが良く、負の相互作用と正の相互作用とを同程度有するイジングモデルを解く場合では、並列的な反転処理のアニーリングポリシーが良いことがわかる。
【0030】
このように、イジングモデル(最適化問題)の性質により、最良の結果が得られるアニーリングポリシーが異なる。したがって、1つのアニーリングポリシーのみを行うようなアニーリング処理装置では、良好な結果を得ることができないおそれがある。これに対し、以下に示すように、本実施の形態にかかるアニーリング処理装置は、解くべきイジングモデル(最適化問題)に応じて、複数のアニーリングポリシーを切り替えてアニーリング処理を行うことができる。したがって、本実施の形態にかかるアニーリング処理装置では、1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが可能となる。
【0031】
(実施の形態1)
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0032】
<アニーリング処理装置>
図7は、実施の形態1にかかるアニーリング処理装置100の構成を示す機能ブロック図である。アニーリング処理装置100は、主要なハードウェア構成として、制御部102と、記憶部104と、通信部106と、インタフェース部108(IF;Interface)とを有する。制御部102、記憶部104、通信部106及びインタフェース部108は、データバスなどを介して相互に接続されている。
【0033】
制御部102は、例えばCPU(Central Processing Unit)等のプロセッサである。制御部102は、制御処理及び演算処理等を実行する機能を有する。記憶部104は、例えばメモリ又はハードディスク等の記憶デバイスである。記憶部104は、例えばROM(Read Only Memory)又はRAM(Random Access Memory)等である。記憶部104は、制御部102によって実行される制御プログラム及び演算プログラム等を記憶するための機能を有する。また、記憶部104は、処理データ等を一時的に記憶するための機能を有する。記憶部104は、データベースを含み得る。
【0034】
通信部106は、他の装置と有線又は無線のネットワークを介して通信を行うために必要な処理を行う。通信部106は、通信ポート、ルータ、ファイアウォール等を含み得る。インタフェース部108は、例えばユーザインタフェース(UI;User Interface)である。インタフェース部108は、キーボード、タッチパネル又はマウス等の入力装置と、ディスプレイ又はスピーカ等の出力装置とを有する。インタフェース部108は、ユーザによるデータの入力の操作を受け付け、ユーザに対して情報を出力する。
【0035】
また、アニーリング処理装置100は、構成要素として、パラメータ格納部110と、マスク格納部112と、命令格納部114と、モデル格納部116とを有する。また、アニーリング処理装置100は、構成要素として、アニーリングポリシー設定部120と、アニーリング制御部130と、瞬間磁場計算部140と、反転可否判定部150と、反転スピン選択部160と、スピン配列出力部170とを有する。アニーリング処理装置100は、これらの構成要素により、イジングモデルを用いて解を求める。そして、アニーリング処理装置100は、イジングモデルに応じて求解に用いるアニーリングポリシーを切り替えて、アニーリング処理を行うように構成されている。
【0036】
なお、各構成要素は、例えば、制御部102の制御によって、プログラムを実行させることによって実現できる。より具体的には、各構成要素は、記憶部104に格納されたプログラムを、制御部102が実行することによって実現され得る。また、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてそのプログラムをインストールすることで、各構成要素を実現するようにしてもよい。また、各構成要素は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組み合わせ等により実現してもよい。また、各構成要素は、例えばFPGA(field-programmable gate array)又はマイコン(Micro Computer)等の、ユーザがプログラミング可能な集積回路を用いて実現してもよい。この場合、この集積回路を用いて、上記の各構成要素から構成されるプログラムを実現してもよい。
【0037】
パラメータ格納部110は、記憶部104によって実現され得る。パラメータ格納部110は、アニーリング処理(アニーリングアルゴリズム)に用いる各種パラメータを格納する。具体的には、パラメータ格納部110は、各パラメータの初期値を格納する。なお、各パラメータは、アニーリングのステップが進むにつれて変化し得る。つまり、各パラメータは、アニーリングのステップの関数であり得る。この場合、パラメータ格納部110は、各パラメータに対応する関数を格納してもよい。あるいは、パラメータ格納部110は、各パラメータについて、ステップごとの値の推移を示すデータ(ルックアップテーブル等)を格納してもよい。また、各パラメータは、アニーリングポリシーごとに異なり得る。この場合、パラメータ格納部110は、アニーリングポリシーごとに各パラメータを分けて格納してもよい。
【0038】
例えば、パラメータ格納部110は、疑似温度のステップに対応するアニーリングステップtに関するパラメータを格納してもよい。パラメータ格納部110は、アニーリングステップtの最大値tmaxを格納してもよい。また、パラメータ格納部110は、疑似温度のステップに対応するアニーリングステップtのほかに、インナーステップsに関するパラメータを格納してもよい。インナーステップsは、1つのアニーリングステップtにおけるステップである。パラメータ格納部110は、インナーステップsの最大値smaxを格納してもよい。インナーステップsについては後述する。なお、インナーステップsに対して、アニーリングステップtをアウターステップtと称することがある。
【0039】
また、パラメータ格納部110は、各スピンの初期状態のパラメータを格納してもよい。また、パラメータ格納部110は、自己作用qのパラメータとして、自己作用qの初期値q1及び自己作用qの変化(q(t))を示すデータを格納してもよい。また、パラメータ格納部110は、更新試行率εのパラメータとして、更新試行率εの初期値ε1及び更新試行率εの変化(ε(t))を示すデータを格納してもよい。また、パラメータ格納部110は、疑似温度に関するパラメータを格納してもよい。パラメータ格納部110は、疑似温度に関するパラメータとして、温度Tの初期値T1及び温度Tの変化(T(t))を示すデータを格納してもよい。あるいは、パラメータ格納部110は、疑似温度に関するパラメータとして、逆温度β(=1/T)の初期値β1及び逆温度βの変化(β(t))を示すデータを格納してもよい。T(t)、β(t)、q(t)及びε(t)は、ユーザによって予め定められた関数であり得る。なお、上述したパラメータに関する関数のデータは、あるアニーリングステップtとそのときのパラメータの値との対応を示すルックアップテーブルに対応してもよい。
【0040】
図8及び
図9は、実施の形態1にかかる疑似温度について説明するための図である。
図8は、疑似温度を表す関数を示すグラフを例示する図である。アニーリングアルゴリズムでは、通常、疑似温度の関数T(t)は、矢印A1で示すように、アニーリングステップtが進むにつれて疑似温度Tが減少するような、単調減少関数である。一方、アニーリングアルゴリズムによっては、疑似温度の関数T(t)は、矢印A2で示すように、アニーリングステップtが進むと、温度が一旦上昇し、その後減少するような関数であってもよい。
【0041】
図9は、
図8に例示した2つの疑似温度の関数のそれぞれに対してアニーリングアルゴリズムを実行した場合の結果を比較した図である。
図9は、横軸が時間経過を示し、縦軸が式1で示したエネルギー(イジングエネルギー)の変化を示すグラフである。
図9は、RPAのアニーリングポリシーで、ε=0.4としてアニーリング処理を実行した場合の結果を示す。矢印B1で示す実線のグラフは、
図8の矢印A1で示すグラフに対応する疑似温度の関数に従ってアニーリング処理を実行した場合のエネルギーの変化を示す。矢印B2で示す一点鎖線のグラフは、
図8の矢印A2で示すグラフに対応する疑似温度の関数に従ってアニーリング処理を実行した場合のエネルギーの変化を示す。
【0042】
疑似温度の関数を温度が上昇した後で減少する関数とした場合、矢印Cで示すように、疑似温度の関数を単調減少関数とした場合と比較して、エネルギーが急激に減少する。また、疑似温度の関数を温度が上昇した後で減少する関数とした場合、矢印Dで示すように、疑似温度の関数を単調減少関数とした場合と比較して、エネルギーが早く収束する。したがって、疑似温度の関数を単調減少関数以外の関数とすることで、アニーリング処理の結果が異なり得る。
【0043】
パラメータ格納部110は、
図8の矢印A1で示すグラフ(実線で示す)上の、アニーリングステップtと温度Tとの関係を示す複数の点(t,T)を抽出して得られたデータ(ルックアップテーブル等)を、格納してもよい。これにより、矢印A1で示すような疑似温度の変化に対応するアニーリング処理を実現できる。また、パラメータ格納部110は、
図8の矢印A2で示すグラフ(一点鎖線で示す)上の、アニーリングステップtと温度Tとの関係を示す複数の点(t,T)を抽出して得られたデータ(ルックアップテーブル等)を、格納してもよい。これにより、矢印A2で示すような疑似温度の変化に対応するアニーリング処理を実現できる。このように、パラメータ格納部110は、任意の挙動を示す疑似温度の関数に対応するデータを格納することができる。したがって、実施の形態1にかかるアニーリング処理装置100は、任意の疑似温度Tの制御によって、アニーリングアルゴリズムを実現できる。したがって、実施の形態1にかかるアニーリング処理装置100は、疑似温度Tの制御に自由度を持たせたアニーリング処理を実現できる。
【0044】
図7の説明に戻る。マスク格納部112は、記憶部104によって実現され得る。マスク格納部112は、複数のアニーリングポリシーそれぞれについて予め設けられたビットパターンで構成された複数のマスク(ビットマスク)を格納する。マスクは、スピン数Nに対応するビット数のビットマスクである。マスク処理において、入力されたビット列(ベクトル)について、マスクのビット「1」の位置に対応する入力ビットの値はそのまま出力される。一方、マスク処理において、マスクのビット「0」の位置に対応する入力ビットの値は、その値に関わらず0に変換される。
【0045】
マスクは、後述する反転スピン選択部160における処理で使用される。そして、実行されるアニーリングポリシーごとに、使用されるマスクは異なり得る。例えば、SAのアニーリングポリシーに対応するアニーリング処理を実行するときに使用されるマスクは、RPAのアニーリングポリシーに対応するアニーリング処理を実行するときに使用されるマスクと異なり得る。ここで、マスク格納部112は、複数のアニーリングポリシーそれぞれについて1つのマスクを格納してもよい。つまり、マスク格納部112は、複数のアニーリングポリシーそれぞれについてビット配列が固定された1つのマスクを格納してもよい。マスクについては後述する。
【0046】
命令格納部114は、記憶部104によって実現され得る。命令格納部114は、制御部102(プロセッサ)によって実行される命令を格納する。命令格納部114は、アニーリングポリシーごとに異なる命令を格納してもよい。命令格納部114に格納された命令に従って、後述するアニーリング制御部130の処理が実行される。
【0047】
モデル格納部116は、記憶部104によって実現され得る。モデル格納部116は、解くべき最適化問題に対応するイジングモデルを格納する。具体的には、モデル格納部116は、イジングモデルに対応する相互作用係数Jij及び外部磁場係数hiを格納する。
【0048】
アニーリングポリシー設定部120は、制御部102(プロセッサ)によって実現され得る。アニーリングポリシー設定部120は、複数のアニーリングポリシーの中からアニーリング処理を実行するためのアニーリングポリシー(第1のアニーリングポリシー)を設定する。例えば、アニーリングポリシー設定部120は、アニーリング処理を実行するためのアニーリングポリシーとして、RPAを設定してもよい。実行されるアニーリングポリシーをユーザが選択する場合、アニーリングポリシー設定部120は、例えば、ユーザがインタフェース部108を操作することによって、アニーリングポリシーを設定してもよい。
【0049】
また、アニーリングポリシー設定部120は、アニーリング処理が実行されている間に、実行されるアニーリングポリシー(第1のアニーリングポリシー)を変更してもよい。例えば、アニーリングポリシー設定部120は、RPAによってアニーリング処理が実行されている間に、アニーリング処理を実行するためのアニーリングポリシーを、DAに変更してもよい。実行されるアニーリングポリシーをユーザが選択する場合、アニーリングポリシー設定部120は、例えば、ユーザがインタフェース部108を操作することによって、アニーリングポリシーを変更してもよい。あるいは、アニーリングステップごとに実行すべきアニーリングポリシーを計画したアニーリングポリシー実行計画が、事前にユーザによって設定されてもよい。このアニーリングポリシー実行計画は、パラメータ格納部110に格納されてもよい。この場合、アニーリングポリシー設定部120は、アニーリングポリシー実行計画に従って、アニーリングポリシーを変更してもよい。このようにして、アニーリングポリシー設定部120は、実行されるアニーリングポリシーを切り替える。
【0050】
アニーリング制御部130は、制御部102(プロセッサ)によって実現され得る。アニーリング制御部130は、設定されたアニーリングポリシー(第1のアニーリングポリシー)に関するアニーリング処理が実行されるように制御を行うように構成されている。アニーリング制御部130は、命令格納部114に格納された命令に従って処理を行う。具体的には、アニーリング制御部130は、命令格納部114に格納された命令に従ってパラメータ格納部110及びマスク格納部112から必要なデータを取得して(読み出して)、制御部102に内蔵されたレジスタに格納する。そして、アニーリング制御部130は、命令格納部114に格納された命令に従って、後述する瞬間磁場計算部140、反転可否判定部150及び反転スピン選択部160の動作を制御する。
【0051】
さらに具体的には、アニーリング制御部130は、アニーリングステップを制御する。このとき、アニーリング制御部130は、疑似温度の変化に対応するアウターステップt(第1のステップ)ごとに温度パラメータT(t)を更新する。アニーリング制御部130は、更新される温度パラメータごとに複数のスピンの状態が並列に決定されるように制御を行う。なお、アニーリング制御部130は、1つのアウターステップtにおいて、1つ以上のインナーステップs(第2のステップ)が実行されるように制御を行ってもよい。この場合、アニーリング制御部130は、インナーステップsごとに、複数のスピンの状態が並列に決定されるように制御を行ってもよい。そして、アウターステップtにおけるインナーステップsの数は、実行されるアニーリングポリシー(第1のアニーリングポリシー)に応じて設定されてもよい。そして、実行されるアニーリングポリシーが変更されるときに、インナーステップsの数(インナーステップの最大値smax)が変更されてもよい。
【0052】
また、アニーリング制御部130は、アニーリング処理で用いられるパラメータを更新する。また、アニーリング制御部130は、設定されたアニーリングポリシーに関するアニーリング処理が実行されるように、パラメータ格納部110から必要なパラメータを取得する(読み出す)。また、アニーリング制御部130は、設定されたアニーリングポリシーに対応するマスクを、マスク格納部112から取得する(読み出す)。また、アニーリング制御部130は、設定されたアニーリングポリシーに関するアニーリング処理が実行されるように、後述する瞬間磁場計算部140、反転可否判定部150及び反転スピン選択部160の動作を制御する。詳しくは後述する。
【0053】
瞬間磁場計算部140は、アニーリング制御部130(制御部102;プロセッサ)とは物理的に別個の回路によって実現され得る。瞬間磁場計算部140は、イジングモデルにおける複数のスピンの瞬間磁場(局所場:local field)を計算するように構成されている。瞬間磁場は、各スピンiについて、以下の式5によって計算される。
【数5】
・・・(5)
【0054】
ここで、便宜上、本明細書において、式5の左辺を、「~hi」と表す。瞬間磁場~hiは、各スピンについて、並列に計算され得る。σjは、スピンjのスピン状態を示す。
【0055】
反転可否判定部150は、アニーリング制御部130(制御部102;プロセッサ)とは物理的に別個の回路によって実現され得る。反転可否判定部150は、瞬間磁場に基づいて複数のスピンの反転確率を計算して、反転確率に基づいて複数のスピンそれぞれについて反転の可否を判定するように構成されている。反転可否判定部150は、複数のスピンそれぞれの反転の可否を示すビットを成分とする反転可否ベクトルΔを生成してもよい。反転可否ベクトルΔは、スピン数Nに対応する数の成分で構成される。反転可否ベクトルΔの各成分は、各スピンi(i=1,・・・N)が反転可能である場合に「1」を示し、反転不可である場合に「0」を示す。
【0056】
反転確率P
iは、以下の式6で示すように、シグモイド関数を用いて計算される。
【数6】
・・・(6)
【0057】
なお、実行されるアニーリングポリシーがSA又はDAである場合、q=0である。一方、実行されるアニーリングポリシーがSCAである場合、q>0である。また、実行されるアニーリングポリシーがRPAである場合、q=0であってもよいし、q>0であってもよい。自己作用qのパラメータは、アニーリング制御部130の制御によって、パラメータ格納部110から読み出されて、反転可否判定部150に設定される。
【0058】
また、反転可否判定部150は、各スピンiについて、反転確率Piが乱数randよりも大きい場合に、反転可能であると判定する。ここで、0<rand<1である。乱数randは、各アニーリングステップにおいて、複数のスピンそれぞれについて生成され得る。したがって、乱数randは、スピンごとに異なり得る。なお、乱数randは、アニーリング制御部130によって生成されてもよい。また、乱数randは、乱数生成器によって生成されてもよい。
【0059】
反転可否ベクトルΔのスピンiに対応する成分をΔ
iとすると、反転可否判定部150は、以下の式7に従って、スピンiの反転可否Δ
iを決定する。
【数7】
・・・(7)
【0060】
反転スピン選択部160は、アニーリング制御部130(制御部102;プロセッサ)とは物理的に別個の回路によって実現され得る。反転スピン選択部160は、設定されたアニーリングポリシー(第1のアニーリングポリシー)に応じた方法で、実際に反転されるスピンを選択するように構成されている。そして、反転スピン選択部160は、これによって複数のスピンの状態を決定するように構成されている。具体的には、反転スピン選択部160は、複数のマスクのうちの設定されたアニーリングポリシーに対応するマスク(第1のマスク;設定マスク)を用いて、実際に反転されるスピンを選択してもよい。このとき、反転スピン選択部160は、設定マスクを用いて、反転可否ベクトルΔに対応する各ビット列のうち設定されたアニーリングポリシーに応じた位置(成分)のビットを選択してもよい。反転スピン選択部160は、これにより、実際に反転させるスピンを選択してもよい。
【0061】
反転スピン選択部160は、設定されたアニーリングポリシーに対応する動作を行うように構成されたプライオリティエンコーダ(Priority Encoder:PrE)を用いて、反転可否ベクトルΔに対応する各ビット列のビットを選択してもよい。この場合、反転スピン選択部160は、反転可否ベクトルΔの各ビットに対してランダムな数だけサイクリックシフト(Cyclic Shift;循環シフト)を行ってもよい。反転スピン選択部160は、サイクリックシフタ(Cyclic Shifter:CS)によって、反転可否ベクトルΔの各ビットに対してサイクリックシフトを行ってもよい。そして、反転スピン選択部160は、サイクリックシフトが行われた反転可否ベクトルΔの各ビットと設定マスクの対応する位置の各ビットとの論理積(AND演算)により得られたビット列のうち、設定されたアニーリングポリシーに応じた位置のビットを選択してもよい。これにより、反転スピン選択部160は、実際に反転されるスピンを選択してもよい。詳しくは後述する。
【0062】
スピン配列出力部170は、制御部102及びインタフェース部108によって実現され得る。スピン配列出力部170は、アニーリングステップt=tmaxにおけるスピン配列を出力するように構成されている。この、アニーリングステップt=tmaxにおけるスピン配列σ_1^(tmax),・・・,σ_N^(tmax)は、アニーリングアルゴリズムによって最適化されたものであることが期待される。
【0063】
<アニーリング処理方法>
図10は、実施の形態1にかかるアニーリング処理装置100によって実行されるアニーリング処理方法を示すフローチャートである。アニーリング制御部130は、命令格納部114に格納された命令に従って、
図10に示されたフローチャートに対応する処理が実行されるように、制御を行う。アニーリングポリシー設定部120は、上述したように、アニーリングポリシーを設定する(処理S102)。アニーリング制御部130は、設定されたアニーリングポリシーに対応する命令に従って以降の処理が実行されるように、制御を行う。
【0064】
アニーリング制御部130は、データの初期化を行う(処理S104)。具体的には、アニーリング制御部130は、アウターステップtを初期値「1」に設定する。また、アニーリング制御部130は、アウターステップtの最大ステップである最大アウターステップtmaxを設定する。また、アニーリング制御部130は、インナーステップsを初期値「1」に設定する。また、アニーリング制御部130は、インナーステップsの最大ステップである最大インナーステップsmaxを設定する。また、アニーリング制御部130は、温度Tを初期温度T1に設定する。あるいは、アニーリング制御部130は、逆温度β(=1/T)を、初期逆温度β1(=1/T1)に設定する。
【0065】
また、アニーリング制御部130は、以下の式8のように、N個のスピンの初期状態σ_1^(0),・・・,σ_N^(0)を、ランダムに設定する。スピンの値は2値であればよいが、ここでは「+1」又は「-1」とする。
【数8】
・・・(8)
【0066】
また、アニーリング制御部130は、全てのi(i=1,・・・,N)に対して、各スピン(ノード)σiの外部磁場係数hiを定める。また、アニーリング制御部130は、全てのi(i=1,・・・,N)及びj(j=1,・・・,N)に対して、各ノード間(σi-σj間)の相互作用係数Jijを定める。設定された外部磁場係数hi及び相互作用係数Jijは、モデル格納部116に格納され得る。
【0067】
また、設定されたアニーリングポリシーがSCA又はRPAである場合、アニーリング制御部130は、自己作用係数qを初期値q1に設定する。また、設定されたアニーリングポリシーがRPAである場合、アニーリング制御部130は、更新試行率εを初期値ε1に設定する。
【0068】
次に、アニーリング処理装置100は、アニーリングアルゴリズムを実行する(処理S112~処理S130)。まず、瞬間磁場計算部140は、瞬間磁場を計算する(処理S112)。具体的には、瞬間磁場計算部140は、上述したように、上記の式5を用いて、全てのスピンi=1~Nについて、瞬間磁場~hiを、並列に計算する。なお、処理S112では、設定されたアニーリングポリシーに関わらず同様の処理が実行され得る。
【0069】
次に、反転可否判定部150は、各スピンの反転可否を判定する(処理S114)。具体的には、反転可否判定部150は、上記の式6を用いて、全てのスピンi=1~Nについて、反転確率Piを、並列に計算する。そして、反転可否判定部150は、反転確率Piに基づいて、上記の式7を用いて、複数のスピンi(i=1~N)それぞれについてスピン反転可否Δiを判定する。上述したように、スピンiが反転可能である場合、Δi=1である。一方、スピンiが反転不可である場合、Δi=0である。なお、処理S114では、設定されたアニーリングポリシーによってqが0であるか否かが異なることを除き、設定されたアニーリングポリシーに関わらず同様の処理が実行され得る。
【0070】
次に、反転スピン選択部160は、実際に反転させる反転スピンを選択する(処理S116)。具体的には、つまり、反転スピン選択部160は、Δi=1であるスピンiのうち、実際に反転させるスピンを選択する。これにより、反転スピン選択部160は、N個のスピンの次の状態を決定する。なお、処理S116では、設定されたアニーリングポリシーによって異なる処理が実行され得る。詳しくは後述する。
【0071】
アニーリング制御部130は、インナーステップsがsmaxであるか否かを判定する(処理S120)。インナーステップsがsmaxでない場合(S120のNO)、インナーステップsは最大ステップに達していない。この場合、アニーリング制御部130は、インナーステップsを1つ進める(処理S124)。つまり、アニーリング制御部130は、「s←s+1」とする。そして、S112~S116の処理が繰り返される。インナーステップsについては後述する。
【0072】
一方、インナーステップsがsmaxである場合(S120のYES)、インナーステップsは最大ステップに達している。この場合、アニーリング制御部130は、アウターステップtがtmaxであるか否かを判定する(処理S130)。アウターステップtがtmaxでない場合(S130のNO)、アウターステップtは最大ステップに達していない。
【0073】
この場合、アニーリングポリシー設定部120は、アニーリングポリシーの変更の判定を行う(処理S132)。具体的には、アニーリングポリシー設定部120は、上述したように、アニーリングポリシーを変更するか否かを判定する。例えば、アニーリングポリシー設定部120は、ユーザの操作又はアニーリングポリシー実行計画に基づいて、アニーリングポリシーを変更するか否かを判定してもよい。アニーリングポリシーを変更する場合、アニーリングポリシー設定部120は、変更後のアニーリングポリシーを、実行されるアニーリングポリシーとして設定する。この場合、アニーリングポリシー設定部120は、最大インナーステップsmaxを、変更後のアニーリングポリシーに対応するものに変更する。このようにして、アニーリングポリシー設定部120は、アニーリングポリシーを切り替える。
【0074】
アニーリング制御部130は、パラメータを更新する(処理S134)。具体的には、アニーリング制御部130は、アウターステップtを1つ進める(t←t+1)。アニーリング制御部130は、インナーステップを初期化する(s←1)。また、アニーリング制御部130は、温度Tを更新する(T←T(t))。あるいは、アニーリング制御部130は、逆温度βを更新する(β←β(t))。また、設定されたアニーリングポリシーがSCA又はRPAである場合、アニーリング制御部130は、自己作用係数qを更新する(q←q(t))。また、設定されたアニーリングポリシーがRPAである場合、アニーリング制御部130は、更新試行率εを更新する(ε←ε(t))。ここで、T(t)、β(t)、q(t)、ε(t)は、ユーザによって予め定義された関数とする。そして、S112~S134の処理が繰り返される。これにより、アニーリングアルゴリズムの実行が継続し、アニーリングステップが進行する。
【0075】
一方、アウターステップtがtmaxである場合(S130のYES)、アウターステップtは最大ステップに達している。この場合、スピン配列出力部170は、アウターステップt=tmaxにおけるスピン配列を出力する(処理S140)。具体的には、スピン配列出力部170は、アウターステップt=tmaxにおけるスピン配列σi(i=1~N)を読み出して、最適化されたスピン配列σ_1^(tmax),・・・,σ_N^(tmax)として出力する。
【0076】
ここで、インナーステップ(インナーループ)について説明する。あるアウターステップtでインナーステップsが1からsmaxまで進行するインナーループでは、温度(又は逆温度)、自己作用、及び更新試行率が固定された状態で、全てのスピンについての更新処理(S112~S116)が、複数回、実行される。つまり、温度(又は逆温度)、自己作用、及び更新試行率が固定された状態で、全てのスピンについての更新処理が、smaxに対応する回数だけ、実行される。なお、ここでいう更新処理とは、各スピンが反転可能であるかを判定し、反転可能であるスピンから実際に反転させるスピンを選択する処理を意味する。
【0077】
ここで、アニーリングアルゴリズムにおける全体のステップ数を10000とする。この場合、温度スケジューリングに対応するアウターステップtの段階(最大アウターステップtmax)を10000とすると、smax=1となり、インナーループは存在しない。これに対し、アウターステップtの段階(最大アウターステップtmax)を1000とすると、smax=10となる。tmax=10000の場合の方が、tmax=1000の場合よりも、温度変化が細かい。言い換えると、tmax=10000の場合よりも、tmax=1000の場合の方が、温度変化の細かさが粗くなる。したがって、最大アウターステップtmaxが小さい方が、S134の処理の回数が少なくなるので、パラメータの更新頻度が少なくなる。この場合、パラメータをパラメータ格納部110(記憶部104)から読み出す回数が少なくなるので、制御部102(コントローラ)を動作させる時間コストを削減することができる。
【0078】
また、アニーリングポリシーが変更されるとインナーステップ数(最大インナーステップsmax)が変更される。これにより、アニーリングアルゴリズムの途中においてアニーリングポリシーが変更される場合に、アウターステップごとに更新されるスピンの数の増減を抑制することができる。すなわち、アニーリングポリシーごとに、1つのステップで更新されるスピンの数が異なり得る。例えば、SA及びDAでは1つずつスピンが反転され得るが、SCA及びRPAでは全てのスピンが並列に反転され得る。したがって、実行されるアニーリングポリシーがSA又はDAの場合ではインナーステップ数を大きくし、実行されるアニーリングポリシーがSCA又はRPAの場合ではインナーステップ数を小さくする。これにより、実行されるアニーリングポリシーがSA又はDAの場合とSCA又はRPAの場合とで、1つのアウターステップで反転し得るスピン数の差異を抑制することができる。
【0079】
なお、S112の処理において、瞬間磁場計算部140は、スピン状態が更新されたスピンに対してのみ、瞬間磁場を計算してもよい。すなわち、瞬間磁場計算部140は、1回目のステップ以外では、反転されたスピンjについて、以下の式9によって、全てのスピンi(i=1~N)について瞬間磁場を更新してもよい。なお、Fは、反転スピンのインデックス集合である。
【数9】
・・・(9)
【0080】
なお、スピン状態が更新されたか否かに関わらず式5を用いて瞬間磁場を計算する場合と、上記のようにスピン状態が更新されたスピンについてのみ瞬間磁場を更新する場合とで、各スピンについての瞬間磁場は同じであることに留意されたい。すなわち、スピン状態が更新されたか否かに関わらず式5を用いて瞬間磁場を計算することにより、結果的に、スピン状態が更新されたスピンについての瞬間磁場が更新される。一方、スピン状態が更新されていないスピンについての瞬間磁場については、前回のステップと同じ瞬間磁場が計算される。しかしながら、スピン状態が更新されたスピンに対してのみ瞬間磁場を更新することにより、不要な計算が抑制されるので、計算資源の負荷を抑制することができる。
【0081】
<反転スピンの選択処理>
図11~
図13は、実施の形態1にかかる反転スピン選択部160の処理(S116)について説明するための図である。
図11は、反転スピン選択部160の構成を示す図である。反転スピン選択部160は、サイクリックシフタ162と、マスカー164と、プライオリティエンコーダ166とを有する。反転スピン選択部160は、反転可否判定部150によって生成された反転可否ベクトルΔを受信する。
【0082】
図11の例では、反転可否ベクトルΔの成分数(ビット数)、つまりスピン数は、N=512であるとする。つまり、反転可否ベクトルΔは、512ビットのデータである。反転可否判定部150によって生成された反転可否ベクトルΔは、スピン#1~#N(スピン#1~#512)の反転可否を示している。
図11の例において、スピン#1は反転可能であり、スピン#2は反転可能である。また、スピン#n-1は反転可能であり、スピン#nは反転不可であり、スピン#n+1は反転不可であり、スピン#n+2は反転可能である。また、スピン#N-1は反転不可であり、スピン#Nは反転可能である。
【0083】
サイクリックシフタ162は、反転可否ベクトルΔの各ビットに対してランダムな数だけサイクリックシフトを行う。つまり、シフト数は乱数によって決定される。乱数は反転可否判定部150が処理を行うごとに生成されてもよい。乱数は、アニーリング制御部130によって生成されてもよい。また、乱数は、乱数生成器によって生成されてもよい。
図11の例では、サイクリックシフタ162は、反転可否ベクトルΔの各ビットに対してnビットだけサイクリックシフトを行う。したがって、スピン#1~#Nの反転可否を示すビット列Δ
1~Δ
Nが、nビットだけ左側にサイクリックシフトされる。つまり、ビット列Δ
n+1~Δ
Nがnビットだけ左側にシフトされ、ビット列Δ
1~Δ
nがこの順序のままビットΔ
Nの後に移動する。
【0084】
これにより、スピン#n+1の反転可否を示すビットΔn+1(=0)が1番目の位置にシフトされ、スピン#n+2の反転可否を示すビットΔn+2(=1)が2番目の位置にシフトされる。また、スピン#N-1の反転可否を示すビットΔN-1(=0)がN-n-1番目の位置にシフトされ、スピン#Nの反転可否を示すビットΔN(=1)がN-n番目の位置にシフトされる。また、スピン#1の反転可否を示すビットΔ1(=1)がN-n+1番目の位置にシフトされ、スピン#2の反転可否を示すビットΔ2(=1)がN-n+2番目の位置にシフトされる。また、スピン#n-1の反転可否を示すビットΔn-1(=1)がN-1番目の位置にシフトされ、スピン#nの反転可否を示すビットΔn(=0)がN番目の位置にシフトされる。このように、サイクリックシフタ162が反転可否ベクトルΔに対してサイクリックシフトを行うことによって、サイクリックシフトが行われた反転可否ベクトルΔ’が得られる。
【0085】
マスカー164は、設定されたアニーリングポリシーに対応するマスクMk(設定マスク)を用いて、反転可否ベクトルΔ’に対してマスク処理を行う。つまり、マスカー164は、実行されるアニーリングポリシーによって異なり得るマスクMkを用いて、マスク処理を行う。具体的には、マスカー164は、反転可否ベクトルΔ’の各ビットとマスクMkの対応する位置の各ビットとで論理積(AND演算)を行う。これにより、論理積の結果を示すビット列である反転可否ベクトルΔ”が得られる。
【0086】
図11に例示されたマスクMkにおいて、1番目のビット##1の値は「1」であり、2番目のビット##2の値は「1」である。また、N-n-1番目のビット##N-n-1の値は「0」であり、N-n番目のビット##N-nの値は「0」であり、N-n+1番目のビット##N-n+1の値は「0」であり、N-n+2番目のビット##N-n+2の値は「1」である。また、N-1番目のビット##N-1の値は「0」であり、N番目のビット##Nの値は「1」である。
【0087】
また、
図11の例では、反転可否ベクトルΔ’において1番目の位置にあるスピン#n+1の反転可否を示すビット(Δ
n+1=0)と、マスクMkにおける1番目のビット##1(=1)との論理積は、0である。したがって、反転可否ベクトルΔ”は、1番目のビットにおいて、スピン#n+1が反転不可であることを示す。
【0088】
また、反転可否ベクトルΔ’において2番目の位置にあるスピン#n+2の反転可否を示すビット(Δn+2=1)と、マスクMkにおける2番目のビット##2(=1)との論理積は、1である。したがって、反転可否ベクトルΔ”は、2番目のビットにおいて、スピン#n+2が反転可能であることを示す。
【0089】
また、反転可否ベクトルΔ’においてN-n-1番目の位置にあるスピン#N-1の反転可否を示すビット(ΔN-1=0)と、マスクMkにおけるN-n-1番目のビット##N-n-1(=0)との論理積は、0である。したがって、反転可否ベクトルΔ”は、N-n-1番目のビットにおいて、スピン#N-1が反転不可であることを示す。
【0090】
また、反転可否ベクトルΔ’においてN-n番目の位置にあるスピン#Nの反転可否を示すビット(ΔN=1)と、マスクMkにおけるN-n番目のビット##N-n(=0)との論理積は、0である。したがって、反転可否ベクトルΔ”は、N-n番目のビットにおいて、スピン#Nが反転不可であることを示す。
【0091】
また、反転可否ベクトルΔ’においてN-n+1番目の位置にあるスピン#1の反転可否を示すビット(Δ1=1)と、マスクMkにおけるN-n+1番目のビット##N-n+1(=0)との論理積は、0である。したがって、反転可否ベクトルΔ”は、N-n+1番目のビットにおいて、スピン#1が反転不可であることを示す。
【0092】
また、反転可否ベクトルΔ’においてN-n+2番目の位置にあるスピン#2の反転可否を示すビット(Δ2=1)と、マスクMkにおけるN-n+2番目のビット##N-n+2(=1)との論理積は、1である。したがって、反転可否ベクトルΔ”は、N-n+2番目のビットにおいて、スピン#2が反転可能であることを示す。
【0093】
また、反転可否ベクトルΔ’においてN-1番目の位置にあるスピン#n-1の反転可否を示すビット(Δn-1=1)と、マスクMkにおけるN-1番目のビット##N-1(=0)との論理積は、0である。したがって、反転可否ベクトルΔ”は、N-1番目のビットにおいて、スピン#n-1が反転不可であることを示す。
【0094】
また、反転可否ベクトルΔ’においてN番目の位置にあるスピン#nの反転可否を示すビット(Δn=0)と、マスクMkにおけるN番目のビット##N(=1)との論理積は、0である。したがって、反転可否ベクトルΔ”は、N番目のビットにおいて、スピン#nが反転不可であることを示す。
【0095】
プライオリティエンコーダ166は、反転可否ベクトルΔ”におけるビット列のうち、設定されたアニーリングポリシーに応じた位置のビットを選択する。つまり、ビット列においてプライオリティエンコーダ166によって選択されるビットの位置は、実行されるアニーリングポリシーによって異なり得る。
【0096】
図11の例では、プライオリティエンコーダ166は、反転可否ベクトルΔ”におけるビット列のうち、最初に値が「1」となるビットを選択する。つまり、プライオリティエンコーダ166は、反転可否ベクトルΔ”におけるビット列のうち、最初に値が「1」となるビットの位置(インデックス)を出力する。これにより、反転スピン選択部160は、出力されたビットの位置、つまり選択されたビットに対応するスピンを、実際に反転させるスピン(反転スピン)として選択する。
【0097】
図11の例では、反転可否ベクトルΔ”におけるビット列において2番目のビットが最初に「1」となる。したがって、プライオリティエンコーダ166は、反転可否ベクトルΔ”におけるビット列の位置「##2」を出力する。つまり、プライオリティエンコーダ166は、反転可否ベクトルΔ”におけるビット列のうち2番目のビットを選択すると言える。これにより、反転スピン選択部160は、反転可否ベクトルΔ”におけるビット列の位置「##2」に対応するスピン#n+2を、反転スピンとして選択する。なお、反転スピン選択部160は、出力されたビット位置とサイクリックシフタ162におけるシフト量とから、反転スピンを選択してもよい。
図11の例では、出力されたビット位置を示す数値(インデックス)「2」とシフト量「n」との和が「n+2」であるので、反転可否ベクトルΔにおいてn+2番目のビットに対応するスピン#n+2を、反転スピンとして選択してもよい。
【0098】
図12~
図13は、実施の形態1にかかる反転スピン選択部160がアニーリングポリシーごとに異なる処理を行うことを説明するための図である。
図12~
図13では、説明のため、スピン数をN=6としている。
【0099】
図12は、実施の形態1にかかる反転可否判定部150によって生成される反転可否ベクトルΔについて説明するための図である。
図12の例では、スピン群σにおいて、スピン#1の状態は「+1」である。また、スピン#2の状態は「-1」である。また、スピン#3の状態は「-1」である。また、スピン#4の状態は「-1」である。また、スピン#5の状態は「+1」である。また、スピン#6の状態は「-1」である。
【0100】
また、
図12の例では、反転可否判定部150は、スピン#3,#4,#6が反転可能であると判定する。したがって、反転可否判定部150は、スピン#3,#4,#6を暫定的に反転させる。これにより、反転可否判定部150は、暫定更新スピン群τを生成する。暫定更新スピン群τにおいて、スピン#1の状態は「+1」である。また、スピン#2の状態は「-1」である。また、スピン#3の状態は「+1」である。また、スピン#4の状態は「+1」である。また、スピン#5の状態は「+1」である。また、スピン#6の状態は「+1」である。
【0101】
また、反転可否判定部150は、スピン#1~#6の反転可否を示す反転可否ベクトルΔ(Flip Flag:フリップフラグ)を生成する。
図12の例では、反転可否ベクトルΔのビット列において、1番目のビット#1は「0」を示す。また、2番目のビット#2は「0」を示す。また、3番目のビット#3は「1」を示す。また、4番目のビット#4は「1」を示す。また、5番目のビット#5は「0」を示す。また、6番目のビットは「1」を示す。つまり、反転可否ベクトルΔは、スピン#1が反転不可であり、スピン#2が反転不可であり、スピン#3が反転可能であり、スピン#4が反転可能であり、スピン#5が反転不可であり、スピン#6が反転可能であることを、示している。
【0102】
図13は、実施の形態1にかかる反転スピン選択部160がアニーリングポリシーごとに異なる処理を行うことを示している。
図13の例では、実行されるアニーリングポリシーがSA,DA,SCA,RPAの場合のそれぞれについて、反転スピン選択部160が行う処理を示している。
【0103】
実行されるアニーリングポリシーがSAであるとする。この場合、
図13の例では、サイクリックシフタ162によって反転可否ベクトルΔに対して3ビットのシフト量でサイクリックシフトが行われる。これにより、サイクリックシフトが行われた反転可否ベクトルΔ’では、スピン#4,#5,#6,#1,#2,#3の順で、反転可否が示される。なお、サイクリックシフトによるシフト量は、アニーリングポリシーごとに一定であるわけではないことに留意されたい。したがって、実行されるアニーリングポリシーがSAである場合に、サイクリックシフトのシフト量が、常に3ビットであるわけではない。シフト量は、全てのアニーリングポリシーにおいて、スピンの反転処理(更新処理)ごとに、ランダムに決定される。このことは、他のアニーリングポリシーにおいても同様である。
【0104】
また、
図13の例では、実行されるアニーリングポリシーがSAである場合、マスクMkのビット列は、「100000」である。つまり、SAに対応するマスクでは、1番目のビットのみが「1」を示し、残りの全てのビットが「0」を示す。言い換えると、SAに対応するマスクでは、どれか1つのビットのみが「1」に設定され、残りの全てのビットが「0」に設定されている。
【0105】
そして、
図13の例では、実行されるアニーリングポリシーがSAである場合、プライオリティエンコーダ166は、1番目のビットの位置を選択(出力)する。
図13の例では、サイクリックシフトが行われた後の反転可否ベクトルΔ’の1番目のビット「1」とマスクMkの1番目のビット「1」との論理積は「1」である。したがって、プライオリティエンコーダ166は、「1番目」を示すインデックスを出力する。これにより、反転スピン選択部160は、反転可否ベクトルΔ’の1番目のビットに対応するスピン#4を、反転スピンとして選択する。
【0106】
なお、サイクリックシフトが行われた後の反転可否ベクトルΔ’の1番目のビットが「0」の場合、そのビットとマスクMkの1番目のビット「1」との論理積は「0」である。したがって、反転スピン選択部160は、このステップにおいて、反転可否ベクトルΔ’の1番目のビットに対応するスピンを反転しないと判定する。また、
図13の例では、SAに対応するマスクでは、「1」を示すビットの位置が1番目であるとしたが、このような構成に限られない。SAに対応するマスクにおいて、「1」を示すビットの位置は任意である。この場合、プライオリティエンコーダ166は、マスクにおいて、「1」を示すビットの位置を選択するように構成されている。
【0107】
実行されるアニーリングポリシーがDAであるとする。この場合、
図13の例では、サイクリックシフタ162によって反転可否ベクトルΔに対して4ビットのシフト量でサイクリックシフトが行われる。これにより、サイクリックシフトが行われた反転可否ベクトルΔ’では、スピン#5,#6,#1,#2,#3,#4の順で、反転可否が示される。なお、上述したように、サイクリックシフトによるシフト量は、アニーリングポリシーごとに一定であるわけではないので、実行されるアニーリングポリシーがDAである場合に、サイクリックシフトのシフト量が常に4ビットであるわけではない。
【0108】
また、
図13の例では、実行されるアニーリングポリシーがDAである場合、マスクMkのビット列は、「111111」である。つまり、DAに対応するマスクでは、全てのビットが「1」に設定されている。
【0109】
そして、
図13の例では、実行されるアニーリングポリシーがDAである場合、プライオリティエンコーダ166は、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる位置のうちで最も先頭に近い位置を選択(出力)する。
図13の例では、サイクリックシフトが行われた後の反転可否ベクトルΔ’の1番目のビット「0」とマスクMkの1番目のビット「1」との論理積は「0」である。したがって、プライオリティエンコーダ166は、「1番目」を示すインデックスを出力しない。つまり、反転スピン選択部160は、1番目の位置を選択しない。また、サイクリックシフトが行われた後の反転可否ベクトルΔ’の2番目のビット「1」とマスクMkの2番目のビット「1」との論理積は「1」である。したがって、プライオリティエンコーダ166は、「2番目」を示すインデックスを出力する。つまり、反転スピン選択部160は、2番目の位置を選択する。つまり、反転スピン選択部160は、反転可否ベクトルΔ’の2番目のビットに対応するスピン#6を、反転スピンとして選択する。
【0110】
実行されるアニーリングポリシーがSCAであるとする。この場合、
図13の例では、サイクリックシフタ162によって反転可否ベクトルΔに対して2ビットのシフト量でサイクリックシフトが行われる。これにより、サイクリックシフトが行われた反転可否ベクトルΔ’では、スピン#3,#4,#5,#6,#1,#2の順で、反転可否が示される。なお、上述したように、サイクリックシフトによるシフト量は、アニーリングポリシーごとに一定であるわけではないので、実行されるアニーリングポリシーがSCAである場合に、サイクリックシフトのシフト量が常に2ビットであるわけではない。
【0111】
また、
図13の例では、実行されるアニーリングポリシーがSCAである場合、マスクMkのビット列は、「111111」である。つまり、SCAに対応するマスクでは、全てのビットが「1」に設定されている。
【0112】
そして、
図13の例では、実行されるアニーリングポリシーがSCAである場合、プライオリティエンコーダ166は、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる全ての位置を選択(出力)する。
図13の例では、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる位置は、1番目、2番目及び4番目の位置である。したがって、反転スピン選択部160は、1番目、2番目及び4番目の位置を選択(出力)する。つまり、反転スピン選択部160は、反転可否ベクトルΔ’の1番目,2番目,4番目のビットにそれぞれ対応するスピン#3,#4,#6を、反転スピンとして選択する。
【0113】
なお、プライオリティエンコーダ166は、入力されたビット列の先頭からスキャンして最初に「1」を示すビット位置を出力する機能を有してもよい。このようなケースでは、実行されるアニーリングポリシーがSCAである場合、プライオリティエンコーダ166は、「1」を示すビット位置を出力する動作を繰り返し行う。具体的には、プライオリティエンコーダ166は、入力されるビット列(
図11の反転可否ベクトルΔ”)の先頭から順に、「1」を示すビット位置を出力し、その位置のビットを「0」に上書きする。
図13の例では、プライオリティエンコーダ166は、1番目のビット位置を出力して、1番目のビットを「0」に上書きする。次に、プライオリティエンコーダ166は、2番目のビット位置を出力して、2番目のビットを「0」に上書きする。次に、プライオリティエンコーダ166は、4番目のビット位置を出力して、4番目のビットを「0」に上書きする。プライオリティエンコーダ166は、このような動作を繰り返すことにより、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる全ての位置を選択(出力)する。後述する、実行されるアニーリングポリシーがRPAである場合においても、プライオリティエンコーダ166は、同様の処理を行う。つまり、プライオリティエンコーダ166が行う処理自体は、アニーリングポリシーごとに異なるわけではない。
【0114】
実行されるアニーリングポリシーがRPAであるとする。この場合、
図13の例では、サイクリックシフタ162によって反転可否ベクトルΔに対して1ビットのシフト量でサイクリックシフトが行われる。これにより、サイクリックシフトが行われた反転可否ベクトルΔ’では、スピン#2,#3,#4,#5,#6,#1の順で、反転可否が示される。なお、上述したように、サイクリックシフトによるシフト量は、アニーリングポリシーごとに一定であるわけではないので、実行されるアニーリングポリシーがRPAである場合に、サイクリックシフトのシフト量が常に1ビットであるわけではない。
【0115】
また、RPAに対応するマスクMkは、更新試行率εに対応する数のビットが「1」となるようなビット列で構成されている。つまり、スピン数をNとすると、RPAに対応するマスクMkは、ε*Nに対応する数のビットが「1」となるようなビット列で構成されている。
図13の例では、更新試行率εは、ε=0.5である。このとき、実行されるアニーリングポリシーがRPAである場合、マスクMkのビット列は、「110010」である。つまり、更新試行率がε=0.5であるRPAに対応するマスクでは、0.5*6=3個のビットが「1」に設定されている。なお、
図13の例では、更新試行率がε=0.5であるRPAに対応するマスクでは、「1」を示すビットの位置が1番目,2番目及び5番目であるとしたが、このような構成に限られない。更新試行率がε=0.5であるRPAに対応するマスクにおいて、「1」を示すビットの位置は任意である。さらに、1つの更新試行率に対して、「1」を示すビットの位置が異なるパターンの複数のマスクが設けられてもよい。そして、各種パラメータが更新される際に、使用されるマスクが更新されてもよい。
【0116】
そして、
図13の例では、実行されるアニーリングポリシーがRPAである場合、プライオリティエンコーダ166は、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる全ての位置を選択(出力)する。
図13の例では、サイクリックシフトが行われた後の反転可否ベクトルΔ’のビットとその位置に対応するマスクMkのビットとの論理積が「1」となる位置は、2番目及び5番目の位置である。したがって、反転スピン選択部160は、2番目及び5番目の位置を選択(出力)する。つまり、反転スピン選択部160は、反転可否ベクトルΔ’の2番目,5番目のビットにそれぞれ対応するスピン#3,#6を、反転スピンとして選択する。
【0117】
上述したように、実施の形態1にかかるアニーリング処理装置100では、瞬間磁場に基づいて複数のスピンの反転確率を並列に計算して、反転確率に基づいて複数のスピンそれぞれについて反転の可否を判定するように構成されている。そして、実施の形態1にかかるアニーリング処理装置100は、設定されたアニーリングポリシー(第1のアニーリングポリシー)に応じた方法で、実際に反転されるスピンを選択するように構成されている。これにより、実施の形態1にかかるアニーリング処理装置100は、解くべきイジングモデル(最適化問題)に応じて、複数のアニーリングポリシーを切り替えてアニーリング処理を行うことができる。したがって、実施の形態1にかかるアニーリング処理装置100では、1つの装置で複数のアニーリングポリシーに関するアニーリング処理を効率よく実行することが可能となる。
【0118】
また、実施の形態1にかかるアニーリング処理装置100では、複数のアニーリングポリシーを実行できるように、各構成要素が構成されている。これにより、複数のアニーリングポリシーにおいて処理が共通化されている。すなわち、アニーリング処理装置100は、実行されるアニーリングポリシーに関わらず、実行されるアニーリングポリシーに対応するマスクを読み出してマスク処理を行い、得られたビット配列(反転可否ベクトルΔ”)に対して先頭からスキャンして「1」を示すビット位置を出力する。これにより、1つの装置(アニーリング処理装置100)によって複数のアニーリングポリシーを切り替えて実行することが可能となる。
【0119】
また、実施の形態1では、複数のアニーリングポリシーそれぞれについて1つのマスクが設けられていてもよい。ただし、実行されるアニーリングポリシーがRPAである場合において、異なる更新試行率εでアニーリング処理が実行される場合、異なる更新試行率εごとに1つのマスクが設けられ得る。言い換えると、更新試行率εが異なるRPAは、異なるアニーリングポリシーとみなし得る。このような構成により、マスク格納部112に格納されるマスクの数を抑制することができる。したがって、マスクを記憶するための記憶容量を節約することができる。なお、1つの更新試行率εに対してマスクのビット列のパターンが1つのみであると、更新するスピンの選択パターンに偏りが生じるおそれがある。したがって、上述したように、1つの更新試行率εについてビット列のパターンが異なる複数のマスクが設けられてもよい。
【0120】
なお、マスクのビット配列が固定されていても、サイクリックシフタ162が反転可否ベクトルΔに対して乱数に応じたビット数だけサイクリックシフトを行うことにより、プライオリティエンコーダ166によってランダムに反転スピンが選択されることになる。すなわち、マスクのビット配列が固定されている場合、乱数に応じたビット数だけサイクリックシフトを行わないと、アニーリングステップごとに同じスピンが選択されるおそれがある。これに対し、乱数に応じたビット数だけサイクリックシフトを行うことにより、マスクのビット配列を固定しても、ランダムに反転スピンが選択され得る。したがって、各アニーリングポリシーで1つのマスクを用いても、反転すべきスピンをランダムに選択できる。なお、SCAの実行においてサイクリックシフトを行う必要はないが、サイクリックシフトを行うか否かに関わらず処理結果に違いはない。したがって、実施の形態1においては、上述したように、複数のアニーリングポリシーで処理(構成要素)を共通化するため、SCAを実行する場合でもサイクリックシフトを行うこととしている。
【0121】
また、反転可否ベクトルΔに対してサイクリックシフトを行う代わりに、マスクに対してランダムなシフト量だけサイクリックシフトを行って得られたマスクを用いて、反転可否ベクトルΔに対してマスク処理を行うことも考えられる。しかしながら、この方法では、DAを実行することができない。すなわち、上述したように、DAでは、反転可能なスピンからランダムに1つのスピンを選択する必要がある。したがって、マスクに対してサイクリックシフトを行う方法では、1つのビットのみが「1」を示すビット配列のマスクを用いることが考えられる。しかしながら、このようなマスクに対してサイクリックシフトを行うと、シフト後のマスクにおいて「1」を示すビットの位置が、反転可否ベクトルΔで「1」を示すビット(反転可能を示すスピンに対応するビット)の位置に対応しないおそれがある。このような場合、入力されたビット列において最初に「1」が現れるビット位置を出力する機能を有するプライオリティエンコーダ166を用いても、反転可能なスピンのどれも実際に反転させることができない。これに対し、実施の形態1のように、マスクのビット配列を固定しておき、反転可否ベクトルΔに対してサイクリックシフトを行うことで、1つの装置(アニーリング処理装置100)で複数のアニーリングポリシーを切り替えて実行することが可能となる。
【0122】
(実施の形態2)
次に、実施の形態2について説明する。実施の形態2は、実施の形態1にかかるアニーリング処理装置100を具体的なハードウェア構成で実現する場合の例に対応する。
【0123】
図14は、実施の形態2にかかるアニーリング処理装置200のハードウェア構成を示す図である。実施の形態2にかかるアニーリング処理装置200は、1つのチップ(半導体チップ)に実装され得る。実施の形態2にかかるアニーリング処理装置200は、データメモリ202(Data Memory:DMEM)と、命令メモリ204(Instruction Memory:IMEM)と、制御回路210(Controller:CTR)と、外部インタフェース220(External Interface:Ext I/F)と、アニーリング実行部230とを有する。制御回路210は、プロセッサ212(Processor)を有する。プロセッサ212は、レジスタ214(Reg)を有する。外部インタフェース220は、DMA222(Direct Memory Access)を有する。
【0124】
アニーリング実行部230は、重みメモリ232(Weight Memory:WMEM)と、デコーダ234(Decoder)と、瞬間磁場計算回路240(Local Field Unit:LFU)と、瞬間磁場バッファ242(Local Field (^h) Buffer)とを有する。また、アニーリング実行部230は、反転可否ベクトル計算回路250(Delta Calc. Unit:DCU)と、反転可否ベクトルバッファ252(Delta (Δ) Buffer)と、暫定更新スピンバッファ254(Tau (τ) Buffer)とを有する。また、アニーリング実行部230は、反転スピン選択回路260(Multi-Policy Delta Selector:MPDS)と、更新スピンバッファ262(Sigma (σ) Buffer)とを有する。
【0125】
データメモリ202は、実施の形態1にかかる記憶部104及びパラメータ格納部110及びマスク格納部112に対応する。すなわち、データメモリ202は、上述したような、アニーリング処理(アニーリングアルゴリズム)に用いる各種パラメータを格納する。また、データメモリ202は、上述したような、複数のアニーリングポリシーそれぞれに対応するマスクを格納する。命令メモリ204は、実施の形態1にかかる記憶部104及び命令格納部114に対応する。すなわち、命令メモリ204は、制御部102(プロセッサ)によって実行される命令を格納する。
【0126】
外部インタフェース220は、実施の形態1にかかるインタフェース部108、アニーリングポリシー設定部120及びスピン配列出力部170に対応する。外部インタフェース220は、アニーリング処理の開始前に、各種メモリ及び各種バッファに必要なデータを書き込む。また、外部インタフェース220は、上述した
図10のS140の処理において、アニーリング処理が終了したときに(又はアニーリング処理の途中で)、更新スピンバッファ262から、アニーリング結果を読み出す。更新スピンバッファ262は、更新後の各スピンi(i=1,2,・・・,N)のスピン状態σ
iを格納する。
【0127】
DMA222は、アニーリング処理装置200の外部のメモリからアニーリング処理装置200の内部の各種メモリにデータ(「Data」)を出力する(書き込む)。また、DMA222は、アニーリング処理装置200の内部の各種メモリからデータを読み出して、アニーリング処理装置200の外部のメモリにそのデータ(「Data」)を出力する。
図14の例では、外部のメモリと内部のメモリとの通信は、Data信号により、32ビット単位で実行される。また、DMA222は、Ctr信号により、データが通信される方向、書き込み先及び読み出し元の内部のメモリの種類、通信されるデータのサイズを指定される。また、DMA222は、データを転送中に「DMA busy」信号を出力する。
【0128】
また、
図10のS102の処理において、外部インタフェース220は、アニーリング処理が開始されるときに、ユーザの操作によって、実行すべきアニーリングポリシーを示す信号(アニーリングポリシー信号)を受信する。そして、外部インタフェース220は、実行すべきアニーリングポリシーを示す信号を命令メモリ204に出力する。これにより、実行されるアニーリングポリシーが設定される。また、
図10のS132の処理において、外部インタフェース220は、アニーリング処理の途中で、ユーザの操作によって、変更後のアニーリングポリシーを示す信号を受信してもよい。この場合、外部インタフェース220は、変更後のアニーリングポリシーを示す信号を命令メモリ204に出力する。これにより、実行されるアニーリングポリシーが変更される。
【0129】
制御回路210は、実施の形態1にかかる制御部102及びアニーリング制御部130に対応する。プロセッサ212は、実施の形態1にかかる制御部102及びアニーリング制御部130に対応する。プロセッサ212は、例えば、RISC(Reduced Instruction Set Computer)によって実現されてもよい。制御回路210は、アニーリング処理を実行することを指示する信号であるRun信号を、外部から受信する。また、制御回路210は、処理の実行中にBusy信号を外部に出力する。
【0130】
図10のS102の処理において、制御回路210(プロセッサ212)は、命令メモリ204に入力されたアニーリングポリシー信号に対応する命令を、命令メモリ204から読み出す。これにより、制御回路210は、アニーリングポリシー信号に対応する命令を実行する。また、
図10のS132の処理において、制御回路210(プロセッサ212)は、データメモリ202に格納されたアニーリング実行計画に従って、実行されるアニーリングポリシーを切り替えてもよい。
【0131】
また、制御回路210(プロセッサ212)は、実行されるアニーリングポリシーに関するアニーリング処理が実行されるように制御を行う。つまり、制御回路210は、命令メモリ204に格納された、実行されるアニーリングポリシーに対応する命令に従って処理を行う。具体的には、制御回路210は、命令メモリ204に格納された命令に従ってデータメモリ202から必要なデータを読み出して、レジスタ214に書き込む。レジスタ214には、例えば、マスク、最大インナーステップs
max、温度T(又は逆温度β)、自己作用係数q、及びアニーリングポリシーが格納され得る。そして、制御回路210は、
図10のS112~S116の処理において、命令メモリ204に格納された命令に従って、アニーリング実行部230の動作を制御する。
【0132】
また、制御回路210は、アニーリングステップ(アウターステップ及びインナーステップ)を制御する。制御回路210は、内蔵されたカウンタを用いて、アニーリングステップを制御する。アニーリングステップを制御する方法は、実施の形態1にかかるアニーリング制御部130の処理(
図10のS120、S124,S130)と実質的に同様である。
【0133】
また、制御回路210は、
図10のS104の処理において、初期化処理を行う。具体的には、制御回路210は、各スピンiの初期状態σ
iを更新スピンバッファ262に書き込む。また、制御回路210は、瞬間磁場の初期値を瞬間磁場バッファ242に書き込む。また、制御回路210は、解くべき最適化問題に対応するイジングモデルにおける相互作用係数J
ijを重みメモリ232に書き込む。また、制御回路210は、
図10のS134の処理において、上述したように、パラメータの更新処理を行う。
【0134】
アニーリング実行部230は、制御回路210の制御によって、アニーリング処理を実行する。重みメモリ232は、実施の形態1にかかるモデル格納部116に対応する。重みメモリ232は、イジングモデルにおける相互作用係数Jijを格納する。重みメモリ232は、相互作用係数JijをN行N列のマトリクス形式で格納する。デコーダ234は、反転スピン選択回路260から出力されたインデックスiに対応する行の相互作用係数Jijを重みメモリ232から読み出すように制御を行う。デコーダ234の制御により、重みメモリ232から、i番目の行の相互作用係数Jij(Ji1,Ji2,・・・JiN)が読み出される。なお、反転スピン選択回路260から出力されるインデックスiは、実際に反転されるスピンを示すインデックスである。
【0135】
瞬間磁場計算回路240は、実施の形態1にかかる瞬間磁場計算部140に対応する。瞬間磁場計算回路240は、重みメモリ232から読み出された相互作用係数Jijを用いて上述したように瞬間磁場~hiを計算して、計算結果を瞬間磁場バッファ242に格納する。
【0136】
反転可否ベクトル計算回路250は、実施の形態1にかかる反転可否判定部150に対応する。反転可否ベクトル計算回路250は、瞬間磁場バッファ242に格納された瞬間磁場~hiと、更新スピンバッファ262に格納されたスピン状態σiとを用いて上述したように反転可否ベクトルΔiを計算する。そして、反転可否ベクトル計算回路250は、計算結果を反転可否ベクトルバッファ252に格納する。また、反転可否ベクトル計算回路250は、反転可能と判定されたスピンを暫定的に反転させ、暫定的に反転されたスピン状態τ(τ1,τ2,・・・,τN)を暫定更新スピンバッファ254に格納する。τiは、スピンiについて暫定的に更新されたスピン状態を示す。
【0137】
反転スピン選択回路260は、実施の形態1にかかる反転スピン選択部160に対応する。反転スピン選択回路260は、
図11に示したサイクリックシフタ162、マスカー164及びプライオリティエンコーダ166を実現する回路構成を有する。反転スピン選択回路260は、上述したように、実行されるアニーリングポリシーに応じた処理を行う。反転スピン選択回路260は、反転可否ベクトルバッファ252に格納された反転可否ベクトルΔ
iと、データメモリ202から読み出された設定マスクとを用いて、実際に反転させるスピンを選択する。
【0138】
そして、反転スピン選択回路260は、更新スピンバッファ262に格納されたスピン状態σiのうち実際に反転させるスピン状態を反転させる。つまり、反転スピン選択回路260は、更新スピンバッファ262に格納されたスピン状態σ(σ1,σ2,・・・,σN)のうち実際に反転されるスピンiのスピン状態σiを、暫定更新スピンバッファ254に格納されたスピン状態τiで上書きする。これにより、更新スピンバッファ262には、更新されたスピン状態σ(σ1,σ2,・・・,σN)が格納される。
【0139】
そして、反転スピン選択回路260は、実際に反転されるスピンiのインデックスiを、デコーダ234に出力する。デコーダ234は、実際に反転されるスピンを示すインデックスiに対応する行iの相互作用係数Jij(Ji1,Ji2,・・・JiN)を、瞬間磁場計算回路240に出力する。これにより、瞬間磁場計算回路240は、上述した式9により、瞬間磁場を計算する。
【0140】
また、反転スピン選択回路260は、実際に反転されるスピンiのスピン状態τiを、瞬間磁場計算回路240に出力する。これにより、瞬間磁場計算回路240は、式9により、瞬間磁場を計算する。ここで、反転スピン選択回路260から瞬間磁場計算回路240に出力されるスピン状態τiは、式9のσjに対応することに、留意されたい。つまり、反転スピン選択回路260から瞬間磁場計算回路240に出力されるスピン状態τiに対応するスピンiは、式9ではスピンjに対応することに、留意されたい。
【0141】
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートにおいて、各処理(ステップ)の順序は、適宜、変更可能である。また、複数ある処理(ステップ)のうちの1つ以上は、省略されてもよい。例えば、
図10のS120~S124は省略されてもよい。
【0142】
また、上述した実施の形態1において、アニーリングポリシー設定部120は、ユーザの操作に応じて、実行されるアニーリングポリシーを設定するとしたが、このような構成に限られない。実行されるアニーリングポリシーは、解くべき最適化問題に対応するイジングモデル(外部磁場及び相互作用)に応じて、自動的に選択されてもよい。つまり、アニーリングポリシー設定部120は、イジングモデル(外部磁場及び相互作用)に応じて自動的に選択されたアニーリングポリシーを、実行されるアニーリングポリシーとして設定してもよい。
【0143】
また、上述した実施の形態では、最大インナーステップsmaxは、アニーリングポリシーごとに設定されるとしたが、このような構成に限られない。最大インナーステップは、アニーリングポリシーに関わらず設定されてもよい。つまり、最大インナーステップは、アニーリングポリシーが変更されるごとに変更される必要はない。また、最大インナーステップは、アウターステップが進むにつれて変化してもよい。つまり、smax=s(t)であってもよい。
【0144】
上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disk(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【符号の説明】
【0145】
100 アニーリング処理装置
102 制御部
104 記憶部
106 通信部
108 インタフェース部
110 パラメータ格納部
112 マスク格納部
114 命令格納部
116 モデル格納部
120 アニーリングポリシー設定部
130 アニーリング制御部
140 瞬間磁場計算部
150 反転可否判定部
160 反転スピン選択部
162 サイクリックシフタ
164 マスカー
166 プライオリティエンコーダ
170 スピン配列出力部
200 アニーリング処理装置
202 データメモリ
204 命令メモリ
210 制御回路
212 プロセッサ
214 レジスタ
220 外部インタフェース
222 DMA
230 アニーリング実行部
232 重みメモリ
234 デコーダ
240 瞬間磁場計算回路
242 瞬間磁場バッファ
250 反転可否ベクトル計算回路
252 反転可否ベクトルバッファ
254 暫定更新スピンバッファ
260 反転スピン選択回路
262 更新スピンバッファ