(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-26
(45)【発行日】2024-01-10
(54)【発明の名称】最適化装置及び最適化方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20231227BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2020055373
(22)【出願日】2020-03-26
【審査請求日】2022-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】神田 浩一
【審査官】武田 広太郎
(56)【参考文献】
【文献】国際公開第2020/054062(WO,A1)
【文献】特開2019-179364(JP,A)
【文献】鷹野 芙美代 ほか,組合せ最適化問題における制約条件を考慮したQUBOソルバ,情報処理学会 研究報告 アルゴリズム(AL) 2019-AL-175,日本,情報処理学会,2019年
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
イジングモデルのエネルギーを表す評価関数に含まれるN(Nは2以上の整数)の2乗個の状態変数をN行N列に配列したときに各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように、4つの状態変数の値を変化させた場合に生じる前記イジングモデルの前記エネルギーの第1変化量を、変化前の値が0である複数の第1の状態変数のそれぞれについて計算する計算部と、
前記複数の第1の状態変数のそれぞれについて計算された前記第1変化量に基づいて、変化が許容される前記4つの状態変数を選択し、選択した前記4つの状態変数を識別する識別情報を出力する遷移選択部と、
前記識別情報に基づいて、変化が許容された前記4つの状態変数の値を更新する更新部と、
を有する最適化装置。
【請求項2】
前記計算部は、前記複数の第1の状態変数のそれぞれについての前記第1変化量の何れかをそれぞれ計算する複数のエネルギー変化計算回路を有し、
前記識別情報に基づいて、前記第1変化量の計算に用いる、前記Nの2乗個の状態変数のそれぞれ1つが変化することによる前記イジングモデルの前記エネルギーの第2変化量の大きさをそれぞれ表すNの2乗個の局所場の何れかを、前記複数のエネルギー変化計算回路のそれぞれに伝搬する伝搬部を、
さらに有する請求項1に記載の最適化装置。
【請求項3】
前記伝搬部は、前記識別情報に基づいて、前記複数のエネルギー変化計算回路のそれぞれに対して、前記複数の第1の状態変数の何れか1つの第1の状態変数についての第1の局所場と、前記第1の状態変数と同一行に含まれ値が1である第2の状態変数についての第2の局所場と、前記第1の状態変数と同一列に含まれ値が1である第3の状態変数についての第3の局所場と、前記第2の状態変数と同一列かつ前記第3の状態変数と同一行であり値が0である第4の状態変数についての第4の局所場を供給する、
請求項2に記載の最適化装置。
【請求項4】
前記伝搬部は、時分割で、または複数のバスを用いて並列に、前記Nの2乗個の局所場のそれぞれを、前記複数のエネルギー変化計算回路の何れかに供給する、
請求項2または3に記載の最適化装置。
【請求項5】
前記Nの2乗個の状態変数のそれぞれの間の相互作用の大きさを示す複数の重み係数を記憶する記憶部と、
前記識別情報に基づいて、前記複数の重み係数のうち、前記第1変化量の計算に用いられる重み係数群が記憶されている前記記憶部のアドレスを指定するアドレスデコーダと、をさらに有し、
前記記憶部は、前記アドレスに基づいて、前記重み係数群を一度に読み出す、
請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
計算部が、イジングモデルのエネルギーを表す評価関数に含まれるN(Nは2以上の整数)の2乗個の状態変数をN行N列に配列したときに各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように、4つの状態変数の値を変化させた場合に生じる前記イジングモデルの前記エネルギーの変化量を、変化前の値が0である複数の第1の状態変数のそれぞれについて計算し、
遷移選択部が、前記複数の第1の状態変数のそれぞれについて計算された前記変化量に基づいて、変化が許容される前記4つの状態変数を選択し、選択した前記4つの状態変数を識別する識別情報を出力し、
更新部が、前記識別情報に基づいて、変化が許容された前記4つの状態変数の値を更新する、
最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置及び最適化方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
【0003】
イジング装置による計算では、計算対象の問題は磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えられる。そして、疑似焼き鈍し法やレプリカ交換法(交換モンテカルロ法とも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジングモデル型の評価関数の値(イジングモデルのエネルギーに相当する)が最小となる状態の探索が行われる。
【0004】
従来、デジタル回路を用いてマルコフ連鎖モンテカルロ法を行うことでエネルギーが最小となる状態を探索する最適化装置がある。従来の最適化装置は、一度に1つの状態変数の値だけ変化するとしてエネルギーの変化量(以下単にエネルギー変化という場合もある)を計算し、そのエネルギー変化に対して温度に対応するノイズ値を加えた値に応じてビットの変化を許容するか否かを決定する。エネルギーが増加する状態変数の値の変化も所定の確率で許容され、温度が低くなるにつれてその確率は低くなる。
【0005】
ところで、最適化問題には、評価関数に含まれる複数の状態変数のうち値が1となる状態変数の数を1つのみとする制約(1-hot制約)をもつものがある。1-hot制約には、N2個の状態変数をN行N列の行列状に並べたときに各行と各列に含まれる状態変数の値の和が1となるものがある。以下、このような1-hot制約を2-Way 1-hot制約という。たとえば、x1~x9を3行3列の行列状に並べたときに、x1+x2+x3=1、x4+x5+x6=1、x7+x8+x9=1、x1+x4+x7=1、x2+x5+x8=1、x3+x6+x9=1とする制約は、2-Way 1hot制約である。巡回セールスマン問題、配車計画問題、2次割り当て問題などは、2-Way 1-hot制約をもつ。
【先行技術文献】
【特許文献】
【0006】
【文献】特開平7-36473号公報
【文献】特開2003-263890号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の最適化装置では一度に変化する状態変数の数は1つである。つまり、従来の最適化装置は、ハミング距離=1の状態遷移を繰り返しながらエネルギーが最小となる基底状態の探索を行う。そのため、従来の最適化装置では、2-Way 1-hot制約を満たさない状態への遷移も発生し、遷移が起こりうる状態の数(探索空間)が2-Way 1-hot制約を満たす状態の数よりも大きい。また、2-Way 1-hot制約の制約項のために生じるエネルギー障壁のために状態遷移に時間がかかる。以上のことから、従来の最適化装置では、2-Way 1-hot制約をもつ最適化問題の最適解の探索に時間がかかるという問題がある。
【0008】
1つの側面では、本発明は、2-Way 1-hot制約をもつ最適化問題の計算時間を短縮可能な最適化装置及び最適化方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの実施態様では、イジングモデルのエネルギーを表す評価関数に含まれるN(Nは2以上の整数)の2乗個の状態変数をN行N列に配列したときに各行に含まれる状態変数の値の和が1であり、かつ各列に含まれる状態変数の値の和が1である制約を満たすように、4つの状態変数の値を変化させた場合に生じる前記イジングモデルの前記エネルギーの第1変化量を、変化前の値が0である複数の第1の状態変数のそれぞれについて計算する計算部と、前記複数の第1の状態変数のそれぞれについて計算された前記第1変化量に基づいて、変化が許容される前記4つの状態変数を選択し、選択した前記4つの状態変数を識別する識別情報を出力する遷移選択部と、前記識別情報に基づいて、変化が許容された前記4つの状態変数の値を更新する更新部と、を有する最適化装置が提供される。
【発明の効果】
【0010】
1つの側面では、本発明は、2-Way 1-hot制約をもつ最適化問題の計算時間を短縮できる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態の最適化装置の一例を示す図である。
【
図2】第2の実施の形態の最適化装置の一例を示す図である。
【
図5】25個の状態変数について2-Way 1-hot制約を満たす状態遷移の一例を示す図である。
【
図6】
図5のような状態遷移が生じた場合に、各ΔE計算回路が用いる局所場と重み係数の変化の一例を示す図である。
【
図12】W
ilの読み出しとΔE計算回路の記憶部への記憶例を示す図である。
【
図13】W
jkの読み出しとΔE計算回路の記憶部への記憶例を示す図である。
【
図15】25×25個の重み係数を記憶する記憶部の一例を示す図である。
【
図16】第2の実施の形態の最適化装置の一例の流れを説明する図である。
【
図17】第2の実施の形態の最適化装置を用いた場合の計算短縮効果を表すシミュレーション結果を示す図である。
【
図18】第3の実施の形態の最適化装置の一例を示す図である。
【
図19】局所場及び重み係数を伝搬する伝搬制御部の一例を示す図である。
【
図20】N=5の場合に各サイクルで計算されるエネルギー変化の例を示す図である。
【
図21】サイクル1における伝搬制御部の動作例を示す図である。
【
図22】サイクル2における伝搬制御部の動作例を示す図である。
【
図23】サイクル3における伝搬制御部の動作例を示す図である。
【
図24】サイクル4における伝搬制御部の動作例を示す図である。
【
図25】エネルギー変化を伝搬する伝搬制御部の一例を示す図である。
【発明を実施するための形態】
【0012】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
【0013】
最適化装置10は、2-Way 1-hot制約を満たす状態以外の状態の探索を除外することで、2-Way 1-hot制約をもつ最適化問題の計算時間を短縮するものである。
【0014】
最適化問題はイジングモデルにモデル化される。モデル化されたイジングモデルのエネルギーは、たとえば、以下の式(1)に示すような評価関数(E(x))で定義される。
【0015】
【0016】
右辺第1項は、イジングモデルに含まれる全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xiは、インデックス=iの状態変数である。xjは、インデックス=jの状態変数である。Wijは、インデックス=i,jの状態変数の間の重み(たとえば、結合の強さ)を示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。
【0017】
右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。biは、インデックス=iの状態変数に対するバイアス係数を示している。cは定数である。
【0018】
たとえば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を、0または1の値をとるビットと呼ぶこともできる。
【0019】
式(1)の値が最小となる状態変数の値の組合せが問題の解(最適解)となる。
なお、式(1)において、xiの値が変化して1-xiとなると、xiの増加分は、Δxi=(1-xi)-xi=1-2xiと表せる。この値の変化に伴うエネルギー変化(ΔEi)は、以下の式(2)で表される。
【0020】
【0021】
式(2)において、xiが1から0に変化するとき、Δxiは-1となり、xiが0から1に変化するとき、Δxiは1となる。なお、hiは局所場(ローカルフィールド)と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔEiである。つまり、hiは、xiが1つ変化することによるイジングモデルのエネルギー変化の大きさを表す。
【0022】
xjが0から1に変化するときのhiの変化分は、Δhi
(j)=+Wij、xjが1から0に変化するときのhiの変化分は、Δhi
(j)=-Wijである。同様に、xiが変化したときのxjについてのhjの変化分は、Δhj
(i)=ΔxiWij、と表せる。
【0023】
一方、2-Way 1-hot制約を満たす状態以外の状態の探索を除外する場合、一度の状態遷移において、4つの状態変数の値を変化させることになる。
以下では、評価関数に含まれるn=N2(Nは2以上の整数)の状態変数が2-Way 1-hot制約を受けるものとする。これらの状態変数をN行N列に配列したときに各行と各列に含まれる状態変数の値の和が1である制約を満たすように、一度の状態遷移において、4つの状態変数の値を変化させることで、2-Way 1-hot制約を満たす状態以外の状態の探索を除外できる。
【0024】
なお、2-Way 1-hot制約が満たされている状態で、値が0の状態変数の1つを更新対象候補とした場合、他の3つの更新対象候補の状態変数が決まる。
図1には、インデックス=i,j,k,lの4つの状態変数(x
i,x
j,x
k,x
l)の値を変化させることによる状態遷移の例が示されている。値が0の状態変数であるx
jを更新対象候補とした場合、x
jと同じ行及び同じ列に含まれる状態変数のうち、値が1の状態変数であるx
i,x
lが更新対象候補となる。さらに、x
iと同じ列、かつ、x
lと同じ行である、値が0のx
kが更新対象候補となる。
【0025】
これら4つの状態変数の値を変化させた場合に生じるイジングモデルのエネルギー変化をΔEjとすると、ΔEjは、以下の式(3)のように表せる。
【0026】
【0027】
また、xi,xj,xk,xlが変化することによる局所場の変化分(Δhm(m=1,2,…,n))は、以下の式(4)のように表せる。
【0028】
【0029】
一度の状態遷移において、4つの状態変数の値を変化させる最適化装置10は、たとえば、
図1に示すように、記憶部11、伝搬部12、計算部13、遷移選択部14、更新部15、アドレスデコーダ16を有する。なお、
図1では、式(4)にしたがって局所場を更新する回路や、後述する温度パラメータ(T)の大きさの制御などを行う制御部などについては図示が省略されている。
【0030】
記憶部11は、式(1)の評価関数に含まれる複数の重み係数を記憶する。記憶部11は、たとえば、SRAM(Static Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)、HBM(High Bandwidth Memory)などの電子回路を用いて実現される。
【0031】
伝搬部12は、遷移選択部14が出力する後述の識別情報に基づいて、計算部13が有する複数のΔE計算回路のそれぞれがエネルギー変化の計算に用いるN2個の局所場の何れかを、複数のΔE計算回路のそれぞれに伝搬する。また、伝搬部12は、識別情報に基づいて、複数のΔE計算回路のそれぞれがエネルギー変化の計算に用いる重み係数を、複数のΔE計算回路のそれぞれに伝搬する。
【0032】
伝搬部12は、1または複数のバス、複数のスイッチ、各スイッチを制御する制御回路、などの電子回路を用いて実現される。伝搬部12の例については後述する。
計算部13は、2-Way 1-hot制約を満たすように、4つの状態変数の値を変化させた場合に生じるイジングモデルのエネルギー変化を、変化前の値が0である複数の状態変数のそれぞれについて計算する。計算部13は、複数のΔE計算回路(たとえば、ΔE計算回路13ai,13aj)を有する。ΔE計算回路は、たとえば、N2個の状態変数のそれぞれに対応してN2個設けられている。たとえば、ΔE計算回路13ajは、xjが0である場合に、式(3)に示すようなΔEjを計算する。
【0033】
また、複数のΔE計算回路のそれぞれは、式(3)に示すようなΔEjの計算に用いる重み係数(式(3)では、Wil,Wjk)を予め記憶部11から読み出して記憶する記憶部(たとえば、記憶部13bi,13bj)を有していてもよい。
【0034】
なお、値が1である状態変数に対応するΔE計算回路は、無意味な状態遷移が発生することを抑制するために、エネルギー変化として所定の正の値を出力する。所定の正の値は、たとえば、最適化装置10が生成できる正の最大値である。たとえば、最適化装置10が26ビットの値を生成できる場合、正の最大値は、2の補数で表現した場合、01…1(1の数が25個)となる。各ΔE計算回路は、自身が対応する状態変数の値を記憶部15aから読み出し、式(3)に示すようなエネルギー変化の計算を行うか、上記正の値を出力するかを決定する。
【0035】
計算部13は、たとえば、加算回路、乗算回路(+1または-1の符号を乗ずる回路)、メモリ(たとえば、レジスタまたはSRAM)などの電子回路を用いて実現される。
遷移選択部14は、計算部13が計算するエネルギー変化に基づいて、変化が許容される4つの状態変数を選択し、選択した4つの状態変数を識別する識別情報(インデックス)(
図1の例では、p,q,r,s)を出力する。
【0036】
遷移選択部14は、計算部13が出力する複数のエネルギー変化のうち、値が変化したときに、負のエネルギー変化を引き起こす4つの状態変数の変化が優先される形で、4つの状態変数の変化を確率的に受け入れる。正のエネルギー変化を引き起こす4つの状態変数の変化についても確率的に許容される。
【0037】
たとえば、遷移選択部14は、図示しない制御部から入力される温度パラメータ(T)と一様乱数とに基づいて生成されるノイズ値と、計算部13が出力する複数のエネルギー変化のそれぞれとを比較する。疑似焼き鈍し法が行われる場合、Tは、たとえば、制御部によって、イジングモデルの状態を更新する状態更新処理が、所定回数繰り返されるごとに、値が小さくなるように制御され、ノイズ値の絶対値も小さくなる。遷移選択部14は、ノイズ値よりも小さくなるエネルギー変化を選択して、そのエネルギー変化のインデックスを取得する。たとえば、遷移選択部14は、ΔEjを選択した場合、インデックス=jを取得する。インデックスは、たとえば、各ΔE計算回路に保持されていて、遷移選択部14はそれを取得してもよいし、遷移選択部14が生成してもよい。なお、ノイズ値よりも小さくなるエネルギー変化が複数ある場合、遷移選択部14は、たとえば、所定のルールにしたがって、またはランダムに、そのうちの1つのエネルギー変化を選択する。
【0038】
遷移選択部14は、1つのインデックスを取得した場合、他の3つのインデックスを生成する。たとえば、インデックス=jが取得された場合、xjと同じ行及び同じ列に含まれる状態変数のうち、値が1の状態変数であるxi,xlのインデックス=i,lと、xiと同じ列、かつ、xiと同じ行である、xkのインデックス=kが生成される。なお、kは、k=i+l-jにより算出できる。
【0039】
遷移選択部14は、たとえば、後述する記憶部15aに記憶されている状態変数(どの行または列に属しているかを示す識別状態が割り当てられている)の値に基づいて、他の3つのインデックスを生成してもよい。また、遷移選択部14は、各行各列の状態変数のうち、値が1である状態変数(ホットビット)のインデックスを管理するホットビット管理テーブルを記憶していてもよく、そのテーブルに基づいて、上記のi,lに相当する2つのインデックスを生成してもよい。その場合、遷移選択部14は、上記の式(k=i+l-j)により、上記のkに相当するインデックスを生成する。
【0040】
遷移選択部14は、たとえば、乱数発生器、温度パラメータ(T)に基づいたノイズ値を生成する回路、比較器、セレクタ、ホットビット管理テーブルを記憶する記憶部(たとえば、レジスタまたはSRAM)、加算器などの電子回路を用いて実現される。
【0041】
更新部15は、x1~xnの値を保持する記憶部15aを有している。更新部15は、遷移選択部14が出力する。
更新部15は、たとえば、インデックスによって指定された状態変数の値を0から1または1から0に反転させる回路、レジスタまたSRAM、などの電子回路を用いて実現される。
【0042】
アドレスデコーダ16は、インデックス=p,q,r,sに基づいて、計算部13においてΔEの計算に用いられる重み係数が記憶されている記憶部11のアドレスを指定する。アドレスデコーダ16は、各種の論理回路などの電子回路を用いて実現できる。
【0043】
なお、上記の要素は、1チップの半導体集積回路に搭載されていてもよいし、一部が1ビットで実現されていてもよい。たとえば、問題の規模が大きい場合、重み係数を多数記憶する記憶部11は、チップ外に設けられていてもよい。
【0044】
以下、最適化装置10の動作例を説明する。
まず、初期設定が行われる。初期設定は、たとえば、図示しない制御部の制御のもとN行N列のx1~xnの値が、各行と各列に含まれる状態変数の値の和が1になるように設定される。さらに、初期設定として、記憶部13bi,13bjなどにx1~xnの初期値に応じた重み係数を記憶する処理や、x1~xnの初期値に応じた局所場の初期値の設定、温度パラメータの設定、状態更新処理の繰り返し回数の設定などが行われる。
【0045】
そして、各ΔE計算回路は、上記のようなエネルギー変化の計算または所定の正の値の出力を行い、遷移選択部14は、変化が許容される4つの状態変数を選択し、選択した4つの状態変数を識別するインデックス=p,q,r,sを出力する。
【0046】
更新部15は、インデックス=p,q,r,sを受けて、これらのインデックスにより指定された状態変数の値を変化させる。また、アドレスデコーダ16は、これらのインデックスに基づき、次にエネルギー変化の計算に用いられる重み係数や、局所場を更新するための重み係数が記憶されている記憶部11のアドレスを指定することで、これらの重み係数が読み出される。
【0047】
読み出された重み係数のうち、エネルギー変化の計算に用いられるものは、伝搬部12を介して、複数のΔE計算回路の何れかの記憶部に記憶される。また、局所場の更新のために読み出された重み係数によって局所場が更新されるとともに、更新された局所場が、伝搬部12によって、複数のΔE計算回路の何れかに伝搬される。そして、各ΔE計算回路において、エネルギー変化の計算または前述の所定の正の値の出力が行われる。
【0048】
たとえば、xjが0で、xjと同じ行であるxiが1、xjと同じ列であるxlが1、xiと同じ列、かつ、xlと同じ行であるxkが0である場合、ΔE計算回路13ajの記憶部13bjには、Wil,Wjkが伝搬されて記憶される。さらに、ΔE計算回路13ajには、hi,hj,hk,hlが伝搬される。そして、ΔE計算回路13ajは、式(3)に示すようなΔEjを計算する。値が0の他の状態変数(xkなど)に対応するΔE計算回路についても同様の処理が行われる。
【0049】
一方、値が1であるxiに対応するΔE計算回路13aiは、エネルギー変化として所定の正の値を出力する。なお、値が1である他の状態変数(xlなど)に対応するΔE計算回路についても同様に所定の正の値を出力する。
【0050】
以降、同様の処理が繰り返される。たとえば、疑似焼き鈍し法が行われる場合、所定の繰り返し回数の状態更新処理が終わるたびに、温度パラメータの値が所定の温度変更スケジュールにしたがって小さくなっていく。そして、たとえば、温度パラメータの値が最小値に達した時点での状態(x1~xn)が解として出力される。
【0051】
以上のような第1の実施の形態の最適化装置10は、2-Way 1-hot制約を満たすように4つの状態変数がともに変化するときのエネルギー変化に基づいて、どの4つの状態変数の変化が許容されるかを決定する。そして、決定した4つの状態変数の値が更新される。これによって、2-Way 1-hot制約を満たさない状態遷移が抑制され、探索空間を小さくできる。このため、2-Way 1-hot制約をもつ最適化問題の計算時間を短縮できる。
【0052】
また、評価関数から、2-Way 1-hot制約を満たさない場合にエネルギーを大きくするような制約項をなくせるため、そのような制約項を表すための重み係数のビット数を減らせることができ、重み係数を記憶しておくためのハードウェア量を削減できる。
【0053】
(第2の実施の形態)
図2は、第2の実施の形態の最適化装置の一例を示す図である。
第2の実施の形態の最適化装置20は、記憶部21、局所場更新部22、伝搬部23、ΔE計算回路24a1~24an、遷移選択部25、更新部26、アドレスデコーダ27、制御部28を有する。
【0054】
記憶部21、伝搬部23、ΔE計算回路24a1~24an、遷移選択部25、更新部26、アドレスデコーダ27は、
図1に示した最適化装置10における同名の要素と同様の機能を有する。ただ、以下の例では遷移選択部25は、インデックス=p,q,r,sの他に、値が1であるx
pが属する行を識別するインデックス=g
pと、値が1であるx
sが属する列を識別するインデックス=g
sも出力するものとする。
【0055】
局所場更新部22は、記憶部21から読み出された重み係数を用いて、式(4)にしたがって、局所場を更新する。局所場更新部22は、たとえば、x1~xnに対応するh1~hnを保持するレジスタ、保持されたh1~hnのそれぞれに対して、4つの重み係数のそれぞれを加えるか、減ずる回路などの電子回路を用いて実現される。
【0056】
制御部28は、最適化装置20の後述する初期設定処理を行う。また、制御部28は、疑似焼き鈍し法が行われる場合、状態更新処理が所定回数繰り返されるごとに、たとえば、制御装置30によって指定される温度変更スケジュールにしたがって温度パラメータの値を小さくしていく。
【0057】
さらに、制御部28は、たとえば、温度パラメータの値が最小値に達した時点での状態(x1~xn)を更新部26の記憶部26aから取得し、解として制御装置30に送信する。なお、制御部28は、更新部26の記憶部26aが、最小エネルギーや最小エネルギー時の状態を保持している場合には、状態更新処理が所定の繰り返し回数、繰り返されたのちに、それらの情報を取得して、制御装置30に送信してもよい。
【0058】
制御部28は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路にて実現できる。なお、制御部28は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の処理を行う。
【0059】
(伝搬部23の一例)
図3は、伝搬部の一例を示す図である。なお、
図3には、局所場更新部22の一例についても図示されている。
図1に示した伝搬部12についても、以下に示す伝搬部23の例と同様の構成により実現できる。
【0060】
伝搬部23は、スイッチ制御回路23a、スイッチ21b1~21bn、伝搬制御部23cを有する。
スイッチ制御回路23aは、インデックス=p,q,r,s,gp,gsに基づいて、スイッチ21b1~21bnのオンオフを制御する。スイッチ制御回路23aは、前述のようなホットビット管理テーブルを記憶するメモリを有していてもよい。その場合、スイッチ制御回路23aは、ホットビット管理テーブルに基づいて、スイッチ21b1~21bnの制御信号を生成する。ホットビット管理テーブルは、インデックス=p,q,r,s,gp,gsに基づいて更新される。スイッチ21b1~21bnの制御例については後述する。
【0061】
スイッチ21b1~21bnは、オン状態のときに、記憶部21から読み出された重み係数を伝搬制御部23cに伝える。
伝搬制御部23cは、インデックス=p,q,r,s,gp,gsに基づいて、局所場更新部22に含まれるh更新回路22a1~22anが出力するh1~hnの何れかを、ΔE計算回路24a1~24anのそれぞれに伝搬する。また、伝搬制御部23cは、インデックス=p,q,r,s,gp,gsに基づいて、スイッチ21b1~21bnを介して供給される重み係数の何れかを、ΔE計算回路24a1~24anのそれぞれに伝搬する。
【0062】
図4は、伝搬制御部の一例を示す図である。
伝搬制御部23cは、バス部40a1,40a2,…,40amと、スイッチ制御回路41,42を有する。
【0063】
バス部40a1は、スイッチ40b1,40b2,…,40bn,40c1,40c2,…,40cn、バス40dを有する。スイッチ40b1~40bnは、h1~hnに対応して設けられており、スイッチ40b1~40bnの何れか1つがオン状態のときに、そのスイッチに対応する局所場が、バス40dに伝わる。スイッチ40c1~40cnは、ΔE計算回路24a1,24a2,…,24anに対応して設けられており、スイッチ40c1~40cnのうちオン状態となるスイッチに対応するΔE計算回路に、バス40dを介して局所場が伝搬される。バス部40a2~40amについてもバス部40a1と同様の構成となっている。
【0064】
スイッチ制御回路41は、インデックス=p,q,r,s,gp,gsに基づいて、スイッチ40b1~40bnのオンオフを制御する。
スイッチ制御回路42は、インデックス=p,q,r,s,gp,gsに基づいて、スイッチ40c1~40cnのオンオフを制御する。
【0065】
なお、伝搬制御部23cは、前述のようなホットビット管理テーブルを記憶するメモリを有していてもよい。その場合、スイッチ制御回路41,42は、ホットビット管理テーブルに基づいて、各スイッチの制御信号を生成する。ホットビット管理テーブルは、インデックス=p,q,r,s,gp,gsに基づいて更新される。なお、ホットビット管理テーブルは、スイッチ制御回路23aなどが用いるものと同一のものであってもよい。
【0066】
上記の例では、バス部40a1~40amの数は、計算の並列度をどの程度優先するかに応じて適宜選択可能である。
なお、
図4では、局所場をΔE計算回路24a1~24anに伝搬する例を示したが、重み係数についても同様の構成でΔE計算回路24a1~24anに伝搬できる。
【0067】
(n=25の場合の局所場及び重み係数の伝搬例)
以下、n=25(状態変数の数が25個)の場合を例にして、局所場及び重み係数のΔE計算回路24a1~24anへの伝搬について説明する。
【0068】
図5は、25個の状態変数について2-Way 1-hot制約を満たす状態遷移の一例を示す図である。
図5では、図示を簡略化するため、x
1~x
25がインデックス=1~25により示されている。g1c~g5cは、列を識別するインデックスであり、g1r~g5rは、行を識別するインデックスである。また、網掛けが施されているインデックスは、値が1である状態変数のインデックスを示し、その他の状態変数の値は0である。
【0069】
図5の例では、x
1,x
8,x
15,x
17,x
24の値が1となっている。この例において、x
4を0から1に変更する場合、x
4と同じ列(インデックス=g4cの列)に属し値が1であるx
24の値が0に変更され、x
4と同じ行(インデックス=g1rの行)に属し値が1であるx
1の値が0に変更される。さらに、x
1と同じ列(インデックス=g1cの列)に属し、かつ、x
24と同じ行(インデックス=g5rの行)に属するx
21の値が1に変更される。これにより、2-Way 1-hot制約を満たす状態遷移が実現される。
【0070】
図5に示すような状態遷移が生じた場合に、ΔE計算回路24a1~24anがエネルギー変化の計算に用いる局所場と重み係数は以下のように遷移前と遷移後とで変化する。
図6は、
図5のような状態遷移が生じた場合に、各ΔE計算回路が用いる局所場と重み係数の変化の一例を示す図である。
図6では、25個のΔE計算回路24a1~24anのそれぞれが式(3)を計算する際に用いるh
i,h
j,h
k,h
l,W
il,W
jkが、
図5に示した状態遷移前後のそれぞれについて示されている。なお、図示を簡略化するため局所場や重み係数はインデックスにより示されている。たとえば、h
1は1、W
11は、(1,1)と示されている。
【0071】
図6の例では、状態遷移前のx
1やx
8などのホットビットに対応するΔE計算回路に伝搬されるh
i,h
j,h
k,h
lは、そのホットビットのインデックスと同じインデックスの局所場となっている。たとえば、ホットビットであるx
1に対応するΔE計算回路24a1に供給されるh
i,h
j,h
k,h
lは全てh
1である。このためW
il,W
jkはともにW
11である。このようなホットビットに対応するΔE計算回路は、前述のように、所定の正の値を出力する。
【0072】
状態遷移後、インデックス=g1rの行に属するx1~x5に対応する5つのΔE計算回路では、同じ行に属するx4が0から1に変更されるため、hiとして状態遷移前のh1の代わりにh4が用いられる。インデックス=g2rの行に属するx6~x10に対応する5つのΔE計算回路では、その行に属するホットビットの変更がないため、hiとして状態遷移前と同様にh8が用いられる。インデックス=g3r,g4rの行に属する状態変数に対応するΔE計算回路についても、それらの行に属するホットビットの変更がないため、hiとして状態遷移前と同じインデックスの局所場が用いられる。インデックス=g5rの行に属するx21~x25に対応する5つのΔE計算回路では、同じ行に属するx21が0から1に変更されるため、hiとして状態遷移前のh24の代わりにh21が用いられる。
【0073】
hjについては、状態遷移前後で変更はない。
hkについては、ホットビットの変更がない行に属する状態変数に対応するΔE計算回路についても、状態遷移前後で変更が生じる場合がある。たとえば、x6に対応するΔE計算回路が用いるhkは、h3からh23に変更される。また、x9に対応するΔE計算回路が用いるhkは、h23からh3に変更される。
【0074】
hlについても、各行に属する状態変数に対応するΔE計算回路において、状態遷移前後で用いられるものが変更される場合がある。なお、hlについては、各行に属する状態変数に対応するΔE計算回路で用いられるhlは同じである。すなわち、各行に属する状態変数に対応するΔE計算回路で用いられるhlは、状態遷移前では、h1,h17,h8,h24,h15であり、状態遷移後では、h21,h17,h8,h4,h15である。
【0075】
用いられる重み係数については、上記のように状態遷移前後で用いられる局所場の変更に伴って変わるものと、変わらないものがある。
以下、状態遷移後における各ΔE計算回路への局所場及び重み係数の伝搬例を示す。
【0076】
図7は、h
i,h
jの伝搬例を示す図である。
図7には、h更新回路22a1~22anが出力するh
1~h
25が、h
i,h
jとして、ΔE計算回路24a1~24anに伝搬される様子が示されている。
【0077】
h1~h25のそれぞれは、これらと同じインデックスをもつ状態変数に対応するΔE計算回路にhjとして伝搬される。伝搬されるhjは、状態遷移前後において変わらない。たとえば、h1はx1に対応するΔE計算回路24a1に伝搬され、hnはxnに対応するΔE計算回路24anに伝搬される。このため、h更新回路22a1~22anのそれぞれと対応するΔE計算回路を直接接続すれば、hjは、伝搬制御部23cを用いずに伝搬できる。
【0078】
hiは、伝搬制御部23cを用いて以下のように伝搬される。
インデックス=g1rの行に属するx1~x5に対応する5つのΔE計算回路には、hiとしてh4が伝搬され、インデックス=g2rの行に属するx6~x10に対応する5つのΔE計算回路には、hiとしてh8が伝搬される。インデックス=g3rの行に属するx11~x15に対応する5つのΔE計算回路には、hiとしてh15が伝搬され、インデックス=g4rの行に属するx16~x20に対応する5つのΔE計算回路には、hiとしてh17が伝搬される。また、インデックス=g5rの行に属するx21~x25に対応する5つのΔE計算回路には、hiとしてh21が伝搬される。
【0079】
上記のような伝搬は、
図4に示したような伝搬制御部23cにおいて、m=5である場合、1サイクル(たとえば、1クロックサイクル)で、h
iを各ΔE計算回路24anに伝搬できる。たとえば、バス部40a1は、h
4をバス40dに伝え、バス40dからインデックス=g1rの行に属するx
1~x
5に対応する5つのΔE計算回路に、h
4を伝搬する。それと並行に、バス部40a2~40amは、インデックス=g2r~g5rの行に属する状態変数に対するΔE計算回路に、h
8,h
15,h
17,h
21を伝搬する。
【0080】
図8は、h
lの伝搬例を示す図である。
上記のようにh
iとして伝搬されるh
4,h
8,h
15,h
17,h
21のそれぞれは、
図8に示すように、h
lとして、ΔE計算回路24a1~24anの何れかに伝搬される。
【0081】
h4は、x4と、x4と同じ列に属するx9,x14,x19,x24に対応する5つのΔE計算回路に伝搬される。h8は、x8と、x8と同じ列に属するx3,x13,x18,x23に対応する5つのΔE計算回路に伝搬される。h15は、x15と、x15と同じ列に属するx5,x10,x20,x25に対応する5つのΔE計算回路に伝搬される。h17は、x17と、x17と同じ列に属するx2,x7,x12,x22に対応する5つのΔE計算回路に伝搬される。h21は、x21と、x21と同じ列に属するx1,x6,x11,x16に対応する5つのΔE計算回路に伝搬される。
【0082】
上記のようなh
lの伝搬についても、5つのバス部40a1~40amを用いることで、1サイクルで並列に行うことができる。
図9は、h
kの伝搬例を示す図である。
【0083】
h
kは、
図5に示したような状態遷移後の状態では、x
4が属する行と列、及びx
21が属する行と列に含まれる状態変数に対応する局所場がh
kとして伝搬される。
h
kの伝搬は、たとえば、5つのバス部40a1~40amを用いて、4サイクルで行われる。
【0084】
サイクルc1では、h1~h5のそれぞれがバス部40a1~40amの5本のバスの何れかに伝わり、h1はx24、h2はx19、h3はx9、h4はx4、h5はx14にそれぞれ対応するΔE計算回路に伝搬される。サイクルc2では、h1,h6,h11,h16,h21のそれぞれが5本のバスの何れかに伝わり、h1はx24、h6はx23、h11はx25、h16はx22、h21はx21にそれぞれ対応するΔE計算回路に伝搬される。サイクルc3では、h4,h9,h14,h19,h24のそれぞれが5本のバスの何れかに伝わり、h4はx4、h9はx3、h14はx5、h19はx2、h24はx1にそれぞれ対応するΔE計算回路に伝搬される。サイクルc4では、h21,h22,h23,h24,h25のそれぞれが5本のバスの何れかに伝わり、h21はx21、h22はx16、h23はx6、h24はx1、h25はx11にそれぞれ対応するΔE計算回路に伝搬される。
【0085】
なお、hkとして伝搬すべき局所場の数は、本質的には、h1,h2,h3,h5,h6,h9,h11,h14,h16,h19,h22,h23,h24,h25の14個である。h4やh21は、ホットビットであるx4,x21に対応するΔE計算回路にhiとして伝搬されるためである。したがって、これらの冗長な伝搬をなくせば、理想的には、3回のサイクル数にてhkを伝搬可能である。
【0086】
図10は、W
ilの伝搬例を示す図である。
図6に示したように、状態遷移後に25個のΔE計算回路24a1~24anにおいて用いられるW
ilは25個であるが、そのうち、9個は、状態遷移前と同じである。また、W
il=W
liとすると、伝搬すべきW
ilの個数は、9個である。このため、W
ilの伝搬は、たとえば、5つのバス部40a1~40amを用いて、2サイクルで行うことができる。
【0087】
1サイクル目では、W
4,8はx
3,x
9、W
4,15はx
5,x
14、W
4,17はx
2,x
19、W
4,21はx
1,x
24にそれぞれ対応するΔE計算回路に伝搬される。なお、x
4に対応するΔE計算回路は、所定の正の値を出力するため、W
4,4は、そのΔE計算回路に伝搬しなくてもよい。このため、
図10では、W
4,4の伝搬は行われていない。ただし、W
4,4を伝搬するために加わる処理のオーバーヘッドは少ないため伝搬してもよい。たとえば、伝搬制御部23cの回路構成がシンプルになるなど、W
4,4についても伝搬することが望ましい可能性もある。
【0088】
2サイクル目では、W
21,8はx
6,x
23、W
21,15はx
11,x
25、W
21,17はx
16,x
22にそれぞれ対応するΔE計算回路に伝搬される。なお、x
21に対応するΔE計算回路は、所定の正の値を出力するため、W
21,21は、そのΔE計算回路に伝搬しなくてもよい。このため、
図10では、W
21,21の伝搬は行われていない。ただし、上記と同様の理由により、W
21,21を伝搬してもよい。
【0089】
図11は、W
jkの伝搬例を示す図である。
図6に示したように、状態遷移後に25個のΔE計算回路24a1~24anにおいて用いられるW
jkは25個であるが、そのうち、9個は、状態遷移前と同じである。また、W
il=W
liとすると、伝搬すべきW
jkの個数は、9個である。このため、W
jkの伝搬は、たとえば、5つのバス部40a1~40amを用いて、2サイクルで行うことができる。
【0090】
1サイクル目では、W3,9はx3,x9、W5,14はx5,x14、W2,19はx2,x19、W1,24はx1,x24にそれぞれ対応するΔE計算回路に伝搬される。
【0091】
2サイクル目では、W
23,6はx
6,x
23、W
25,11はx
11,x
25、W
22,16はx
16,x
22にそれぞれ対応するΔE計算回路に伝搬される。なお、上記と同様の理由により、
図11でもW
4,4,W
21,21の伝搬は行われていない。
【0092】
(n=25の場合の重み係数の読み出し例)
次に、重み係数の記憶部21からの効率的な読み出し方法について説明する。
図5に示したような状態遷移後において、記憶部21に記憶されている25×25個の重み係数のうち、局所場の更新のためにW
1,1~W
1,25、W
4,1~W
4,25、W
21,1~W
21,25、W
24,1~W
24,25が読み出される。このうち、W
4,1~W
4,25とW
21,1~W
21,25に、使用されるW
ilが含まれている。
【0093】
図12は、W
ilの読み出しとΔE計算回路の記憶部への記憶例を示す図である。
図12の例では、局所場の更新のためにW
4,1~W
4,25が記憶部21から読み出されている。これにより、W
ilとして、たとえば、h
8を更新するh更新回路22a8にはW
4,8が供給され、h
15を更新するh更新回路22a15には、W
4,15が供給される。また、W
ilとして、たとえば、h
17を更新するh更新回路22a17にはW
4,17が供給され、h
21を更新するh更新回路22a21には、W
4,21が供給される。
【0094】
このとき、スイッチ制御回路23aは、たとえば、ホットビット管理テーブルに基づき、状態遷移後の値が1であるx
8,x
15,x
17,x
21に対応したスイッチ21b8,21b15,21b17,21b21をオンする。図示が省略されているが、他のスイッチについてはオフされる。これにより、伝搬制御部23cには、W
4,8,W
4,15,W
4,17,W
4,21が供給される。なお、W
4,4は、前述と同様の理由により読み出しの省略が可能であるため、
図12の例では、伝搬制御部23cには、W
4,4が供給されていない。
【0095】
伝搬制御部23cに供給されたW
4,8,W
4,15,W
4,17,W
4,21のそれぞれは、
図10の1サイクル目のように、ΔE計算回路24a1~24anの何れかに伝搬される。
【0096】
たとえば、
図12のように、W
4,21はΔE計算回路24a1に伝搬され、記憶部24b1の記憶領域24b1a,24b1bのうち、W
ilが記憶される記憶領域24b1aに記憶される。W
4,17はΔE計算回路24a2に伝搬され、記憶部24b2の記憶領域24b2a,24b2bのうち、W
ilが記憶される記憶領域24b2aに記憶される。また、W
4,8はΔE計算回路24a3に伝搬され、記憶部24b3の記憶領域24b3a,24b3bのうち、W
ilが記憶される記憶領域24b3aに記憶される。
【0097】
局所場の更新のためにW21,1~W21,25が記憶部21から読み出された場合も同様に、スイッチ21b8,21b15,21b17,21b21がオンされる。これにより、伝搬制御部23cには、W21,8,W21,15,W21,17,W21,21が供給される。なお、W21,21は、前述と同様の理由により読み出しや伝搬の省略が可能である。
【0098】
そして、伝搬制御部23cに供給されたW
21,8,W
21,15,W
21,17のそれぞれは、
図10の2サイクル目のように、ΔE計算回路24a1~24anの何れかに伝搬され、記憶部のW
ilを記憶する記憶領域に記憶される。
【0099】
このように、Wilについては、局所場の更新のための重み係数の読み出しと同じタイミングで記憶部21から読み出すことができ、改めて記憶部21から読み出さなくてよい。
【0100】
一方、W
jkについては、
図5に示したような状態遷移後において、W
1,24を除いて、局所場の更新のために読み出される重み係数には含まれない。そこで、W
1,1~W
1,25、W
4,1~W
4,25、W
21,1~W
21,25、W
24,1~W
24,25の読み出しとは別のサイクルにおいて、W
1,24以外のW
jkの読み出しが行われる。
【0101】
図13は、W
jkの読み出しとΔE計算回路の記憶部への記憶例を示す図である。
図6に示したように、状態遷移後に25個のΔE計算回路24a1~24anにおいて用いられるW
jkは25個であるが、そのうち、9個は、状態遷移前と同じである。また、W
il=W
liとすると、記憶部21から読み出すべきW
jkの個数は、9個である。ただし、前述の理由からW
4,4,W
21,21については読み出さなくてよいとともに、W
1,24は、局所場の更新のためのW
1,1~W
1,25の読み出し時に、W
1,24を用いるΔE計算回路の重み係数の記憶部のW
jkを記憶する記憶領域に記憶しておけばよい。このため、W
jkとして記憶部21から改めて読み出すべき重み係数の個数は、W
23,6,W
3,9,W
25,11,W
5,14,W
22,16,W
2,19の6個でよい。これらは、後述のアドレスデコーダ27及び記憶部21の構成によって、1サイクルで読み出し可能である。
【0102】
スイッチ制御回路23aは、たとえば、ホットビット管理テーブルに基づいて、状態遷移後の値が0となる状態変数(x
j)に対して、
図1に示したようにx
kの関係にある状態変数を検出し、x
jとx
kとの間のW
jkのうち、省けるもの以外のkを検出する。上記の例では、k=6,9,11,14,16,19が検出される。このため、スイッチ制御回路23aは、スイッチ21b6,21b9,21b11,21b14,21b16,21b19をオンする。スイッチ21b6,21b9,21b11,21b14,21b16,21b19は、h更新回路22a6,22a9,22a11,22a14,22a16,22a19に対応して設けられている。図示が省略されているが、他のスイッチについてはオフされる。
【0103】
これにより、上記の6つの重み係数が伝搬制御部23cに供給される。
6つの重み係数の伝搬は、たとえば、伝搬制御部23cの5つのバス部40a1~40amを用いて、2サイクルで行われる。
【0104】
たとえば、
図13のように、W
2,19はΔE計算回路24a2に伝搬され、記憶部24b2のW
jkが記憶される記憶領域24b2bに記憶される。また、W
3,9はΔE計算回路24a3に伝搬され、記憶部24b3のW
jkが記憶される記憶領域24b3bに記憶される。
【0105】
(記憶部21の一例及びアドレス指定例)
以下の例では、25行25列の重み係数行列に含まれる重み係数(Wij(i,j=1~25))を、グローバル行アドレス、ローカル行アドレス、グローバル列アドレス及びローカル列アドレスにより指定するものとする。25行の重み係数のうち、5行ずつが異なるグローバル行アドレス=1~5により指定され、5行のそれぞれがローカル行アドレス=1~5により指定されるものとする。また、25列の重み係数のうち、5列ずつが異なるグローバル列アドレス=1~5により指定され、5列のそれぞれがローカル列アドレス=1~5により指定されるものとする。
【0106】
局所場の更新に用いられる重み係数は、グローバル行アドレスとローカル行アドレスとして、1~5の何れか1つを指定し、グローバル列アドレスとローカル列アドレスについては1~5の全てを指定することで、読み出される。一方、前述のWjkは、たとえば、以下のようにアドレスを指定することで読み出される。
【0107】
図14は、W
jkのアドレス指定例を示す図である。
たとえば、W
2,19は、グローバル行アドレス=1、ローカル行アドレス=2、グローバル列アドレス=4、ローカル列アドレス=4により指定される。W
3,9は、グローバル行アドレス=1、ローカル行アドレス=3、グローバル列アドレス=2、ローカル列アドレス=4により指定される。その他の4つのW
jkについても、4種のアドレスにより指定される。
【0108】
図15は、25×25個の重み係数を記憶する記憶部の一例を示す図である。
図15では、wビットの重み係数(W
11)を1つ選択する部分が示されている。信号grad1は、グローバル行アドレスが1の場合に1となり、それ以外の場合には0となる信号であり、信号lrad1は、ローカル行アドレスが1の場合に1となり、それ以外の場合には0となる信号である。また、信号gcad1は、グローバル列アドレスが1の場合に1となり、それ以外の場合には0となる信号であり、信号lcad1は、ローカル列アドレスが1の場合に1となり、それ以外の場合には0となる信号である。
【0109】
メモリセル21a1~21awには、wビットのW11が記憶されている。3入力AND(論理積)回路21bには、信号grad1,lrad1,gcad1が入力される。
2入力AND回路21cには、3入力AND回路21bの出力信号と、信号lcad1が入力され、2入力AND回路21cの出力が1のときに、メモリセル21a1~21awが選択される。そして、ビット線21d1~21dwを介してW11が読み出し回路21eによって読み出される。
【0110】
上記のようなメモリセル21a1~21aw、2入力AND回路21c、ビット線21d1~21dwによるユニットが、3入力AND回路21bの出力信号が伝搬する信号線に、5つ接続されている。さらに、信号lrad1が伝搬する信号線に、上記5つのユニットと3入力AND回路21bとを含むユニットが、5つ接続されている。さらに、このような構成が、5つのローカル行アドレスについて繰り返し設けられているとともに、5つのローカル行アドレスについて設けられた構成が、さらに5つのグローバル行アドレスについて繰り返し設けられている。
【0111】
上記の各アドレスについての信号線は、それぞれ独立に1または0とすることができる。また、2-Way 1-hot制約が満たされている場合、同じビット線に接続される異なるメモリセルが同時に選択されることはない。このため、上記の6つのWjkはそれぞれ同時に選択可能であり、1サイクルで読み出し可能である。
【0112】
図2のアドレスデコーダ27は、インデックス=p,q,r,s,g
p,g
sに基づいて、読み出す重み係数を指定するためのアドレスを生成する。局所場の更新の際には、p,q,r,s行の全ての重み係数を指定するためのアドレスが生成される。W
jkの読み出しの際、アドレスデコーダ27は、インデックス=p,q,r,s,g
p,g
sに基づいて、読み出すべき複数のW
jkを選択し、各W
jkを指定するアドレスを生成する。たとえば、
図5に示した状態遷移後において、インデックス=q,r=4,21である。この場合、アドレスデコーダ27は、前述のように、W
jkとして、W
23,6,W
3,9,W
25,11,W
5,14,W
22,16,W
2,19の6個を読み出すためのアドレスを生成する。
【0113】
アドレスデコーダ27は、前述のようなホットビット管理テーブルを記憶するメモリを有していてもよい。その場合、アドレスデコーダ27は、インデックス=p,q,r,s,gp,gsに基づいて、読み出すべき複数のWjkを選択する。ホットビット管理テーブルは、スイッチ制御回路23aなどが用いるものと同一のものであってもよい。
【0114】
グローバル行アドレスは、Gr(j)=int((j-1)/size)+1と表せ、ローカル行アドレスは、GREL(j)=mod(j-1,size)+1と表せる。また、グローバル列アドレスは、Gr(k)=int((k-1)/size)+1と表せ、ローカル列アドレスは、GREL(k)=mod(k-1,size)+1と表せる。
【0115】
sizeは、上記のように各アドレスを1~5としている場合は、5である。
たとえば、W23,6を読み出す場合、Gr(23)=int((23-1)/5)+1=5、GREL(23)=mod(23-1,5)+1=3、Gr(6)=int((6-1)/5)+1=2、GREL(6)=mod(6-1,5)+1=1となる。W3,9を読み出す場合、Gr(3)=int((3-1)/5)+1=1、GREL(3)=mod(3-1,5)+1=3、Gr(9)=int((9-1)/5)+1=2、GREL(9)=mod(9-1,5)+1=4となる。
【0116】
前述のように
図15のような記憶部21において、各アドレスについての信号線は、それぞれ独立に1または0とすることができるため、アドレスデコーダ27は、上記のような各種のアドレスを、それぞれ複数同時に指定できる。
【0117】
(第2の実施の形態の最適化装置20の全体の動作の流れ)
図16は、第2の実施の形態の最適化装置の一例の流れを説明する図である。
なお、以下では、疑似焼き鈍し法が用いられる場合を例にして説明するが、これに限定されず、レプリカ交換法などの手法を用いることもできる。
【0118】
まず、制御部28の制御のもと、初期設定処理が行われる(ステップS1)。初期設定処理において、制御部28は、制御装置30から受信したW11~Wnnを記憶部21に記憶する。また、制御部28は、各行と各列に含まれる状態変数の値の和が1になるように、N行N列のx1~xnの値を記憶部26aに設定する。さらに、制御部28は、記憶部24b1~24bnなどにx1~xnの初期値に応じた重み係数を記憶し、x1~xnの初期値に応じたh1~hnの初期値を、h更新回路22a1~22an内の図示しないレジスタに記憶する。また、制御部28は、遷移選択部25に対して、制御装置30から受けた温度変更スケジュールに基づいた温度パラメータ(T)の初期値や、状態更新処理の繰り返し回数の設定などを行う。さらに、制御部28は、x1~xnの初期値に応じた前述のホットビット管理テーブルを生成し、たとえば、伝搬部23などに含まれるメモリに記憶してもよい。
【0119】
その後、ΔE計算回路24a1~24anは、記憶部26aから自身に対応する状態変数を読み出す(ステップS2)。そして、伝搬部23は、ΔE計算回路24a1~24anのそれぞれにおいてのhi,hj,hk,hlを、h更新回路22a1~22anから、ΔE計算回路24a1~24anに伝搬する(ステップS3)。伝搬部23は、初回は、たとえば、ホットビット管理テーブルに基づいて、hi,hj,hk,hlの伝搬経路を決定する。そして、伝搬部23は、2回目以降は、インデックス=p,q,r,s,gp,gsまたは、これらのインデックスによって更新されたホットビット管理テーブルに基づいて伝搬経路を決定する。
【0120】
次に、ΔE計算回路24a1~24anは、エネルギー変化を計算する(ステップS4)。ΔE計算回路24a1~24anのうち、値が0である状態変数に対応するものは、式(3)に示すようなΔEjを計算する。ΔE計算回路24a1~24anのうち、値が1である状態変数に対応するものは、エネルギー変化として所定の正の値を出力する。
【0121】
そして、遷移選択部25は、ΔE計算回路24a1~24anが計算するエネルギー変化に基づいて、インデックス=qを選択する(ステップS5)。
たとえば、遷移選択部25は、温度パラメータ(T)と一様乱数とに基づいて生成されるノイズ値と、複数のエネルギー変化のそれぞれとを比較し、ノイズ値よりも小さくなるエネルギー変化を選択して、そのエネルギー変化のインデックスをqとして選択する。ノイズ値よりも小さくなるエネルギー変化が複数ある場合、遷移選択部25は、たとえば、所定のルールにしたがって、またはランダムに、そのうちの1つのエネルギー変化を選択する。ノイズ値よりも小さくなるエネルギー変化がない場合、遷移選択部25は、オフセット値をノイズ値に加えるなどして、状態遷移の発生を促してもよい。
【0122】
遷移選択部25は、さらに、選択したインデックス=qから、インデックス=p,r,s,gp,gsを決定する(ステップS6)。
その後、局所場更新部22は、局所場を更新する(ステップS7)。ステップS7の処理では、インデックス=p,r,s,gp,gsに基づいて、記憶部21から局所場の更新に用いる重み係数が読み出され、その重み係数に基づいて、式(4)に基づいて、局所場が更新される。なお、ステップS7の処理では、前述のように、読み出された重み係数のうちWilに相当する重み係数が、記憶部24b1~25bnの何れかに記憶される。
【0123】
また、ΔE計算回路24a1~24anの記憶部24b1~24bnに記憶される重み係数が更新される(ステップS8)。ステップS8の処理では、インデックス=p,r,s,gp,gsに基づいて、記憶部21から記憶部24b1~24bnに記憶される重み係数が読み出される。そして、読み出された重み係数は、伝搬部23によって、その重み係数を用いるΔE計算回路に伝搬され、そのΔE計算回路の記憶部に記憶されている重み係数が、新たに読み出された重み係数によって更新される。
【0124】
さらに、更新部26は、インデックス=p,r,s,gp,gsに基づいて、記憶部26aに記憶されている4つの状態変数を更新する(ステップS9)。
制御部28は、上記のようなステップS2~S9の状態更新処理の回数が、所定回数N1に達したか否か判定する(ステップS10)。状態更新処理の回数が所定回数N1に達していない場合には、ステップS2からの処理が繰り返される。
【0125】
状態更新処理の回数が所定回数N1に達した場合、制御部28は、Tの変更回数(温度変更回数)が、所定回数N2に達したか否かを判定する(ステップS11)。
温度変更回数が所定回数N2に達していない場合、制御部28は、Tを変更する(温度を下げる)(ステップS12)。所定回数N1,N2、Tの値の変更の仕方(一度に値をどのくらい小さくするかなど)は、所定の温度変更スケジュールなどに基づいて決定される。ステップS12の処理後、ステップS2からの処理が繰り返される。
【0126】
温度変更回数が所定回数N2に達したとき、制御部28は、たとえば、そのとき記憶部26aに保持されている全状態変数の値を計算結果として、たとえば、制御装置30に出力し(ステップS13)、処理を終える。なお、制御部28は、状態遷移が生じるたびに、全状態変数の値に基づいてエネルギーを計算し、最小エネルギーが得られる全状態変数の値を逐次更新し、温度変更回数が所定回数N2に達した時点での、その全状態変数の値を、解として出力してもよい。
【0127】
なお、上記の処理の順序は、上記の例に限定されるわけではなく、適宜順番を入れ替えてもよい。
以上のような、第2の実施の形態の最適化装置20によれば、第1の実施の形態の最適化装置10と同様の効果が得られる。すなわち、2-Way 1-hot制約をもつ最適化問題の計算時間を短縮や、重み係数を記憶しておくためのハードウェア量を削減できる。
【0128】
さらに、上記のようなW
ilや、W
jkの効率的な読み出し手法によって、記憶部21へのアクセス回数を少なくでき、計算時間のさらなる短縮が期待できる。
図17は、第2の実施の形態の最適化装置を用いた場合の計算短縮効果を表すシミュレーション結果を示す図である。
【0129】
計算対象の組合せ最適化問題は、2次割り当て問題の1つであり正解が知られている“2QAP 1K had12”である。横軸は、イタレーション回数(前述のような更新処理回数)を表し、縦軸は、正解に到達したレプリカ数(最適化装置20の数)を表す。
【0130】
図17には、上記のような4ビット遷移の最適化装置20を用いた場合の結果50とともに、列または行の一方向の1-hot制約を満たす状態以外を除外して探索する2ビット遷移の最適化装置を用いた場合の結果51が示されている。さらに、従来の1ビット遷移の最適化装置を用いた場合の結果52が示されている。
【0131】
図17のように、最適化装置20では、2ビット遷移の最適化装置と比べても、正解に到達するまでのイタレーション回数を1/100以下に削減可能である。たとえば、正解に達したレプリカ数=15の場合、イタレーション回数が1/337に削減されており、計算が高速化されていることがわかる。
【0132】
(第3の実施の形態)
第2の実施の形態の最適化装置20では、ΔE計算回路24a1~24anは、状態変数の数(n=N2)と同数設けられているものとしたが、ΔE計算回路の数は、N2よりも少なくてもよい。以下、ΔE計算回路の数が、N2よりも少ない最適化装置の例を説明する。
【0133】
図18は、第3の実施の形態の最適化装置の一例を示す図である。
図18において、
図3に示した要素と同じ要素については同一符号が付されているか、図示が省略されている。
【0134】
第3の実施の形態の最適化装置60は、伝搬部61が
図3の伝搬部23と異なっているとともに、ΔE計算回路62a1~62aNの数がN個である。また、最適化装置60は、伝搬制御部63と、n(=N
2)個のΔE保持部64a1~64anを有する。
【0135】
ΔE計算回路の数がN
2と等しい第2の実施の形態の最適化装置20では、W
ilやW
jkは、ΔE計算回路24a1~24anが有する記憶部24b1~24bnに記憶されるものとしている。これに対して、ΔE計算回路の数がN
2よりも少ない第3の実施の形態の最適化装置60では、W
ilやW
jkは、N
2個設けられているh更新回路22a1~22anのそれぞれに対応して記憶されるようにすればよい。たとえば、式(3)において、j=1とした場合、ΔE
1の計算に用いるW
il,W
jk(たとえば、
図5のような状態遷移後の場合、
図6より、W
4,21,W
1,24)は、h
1を更新するh更新回路22a1に対応付けて記憶されるようにすればよい。
【0136】
しかし、回路構成を簡素化するために、以下では、W
il,W
jkは、インデックス=l,kで示される局所場を更新する各h更新回路に対応して記憶されるものとする。たとえば、
図5のような状態遷移後の場合、ΔE
1の計算に用いるW
ilであるW
4,21は、h
21を更新するh更新回路に対応して記憶され、ΔE
1の計算に用いるW
jkであるW
1,24は、h
24を更新するh更新回路に対応して記憶されるものとする。
【0137】
最適化装置60では、伝搬部61は、h更新回路22a1~22anのそれぞれに対応対応して設けられた記憶部61a1~61anを有する。記憶部61a1~61anのそれぞれは、スイッチ21b1~21bnのうち、対応するスイッチがオンした場合に、記憶部21から読み出された重み係数を記憶する。たとえば、スイッチ21b1がオンした場合、記憶部21から読み出されるW11~Wn1の何れかが、記憶部61a1に記憶される。スイッチ21bnがオンした場合、記憶部21から読み出されるW1n~Wnnの何れかが、記憶部61anに記憶される。記憶部61a1~61anは、たとえば、レジスタまたはSRAMなどの電子回路により実現できる。
【0138】
また、伝搬制御部61bが、第1の実施の形態の最適化装置20の伝搬制御部23cと異なる。
伝搬制御部61bは、n個の局所場(またはそれらに対応した重み係数、状態変数)をN個のΔE計算回路62a1~62aNに分配するN2:Nマルチプレクサとして機能する。N2:Nマルチプレクサは、複数のN:1マルチプレクサにより実現される。
【0139】
一方、伝搬制御部63は、N個のΔE計算回路62a1~62aNが計算したエネルギー変化を、n個のΔE保持部64a1~64anのうちのN個に分配するN:N2デマルチプレクサとして機能する。N:N2デマルチプレクサは、複数の1:Nデマルチプレクサにより実現される。
【0140】
以下、N=5の場合を例にして説明する。
図19は、局所場及び重み係数を伝搬する伝搬制御部の一例を示す図である。
伝搬制御部61bは、25個のスイッチ70a1~70a25、マルチプレクサ71a1,71a2,71a3,71a4,71a5,71b1,71b2,71b3,71b4,71b5、制御信号生成回路72を有する。
【0141】
スイッチ70a1~70a25のそれぞれの一端には、h1~h25の何れかが入力され、他端は、スイッチ70a1,70a25を除いて、マルチプレクサ71a1~71a5の何れか2つにおける5つの入力端子のうちの1つに接続されている。スイッチ70a1の他端は、マルチプレクサ71a1の5つの入力端子のうちの1つに接続され、スイッチ70a25の他端は、マルチプレクサ71a5の5つの入力端子のうちの1つに接続されている。なお、記憶部61a1~61anに重み係数が記憶されている場合、h1~h25に対応して、重み係数についてもスイッチ70a1~70a25のそれぞれの一端に入力される。スイッチ70a1~70a25は、制御信号生成回路72が生成する制御信号cnta1~cnta25によって、オンオフが制御される。
【0142】
マルチプレクサ71a1~71a5のそれぞれは、制御信号生成回路72が出力する制御信号cntb1,cntb2,cntb3,cntb4,cntb5の何れかに応じて、5つの入力端子に入力される局所場(または重み係数)を1つ選択して出力する。
【0143】
マルチプレクサ71b1~71b5のそれぞれの5つの入力端子には、マルチプレクサ71a1~71a5が出力する局所場(または重み係数)が入力される。マルチプレクサ71b1~71b5のそれぞれは、制御信号生成回路72が出力する制御信号cntc1,cntc2,cntc3,cntc4,cntc5の何れかに応じて、5つの入力端子に入力される局所場(または重み係数)を1つ選択して出力する。
【0144】
制御信号生成回路72は、インデックス=p,q,r,s,gp,gsに基づいて、制御信号cnta1~cnta25,cntb1~cntb5,cntc1~cntc5を生成し、出力する。制御信号生成回路72は、たとえば、前述のようなホットビット管理テーブルを記憶するメモリを有していてもよい。その場合、制御信号生成回路72は、ホットビット管理テーブルに基づいて、上記の各制御信号を生成する。ホットビット管理テーブルは、インデックス=p,q,r,s,gp,gsに基づいて更新される。
【0145】
なお、伝搬制御部61bに入力されるx
1~x
nは、たとえば、式(3)のh
jが伝搬されるサイクルで、h
jとともに伝搬されるものとする。
N=5の場合、
図19に示されているように、5つのΔE計算回路62a1,62a2,62a3,62a4,62a5が設けられる。
【0146】
ΔE計算回路62a1には、マルチプレクサ71b1から、ΔE計算回路62a2には、マルチプレクサ71b2から、ΔE計算回路62a3には、マルチプレクサ71b3から、それぞれ局所場(または重み係数、状態変数)が供給される。また、ΔE計算回路62a4には、マルチプレクサ71b4から、ΔE計算回路62a5には、マルチプレクサ71b5から、それぞれ局所場(または重み係数)が供給される。
【0147】
なお、
図19には、ΔE計算回路62a1の一例の回路構成が示されている。ΔE計算回路62a2~62a5についても同様の回路構成である。
ΔE計算回路62a1は、乗算器75、加算器76、記憶部77、セレクタ78、制御信号生成回路79を有する。
【0148】
乗算器75は、マルチプレクサ71b1が出力する、hi,hj,hk,hl,Wil,Wjkに対して、制御信号生成回路79が出力する符号(+1または-1)を乗じる。
加算器76は、乗算器75が出力する乗算結果と記憶部77に記憶されている値との加算結果を出力する。
【0149】
記憶部77は、加算器76が出力する加算結果を記憶する。記憶部77は、たとえば、レジスタまたはSRAMなどの電子回路により実現できる。
セレクタ78は、制御信号生成回路79が出力する選択信号に基づいて、たとえば、図示しないレジスタなどに記憶された所定の正の値(ΔEmax)と、記憶部77に記憶されているエネルギー変化(ΔEj)の何れか一方を選択して出力する。
【0150】
制御信号生成回路79は、伝搬制御部61bがhiなどを伝搬するサイクルごとに、hi,hj,hk,hl,Wil,Wjkに乗じる符号を生成する。さらに、制御信号生成回路79は、マルチプレクサ71b1が出力するxjが1である場合、セレクタ78にΔEmaxを選択させる選択信号を出力し、xjが0である場合、セレクタ78にΔEjを選択させる選択信号を出力する。
【0151】
なお、
図2のΔE計算回路24a1~24anについても、上記とほぼ同様な回路構成により実現できる。
図19のように、5つのマルチプレクサ71a1~71a5を用いる構成は、5つのバスを用いることに相当する。N本のバスとN個のΔE計算回路を用いて、N
2個のエネルギー変化を計算する場合、4Nサイクルかかる。N=5の場合は、20サイクルかかる。
【0152】
図20は、N=5の場合に各サイクルで計算されるエネルギー変化の例を示す図である。
サイクル1~4までは、j=1~5までのΔE
jの計算が行われる。サイクル1では、伝搬制御部61bによってh
iが伝搬され、制御信号生成回路79は、符号として+1を出力する。これにより、記憶部77に記憶されるΔE
jはh
iとなる。サイクル2では、伝搬制御部61bによってh
j,x
jが伝搬され、制御信号生成回路79は、符号として-1を出力する。これによりΔE
j-=h
jが計算され、記憶部77に記憶されるΔE
jは、h
i-h
jとなる。サイクル3では、伝搬制御部61bによってh
kとW
jkが伝搬され、制御信号生成回路79は、符号として-1を出力する。これによりΔE
j-=h
k+W
jkが計算され、記憶部77に記憶されるΔE
jはh
i-h
j-h
k-W
jkとなる。サイクル4では、伝搬制御部61bによってh
lとW
ilが伝搬され、制御信号生成回路79は、符号として、h
lに対しては+1、W
ilに対しては-1を出力する。これによりΔE
j+=h
l-W
ilが計算され、記憶部77に記憶されるΔE
jはh
i-h
j-h
k+h
l-W
jk-W
il、つまり、式(3)で表されるΔE
jとなる。ただ、値が1であるx
jに対応するΔE
jを計算するΔE計算回路は、ΔE
jの代わりに、ΔEmaxを出力する。
【0153】
サイクル5~8では、j=6~10に対して、同上の処理が行われ、サイクル9~12では、j=11~15に対して、同上の処理が行われる。また、サイクル13~16では、j=16~20に対して、同上の処理が行われ、サイクル17~20では、j=21~25に対して、同上の処理が行われる。
【0154】
次に、
図5に示したような状態遷移後における、上記の各サイクルにおける伝搬制御部61bの動作例を説明する。
図21は、サイクル1における伝搬制御部の動作例を示す図である。なお、
図21では、h
iが伝搬される信号線として有効ではないものについては点線で示されている。
【0155】
図5に示した状態遷移後では、x
1~x
5のうちx
4が1となる。このため、h
iとしてh
4が、ΔE計算回路62a1~62a5に伝搬される。この場合、スイッチ70a1~70a25のうち、スイッチ70a4がオンされ、他のスイッチはオフされる。そして、マルチプレクサ71a1は、入力されるh
4を選択して出力し、マルチプレクサ71b1~71b5は、マルチプレクサ71a1の出力であるh
4を選択して出力する。これにより、ΔE計算回路62a1~62a5が、サイクル1において計算するΔE
1~ΔE
5は、h
4となる。
【0156】
図22は、サイクル2における伝搬制御部の動作例を示す図である。なお、
図22では、h
j,x
jが伝搬される信号線として有効ではないものについては点線で示されている。
【0157】
サイクル2では、h1~h5とx1~x5が伝搬される。この場合、スイッチ70a1~70a25のうち、スイッチ70a1~70a5がオンされ、他のスイッチはオフされる。そして、マルチプレクサ71a1は、入力されるh1,x1を選択して出力し、マルチプレクサ71a2は、入力されるh2,x2を選択して出力し、マルチプレクサ71a3は、入力されるh3,x3を選択して出力する。また、マルチプレクサ71a4は、入力されるh4,x4を選択して出力し、マルチプレクサ71a5は、入力されるh5,x5を選択して出力する。
【0158】
また、マルチプレクサ71b1は、マルチプレクサ71a1の出力であるh1,x1を選択して出力し、マルチプレクサ71b2は、マルチプレクサ71a2の出力であるh2,x2を選択して出力する。マルチプレクサ71b3は、マルチプレクサ71a3の出力であるh3,x3を選択して出力し、マルチプレクサ71b4は、マルチプレクサ71a4の出力であるh4,x4を選択して出力する。マルチプレクサ71b5は、マルチプレクサ71a5の出力であるh5,x5を選択して出力する。
【0159】
これによりΔE計算回路62a1はΔE1-=h1を計算し、ΔE計算回路62a2はΔE2-=h2を計算し、ΔE計算回路62a3はΔE3-=h3を計算し、ΔE計算回路62a4はΔE4-=h4を計算し、ΔE計算回路62a5はΔE5-=h5を計算する。
【0160】
図23は、サイクル3における伝搬制御部の動作例を示す図である。なお、
図23では、h
k,W
jkが伝搬される信号線として有効ではないものについては点線で示されている。
【0161】
サイクル3では、h
kであるh
4,h
9,h
14,h
19,h
24と、W
jkであるW
4,4,W
3,9,W
5,14,W
2,19,W
1,24が伝搬される。これらの重み係数は、
図5に示した状態遷移後に、アドレスデコーダ27によって、記憶部21から読み出され、記憶部61a1~61anのうち、h
4,h
9,h
14,h
19,h
24を更新するh更新回路に対応するものに記憶されている。
【0162】
この場合、スイッチ70a1~70a25のうち、スイッチ70a4,70a9,70a14,70a19,70a24がオンされ、他のスイッチはオフされる。そして、マルチプレクサ71a1は、入力されるh4,W4,4を選択して出力し、マルチプレクサ71a2は、入力されるh9,W3,9を選択して出力し、マルチプレクサ71a3は、入力されるh14,W5,14を選択して出力する。また、マルチプレクサ71a4は、入力されるh19,W2,19を選択して出力し、マルチプレクサ71a5は、入力されるh24,W1,24を選択して出力する。
【0163】
また、マルチプレクサ71b1は、マルチプレクサ71a5の出力であるh24,W1,24を選択して出力し、マルチプレクサ71b2は、マルチプレクサ71a4の出力であるh19,W2,19を選択して出力する。マルチプレクサ71b3は、マルチプレクサ71a2の出力であるh9,W3,9を選択して出力し、マルチプレクサ71b4は、マルチプレクサ71a1の出力であるh4,W4,4を選択して出力する。マルチプレクサ71b5は、マルチプレクサ71a3の出力であるh14,W5,14を選択して出力する。
【0164】
これによりΔE計算回路62a1はΔE1-=h24+W1,24を計算し、ΔE計算回路62a2はΔE2-=h19+W2,19を計算し、ΔE計算回路62a3はΔE3-=h9+W3,9を計算する。また、ΔE計算回路62a4はΔE4-=h4+W4,4を計算し、ΔE計算回路62a5はΔE5-=h14+W5,14を計算する。
【0165】
図24は、サイクル4における伝搬制御部の動作例を示す図である。なお、
図24では、h
l,W
ilが伝搬される信号線として有効ではないものについては点線で示されている。
【0166】
サイクル4では、h
lであるh
4,h
8,h
15,h
17,h
21と、W
ilであるW
4,4,W
4,8,W
4,15,W
4,17,W
4,21が伝搬される。これらの重み係数は、
図5に示した状態遷移後に、アドレスデコーダ27によって、記憶部21から読み出され、記憶部61a1~61anのうち、h
4,h
8,h
15,h
17,h
21を更新するh更新回路に対応するものに記憶されている。
【0167】
この場合、スイッチ70a1~70a25のうち、スイッチ70a4,70a8,70a15,70a17,70a21がオンされ、他のスイッチはオフされる。そして、マルチプレクサ71a1は、入力されるh4,W4,4を選択して出力し、マルチプレクサ71a2は、入力されるh8,W4,8を選択して出力し、マルチプレクサ71a3は、入力されるh15,W4,15を選択して出力する。また、マルチプレクサ71a4は、入力されるh17,W4,17を選択して出力し、マルチプレクサ71a5は、入力されるh21,W4,21を選択して出力する。
【0168】
また、マルチプレクサ71b1は、マルチプレクサ71a5の出力であるh21,W4,21を選択して出力し、マルチプレクサ71b2は、マルチプレクサ71a4の出力であるh17,W4,17を選択して出力する。マルチプレクサ71b3は、マルチプレクサ71a2の出力であるh8,W4,8を選択して出力し、マルチプレクサ71b4は、マルチプレクサ71a1の出力であるh4,W4,4を選択して出力する。マルチプレクサ71b5は、マルチプレクサ71a3の出力であるh15,W4,15を選択して出力する。
【0169】
これによりΔE計算回路62a1はΔE1+=h21-W4,21を計算し、ΔE計算回路62a2はΔE2+=h17-W4,17を計算し、ΔE計算回路62a3はΔE3+=h8-W4,8を計算する。また、ΔE計算回路62a4はΔE4+=h4-W4,4を計算し、ΔE計算回路62a5はΔE5+=h15-W4,15を計算する。
【0170】
以上のサイクル1~4によって、ΔE1~ΔE5についての、式(3)の計算が完了する。なお、x4=1であるため、ΔE4として、上記のように計算した値ではなく、ΔEmaxが出力される。
【0171】
以降のサイクルでも同様の制御により、ΔE
6~ΔE
25が算出される。
図25は、エネルギー変化を伝搬する伝搬制御部の一例を示す図である。
伝搬制御部63は、5つのΔE計算回路62a1~62a5が計算したエネルギー変化を、25個のΔE保持部64a1~64a25の何れか5つに伝搬する。伝搬制御部63は、25個のスイッチ63a1~63a25と、スイッチ制御回路63bを有する。なお、
図25の5つの黒丸は、デマルチプレクサとして機能している。
【0172】
スイッチ制御回路63bは、スイッチ63a1~63a25の何れか5つをオンし、他のスイッチをオフすることで、ΔE計算回路62a1~62a5が計算したエネルギー変化を、ΔE保持部64a1~64a25の何れか5つに伝搬する。
【0173】
たとえば、
図20のように、20サイクルで、ΔE
1~ΔE
25が算出される場合、ΔE
1~ΔE
5の算出が終わるサイクル4において、スイッチ63a1~63a25のうち、ΔE
1~ΔE
5を保持するΔE保持部と接続される5つのスイッチがオンされる。ΔE
6~ΔE
10の算出が終わるサイクル8において、スイッチ63a1~63a25のうち、ΔE
6~ΔE
10を保持するΔE保持部と接続される5つのスイッチがオンされる。ΔE
11~ΔE
15の算出が終わるサイクル12において、スイッチ63a1~63a25のうち、ΔE
11~ΔE
15を保持するΔE保持部と接続される5つのスイッチがオンされる。ΔE
16~ΔE
20の算出が終わるサイクル16において、スイッチ63a1~63a25のうち、ΔE
16~ΔE
20を保持するΔE保持部と接続される5つのスイッチがオンされる。ΔE
21~ΔE
25の算出が終わるサイクル20において、スイッチ63a1~63a25のうち、ΔE
21~ΔE
25を保持するΔE保持部と接続される5つのスイッチがオンされる。
【0174】
これにより、
図2に示したような遷移選択部25に入力されるn=25個のエネルギー変化が得られる。その他は、第2の実施の形態の最適化装置20と同様の動作が行われる。なお、遷移選択部25が、N
2個のエネルギー変化をN個ずつ入力して、N個のエネルギー変化のうちから1つのエネルギー変化を選択する場合、
図18に示した伝搬制御部63やΔE保持部64a1~64anはなくてもよい。
【0175】
以上のように、ΔE計算回路62a1~62aNの数がN2よりも少なくても、上記のような伝搬部61により、計算に用いられる局所場や重み係数の伝搬を行うことで、第2の実施の形態の最適化装置20と同様の効果が得られる。
【0176】
(変形例)
ところで、評価関数に含まれる状態変数には、N2個の2-Way 1-hot制約を受ける状態変数の他に、2-Way 1-hot制約を受けない状態変数が含まれていてもよい。
【0177】
その場合、ΔE計算回路を以下のようにすればよい。
図26は、ΔE計算回路の変形例を示す図である。
図26において
図19に示したΔE計算回路62a1と同様の要素については同一符号が付されている。
【0178】
変形例のΔE計算回路80は、制御信号生成回路79aが、
図19の制御信号生成回路79と異なっている。また、各状態変数とともに、その状態変数が2-Way 1-hot制約を受けるものか否かを示すフラグ値が、図示しない記憶部に記憶されているものとする。
【0179】
たとえば、xjが2-Way 1-hot制約を受ける状態変数である場合、フラグ値(fj)は1となっている。これに対して、xjが2-Way 1-hot制約を受けない状態変数である場合、フラグ値(fj)は0となっている。
【0180】
制御信号生成回路79aは、xjとともにfjも読み込み、fj=1の場合、hi,hj,hk,hl,Wil,Wjkに対して、前述のように制御信号として+1または-1を出力する。fj=0の場合、制御信号生成回路79aは、hi,hk,hl,Wil,Wjkに対して、制御信号として0を出力し、hjに対して、2xj-1を出力する。これにより、ΔEj=(2xj-1)hjとなる。2xj-1は、xjの変化分であり、(2xj-1)hjは、全状態変数のうち、xjだけが変化する場合のエネルギー変化を表す。なお、fj=0の場合、制御信号生成回路79aは、セレクタ78にΔEjを選択させる。
【0181】
なお、遷移選択部25において、fj=0のxjが変化する場合のΔEjが選択された場合、xjの1ビットだけが更新される。そして、その更新に応じて局所場についても更新される。
【0182】
たとえば、このような構成により、評価関数に含まれる状態変数には、N2個の2-Way 1-hot制約を受ける状態変数の他に、2-Way 1-hot制約を受けない状態変数が含まれていても、処理が可能となる。
【0183】
以上、実施の形態に基づき、本発明の最適化装置及び最適化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0184】
10 最適化装置
11,13bi,13bj,15a 記憶部
12 伝搬部
13 計算部
13ai~13aj ΔE計算回路
14 遷移選択部
15 更新部
16 アドレスデコーダ