IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2025-5635データ処理装置、プログラム及びデータ処理方法
<>
  • 特開-データ処理装置、プログラム及びデータ処理方法 図1
  • 特開-データ処理装置、プログラム及びデータ処理方法 図2
  • 特開-データ処理装置、プログラム及びデータ処理方法 図3
  • 特開-データ処理装置、プログラム及びデータ処理方法 図4
  • 特開-データ処理装置、プログラム及びデータ処理方法 図5
  • 特開-データ処理装置、プログラム及びデータ処理方法 図6
  • 特開-データ処理装置、プログラム及びデータ処理方法 図7
  • 特開-データ処理装置、プログラム及びデータ処理方法 図8
  • 特開-データ処理装置、プログラム及びデータ処理方法 図9
  • 特開-データ処理装置、プログラム及びデータ処理方法 図10
  • 特開-データ処理装置、プログラム及びデータ処理方法 図11
  • 特開-データ処理装置、プログラム及びデータ処理方法 図12
  • 特開-データ処理装置、プログラム及びデータ処理方法 図13
  • 特開-データ処理装置、プログラム及びデータ処理方法 図14
  • 特開-データ処理装置、プログラム及びデータ処理方法 図15
  • 特開-データ処理装置、プログラム及びデータ処理方法 図16
  • 特開-データ処理装置、プログラム及びデータ処理方法 図17
  • 特開-データ処理装置、プログラム及びデータ処理方法 図18
  • 特開-データ処理装置、プログラム及びデータ処理方法 図19
  • 特開-データ処理装置、プログラム及びデータ処理方法 図20
  • 特開-データ処理装置、プログラム及びデータ処理方法 図21
  • 特開-データ処理装置、プログラム及びデータ処理方法 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025005635
(43)【公開日】2025-01-17
(54)【発明の名称】データ処理装置、プログラム及びデータ処理方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20250109BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023105888
(22)【出願日】2023-06-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】渡部 康弘
(72)【発明者】
【氏名】田村 泰孝
(57)【要約】
【課題】複数ビット遷移を効率よく評価する。
【解決手段】等価スピン保持回路23は組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる複数の変数群のそれぞれの、2以上の2値変数のうちの1つの値である代表値を保持する。等価結合係数メモリ21は複数の変数群の間の相互作用の大きさを表す複数の第1結合係数を記憶する。ΔE算出回路26は複数の変数群のそれぞれの代表値の変化に伴う評価関数の値の第1変化量の特定に用いられる第1局所場を用いて第1変化量を算出する。遷移等価スピン選択回路29は第1変化量に基づき複数の変数群の何れかの代表値の変化を受け入れ、等価スピン更新回路22は変化が受け入れられた第1変数群の代表値を更新する。等価局所場更新回路24は複数の第1結合係数のうち、第1変数群の第1識別番号に基づいて読み出された第2結合係数を用いて第1局所場を更新する。
【選択図】図7
【特許請求の範囲】
【請求項1】
組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる複数の変数群のそれぞれの、前記2以上の2値変数のうちの1つの値である代表値を保持する第1保持回路と、
前記複数の変数群の間の相互作用の大きさを表す複数の第1結合係数を記憶する第1メモリと、
前記複数の変数群のそれぞれの前記代表値の変化に伴う、前記評価関数の値の第1変化量の特定に用いられる第1局所場を保持する第2保持回路と、
前記第1局所場を用いて、前記第1変化量を、前記複数の変数群のそれぞれに対して算出する変化量算出回路と、
前記複数の変数群のそれぞれに対して算出された前記第1変化量に基づいて、前記複数の変数群の何れかの前記代表値の変化を受け入れる選択回路と、
前記複数の変数群のうち、前記代表値の変化が受け入れられた第1変数群の前記代表値を更新する第1更新回路と、
前記第1メモリに記憶されている前記複数の第1結合係数のうち、前記第1変数群の第1識別番号に基づいて読み出された第2結合係数を用いて、前記第1局所場を更新する第2更新回路と、
を有するデータ処理装置。
【請求項2】
前記第1保持回路、前記第1メモリ、前記第2保持回路、前記変化量算出回路、前記選択回路、前記第1更新回路、前記第2更新回路と、を含む第1回路部と、
前記複数の変数群を含む、前記評価関数の複数の2値変数のそれぞれの値の変化に伴う、前記評価関数の値の第2変化量に基づいて、前記複数の2値変数の何れか1つの値の変化を受け入れる第2回路部と、
前記第1回路部による処理と、前記第2回路部による処理とを切り替える制御回路と、
を有する請求項1に記載のデータ処理装置。
【請求項3】
前記第1識別番号に基づいて、前記第1変数群に含まれる前記2以上の2値変数を特定する2以上の第2識別番号を出力するデコーダ回路を、さらに有し、
前記第2回路部は、前記2以上の第2識別番号に対応する前記2以上の2値変数の値を更新する、
請求項2に記載のデータ処理装置。
【請求項4】
前記複数の変数群の前記代表値の変化を許容するか否かを示すイネーブル信号を生成するイネーブル判定回路をさらに有し、
前記イネーブル判定回路は、前記第2回路部が前記複数の2値変数のうち、第1の2値変数の値の変化を受け入れた場合、前記複数の変数群のうち、前記第1の2値変数を含む第2変数群に関する前記イネーブル信号の値を反転させる、
請求項2に記載のデータ処理装置。
【請求項5】
前記第2回路部は、
前記評価関数の、前記複数の2値変数のそれぞれの値を保持する第3保持回路と、
前記複数の2値変数のそれぞれの間の相互作用の大きさを表す複数の第3結合係数を記憶する第2メモリと、
前記第2変化量の特定に用いられる第2局所場を保持する第4保持回路と、
を有し、
前記データ処理装置は、前記第2回路部の処理により得られた、前記複数の2値変数の値と、前記複数の第3結合係数及び前記第2局所場を用いて、前記第1局所場の初期値を算出する初期値算出回路を、さらに有する、
請求項2に記載のデータ処理装置。
【請求項6】
前記第2回路部は、
前記評価関数の、前記複数の2値変数のそれぞれの値を保持する第3保持回路と、
前記複数の2値変数のそれぞれの間の相互作用の大きさを表す複数の第3結合係数を記憶する第2メモリと、
前記第2変化量の特定に用いられる第2局所場を保持する第4保持回路と、
を有し、
前記第1回路部は、
前記複数の第3結合係数のうち、前記複数の変数群に含まれる2値変数が関係する複数の第4結合係数を記憶する第3メモリをさらに有し、
前記第2更新回路は、前記第2回路部が前記複数の2値変数のうちの第1の2値変数の値の変化を受け入れたとき、前記第1の2値変数の値の変化量と、前記第1の2値変数が関係する前記複数の第4結合係数の何れかを用いて、前記第1局所場を更新する、
請求項2に記載のデータ処理装置。
【請求項7】
前記第1回路部と前記第2回路部の一部が共通化されている、請求項2に記載のデータ処理装置。
【請求項8】
組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる複数の変数群のそれぞれの、前記2以上の2値変数のうちの1つの値である代表値を保持し、
前記複数の変数群の間の相互作用の大きさを表す複数の第1結合係数をメモリに記憶し、
前記複数の変数群のそれぞれの前記代表値の変化に伴う、前記評価関数の値の第1変化量の特定に用いられる第1局所場を保持し、
前記第1局所場を用いて、前記第1変化量を、前記複数の変数群のそれぞれに対して算出し、
前記複数の変数群のそれぞれに対して算出された前記第1変化量に基づいて、前記複数の変数群の何れかの前記代表値の変化を受け入れ、
前記複数の変数群のうち、前記代表値の変化が受け入れられた第1変数群の前記代表値を更新し、
前記メモリに記憶されている前記複数の第1結合係数のうち、前記第1変数群の第1識別番号に基づいて読み出された第2結合係数を用いて、前記第1局所場を更新する、
処理をコンピュータに実行させるプログラム。
【請求項9】
コンピュータが、
組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる複数の変数群のそれぞれの、前記2以上の2値変数のうちの1つの値である代表値を保持し、
前記複数の変数群の間の相互作用の大きさを表す複数の第1結合係数をメモリに記憶し、
前記複数の変数群のそれぞれの前記代表値の変化に伴う、前記評価関数の値の第1変化量の特定に用いられる第1局所場を保持し、
前記第1局所場を用いて、前記第1変化量を、前記複数の変数群のそれぞれに対して算出し、
前記複数の変数群のそれぞれに対して算出された前記第1変化量に基づいて、前記複数の変数群の何れかの前記代表値の変化を受け入れ、
前記複数の変数群のうち、前記代表値の変化が受け入れられた第1変数群の前記代表値を更新し、
前記メモリに記憶されている前記複数の第1結合係数のうち、前記第1変数群の第1識別番号に基づいて読み出された第2結合係数を用いて、前記第1局所場を更新する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数を用いたイジングマシンがある。イジングマシンを用いる場合、組合せ最適化問題が磁性体のスピンの振る舞いを表すイジングモデルに変換される。イジングマシンは、疑似焼き鈍し法やレプリカ交換法(パラレルテンパリング法などとも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値が極小になるイジングモデルの状態を探索する。以下、マルコフ連鎖モンテカルロ法を、MCMC(Markov-Chain Monte Carlo)法と略す。評価関数の極小値のうちの最小値になる状態が最適解となる。イジングモデルの状態は、複数の2値変数の値の組合せにより表現できる。各2値変数の値として、0または1を用いることができる。このため、2値変数はビットと表記されてもよい。
【0003】
イジング型の評価関数は、たとえば、以下の式(1)で定義される。
【0004】
【数1】
【0005】
右辺の1項目は、イジングモデルの全2値変数の全組合せについて、漏れと重複なく、2つの2値変数の値(0または1)と重み値(結合係数とも呼ばれる)との積を積算したものである。xは、識別番号がiの2値変数、xは、識別番号がjの2値変数であり、Wijは、識別番号がiとjの2値変数間の相互作用の大きさを表す結合係数である。右辺の2項目は、各識別番号についてのバイアス係数と2値変数との積の総和を求めたものである。bは、識別番号=iについてのバイアス係数を示している。
【0006】
また、xの値の変化に伴う評価関数の値の変化量(ΔE)は、以下の式(2)で表される。
【0007】
【数2】
【0008】
式(2)において、xが1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hは局所場と呼ばれ、ΔEを特定する変数である。Δxに応じてhに符号(+1または-1)を乗じたものがΔEとなる。
【0009】
イジングマシンは、たとえば、ΔEが、乱数と温度パラメータの値に基づいて得られるノイズ値より小さい場合、xの値を反転させ局所場を更新する、という処理を繰り返すことで解の探索を行う。なお、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。
【0010】
ΔEの算出やxの値を反転させるか否かの判定などの処理は、複数並列に行うことができるため、複数の2値変数に対する並列試行が可能である。
従来、MCMC法による処理の1試行あたりに2値変数の値の変化(以下、遷移ということもある)を許容する数を1とする処理(以下単一ビット遷移処理という)がある。しかし、単一ビット遷移処理では、解が局所解に嵌まった場合に、その局所解から脱出することが難しくなり、探索速度が低下する場合がある。
【0011】
そのため、複数ビットの遷移が生じる場合の評価関数の値の変化量の計算結果に基づいて、当該複数ビットの遷移の可否を判定し、遷移が許容された場合には複数ビットの遷移を生じさせる処理が提案されている(たとえば、特許文献1-3参照)。以下このような処理を複数ビット遷移処理という。複数ビット遷移処理によれば、解の局所解からの脱出が促進され、探索速度を促進することができる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2020-021209号公報
【特許文献2】特開2020-064536号公報
【特許文献3】特開2021-165965号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
従来の複数ビット遷移処理では、複数ビットの遷移が生じる場合の評価関数の値の変化量を計算するための構成やデータを伝搬する構成などが複雑となるため、複数ビットの遷移を並列試行により効率よく評価することが困難であった。
【0014】
1つの側面では、本発明は、複数ビットの遷移を効率よく評価可能なデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
1つの実施態様では、組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる複数の変数群のそれぞれの、前記2以上の2値変数のうちの1つの値である代表値を保持する第1保持回路と、前記複数の変数群の間の相互作用の大きさを表す複数の第1結合係数を記憶する第1メモリと、前記複数の変数群のそれぞれの前記代表値の変化に伴う、前記評価関数の値の第1変化量の特定に用いられる第1局所場を保持する第2保持回路と、前記第1局所場を用いて、前記第1変化量を、前記複数の変数群のそれぞれに対して算出する変化量算出回路と、前記複数の変数群のそれぞれに対して算出された前記第1変化量に基づいて、前記複数の変数群の何れかの前記代表値の変化を受け入れる選択回路と、前記複数の変数群のうち、前記代表値の変化が受け入れられた第1変数群の前記代表値を更新する第1更新回路と、前記第1メモリに記憶されている前記複数の第1結合係数のうち、前記第1変数群の第1識別番号に基づいて読み出された第2結合係数を用いて、前記第1局所場を更新する第2更新回路と、を有するデータ処理装置が提供される。
【0016】
また、1つの実施態様ではプログラムが提供される。
また、1つの実施態様ではデータ処理方法が提供される。
【発明の効果】
【0017】
1つの側面では、本発明は、複数ビットの遷移を効率よく評価できる。
【図面の簡単な説明】
【0018】
図1】等価スピンの例を示す図である。
図2】等価スピンとして選択される2値変数対の例を示す図である。
図3】異値の等価スピンを用いた場合の状態遷移の例を示す図である。
図4】同値の等価スピンを用いた場合の状態遷移の例を示す図である。
図5】不等式制約に寄与するアイテムを表す行列と生成される近傍リストの一例を示す図である。
図6】等価スピンを用いた並列試行の例を示す図である。
図7】第1の実施の形態のデータ処理装置の一例を示す図である。
図8】イネーブル信号の生成例を示す図である。
図9】イネーブル信号の生成処理の一例の流れを示すフローチャートである。
図10】第1の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
図11】第1の実施の形態のデータ処理装置の全体の処理手順の一例を示すフローチャートである。
図12】単一ビット遷移処理の処理手順の一例を示すフローチャートである。
図13】等価スピン遷移処理の処理手順の一例を示すフローチャートである。
図14】第2の実施の形態のデータ処理装置の一例を示す図である。
図15】更新用結合係数メモリに記憶される結合係数を説明する図である。
図16】第2の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
図17】更新処理の処理タイミング例を示すタイミングチャートである。
図18】第2の実施の形態のデータ処理装置の全体の処理手順の一例を示すフローチャートである。
図19】第2の実施の形態のデータ処理装置の単一ビット遷移処理の処理手順の一例を示すフローチャートである。
図20】第3の実施の形態のデータ処理装置の一例を示す図である。
図21】第3の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
図22】データ処理装置の一例であるコンピュータのハードウェア例を示す図である。
【発明を実施するための形態】
【0019】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す各実施の形態のデータ処理装置は、組合せ最適化問題の評価関数に含まれる異値または同値の2以上の2値変数からなる変数群を、1つのスピンに相当する2値変数として扱う。このため、以下では上記変数群を等価スピンと呼ぶ。
【0020】
また、以下では、異値の2以上の2値変数からなる等価スピンを異値の等価スピン、同値の2以上の2値変数からなる等価スピンを同値の等価スピン、ということがある。このような2値変数群を等価スピンとして扱うことで、以下に説明するように、単一ビット遷移処理と同様の並列試行が可能となる。
【0021】
なお、以下の説明では、等価スピンは、2つの2値変数からなるものとして説明するが、等価スピンは、3つ以上の2値変数を含むものであってもよい。
図1は、等価スピンの例を示す図である。
【0022】
図1には、識別番号i,iで表される2つの2値変数からなる等価スピンが示されている。等価スピンは、ハット付きのxで表記されている。以下の例では、等価スピンの値を式(3)で表す。
【0023】
【数3】
【0024】
すなわち、等価スピンの値は、等価スピンに含まれる2つの2値変数のうちの1つの値により代表される。このため、式(3)の値を2つの2値変数からなる変数群の代表値ということもできる。
【0025】
また、以下では、等価スピンの値の変化に伴う評価関数の値の変化量を特定する変数を等価局所場という。以下の例では、異値の等価スピンの等価局所場の値を式(4)で表し、同値の等価スピンの等価局所場の値を式(5)で表す。
【0026】
【数4】
【0027】
【数5】
【0028】
式(4),(5)において、ハット付きのhに識別番号iを付した変数は、等価スピンに含まれる2つの2値変数の一方の値の変化に伴う評価関数の値の変化量を特定する等価局所場である。ハット付きのhに識別番号iを付した変数は、等価スピンに含まれる2つの2値変数の他方の値の変化に伴う評価関数の値の変化量を特定する等価局所場である。
【0029】
また、以下では、複数の等価スピンの間の相互作用の大きさを表す結合係数(以下等価結合係数という)を式(6)で表す。
【0030】
【数6】
【0031】
式(6)において、Wに識別番号iを付した結合係数は、識別番号iの等価スピンに含まれる第1の2値変数が、識別番号jの等価スピンに含まれる第1の2値変数に与える相互作用の大きさを示す。Wに識別番号iを付した結合係数は、識別番号iの等価スピンに含まれる第1の2値変数が識別番号jの等価スピンに含まれる第2の2値変数に与える相互作用の大きさを示す。Wに識別番号iを付した結合係数は、識別番号iの等価スピンに含まれる第2の2値変数が識別番号jの等価スピンに含まれる第1の2値変数に与える相互作用の大きさを示す。Wに識別番号iを付した結合係数は、識別番号iの等価スピンに含まれる第2の2値変数が識別番号jの等価スピンに含まれる第2の2値変数に与える相互作用の大きさを示す。
【0032】
式(4),(5)において、右辺の2つの等価局所場は、それぞれ以下の式(7),(8)で表せる。
【0033】
【数7】
【0034】
【数8】
【0035】
式(7),(8)において、Dは、全2値変数の識別番号の集合を表す。hに識別番号iを付した変数は、識別番号iの2値変数の値の変化に伴う評価関数の値の変化量を特定する局所場である。hに識別番号iを付した変数は、識別番号iの2値変数の値の変化に伴う評価関数の値の変化量を特定する局所場である。式(7),(8)の等価局所場は、等価スピンに含まれる2つの2値変数間の結合係数を0とした場合の局所場と同じである。
【0036】
異値または同値の等価スピンの等価局所場の値は、等価スピンに含まれる2つの2値変数の値がどのように変化しても変化せず、その等価スピンとの間の等価結合係数が0でない等価スピンの値が変化した場合に変化する。等価スピンの等価局所場の初期値は、式(7)、式(8)を用いて算出される。等価スピンの値が変化した場合の等価スピンの等価局所場の値は、差分計算により更新可能である。
【0037】
異値の等価スピンの値の変化量は、以下の式(9)で表せる。
【0038】
【数9】
【0039】
異値の等価スピンの値の変化に伴う評価関数の値の変化量は、以下の式(10)で表せる。
【0040】
【数10】
【0041】
式(10)のように、等価スピンの値の変化に伴う評価関数の値の変化量は、等価スピンの等価局所場と、等価スピンの値の変化量との積により算出できる。
異値の等価スピンの変化に伴い、等価局所場は、以下の式(11)にしたがって更新できる。
【0042】
【数11】
【0043】
同値の等価スピンの値の変化量は、以下の式(12)で表せる。
【0044】
【数12】
【0045】
同値の等価スピンの値の変化に伴う評価関数の値の変化量は、以下の式(13)で表せる。
【0046】
【数13】
【0047】
式(13)のように、等価スピンの値の変化に伴う評価関数の値の変化量は、等価スピンの等価局所場と、等価スピンの値の変化量との積により算出できる。
同値の等価スピンの値の変化に伴い、等価局所場は、以下の式(14)にしたがって更新できる。
【0048】
【数14】
【0049】
図2は、等価スピンとして選択される2値変数対の例を示す図である。
図2(A)は、等価スピンの第1の選択例を示し、図2(B)は、等価スピンの第2の選択例を示している。第1の選択例では、x,xからなる等価スピン1、x,xからなる等価スピン2、x,xからなる等価スピン3、x,xからなる等価スピン4が得られている。第2の選択例では、x,xからなる等価スピン5、x,xからなる等価スピン6、x,xからなる等価スピン7、x,xからなる等価スピン8が得られている。
【0050】
以下に示す各実施の形態のデータ処理装置では、図2のように、全2値変数のうち、一部の2値変数が等価スピンとして選択される。また、データ処理装置は、等価スピンとして選択する2値変数を、第1の選択例から第2の選択例のように、解探索の途中で変更してもよい。なお、全2値変数が、何れかの等価スピンに属するように選択されてもよい。
【0051】
異値の等価スピンを用いるか、同値の等価スピンを用いるかについては、たとえば、以下の点を考慮して決定される。
図3は、異値の等価スピンを用いた場合の状態遷移の例を示す図である。縦軸は評価関数の値を表し、横軸は等価スピンの状態を表している。なお、この例では、評価関数の値がより小さくなる等価スピンの状態が、解として探索されるものとする。
【0052】
ナップサック問題のように、不等式制約をもつ組合せ最適化問題では、不等式制約で結びついた2値変数群を等価スピンとすることが有効である。なお、ナップサック問題は、価値と重さ(または容量)が与えられている複数のアイテムを重量制限(または容量制限)のあるナップサックに入れる場合に、総利益が最大となる入れ方を求める問題である。
【0053】
たとえば、重さの近いある2つのアイテムをナップサックに入れたか否かを表す2値変数対として、図3のように、識別番号i,iで表される2つの2値変数を用いることができる。以下の説明では、2値変数の値が1の場合、アイテムが選択されナップサックに入れられていることを表し、2値変数の値が0の場合、アイテムが選択されずナップサックに入れられていないことを表すものとする。
【0054】
上記2つの2値変数の値が1と0の状態から、2つの2値変数の値が共に1の状態に遷移する場合、図3の例では、評価関数の値が大きくなっている。この状態遷移は、2つのアイテムの両方がナップサックに入ることで、重量制限が満たされなくなり不等式制約違反を生じさせる状態遷移である可能性がある。
【0055】
このような場合、図3の2つの2値変数を異値の等価スピンとすることが好ましい。異値の等価スピンの値が反転する場合、2つの2値変数の値は、(1,0)または(0,1)に変化することになり、上記のような評価関数の値を増加させる状態遷移が避けられるためである。
【0056】
図4は、同値の等価スピンを用いた場合の状態遷移の例を示す図である。縦軸は評価関数の値を表し、横軸は等価スピンの状態を表している。
評価関数に含まれる不等式制約の制約項の係数の符号の決定の仕方など、評価関数の定式化の手法によっては、不等式制約をもつ組合せ最適化問題でも、同値の等価スピンを採用することが好ましい場合もある。
【0057】
図4のように2つの2値変数の値が共に1の状態から、2つの2値変数の値の一方が1、他方が0の状態に遷移する場合、図4の例では、評価関数の値が大きくなっている。
このような場合、図4の2つの2値変数を同値の等価スピンとすることが好ましい。同値の等価スピンの値が反転する場合、2つの2値変数の値は、(1,1)または(0,0)に変化することになり、上記のような評価関数の値を増加させる状態遷移が避けられるためである。
【0058】
複数の不等式制約がある場合、共通に寄与する不等式制約が多い2値変数群を優先的に、等価ペアとしてもよい。共通に寄与する不等式制約が多い状態変数を表す近傍リストを生成する方法の一例として、下記文献に記載されているような方法がある。
【0059】
(文献)S. Umetani, "Exploiting variable associations to configure efficient local search algorithms in large-scale binary integer programs," European Journal of Operational Research 263 (2017) 72-81
図5は、不等式制約に寄与するアイテムを表す行列と生成される近傍リストの一例を示す図である。
【0060】
図5では、10個のアイテムに対して、不等式制約が6つある例が示されている。図5中、左側の行列では、10個のアイテムのそれぞれが、6つの不等式制約のそれぞれに寄与しているか否かが示されている。行列要素aijの値は、j番目のアイテムがi番目の不等式制約に寄与している場合には1、寄与していない場合には0となっている。図5の例では、1番目のアイテムは、2、3、5番目の不等式制約に寄与している。
【0061】
1番目のアイテムと共通に寄与する不等式制約の数は、2、7、8、10番目のアイテムでは2つ、3~6番目のアイテムでは1つである。
この場合、2、7、8、10番目のアイテムに対応する2値変数が、1番目のアイテムに対応する2値変数に対する近傍の2値変数として近傍リストに定義されている。なお、図5の例では、1~10番目のアイテムに対応する2値変数はx1~x10と表記されている。
【0062】
以上のような等価スピンを用いて、組合せ最適化問題をイジングモデルに変換することで、複数ビット遷移を、単一ビット遷移処理と同様の並列試行により可能となる。なお、イジングモデルに変換された問題は、QUBO(Quadratic Unconstrained Binary Optimization)と呼ばれる問題とほぼ同じであり相互に変換可能であるため、以降の説明では両者を区別しない。
【0063】
図6は、等価スピンを用いた並列試行の例を示す図である。図6にはM個の等価スピンを用いた並列試行の例が示されている。
並列試行は、たとえば、記憶回路10a1,10a2,…,10aM、変化量算出回路10b1,10b2,…,10bM、選択回路10cを用いて行われる。
【0064】
記憶回路10a1~10aMのそれぞれは、M個の等価スピンのうちの1つと、その他の等価スピンとの間の等価結合係数を格納する。たとえば、記憶回路10a1は、識別番号1,1で表される2つの2値変数からなる等価スピンと、他の等価スピンとの間の等価結合係数を格納する。等価結合係数は、状態に依存しないため、予め計算しておくことが可能である。
【0065】
変化量算出回路10b1~10bMのそれぞれは、M個の等価スピンのそれぞれの値の変化に伴う評価関数の値の変化量を計算する。変化量の計算は、式(10)または式(13)に示したように、等価局所場と、等価スピンの値の変化量との積を算出することで行われる。異値の等価スピンが用いられる場合、式(4)で表される等価局所場が用いられる。同値の等価スピンが用いられる場合、式(5)で表される等価局所場が用いられる。
【0066】
選択回路10cは、M個の変化量に基づいて、M個の等価スピンのうちの何れかを選択して、選択した等価スピンの識別番号jを出力する。jは、選択された等価スピンの値の変化に伴う等価局所場の更新の際、記憶回路10a1~10aMから等価結合係数を読み出すために用いられる。
【0067】
識別番号jの等価スピンの値が変化したとき、等価局所場は、以下の式(15)にしたがって更新される。
【0068】
【数15】
【0069】
式(15)において等価結合係数は、異値の等価スピンが用いられる場合、前述の式(6)で表される。等価結合係数は、同値2つの2値変数からなる等価スピンが用いられる場合、以下の式(16)で表される。
【0070】
【数16】
【0071】
なお、異値の等価スピンと同値の等価スピンが混在していても、等価局所場の初期値、及び等価結合係数が異なるだけで、並列試行の処理内容は、上記と同じである。
異値の等価スピンの等価局所場の初期値は以下の式(17)で表される。
【0072】
【数17】
【0073】
同値の等価スピンの等価局所場の初期値は以下の式(18)で表される。
【0074】
【数18】
【0075】
異値の等価スピンと同値の等価スピンとの間の等価結合係数は、以下の式(19),(20)で表される。
【0076】
【数19】
【0077】
【数20】
【0078】
式(19)は、jが異値の等価スピンの識別番号である場合の等価結合係数を表している。式(20)は、jが同値の等価スピンの識別番号である場合の等価結合係数を表している。
【0079】
iが異値の等価スピンの識別番号である場合、上段が-で下段が+の符号のうち、上段の符号が用いられる。iが同値の等価スピンの識別番号である場合、上段が-で下段が+の符号のうち、下段の符号が用いられる。
【0080】
次に、第1の実施の形態のデータ処理装置を説明する。
(第1の実施の形態)
第1の実施の形態のデータ処理装置は、以下に示すように、単一ビット遷移処理を行う機能と、上記のような等価スピンを用いた遷移処理(以下、等価スピン遷移処理という)を行う機能とを含む。両機能は切り替え可能である。
【0081】
図7は、第1の実施の形態のデータ処理装置の一例を示す図である。
データ処理装置20は、等価スピン遷移処理を行う等価スピン遷移回路部20aと、単一ビット遷移処理を行う単一ビット遷移回路部20bとを有する。
【0082】
等価スピン遷移回路部20aは、等価結合係数メモリ21、等価スピン更新回路22、等価スピン保持回路23、等価局所場更新回路24、等価局所場保持回路25、ΔE算出回路26、ΔE保持回路27を有する。さらに、等価スピン遷移回路部20aは、イネーブル処理回路28、遷移等価スピン選択回路29を有する。
【0083】
単一ビット遷移回路部20bは、結合係数メモリ30、2値変数更新回路31、2値変数保持回路32、局所場更新回路33、局所場保持回路34、ΔE算出回路35、ΔE保持回路36、遷移2値変数選択回路37を有する。
【0084】
さらに、データ処理装置20は、等価スピンデコーダ回路38、選択回路39、等価スピンイネーブル判定回路40、初期等価局所場算出回路41を有する。これらは、単一ビット遷移処理と、等価スピン遷移処理との間の整合をとるために用いられる。
【0085】
また、データ処理装置20は、ΔE選択回路42、E更新保持回路43、比較回路44、最低値更新保持回路45、制御回路46を有する。
以下、各要素について説明する。
【0086】
等価結合係数メモリ21は、複数(以下M個とする)の等価スピンのそれぞれの間の相互作用の大きさを表すM×M個の等価結合係数を記憶する。等価結合係数は、前述の式(6)、式(16)、式(19)または式(20)で表される。等価結合係数メモリ21は、図6の記憶回路10a1~10aMに相当する。等価結合係数メモリ21は、たとえば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、または、レジスタなどの電子回路である揮発性の記憶装置などによって実現できる。等価結合係数メモリ21は、フラッシュメモリなどの電子回路である不揮発性の記憶装置や、HDD(Hard Disk Drive)などの記憶装置であってもよい。等価スピンの数(=M)や、等価結合係数のビット数などに応じて、上記のような記憶装置の中から適宜、等価結合係数メモリ21として適用される記憶装置が選択可能である。
【0087】
等価スピン更新回路22は、M個の等価スピンのうち、値(等価スピンを構成する2以上の2値変数のうちの1つの値である代表値)の変化が受け入れられた等価スピンの値を更新する。等価スピン更新回路22は、等価スピン保持回路23に保持されているM個の等価スピンの値のうち、遷移等価スピン選択回路29が出力する識別番号により指定される等価スピンの値を、1から0、または0から1に反転(フリップ)することで更新を行う。
【0088】
等価スピン保持回路23は、たとえば、レジスタなどの保持回路を有し、M個の等価スピンの値を保持する。また、等価スピン保持回路23は、等価局所場の更新や評価関数の変化量の計算に用いられる等価スピンの値の変化量を出力する。
【0089】
等価局所場更新回路24は、遷移等価スピン選択回路29が出力する識別番号に基づいて等価結合係数メモリ21から読み出された等価結合係数を用いて、等価局所場保持回路25に保持されている等価局所場を更新する。前述の式(15)にしたがって等価局所場を更新するために、等価局所場更新回路24は、たとえば、乗算器と加算器とを用いて実装可能である。
【0090】
等価局所場保持回路25は、たとえば、レジスタなどの保持回路を有し、M個の等価局所場を保持する。異値の等価スピンの等価局所場は、前述の式(4)で表され、同値の等価スピンの等価局所場は、前述の式(5)で表される。
【0091】
ΔE算出回路26は、等価局所場保持回路25に保持されている等価局所場を用いて、評価関数の値の変化量を、M個の等価スピンのそれぞれに対して算出する。ΔE算出回路26は、図6の変化量算出回路10b1~10bMに相当する。前述の式(13)にしたがって変化量を算出するために、ΔE算出回路26は、たとえば、乗算器を用いて実装可能である。
【0092】
ΔE保持回路27は、たとえば、レジスタなどの保持回路を有し、M個の等価スピンのそれぞれに対して算出された、評価関数の値の変化量を保持する。
イネーブル処理回路28は、後述のイネーブル信号に基づいて、値の変化が許容されていない等価スピンについては、次に説明する遷移等価スピン選択回路29の処理を無効にする。
【0093】
遷移等価スピン選択回路29は、M個の等価スピン(無効にされているものを除く)のそれぞれに対して算出された、評価関数の値の変化量に基づいて、M個の等価スピンの何れかの値の変化を受け入れる。遷移等価スピン選択回路29は、MCMC法にしたがって、値の変化を受け入れる等価スピンを決定する。また、遷移等価スピン選択回路29は、決定した等価スピンの識別番号と、その等価スピンの値の変化に伴う評価関数の値の変化量を出力する。
【0094】
たとえば、遷移等価スピン選択回路29は、ある等価スピンの値の変化に伴う評価関数の値の変化量と0のうち大きい方が、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、その等価スピンの値の変化を許容する。閾値として、たとえば、-log(rand)×Tが用いられる。randは0から1の範囲の一様乱数、Tは温度パラメータの値である。複数の等価スピンの値の変化が許容された場合、遷移等価スピン選択回路29は、ランダムでまたは所定のルールにしたがって、1つの等価スピンを選択し、その識別番号を出力してもよい。
【0095】
遷移等価スピン選択回路29は、評価関数の値のM個の変化量と、閾値に基づいて、値の変化を許容する等価スピンを1つ選択してもよい。このような選択手法は、リジェクションフリーと呼ばれることもある。この手法では、たとえば、遷移等価スピン選択回路29は、M個の変化量のそれぞれについて、0と変化量のうち大きい値を出力するM個のmax関数値を計算する。遷移等価スピン選択回路29は、M個のmax関数値のそれぞれに、Tlog(-log(rand))を加算する。ここでrandは、等価スピンごとに発生させた0から1の範囲の一様乱数である。そして、遷移等価スピン選択回路29は、M個の等価スピンのうち、値が変化したときに最小となる加算結果をもたらす等価スピンの識別番号を出力する。
【0096】
結合係数メモリ30は、評価関数に含まれる複数(以下N個とする)の2値変数のそれぞれの間の相互作用の大きさを表すN×N個の結合係数を記憶する。結合係数メモリ30は、たとえば、DRAM、SRAM、または、レジスタなどの電子回路である揮発性の記憶装置などによって実現できる。結合係数メモリ30は、フラッシュメモリなどの電子回路である不揮発性の記憶装置や、HDDなどの記憶装置であってもよい。
【0097】
2値変数更新回路31は、値の変化が受け入れられた2値変数の値を更新する。2値変数更新回路31は、2値変数保持回路32に保持されているN個の2値変数の値のうち、遷移2値変数選択回路37が出力する識別番号により指定される2値変数の値をフリップすることで更新を行う。
【0098】
2値変数保持回路32は、たとえば、レジスタなどの保持回路を有し、N個の2値変数の値を保持する。また、2値変数保持回路32は、局所場の更新や評価関数の変化量の計算に用いられる、2値変数の値の変化量を出力する。
【0099】
局所場更新回路33は、遷移2値変数選択回路37が出力する識別番号に基づいて結合係数メモリ30から読み出された複数の結合係数の何れかを用いて、局所場を更新する。識別番号jの2値変数の値の変化に伴う局所場の更新は、式(2)に示したhに、WijΔxを加えることで行われる。このような更新を行うために、局所場更新回路33は、たとえば、乗算器と加算器とを用いて実装可能である。
【0100】
局所場保持回路34は、たとえば、レジスタなどの保持回路を有し、N個の局所場を保持する。
ΔE算出回路35は、局所場保持回路34に保持されている局所場を用いて、評価関数の値の変化量を、N個の2値変数のそれぞれに対して算出する。前述の式(2)にしたがって変化量を算出するために、ΔE算出回路35は、たとえば、乗算器を用いて実装可能である。
【0101】
ΔE保持回路36は、たとえば、レジスタなどの保持回路を有し、N個の2値変数のそれぞれに対して算出された、評価関数の値の変化量を保持する。
遷移2値変数選択回路37は、N個の2値変数のそれぞれに対して算出された、評価関数の値の変化量に基づいて、N個の2値変数の何れかの値の変化を受け入れる。遷移2値変数選択回路37は、MCMC法にしたがって、値の変化を受け入れる2値変数を決定する。また、遷移2値変数選択回路37は、決定した2値変数の識別番号と、その2値変数の値の変化に伴う評価関数の値の変化量を出力する。
【0102】
たとえば、遷移2値変数選択回路37は、ある2値変数の値の変化に伴う評価関数の値の変化量と0のうち大きい方が、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、その2値変数の値の変化を許容する。複数の2値変数の値の変化が許容された場合、遷移2値変数選択回路37は、ランダムでまたは所定のルールにしたがって、1つの2値変数を選択し、その識別番号を出力してもよい。また、遷移2値変数選択回路37は、前述のようなリジェクションフリー手法により、値の変化を受け入れる2値変数を決定する回路であってもよい。
【0103】
等価スピンデコーダ回路38は、遷移等価スピン選択回路29が出力した識別番号に基づいて、その識別番号の等価スピンに含まれる2つの2値変数の識別番号を生成し、出力する。等価スピンデコーダ回路38は、たとえば、等価スピンの識別番号と2値変数の識別番号との対応関係を示す情報を保持する保持回路またはメモリなどを用いて実装可能である。
【0104】
選択回路39は、単一ビット遷移処理が行われている場合には、遷移2値変数選択回路37が出力する2値変数の識別番号を選択して出力する。選択回路39は、等価スピンを用いた遷移処理が行われている場合には、等価スピンデコーダ回路38が出力する2つの2値変数の識別番号を選択して出力する。選択回路39は、たとえば、制御回路46による制御のもと、上記の選択を行う。
【0105】
等価スピンイネーブル判定回路40は、遷移2値変数選択回路37または等価スピンデコーダ回路38が出力する2値変数の識別番号に基づいて、各等価スピンの値の変更を許容するか否かを示すイネーブル信号を生成する。イネーブル信号の生成処理の例については後述する(図8図9参照)。
【0106】
初期等価局所場算出回路41は、単一ビット遷移処理から、等価スピン遷移処理に切り替わったときに、2値変数の値と、結合係数及び局所場とを用いて、たとえば、式(17)または式(18)で表される等価局所場の初期値を算出する。初期等価局所場算出回路41は、たとえば、加算器と乗算器を用いて実装可能である。
【0107】
ΔE選択回路42は、単一ビット遷移処理が行われている場合には、遷移2値変数選択回路37が出力する評価関数の値の変化量を選択して出力する。ΔE選択回路42は、等価スピンを用いた遷移処理が行われている場合には、遷移等価スピン選択回路29が出力する評価関数の値の変化量を選択して出力する。ΔE選択回路42は、たとえば、制御回路46による制御のもと、上記の選択を行う。
【0108】
E更新保持回路43は、レジスタなどの保持回路を有し、評価関数の値を保持する。E更新保持回路43は、ΔE選択回路42が選択した変化量を取得し、その変化量により評価関数の値を更新し、出力する。
【0109】
比較回路44は、E更新保持回路43に保持されている評価関数の値と、最低値更新保持回路45に保持されている評価関数の最低値とを比較する。
最低値更新保持回路45は、たとえば、レジスタなどの保持回路を有し、これまでに得られた評価関数の最低値を保持する。最低値更新保持回路45は、比較回路44が、これまでに得られた最低値よりも、E更新保持回路43に保持されている評価関数の値が小さい旨の比較結果を出力した場合、その評価関数の値により最低値を更新する。また、最低値更新保持回路45は、最低値が得られたときの、N個の2値変数の値を保持する。そして、たとえば、所定の終了条件が満たされたときに保持されているN個の2値変数の値が、組合せ最適化問題の解として出力される。
【0110】
制御回路46は、データ処理装置20の各部を制御する。制御回路46は、単一ビット遷移処理と、等価スピン遷移処理とを切り替える制御を行う。たとえば、制御回路46は、単一ビット遷移処理において、2値変数の値の変化が、所定期間受け入れられなかった場合、解が局所解に嵌まっている可能性があるため、等価スピン遷移処理が行われるように切替を行う。
【0111】
制御回路46は、外部から入力された評価関数情報を取得して、評価関数情報に含まれるN×N個の結合係数を結合係数メモリ30に記憶してもよい。また、制御回路46は、N×N個の結合係数に基づいて、前述の式(6)、式(16)、式(19)または式(20)で表される等価結合係数を算出し、等価結合係数を等価結合係数メモリ21に記憶してもよい。また、制御回路46は、N個の2値変数の初期値を決定し、それらを2値変数保持回路32に保持させてもよい。さらに制御回路46は、M個の等価スピンを生成し、それらの初期値を決定し、決定した初期値を等価スピン保持回路23に保持させてもよい。
【0112】
また、制御回路46は、遷移等価スピン選択回路29や遷移2値変数選択回路37が、値の変化を受け入れる等価スピンまたは2値変数を決定する際に用いる閾値を生成してもよい。
【0113】
以上のようなデータ処理装置20の各回路は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路で実現できる。
【0114】
(イネーブル信号の生成処理例)
次に、イネーブル信号の生成処理の例を説明する。
図8は、イネーブル信号の生成例を示す図である。
【0115】
等価スピンイネーブル判定回路40は、図8に示すように、等価スピンごとに、イネーブル信号を生成する。図8では、等価スピンに含まれる第1の2値変数と、第2の2値変数とが示されている。さらに、等価スピンのタイプ(異値の等価スピンであるか同値の等価スピンであるかを示す)が示されている。
【0116】
異値の等価スピンのイネーブル信号(En)は、識別番号がiとiの2値変数の値の排他的論理和により得られる。同値の等価スピンのイネーブル信号(En)は、下付きの識別番号がiとiの2値変数の値の否定排他的論理和により得られる。
【0117】
等価スピンイネーブル判定回路40は、たとえば、イネーブル信号の情報を、図8に示すようなテーブルデータとして図示しないメモリに保持する。
等価スピンイネーブル判定回路40は、遷移2値変数選択回路37が出力する2値変数の識別番号が、等価スピンに含まれている2値変数を示す識別番号である場合、その等価スピンのイネーブル信号の値を反転する。
【0118】
等価スピンイネーブル判定回路40は、等価スピンデコーダ回路38が出力する2つの2値変数の識別番号に応じて、等価スピンのイネーブル信号の値の反転処理を行う。この反転処理は、たとえば、以下のように行われる。
【0119】
2値変数X0,X1からなる同値の等価スピンY0と、2値変数X0,X1からなる異値の等価スピンY1と、2値変数x1,x2からなる異値の等価スピンY2と、2値変数X2,X3からなる異値の等価スピンY3があるとする。また、Y0~Y3のイネーブル信号がEn0~En3であるとする。(X0,X1,X2,X3)=(0,1,1,1)を初期値として考える場合、各等価スピンのイネーブル信号の初期値は、(En0,En1,En2,En3)=(0,1,0,0)である。
【0120】
Y1の値が変化する場合、2値変数の状態は、(X0,X1,X2,X3)=(1,0,1,1)に遷移する。このとき、等価スピンイネーブル判定回路40は、イネーブル信号を(En0,En1,En2,En3)=(0,1,1,0)とする。
【0121】
等価スピンのイネーブル信号の値の反転処理では、ある等価スピンに含まれる2つの2値変数の一方が、他の等価スピンに含まれている場合、当該他の等価スピンのイネーブル信号の値の反転が行われる。上記の例では、Y1に含まれるX0,X1のうち、一方(X1)を含むY2のイネーブル信号(En2)の値が反転されている。
【0122】
また、等価スピンのイネーブル信号の値の反転処理では、等価スピンのタイプが異なるだけで含まれる2つの2値変数が同じ2つの等価スピンの一方の値が反転した場合、イネーブル信号の値は反転されない。上記の例では、Y0,Y1はタイプが異なるだけで共にX0,X1を含んでいる。両等価スピンのイネーブル信号(En0,En1)の値は、0,1のままで反転されていない。なお、値の変化が許容された等価スピンに含まれる2つの2値変数の何れも含まない等価スピンのイネーブル信号(上記の例ではY3のEn3)の値についても反転されない。
【0123】
以上のようなイネーブル信号の生成処理によって、適切なイネーブル信号が得られる。
図9は、イネーブル信号の生成処理の一例の流れを示すフローチャートである。
ステップS10~S14の処理は、データ処理装置20の初期化処理において行われる。
【0124】
ステップS10:M個の等価スピンに関するループ処理が開始する。ループ処理は、i=1から、i<M+1を満たしている間、行われる。
ステップS11:識別番号iの等価スピンのタイプが判定される。たとえば、制御回路46は、予め生成した各等価スピンとそのタイプの情報に基づいて、識別番号iの等価スピンが、異値の等価スピンであるか、同値の等価スピンであるかを判定する。
【0125】
ステップS12:等価スピンが異値の等価スピンであると判定された場合、Enの初期値が、識別番号iの等価スピンに含まれる識別番号がiとiの2値変数の値の排他的論理和により求められる。
【0126】
ステップS13:等価スピンが同値の等価スピンであると判定された場合、Enの初期値が、識別番号がiとiの値の2値変数の否定排他的論理和により得られる。
ステップS12,S13の処理は、たとえば、制御回路46が、識別番号がiとiの2値変数の初期値に対して、排他的論理和または否定排他的論理和の論理演算を行うことで行われる。得られたEnの初期値は、たとえば、図8に示したようなテーブルデータとして、等価スピンイネーブル判定回路40の図示しないメモリに格納される。
【0127】
ステップS14:ステップS12,S13の処理後、i<Mの場合には、iが+1され、ステップS11からの処理が繰り返される。
ステップS15~S25の処理は、データ処理装置20による解の探索中に行われる。
【0128】
ステップS15:等価スピンイネーブル判定回路40は、遷移2値変数選択回路37の出力に基づいて、2値変数の値がフリップするか否かを判定する。等価スピンイネーブル判定回路40は、たとえば、遷移2値変数選択回路37が、値の変化を許容する2値変数の識別番号を出力した場合、2値変数の値がフリップすると判定する。等価スピンイネーブル判定回路40は、2値変数の値がフリップすると判定した場合、ステップS16の処理を行い、2値変数の値がフリップしないと判定した場合、ステップS20の処理を行う。
【0129】
ステップS16:M個の等価スピンに関するループ処理が開始する。ループ処理は、i=1から、i<M+1を満たしている間、行われる。
ステップS17:等価スピンイネーブル判定回路40は、フリップする2値変数が、M個の等価スピンの何れかに含まれるか否かを判定する。たとえば、等価スピンイネーブル判定回路40は、遷移2値変数選択回路37が出力する2値変数の識別番号と、図8に示したようなテーブルデータに基づいて、上記判定を行うことができる。等価スピンイネーブル判定回路40は、フリップする2値変数が、M個の等価スピンの何れかに含まれていると判定した場合、ステップS18の処理を行う。等価スピンイネーブル判定回路40は、フリップする2値変数が、M個の等価スピンの何れかに含まれていないと判定した場合、ステップS19の処理を行う。
【0130】
ステップS18:等価スピンイネーブル判定回路40は、Enの値を反転する。
ステップS19:ステップS17またはステップS18の処理後、i<Mの場合には、iが+1され、ステップS17からの処理が繰り返される。
【0131】
ステップS20:等価スピンイネーブル判定回路40は、等価スピンデコーダ回路38の出力に基づいて、等価スピンの値がフリップするか否かを判定する。等価スピンイネーブル判定回路40は、たとえば、等価スピンデコーダ回路38が、値の変化を許容する等価スピンに含まれる2つの2値変数の識別番号を出力した場合、等価スピンの値がフリップすると判定する。等価スピンイネーブル判定回路40は、等価スピンの値がフリップすると判定した場合、ステップS21の処理を行い、等価スピンの値がフリップしないと判定した場合、ステップS25の処理を行う。
【0132】
ステップS21:M個の等価スピンに関するループ処理が開始する。ループ処理は、i=1から、i<M+1を満たしている間、行われる。
ステップS22:等価スピンイネーブル判定回路40は、フリップする等価スピンに含まれる2つの2値変数の一方が、他の等価スピンに含まれるか否かを判定する。たとえば、等価スピンイネーブル判定回路40は、等価スピンデコーダ回路38が出力する2つの2値変数の識別番号と、図8に示したようなテーブルデータに基づいて、上記判定を行うことができる。等価スピンイネーブル判定回路40は、フリップする等価スピンに含まれる2つの2値変数の一方が、他の等価スピンに含まれていると判定した場合、ステップS23の処理を行う。等価スピンイネーブル判定回路40は、フリップする等価スピンに含まれる2つの2値変数の一方が、他の等価スピンに含まれていないと判定した場合、ステップS24の処理を行う。
【0133】
ステップS23:等価スピンイネーブル判定回路40は、Enの値を反転する。
ステップS24:ステップS22またはステップS23の処理後、i<Mの場合には、iが+1され、ステップS22からの処理が繰り返される。
【0134】
ステップS25:制御回路46は、解を探索する処理の所定の終了条件が満たされたか否かを判定する。所定の終了条件が満たされたと判定された場合、解を探索する処理が終了する。所定の終了条件が満たされていないと判定された場合、ステップS15からの処理が繰り返される。
【0135】
なお、図9に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
(データ処理装置20の全体動作例)
図10は、第1の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
【0136】
図10では、単一ビット遷移処理または等価スピン遷移処理を、最大8つのレプリカを用いて行う例が示されている。単一ビット遷移処理は1単位処理あたりT回繰り返され、等価スピン遷移処理は1単位処理あたりTp回繰り返されている。8つのレプリカは、それぞれ同じ評価関数で表されるイジングモデルである。8つのレプリカでは同じ等価スピンが用いられる。各レプリカに対する処理は、図7に示したようなデータ処理装置20で、パイプライン処理で行うことができる。
【0137】
タイミングt1~t2では、単一ビット遷移処理が行われている。T回の単一ビット遷移処理が終了すると(タイミングt2)、タイミングt2~t3の間で、局所場と等価局所場の初期化処理が行われる。局所場と等価局所場の初期化処理の間は、単一ビット遷移処理と等価スピン遷移処理の繰り返し処理は停止される。
【0138】
局所場と等価局所場の初期化処理が終わると(タイミングt3)、図10の例では、レプリカ番号=2,5のレプリカに対して等価スピン遷移処理が行われる(タイミングt3~t4)。一方、等価スピン遷移処理が行われていない、レプリカ番号=0,1,3,4,6,7のレプリカでは、レプリカ番号=2,5のレプリカの等価スピン遷移処理と並列に、単一ビット遷移処理が行われている。
【0139】
等価スピン遷移処理においてレプリカ番号=2またはレプリカ番号=5のレプリカの等価スピンの値の変化が許容されたとする。このとき、2値変数保持回路32に保持されている、レプリカ番号=2またはレプリカ番号=5のレプリカの当該等価スピンに含まれる2つの2値変数の値も更新される。また、局所場保持回路34に保持されている、レプリカ番号=2またはレプリカ番号=5のレプリカのそれぞれのN個の局所場も、2つの2値変数の値の更新に対応して2回、更新される。レプリカ番号=2またはレプリカ番号=5のレプリカの上記更新処理は、繰り返し回数が1回分の単一ビット遷移処理の間に行われる。
【0140】
等価スピン遷移処理がTp回繰り返され(タイミングt4)、レプリカ番号=2,5のレプリカの等価スピンの値の変化などの単一ビット遷移処理側への反映が完了すると(タイミングt5)、再び、局所場と等価局所場の初期化処理が行われる。
【0141】
局所場と等価局所場の初期化処理が終わると(タイミングt6)、図10の例では、レプリカ番号=0,3,7のレプリカに対して等価スピン遷移処理が行われ、レプリカ番号=1,2,4,5,6のレプリカでは、単一ビット遷移処理が行われている。
【0142】
図11は、第1の実施の形態のデータ処理装置の全体の処理手順の一例を示すフローチャートである。
ステップS30:まず、制御回路46の制御のもと、初期化処理が行われる。初期化処理では、N個の2値変数の初期値の生成、評価関数の値の初期値や局所場の初期値の算出などが行われる。
【0143】
ステップS31:制御回路46は、M個の等価スピンを生成する。たとえば、図3を用いて説明したように、ナップサック問題の解を探索する際、制御回路46は、重さの近い2つのアイテムに対応する2つの2値変数を1つの等価スピンとしてもよい。また、図5を用いて説明したように、制御回路46は、共通に寄与する不等式制約が多い2値変数群を優先的に、等価ペアとしてもよい。
【0144】
さらに、ステップS31の処理では、制御回路46は、等価結合係数の算出や、図9に示したイネーブル信号の初期値の算出などを行う。
ステップS32:制御回路46は、データ・動作設定を行う。たとえば、ステップS32の処理では、制御回路46は、N個の2値変数の初期値を2値変数保持回路32に設定し、N個の局所場の初期値を局所場保持回路34に設定し、評価関数の初期値をE更新保持回路43や最低値更新保持回路45に設定する。また、制御回路46は、M個の等価スピンの初期値を等価スピン保持回路23に設定し、M×M個の等価結合係数を等価結合係数メモリ21に記憶させる。さらに、制御回路46は、図8に示したようなイネーブル信号に関するテーブルデータを等価スピンイネーブル判定回路40に設定する。
【0145】
また、制御回路46は、動作設定として、たとえば、解探索の終了条件などの動作条件の設定を行う。MCMC法として、疑似焼き鈍し法が行われる場合、たとえば、温度パラメータの開始値や終了値、所定の温度変更周期ごとに温度パラメータに乗じる値などの設定が行われる。MCMC法として、レプリカ交換法が行われる場合、たとえば、各レプリカへの温度パラメータの値の設定や、レプリカ交換周期などの設定が行われる。
【0146】
ステップS33:制御回路46の制御のもと、単一ビット遷移処理が行われる。単一ビット遷移処理の手順の例については後述する(図12参照)。
ステップS34:制御回路46は、単一ビット遷移処理を終了するか否かを判定する。たとえば、制御回路46は、所定の繰り返し回数の単一ビット遷移処理が終了した場合、単一ビット遷移処理を終了すると判定する。単一ビット遷移処理を終了すると判定された場合、ステップS35の処理が行われ、単一ビット遷移処理を終了しないと判定された場合、ステップS33の処理が繰り返される。
【0147】
ステップS35:制御回路46は、等価スピン遷移処理を実行するか否かを判定する。たとえば、制御回路46は、単一ビット遷移処理において、2値変数の値の変化が、所定期間受け入れられなかった場合、解が局所解に嵌まっている可能性があるため、等価スピン遷移処理を実行すると判定する。等価スピン遷移処理を実行すると判定された場合、ステップS36の処理が行われ、等価スピン遷移処理を実行しないと判定された場合、ステップS40の処理が行われる。
【0148】
ステップS36:制御回路46は、等価スピン保持回路23に保持されているM個の等価スピンの値を、2値変数保持回路32に保持されてるN個の2値変数の値に整合させる整合処理を行う。
【0149】
ステップS37:初期等価局所場算出回路41は、2値変数の値と、結合係数及び局所場を用いて、たとえば、式(17)または式(18)で表される等価局所場の初期値を算出する。算出された等価局所場の初期値は、等価局所場保持回路25に保持される。
【0150】
ステップS38:制御回路46の制御のもと、等価スピン遷移処理が行われる。等価スピン遷移処理の手順の例については後述する(図13参照)。
ステップS39:制御回路46は、等価スピン遷移処理を終了するか否かを判定する。たとえば、制御回路46は、所定の繰り返し回数の等価スピン遷移処理が終了した場合、等価スピン遷移処理を終了すると判定する。等価スピン遷移処理を終了すると判定された場合、ステップS40の処理が行われ、等価スピン遷移処理を終了しないと判定された場合、ステップS38の処理が繰り返される。
【0151】
なお、MCMC法として、疑似焼き鈍し法が行われる場合、単一ビット遷移処理または等価スピン遷移処理が繰り返される間、制御回路46は、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータの値を小さくしていく。これにより、遷移等価スピン選択回路29や遷移2値変数選択回路37が用いる閾値が更新されていく。
【0152】
MCMC法として、レプリカ交換法が行われる場合、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、単一ビット遷移処理または等価スピン遷移処理が繰り返される。制御回路46は、所定の繰り返し回数ごとに、レプリカ交換を行う。たとえば、制御回路46は、複数のレプリカのうち2つをランダムに選択する。そして、制御回路46は、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値を交換する。制御回路46は、温度パラメータの値を交換する代わりに、選択された2つのレプリカの間で、N個の2値変数の値またはM個の等価スピンの値を交換してもよい。
【0153】
ステップS40:制御回路46は、解探索の終了条件が満たされたか否かを判定する。解探索の終了条件が満たされたと判定された場合、ステップS41の処理が行われ、解探索の終了条件が満たされていないと判定された場合、ステップS33からの処理が繰り返される。
【0154】
ステップS41:制御回路46の制御のもと、解探索の探索結果が出力される。その後、探索処理が終了する。ステップS41の処理では、たとえば、終了条件が満たされたときに、最低値更新保持回路45に保持されているN個の2値変数の値が、組合せ最適化問題の解として出力される。制御回路46は、解を図示しない表示装置に表示させてもよいし、図示しない通信回路によって外部の装置へ解を送信させてもよい。
【0155】
(単一ビット遷移処理の処理手順)
図12は、単一ビット遷移処理の処理手順の一例を示すフローチャートである。
ステップS50:ΔE算出回路35は、局所場保持回路34に保持されている局所場を用いて、評価関数の値の変化量を、N個の2値変数のそれぞれに対して算出する。
【0156】
ステップS51:遷移2値変数選択回路37は、たとえば、N個の2値変数のそれぞれに対して算出された、評価関数の値の変化量に基づいて、N個の2値変数のそれぞれについて、値の変化の可否(遷移受入可否)を判定する。
【0157】
ステップS52:遷移2値変数選択回路37は、複数の2値変数の値の変化が許容された場合、ランダムでまたは所定のルールにしたがって、1つの2値変数を選択する。
ステップS53:制御回路46は、遷移2値変数選択回路37の出力に基づいて、2値変数の値のフリップの可否を判定する。フリップが可と判定された場合、ステップS54の処理が行われ、フリップが不可と判定された場合、1回の単一ビット遷移処理が終了する。
【0158】
ステップS54:2値変数更新回路31は、遷移2値変数選択回路37が選択した2値変数の値を更新する。
ステップS55:E更新保持回路43は、遷移2値変数選択回路37が出力する評価関数の変化量を用いて、評価関数の値を更新する。
【0159】
ステップS56:局所場更新回路33は、遷移2値変数選択回路37が出力する識別番号に基づいて結合係数メモリ30から読み出された複数の結合係数の何れかを用いて、N個の局所場を更新する。
【0160】
ステップS57:等価スピンイネーブル判定回路40は、図9に示した処理にしたがって、イネーブル信号の更新を行う。
これにより、1回の単一ビット遷移処理が終了する。
【0161】
(等価スピン遷移処理の処理手順)
図13は、等価スピン遷移処理の処理手順の一例を示すフローチャートである。
ステップS60:ΔE算出回路26は、等価局所場保持回路25に保持されている等価局所場を用いて、評価関数の値の変化量を、M個の等価スピンのそれぞれに対して算出する。
【0162】
ステップS61:遷移等価スピン選択回路29は、たとえば、M個の等価スピンのそれぞれに対して算出された、評価関数の値の変化量に基づいて、イネーブル信号が1である等価スピンのそれぞれについて、値の変化の可否(遷移受入可否)を判定する。なお、イネーブル信号が0である等価スピンについては、遷移受入可否の判定は行われない。
【0163】
ステップS62:遷移等価スピン選択回路29は、複数の等価スピンの値の変化が許容された場合、ランダムでまたは所定のルールにしたがって、1つの等価スピンを選択する。
【0164】
ステップS63:制御回路46は、遷移等価スピン選択回路29の出力に基づいて、等価スピンの値のフリップの可否を判定する。フリップが可と判定された場合、ステップS64の処理が行われ、フリップが不可と判定された場合、1回の等価スピン遷移処理が終了する。
【0165】
ステップS64:等価スピン更新回路22は、遷移等価スピン選択回路29が選択した等価スピンの値を更新する。
ステップS65:E更新保持回路43は、遷移等価スピン選択回路29が出力する評価関数の変化量を用いて、評価関数の値を更新する。
【0166】
ステップS66:2値変数更新回路31は、遷移等価スピン選択回路29が選択した等価スピンに含まれる2つの2値変数の値を更新する。
ステップS67:局所場更新回路33は、等価スピンデコーダ回路38が出力する2つの識別番号に基づいて結合係数メモリ30から読み出された複数の結合係数の何れかを用いて、N個の局所場を2回更新する。さらに、等価局所場更新回路24は、遷移等価スピン選択回路29が出力する識別番号に基づいて等価結合係数メモリ21から読み出された複数の等価結合係数の何れかを用いて、M個の等価局所場を更新する。
【0167】
ステップS68:等価スピンイネーブル判定回路40は、図9に示した処理にしたがって、イネーブル信号の更新を行う。
これにより、1回の等価スピン遷移処理が終了する。
【0168】
なお、図11図13に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のようにデータ処理装置20の等価スピン保持回路23は、評価関数に含まれる異値または同値の2つの2値変数からなる複数の変数群(等価スピン)のそれぞれの、2以上の2値変数のうちの1つの値である代表値(等価スピンの値)を保持する。また、等価結合係数メモリ21は、等価スピンのそれぞれの間の相互作用の大きさを表す複数の等価結合係数を記憶する。また、等価局所場保持回路25は、複数の等価スピンのそれぞれの値の変化に伴う、評価関数の値の第1変化量の特定に用いられる等価局所場を保持する。ΔE算出回路26は、等価局所場を用いて、第1変化量を、複数の等価スピンのそれぞれに対して算出する。また、遷移等価スピン選択回路29は、複数の等価スピンのそれぞれに対して算出された上記変化量に基づいて、複数のスピンの何れかの値の変化を受け入れる。等価スピン更新回路22は、複数の等価スピンのうち、値の変化が受け入れられた等価スピンの値を更新する。さらに、等価局所場更新回路24は、等価結合係数メモリ21に記憶されている複数の等価結合係数のうち、値の変化が受け入れられた等価スピンの識別番号に基づいて読み出された等価結合係数を用いて、等価局所場を更新する。
【0169】
このようなデータ処理装置20によれば、2つの2値変数からなる等価スピンを1つの2値変数として扱えるため、2ビット遷移処理(等価スピンの値の変化は2ビット遷移に相当する)を、単一ビット遷移処理と同様の並列試行により処理できる。これにより、2ビットの遷移を並列試行により効率よく評価することが可能となる。また、並列試行が可能となるため、探索効率が上がり、求解性能が向上する。
【0170】
さらに、データ処理装置20は、上記複数の変数群を含む、評価関数の複数の2値変数のそれぞれの値の変化に伴う、評価関数の値の変化量に基づいて、複数の2値変数の何れか1つの値の変化を受け入れる単一ビット遷移回路部20bと、制御回路46を有する。制御回路46は、等価スピン遷移回路部20aによる等価スピン遷移処理と、単一ビット遷移回路部20bによる単一ビット遷移処理とを切り替える。これにより、単一ビット遷移処理で解が局所解に嵌まったときに、等価スピン遷移処理に切り替えるなど、状況に応じた柔軟な探索を効率よく実行できる。
【0171】
また、データ処理装置20は、遷移等価スピン選択回路29が出力する識別番号に基づいて、その識別番号で特定される等価スピンに含まれる2つの2値変数を特定する識別番号を出力する等価スピンデコーダ回路38を、さらに有する。そして、単一ビット遷移回路部20bは、それらの識別番号に対応する2つの2値変数の値を更新する。これにより、等価スピン遷移回路部20aでの等価スピンの値の変化を、単一ビット遷移回路部20bが扱う2値変数に反映させることができる。
【0172】
さらに、データ処理装置20は、前述のように等価スピンイネーブル判定回路40を有する。等価スピンイネーブル判定回路40は、複数の等価スピンの値の変化を許容するか否かを示すイネーブル信号を生成する。等価スピンイネーブル判定回路40は、単一ビット遷移回路部20bが複数の2値変数のうち、ある2値変数の値の変化を受け入れた場合、複数の等価スピンのうち、その2値変数を含む等価スピンに関するイネーブル信号の値を反転させる。これにより、等価スピン遷移回路部20aが扱う2値変数と、単一ビット遷移回路部20bが扱う異値または同値の等価スピンを整合させることができる。
【0173】
また、データ処理装置20は、初期等価局所場算出回路41を有している。初期等価局所場算出回路41は、単一ビット遷移回路部20bの処理により得られた、複数の2値変数の値と、複数の結合係数及び局所場を用いて、等価局所場の初期値を算出する。これにより、単一ビット遷移処理の結果を反映させた等価スピン遷移処理が可能になる。
【0174】
なお、データ処理装置20は、3つ以上の2値変数からなる等価スピンを用いることで、3ビット以上の遷移処理に対応させることもできる。その場合、等価結合係数や、等価局所場を求める式を適宜変更すればよい。
【0175】
たとえば、データ処理装置20は、まず、3つの2値変数のうち、異値または同値の2つの2値変数からなる等価スピンの等価結合係数、等価局所場を算出する。その後、データ処理装置20は、この等価スピンを1つの2値変数と見做して、他の2値変数との間で、同様に等価結合係数、等価局所場を求めれば、3つの2値変数からなる等価スピンを実現できる。
【0176】
このようなデータ処理装置20は、組合せ最適化問題に変換できる現代社会における様々な問題を解く際に、高速に精度のよい解を得るための手段として、役立つことが期待できる。
【0177】
(第2の実施の形態)
図14は、第2の実施の形態のデータ処理装置の一例を示す図である。図14において、図7に示したデータ処理装置20と同じ要素については同一符号が付されている。なお、図14において、図7に示したΔE選択回路42、E更新保持回路43、比較回路44、最低値更新保持回路45は図示が省略されている。
【0178】
第2の実施の形態のデータ処理装置50は、単一ビット遷移処理中に、2値変数の値の変化が生じるたびに、等価スピンの値と等価局所場に、その変化を反映させる機能を有する。
【0179】
第2の実施の形態のデータ処理装置50は、等価スピン遷移回路部50aが、第1の実施の形態のデータ処理装置20の等価スピン遷移回路部20aと異なっている。
等価スピン遷移回路部50aは、等価結合係数メモリ21と、更新用結合係数メモリ51a,51bを含むメモリ部51と、2値変数対更新保持回路52を有する。
【0180】
更新用結合係数メモリ51a,51bは、N×N個の結合係数のうち、M個の等価スピンに含まれる2値変数が関係する複数の結合係数を記憶する。
図15は、更新用結合係数メモリに記憶される結合係数を説明する図である。
【0181】
更新用結合係数メモリ51aは、N個の2値変数のうち、識別番号がiの2値変数と、他の2値変数との間の相互作用の大きさを表す結合係数を記憶する。更新用結合係数メモリ51bは、N個の2値変数のうち、識別番号がiの2値変数と、他の2値変数との間の相互作用の大きさを表す結合係数を記憶する。
【0182】
これらの結合係数は、単一ビット遷移処理中に生じる2値変数の値の変化に応じて、等価局所場を更新する際に用いられる。
2値変数対更新保持回路52は、M個の等価スピンのそれぞれに含まれる2つの2値変数(2値変数対)を保持する。さらに、2値変数対更新保持回路52は、保持している2値変数のうち、選択回路39が出力する1つまたは2つの識別番号に対応する2値変数の値を更新する。さらに、2値変数対更新保持回路52は、単一ビット遷移処理中に生じる2値変数の値の変化量を出力する。
【0183】
等価局所場更新回路53は、第1の実施の形態のデータ処理装置20の等価局所場更新回路24と同様に、等価スピンの値の変化に応じて等価局所場を更新する。
さらに、等価局所場更新回路53は、単一ビット遷移処理による2値変数の値の変化に応じて等価局所場を更新する。等価局所場更新回路53は、単一ビット遷移処理時に選択回路39が選択する2値変数の識別番号に基づいて更新用結合係数メモリ51a,51bから読み出された結合係数を用いて、等価局所場保持回路25に保持されている等価局所場を更新する。このとき選択された識別番号をjとすると、以下の式(21)に基づいて等価局所場が更新される。
【0184】
【数21】
【0185】
等価スピンイネーブル判定回路54は、選択回路39が出力する1つまたは2つの識別番号に基づいて、第1の実施の形態のデータ処理装置20の等価スピンイネーブル判定回路40と同様に図9に示したような処理を行う。
【0186】
(データ処理装置50の全体動作例)
図16は、第2の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
【0187】
図16では、単一ビット遷移処理または等価スピン遷移処理を、最大8つのレプリカを用いて行う例が示されている。単一ビット遷移処理と等価スピン遷移処理はそれぞれ1単位処理あたりT回繰り返されている。各レプリカに対する処理は、図14に示したようなデータ処理装置50で、パイプライン処理で行うことができる。
【0188】
タイミングt10~t11では、単一ビット遷移処理が行われている。等価スピン遷移処理側では、単一ビット遷移処理による2値変数の値の変化に応じて、等価スピンに含まれる2値変数の値とM個の等価局所場の更新が行われている。ただし、等価スピン遷移処理自体は行われていない。
【0189】
T回の単一ビット遷移処理が終了すると(タイミングt11)、局所場と等価局所場の初期化処理を行わず、次の単位処理(タイミングt11~t12)が行われる。
図16の例では、タイミングt11~t12では、レプリカ番号=2,5のレプリカに対して等価スピン遷移処理が行われる。一方、等価スピン遷移処理が行われていない、レプリカ番号=0,1,3,4,6,7のレプリカでは、レプリカ番号=2,5のレプリカの等価スピン遷移処理と並列に、単一ビット遷移処理が行われている。
【0190】
等価スピン遷移処理においてレプリカ番号=2,5のレプリカの等価スピンの値の変化が許容されると、2値変数保持回路32に保持されている、レプリカ番号=2,5のレプリカの当該等価スピンに含まれる2つの2値変数の値も更新される。レプリカ番号=2,5のレプリカの2つの2値変数の値の更新は、繰り返し回数が1回分の単一ビット遷移処理の間に行うことができる。同様に、2値変数対更新保持回路52に保持されている、レプリカ番号=2,5のレプリカの当該等価スピンに含まれる2つの2値変数の値も更新される。
【0191】
2値変数対更新保持回路52に保持されているレプリカ番号=0,1,3,4,6,7のレプリカの2値変数のうち、単一ビット遷移処理によって値が変化したものは更新される。また、その更新に伴い、等価局所場も更新される。
【0192】
図16の例では、次の単位処理(タイミングt12~)として、レプリカ番号=0,3,7のレプリカに対して等価スピン遷移処理が行われ、レプリカ番号=1,2,4,5,6のレプリカでは、単一ビット遷移処理が行われている。
【0193】
図17は、更新処理の処理タイミング例を示すタイミングチャートである。なお、図17では、処理タイミングを調整するためのFIFO(First In First Out)が図示されている。
【0194】
単一ビット遷移処理における試行(遷移受入可否判定など)が行われ(タイミングt20)、値の変化が許容された2値変数がある場合、その2値変数の値とN個の局所場が更新される(タイミングt21)。このとき、等価スピン遷移処理側でも、単一ビット遷移処理による2値変数の値の変化に応じて、等価スピンに含まれる2値変数の値とM個の等価局所場の更新が行われる。
【0195】
等価スピン遷移処理における試行(タイミングt22)で、値の変化が許容された等価スピンがある場合、その等価スピンの値とM個の等価局所場が更新される(タイミングt23~t24)。このとき単一ビット遷移処理側においても、その等価スピンに含まれる2つの2値変数の値の更新と、N個の局所場の更新が行われる(タイミングt23~t25)。
【0196】
図18は、第2の実施の形態のデータ処理装置の全体の処理手順の一例を示すフローチャートである。
ステップS70~S72の処理は、図11に示したステップS30~S32の処理と同じである。
【0197】
ステップS73:制御回路46の制御のもと、単一ビット遷移処理が行われる。単一ビット遷移処理の手順の例については後述する(図19参照)。
ステップS74:制御回路46は、単一ビット遷移処理を終了するか否かを判定する。たとえば、制御回路46は、所定の繰り返し回数の単一ビット遷移処理が終了した場合、単一ビット遷移処理を終了すると判定する。単一ビット遷移処理を終了すると判定された場合、ステップS75の処理が行われ、単一ビット遷移処理を終了しないと判定された場合、ステップS73の処理が繰り返される。
【0198】
ステップS75:制御回路46は、等価スピン遷移処理を実行するか否かを判定する。等価スピン遷移処理を実行すると判定された場合、ステップS76の処理が行われ、等価スピン遷移処理を実行しないと判定された場合、ステップS78の処理が行われる。
【0199】
ステップS76~S79の処理は、図11に示したステップS38~S41の処理と同じである。
(単一ビット遷移処理の処理手順)
図19は、第2の実施の形態のデータ処理装置の単一ビット遷移処理の処理手順の一例を示すフローチャートである。
【0200】
ステップS80~S86の処理は、図12に示したステップS50~S56の処理と同じである。
ステップS87:2値変数対更新保持回路52は、保持している等価スピンに含まれる2値変数のうち、単一ビット遷移処理中に値が変化する2値変数の値を更新する。
【0201】
ステップS88:等価局所場更新回路53は、単一ビット遷移処理による2値変数の値の変化に応じて等価局所場を更新する。
ステップS89:等価スピンイネーブル判定回路54は、ステップS87の処理で生じた2値変数の値の変化に応じて、イネーブル信号の更新を行う。これにより、1回の単一ビット遷移処理が終了する。
【0202】
なお、図18図19に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
以上のような第2の実施の形態のデータ処理装置50によれば、第1の実施の形態のデータ処理装置20と同様の効果が得られる。さらに、等価スピン遷移回路部50aが、複数の結合係数のうち、等価スピンに含まれる2値変数が関係する複数の結合係数を記憶する更新用結合係数メモリ51a,51bを含む。そして、等価局所場更新回路53は、単一ビット遷移回路部20bが複数の2値変数のうちのある2値変数の値の変化を受け入れたとき、その2値変数の値の変化量と、その2値変数が関係する複数の結合係数の何れかを用いて、等価局所場を更新する。これにより、単一ビット遷移処理から等価スピン遷移処理に切り替わるときの、等価局所場の初期化処理が不要になる。
【0203】
(第3の実施の形態)
図20は、第3の実施の形態のデータ処理装置の一例を示す図である。図20において、図14に示したデータ処理装置50と同じ要素については同一符号が付されている。なお、図20において、図7に示したE更新保持回路43、比較回路44、最低値更新保持回路45は図示が省略されている。
【0204】
第3の実施の形態のデータ処理装置60は、図14に示した等価スピン遷移回路部50aと単一ビット遷移回路部20bの回路の一部を共通化したものである。
データ処理装置60は、等価結合係数メモリ21、結合係数メモリ30、更新用結合係数メモリ51a,51bを含むメモリ部61と、等価スピン/2値変数更新回路62、等価スピン/2値変数保持回路63を有する。さらに、データ処理装置60は、等価局所場/局所場更新回路64、等価局所場/局所場保持回路65、ΔE算出回路66、ΔE保持回路67、遷移等価スピン/2値変数選択回路68を有する。
【0205】
等価スピン/2値変数更新回路62は、図14に示した等価スピン更新回路22と2値変数更新回路31とを共通化したものである。
等価スピン/2値変数保持回路63は、図14に示した等価スピン保持回路23と2値変数保持回路32とを合わせたものである。つまり、等価スピン/2値変数保持回路63は、M個の等価スピンの値と、N個の2値変数の値とを保持する。
【0206】
等価局所場/局所場更新回路64は、図14に示した等価局所場更新回路53と、局所場更新回路33とを共通化したものである。
等価局所場/局所場保持回路65は、図14に示した等価局所場保持回路25と、局所場保持回路34とを合わせたものである。つまり、等価局所場/局所場保持回路65は、M個の等価局所場と、N個の局所場とを保持する。
【0207】
ΔE算出回路66は、図14に示したΔE算出回路26,35を共通化したものである。
ΔE保持回路67は、図14に示したΔE保持回路27,36を合わせたものである。つまり、ΔE保持回路67は、M個の等価スピンのそれぞれの値の変化に伴う評価関数の変化量と、N個の2値変数のそれぞれの値の変化に伴う評価関数の値の変化量を保持する。
【0208】
遷移等価スピン/2値変数選択回路68は、図14に示した遷移等価スピン選択回路29と、遷移2値変数選択回路37とを共通化したものである。
(データ処理装置60の全体動作例)
図21は、第3の実施の形態のデータ処理装置の全体動作例を示すタイミングチャートである。
【0209】
第3の実施の形態のデータ処理装置60では、単一ビット遷移処理における更新処理と、等価スピン遷移処理における更新処理とが時分割で行われる。図16に示したタイミングチャートと同様に、図21には、単一ビット遷移処理または等価スピン遷移処理が最大8つのレプリカを用いて行われている。
【0210】
図21の例では、初めの単位処理では、全レプリカで単一ビット遷移処理が行われている。2番目の単位処理では、レプリカ番号=2,5のレプリカで等価スピン遷移処理が行われ、それ以外のレプリカで単一ビット遷移処理が行われている。3番目の単位処理では、レプリカ番号=0,3,7のレプリカで等価スピン遷移処理が行われ、それ以外のレプリカで単位ビット遷移処理が行われている。“S”は、単一ビット遷移処理に関する処理、“P”は等価スピンに関する処理を表している。
【0211】
初めの単位処理において、単一ビット遷移処理における試行(遷移受入可否判定など)が行われ(タイミングt30)、値の変化が許容された2値変数がある場合、その値とN個の局所場が更新される(タイミングt31~t32)。さらに、等価スピン遷移処理側でも、単一ビット遷移処理による2値変数の値の変化に応じて、等価スピンに含まれる2値変数の値と等価局所場の更新が行われる(タイミングt32~t33)。なお、黒塗りの期間は、アイドル期間を表している。
【0212】
2番目の単位処理において、単一ビット遷移処理における2値変数の値の変化に伴う更新処理は、初めの単位処理と同様に行われる。等価スピン遷移処理における試行(タイミングt34)で、値の変化が許容された等価スピンがある場合、その等価スピンの値とM個の等価局所場が更新される(タイミングt35~t36)。そして、単一ビット遷移処理側においても、その等価スピンに含まれる2つの2値変数の値の更新と、N個の局所場の更新が行われる(タイミングt36~t37)。
【0213】
以上のような第3の実施の形態のデータ処理装置60によれば、第2の実施の形態のデータ処理装置50と同様の効果が得られる。さらに、単位ビット遷移処理を行う回路と、等価スピン遷移処理を行う回路との共通化を図ることで、回路量(演算器の数など)を減らすことができる。
【0214】
なお、第1の実施の形態のデータ処理装置20に対しても上記のような回路の共通化を図ってもよい。
なお、上記の各実施の形態の処理内容(たとえば、図9図11図13図18図19など)は、データ処理装置にプログラムを実行させることでソフトウェアにて実現できる。
【0215】
プログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)及びHDDが含まれる。光ディスクには、CD(Compact Disc)、CD-R(Recordable)/RW(Rewritable)、DVD(Digital Versatile Disc)及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体にプログラムをコピーして実行してもよい。
【0216】
図22は、データ処理装置の一例であるコンピュータのハードウェア例を示す図である。
コンピュータ70は、プロセッサ71、RAM72、HDD73、GPU(Graphics Processing Unit)74、入力インタフェース75、媒体リーダ76及び通信インタフェース77を有する。上記ユニットは、バスに接続されている。
【0217】
プロセッサ71は、HDD73に記憶されたプログラムやデータの少なくとも一部をRAM72にロードし、プログラムを実行する。なお、プロセッサ71は、たとえば、複数のプロセッサコアを備えてもよい。また、コンピュータ70は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。プロセッサ71として、CPU(Central Processing Unit)、GPU、DSP(Digital Signal Processor)などを用いることができる。
【0218】
RAM72は、プロセッサ71が実行するプログラムやプロセッサ71が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、コンピュータ70は、RAM72以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0219】
HDD73は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、前述のような組合せ最適化問題の解を探索する処理をコンピュータ70に実行させるプログラムが含まれる。なお、コンピュータ70は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0220】
GPU74は、プロセッサ71からの命令にしたがって、コンピュータ70に接続されたディスプレイ74aに画像(たとえば、組合せ最適化問題の計算結果などを表す画像)を出力する。ディスプレイ74aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0221】
入力インタフェース75は、コンピュータ70に接続された入力デバイス75aから入力信号を取得し、プロセッサ71に出力する。入力デバイス75aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、コンピュータ70に、複数の種類の入力デバイスが接続されていてもよい。
【0222】
媒体リーダ76は、記録媒体76aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体76aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、FDやHDDが含まれる。光ディスクには、CDやDVDが含まれる。
【0223】
媒体リーダ76は、たとえば、記録媒体76aから読み取ったプログラムやデータを、RAM72やHDD73などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、プロセッサ71によって実行される。なお、記録媒体76aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体76aやHDD73を、コンピュータ読み取り可能な記録媒体ということがある。
【0224】
通信インタフェース77は、ネットワーク77aに接続され、ネットワーク77aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース77は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0225】
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0226】
たとえば、上記の説明では、状態変数は0または1の値としたが、適宜式を変換することで、状態変数として-1または+1の値をもつ変数を用いることもできる。
【符号の説明】
【0227】
1~8 等価スピン
10a1~10aM 記憶回路
10b1~10bM 変化量算出回路
10c 選択回路
20 データ処理装置
20a 等価スピン遷移回路部
20b 単一ビット遷移回路部
21 等価結合係数メモリ
22 等価スピン更新回路
23 等価スピン保持回路
24 等価局所場更新回路
25 等価局所場保持回路
26,35 ΔE算出回路
27,36 ΔE保持回路
28 イネーブル処理回路
29 遷移等価スピン選択回路
30 結合係数メモリ
31 2値変数更新回路
32 2値変数保持回路
33 局所場更新回路
34 局所場保持回路
37 遷移2値変数選択回路
38 等価スピンデコーダ回路
39 選択回路
40 等価スピンイネーブル判定回路
41 初期等価局所場算出回路
42 ΔE選択回路
43 E更新保持回路
44 比較回路
45 最低値更新保持回路
46 制御回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22