(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
k)の値を特定し、y
kの値に基づいて、y
kを量子化した第2補助変数(z
k)の値を生成し、複数の制約項のうちの、評価関数の複数の状態変数のうちの第1状態変数(x
i)の値の変化に伴いz
kの値が変化する第1制約項について、x
iの値の変化に伴う評価関数の値の第1変化量(ΔH
i)に対する第1制約項の寄与量(g
i
(k))の、x
iの値の変化に伴う第1差分値(Δg
i
(k))を算出し、Δg
i
(k)を用いてΔH
iの算出、またはΔg
i
(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】
【0004】
式(1)の右辺の第1項目はコスト項であり、右辺の2項目は複数の制約項の合計値である。複数の制約項の合計値は、以下の式(2)で表せる。
【0005】
【0006】
式(2)において、Pk(x)は識別番号がkの制約に関する制約項のペナルティ関数である。Pk(x)は、非線形な関数で表される。mは制約項の総数を表す。また、λkは識別番号がkの制約についての所定の係数(以下制約係数と呼ぶ)である。以下では、λkPk(x)を制約項という。
【0007】
制約条件が不等式制約である場合、式(2)のPk(x)は、以下の式(3)で表すことができる。
【0008】
【0009】
制約条件が等式制約である場合、式(2)のPk(x)は、以下の式(4)で表すことができる。
【0010】
【0011】
式(3)、式(4)に示されるようなPk(x)において、Pin
(k)(x)は、識別番号がkの制約を受ける入力量(リソース量、リソース使用量とも呼ばれる)である。入力量は、以下の式(5)で表される。
【0012】
【0013】
Ckiは、識別番号がkの制約におけるxiの重みを示す係数(重み値)である。b(k)は、識別番号がkの制約における入力量の上限などを表す係数である。
一方、コスト項は、たとえば、以下の式(6)のような2次形式の関数で表される。
【0014】
【0015】
右辺の1項目は、n個の状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xiは、識別番号がiの状態変数、xjは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。biは、識別番号がiについてのバイアス係数を示している。
【0016】
また、xiの値の変化に伴うコスト項の変化量(ΔEi)は、以下の式(7)で表される。
【0017】
【0018】
式(7)において、xiが1から0に変化するとき、Δxiは-1となり、xiが0から1に変化するとき、Δxiは1となる。なお、hiは局所場と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔEiとなる。このため、hiは評価関の値の変化量の特定に用いられる変数ということもできる。このような、hiを保持し、適宜更新することで、積和演算を行わなくても、ΔEiを算出できる。
【0019】
組合せ最適化問題の解の探索では、マルコフ連鎖モンテカルロ(MCMC:Markov-Chain Monte Carlo)法が用いられる。MCMC法の一種として、疑似焼き鈍し法やレプリカ交換法がある。このようなMCMC法による探索では、xiの値の変化に伴う評価関数の値の変化量(ΔHi)が、乱数と温度パラメータの値に基づいて得られる閾値(ノイズ値と呼ばれることもある)より小さい場合、xiの値を反転させる、という処理が繰り返される。これにより、評価関数の値が極小になる状態(状態変数の値の組合せ)の探索が行われる。評価関数の極小値のうちの最小値になる状態が最適解となる。
【0020】
制約項を含む評価関数が用いられる場合、ΔHiは、ΔEiと、xiの値の変化に伴うPtot(x)の変化量との合計値である。
【先行技術文献】
【特許文献】
【0021】
【特許文献1】特開2020-204928号公報
【特許文献2】米国特許出願公開第2008/0065573号明細書
【特許文献3】国際公開第2020/196862号
【発明の概要】
【発明が解決しようとする課題】
【0022】
制約項は、たとえば、式(3)や式(4)に示したような非線形なペナルティ関数を用いて表される。このため、コスト項のように局所場(hi)を用いて、制約項の変化量を算出することが難しい。このため、xiの値の変化に伴う制約項の変化量を計算するたびに、xi以外の状態変数の値も使用して、各制約項に関して、たとえば、式(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
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
【
図3】データ処理装置のハードウェア例を示す図である。
【
図4】データ処理装置の機能例を示すブロック図である。
【
図5】第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
【
図7】比較例の探索部を含むデータ処理装置の処理手順を示すフローチャートである。
【
図9】h更新回路とy
k更新回路の一例を示す図である。
【
図10】g/Δg算出回路の一例であるg算出回路の例を示す図である。
【
図11】g/Δg算出回路の一例であるΔg算出回路の例を示す図である。
【
図12】データ処理装置の動作タイミングの一例を示すタイミングチャートである。
【
図13】制約条件が不等式制約でありC
kiが3値の場合の、P
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
【
図14】制約条件が等式制約でありC
kiが3値の場合の、P
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
【
図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、biが含まれる。Ptot(x)の情報には、たとえば、式(2)のλkや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
k)で表す。すなわちy
kは、以下の式(8)で表される。
【0035】
【0036】
なお、式(8)のbkと、式(5)のb(k)は同じものである。ykの値は、評価関数情報11aに含まれるCki、bk及び状態変数の数(n)と、x1~xnの初期値から計算される。x1~xnの初期値は、記憶部11に記憶されていてもよいし、データ処理装置10の外部から、たとえば、ユーザによる入力デバイスの操作により入力されたものであってもよい。x1~xnの初期値は、たとえば、全て0であってもよいし、全て1であってもよい。また、x1~xnの初期値は、乱数であってもよい。
【0037】
図1には、不等式制約のペナルティ関数(P
k)とy
kとの関係の一例が示されている。横軸はy
kの値を表し、縦軸はP
kの大きさを表す。
P
kは、式(3)に示したような関数で表されるものである。このため、入力量を表すy
kが0以下の場合、P
k=0、y
kが0より大きい場合、P
k=y
kとなる。
【0038】
ステップS3:処理部12は、ykの値に基づいて、ykを量子化した第2補助変数(zk)の値を生成する。zkは、たとえば、ykが正であるか負であるか0であるかを示す3値の値である。すなわち、zkは、以下の式(9)で表すことができる。
【0039】
【0040】
なお、zkは、0、1、2の3値に限定されず、11、00、01の3値であってもよい。このような3値のzkを用いる理由については、後述する。
ステップS4:処理部12は、ykの値に基づいて、xiの値の変化に伴う評価関数の値の変化量(ΔHi)に対する、複数の制約項のそれぞれの寄与量を算出する。寄与量は、ΔHiの特定に用いられる局所場(hi)への寄与の大きさを表す値ということもできる。ΔHiは、以下の式(10)で表せる。
【0041】
【0042】
Δxiに応じてhiに符号(+1または-1)を乗じたものがΔHiとなる。hiは、以下の式(11)で表せる。
【0043】
【0044】
gi
(k)は、ΔHi(またはhi)に対する、識別番号=kの制約に関する制約項の寄与量である。制約条件が不等式制約の場合、gi
(k)は以下の式(12)で表せる。
【0045】
【0046】
g
i
(k)は、
図1に示されているようなP
k-y
kのグラフの傾きに-λ
kを乗じたものである。y
kが0の場合には、x
iが変化する方向によりP
k-y
kのグラフの傾きが異なることを考慮して、g
i
(k)は、以下の式(13)のように表すことができる。
【0047】
【0048】
Ckiは、識別番号がkの制約におけるxiの重みを示す重み値である。以下では、Ckiは、xiがPkに影響を与えるか否かを表す値であるものとする。xiが、Pkに影響を与える場合、Cki=1であり、xiが、Pkに影響を与えない場合、Cki=0である。
【0049】
図1には制約条件が不等式制約の場合の、g
i
(k)とy
kとの関係の一例を示す図が示されている。横軸はy
kの値を表し、縦軸はg
i
(k)の値を表している。y
k=0のとき、式(13)より、x
i=1の場合はg
i
(k)=0となり、x
i=0の場合はg
i
(k)=-λ
kC
kiとなっている。
【0050】
前述の3値のzkを用いる理由は、上記のように、ykが正であるか負であるか0であるかによって、gi
(k)が3種類の値に区別できるためである。
なお、処理部12は、後述のΔgi
(k)を、Δzkから算出する場合には、gi
(k)自体を計算しなくてもよい。
【0051】
以上のステップS1~S4の処理が初期化処理であり、その後、以下の探索処理が行われる。なお、ステップS2~S4の処理で算出されたykやzkの値及びgi
(k)は、処理部12の図示しない保持部(たとえば、レジスタ)に保持される。式(11)で表されるhiの値についても、保持部に保持されるようにしてもよい。また、記憶部11が、yk、zk、gi
(k)またはhiの値を記憶してもよい。
【0052】
ステップS5:処理部12は、x1~xnのうち遷移候補のxiを選択する。処理部12は、x1~xnからランダムにxiを選択してもよいし、所定のルールにしたがって、xiを1つ選択してもよい。また、処理部12は、ステップS5の処理では、xiの選択を行わず、たとえば、x1~xnについて並列に、以下のステップS6~S8の処理を行ってもよい。
【0053】
ステップS6:処理部12は、x1~xnのうちxiの値の変化に伴い、m個の制約項のうち何れかの制約項に関するzkの値が変化するか否かを判定する。xiの値が変化した場合のykの値は、元のykの値に対して、CkiΔxiを加えることで得られる。そして、xiの値が変化した場合のykが、正であるか負であるか0であるかにより、式(9)によって、xiの値が変化した場合のzkの値が得られる。
【0054】
処理部12は、zkの値が変化すると判定した場合、ステップS7の処理を行い、zkの値が変化しないと判定した場合、ステップS8の処理を行う。
ステップS7:処理部12は、xiの値の変化に伴うgi
(k)の差分値(Δgi
(k))を算出する。式(9)と式(13)からわかるように、gi
(k)は、zkの値が変化するときに値が変化し、それ以外の場合には、値が変化しない。処理部12は、保持されている現在のgi
(k)と、変化後のxiの値に基づいて式(13)にしたがって算出されるgi
(k)との差分値を算出してもよい。または、処理部12は、zkの差分値(Δzk)に応じて、Δgi
(k)を、以下の式(14)にしたがって算出してもよい。
【0055】
【0056】
zkが0と1との間で変化した場合と、1と2との間で変化した場合とで、2種類のΔgi
(k)の値が得られる。式(14)にしたがってΔgi
(k)を算出する場合、処理部12は、ステップS4の処理で、gi
(k)自体を計算しなくてもよい。
【0057】
ステップS8:処理部12は、xiの値の変化を許容するか否か(遷移受入可否)を判定する。遷移受入可否は、xiの値の変化に伴うコスト項の変化量(ΔEi)と、Δgi
(k)に基づいて算出されるPkの変化量(ΔPk)との加算値(ΔHi)に基づいて行われる。ΔEiは、式(7)にしたがって、計算できる。ΔPkは、Δgi
(k)に-Δxiを乗じることで算出できる。なお、式(11)で表されるhiが保持されている場合、処理部12は、hiに-Δxiを乗じることでΔHiを算出してもよい。
【0058】
そして、処理部12は、たとえば、ΔHiが、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、遷移候補の状態変数の値の変化を許容する。閾値として、たとえば、log(rand)×Tが用いられる。randは乱数値、Tは温度パラメータの値である。
【0059】
x1~xnに対して並列にステップS6~S8の処理が行われる場合、x1~xnの変化に対応するΔHi(i=1~n)が算出される。そして、ΔHiに基づいて、x1~xnの何れかの値の変化が許容される。
【0060】
ステップS9:処理部12は、xiの値の変化を許容すると判定した場合、xiの値を更新する。また、処理部12は、xiの値の変化に応じて、yk及びzkの値を更新する。処理部12は、gi
(k)またはhiの値を保持している場合はこれらの値を、Δgi
(k)を用いて更新する。処理部12は、評価関数の値を更新してもよい。
【0061】
処理部12は、ステップS9の処理後、ステップS5からの処理を繰り返す。
処理部12は、疑似焼き鈍し法を行う場合、ステップS5~S9の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータの値を小さくしていく。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときのx1~xnの値を、組合せ最適化問題の解の探索結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、遷移が受け入れられるたびに、たとえば、評価関数の値を更新し、これまでの最小値とその最小値が得られたときのx1~xnの値を保持しておいてもよい。その場合、処理部12は、探索終了条件が満たされたときに記憶されている最小値に対応するx1~xnの値を、探索結果として出力してもよい。
【0062】
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、
図1に示したステップS5~S9の処理を行う。そして、処理部12は、ステップS5~S9の処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、複数のレプリカのうち2つをランダムに選択する。そして、処理部12は、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはx
1~x
nの値を交換する。処理部12は、たとえば、各レプリカにおいて遷移が受け入れられるたびに、評価関数の値を更新し、これまでの最小値とその最小値が得られたときのx
1~x
nの値を保持する。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときに、各レプリカにおいてに記憶されている最小値のうち、全レプリカにおいて最小のものに対応するx
1~x
nの値を、探索結果として出力する。
【0063】
以上のように、第1の実施の形態のデータ処理装置10の処理部12は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報11aを記憶部11から取得する。そして、処理部12は、評価関数情報11aに基づいて、複数の制約項のそれぞれに対して、複数の制約項のそれぞれに関する制約を受ける入力量を表す第1補助変数(yk)の値を特定する。また、処理部12は、ykの値に基づいて、ykを量子化した第2補助変数(zk)の値を生成する。そして、処理部12は、複数の制約項のうちの、x1~xnのうちのxiの値の変化に伴いzkの値が変化する制約項について、xiの値の変化に伴う評価関数の値の変化量に対する制約項の寄与量の、xiの値の変化に伴う差分値(Δgi
(k))を算出する。処理部12は、Δgi
(k)を用いてΔHiの算出、またはΔgi
(k)を用いてhi(i=1~n)の更新を行う。
【0064】
これにより、xiの値の変化に伴いzkの値が変化する制約項についてだけ、制約項の変化量の算出、または、hiの更新に用いられるΔgi
(k)の算出が行われる。このため、処理部12は、xiの値の変化に伴うΔHiの算出、またはhi(i=1~n)の更新のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。
【0065】
たとえば、状態変数の数がn=100で、制約項の総数がm=10であり、それぞれの制約項が1つの状態変数に関わっている場合(各制約項の100個のCkiうち1つ以外が0である場合)を考える。この場合、全制約項に対して全状態変数の値を用いた計算を行う場合に比べて、計算量を、1/(10×100)に削減できる。
【0066】
また、計算量を削減できることから、計算を行うハードウェアの物量の増加を抑えることができる。
また、Δgi
(k)の算出には、3値のzkまたはΔzkが用いられるため、式(5)に示したような実数変数である入力量を用いて制約項の変化量を計算する場合に比べて、誤差の蓄積を抑えられる。
【0067】
このようなデータ処理装置10は、制約条件をもつ組合せ最適化問題に変換できる現代社会における様々な問題を解く際に、計算量やハードウェアの物量を抑え、精度のよい解を得るための手段として、役立つことが期待できる。
【0068】
なお、上記の例では、制約条件が不等式制約であるものとして説明したが、これに限定されない。制約条件は等式制約であってもよい。
図2は、制約条件が等式制約である場合の、P
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
【0069】
P
kとy
kとの関係を示す
図2(A)において、横軸はy
kの値を表し、縦軸は、P
kの値を表している。制約条件が等式制約である場合、P
kは、式(4)に示したような関数で表されるものである。このため、P
k=|y
k|となる。
【0070】
制約条件が等式制約である場合、gi
(k)とΔgi
(k)は、以下の式(15)、式(16)のように表すことができる。
【0071】
【0072】
【0073】
λk
-は、yk=Pin
(k)<0の場合、すなわちzk=0の場合の制約係数である。λk
+は、yk=Pin
(k)>0の場合、すなわちzk=2の場合の制約係数である。
【0074】
g
i
(k)とy
kとの関係を示す
図2(B)において、横軸はy
kの値を表し、縦軸はg
i
(k)の値を表している。
y
k=0のとき、式(15)より、x
i=1の場合はg
i
(k)=+λ
k
-C
kiとなり、x
i=0の場合はg
i
(k)=-λ
k
+C
kiとなっている。
【0075】
制約条件が等式制約である場合、このようなgi
(k)とΔgi
(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)とP
tot(x)の情報を含む。E(x)が、式(6)のように表される場合、E(x)の情報には、W
ij、b
iが含まれる。P
tot(x)の情報には、たとえば、式(2)のλ
k、m、式(5)のC
ki、b
(k)が含まれる。
【0087】
入力部31は、さらに、組合せ最適化問題の計算条件を取得する。たとえば、レプリカ交換法による探索が行われる場合、計算条件は、レプリカ数や各レプリカに設定する温度パラメータの値などを含む。
【0088】
また、入力部31は、ユーザの入力デバイス25aの操作により入力されたx1~xnの初期値を取得してもよい。x1~xnの初期値は、たとえば、全て0であってもよいし、全て1であってもよい。また、x1~xnの初期値は、乱数であってもよい。
【0089】
記憶部32は、入力部31が取得した評価関数情報などを記憶する。
初期化処理部33は、記憶部32に記憶された評価関数情報やx1~xnの初期値を取得し、これらに基づいて、探索部34の初期化処理を行う。初期化処理は、たとえば、以下の処理を含む。
【0090】
初期化処理部33は、評価関数情報と、x1~xnの初期値に基づいて、複数の制約項のそれぞれに対して、前述の式(8)で表されるykの初期値を算出する。また、初期化処理部33は、ykの初期値に基づいて、前述の式(9)で表されるzkの初期値を算出する。初期化処理部33は、評価関数情報に基づいてykの初期値を算出するとともに、式(13)にしたがって、gi
(k)の初期値を算出してもよい。
【0091】
探索部34は、遷移候補選択部34a、ΔE算出部34b、Δg算出部34c、ΔH算出部34d、遷移受入可否判定部34e、状態更新部34f、H更新部34gを有する。
遷移候補選択部34aは、x1~xnのうち遷移候補のxiを選択する。遷移候補選択部34aは、x1~xnからランダムにxiを選択してもよいし、所定のルールにしたがって、xiを1つ選択してもよい。また、遷移候補選択部34aは、選択したxiの値と、xiの値を変化させたときの差分値であるΔxi=1-2xiを出力する。
【0092】
ΔE算出部34bは、Δxiを受けて、式(7)に基づいて、ΔEiを算出する。
Δg算出部34cは、Δxiを受けて、xiの値が変化した場合のykの値を求める。xiの値が変化した場合のykの値は、元のykの値に対して、CkiΔxiを加えることで得られる。そして、Δg算出部34cは、xiの値が変化した場合のykの値が、正であるか負であるか0であるかにより、式(9)にしたがって、zkの値を求める。Δg算出部34cは、zkの値が元のzkの値から変化した場合、Δgi
(k)を算出する。
【0093】
Δg算出部34cは、保持されている現在のgi
(k)と、変化後のxiの値に基づいて式(13)にしたがって算出されるgi
(k)との差分値を算出してもよい。または、Δg算出部34cは、zkの差分値(Δzk)に応じて、前述の式(14)にしたがって、Δgi
(k)を算出してもよい。Δg算出部34cは、Δgi
(k)に-Δxiを乗じることで算出されるΔPkを出力する。
【0094】
ΔH算出部34dは、ΔEiと、ΔPkとを加算することで、xiの値の変化に伴う評価関数の変化量(ΔHi)を算出する。
遷移受入可否判定部34eは、xiの値の変化を許容するか否かを判定する。たとえば、遷移受入可否判定部34eは、ΔHiが、乱数と温度パラメータの値に基づいて得られる閾値より小さい場合、遷移候補の状態変数の値の変化を許容する。
【0095】
状態更新部34fは、xiの値の変化を許容すると判定した場合、xiの値を更新する。なお、xiの値の変化が許容された場合、yk及びzkの値についても、上記のように算出された値に更新される。処理部12は、gi
(k)またはhiの値を保持している場合はこれらの値もxiの値の変化に応じて更新する。
【0096】
H更新部34gは、xiの値の変化が許容された場合、元の評価関数の値(H)にΔHiを加えることでHを更新する。
出力部35は、探索終了条件が満たされたときに、探索結果(たとえば、これまでに得られた評価関数の最小値に対応するx1~xnの値)を出力する。出力部35は、たとえば、探索結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0097】
図5は、第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
ステップS10:入力部31は、コスト項と複数の制約項を含む組合せ最適化問題の評価関数の評価関数情報を取得する。
【0098】
ステップS11:初期化処理部33は、記憶部32に記憶された評価関数情報やx1~xnの初期値に基づいて、前述のような初期化処理を行う。
ステップS12:遷移候補選択部34aは、x1~xnのうち遷移候補のxiを選択する。
【0099】
ステップS13:ΔE算出部34bは、式(7)に基づいて、ΔEiを算出する。
ステップS14:Δg算出部34cは、xiの値が変化した場合のykの値を求め、式(9)にしたがって、zkの値を求める。そして、Δg算出部34cは、zkの値が元のzkの値から変化しているか否かを判定する。Δg算出部34cは、zkの値が元のzkの値から変化していると判定した場合、ステップS15の処理を行う。Δg算出部34cは、zkの値が元のzkの値から変化していないと判定した場合、ステップS16の処理を行う。
【0100】
ステップS15:Δg算出部34cは、保持されている現在のgi
(k)と、変化後のxiの値に基づいて式(13)にしたがって算出されるgi
(k)との差分値を算出する。または、Δg算出部34cは、zkの差分値(Δzk)に応じて、前述の式(14)にしたがって、Δgi
(k)を算出する。
【0101】
ステップS16:ΔH算出部34dは、ΔEiと、Δgi
(k)に-Δxiを乗じることで算出されるΔPkとを加算することで、ΔHiを算出する。
ステップS17:遷移受入可否判定部34eは、xiの値の変化を許容するか否かを判定する。遷移受入可否判定部34eがxiの値の変化を許容すると判定した場合、ステップS18の処理が行われる。遷移受入可否判定部34eがxiの値の変化を許容しないと判定した場合、ステップS19の処理が行われる。
【0102】
ステップS18:状態更新部34fやH更新部34gにより前述の更新処理が行われる。
ステップS19:探索部34の図示しない判定部は、探索終了条件が満たされたか否かを判定する。たとえば、所定回数、ステップS12の処理が繰り返された場合、または所定の値より小さい評価関数の値が得られた場合、探索終了条件が満たされたと判定される。探索終了条件が満たされたと判定された場合、ステップS20の処理が行われる。探索終了条件が満たされていないと判定された場合、ステップS12からの処理が繰り返される。
【0103】
疑似焼き鈍し法が適用される場合、ステップS12~S19の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、遷移受入可否判定部34eが用いる閾値を生成するための温度パラメータの値が小さくされる。
【0104】
レプリカ交換法が適用される場合、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、ステップS12~S19の処理が行われる。そして、ステップS12~S19の処理が所定回数繰り返されるごとに、レプリカ交換が行われる。たとえば、複数のレプリカのうち2つがランダムに選択され、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはx1~xnの値が交換される。
【0105】
ステップS20:出力部35は、探索結果を出力する。これによりデータ処理装置20による処理が終了する。
なお、上記の処理の順序は一例であり適宜処理順序を入れ替えてもよい。
(比較例)
図6は、比較例の探索部を示す図である。
図6において、
図4に示したデータ処理装置20の探索部34と同じ要素については、同一符号が付されている。
【0106】
比較例の探索部40において、遷移候補選択部41は、遷移候補選択部34aと同様にx1~xnのうち遷移候補のxiを選択する。遷移候補選択部41は、選択したxiの値を変化させたときのx1~xnの値(x’)を出力するとともに、xiの値を変化させたときの差分値であるΔxiを出力する。
【0107】
比較例の探索部40は、探索部34と異なり、Ptot算出部42、Ptot0更新部43、ΔP算出部44を有する。
Ptot算出部42は、選択したxiの値を変化させたときのx1~xnの値(x’)を用いて、式(2)で表されるm個の制約項の合計値を算出する。
【0108】
Ptot0更新部43は、xiの値の変化前のm個の制約項の合計値であるPtot0を更新し、出力する。Ptot0の値は、遷移受入可否判定部34eがxiの値の変化を許容した場合に、Ptot算出部42が出力するPtotの値に更新される。
【0109】
ΔP算出部44は、PtotとPtot0との差分であるΔPtotを算出し、出力する。
比較例の探索部40において、ΔH算出部45は、ΔEiと、ΔPtotとを加算することで、ΔHiを算出し、出力する。
【0110】
図7は、比較例の探索部を含むデータ処理装置の処理手順を示すフローチャートである。
ステップS30~S33の処理は、
図5に示したステップS10~S13の処理と同じである。
【0111】
ステップS34:Ptot算出部42は、選択したxiの値を変化させたときのx1~xnの値(x’)を用いて、式(2)で表されるm個の制約項の合計値(Ptotと)を算出する。
【0112】
ステップS35:ΔP算出部44は、PtotとPtot0との差分であるΔPtotを算出する。
ステップS36:ΔH算出部45は、ΔEiと、ΔPtotとを加算することで、ΔHiを算出する。
【0113】
ステップS37の処理は、
図5に示したステップS17の処理と同じである。
ステップS38:状態更新部34fやH更新部34gによる更新処理のほか、P
tot0更新部43によるP
tot0の更新処理が行われる。
【0114】
その後のステップS39,S40の処理は、
図5に示したステップS19,S20の処理と同じである。
このような比較例の探索部40では、遷移候補のx
iが選択された場合、x
i以外の状態変数の値も使用して、P
totを算出するために、全制約項に対して、たとえば、式(5)に示すような入力量の計算をすることになる。
【0115】
これに対して、第2の実施の形態のデータ処理装置20において探索部34は、xiの値の変化に伴い、zkの値が変化する制約項についてだけ、制約項の変化量の算出に用いられるΔgi
(k)の計算を行う。このため、処理部12は、xiの値の変化に伴うΔHiの算出のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。また、計算量を削減できることから、計算を行うハードウェアの物量の増加を抑えることができる。
【0116】
また、Δgi
(k)の計算には、3値のzkまたはΔzkが用いられるため、式(5)に示したような実数変数である入力量を用いて制約項の変化量を計算する場合に比べて、誤差の蓄積を抑えられる。
【0117】
(探索部34のハードウェアでの実装例)
探索部34は、たとえば、以下のようなハードウェアで実装することもできる。なお、以下に示す探索部34は、式(11)に示したようなhiを保持してΔHiの算出に用いる。
【0118】
図8は、探索部のハードウェア例を示す図である。
探索部34は、状態変数更新回路51、h更新回路52、y
k更新回路53、ΔH算出回路54、選択回路55、コントローラ56を有する。なお、
図8には、記憶部32の評価関数情報の記憶例が示されている。記憶部32には、h
iの更新に用いられるn×n個のW
ijが記憶されている。さらに記憶部32には、z
kからx
iへのm×n個の結合係数(C
ik)と、x
jからy
kへのn×m個の結合係数(C
kj)が記憶されている。
【0119】
状態変数更新回路51は、x1~xnの値を保持する。また、状態変数更新回路51は、コントローラ56の制御のもと、選択回路55が出力した識別番号の状態変数の値を変化させる。
【0120】
h更新回路52は、式(11)に示したhi(i=1~n)の値を保持する。また、h更新回路52は、コントローラ56の制御のもと、hiの値を更新する。
yk更新回路53は、式(8)に示したykの値を保持する。また、yk更新回路53は、コントローラ56の制御のもと、ykの値を更新する。
【0121】
h更新回路52とy
k更新回路53のより具体的な例については後述する(
図9参照)。
ΔH算出回路54は、h
iに-Δx
iを乗じることでΔH
i(i=1~n)を算出する。
【0122】
選択回路55は、x1~xnのそれぞれの値の変化に伴うΔHiと、コントローラ56から供給される閾値に基づいて、x1~xnのうち、値の変化を許容する状態変数を1つ選択する。
【0123】
たとえば、選択回路55は、ΔH1~ΔHnのそれぞれについて、max(0,ΔHi)を計算する。max(0,ΔHi)は、ΔH1~ΔHnのうち、0以上のものをそのまま維持し、負であるものを0に変換する関数である。選択回路55は、n個のmax(0,ΔHi)のそれぞれに、閾値(n個の異なる値であってもよいし、同じ値であってもよい)を加算する。選択回路55は、x1~xnのうち、値が変化したときに最小となる加算結果をもたらす状態変数の識別番号を出力する。
【0124】
ただし、選択回路55は、上記のような選択動作を行うものに限定されない。選択回路55は、ΔHiが、閾値より小さい場合、xiの値の変化を許容するものであってもよい。複数のxiの値の変化が許容された場合、選択回路55は、ランダムでまたは所定のルールにしたがって、1つの状態変数を選択し、その状態変数の識別番号を出力してもよい。
【0125】
コントローラ56は、制御信号やクロック信号を送出することで、探索部34の各回路の動作タイミングを制御する。また、コントローラ56は、閾値を生成して、選択回路55に供給する。閾値として、たとえば、log(rand)×Tが用いられる。
【0126】
図9は、h更新回路とy
k更新回路の一例を示す図である。
h更新回路52は、g/Δg算出回路52a、差分加算回路52b、h保持回路52cを有する。
【0127】
y
k更新回路53は、差分加算回路53a、y
k保持回路53bを有する。
g/Δg算出回路52aは、g
i
(k)またはΔg
i
(k)を算出する。g/Δg算出回路52aの例については後述する(
図10参照)。
【0128】
差分加算回路52bは、xjの値の変化が許容された場合、コントローラ56からの制御信号を受け、元のhiにWijΔxjを加算することで、hiを更新する。差分加算回路52bは、xjの値の変化が許容されたときにΔgi
(k)が生じる場合、hiに、さらに、Δgi
(k)を加えることで、hiを更新する。
【0129】
h保持回路52cは、n個のhiを保持する。また、h保持回路52cは、クロック信号に同期して、hiを出力する。
差分加算回路53aは、xjの値の変化が許容された場合、コントローラ56からの制御信号を受け、元のykにCkjΔxjを加算することで、ykを更新する。
【0130】
y
k保持回路53bは、m個のy
kを保持する。また、y
k保持回路53bは、クロック信号に同期して、y
kを出力する。
図10は、g/Δg算出回路の一例であるg算出回路の例を示す図である。
【0131】
g算出回路52a1は、乗算器60、選択回路61、乗算器62を有する。
乗算器60は、1と1-xiとの積を出力する。
選択回路61は、ykを受け、yk<0であれば0を出力し、yk=0であれば1-xiを出力し、yk>0であれば、1を出力する。
【0132】
乗算器62は、選択回路61の出力と-λ
kC
kiとの積を、式(13)に示したg
i
(k)として出力する。
図11は、g/Δg算出回路の一例であるΔg算出回路の例を示す図である。
【0133】
Δg算出回路52a2は、zk発生回路65とΔg発生回路66を有する。
zk発生回路65は、ykを受け、yk<0であればzk=0を出力し、yk=0であればzk=1を出力し、yk>0であれば、zk=2を出力する。
【0134】
Δg発生回路66は、zkを保持している。Δg発生回路66は、zk発生回路65が発生するzkの値と保持しているzkの値が、0と1との間で変化している場合、1-xiを選択し、-λkCki(1-xi)ΔzkをΔgi
(k)として出力する。Δg発生回路66は、zk発生回路65が発生するzkの値と保持しているzkの値が、1と2との間で変化している場合、xiを選択し、-λkCkixiΔzkをΔgi
(k)として出力する。
【0135】
図12は、データ処理装置の動作タイミングの一例を示すタイミングチャートである。
図12では、
図8に示したハードウェア構成の探索部34を用いた場合の動作タイミングの例が示されている。
図12では、15レプリカを用いた場合の処理例が示されている。探索部34は、パイプライン処理でタイミングをずらしながら、レプリカ番号=0のレプリカから順に処理を行う。
【0136】
タイミングt1から、ΔH算出回路54が、hiからΔHi(i=1~n)を算出する処理が行われる。
タイミングt2から、選択回路55が、x1~xnのうち、値の変化を許容する状態変数(xj)を選択する処理が行われる。
【0137】
タイミングt3から、状態変数更新回路51が、選択回路55が選択したxjの値を変化(0から1または1から0に反転)させる処理が行われる。
タイミングt4から、h更新回路52とyk更新回路53が、hiとykを更新する処理が行われる。
【0138】
タイミングt5から、h更新回路52が、ykからzkを算出する処理が行われる。
タイミングt6から、h更新回路52が、zkとxiから、Δgi
(k)を算出する処理が行われる。
【0139】
タイミングt7から、h更新回路52が、Δgi
(k)を用いてhiをさらに更新する処理が行われる。
その後、同様の処理が繰り返される。
【0140】
上記の各処理は、1つ前の処理が15レプリカについて全て完了しなくても、レプリカ番号=0のレプリカについての前の処理が終了した時点で開始できる。
このようなハードウェアの処理により、xjの値の変化に伴いzkの値が変化する制約項についてだけ、hiの更新に用いられるΔgi
(k)の算出が行われる。このため、処理部12は、hi(i=1~n)の更新のたびに、全制約項に対して全状態変数の値を用いた計算を行わずに済む。したがって、計算量を削減できる。
【0141】
なお、上記のようなハードウェアの処理は、CPU21がプログラムを実行することで行うこともできる。
(変形例)
上記の説明では、式(8)のykを算出するために用いられるCkiは、xiが識別番号=kの制約に影響を与える場合は1、影響を与えない場合は0であるとした。
【0142】
しかし、Ckiは、-1、0、または1の3値の値であってもよい。以下では、xiが識別番号=kの制約に対して、正の寄与を与える場合はCki=1、負の寄与を与える場合はCki=-1、影響を与えない場合はCki=0であるものとする。
【0143】
図13は、制約条件が不等式制約でありC
kiが3値の場合の、P
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
P
kとy
kとの関係を示す
図13(A)において、横軸はy
kの値を表し、縦軸は、P
kの値を表している。制約条件が不等式制約である場合、P
kは、式(3)に示したような関数で表されるものである。このため、入力量を表すy
kが0以下の場合、P
k=0、y
kが0より大きい場合、P
k=y
kとなる。
【0144】
g
i
(k)とy
kとの関係を示す
図13(B)において、横軸はy
kの値を表し、縦軸はg
i
(k)の値を表している。
図13(B)のように、C
kiΔx
i>0の場合、y
k=0のときg
i
(k)=-λ
kC
kiとなる。C
kiΔx
i<0の場合、y
k=0のときg
i
(k)=0となる。
【0145】
図14は、制約条件が等式制約でありC
kiが3値の場合の、P
kとy
kとの関係及びg
i
(k)とy
kとの関係の一例を示す図である。
P
kとy
kとの関係を示す
図14(A)において、横軸はy
kの値を表し、縦軸は、P
kの値を表している。制約条件が等式制約である場合、P
kは、式(4)に示したような関数で表されるものである。このため、P
k=|y
k|となる。
【0146】
g
i
(k)とy
kとの関係を示す
図14(B)において、横軸はy
kの値を表し、縦軸はg
i
(k)の値を表している。
図14(B)のように、C
kiΔx
i>0の場合、y
k=0のときg
i
(k)=-λ
k
+C
kiとなる。C
kiΔx
i<0の場合、y
k=0のときg
i
(k)=+λ
k
-C
kiとなる。
【0147】
上記のような3値のCkiが用いられる場合、Δxiによるykの変化が、CkiΔxiであることから、ykから発生されるzkは、以下の式(17)で表せる。
【0148】
【0149】
Δxiに対応するzkを、zi
(k)とすると、zi
(k)は、以下の式(18)で表せる。
【0150】
【0151】
このようなzi
(k)を用いることで、Δgi
(k)は、以下の式(19)で表すことができる。
【0152】
【0153】
図15は、変形例におけるΔg算出回路を示す図である。
Δg算出回路52a3は、z
k発生回路70、Δz
i
(k)発生回路71、乗算器72を有する。
【0154】
zk発生回路70は、ykを受け、zk=(zk
+,zk
-)として、yk<0であれば=(0,0)、yk=0であれば(1,0)、yk>0であれば(1,1)を出力する。
【0155】
Δzi
(k)発生回路71は、CkiΔxiを受ける。そして、Δzi
(k)発生回路71は、CkiΔxi>0であれば、zk
+と元のzi
(k)との差分値を、Δzi
(k)として出力する。Δzi
(k)発生回路71は、CkiΔxi<0であれば、zk
-と元のzi
(k)との差分値を、Δzi
(k)として出力する。
【0156】
乗算器72は、Δz
i
(k)と、-λ
kC
kiとの積を、Δg
i
(k)として出力する。
上記のような3値のC
kiが用いられる場合、
図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 評価関数情報