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

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

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

特開2024-167845プログラム、データ処理装置及びデータ処理方法
<>
  • 特開-プログラム、データ処理装置及びデータ処理方法 図1
  • 特開-プログラム、データ処理装置及びデータ処理方法 図2
  • 特開-プログラム、データ処理装置及びデータ処理方法 図3
  • 特開-プログラム、データ処理装置及びデータ処理方法 図4
  • 特開-プログラム、データ処理装置及びデータ処理方法 図5
  • 特開-プログラム、データ処理装置及びデータ処理方法 図6
  • 特開-プログラム、データ処理装置及びデータ処理方法 図7
  • 特開-プログラム、データ処理装置及びデータ処理方法 図8
  • 特開-プログラム、データ処理装置及びデータ処理方法 図9
  • 特開-プログラム、データ処理装置及びデータ処理方法 図10
  • 特開-プログラム、データ処理装置及びデータ処理方法 図11
  • 特開-プログラム、データ処理装置及びデータ処理方法 図12
  • 特開-プログラム、データ処理装置及びデータ処理方法 図13
  • 特開-プログラム、データ処理装置及びデータ処理方法 図14
  • 特開-プログラム、データ処理装置及びデータ処理方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024167845
(43)【公開日】2024-12-04
(54)【発明の名称】プログラム、データ処理装置及びデータ処理方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20241127BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023084203
(22)【出願日】2023-05-22
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】此島 眞喜子
(72)【発明者】
【氏名】田村 泰孝
(57)【要約】
【課題】制約条件をもつ組合せ最適化問題の計算量を削減する。
【解決手段】処理部12は、評価関数情報11aに基づいて、複数の制約項のそれぞれに対して、複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数(y)の値を特定し、yの値に基づいて、yを量子化した第2補助変数(z)の値を生成し、複数の制約項のうちの、評価関数の複数の状態変数のうちの第1状態変数(x)の値の変化に伴いzの値が変化する第1制約項について、xの値の変化に伴う評価関数の値の第1変化量(ΔH)に対する第1制約項の寄与量(g (k))の、xの値の変化に伴う第1差分値(Δg (k))を算出し、Δg (k)を用いてΔHの算出、またはΔg (k)を用いて、複数の状態変数のそれぞれの変化に伴う評価関数の値の第2変化量の特定に用いられる局所場の更新を行う。
【選択図】図1
【特許請求の範囲】
【請求項1】
コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を記憶部から取得し、
前記評価関数情報に基づいて、前記複数の制約項のそれぞれに対して、前記複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数の値を特定し、
前記第1補助変数の値に基づいて、前記第1補助変数を量子化した第2補助変数の値を生成し、
前記複数の制約項のうちの、前記評価関数の複数の状態変数のうちの第1状態変数の値の変化に伴い前記第2補助変数の値が変化する第1制約項について、前記第1状態変数の値の変化に伴う前記評価関数の値の第1変化量に対する前記第1制約項の寄与量の、前記第1状態変数の値の変化に伴う第1差分値を算出し、
前記第1差分値を用いて前記第1変化量の算出、または前記第1差分値を用いて、前記複数の状態変数のそれぞれの変化に伴う前記評価関数の値の第2変化量の特定に用いられる局所場の更新を行う、
処理をコンピュータに実行させるプログラム。
【請求項2】
前記第1状態変数の値の変化に伴う前記コスト項の第3変化量と、前記第1差分値から得られる前記第1制約項の第4変化量と、を加算することで、前記第1変化量を算出し、
前記第1変化量と閾値との比較結果に基づいて、前記第1状態変数の値の変化を許容するか否かを判定し、
前記第1状態変数の値の変化を許容すると判定した場合、前記第1状態変数の値を更新する、
処理を前記コンピュータに実行させる請求項1に記載のプログラム。
【請求項3】
前記局所場を保持し、
前記第1状態変数の値の変化が許容された場合、前記複数の状態変数のそれぞれに対する前記局所場に、前記第1差分値を加えることで、前記局所場を更新する、
処理を前記コンピュータに実行させる請求項1に記載のプログラム。
【請求項4】
前記第2補助変数は、前記第1補助変数の値が正であるか負であるか0であるかを示す3値の値である、請求項1に記載のプログラム。
【請求項5】
前記第1状態変数の値の変化に伴う、前記第2補助変数の値の第2差分値を算出し、
前記第2差分値と、前記第1状態変数の値と、前記第1状態変数と前記第1制約項との間の重み値と、に基づいて前記第1差分値を算出する、
処理を前記コンピュータに実行させる請求項1に記載のプログラム。
【請求項6】
コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を記憶する記憶部と、
前記評価関数情報を記憶部から取得し、前記評価関数情報に基づいて、前記複数の制約項のそれぞれに対して、前記複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数の値を特定し、前記第1補助変数の値に基づいて、前記第1補助変数を量子化した第2補助変数の値を生成し、前記複数の制約項のうちの、前記評価関数の複数の状態変数のうちの第1状態変数の値の変化に伴い前記第2補助変数の値が変化する第1制約項について、前記第1状態変数の値の変化に伴う前記評価関数の値の第1変化量に対する前記第1制約項の寄与量の、前記第1状態変数の値の変化に伴う第1差分値を算出し、前記第1差分値を用いて前記第1変化量の算出、または前記第1差分値を用いて、前記複数の状態変数のそれぞれの変化に伴う前記評価関数の値の第2変化量の特定に用いられる局所場の更新を行う処理部と、
を有するデータ処理装置。
【請求項7】
コンピュータが、
コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を記憶部から取得し、
前記評価関数情報に基づいて、前記複数の制約項のそれぞれに対して、前記複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数の値を特定し、
前記第1補助変数の値に基づいて、前記第1補助変数を量子化した第2補助変数の値を生成し、
前記複数の制約項のうちの、前記評価関数の複数の状態変数のうちの第1状態変数の値の変化に伴い前記第2補助変数の値が変化する第1制約項について、前記第1状態変数の値の変化に伴う前記評価関数の値の第1変化量に対する前記第1制約項の寄与量の、前記第1状態変数の値の変化に伴う第1差分値を算出し、
前記第1差分値を用いて前記第1変化量の算出、または前記第1差分値を用いて、前記複数の状態変数のそれぞれの変化に伴う前記評価関数の値の第2変化量の特定に用いられる局所場の更新を行う、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、データ処理装置及びデータ処理方法に関する。
【背景技術】
【0002】
組合せ最適化問題には解が満たすべき制約条件をもつものがあり、制約条件を考慮した探索を行う手法が提案されている(たとえば、特許文献1~3参照)。制約条件には、不等式制約、等式制約、絶対値制約などがある。制約条件を反映した評価関数は、以下の式(1)で表せる。
【0003】
【数1】
【0004】
式(1)の右辺の第1項目はコスト項であり、右辺の2項目は複数の制約項の合計値である。複数の制約項の合計値は、以下の式(2)で表せる。
【0005】
【数2】
【0006】
式(2)において、P(x)は識別番号がkの制約に関する制約項のペナルティ関数である。P(x)は、非線形な関数で表される。mは制約項の総数を表す。また、λは識別番号がkの制約についての所定の係数(以下制約係数と呼ぶ)である。以下では、λ(x)を制約項という。
【0007】
制約条件が不等式制約である場合、式(2)のP(x)は、以下の式(3)で表すことができる。
【0008】
【数3】
【0009】
制約条件が等式制約である場合、式(2)のP(x)は、以下の式(4)で表すことができる。
【0010】
【数4】
【0011】
式(3)、式(4)に示されるようなP(x)において、Pin (k)(x)は、識別番号がkの制約を受ける入力量(リソース量、リソース使用量とも呼ばれる)である。入力量は、以下の式(5)で表される。
【0012】
【数5】
【0013】
kiは、識別番号がkの制約におけるxの重みを示す係数(重み値)である。b(k)は、識別番号がkの制約における入力量の上限などを表す係数である。
一方、コスト項は、たとえば、以下の式(6)のような2次形式の関数で表される。
【0014】
【数6】
【0015】
右辺の1項目は、n個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号がiについてのバイアス係数を示している。
【0016】
また、xの値の変化に伴うコスト項の変化量(ΔE)は、以下の式(7)で表される。
【0017】
【数7】
【0018】
式(7)において、xが1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hは局所場と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEとなる。このため、hは評価関の値の変化量の特定に用いられる変数ということもできる。このような、hを保持し、適宜更新することで、積和演算を行わなくても、ΔEを算出できる。
【0019】
組合せ最適化問題の解の探索では、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法が用いられる。MCMC法の一種として、疑似焼き鈍し法やレプリカ交換法がある。このようなMCMC法による探索では、xの値の変化に伴う評価関数の値の変化量(ΔH)が、乱数と温度パラメータの値に基づいて得られる閾値(ノイズ値と呼ばれることもある)より小さい場合、xの値を反転させる、という処理が繰り返される。これにより、評価関数の値が極小になる状態(状態変数の値の組合せ)の探索が行われる。評価関数の極小値のうちの最小値になる状態が最適解となる。
【0020】
制約項を含む評価関数が用いられる場合、ΔHは、ΔEと、xの値の変化に伴うPtot(x)の変化量との合計値である。
【先行技術文献】
【特許文献】
【0021】
【特許文献1】特開2020-204928号公報
【特許文献2】米国特許出願公開第2008/0065573号明細書
【特許文献3】国際公開第2020/196862号
【発明の概要】
【発明が解決しようとする課題】
【0022】
制約項は、たとえば、式(3)や式(4)に示したような非線形なペナルティ関数を用いて表される。このため、コスト項のように局所場(h)を用いて、制約項の変化量を算出することが難しい。このため、xの値の変化に伴う制約項の変化量を計算するたびに、x以外の状態変数の値も使用して、各制約項に関して、たとえば、式(5)に示すような入力量の計算をすることになる。このため、計算量が大きくなってしまう場合がある。
【0023】
1つの側面では、本発明は、制約条件をもつ組合せ最適化問題の計算量を削減することを目的とする。
【課題を解決するための手段】
【0024】
1つの実施態様では、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を記憶部から取得し、前記評価関数情報に基づいて、前記複数の制約項のそれぞれに対して、前記複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数の値を特定し、前記第1補助変数の値に基づいて、前記第1補助変数を量子化した第2補助変数の値を生成し、前記複数の制約項のうちの、前記評価関数の複数の状態変数のうちの第1状態変数の値の変化に伴い前記第2補助変数の値が変化する第1制約項について、前記第1状態変数の値の変化に伴う前記評価関数の値の第1変化量に対する前記第1制約項の寄与量の、前記第1状態変数の値の変化に伴う第1差分値を算出し、前記第1差分値を用いて前記第1変化量の算出、または前記第1差分値を用いて、前記複数の状態変数のそれぞれの変化に伴う前記評価関数の値の第2変化量の特定に用いられる局所場の更新を行う、処理をコンピュータに実行させるプログラムが提供される。
【0025】
また、1つの実施態様では、データ処理装置が提供される。
また、1つの実施態様では、データ処理方法が提供される。
【発明の効果】
【0026】
1つの側面では、本発明は、制約条件をもつ組合せ最適化問題の計算量を削減することができる。
【図面の簡単な説明】
【0027】
図1】第1の実施の形態のデータ処理装置の一例を示す図である。
図2】制約条件が等式制約である場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
図3】データ処理装置のハードウェア例を示す図である。
図4】データ処理装置の機能例を示すブロック図である。
図5】第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
図6】比較例の探索部を示す図である。
図7】比較例の探索部を含むデータ処理装置の処理手順を示すフローチャートである。
図8】探索部のハードウェア例を示す図である。
図9】h更新回路とy更新回路の一例を示す図である。
図10】g/Δg算出回路の一例であるg算出回路の例を示す図である。
図11】g/Δg算出回路の一例であるΔg算出回路の例を示す図である。
図12】データ処理装置の動作タイミングの一例を示すタイミングチャートである。
図13】制約条件が不等式制約でありCkiが3値の場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
図14】制約条件が等式制約でありCkiが3値の場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
図15】変形例におけるΔg算出回路を示す図である。
【発明を実施するための形態】
【0028】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す各実施の形態のデータ処理装置は、制約条件をもつ組合せ最適化問題の解を探索するものである。制約条件をもつ組合せ最適化問題の一例としてナップサック問題がある。
【0029】
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置の一例を示す図である。
第1の実施の形態のデータ処理装置10は、記憶部11及び処理部12を有する。
【0030】
記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリを含んでいてもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージを含んでいてもよい。また、記憶部11は、揮発性半導体メモリと不揮発性ストレージの両方を含んでいてもよい。
【0031】
記憶部11は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報11aを記憶する。評価関数情報11aは、式(1)に示したようなE(x)とPtot(x)の情報を含む。E(x)が、式(6)のように表される場合、E(x)の情報には、Wij、bが含まれる。Ptot(x)の情報には、たとえば、式(2)のλやm、式(5)のCki、b(k)が含まれる。
【0032】
なお、記憶部11は、さらに組合せ最適化問題の計算条件を記憶してもよい。たとえば、レプリカ交換法による探索が行われる場合、計算条件は、レプリカ数や各レプリカに設定する温度パラメータの値などを含む。
【0033】
処理部12は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路で実現できる。ただし、処理部12は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサで実現することもできる。プロセッサは、たとえば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。また、処理部12は、プロセッサと、ASICやFPGAなどの電子回路を含んでいてもよい。
【0034】
図1には、処理部12が行う処理の手順の例が示されている。
ステップS1:処理部12は、評価関数情報11aを記憶部11から取得する。
ステップS2:処理部12は、評価関数情報11aに基づいて、複数の制約項のそれぞれに対して、複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数の値(初期値)を特定する。識別番号がkの制約を受ける入力量は、前述の式(5)で表される。以下では、入力量を、第1補助変数(y)で表す。すなわちyは、以下の式(8)で表される。
【0035】
【数8】
【0036】
なお、式(8)のbと、式(5)のb(k)は同じものである。yの値は、評価関数情報11aに含まれるCki、b及び状態変数の数(n)と、x~xの初期値から計算される。x~xの初期値は、記憶部11に記憶されていてもよいし、データ処理装置10の外部から、たとえば、ユーザによる入力デバイスの操作により入力されたものであってもよい。x~xの初期値は、たとえば、全て0であってもよいし、全て1であってもよい。また、x~xの初期値は、乱数であってもよい。
【0037】
図1には、不等式制約のペナルティ関数(P)とyとの関係の一例が示されている。横軸はyの値を表し、縦軸はPの大きさを表す。
は、式(3)に示したような関数で表されるものである。このため、入力量を表すyが0以下の場合、P=0、yが0より大きい場合、P=yとなる。
【0038】
ステップS3:処理部12は、yの値に基づいて、yを量子化した第2補助変数(z)の値を生成する。zは、たとえば、yが正であるか負であるか0であるかを示す3値の値である。すなわち、zは、以下の式(9)で表すことができる。
【0039】
【数9】
【0040】
なお、zは、0、1、2の3値に限定されず、11、00、01の3値であってもよい。このような3値のzを用いる理由については、後述する。
ステップS4:処理部12は、yの値に基づいて、xの値の変化に伴う評価関数の値の変化量(ΔH)に対する、複数の制約項のそれぞれの寄与量を算出する。寄与量は、ΔHの特定に用いられる局所場(h)への寄与の大きさを表す値ということもできる。ΔHは、以下の式(10)で表せる。
【0041】
【数10】
【0042】
Δxに応じてhに符号(+1または-1)を乗じたものがΔHとなる。hは、以下の式(11)で表せる。
【0043】
【数11】
【0044】
(k)は、ΔH(またはh)に対する、識別番号=kの制約に関する制約項の寄与量である。制約条件が不等式制約の場合、g (k)は以下の式(12)で表せる。
【0045】
【数12】
【0046】
(k)は、図1に示されているようなP-yのグラフの傾きに-λを乗じたものである。yが0の場合には、xが変化する方向によりP-yのグラフの傾きが異なることを考慮して、g (k)は、以下の式(13)のように表すことができる。
【0047】
【数13】
【0048】
kiは、識別番号がkの制約におけるxの重みを示す重み値である。以下では、Ckiは、xがPに影響を与えるか否かを表す値であるものとする。xが、Pに影響を与える場合、Cki=1であり、xが、Pに影響を与えない場合、Cki=0である。
【0049】
図1には制約条件が不等式制約の場合の、g (k)とyとの関係の一例を示す図が示されている。横軸はyの値を表し、縦軸はg (k)の値を表している。y=0のとき、式(13)より、x=1の場合はg (k)=0となり、x=0の場合はg (k)=-λkiとなっている。
【0050】
前述の3値のzを用いる理由は、上記のように、yが正であるか負であるか0であるかによって、g (k)が3種類の値に区別できるためである。
なお、処理部12は、後述のΔg (k)を、Δzから算出する場合には、g (k)自体を計算しなくてもよい。
【0051】
以上のステップS1~S4の処理が初期化処理であり、その後、以下の探索処理が行われる。なお、ステップS2~S4の処理で算出されたyやzの値及びg (k)は、処理部12の図示しない保持部(たとえば、レジスタ)に保持される。式(11)で表されるhの値についても、保持部に保持されるようにしてもよい。また、記憶部11が、y、z、g (k)またはhの値を記憶してもよい。
【0052】
ステップS5:処理部12は、x~xのうち遷移候補のxを選択する。処理部12は、x~xからランダムにxを選択してもよいし、所定のルールにしたがって、xを1つ選択してもよい。また、処理部12は、ステップS5の処理では、xの選択を行わず、たとえば、x~xについて並列に、以下のステップS6~S8の処理を行ってもよい。
【0053】
ステップS6:処理部12は、x~xのうちxの値の変化に伴い、m個の制約項のうち何れかの制約項に関するzの値が変化するか否かを判定する。xの値が変化した場合のyの値は、元のyの値に対して、CkiΔxを加えることで得られる。そして、xの値が変化した場合のyが、正であるか負であるか0であるかにより、式(9)によって、xの値が変化した場合のzの値が得られる。
【0054】
処理部12は、zの値が変化すると判定した場合、ステップS7の処理を行い、zの値が変化しないと判定した場合、ステップS8の処理を行う。
ステップS7:処理部12は、xの値の変化に伴うg (k)の差分値(Δg (k))を算出する。式(9)と式(13)からわかるように、g (k)は、zの値が変化するときに値が変化し、それ以外の場合には、値が変化しない。処理部12は、保持されている現在のg (k)と、変化後のxの値に基づいて式(13)にしたがって算出されるg (k)との差分値を算出してもよい。または、処理部12は、zの差分値(Δz)に応じて、Δg (k)を、以下の式(14)にしたがって算出してもよい。
【0055】
【数14】
【0056】
が0と1との間で変化した場合と、1と2との間で変化した場合とで、2種類のΔg (k)の値が得られる。式(14)にしたがってΔg (k)を算出する場合、処理部12は、ステップS4の処理で、g (k)自体を計算しなくてもよい。
【0057】
ステップS8:処理部12は、xの値の変化を許容するか否か(遷移受入可否)を判定する。遷移受入可否は、xの値の変化に伴うコスト項の変化量(ΔE)と、Δg (k)に基づいて算出されるPの変化量(ΔP)との加算値(ΔH)に基づいて行われる。ΔEは、式(7)にしたがって、計算できる。ΔPは、Δg (k)に-Δxを乗じることで算出できる。なお、式(11)で表されるhが保持されている場合、処理部12は、hに-Δxを乗じることでΔHを算出してもよい。
【0058】
そして、処理部12は、たとえば、ΔHが、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、遷移候補の状態変数の値の変化を許容する。閾値として、たとえば、log(rand)×Tが用いられる。randは乱数値、Tは温度パラメータの値である。
【0059】
~xに対して並列にステップS6~S8の処理が行われる場合、x~xの変化に対応するΔH(i=1~n)が算出される。そして、ΔHに基づいて、x~xの何れかの値の変化が許容される。
【0060】
ステップS9:処理部12は、xの値の変化を許容すると判定した場合、xの値を更新する。また、処理部12は、xの値の変化に応じて、y及びzの値を更新する。処理部12は、g (k)またはhの値を保持している場合はこれらの値を、Δg (k)を用いて更新する。処理部12は、評価関数の値を更新してもよい。
【0061】
処理部12は、ステップS9の処理後、ステップS5からの処理を繰り返す。
処理部12は、疑似焼き鈍し法を行う場合、ステップS5~S9の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータの値を小さくしていく。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときのx~xの値を、組合せ最適化問題の解の探索結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、遷移が受け入れられるたびに、たとえば、評価関数の値を更新し、これまでの最小値とその最小値が得られたときのx~xの値を保持しておいてもよい。その場合、処理部12は、探索終了条件が満たされたときに記憶されている最小値に対応するx~xの値を、探索結果として出力してもよい。
【0062】
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、図1に示したステップS5~S9の処理を行う。そして、処理部12は、ステップS5~S9の処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、複数のレプリカのうち2つをランダムに選択する。そして、処理部12は、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはx~xの値を交換する。処理部12は、たとえば、各レプリカにおいて遷移が受け入れられるたびに、評価関数の値を更新し、これまでの最小値とその最小値が得られたときのx~xの値を保持する。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときに、各レプリカにおいてに記憶されている最小値のうち、全レプリカにおいて最小のものに対応するx~xの値を、探索結果として出力する。
【0063】
以上のように、第1の実施の形態のデータ処理装置10の処理部12は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報11aを記憶部11から取得する。そして、処理部12は、評価関数情報11aに基づいて、複数の制約項のそれぞれに対して、複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数(y)の値を特定する。また、処理部12は、yの値に基づいて、yを量子化した第2補助変数(z)の値を生成する。そして、処理部12は、複数の制約項のうちの、x~xのうちのxの値の変化に伴いzの値が変化する制約項について、xの値の変化に伴う評価関数の値の変化量に対する制約項の寄与量の、xの値の変化に伴う差分値(Δg (k))を算出する。処理部12は、Δg (k)を用いてΔHの算出、またはΔg (k)を用いてh(i=1~n)の更新を行う。
【0064】
これにより、xの値の変化に伴いzの値が変化する制約項についてだけ、制約項の変化量の算出、または、hの更新に用いられるΔg (k)の算出が行われる。このため、処理部12は、xの値の変化に伴うΔHの算出、またはh(i=1~n)の更新のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。
【0065】
たとえば、状態変数の数がn=100で、制約項の総数がm=10であり、それぞれの制約項が1つの状態変数に関わっている場合(各制約項の100個のCkiうち1つ以外が0である場合)を考える。この場合、全制約項に対して全状態変数の値を用いた計算を行う場合に比べて、計算量を、1/(10×100)に削減できる。
【0066】
また、計算量を削減できることから、計算を行うハードウェアの物量の増加を抑えることができる。
また、Δg (k)の算出には、3値のzまたはΔzが用いられるため、式(5)に示したような実数変数である入力量を用いて制約項の変化量を計算する場合に比べて、誤差の蓄積を抑えられる。
【0067】
このようなデータ処理装置10は、制約条件をもつ組合せ最適化問題に変換できる現代社会における様々な問題を解く際に、計算量やハードウェアの物量を抑え、精度のよい解を得るための手段として、役立つことが期待できる。
【0068】
なお、上記の例では、制約条件が不等式制約であるものとして説明したが、これに限定されない。制約条件は等式制約であってもよい。
図2は、制約条件が等式制約である場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
【0069】
とyとの関係を示す図2(A)において、横軸はyの値を表し、縦軸は、Pの値を表している。制約条件が等式制約である場合、Pは、式(4)に示したような関数で表されるものである。このため、P=|y|となる。
【0070】
制約条件が等式制約である場合、g (k)とΔg (k)は、以下の式(15)、式(16)のように表すことができる。
【0071】
【数15】
【0072】
【数16】
【0073】
λ は、y=Pin (k)<0の場合、すなわちz=0の場合の制約係数である。λ は、y=Pin (k)>0の場合、すなわちz=2の場合の制約係数である。
【0074】
(k)とyとの関係を示す図2(B)において、横軸はyの値を表し、縦軸はg (k)の値を表している。
=0のとき、式(15)より、x=1の場合はg (k)=+λ kiとなり、x=0の場合はg (k)=-λ kiとなっている。
【0075】
制約条件が等式制約である場合、このようなg (k)とΔg (k)を用いることで、制約条件が不等式制約である場合と同様の効果が得られる。
(第2の実施の形態)
次に、第2の実施の形態のデータ処理装置を説明する。
【0076】
図3は、データ処理装置のハードウェア例を示す図である。
データ処理装置20は、たとえば、コンピュータであり、CPU21、RAM22、HDD23、GPU24、入力インタフェース25、媒体リーダ26及び通信インタフェース27を有する。上記ユニットは、バスに接続されている。
【0077】
CPU21は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU21は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM22にロードし、プログラムを実行する。なお、CPU21は、たとえば、複数のレプリカの処理を並列に実行するために、複数のプロセッサコアを備えてもよい。また、データ処理装置20は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0078】
RAM22は、CPU21が実行するプログラムやCPU21が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置20は、RAM22以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0079】
HDD23は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、前述のような組合せ最適化問題の解を探索する処理をデータ処理装置20に実行させるプログラムが含まれる。なお、データ処理装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0080】
GPU24は、CPU21からの命令にしたがって、データ処理装置20に接続されたディスプレイ24aに画像(たとえば、組合せ最適化問題の計算結果などを表す画像)を出力する。ディスプレイ24aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0081】
入力インタフェース25は、データ処理装置20に接続された入力デバイス25aから入力信号を取得し、CPU21に出力する。入力デバイス25aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置20に、複数の種類の入力デバイスが接続されていてもよい。
【0082】
媒体リーダ26は、記録媒体26aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体26aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、FDやHDDが含まれる。光ディスクには、CDやDVDが含まれる。
【0083】
媒体リーダ26は、たとえば、記録媒体26aから読み取ったプログラムやデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU21によって実行される。なお、記録媒体26aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体26aやHDD23を、コンピュータ読み取り可能な記録媒体ということがある。
【0084】
通信インタフェース27は、ネットワーク27aに接続され、ネットワーク27aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース27は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0085】
次に、データ処理装置20の機能について説明する。
図4は、データ処理装置の機能例を示すブロック図である。
データ処理装置20は、入力部31、記憶部32、初期化処理部33、探索部34、出力部35を有する。記憶部32は、たとえば、RAM22またはHDD23を用いて実装される。入力部31、初期化処理部33、探索部34、出力部35は、たとえば、CPU21及びプログラムを用いて実装される。
【0086】
記憶部32は、図1に示した記憶部11の一例の機能ブロックであり、その他の機能ブロックは、図1に示した処理部12の一例の機能ブロックである。
入力部31は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を取得する。評価関数情報は、式(1)に示したようなE(x)とPtot(x)の情報を含む。E(x)が、式(6)のように表される場合、E(x)の情報には、Wij、bが含まれる。Ptot(x)の情報には、たとえば、式(2)のλ、m、式(5)のCki、b(k)が含まれる。
【0087】
入力部31は、さらに、組合せ最適化問題の計算条件を取得する。たとえば、レプリカ交換法による探索が行われる場合、計算条件は、レプリカ数や各レプリカに設定する温度パラメータの値などを含む。
【0088】
また、入力部31は、ユーザの入力デバイス25aの操作により入力されたx~xの初期値を取得してもよい。x~xの初期値は、たとえば、全て0であってもよいし、全て1であってもよい。また、x~xの初期値は、乱数であってもよい。
【0089】
記憶部32は、入力部31が取得した評価関数情報などを記憶する。
初期化処理部33は、記憶部32に記憶された評価関数情報やx~xの初期値を取得し、これらに基づいて、探索部34の初期化処理を行う。初期化処理は、たとえば、以下の処理を含む。
【0090】
初期化処理部33は、評価関数情報と、x~xの初期値に基づいて、複数の制約項のそれぞれに対して、前述の式(8)で表されるyの初期値を算出する。また、初期化処理部33は、yの初期値に基づいて、前述の式(9)で表されるzの初期値を算出する。初期化処理部33は、評価関数情報に基づいてyの初期値を算出するとともに、式(13)にしたがって、g (k)の初期値を算出してもよい。
【0091】
探索部34は、遷移候補選択部34a、ΔE算出部34b、Δg算出部34c、ΔH算出部34d、遷移受入可否判定部34e、状態更新部34f、H更新部34gを有する。
遷移候補選択部34aは、x~xのうち遷移候補のxを選択する。遷移候補選択部34aは、x~xからランダムにxを選択してもよいし、所定のルールにしたがって、xを1つ選択してもよい。また、遷移候補選択部34aは、選択したxの値と、xの値を変化させたときの差分値であるΔx=1-2xを出力する。
【0092】
ΔE算出部34bは、Δxを受けて、式(7)に基づいて、ΔEを算出する。
Δg算出部34cは、Δxを受けて、xの値が変化した場合のyの値を求める。xの値が変化した場合のyの値は、元のyの値に対して、CkiΔxを加えることで得られる。そして、Δg算出部34cは、xの値が変化した場合のyの値が、正であるか負であるか0であるかにより、式(9)にしたがって、zの値を求める。Δg算出部34cは、zの値が元のzの値から変化した場合、Δg (k)を算出する。
【0093】
Δg算出部34cは、保持されている現在のg (k)と、変化後のxの値に基づいて式(13)にしたがって算出されるg (k)との差分値を算出してもよい。または、Δg算出部34cは、zの差分値(Δz)に応じて、前述の式(14)にしたがって、Δg (k)を算出してもよい。Δg算出部34cは、Δg (k)に-Δxを乗じることで算出されるΔPを出力する。
【0094】
ΔH算出部34dは、ΔEと、ΔPとを加算することで、xの値の変化に伴う評価関数の変化量(ΔH)を算出する。
遷移受入可否判定部34eは、xの値の変化を許容するか否かを判定する。たとえば、遷移受入可否判定部34eは、ΔHが、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、遷移候補の状態変数の値の変化を許容する。
【0095】
状態更新部34fは、xの値の変化を許容すると判定した場合、xの値を更新する。なお、xの値の変化が許容された場合、y及びzの値についても、上記のように算出された値に更新される。処理部12は、g (k)またはhの値を保持している場合はこれらの値もxの値の変化に応じて更新する。
【0096】
H更新部34gは、xの値の変化が許容された場合、元の評価関数の値(H)にΔHを加えることでHを更新する。
出力部35は、探索終了条件が満たされたときに、探索結果(たとえば、これまでに得られた評価関数の最小値に対応するx~xの値)を出力する。出力部35は、たとえば、探索結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0097】
図5は、第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
ステップS10:入力部31は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を取得する。
【0098】
ステップS11:初期化処理部33は、記憶部32に記憶された評価関数情報やx~xの初期値に基づいて、前述のような初期化処理を行う。
ステップS12:遷移候補選択部34aは、x~xのうち遷移候補のxを選択する。
【0099】
ステップS13:ΔE算出部34bは、式(7)に基づいて、ΔEを算出する。
ステップS14:Δg算出部34cは、xの値が変化した場合のyの値を求め、式(9)にしたがって、zの値を求める。そして、Δg算出部34cは、zの値が元のzの値から変化しているか否かを判定する。Δg算出部34cは、zの値が元のzの値から変化していると判定した場合、ステップS15の処理を行う。Δg算出部34cは、zの値が元のzの値から変化していないと判定した場合、ステップS16の処理を行う。
【0100】
ステップS15:Δg算出部34cは、保持されている現在のg (k)と、変化後のxの値に基づいて式(13)にしたがって算出されるg (k)との差分値を算出する。または、Δg算出部34cは、zの差分値(Δz)に応じて、前述の式(14)にしたがって、Δg (k)を算出する。
【0101】
ステップS16:ΔH算出部34dは、ΔEと、Δg (k)に-Δxを乗じることで算出されるΔPとを加算することで、ΔHを算出する。
ステップS17:遷移受入可否判定部34eは、xの値の変化を許容するか否かを判定する。遷移受入可否判定部34eがxの値の変化を許容すると判定した場合、ステップS18の処理が行われる。遷移受入可否判定部34eがxの値の変化を許容しないと判定した場合、ステップS19の処理が行われる。
【0102】
ステップS18:状態更新部34fやH更新部34gにより前述の更新処理が行われる。
ステップS19:探索部34の図示しない判定部は、探索終了条件が満たされたか否かを判定する。たとえば、所定回数、ステップS12の処理が繰り返された場合、または所定の値より小さい評価関数の値が得られた場合、探索終了条件が満たされたと判定される。探索終了条件が満たされたと判定された場合、ステップS20の処理が行われる。探索終了条件が満たされていないと判定された場合、ステップS12からの処理が繰り返される。
【0103】
疑似焼き鈍し法が適用される場合、ステップS12~S19の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、遷移受入可否判定部34eが用いる閾値を生成するための温度パラメータの値が小さくされる。
【0104】
レプリカ交換法が適用される場合、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、ステップS12~S19の処理が行われる。そして、ステップS12~S19の処理が所定回数繰り返されるごとに、レプリカ交換が行われる。たとえば、複数のレプリカのうち2つがランダムに選択され、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはx~xの値が交換される。
【0105】
ステップS20:出力部35は、探索結果を出力する。これによりデータ処理装置20による処理が終了する。
なお、上記の処理の順序は一例であり適宜処理順序を入れ替えてもよい。
(比較例)
図6は、比較例の探索部を示す図である。図6において、図4に示したデータ処理装置20の探索部34と同じ要素については、同一符号が付されている。
【0106】
比較例の探索部40において、遷移候補選択部41は、遷移候補選択部34aと同様にx~xのうち遷移候補のxを選択する。遷移候補選択部41は、選択したxの値を変化させたときのx~xの値(x’)を出力するとともに、xの値を変化させたときの差分値であるΔxを出力する。
【0107】
比較例の探索部40は、探索部34と異なり、Ptot算出部42、Ptot0更新部43、ΔP算出部44を有する。
tot算出部42は、選択したxの値を変化させたときのx~xの値(x’)を用いて、式(2)で表されるm個の制約項の合計値を算出する。
【0108】
tot0更新部43は、xの値の変化前のm個の制約項の合計値であるPtot0を更新し、出力する。Ptot0の値は、遷移受入可否判定部34eがxの値の変化を許容した場合に、Ptot算出部42が出力するPtotの値に更新される。
【0109】
ΔP算出部44は、PtotとPtot0との差分であるΔPtotを算出し、出力する。
比較例の探索部40において、ΔH算出部45は、ΔEと、ΔPtotとを加算することで、ΔHを算出し、出力する。
【0110】
図7は、比較例の探索部を含むデータ処理装置の処理手順を示すフローチャートである。
ステップS30~S33の処理は、図5に示したステップS10~S13の処理と同じである。
【0111】
ステップS34:Ptot算出部42は、選択したxの値を変化させたときのx~xの値(x’)を用いて、式(2)で表されるm個の制約項の合計値(Ptotと)を算出する。
【0112】
ステップS35:ΔP算出部44は、PtotとPtot0との差分であるΔPtotを算出する。
ステップS36:ΔH算出部45は、ΔEと、ΔPtotとを加算することで、ΔHを算出する。
【0113】
ステップS37の処理は、図5に示したステップS17の処理と同じである。
ステップS38:状態更新部34fやH更新部34gによる更新処理のほか、Ptot0更新部43によるPtot0の更新処理が行われる。
【0114】
その後のステップS39,S40の処理は、図5に示したステップS19,S20の処理と同じである。
このような比較例の探索部40では、遷移候補のxが選択された場合、x以外の状態変数の値も使用して、Ptotを算出するために、全制約項に対して、たとえば、式(5)に示すような入力量の計算をすることになる。
【0115】
これに対して、第2の実施の形態のデータ処理装置20において探索部34は、xの値の変化に伴い、zの値が変化する制約項についてだけ、制約項の変化量の算出に用いられるΔg (k)の計算を行う。このため、処理部12は、xの値の変化に伴うΔHの算出のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。また、計算量を削減できることから、計算を行うハードウェアの物量の増加を抑えることができる。
【0116】
また、Δg (k)の計算には、3値のzまたはΔzが用いられるため、式(5)に示したような実数変数である入力量を用いて制約項の変化量を計算する場合に比べて、誤差の蓄積を抑えられる。
【0117】
(探索部34のハードウェアでの実装例)
探索部34は、たとえば、以下のようなハードウェアで実装することもできる。なお、以下に示す探索部34は、式(11)に示したようなhを保持してΔHの算出に用いる。
【0118】
図8は、探索部のハードウェア例を示す図である。
探索部34は、状態変数更新回路51、h更新回路52、y更新回路53、ΔH算出回路54、選択回路55、コントローラ56を有する。なお、図8には、記憶部32の評価関数情報の記憶例が示されている。記憶部32には、hの更新に用いられるn×n個のWijが記憶されている。さらに記憶部32には、zからxへのm×n個の結合係数(Cik)と、xからyへのn×m個の結合係数(Ckj)が記憶されている。
【0119】
状態変数更新回路51は、x~xの値を保持する。また、状態変数更新回路51は、コントローラ56の制御のもと、選択回路55が出力した識別番号の状態変数の値を変化させる。
【0120】
h更新回路52は、式(11)に示したh(i=1~n)の値を保持する。また、h更新回路52は、コントローラ56の制御のもと、hの値を更新する。
更新回路53は、式(8)に示したyの値を保持する。また、y更新回路53は、コントローラ56の制御のもと、yの値を更新する。
【0121】
h更新回路52とy更新回路53のより具体的な例については後述する(図9参照)。
ΔH算出回路54は、hに-Δxを乗じることでΔH(i=1~n)を算出する。
【0122】
選択回路55は、x~xのそれぞれの値の変化に伴うΔHと、コントローラ56から供給される閾値に基づいて、x~xのうち、値の変化を許容する状態変数を1つ選択する。
【0123】
たとえば、選択回路55は、ΔH~ΔHのそれぞれについて、max(0,ΔH)を計算する。max(0,ΔH)は、ΔH~ΔHのうち、0以上のものをそのまま維持し、負であるものを0に変換する関数である。選択回路55は、n個のmax(0,ΔH)のそれぞれに、閾値(n個の異なる値であってもよいし、同じ値であってもよい)を加算する。選択回路55は、x~xのうち、値が変化したときに最小となる加算結果をもたらす状態変数の識別番号を出力する。
【0124】
ただし、選択回路55は、上記のような選択動作を行うものに限定されない。選択回路55は、ΔHが、閾値より小さい場合、xの値の変化を許容するものであってもよい。複数のxの値の変化が許容された場合、選択回路55は、ランダムでまたは所定のルールにしたがって、1つの状態変数を選択し、その状態変数の識別番号を出力してもよい。
【0125】
コントローラ56は、制御信号やクロック信号を送出することで、探索部34の各回路の動作タイミングを制御する。また、コントローラ56は、閾値を生成して、選択回路55に供給する。閾値として、たとえば、log(rand)×Tが用いられる。
【0126】
図9は、h更新回路とy更新回路の一例を示す図である。
h更新回路52は、g/Δg算出回路52a、差分加算回路52b、h保持回路52cを有する。
【0127】
更新回路53は、差分加算回路53a、y保持回路53bを有する。
g/Δg算出回路52aは、g (k)またはΔg (k)を算出する。g/Δg算出回路52aの例については後述する(図10参照)。
【0128】
差分加算回路52bは、xの値の変化が許容された場合、コントローラ56からの制御信号を受け、元のhにWijΔxを加算することで、hを更新する。差分加算回路52bは、xの値の変化が許容されたときにΔg (k)が生じる場合、hに、さらに、Δg (k)を加えることで、hを更新する。
【0129】
h保持回路52cは、n個のhを保持する。また、h保持回路52cは、クロック信号に同期して、hを出力する。
差分加算回路53aは、xの値の変化が許容された場合、コントローラ56からの制御信号を受け、元のyにCjΔxを加算することで、yを更新する。
【0130】
保持回路53bは、m個のyを保持する。また、y保持回路53bは、クロック信号に同期して、yを出力する。
図10は、g/Δg算出回路の一例であるg算出回路の例を示す図である。
【0131】
g算出回路52a1は、乗算器60、選択回路61、乗算器62を有する。
乗算器60は、1と1-xとの積を出力する。
選択回路61は、yを受け、y<0であれば0を出力し、y=0であれば1-xを出力し、y>0であれば、1を出力する。
【0132】
乗算器62は、選択回路61の出力と-λkiとの積を、式(13)に示したg (k)として出力する。
図11は、g/Δg算出回路の一例であるΔg算出回路の例を示す図である。
【0133】
Δg算出回路52a2は、z発生回路65とΔg発生回路66を有する。
発生回路65は、yを受け、y<0であればz=0を出力し、y=0であればz=1を出力し、y>0であれば、z=2を出力する。
【0134】
Δg発生回路66は、zを保持している。Δg発生回路66は、z発生回路65が発生するzの値と保持しているzの値が、0と1との間で変化している場合、1-xを選択し、-λki(1-x)ΔzをΔg (k)として出力する。Δg発生回路66は、z発生回路65が発生するzの値と保持しているzの値が、1と2との間で変化している場合、xを選択し、-λkiΔzをΔg (k)として出力する。
【0135】
図12は、データ処理装置の動作タイミングの一例を示すタイミングチャートである。図12では、図8に示したハードウェア構成の探索部34を用いた場合の動作タイミングの例が示されている。図12では、15レプリカを用いた場合の処理例が示されている。探索部34は、パイプライン処理でタイミングをずらしながら、レプリカ番号=0のレプリカから順に処理を行う。
【0136】
タイミングt1から、ΔH算出回路54が、hからΔH(i=1~n)を算出する処理が行われる。
タイミングt2から、選択回路55が、x~xのうち、値の変化を許容する状態変数(x)を選択する処理が行われる。
【0137】
タイミングt3から、状態変数更新回路51が、選択回路55が選択したxの値を変化(0から1または1から0に反転)させる処理が行われる。
タイミングt4から、h更新回路52とy更新回路53が、hとyを更新する処理が行われる。
【0138】
タイミングt5から、h更新回路52が、yからzを算出する処理が行われる。
タイミングt6から、h更新回路52が、zとxから、Δg (k)を算出する処理が行われる。
【0139】
タイミングt7から、h更新回路52が、Δg (k)を用いてhをさらに更新する処理が行われる。
その後、同様の処理が繰り返される。
【0140】
上記の各処理は、1つ前の処理が15レプリカについて全て完了しなくても、レプリカ番号=0のレプリカについての前の処理が終了した時点で開始できる。
このようなハードウェアの処理により、xの値の変化に伴いzの値が変化する制約項についてだけ、hの更新に用いられるΔg (k)の算出が行われる。このため、処理部12は、h(i=1~n)の更新のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。
【0141】
なお、上記のようなハードウェアの処理は、CPU21がプログラムを実行することで行うこともできる。
(変形例)
上記の説明では、式(8)のyを算出するために用いられるCkiは、xが識別番号=kの制約に影響を与える場合は1、影響を与えない場合は0であるとした。
【0142】
しかし、Ckiは、-1、0、または1の3値の値であってもよい。以下では、xが識別番号=kの制約に対して、正の寄与を与える場合はCki=1、負の寄与を与える場合はCki=-1、影響を与えない場合はCki=0であるものとする。
【0143】
図13は、制約条件が不等式制約でありCkiが3値の場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
とyとの関係を示す図13(A)において、横軸はyの値を表し、縦軸は、Pの値を表している。制約条件が不等式制約である場合、Pは、式(3)に示したような関数で表されるものである。このため、入力量を表すyが0以下の場合、P=0、yが0より大きい場合、P=yとなる。
【0144】
(k)とyとの関係を示す図13(B)において、横軸はyの値を表し、縦軸はg (k)の値を表している。
図13(B)のように、CkiΔx>0の場合、y=0のときg (k)=-λkiとなる。CkiΔx<0の場合、y=0のときg (k)=0となる。
【0145】
図14は、制約条件が等式制約でありCkiが3値の場合の、Pとyとの関係及びg (k)とyとの関係の一例を示す図である。
とyとの関係を示す図14(A)において、横軸はyの値を表し、縦軸は、Pの値を表している。制約条件が等式制約である場合、Pは、式(4)に示したような関数で表されるものである。このため、P=|y|となる。
【0146】
(k)とyとの関係を示す図14(B)において、横軸はyの値を表し、縦軸はg (k)の値を表している。
図14(B)のように、CkiΔx>0の場合、y=0のときg (k)=-λ kiとなる。CkiΔx<0の場合、y=0のときg (k)=+λ kiとなる。
【0147】
上記のような3値のCkiが用いられる場合、Δxによるyの変化が、CkiΔxであることから、yから発生されるzは、以下の式(17)で表せる。
【0148】
【数17】
【0149】
Δxに対応するzを、z (k)とすると、z (k)は、以下の式(18)で表せる。
【0150】
【数18】
【0151】
このようなz (k)を用いることで、Δg (k)は、以下の式(19)で表すことができる。
【0152】
【数19】
【0153】
図15は、変形例におけるΔg算出回路を示す図である。
Δg算出回路52a3は、z発生回路70、Δz (k)発生回路71、乗算器72を有する。
【0154】
発生回路70は、yを受け、z=(z ,z )として、y<0であれば=(0,0)、y=0であれば(1,0)、y>0であれば(1,1)を出力する。
【0155】
Δz (k)発生回路71は、CkiΔxを受ける。そして、Δz (k)発生回路71は、CkiΔx>0であれば、z と元のz (k)との差分値を、Δz (k)として出力する。Δz (k)発生回路71は、CkiΔx<0であれば、z と元のz (k)との差分値を、Δz (k)として出力する。
【0156】
乗算器72は、Δz (k)と、-λkiとの積を、Δg (k)として出力する。
上記のような3値のCkiが用いられる場合、図11に示したΔg算出回路52a2の代わりに、このようなΔg算出回路52a3を用いることができる。
【0157】
なお、前述のように、上記各実施の形態のデータ処理装置10,20の処理内容は、データ処理装置10,20にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
【0158】
以上、実施の形態に基づき、本発明のプログラム、データ処理装置及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0159】
たとえば、上記の説明では、状態変数は0または1の値としたが、適宜式を変換することで、状態変数として-1または+1の値をもつ変数を用いることもできる。
【符号の説明】
【0160】
10 データ処理装置
11 記憶部
12 処理部
11a 評価関数情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15