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

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

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

特開2024-82550データ処理装置、プログラム及びデータ処理方法
<>
  • 特開-データ処理装置、プログラム及びデータ処理方法 図1
  • 特開-データ処理装置、プログラム及びデータ処理方法 図2
  • 特開-データ処理装置、プログラム及びデータ処理方法 図3
  • 特開-データ処理装置、プログラム及びデータ処理方法 図4
  • 特開-データ処理装置、プログラム及びデータ処理方法 図5
  • 特開-データ処理装置、プログラム及びデータ処理方法 図6
  • 特開-データ処理装置、プログラム及びデータ処理方法 図7
  • 特開-データ処理装置、プログラム及びデータ処理方法 図8
  • 特開-データ処理装置、プログラム及びデータ処理方法 図9
  • 特開-データ処理装置、プログラム及びデータ処理方法 図10
  • 特開-データ処理装置、プログラム及びデータ処理方法 図11
  • 特開-データ処理装置、プログラム及びデータ処理方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082550
(43)【公開日】2024-06-20
(54)【発明の名称】データ処理装置、プログラム及びデータ処理方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20240613BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022196481
(22)【出願日】2022-12-08
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】印 芳
(72)【発明者】
【氏名】渡部 康弘
(72)【発明者】
【氏名】田村 泰孝
(57)【要約】
【課題】組合せ最適化問題の解の探索効率を向上させる。
【解決手段】処理部12は、組合せ最適化問題の解の探索時に、複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、第1状態変数の値の変化を許容すると判定した場合に行われる更新処理と、制約条件の違反有無を表す複数の補助変数のうち第1補助変数の値の変化を許容するか否かを判定する処理と、第1補助変数の値の変化を許容すると判定した場合に行われる更新処理と、を含む探索処理を繰り返し、複数の制約条件のそれぞれの重みを表す係数により重み付けられた複数の制約項の値とイジング型の評価関数の値との合計値、または制約条件の違反の有無に基づいて、当該係数の値を調整する。
【選択図】図1
【特許請求の範囲】
【請求項1】
組合せ最適化問題の解を評価するイジング型の評価関数に含まれる複数の状態変数の値と、前記組合せ最適化問題の複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の制約条件のそれぞれの重みを表す係数により重み付けられた複数の制約項の値と前記評価関数の値との合計値と、前記複数の状態変数のそれぞれの値が変化する場合の前記合計値の変化量を表す第1局所場と、前記複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場と、前記係数の値と、を記憶する記憶部と、
前記解の探索時に、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合に前記第1状態変数の値、前記第1局所場、前記第2局所場及び前記合計値を更新する処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合に前記第1補助変数の値及び前記第1局所場を更新する処理と、を含む探索処理を繰り返し、前記合計値または前記違反の有無に基づいて、前記係数の値を調整する処理部と、
を有するデータ処理装置。
【請求項2】
前記係数の値を調整する処理は、前記探索処理が所定回数行われるたびに実行される、請求項1に記載のデータ処理装置。
【請求項3】
前記処理部は、前記係数の値の調整時における前記合計値が、前記調整時より前に得られた、前記複数の制約条件の何れも違反していない状態の前記合計値の最小値以上である場合、前記複数の制約条件のそれぞれの前記係数の値を減少させる、請求項1に記載のデータ処理装置。
【請求項4】
前記処理部は、前記係数の値の調整時における前記合計値が、前記調整時より前に得られた、前記複数の制約条件の何れも違反していない状態の前記合計値の最小値より小さく、かつ、前記複数の制約条件のうち前記違反が生じている制約条件がある場合、前記制約条件の前記係数の値を増加させる、請求項1に記載のデータ処理装置。
【請求項5】
前記処理部は、前記係数の値の調整量に基づいて、前記第1局所場及び前記合計値を補正する、請求項1に記載のデータ処理装置。
【請求項6】
前記処理部は、前記第1状態変数と前記第1補助変数との間の重み値と、前記調整量と、前記第1補助変数の値との積を、前記第1状態変数の値が変化する場合の前記変化量を表す前記第1局所場から減ずることで、前記第1局所場を補正する、請求項5に記載のデータ処理装置。
【請求項7】
前記処理部は、前記調整量と、前記第2局所場と、前記第1補助変数との積を前記合計値に加えることで、前記合計値を補正する、請求項5に記載のデータ処理装置。
【請求項8】
組合せ最適化問題の解の探索時に、
記憶部に記憶されている、前記解を評価するイジング型の評価関数に含まれる複数の状態変数の値と、前記組合せ最適化問題の複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の制約条件のそれぞれの重みを表す係数により重み付けられた複数の制約項の値と前記評価関数の値との合計値と、前記複数の状態変数のそれぞれの値が変化する場合の前記合計値の変化量を表す第1局所場と、前記複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場と、前記係数の値のうち、前記第1局所場に基づいて、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合に前記第1状態変数の値、前記第1局所場、前記第2局所場及び前記合計値を更新する処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合に前記第1補助変数の値及び前記第1局所場を更新する処理と、を含む探索処理を繰り返し、
前記合計値または前記違反の有無に基づいて、前記係数の値を調整する、
処理をコンピュータに実行させるプログラム。
【請求項9】
記憶部が、組合せ最適化問題の解を評価するイジング型の評価関数に含まれる複数の状態変数の値と、前記組合せ最適化問題の複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の制約条件のそれぞれの重みを表す係数により重み付けられた複数の制約項の値と前記評価関数の値との合計値と、前記複数の状態変数のそれぞれの値が変化する場合の前記合計値の変化量を表す第1局所場と、前記複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場と、前記係数の値と、を記憶し、
前記解の探索時に、
処理部が、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合に前記第1状態変数の値、前記第1局所場、前記第2局所場及び前記合計値を更新する処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合に前記第1補助変数の値及び前記第1局所場を更新する処理と、を含む探索処理を繰り返し、
前記処理部が、前記合計値または前記違反の有無に基づいて、前記係数の値を調整する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
【背景技術】
【0002】
組合せ最適化問題の解を探索する際に、組合せ最適化問題を、磁性体のスピンの振る舞いを表すイジングモデルに変換する手法がある。イジングモデルは、組合せ最適化問題の解を評価するイジング型の評価関数で表される。イジング型の評価関数は、複数の状態変数(イジングモデルの状態を表す)と複数の重み値を含む。イジング型の評価関数では、状態変数は、0か1(または-1か+1)の値を取る2値変数である。状態変数はビットと表記されてもよい。また、イジング型の評価関数の値は、イジングモデルのエネルギーということもできる。
【0003】
解の探索では、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法が用いられる。以下、MCMC法による解の探索をMCMC探索という。MCMC探索では、たとえば、メトロポリス法またはギブス法で規定される状態遷移の受け入れ確率で、状態遷移が受け入れられる。このとき、エネルギーを増加させる状態遷移も確率的に許容される。なお、エネルギーの増加量が大きいほど受け入れ確率は低くなる。MCMC法の一種として、疑似焼き鈍し法やレプリカ交換法がある。このようなMCMC探索では、イジング型の評価関数の値が極小になるイジングモデルの状態の探索が行われる。評価関数の極小値のうちの最小値になる状態が最適解となる。
【0004】
ところで、組合せ最適化問題には解が満たすべき制約条件をもつものがあり、制約条件を考慮した探索を行う手法が提案されている(たとえば、特許文献1~4参照)。制約条件には、不等式制約、等式制約、絶対値制約などがある。制約条件を反映した評価関数は、制約条件違反の有無に応じた値をもつ制約項を含む。制約項は、制約条件の重みを表す係数により重み付けられている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2020-201598号公報
【特許文献2】特開2020-204928号公報
【特許文献3】米国特許出願公開第2021/0216897号明細書
【特許文献4】米国特許出願公開第2021/0271214号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
制約条件の重みを表す係数の値が適切でない場合、MCMC探索において、探索効率が悪化する場合がある。たとえば、制約条件の重みを表す係数の値が小さいと、制約条件を満たさない状態(以下制約違反解という)へ遷移する場合のエネルギーの増加量が小さくなる。この場合、制約違反解が生じやすくなり、探索効率が悪化する。逆に上記係数の値が大きいと状態遷移が生じにくくなり、探索効率が悪化する。
【0007】
1つの側面では、本発明は、組合せ最適化問題の解の探索効率を向上可能なデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
1つの実施態様では、組合せ最適化問題の解を評価するイジング型の評価関数に含まれる複数の状態変数の値と、前記組合せ最適化問題の複数の制約条件のそれぞれの違反の有無を表す複数の補助変数の値と、前記複数の制約条件のそれぞれの重みを表す係数により重み付けられた複数の制約項の値と前記評価関数の値との合計値と、前記複数の状態変数のそれぞれの値が変化する場合の前記合計値の変化量を表す第1局所場と、前記複数の制約条件のそれぞれに対する制約違反量の特定に用いられる第2局所場と、前記係数の値と、を記憶する記憶部と、前記解の探索時に、前記複数の状態変数のうち第1状態変数の値の変化を許容するか否かを前記第1局所場に基づいて判定する処理と、前記第1状態変数の値の変化を許容すると判定した場合に前記第1状態変数の値、前記第1局所場、前記第2局所場及び前記合計値を更新する処理と、前記複数の補助変数のうち第1補助変数の値の変化を許容するか否かを前記第2局所場に基づいて判定する処理と、前記第1補助変数の値の変化を許容すると判定した場合に前記第1補助変数の値及び前記第1局所場を更新する処理と、を含む探索処理を繰り返し、前記合計値または前記違反の有無に基づいて、前記係数の値を調整する処理部と、を有するデータ処理装置が提供される。
【0009】
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
【発明の効果】
【0010】
1つの側面では、本発明は、組合せ最適化問題の解の探索効率を向上できる。
【図面の簡単な説明】
【0011】
図1】第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
図2】状態変数と補助変数との間の相互作用の例を示す図である。
図3】第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
図4】データ処理装置の機能例を示すブロック図である。
図5】変数設定部とλ調整部の一例を示す図である。
図6】局所場の更新及び補正処理の例を示す図である。
図7】データ処理方法の一例の流れを示すフローチャートである。
図8】MCMC探索の処理手順の一例の流れを示すフローチャートである。
図9】パイプライン処理における各レプリカのλの調整タイミングの一例を示すタイミングチャートである。
図10】複数レプリカのパイプライン処理の一例を示すタイミングチャートである。
図11】データ処理装置の他の例を示す図である。
図12】4値の補助変数を用いた例を示す図である。
【発明を実施するための形態】
【0012】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
【0013】
第1の実施の形態のデータ処理装置10は、記憶部11、処理部12を有する。
記憶部11は、揮発性の記憶装置(たとえば、DRAM(Dynamic Random Access Memory)などの電子回路)、または、不揮発性の記憶装置(たとえば、フラッシュメモリなどの電子回路、HDD(Hard Disk Drive)など)である。記憶部11は、レジスタなどの電子回路を含んでいてもよい。
【0014】
記憶部11は、イジング型の評価関数に含まれる複数(以下N個とする)の状態変数の値を記憶する。なお、状態変数は、決定変数と呼ぶこともできる。イジング型の評価関数(E(x))は、たとえば、以下の式(1)のような2次形式の関数で定義される。
【0015】
【数1】
【0016】
右辺の1項目は、イジングモデルのN個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号=iについてのバイアス係数を示している。
【0017】
また、記憶部11は、複数(以下M個とする)の制約条件のそれぞれの違反の有無を表す複数の補助変数(x)の値を記憶する。以下の説明では、xは、識別番号=kの制約条件を違反している場合に1、制約条件を充足している場合に0の値をもつとして説明するが、これに限定されるわけではない。xとして-1または+1の値をもつスピン変数を用いることもできる。
【0018】
また、記憶部11は、上記評価関数の値と複数の制約項の値との合計値(以下総エネルギーという)を記憶する。総エネルギー(H(x))は、たとえば、以下の式(2)で表せる。
【0019】
【数2】
【0020】
式(2)において、右辺の2項目が複数の制約項の全体の大きさ(エネルギー)を表す。kは、制約条件(または制約項)の識別番号を表す。また、λは、識別番号がkの制約条件の重みを表す所定の正の係数である。λによって、各制約項が重み付けられている。g(h)は、制約条件の種類によって異なるペナルティ関数である。λg(h)を1つの制約項ということができる。hは、識別番号がkの制約条件に対する制約違反量の特定に用いられる値である。
【0021】
制約条件が不等式制約である場合、式(2)のg(h)は、以下の式(3)で表すことができる。
【0022】
【数3】
【0023】
式(3)において、max[0,h]は、0とhのうち大きい値を出力する関数である。また、Rは、識別番号がkの制約項の消費量(リソース量とも呼ばれる)、Uはリソース量の上限を表す。Dは、状態変数の識別番号の集合を表す。Wkiは、識別番号がkの不等式制約におけるxの重みを表す係数(重み値)である。
【0024】
制約条件が不等式制約である場合のH(x)は、補助変数(x)を用いて、以下の式(4)のように表せる。
【0025】
【数4】
【0026】
さらに、記憶部11は、N個のxのそれぞれの値が変化する場合のH(x)の変化量を表す第1局所場(h)を記憶するとともに、上記のhを記憶する。hは、上記のように、識別番号がkの制約条件に対する制約違反量の特定に用いられる値であり、xの値が変化する場合のH(x)の変化量に比例する値でもある。図1では、hは、第2局所場と表記されている。
【0027】
また、記憶部11は、上記の式(2)または式(4)に含まれるλを記憶する。記憶部11は、さらに、N個のxのそれぞれの間の重み値と、N個のxの何れかとM個のxのそれぞれとの間の重み値や、λを調整する際の増加量Δλk+、減少量Δλk-を記憶してもよい。Δλk+、Δλk-のそれぞれは、制約条件ごとに異なる値を設定できる。また、記憶部11は、式(1)のバイアス係数(b)、式(3)や式(4)のUを記憶してもよい。また、記憶部11は、処理部12が後述のデータ処理方法を実行する際の計算条件など各種のデータを記憶してもよい。また、処理部12が、ソフトウェアにより後述のデータ処理方法の一部または全ての処理を実行する場合には、記憶部11には、その処理を実行するためのプログラムが記憶される。
【0028】
図2は、状態変数と補助変数との間の相互作用の例を示す図である。
N個の状態変数の間では相互作用の強さは、N×N個の第1重み値であるWijで表せる。たとえば、xとxの間の相互作用の強さはW1i、xとxの間の相互作用の強さはWiN、xとxの間の相互作用の強さはW1Nである。一方、状態変数と補助変数の間の相互作用は、状態変数の値の変化が補助変数に与える影響に基づくものと、補助変数の変化が状態変数に与える影響に基づくものとで異なる。たとえば、図2のように、状態変数のxの値の変化が補助変数xに与える影響は、重み値Wkiで表せ、補助変数のxの値の変化が状態変数xに与える影響は、前述のλを用いて、-λkiと表せる。
【0029】
図1の処理部12は、たとえば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのハードウェアであるプロセッサにより実現できる。また、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路により実現されるようにしてもよい。
【0030】
処理部12は、たとえば、式(4)に示したH(x)が極小になる状態を探索する。H(x)の極小値のうちの最小値になるときの状態が最適解となる。なお、式(4)の右辺の各項の符号を変えれば、処理部12は、H(x)の値が極大になる状態を探索することもできる(この場合、最大値となるときの状態が最適解となる)。
【0031】
図1には、処理部12による処理の一例の流れが示されている。
なお、ここではH(x)、h、h、xとして、x~xの初期値に基づいた値が、記憶部11に記憶されているものとする。
【0032】
処理部12は、MCMC法による解の探索時に、以下のようなステップS1~S4の処理を行う。まず、処理部12は、MCMC法による探索処理(MCMC探索)を行う(ステップS1)。探索処理は、状態変数のフリップ判定(ステップS1a)、x,h,h,H(x)の更新(ステップS1b)、補助変数のフリップ判定(ステップS1c)、x,h,H(x)の更新(ステップS1d)の処理を含む。
【0033】
ステップS1aの処理は、たとえば、以下のように行われる。
処理部12は、N個のxのうちの第1状態変数(以下フリップ候補の状態変数という)の値の変化を許容するか否かを、hに基づいて判定する。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の状態変数を選択する。hは、以下の式(5)で表せる。
【0034】
【数5】
【0035】
処理部12は、フリップ候補の状態変数の値が変化する場合のH(x)の変化量(ΔH)を計算する。たとえば、xの値が変化する場合のΔHは、式(5)に示したhに基づいて、ΔH=-hΔxという式により計算できる。
【0036】
次に、処理部12は、ΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否か(フリップ可か否か)の判定を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。たとえば、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例であるlog(rand)×Tを、所定値として用いることができる。この場合、処理部12は、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容する(フリップ可)と判定する。
【0037】
ステップS1bの処理は、たとえば、以下のように行われる。
処理部12は、フリップ可と判定した場合、h、h、H(x)、x(フリップ可と判定された状態変数)の更新を行う。なお、処理部12は、フリップ可と判定しない場合、h、h、H(x)、xの更新を行わない。処理部12は、元のH(x)にΔHを加算することでH(x)の更新を行う。また、処理部12は、たとえば、xをフリップ可と判定した場合、N個の状態変数のそれぞれについての元のhに、Δh=WijΔxを加えることで、hの更新を行う。さらに、処理部12は、xをフリップ可と判定した場合、M個の補助変数のそれぞれについての元のhに、Δh=WkjΔxを加えることで、hの更新を行う。xの値を変更した場合に、識別番号=kの制約条件の違反が生じる場合、この更新によってhは正の値になり、後述のステップS1cの処理により、xの0から1への変化が許容される。
【0038】
ステップS1cの処理は、たとえば、以下のように行われる。
処理部12は、M個のxのうちの第1補助変数(以下フリップ候補の補助変数という)の値の変化を許容するか否かを、hに基づいて判定する。処理部12は、たとえば、ランダムにまたは所定の順序で、フリップ候補の補助変数を選択する。hは、以下の式(6)で表せる。
【0039】
【数6】
【0040】
処理部12は、フリップ候補の状態変数の値が変化する場合のH(x)の変化量(ΔH)を計算する。たとえば、xの値が変化する場合のΔHは、式(5)に示したhに基づいて、ΔH=-hΔxという式により計算できる。
【0041】
処理部12は、フリップ候補の補助変数の値が変化する場合のΔHを計算する。たとえば、xの値が変化する場合のΔHは、式(6)に示したhを用いて、ΔH=+λΔxという式により計算できる。上記のステップS1aの処理では、補助変数の値を変えずにΔHを計算するため、補助変数の値の変化の有無によって誤差が生じる場合があるが、ステップS1cの処理によって得られるΔH=+λΔxにより、その誤差を補正できる。
【0042】
次に、処理部12は、ΔHと所定値との比較結果に基づいて、フリップ候補の補助変数の値の変化を許容するか否か(フリップ可か否か)の判定を行う。所定値は、ステップS1aの処理で用いた値と同じであってもよいし、固定値(たとえば、0)であってもよい。所定値として、log(rand)×Tを用いた場合、処理部12は、ΔH>log(rand)×Tの場合、フリップ候補の補助変数をフリップ可と判定する。ステップS1bの処理による状態変数の値の変化により、制約違反が生じている場合、式(6)のhは正の値となり、xの0から1への変化の場合の変化量Δx=1であるため、ΔHは正の値である。また、log(rand)×Tは負の値である。このため、ΔH>log(rand)×Tという判定式を用いることで、xの0から1への変化が許容される。
【0043】
ステップS1dの処理は、たとえば、以下のように行われる。
処理部12は、フリップ候補のxをフリップ可と判定した場合、h、H(x)、x(フリップ可と判定された補助変数)の更新を行う。なお、処理部12は、フリップ可と判定しない場合、h、H(x)、xの更新を行わない。
【0044】
処理部12は、元のH(x)にΔHを加算することでH(x)の更新を行う。また、処理部12は、たとえば、xがフリップ可と判定された場合、N個の状態変数のそれぞれについての元のhに、Δh=-λkiΔxを加えることで、hの更新を行う。
【0045】
なお、処理部12は、ステップS1a,S1bの処理を所定回数繰り返したのち、ステップS1c,S1dの処理を行ってもよい。また、処理部12は、ステップS1aの処理でフリップ候補の状態変数がフリップ可と判定され、ステップS1bの処理にて更新が行われるまでは、ステップS1c,S1dの処理を行わないようにしてもよい。
【0046】
以上のような探索処理を行った後、処理部12は、λの調整周期に達した否かを判定する(ステップS2)。処理部12は、上記の探索処理が所定回数行われるたびに、調整周期に達したと判定する。処理部12は、調整周期に達したと判定した場合、λの調整処理を行い(ステップS3)、調整周期に達していないと判定した場合、ステップS1からの処理を繰り返す。
【0047】
ステップS3の処理では、処理部12は、H(x)または制約条件違反の有無に基づいて、λを調整する。たとえば、処理部12は、λの調整時におけるH(x)が、Hbest以上である場合、複数の制約条件のそれぞれのh(全てまたは指定された範囲のh)の値を減少させる。Hbestは、上記調整時より前に得られた、何れの制約条件も違反していない状態のH(x)の最小値である。処理部12は、λの調整タイミングにおけるH(x)が、Hbestより小さく、かつ制約条件違反が生じている制約条件がある場合、その制約条件のλの値を増加させる。λの調整は、たとえば、λにΔλk+を加える、または、λからΔλk-を減ずることで行われる。Δλk+やΔλk-の値として、たとえば、元のλの0.1倍の値などが、適宜設定される。
【0048】
なお、Δλk+やΔλk-の値、λの初期値は、MCMC探索中に変更されてもよい。また、λの調整の仕方は上記の方法に限定されず、処理部12は、λに所定の値(たとえば、1.1または0.9)を乗じることで、調整を行ってもよい。
【0049】
λの調整を行った場合、処理部12は、hとH(x)の補正を行う(ステップS4)。hの補正は、以下の式(7)に基づいて行うことができる。
【0050】
【数7】
【0051】
H(x)の補正は、以下の式(8)に基づいて行うことができる。
【0052】
【数8】
【0053】
式(7)、式(8)においてΔλは、λの調整量であり、前述のΔλk+またはΔλk-である。
なお、hとH(x)の補正は、xを用いずに、以下の式(9)、式(10)に基づいて行うこともできる。
【0054】
【数9】
【0055】
【数10】
【0056】
ステップS4の処理後は、ステップS1からの処理が繰り返される。
なお、上記の説明では、N個の状態変数のうちフリップ候補の状態変数を1つずつ選択して、ステップS1a,S1bの処理が行われる例を示したが、複数(たとえばN個全て)の状態変数について並列にステップS1a,S1bの処理が行われるようにしてもよい。その場合、処理部12は、値の変更が許容された状態変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる状態変数を選択する。
【0057】
同様に、上記の説明では、M個の状態変数のうちフリップ候補の補助変数を1つずつ選択して、ステップS1c,S1dの処理が行われる例を示したが、複数(たとえばM個全て)の状態変数について並列にステップS1c,S1dの処理が行われるようにしてもよい。その場合、処理部12は、値の変更が許容された補助変数の数が複数あるとき、ランダムに、または所定のルールにしたがって、値を変化させる補助変数を選択する。
【0058】
処理部12は、疑似焼き鈍し法を行う場合、たとえば、状態変数についてのフリップ判定が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、フリップ判定が所定の回数繰り返された場合に得られた状態を、組合せ最適化問題の計算結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、HbestとHbestが得られたときの状態とを記憶部11に保持させておいてもよい。その場合、処理部12は、フリップ判定が所定の回数繰り返された後に記憶されているHbestに対応する状態を、計算結果として出力してもよい。
【0059】
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なるTの値が設定された複数のレプリカのそれぞれにおいて、上記のステップS1~S4の処理を繰り返す。そして、処理部12は、状態変数についてのフリップ判定が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差やTの値の差に基づいた所定の交換確率で、各状態変数の値及び各補助変数の値を交換する。なお、2つのレプリカの間で、各状態変数の値及び各補助変数の値の代わりにTの値が交換されてもよい。または、処理部12は、HbestとHbestが得られたときの状態とを記憶部11に保持させる。そして、処理部12は、各レプリカにおいて上記のフリップ判定が所定の回数繰り返された後に記憶されているHbestのうち、全レプリカにおいて最小のHbestに対応する状態を、計算結果として出力する。
【0060】
以上のようなデータ処理装置10及びデータ処理方法によれば、探索処理が所定回数行われるたびに、処理部12は、H(x)または制約条件違反の有無に基づいて、λを調整する。これにより、解の探索状況を反映してλを適切に調整できるようになるため、組合せ最適化問題の解の探索効率を向上できる。
【0061】
たとえば、探索処理が所定回数繰り返されてもH(x)の値が改善されない場合(値が小さくならない場合)、制約違反が発生した場合のエネルギーの増加が大きすぎ、状態遷移が阻害され、探索効率が低くなっていることが考えられる。このような場合、λの値を減少させることで状態遷移が促進され、探索効率が向上する。H(x)の値は改善されているが、ある制約条件の違反が発生している場合は、その制約条件に関するλの値を増加させることでその制約条件の違反の発生を抑制できる。つまり制約違反解が発生する可能性を低くすることができ、探索効率の悪化を抑制できる。
【0062】
また、λが調整された場合には、λの調整量に基づいて、hとH(x)が補正されるためλを変えることによる計算誤差の発生を抑制できる。
(第2の実施の形態)
図3は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
【0063】
データ処理装置20は、たとえば、コンピュータであり、プロセッサ21、RAM22、HDD23、GPU24、入力インタフェース25、媒体リーダ26及び通信インタフェース27を有する。上記ユニットは、バスに接続されている。
【0064】
プロセッサ21は、プログラムの命令を実行する演算回路を含むGPUやCPUなどのプロセッサである。プロセッサ21は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM22にロードし、プログラムを実行する。なお、プロセッサ21は、複数のプロセッサコアを備えてもよい。また、データ処理装置20は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0065】
RAM22は、プロセッサ21が実行するプログラムやプロセッサ21が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置20は、RAM22以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0066】
HDD23は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、組合せ最適化問題の解を探索する処理をデータ処理装置20に実行させるプログラムが含まれる。なお、データ処理装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0067】
GPU24は、プロセッサ21からの命令にしたがって、データ処理装置20に接続されたディスプレイ24aに画像を出力する。ディスプレイ24aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0068】
入力インタフェース25は、データ処理装置20に接続された入力デバイス25aから入力信号を取得し、プロセッサ21に出力する。入力デバイス25aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置20に、複数の種類の入力デバイスが接続されていてもよい。
【0069】
媒体リーダ26は、記録媒体26aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体26aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0070】
媒体リーダ26は、たとえば、記録媒体26aから読み取ったプログラムやデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、プロセッサ21によって実行される。なお、記録媒体26aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体26aやHDD23を、コンピュータ読み取り可能な記録媒体ということがある。
【0071】
通信インタフェース27は、ネットワーク27aに接続され、ネットワーク27aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース27は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0072】
次に、データ処理装置20の機能及び処理手順を説明する。
図4は、データ処理装置の機能例を示すブロック図である。
データ処理装置20は、入力部31、制御部32、探索部33、出力部34を有する。これらによって、図1に示した処理部12が行う処理と同様の処理が行われる。なお、図1に示した記憶部11が記憶する各種の情報は、たとえば、探索部33に含まれる後述の各種の保持部などに記憶される。
【0073】
入力部31、制御部32、探索部33、出力部34は、たとえば、プロセッサ21が実行するプログラムモジュールや、プロセッサ21内の記憶領域(レジスタやキャッシュメモリ)を用いて実装できる。なお、探索部33は、さらに、RAM22またはHDD23に確保した記憶領域を用いて実装されるようにしてもよい。
【0074】
入力部31は、たとえば、N個の状態変数の初期値、M個の補助変数の初期値、問題情報、計算条件の入力を受け付ける。問題情報は、たとえば、式(1)のWijやbのほか、式(4)などのWki、Uを含む。計算条件は、たとえば、レプリカ交換法を実行する場合のレプリカ数、レプリカ交換周期、各レプリカに設定する温度パラメータの値、疑似焼き鈍し法を行う場合の温度パラメータ変更スケジュール、計算の終了条件などを含む。さらに、計算条件は、λを調整するためのパラメータを含む。
【0075】
λを調整するためのパラメータには、たとえば、λの初期値(λkinit)、λの増加量(Δλk+)と減少量(Δλk-)、λkinitとΔλk+とΔλk-を設定する間隔を示す変数(T1)、λの調整間隔を示す変数(T0)がある。なお、T1>T0である。
【0076】
これらの情報は、ユーザによる入力デバイス25aの操作により入力されてもよいし、記録媒体26aまたはネットワーク27aを介して入力されてもよい。
制御部32は、データ処理装置20の各部を制御して、後述の処理を実行させる。
【0077】
探索部33は、制御部32の制御のもと、MCMC探索を繰り返すことで、評価関数の値(エネルギー)が極小になる状態を探索する。
出力部34は、探索部33による探索結果(計算結果)を出力する。
【0078】
出力部34は、たとえば、計算結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0079】
探索部33は、変数設定部33a、状態変数保持部33b、補助変数保持部33c、重み値保持部33d、λ調整部33eを有する。さらに、探索部33は、h計算部33f、h計算部33g、ΔH計算部33h,33i、遷移可否判定部33j,33k、選択部33l、更新部33m、エネルギー計算部33nを有する。
【0080】
変数設定部33aは、入力部31が受け付けた各種の変数(λや上記のλを調整するためのパラメータなど)を保持し、各部に設定する。変数設定部33aは、λを増加させるか減少させるかを決定するために用いられるH(x)、Hbestなどを保持していてもよい。
【0081】
状態変数保持部33bは、N個の状態変数(x)を保持する。また、状態変数保持部33bは、フリップ候補のxの変化量(Δx)を出力する。
補助変数保持部33cは、M個の補助変数を保持する。
【0082】
重み値保持部33dは、N個の状態変数の間の重み値(Wij)と、N個の状態変数のそれぞれと、M個の補助変数の間の重み値(Wki)を保持する。WijはN行N列の行列で表すことができ、Wkiは、M行N列の行列で表すことができる。なお、N個の状態変数のうちM個の補助変数の何れにも影響を与えない状態変数と、M個の補助変数の間の重み値は、保持しなくてよい。
【0083】
λ調整部33eは、探索処理(MCMC処理)がT0回行われるたびに、H(x)またはxの値(制約条件違反の有無)に基づいて、λの値を調整する。λ調整部33eは、調整後のλを変数設定部33aに供給し、調整量(Δλ)をh計算部33fと更新部33mに供給する。
【0084】
計算部33fは、N個のhを保持するとともに、状態変数や補助変数の値の変化に応じてhを更新する。また、h計算部33fは、λが調整された場合、たとえば、式(7)にしたがって、hを補正する。
【0085】
計算部33gは、M個のhを保持するとともに、状態変数の値の変化に応じてhを更新する。
ΔH計算部33hは、フリップ候補のxについてのhに基づいて、ΔH=-hΔxを計算する。
【0086】
ΔH計算部33iは、フリップ候補のxについてのhに基づいて、ΔH=+λΔxを計算する。
遷移可否判定部33jは、ΔH計算部33hが出力するΔHと、所定値との比較結果に基づいて、フリップ候補の状態変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。遷移可否判定部33jは、たとえば、-ΔH≧log(rand)×Tの場合、フリップ候補の状態変数の値の変化を許容すると判定する。
【0087】
遷移可否判定部33kは、ΔH計算部33iが出力するΔHと、所定値との比較結果に基づいて、フリップ候補の補助変数の値の変化を許容するか否かのフリップ判定処理を行う。所定値は、遷移可否判定部33jが用いる値と同じであってもよいし、固定値(たとえば、0)であってもよい。遷移可否判定部33kは、たとえば、ΔH>log(rand)×Tの場合、フリップ候補の補助変数の値の変化を許容すると判定する。
【0088】
選択部33lは、状態変数についてのフリップ判定を行う場合には、遷移可否判定部33jの判定結果を選択し、補助変数についてのフリップ判定を行う場合には、遷移可否判定部33kの判定結果を選択して出力する。
【0089】
更新部33mは、フリップ可と判定された状態変数の識別番号を状態変数保持部33bに送り、その状態変数の値を変更させる。また、更新部33mは、フリップ可と判定された補助変数の識別番号を補助変数保持部33cに送り、その補助変数の値を変更させる。
【0090】
さらに、更新部33mは、フリップ候補の状態変数がフリップ可と判定された場合、h計算部33fとh計算部33gにN個のhとM個のhを更新させる。更新部33mは、フリップ候補の補助変数がフリップ可と判定された場合、h計算部33fにN個のhを更新させる。
【0091】
また、更新部33mは、状態変数または補助変数がフリップ可と判定された場合、エネルギー計算部33nにH(x)を更新させる。また、更新部33mは、λが調整されたとき、エネルギー計算部33nにΔλを供給し、H(x)を補正させる。
【0092】
エネルギー計算部33nは、H(x)を保持するとともに、更新部33mからの更新指示があった場合、H(x)を更新する。さらに、エネルギー計算部33nは、更新部33mからのH(x)の補正指示があった場合、Δλに基づいて、たとえば、式(8)にしたがってH(x)を補正する。なお、式(8)の右辺の2項目の括弧内の値として、式(6)で表されるhを用いることができる。
【0093】
また、エネルギー計算部33nは、Hbestを保持するとともに、更新したH(x)がHbestより小さく、かつ、そのH(x)が得られたときに何れの制約条件違反も生じていない場合、そのH(x)を新たなHbestとする。
【0094】
図5は、変数設定部とλ調整部の一例を示す図である。
変数設定部33aは、λ調整用パラメータ保持部33a1、状態保持部33a2、エネルギー保持部33a3、λ保持部33a4を有する。λ調整用パラメータ保持部33a1、状態保持部33a2、エネルギー保持部33a3、λ保持部33a4は、レジスタなどの記憶回路を用いて実現できる。
【0095】
λ調整部33eは、λ調整判定部33e1、λ調整量設定部33e2、λ設定部33e3を有する。
λ調整用パラメータ保持部33a1は、T0、T1(>0)、λkinit、Δλk+、Δλk-を保持する。λ調整用パラメータ保持部33a1は、T0をλ調整判定部33e1に供給し、T1、λkinit、Δλk+、Δλk-をλ調整量設定部33e2に供給する。
【0096】
状態保持部33a2は、状態変数と補助変数の値を保持する。状態保持部33a2は、更新部33mからフリップ可と判定された状態変数の識別番号iを受けた場合、その識別番号iに対応した状態変数(x)の値を変更する。状態保持部33a2は、更新部33mからフリップ可と判定された補助変数の識別番号kを受けた場合、その識別番号kに対応した補助変数(x)の値を変更する。状態保持部33a2は、M個のxをλ設定部33e3に供給する。
【0097】
エネルギー保持部33a3は、エネルギー計算部33nからH(x)、Hbestを受け保持する。エネルギー保持部33a3は、H(x)、Hbestを、λ設定部33e3に供給する。
【0098】
λ保持部33a4は、全ての制約条件におけるλの初期値を保持する。その後、λ保持部33a4は、λの調整タイミングでλ設定部33e3が求めたλ(k∈M)を保持する。
【0099】
λ調整判定部33e1は、MCMC探索がT0回行われるたびに、λの調整タイミングであると判定する。
λ調整量設定部33e2は、MCMC探索がT1回行われるたびに、λkinit、Δλk+、Δλk-を、λ設定部33e3に設定する。これにより、λが初期化される。
【0100】
λ設定部33e3は、H(x)とHbestとを比較する。λ設定部33e3は、H(x)がHbest以上である場合、全てまたは指定された範囲のλの値から、Δλk-を減じる。なお、λは、λ保持部33a4で保持したものである。λ設定部33e3は、H(x)が、Hbestより小さく、かつ制約条件違反が生じている制約条件がある場合、その制約条件のλ(λ保持部33a4で保持したもの)の値にΔλk+を加える。λ設定部33e3は、Δλk-とΔλk+のうち、λの調整に用いた値を、Δλとして出力する。
【0101】
図6は、局所場の更新及び補正処理の例を示す図である。
なお、図6の例では、フリップ候補の状態変数がxであり、フリップ候補の補助変数がxであるものとして説明する。この場合、制御部32から供給されるクロック信号clkに同期して状態変数保持部33bからΔxが出力され、制御部32から供給されるクロック信号clkに同期して補助変数保持部33cからΔxが出力される。
【0102】
また、xがフリップ可と判定された場合、重み値保持部33dから、xとN個の状態変数のそれぞれとの間の重み値であるN個のWijと、xとM個の補助変数のそれぞれとの間の重み値であるM個のWkjが読み出される。また、xがフリップ可と判定された場合、重み値保持部33dから、xとN個の状態変数のそれぞれとの間の重み値であるN個のWkiが読み出される。
【0103】
計算部33fは、乗算器33f1,33f2,33f3,33f4,33f5、h更新保持部33f6を有する。
計算部33gは、乗算器33g1、h更新保持部33g2を有する。
【0104】
乗算器33f1は、ΔxとN個のWijとの積を出力する。乗算器33f2は、ΔxとN個のWkiとの積を出力する。乗算器33f3は、乗算器33f2の出力値のそれぞれと変数設定部33aから読み出したλとの積を出力する。乗算器33f4は、Δλとxとの積を出力する。乗算器33f5は、乗算器33f4の出力値とN個のWkiとの積を出力する。乗算器33g1は、ΔxとM個のWkjとの積を出力する。
【0105】
更新保持部33f6は、N個のhを保持している。そして、h更新保持部33f6は、xがフリップ可と判定された場合、N個のhのそれぞれに、Δh=WijΔxを加えることで、hを更新する。また、h更新保持部33f6は、xがフリップ可と判定された場合、N個のhのそれぞれに、Δh=-λkiΔxを加えることで、hを更新する。
【0106】
さらに、h更新保持部33f6は、λの調整が行われた場合、乗算器33f5の出力値であるΔλkiを用いて、式(7)にしたがってN個のhを補正する。
更新保持部33g2は、M個のhを保持している。そして、h更新保持部33g2は、xがフリップ可と判定された場合、M個のhのそれぞれに、Δh=WkjΔxを加えることで、hを更新する。
【0107】
以下、データ処理装置20の処理手順(データ処理方法)の一例を、説明する。
図7は、データ処理方法の一例の流れを示すフローチャートである。
ステップS10:入力部31は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報、計算条件の入力を受け付ける。
【0108】
ステップS11:制御部32は、初期化処理を行う。初期化処理では、たとえば、以下の処理が行われる。制御部32は、N個の状態変数の初期値を、変数設定部33a、状態変数保持部33bに保持させ、M個の補助変数の初期値を、変数設定部33a、補助変数保持部33cに保持させる。また、制御部32は、問題情報に含まれる重み値を、重み値保持部33dに保持させ、計算条件のうち、λを調整するためのパラメータを、変数設定部33aに保持させる。
【0109】
さらに制御部32は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報に基づいて、式(5)に示したhの初期値、式(6)に示したhの初期値を計算する。制御部32は、計算したN個のhの初期値を、図6に示したh更新保持部33f6に保持させ、計算したM個のhの初期値を、図6に示したh更新保持部33g2に保持させる。
【0110】
また、制御部32は、N個の状態変数の初期値、M個の補助変数の初期値、問題情報に基づいて、たとえば、式(4)に示したH(x)の初期値を計算する。制御部32は、計したH(x)の初期値を、図5に示したエネルギー保持部33a3に保持させる。
【0111】
さらに、初期化処理では、変数設定部33aにレプリカ数=Rなどが設定される。
ステップS12:制御部32は、t=0とする。tはMCMC探索の回数を表す変数である。以下の例では、MCMC探索の回数は、N個の状態変数のそれぞれについてMCMC探索が行われた場合に、1回と数えるものとする。
【0112】
ステップS13:制御部32は、r=0とする。rはレプリカ番号を表す変数である。
ステップS14:制御部32は、i=1とする。iは状態変数の識別番号である。
ステップS15:λ調整部33eのλ調整量設定部33e2は、λkinitとΔλk+とΔλk-を設定する間隔を示す変数(T1)がtで割り切れるか否か((t%T1)=0であるか否か)を判定する。(t%T1)=0であると判定された場合、ステップS16の処理が行われ、t%T1=0ではないと判定された場合、ステップS17の処理が行われる。
【0113】
ステップS16:λ調整量設定部33e2は、レプリカ番号=rのレプリカ(以下レプリカrという)のλkinit、Δλk+、Δλk-の設定を、λ設定部33e3に対して行う。これにより、λがλkinitに初期化される。なお、Δλk+、Δλk-の値は、変更可能である。
【0114】
ステップS17:探索部33は、MCMC探索を行う。MCMC探索の処理手順については後述する(図8参照)。
ステップS18:λ調整部33eのλ調整判定部33e1は、λの調整間隔を示す変数(T0)がtで割り切れるか否か((t%T0)=0であるか否か)を判定する。t%T0=0であると判定された場合、ステップS19の処理が行われ、t%T0=0ではないと判定された場合、ステップS26の処理が行われる。
【0115】
ステップS19:λ調整部33eのλ設定部33e3は、H<Hbestであるか否かを判定する。H<Hbestであると判定された場合、ステップS20の処理が行われ、H<Hbestではないと判定された場合、ステップS24の処理が行われる。
【0116】
ステップS20:λ設定部33e3は、x=1であるか否かを判定する。x=1であると判定された場合、ステップS21の処理が行われ、x=1ではないと判定された場合、ステップS23の処理が行われる。
【0117】
ステップS21:λ設定部33e3は、元のλにΔλk+を加えることで、λを調整する。
ステップS22:制御部32は、k=Mであるか否かを判定する。k=Mであると判定された場合、ステップS25の処理が行われ、k=Mではないと判定された場合、ステップS23の処理が行われる。
【0118】
ステップS23:制御部32は、k=k+1とする。その後、ステップS20からの処理が繰り返される。
ステップS24:λ設定部33e3は、たとえば、全λからΔλk-を減ずることで、λを調整する。
【0119】
ステップS25:hとH(x)の補正が行われる。h更新保持部33f6は、たとえば、式(7)にしたがってN個のhを補正する。エネルギー計算部33nは、たとえば、式(8)にしたがってH(x)を補正する。
【0120】
ステップS26:制御部32は、i=Nであるか否かを判定する。i=Nであると判定された場合、ステップS28の処理が行われ、i=Nではないと判定された場合、ステップS27の処理が行われる。
【0121】
ステップS27:制御部32は、i=i+1とする。その後、ステップS15からの処理が繰り返される。
ステップS28:制御部32は、r=R-1であるか否かを判定する。r=R-1であると判定された場合、ステップS30の処理が行われ、r=R-1ではないと判定された場合、ステップS29の処理が行われる。
【0122】
ステップS29:制御部32は、r=r+1とする。その後、ステップS14からの処理が繰り返される。
ステップS30:制御部32は、終了条件が満たされているか否かを判定する。たとえば、制御部32は、MCMC探索の回数(t)が、最大回数に達した場合、または、H(x)が所定の大きさ以下になった場合、終了条件が満たされたと判定する。処理が所定の終了条件を満たすと判定された場合、ステップS32の処理が行われ、処理が所定の終了条件を満たさないと判定された場合、ステップS31の処理が行われる。
【0123】
ステップS31:制御部32は、t=t+1とする。その後、ステップS13からの処理が繰り返される。
ステップS32:出力部34は、計算結果を出力する。これにより、処理が終了する。出力部34は、たとえば、計算結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0124】
なお、疑似焼き鈍し法が行われる場合、たとえば、制御部32は、状態変数についてのMCMC探索が所定回数、繰り返されるたび、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、制御部32の制御のもと、出力部34は、たとえば、MCMC探索が最大回数繰り返された場合に得られた各レプリカのHbestのうちの最小値に対応する状態を、計算結果として出力する。
【0125】
レプリカ交換法が行われる場合、MCMC探索が所定回数繰り返されるごとに、レプリカ交換が行われる。たとえば、制御部32は、隣り合うTの値をもつレプリカを2つ選択して、選択された2つのレプリカの間で、レプリカ間のH(x)の差やTの値の差に基づいた所定の交換確率で、Tの値または、各状態変数の値及び各補助変数の値を交換する。そして、制御部32の制御のもと、出力部34は、たとえば、MCMC探索が最大回数繰り返された場合に得られた各レプリカのHbestのうちの最小値に対応する状態を、計算結果として出力する。
【0126】
図8は、MCMC探索の処理手順の一例の流れを示すフローチャートである。
ステップS40:フリップ候補の状態変数(x)が選択される。フリップ候補の状態変数が選択されると、状態変数保持部33bから、その状態変数の値を変化させたときの変化量(Δx)が出力される。
【0127】
ステップS41:探索部33のΔH計算部33hは、ΔH=-hΔxという式によりΔHを計算する。
ステップS42:探索部33の遷移可否判定部33jは、ΔHと、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定された場合(「フリップ可」の場合)、ステップS43の処理が行われ、xの変化を許容しないと判定された場合(「フリップ否」の場合)、1回のMCMC探索が終了する。
【0128】
ステップS43:探索部33は、前述の処理により、h、h、H(x)、xの更新を行う。
ステップS44:制御部32は、k=1とする。
【0129】
ステップS45:フリップ候補の補助変数(x)が選択される。フリップ候補の補助変数が選択されると、補助変数保持部33cから、その補助変数の値を変化させたときの変化量(Δx)が出力される。
【0130】
ステップS46:探索部33のΔH計算部33iは、ΔH=+λΔxという式によりΔHを計算する。
ステップS47:探索部33の遷移可否判定部33kは、ΔHと、たとえば、前述の所定値との比較結果に基づいて、xについてフリップ判定を行う。xの変化を許容すると判定した場合(「フリップ可」の場合)、ステップS48の処理が行われ、xの変化を許容しないと判定した場合(「フリップ否」の場合)、ステップS49の処理が行われる。
【0131】
ステップS48:探索部33は、前述の処理により、h、H(x)、xの更新を行う。
ステップS49:制御部32は、k=Mであるか否かを判定する。k=Mであると判定された場合、ステップS51の処理が行われ、k=Mではないと判定された場合、ステップS50の処理が行われる。
【0132】
ステップS50:制御部32は、k=k+1とする。その後、ステップS45からの処理が繰り返される。
ステップS51:制御部32は、全xが0であるか否かを判定する。全xが0であると判定された場合、ステップS52の処理が行われる。全xが0ではない(何れか1つでもxが0ではない)と判定された場合、1回のMCMC探索が終了する。
【0133】
ステップS52:エネルギー計算部33nは、Hbestを更新する。エネルギー計算部33nは、更新したH(x)がHbestより小さい場合、そのH(x)を新たなHbestとする。ステップS52の処理後、1回のMCMC探索が終了する。
【0134】
なお、図7図8に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。また、上記の処理例では、フリップ候補の状態変数と補助変数が識別番号順に選択されるものとしたが、ランダムに選択されるようにしてもよい。
【0135】
上記のようなデータ処理方法によれば、MCMC探索がT0回行われるたびに、λ調整部33eは、H(x)とHbestの比較結果と、xで表される制約条件違反の有無に基づいて、λを調整する。これにより、解の探索状況を反映してλを適切に調整できるようになるため、組合せ最適化問題の解の探索効率を向上できる。
【0136】
また、λが調整された場合には、λの調整量に基づいて、hとH(x)が補正されるためλを変えることによる計算誤差の発生を抑制できる。
なお、前述のように、上記の処理内容は、データ処理装置20にプログラムを実行させることで実現できる。
【0137】
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
【0138】
(パイプライン処理例)
探索部33は、複数レプリカの処理をパイプライン処理で行うこともできる。
図9は、パイプライン処理における各レプリカのλの調整タイミングの一例を示すタイミングチャートである。T0イタレーションや、T1イタレーションは、各レプリカにおいてN個の状態変数に対してMCMC探索が繰り返される回数である。図9の例では、T1=T0×Lである。
【0139】
T0イタレーションの間は、λは固定である。T1イタレーションの間は、Δλ(及びλkinit)は固定である。図9の例では、タイミングt1~t2のT1イタレーションの間のΔλはΔλk0、タイミングt2~t3のT1イタレーションの間のΔλはΔλk1と表記されている。また、タイミングt1~t2の間の最初のT0イタレーションの間のλはλk0と表記されており、次のT0イタレーションの間のλはλk1と表記されている。
【0140】
1イタレーションでは、R個のレプリカ(Rレプリカと表記されている)について順番に処理が行われる。
λの調整タイミングは、レプリカごとにずらすことができる。図9の例では、レプリカ0のλの調整は、タイミングt1aから開始される1イタレーションの間のレプリカ0の処理の際に行われる。レプリカ1のλの調整は、タイミングt1bから開始される1イタレーションの間のレプリカ1の処理の際に行われる。
【0141】
図10は、複数レプリカのパイプライン処理の一例を示すタイミングチャートである。図10の例では、レプリカ数(R)は16である。パイプライン処理では、動作タイミングを調整するためにFIFO(First In, First Out)が用いられる。なお、図10のメモリは、図6のh更新保持部33f6に含まれhを保持するメモリ、または、図6のh更新保持部33g2に含まれhを保持するメモリを表している。
【0142】
各レプリカが行う処理は、更新フェーズと試行フェーズに分かれている。以下では、主にレプリカ0についての処理を説明するが、他のレプリカにおいても同様の処理が行われる。
【0143】
更新フェーズは、状態変数(x)または補助変数(x)の値の更新(フリップ)が行われる処理と、λの計算が行われる処理を含む。また、更新フェーズは、hの更新用の重み値が重み値保持部33dからリードされる処理と、hの更新用の重み値が重み値保持部33dからリードされる処理を含む。さらに、更新フェーズは、λが変数設定部33aからリードされる処理と、hまたはhが更新または補正される処理を含む。
【0144】
試行フェーズは、上記のメモリからhまたはhがリードされる処理と、ΔHが計算される処理と、フリップ変数(値の更新が行われる状態変数または補助変数)が決定される処理と、H(x)の計算処理を含む。
【0145】
なお、各処理は、たとえば、1または複数クロックサイクルで行われる。
タイミングt10から状態変数に対する試行フェーズが開始する。各レプリカについて順番に、メモリからのhのリード、ΔHの計算、ΔHに基づくフリップ変数の決定、H(x)の計算が行われる。タイミングt11では、レプリカ0において決定されたフリップ変数である状態変数の識別番号が、FIFOを介して更新部33mに供給され、更新フェーズが開始する(タイミングt12)。タイミングt12では、フリップ変数である状態変数の値が更新される。そして、タイミングt13では、更新された状態変数に応じた重み値が重み値保持部33dからリードされる。そして、リードされる各値に基づいて、hとhの更新が行われ、メモリに記憶される(タイミングt14)。
【0146】
タイミングt15から補助変数に対する試行フェーズが開始する。各レプリカについて順番に、メモリからのhのリード、ΔHの計算、ΔHに基づくフリップ変数の決定、H(x)の計算が行われる。図10では、2つの補助変数がフリップ変数として決定された例が示されている。レプリカ0において決定されたフリップ変数である2つの補助変数の識別番号が、FIFOを介して更新部33mに供給される(タイミングt16,t17)。なお、図示が省略されているが、前述のHbestとH(x)との比較や、xの値に基づく各制約条件の違反の有無の判定などが、タイミングt17から行われる。これらの処理が行われた後、補助変数に対する更新フェーズが開始する(タイミングt18)。
【0147】
タイミングt18,t19では、フリップ変数である2つの補助変数の値が順に更新されている。そして、タイミングt19,t20では、更新された補助変数に応じた重み値が重み値保持部33dからリードされるとともに、λが変数設定部33aからリードされる。そして、リードされる各値に基づいて、hの更新が行われる(タイミングt20~t21)。なお、タイミングt18から、HbestとH(x)との比較結果と、xの値に基づく各制約条件の違反の有無の判定結果に基づいてλの計算(調整)が行われる。λの値が変更された場合のhの補正もタイミングt20~t21で行われる。
【0148】
タイミングt21~t23では、補助変数の値の変更に伴わないλの変更による、hの補正が行われる。全λ(M個のλ)の値を減少させる調整が行われる場合、たとえば、Mクロックサイクルの期間で補正処理が行われる。ただ、値が変化してもhに影響を与えないλの変更によるhの補正処理はスキップすることができる。
【0149】
タイミングt22からは、hに影響を与えない(局所場変更を伴わない)λの計算が行われる。この計算は、hに影響を与えないため、hの補正が行われるタイミングt21~t23の間のタイミングt22から開始できる。
【0150】
タイミングt24~t25では、λの変更によるH(x)の補正処理が行われる。タイミングt25から再び、タイミングt10からの処理と同様の処理が行われる。
次に、上記のようなλの調整の有無による効果の差異を評価した例を示す。計算対象の組合せ最適化問題は、最適解が既知である、5800人を404個のエリアに配置する集合被覆問題である。λの調整を行わない場合、10回のイタレーションでも最適化に到達できなかった。上記のようなλの調整を行った場合、225603回のイタレーションで最適解に到達した。
【0151】
図11は、データ処理装置の他の例を示す図である。図11において、図3に示した要素と同じ要素については同一符号が付されている。
データ処理装置40は、バスに接続されたアクセラレータカード41を有する。
【0152】
アクセラレータカード41は、組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード41は、FPGA41a及びDRAM41bを有する。
【0153】
データ処理装置40では、FPGA41aとDRAM41bにより、たとえば、図1に示した処理部12や記憶部11、または図4に示した制御部32や探索部33の処理が行われる。この場合、図1に示した処理部12や記憶部11、または図4に示した制御部32や探索部33の各部は、FPGA41a内に構築される各種の回路、FPGA41a内のメモリまたはDRAM41bにより実現される。図9図10に示したパイプライン処理も、たとえば、FPGA41a内のFIFOを用いて実現できる。
【0154】
なお、アクセラレータカード41は、複数あってもよい。
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0155】
上記では、制約条件として、主に不等式制約を用いた場合について説明したが、等式制約など他の制約条件を用いることもできる。
たとえば、等式制約が用いられる場合、総エネルギー(H(x))は、式(4)の代わりに、以下の式(11)が用いられる。
【0156】
【数11】
【0157】
ここで、補助変数(x)として、-1または1の値をもつスピン変数を用いることができる。その場合、Δx=-2xと表せる。等式制約が満たされない場合(R(x)≠Uの場合)、xは-1となり、等式制約が満たされる場合(R(x)=Uの場合)、xは+1となる。
【0158】
このような補助変数を用いた場合、ΔHは、上記の場合と同様にΔH=+λΔxと表せる。
なお、スピン変数を用いずにバイナリ変数を用いた場合、ΔH=+λΔxの代わりにΔH=+2λΔxとすればよい。
【0159】
また、補助変数は3値以上の値を有していてもよい。
図12は、4値の補助変数を用いた例を示す図である。縦軸は、識別番号がkの制約項の大きさを表し、横軸はhを表す。
【0160】
は、0、1、2、3の4つの値をもつ。x=0により、制約条件が充足されている状態が示され、x=1、2、3により、3つの制約条件違反状態が示されている。図12の例では、(h,g)から(h,g)までの制約違反状態と、(h,g)から(h,g)までの制約違反状態と、(h,g)以上の制約違反状態が示されている。
【0161】
また、前述のλとして、x=1の場合はλ、x=2の場合はλ、x=3の場合はλが用いられる。これにより、x=1、2、3の何れであるかによって、hの増加にしたがって、異なる傾きで増加する制約項を用いることができる。
【0162】
上記のような補助変数を用いる場合、(h,g)から(h,g)に変化する場合のΔHi→jは、ΔHi→j=[λ(h-h)+g]-[λ(h-h)+g]=(λ-λ)h+[(g-λ)-(g-λ)]と表すことができる。
【符号の説明】
【0163】
10 データ処理装置
11 記憶部
12 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12