(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024123937
(43)【公開日】2024-09-12
(54)【発明の名称】プログラム、データ処理方法およびデータ処理装置
(51)【国際特許分類】
G06N 99/00 20190101AFI20240905BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023031775
(22)【出願日】2023-03-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】米岡 昇
(57)【要約】
【課題】求解性能を向上すること。
【解決手段】データ処理装置10は、記憶部11と処理部12とを有する。処理部12は、複数の状態変数に関する制約を示すペナルティ関数とペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を記憶部11に格納する。処理部12は、記憶部11に格納された複数の解それぞれの制約の充足状況に基づいて制約係数を調整する。処理部12は、調整後の制約係数を含む評価関数に基づいて新たな解の探索を開始させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータに、
複数の状態変数に関する制約を示すペナルティ関数と前記ペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を記憶部に格納し、
前記記憶部に格納された複数の解それぞれの前記制約の充足状況に基づいて前記制約係数を調整し、調整後の前記制約係数を含む前記評価関数に基づいて新たな解の探索を開始させる、
処理を実行させるプログラム。
【請求項2】
前記評価関数は、複数の前記制約に対応する複数の前記ペナルティ関数を含み、
前記複数の解それぞれの前記制約ごとの充足状況に基づいて、当該制約に対応する前記制約係数を調整する、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項3】
前記制約は、等式制約または不等式制約である、
請求項1記載のプログラム。
【請求項4】
複数の前記制約は、等式制約および不等式制約の何れか一方または両方を含む、
請求項2記載のプログラム。
【請求項5】
前記複数の解に前記制約を満たす解が所定数存在しない場合、前記制約に対応する前記制約係数を増加させ、前記複数の解に前記制約を満たす解が所定数存在する場合、前記制約に対応する前記制約係数を減少させる、
処理を前記コンピュータに実行させる請求項1または2記載のプログラム。
【請求項6】
複数の前記制約は、等式制約および不等式制約を含み、
前記複数の解に前記等式制約および前記不等式制約を全て満たす解が存在しない場合、前記等式制約に対応する第1の制約係数および前記不等式制約に対応する第2の制約係数の少なくとも何れかを所定確率で増加させる、
処理を前記コンピュータに実行させる請求項2記載のプログラム。
【請求項7】
前記制約係数を調整すると、調整後の前記制約係数を含む前記評価関数に基づいて前記記憶部に格納された前記複数の解それぞれに対応するエネルギーを計算し、
前記探索により新たに得られた第1の解に対して前記評価関数により計算される第1のエネルギーと前記複数の解のうちの最悪解に対応する前記エネルギーとの比較に応じて、前記記憶部に記憶される前記複数の解のうちの前記最悪解を前記第1の解に置換する、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項8】
前記記憶部に記憶される前記複数の解に基づいて、次の前記探索に用いる探索開始状態を生成する、
処理を前記コンピュータに実行させる請求項7記載のプログラム。
【請求項9】
前記複数の解とは別に、最終的に出力する候補となる1以上の解と前記制約係数を前記探索ごとに変化させない固定値とした前記評価関数に基づいて計算される、前記1以上の解それぞれに対応する出力評価用エネルギーとを前記記憶部に格納し、
前記探索により新たに得られた第1の解に対して前記制約係数を前記固定値とした前記評価関数により計算される第1の出力評価用エネルギーと前記1以上の解のうちの最悪解に対応する前記出力評価用エネルギーとの比較に応じて、前記記憶部に記憶される前記1以上の解のうちの前記最悪解を前記第1の解に置換し、
前記制約係数の調整と前記探索とを繰り返す処理を終了すると、前記記憶部に記憶される前記1以上の解の少なくとも一部を出力する、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項10】
コンピュータが、
複数の状態変数に関する制約を示すペナルティ関数と前記ペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を記憶部に格納し、
前記記憶部に格納された複数の解それぞれの前記制約の充足状況に基づいて前記制約係数を調整し、調整後の前記制約係数を含む前記評価関数に基づいて新たな解の探索を開始させる、
データ処理方法。
【請求項11】
記憶部と、
複数の状態変数に関する制約を示すペナルティ関数と前記ペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を記憶部に格納し、前記記憶部に格納された複数の解それぞれの前記制約の充足状況に基づいて前記制約係数を調整し、調整後の前記制約係数を含む前記評価関数に基づいて新たな解の探索を開始させる処理部と、
を有するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム、データ処理方法およびデータ処理装置に関する。
【背景技術】
【0002】
組合せ最適化問題の求解に情報処理装置が用いられることがある。情報処理装置は、評価関数に含まれる状態変数の値の組合せのうち、例えば評価関数の値を最小化する組合せを探索する。この場合、評価関数の値を最小化する状態変数の値の組合せは、状態変数の組により表される基底状態または最適解に相当する。実用的な時間で組合せ最適化問題の近似解を得る手法には、タブーサーチ(tabu search)法やシミュレーテッドアニーリング(SA:Simulated Annealing)法などがある。
【0003】
組合せ最適化問題がバイナリ二次計画問題(BQP:Binary Quadratic Programming Problem)である場合、磁性体のスピンの振る舞いを表すモデルであるイジングモデルのエネルギーを示す評価関数に変換し、量子アニーラ等を用いて問題を解く場合がある。例えば、制約ありの二次計画問題のラグランジュ双対を量子アニーラを用いて解くシステムの提案がある。また、二値多項的に制約された多項計画問題(BPCPPP:Binary Polynomially Constrained Polynomial Programming Problem)のラグランジュ双対を量子アニーラを用いて解くシステムの提案がある。
【0004】
また、量子アニーリングを使用して最小支配集合問題を解くシステムの提案がある。
更に、BQPを半正定計画問題(SDP:Semidefinite Programming)と呼ばれる解きやすい問題に緩和し、SDPの解を基にBQPを最適化する最適化システムの提案がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2016/0224515号明細書
【特許文献2】国際公開第2017/145086号
【特許文献3】米国特許出願公開第2017/0286852号明細書
【特許文献4】国際公開第2017/056368号
【発明の概要】
【発明が解決しようとする課題】
【0006】
BQPなどに対応する評価関数では、状態変数に対する制約がペナルティ関数として表されることがある。ペナルティ関数により、状態変数の値に応じた制約違反量が評価関数に加算される。
【0007】
評価関数には、ペナルティ関数を重み付けする係数である制約係数が用いられることがある。この場合、制約係数を適切に決定することは容易ではない。例えば、制約係数が大き過ぎると解の探索範囲が狭まり、より良い解に到達し難くなる。一方、制約係数が小さ過ぎると制約を満たす解が得られ難くなる。
【0008】
1つの側面では、本発明は、求解性能を向上することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、プログラムが提供される。このプログラムは、コンピュータに、複数の状態変数に関する制約を示すペナルティ関数とペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を記憶部に格納し、記憶部に格納された複数の解それぞれの制約の充足状況に基づいて制約係数を調整し、調整後の制約係数を含む評価関数に基づいて新たな解の探索を開始させる、処理を実行させる。
【0010】
また、1つの態様では、データ処理方法が提供される。また、1つの態様では、記憶部と処理部とを有するデータ処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、求解性能を向上できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態のデータ処理装置を説明する図である。
【
図2】第2の実施の形態のデータ処理装置のハードウェア例を示す図である。
【
図4】解プールに格納されるデータ例を示す図である。
【
図5】出力解バッファに格納されるデータ例を示す図である。
【
図6】データ処理装置の探索処理例を示すフローチャートである。
【
図7】解プールの更新例を示すフローチャートである。
【
図8】出力解バッファの更新例を示すフローチャートである。
【
図9】制約係数(α)の調整例を示すフローチャートである。
【
図10】制約係数(λ
k)の調整例を示すフローチャートである。
【
図11】制約係数(α)の他の調整例を示すフローチャートである。
【
図12】制約係数(λ
k)の他の調整例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態のデータ処理装置を説明する図である。
データ処理装置10は、組合せ最適化問題に対する解を探索し、探索した解を出力する。データ処理装置10は、記憶部11および処理部12を有する。
【0015】
記憶部11は、DRAM(Dynamic Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。記憶部11は、レジスタなどの電子回路を含んでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、DRAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0016】
組合せ最適化問題は、イジングモデルのエネルギーを示す目的関数により定式化され、例えば目的関数の値を最小化する問題に置き換えられる。目的関数は、複数の状態変数を含む。状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと言われてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。
【0017】
例えば目的関数の値を最小化する解は、イジングモデルの基底状態を表し、組合せ最適化問題の最適解に対応する。この場合、組合せ最適化問題は、イジング型の目的関数C(x)により式(1)で表される。
【0018】
【数1】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。エネルギーを最大化する問題の場合には、C(x)の符号を逆にすればよい。式(1)のC(x)で表される問題は、制約無し二次バイナリ問題(QUBO:Quadratic Unconstrained Binary Optimization)と言われる。また、C(x)はコスト関数と言われてもよい。
【0019】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。状態変数の総数はn個である。nは2以上の整数である。
【0020】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアスを示している。cは定数である。
【0021】
ここで、制約付きのBQPのように複数の状態変数に対する制約が存在する場合、当該制約は、式(2)や式(3)で表される。式(2)は二次の等式制約を示す。式(3)は一次の不等式制約を示す。
【0022】
【0023】
【数3】
式(2)のP(x)は、等式制約の違反量を示す。W’
ij,b’
iは、それぞれ式(1)のW
ij,b
iに対応する係数である。W’
ij=W’
jiであり、W’
ii=0である。c’は定数である。制約違反時には、P(x)は正の値となり、制約充足時にはP(x)は0となる。
【0024】
また、式(3)において、kは不等式制約のインデックスであり、k=1,2,…,mである。mは不等式制約の数である。Aki,Bkは、不等式制約の内容に応じて与えられる定数である。
【0025】
式(2)や式(3)の制約が課される場合、組合せ最適化問題は、式(4)の評価関数E(x)を最小化する問題として表される。
【0026】
【0027】
【数5】
max演算子は、L(x)は括弧内の値のうちの最大値をとる演算を示す。L(x)は、不等式制約kの制約違反時には正の値となり、不等式制約kの制約充足時には0となる。αは、等式制約に対する制約係数である。λ
kは、不等式制約kに対する制約係数である。αおよびλ
kは例えば1以上の整数である。αおよびλ
kは1以上の実数でもよい。
【0028】
ここで、P(x)はペナルティ関数と言われる。また、Lk(x)=λk×max(0,ΣiAxi-Bk)と記述すれば、L(x)=ΣkLk(x)と記載される。Lk(x)もペナルティ関数と言われる。L(x)は、複数の不等式制約に対応する複数のペナルティ関数の和(ΣkLk(x))である。
【0029】
なお、評価関数E(x)は、複数の等式制約に対応する複数のペナルティ関数を含んでもよい。E(x)が複数の等式制約に対応する複数のペナルティ関数を含む場合、制約係数αも等式制約の数だけ存在することになる。また、m=1でもよい。更に、式(4)、(5)では、等式制約が1個、不等式制約がm個存在する例を示しているが、E(x)は等式制約に対応するペナルティ関数および不等式制約に対応するペナルティ関数の何れか一方のみを含んでもよい。
【0030】
データ処理装置10は、ヒューリスティックな手法により、E(x)に基づいて変数xを徐々に変化させることで状態を遷移させ、より良い解を探索する。データ処理装置10は、解の探索に、例えばグリーディサーチ(greedy search)法、タブーサーチ法およびSA法などを用いることができる。グリーディサーチ法は、最急降下法とも言われる。また、エネルギーを最小化する問題では、エネルギーが小さいほど良い解であり、エネルギーが大きいほど悪い解である。
【0031】
ここで、制約係数α,λkの値は、求解性能に影響する。例えば、α,λkが大き過ぎる場合、E(x)に基づく解の探索において、P(x)やL(x)の働きが強くなり、探索後の解はP(x)=0,L(x)=0で制約充足となり易いがC(x)が十分小さくならない。一方、α,λkが小さ過ぎる場合、E(x)に基づく解の探索において、P(x)やL(x)の働きが弱くなり、C(x)は小さくなるがP(x)>0,L(x)>0となり、制約違反となり易い。そこで、処理部12は、繰り返し実行される複数回の探索により得られた複数の解に基づいて次のように制約係数を調整する。
【0032】
まず、処理部12は、評価関数に基づく探索により得られた解を記憶部11に格納する。解の探索は、処理部12により実行されてもよいし、処理部12とは異なる探索部により実行されてもよい。例えば、探索部は、データ処理装置10またはデータ処理装置10と通信する情報処理装置が備えるCPU,GPU,DSP,ASIC,FPGAなどにより実現され得る。
【0033】
解の探索は、例えば探索開始状態を変更して複数回行われる。探索開始状態は、探索の起点となる状態である。探索開始状態は、記憶部11に保持される解から生成されてもよい。例えば、処理部12は、複数の解として解x1,x2,…を取得し、記憶部11に格納する。記憶部11に、保持される解の個数は予め定められる。
【0034】
そして、処理部12は、記憶部11に格納された複数の解それぞれの制約の充足状況に基づいて、評価関数に含まれる、当該制約に対応する制約係数を調整する。例えば、処理部12は、解x1,x2,…の中に、ある制約を満たす解が存在しない場合、当該制約に対応する制約係数を増加させることで、当該制約の働きを強くする。一方、処理部12は、解x1,x2,…の中に、ある制約を満たす解が存在する場合、当該制約に対応する制約係数を減少させることで、当該制約の働きを弱くする。なお、記憶部11に保持される複数の解のうち、ある制約を満たす解の個数が所定の数以下の場合に当該制約に対応する制約係数を増加させてもよい。また、記憶部11に保持される複数の解のうち、ある制約を満たす解の個数が所定の数以上の場合に当該制約に対応する制約係数を減少させてもよい。
【0035】
解が制約を充足するか否かは、当該解のペナルティ関数の値により判定される。例えば、評価関数E(x)の例では、P(x)=0の場合に等式制約が充足され、P(x)>0の場合に等式制約が充足されない。また、Lk(x)=0の場合に不等式制約kが充足され、Lk(x)>0の場合に不等式制約kが充足されない。
【0036】
ここで、評価関数E(x)のように、評価関数が複数の制約に対応する複数のペナルティ関数を含む場合、処理部12は、解x1,x2,…の制約ごとの充足状況に基づいて、当該制約に対応する制約係数を調整する。例えば、処理部12は、解x1,x2,…の不等式制約kの充足状況に基づいて、制約係数λkを調整する。
【0037】
また、処理部12は、等式制約および不等式制約ごとに制約係数α,λkを個別に制御するだけでなく、等式制約および不等式制約の充足状況に基づいて、制約係数α,λkの少なくとも何れかを調整してもよい。例えば、処理部12は、解x1,x2,…の中に、等式制約および不等式制約を全て満たす解が存在しない場合に、等式制約に対応する制約係数αおよび不等式制約kに対応する制約係数λkの少なくとも何れかを所定確率で増加させてもよい。
【0038】
処理部12は、調整後の制約係数を含む評価関数に基づいて新たな解の探索を開始させる。新たな解の探索を開始させることは、新たな解の探索を起動することであるとも言える。前述のように、解の探索は、処理部12により実行されてもよいし、所定の探索部により実行されてもよい。また、探索開始状態は、記憶部11に記憶されている解x1,x2,…に基づいて生成されてもよい。処理部12は、新たな探索により得られた新たな解を取得し、新たな解が記憶部11に格納された最も悪い解(最悪解)よりも良い場合、記憶部11の1つの最悪解を新たな解で置換する。なお、処理部12は、新たな解とのエネルギーの比較を行うため、記憶部11に格納された各解に対し、最新の制約係数を用いた評価関数によるエネルギーを予め計算する。
【0039】
なお、処理部12は、上記の制約係数の調整用の解とは別に、組合せ最適化問題の解として最終的に出力する解も記憶部11に記録しておく。例えば、処理部12は、予め定められた固定の制約係数α’,λk’を、それぞれ制約係数α,λkの代わりに用いて、式(4)により探索により得られた解のエネルギーE’を計算し、エネルギーE’が小さいものを優先して所定数だけ記憶部11に格納する。α’,λk’には、制約充足解を優先して出力するため、C(x)に対して十分大きな値が設定される。
【0040】
こうして、処理部12は、上記の解の探索が一定期間、または、一定回数行われると、記憶部11に記憶された、エネルギーE’が小さい解を優先して出力する。
以上説明したようにデータ処理装置10によれば、複数の状態変数に関する制約を示すペナルティ関数とペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解が記憶部11に格納される。記憶部11に格納された複数の解それぞれの制約の充足状況に基づいて制約係数が調整される。調整後の制約係数を含む評価関数に基づいて新たな解の探索が開始される。これにより、データ処理装置10は、解の探索における求解性能を向上できる。
【0041】
ここで、複数の解に対する制約の充足状況には、当該制約が及ぼす探索への影響が反映される。上記のように、制約の影響は強過ぎても弱過ぎても求解性能を悪化させる。
これに対し、データ処理装置10により、複数の解に対する制約の充足状況を基に制約係数が動的に調整されることで、探索に対する当該制約の影響が適度になるように、評価関数が適切に制御される。このため、例えば固定の制約係数を用いて探索を行うよりも、より良い解に到達し易くなり、求解性能が向上する。
【0042】
例えば、データ処理装置10は、制約を辛うじて満たす境界付近を変動させるように制約係数を制御可能になり、制約を緩和した探索と制約を充足させる探索との両方を実現することができる。その結果、解の探索においてより良い解に到達し易くなり、求解性能が向上する。
【0043】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のデータ処理装置のハードウェア例を示す図である。
【0044】
データ処理装置100は、制約付きのBQPに対する解を、グリーディサーチ法、タブーサーチ法またはSA法などを用いて探索し、探索した解を出力する。制約付きのBQPは、式(4)の評価関数により定式化され、評価関数の値を最小化する問題に置き換えられる。
【0045】
第2の実施の形態では、等式制約の数を1個とし、不等式制約の数を複数個とする例を説明するが、等式制約の数は1以上でもよく、不等式制約の数は1以上でもよい。また、求解対象の問題において等式制約および不等式制約の何れか一方のみが存在してもよい。
【0046】
データ処理装置100は、プロセッサ101、DRAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106、通信インタフェース107およびアクセラレータカード108を有する。データ処理装置100が有するこれらのユニットは、データ処理装置100の内部でバスに接続されている。プロセッサ101は、第1の実施の形態の処理部12に対応する。DRAM102は、第1の実施の形態の記憶部11に対応する。
【0047】
プロセッサ101は、プログラムの命令を実行する演算装置である。プロセッサ101は、例えばCPUである。プロセッサ101は、HDD103に記憶されたプログラムやデータの少なくとも一部をDRAM102にロードし、プログラムを実行する。なお、プロセッサ101は複数のプロセッサコアを含んでもよい。また、データ処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0048】
DRAM102は、プロセッサ101が実行するプログラムやプロセッサ101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置100は、DRAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0049】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、データ処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0050】
GPU104は、プロセッサ101からの命令に従って、データ処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0051】
入力インタフェース105は、データ処理装置100に接続された入力デバイス52から入力信号を取得し、プロセッサ101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0052】
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0053】
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、DRAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、プロセッサ101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0054】
通信インタフェース107は、ネットワーク54に接続され、ネットワーク54を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0055】
アクセラレータカード108は、BQPなどの組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード108は、プロセッサ110およびDRAM120を有する。プロセッサ110は、グリーディサーチ法、タブーサーチ法またはSA法などにより解の探索を実行する。プロセッサ110は、例えばGPU、DSP、ASIC、FPGAなどである。DRAM120は、プロセッサ110の処理に用いられるデータを記憶する。
【0056】
図3は、データ処理装置の機能例を示す図である。
データ処理装置100は、解プール130、出力解バッファ140、探索部150、解プール処理部160、制約係数調整部170および出力解制御部180を有する。解プール130および出力解バッファ140には、DRAM102の記憶領域が用いられる。解プール130および出力解バッファ140には、HDD103の記憶領域が用いられてもよい。
【0057】
解プール処理部160、制約係数調整部170および出力解制御部180は、プロセッサ101がDRAM102に記憶されたプログラムを実行することで実現される。探索部150は、プロセッサ110により実現される。ただし、探索部150は、プロセッサ101がDRAM102に記憶されたプログラムを実行することで実現されてもよい。
【0058】
解プール130は、探索部150により探索された解を所定数だけ記憶する。解プール130に記憶される解は、式(4)の評価関数E(x)に含まれる制約係数α,λkの調整に用いられる。解プール130に保持される解の良否は、制約係数α,λkを含む式(4)、(5)により計算されるエネルギーEに基づいて判断される。
【0059】
出力解バッファ140は、探索部150により探索された解を所定数だけ記憶する。出力解バッファ140に記憶される解は、制約付きのBQPに対する最終的な解の候補となる。出力解バッファ140に保持される解の良否は、制約係数α,λkの代わりに、予め定められた固定の制約係数α’,λk’を用いて式(5)により計算されるエネルギーE’に基づいて判断される。出力解バッファ140に保持される解は、求解対象の問題に対して最終的な出力候補となる解である。このため、エネルギーE’は、出力評価用エネルギーと言われてもよい。
【0060】
探索未実行の初期状態では、解プール130および出力解バッファ140には、予め作成された所定数の解が保持される。なお、出力解バッファ140に保持される解の個数は、解プール130に保持される解の個数と同じでもよいし、異なってもよい。
【0061】
探索部150は、制約係数α,λkを含む式(5)の評価関数E(x)に基づいて、解の探索を行う。探索部150による解の探索には、例えばグリーディサーチ法、タブーサーチ法またはSA法などが用いられる。制約係数α,λkは、制約係数調整部170により探索部150に入力される。探索部150は、探索した解を、解プール処理部160および出力解制御部180に出力する。
【0062】
解プール処理部160は、探索部150で探索された新たな解を取得し、新たな解が解プール130内の最悪解よりも良い場合、解プール130内の最悪解を新たな解で置換する。前述のように、解プール処理部160は、解プール130における解の良否を、制約係数α,λkを含む式(4)、(5)により計算されるエネルギーEに基づいて判断する。
【0063】
また、解プール処理部160は、解プール130に保持される解に基づいて探索部150が次の探索に用いる探索開始状態を作成し、探索部150に入力する。探索開始状態の作成には、例えばPath Relinkingなどの方法が用いられてもよい。Path Relinkingには次の文献1が参考になる。
【0064】
文献1:Y. Wang, 他3名,"Path relinking for unconstrained binary quadratic programming", European Journal of Operational Research, volume 223, issue 3, 2012年12月16日, pp.595-604
制約係数調整部170は、解プール130に保持される複数の解の等式制約および不等式制約の充足状況に応じて、制約係数α,λkを調整する。制約係数調整部170は、調整後のα,λkを探索部150に入力し、探索部150による新たな解の探索を開始させる。
【0065】
出力解制御部180は、探索部150で探索された新たな解を取得し、新たな解が出力解バッファ140に保存済の何れかの解よりも良い場合、出力解バッファ140の最悪解を新たな解で置換する。前述のように、出力解制御部180は、出力解バッファ140における解の良否を、制約係数α’,λk’を含む式(4)、(5)により計算されるエネルギーE’に基づいて判断する。
【0066】
出力解制御部180は、探索部150による一定期間または一定回数の探索が終了すると、出力解バッファ140に含まれる解を、エネルギーE’の小さいものを優先して出力する。出力解制御部180は、出力解バッファ140における最も良い解を出力してもよいし、出力解バッファ140における一部または全部の解を出力してもよい。例えば、出力解制御部180は、ディスプレイ51に解の情報を表示させてもよいし、ネットワーク54を介して他のコンピュータに解の情報を送信してもよい。
【0067】
図4は、解プールに格納されるデータ例を示す図である。
一例として、解プール130は、6個の解に対応するレコードを保持する。6個のインデックス(idx)「0」~「5」は、解プール130のレコードを識別する。インデックスが小さいほど、良い、すなわち、エネルギーEが小さい解に対応するレコードである。
【0068】
1つのレコードは、状態ベクトルx=(x1,x2,…,xn)で表される解、解に対応するエネルギーE(x)の値、コスト関数C(x)の値、等式制約のペナルティ関数P(x)の値、不等式制約のペナルティ関数L1(x),L2(2),…,Lm(x)の値を含む。
【0069】
図5は、出力解バッファに格納されるデータ例を示す図である。
一例として、出力解バッファ140は、4個の解に対応するレコードを保持する。4個のインデックス(idx)「0」~「3」は、出力解バッファ140のレコードを識別する。インデックスが小さいほど、良い、すなわち、エネルギーE’が小さい解に対応するレコードである。
【0070】
1つのレコードは、状態ベクトルx=(x1,x2,…,xn)で表される解、解に対応するエネルギーE’(x)の値、コスト関数C(x)の値、等式制約のペナルティ関数P(x)の値、不等式制約のペナルティ関数L1(x),L2(2),…,Lm(x)の値を含む。ただし、出力解バッファ140のレコードは、C(x)、P(x)、L1(x),L2(2),…,Lm(x)を含まなくてもよい。
【0071】
次に、データ処理装置100の処理手順を説明する。
図6は、データ処理装置の探索処理例を示すフローチャートである。
(S10)探索部150は、初期化を行う。初期化では、探索部150に対して、求解対象のBQPに対応する評価関数E(x)の設定や探索に用いられる各種のパラメータの値(例えばSA法における温度値など)の設定や初期の探索開始状態の設定などが行われる。ステップS10の段階の評価関数E(x)は、制約係数α,λ
kの初期値を含む。また、初期化では、解プール処理部160は、所定数の初期解を解プール130に設定する。更に、初期化では、出力解制御部180は、所定数の初期解を出力解バッファ140に設定する。
【0072】
(S11)探索部150は、評価関数E(x)に基づいて解の探索を行う。ここで、探索開始状態は、解プール処理部160により解プール130に保存されている複数の解から作成され、探索部150に入力される。探索部150は、今回の探索を終了すると、今回の探索により得られた解を、解プール処理部160および出力解制御部180に出力する。探索部150は、今回の探索により得られた複数の解を解プール処理部160および出力解制御部180に出力してもよい。
【0073】
(S12)解プール処理部160は、解プール130の更新を行う。解プール130の更新の詳細は後述される。
(S13)出力解制御部180は、出力解バッファ140の更新を行う。出力解バッファ140の更新の詳細は後述される。
【0074】
(S14)制約係数調整部170は、解プール130に保持される複数の解の制約の充足状況に基づいてE(x)に含まれる制約係数α,λkの調整を行い、調整後のα,λkを探索部150に出力する。制約係数の調整の詳細は後述される。
【0075】
(S15)解プール処理部160は、ステップS14による調整後の制約係数α,λkを用いて、解プール130に保持される各解のE(x)を式(4)、(5)により再計算し、解プール130に保存する。
【0076】
(S16)探索部150は、探索終了であるか否かを判定する。探索終了の場合、探索処理が終了する。探索終了でない場合、ステップS11に処理が進む。例えば、探索部150は、一定期間または一定回数だけステップS11~S15の探索処理を実行した場合に、探索終了と判定する。探索部150は、一定期間または一定回数の探索を実行したことの情報が探索部150に入力された場合に、探索終了と判定してもよい。なお、探索終了の場合、出力解制御部180は、出力解バッファ140に保持される解を出力する。
【0077】
図7は、解プールの更新例を示すフローチャートである。
解プール130の更新は、ステップS12に相当する。
(S20)解プール処理部160は、探索部150から今回の探索後の解Aを取得する。
【0078】
(S21)解プール処理部160は、解Aが解プール130に存在するか否かを判定する。解Aが解プール130に存在する場合、ステップS26に処理が進む。解Aが解プール130に存在しない場合、ステップS22に処理が進む。
【0079】
(S22)解プール処理部160は、解プール130からE(x)が最大の解Wを選択する。
(S23)解プール処理部160は、解AのE(x)が解WのE(x)よりも小さいか否かを判定する。解AのE(x)が解WのE(x)よりも小さい場合、ステップS24に処理が進む。解AのE(x)が解WのE(x)以上の場合、ステップS26に処理が進む。
【0080】
(S24)解プール処理部160は、解AのC(x),P(x),Lk(x)を算出する。ステップS24のC(x),P(x),Lk(x)の算出は、制約係数α,λkの現在の値を用いて行われる。
【0081】
(S25)解プール処理部160は、解プール130の解Wを解Aで置き換える。
(S26)解プール処理部160は、探索部150による今回の探索後の全ての解を処理したか否かを判定する。今回の探索後の全ての解を処理した場合、解プール130の更新が終了する。今回の探索後の全ての解を処理していない場合、ステップS20に処理が進む。ステップS20では、次の新たな解が解Aとして取得される。
【0082】
このように、解プール処理部160は、重複を許さずに解プール130のE(x)に関する最悪解を、探索後の解で置き換えていく。
図8は、出力解バッファの更新例を示すフローチャートである。
【0083】
出力解バッファ140の更新は、ステップS13に相当する。
(S30)出力解制御部180は、探索部150から今回の探索後の解Aを取得する。
(S31)出力解制御部180は、解Aが出力解バッファ140に存在するか否かを判定する。解Aが出力解バッファ140に存在する場合、ステップS37に処理が進む。解Aが出力解バッファ140に存在しない場合、ステップS32に処理が進む。
【0084】
(S32)出力解制御部180は、解AのエネルギーE’(x)を計算する。E’(x)は、α=α’、λk=λk’および解Aの各状態変数の値を式(5)に代入することで計算される。
【0085】
(S33)出力解制御部180は、出力解バッファ140からE’(x)が最大の解Wを選択する。
(S34)出力解制御部180は、解AのE’(x)が解WのE’(x)よりも小さいか否かを判定する。解AのE’(x)が解WのE’(x)よりも小さい場合、ステップS35に処理が進む。解AのE’(x)が解WのE’(x)以上の場合、ステップS37に処理が進む。
【0086】
(S35)出力解制御部180は、解AのC(x),P(x),Lk(x)を算出する。ステップS35のC(x),P(x),Lk(x)の算出は、制約係数α’,λk’の値を用いて行われる。
【0087】
(S36)出力解制御部180は、出力解バッファ140の解Wを解Aで置き換える。
(S37)出力解制御部180は、探索部150による今回の探索後の全ての解を処理したか否かを判定する。今回の探索後の全ての解を処理した場合、出力解バッファ140の更新が終了する。今回の探索後の全ての解を処理していない場合、ステップS30に処理が進む。ステップS30では、次の新たな解が解Aとして取得される。
【0088】
このように、出力解制御部180は、重複を許さずに出力解バッファ140のE’(x)に関する最悪解を、探索後の解で置き換えていく。
図9は、制約係数(α)の調整例を示すフローチャートである。
【0089】
制約係数(α)の調整は、ステップS14に相当する。
(S40)制約係数調整部170は、解プール130内の全ての解のP(x)が正であるか否かを判定する。解プール130内の全ての解のP(x)が正の場合、ステップS41に処理が進む。解プール130内の少なくとも1つの解のP(x)が0の場合、ステップS42に処理が進む。ここで、P(x)が正(P(x)>0)であることは、等式制約を充足しないことを示す。また、P(x)が0(P(x)=0)であることは、等式制約を充足することを示す。
【0090】
(S41)制約係数調整部170は、αを増やす。そして、制約係数(α)の調整が終了する。
(S42)制約係数調整部170は、αを減らす。そして、制約係数(α)の調整が終了する。
【0091】
図10は、制約係数(λ
k)の調整例を示すフローチャートである。
制約係数(λ
k)の調整は、ステップS14に相当する。また、下記の手順は、不等式制約ごと、すなわち、kごとに繰り返し、または、並列に実行される。
【0092】
(S50)制約係数調整部170は、解プール130内の全ての解のLk(x)が正であるか否かを判定する。解プール130内の全ての解のLk(x)が正の場合、ステップS51に処理が進む。解プール130内の少なくとも1つの解のLk(x)が0の場合、ステップS52に処理が進む。ここで、Lk(x)が正(Lk(x)>0)であることは、不等式制約kを充足しないことを示す。また、Lk(x)が0(Lk(x)=0)であることは、不等式制約kを充足することを示す。
【0093】
(S51)制約係数調整部170は、λkを増やす。そして、制約係数(λk)の調整が終了する。
(S52)制約係数調整部170は、λkを減らす。そして、制約係数(λk)の調整が終了する。
【0094】
制約係数調整部170は、ステップS14において、
図9、
図10で示した制約係数α,λ
kの調整を行う。各制約係数の調整は任意の順序で行われてもよいし、並列に行われてもよい。
【0095】
制約係数調整部170は、
図9の手順に代えて、次の手順により制約係数αの調整を行ってもよい。
図11は、制約係数(α)の他の調整例を示すフローチャートである。
【0096】
制約係数(α)の調整は、ステップS14に相当する。
(S60)制約係数調整部170は、解プール130内の全ての解のP(x)が正であるか否かを判定する。解プール130内の全ての解のP(x)が正の場合、ステップS63に処理が進む。解プール130内の少なくとも1つの解のP(x)が0の場合、ステップS61に処理が進む。
【0097】
(S61)制約係数調整部170は、解プール130に制約充足解が存在するか否かを判定する。制約充足解が存在しない場合、ステップS62に処理が進む。制約充足解が存在する場合、ステップS64に処理が進む。ここで、制約充足解は、全ての制約を充足する解を示し、式(4)の例では、P(x)=0かつL(x)=ΣkLk(x)=0の解である。
【0098】
(S62)制約係数調整部170は、r < Paであるか否かを判定する。r < Paである場合、ステップS63に処理が進む。r < Paでない場合、ステップS64に処理が進む。ここで、rは、例えば、制約係数調整部170により生成された0以上1未満の乱数である。一例では、Pa=0.1である。ただし、Paは他の値でもよい。
【0099】
(S63)制約係数調整部170は、αを増やす。そして、制約係数(α)の調整が終了する。
(S64)制約係数調整部170は、αを減らす。そして、制約係数(α)の調整が終了する。
【0100】
制約係数調整部170は、
図10の手順に代えて、次の手順により制約係数λ
kの調整を行ってもよい。
図12は、制約係数(λ
k)の他の調整例を示すフローチャートである。
【0101】
制約係数(λk)の調整は、ステップS14に相当する。また、下記の手順は、不等式制約ごと、すなわち、kごとに繰り返し、または、並列に実行される。
(S70)制約係数調整部170は、解プール130内の全ての解のLk(x)が正であるか否かを判定する。解プール130内の全ての解のLk(x)が正の場合、ステップS73に処理が進む。解プール130内の少なくとも1つの解のLk(x)が0の場合、ステップS71に処理が進む。
【0102】
(S71)制約係数調整部170は、解プール130に制約充足解が存在するか否かを判定する。制約充足解が存在しない場合、ステップS72に処理が進む。制約充足解が存在する場合、ステップS74に処理が進む。
【0103】
(S72)制約係数調整部170は、r < Plであるか否かを判定する。r < Plである場合、ステップS73に処理が進む。r < Plでない場合、ステップS74に処理が進む。ここで、rは、例えば、制約係数調整部170により生成された0以上1未満の乱数である。一例では、Pl=0.1である。ただし、Plは他の値でもよく、Paとは異なる値でもよい。
【0104】
(S73)制約係数調整部170は、λkを増やす。そして、制約係数(λk)の調整が終了する。
(S74)制約係数調整部170は、λkを減らす。そして、制約係数(λk)の調整が終了する。
【0105】
ここで、制約係数調整部170による制約係数の増減の具体的な方法を説明する。例えば、制約係数調整部170は、等式制約の制約係数αを次のように増減させる。以下の説明において、α1は現在の制約係数を示す。また、α2は次の制約係数(調整後の制約係数)を示す。
【0106】
制約係数αを増やす場合、制約係数調整部170は式(6)によりα2を決定する。
【0107】
【数6】
制約係数αを減らす場合、制約係数調整部170は式(7)によりα2を決定する。
【0108】
【数7】
例えば、増加率d
0および減少率d
1はユーザにより予め与えられる固定値である。d
0は、1.0<d
0を満たす値とされる。d
1は、0<d
1<1.0を満たす値とされる。一例では、d
0=1.2、d
1=0.9である。max(a,b)は、a,bのうち大きい方の値を選択する処理である。具体的には、max(1.0,x)は、xが1.0より小さい場合は1.0にクリップして出力する処理である。ceil()は、小数点以下を切り上げて整数にする処理である。floor()は、小数点以下を切り捨てて整数にする処理である。
【0109】
また、制約係数調整部170は、不等式制約kの制約係数λkを次のように増減させる。以下の説明において、λ1kは現在の制約係数を示す。また、λ2kは次の制約係数(調整後の制約係数)を示す。
【0110】
制約係数λkを増やす場合、制約係数調整部170は式(8)によりλ2kを決定する。
【0111】
【数8】
制約係数λ
kを減らす場合、制約係数調整部170は式(9)によりλ2
kを決定する。
【0112】
【数9】
ceil、floor、maxの意味は、制約係数αの場合と同じである。式(8)、(9)のd
0,d
1についても、等式制約αの場合と同様に、ユーザにより固定の値が予め設定される。また、d
0,d
1は、複数の等式制約および複数の不等式制約において同じ値でもよいし、制約ごとに異なっていてもよい。
【0113】
図13は、制約係数の調整例を示す図である。
ここでは一例として、等式制約の数が1個であり、不等式制約の数mがm=2個であるとする。この場合、式(5)は、2つの不等式制約に対応する2つのペナルティ関数L
1(x)、L
2(x)を含む。
【0114】
表60,61,62,63は、それぞれステップS0,S1,S2,S3における解プール130の6つの解のP(x)、L1(x)、L2(x)の制約充足状況の例を示す。P(x)、L1(x)、L2(x)の「0」の表記は、対応する制約を充足することを示す。一方、P(x)、L1(x)、L2(x)の「>0」の表記は、対応する制約を充足しないことを示す。ステップS0は、制約充足解がある場合である。ステップS1~S3は、制約充足解がない場合である。また、「α-」の表記は、αを減らすことを示す。「λ-」の表記は、λkを減らすことを示す。「α+」の表記は、αを増やすことを示す。「λ+」の表記は、λkを増やすことを示す。
【0115】
図9、
図10の制約係数の調整では、制約ごとに独立して制約係数を調整することで、各制約の制約充足境界近辺を探索可能になる。その結果、制約の緩和と強化とが繰り返されることで求解性能の向上が図られる。ただし、
図9、
図10に示される独立制御だけでは、例えば、ステップS1から開始してステップS2,S3を繰り返し、時間をかけてもステップS0の制約充足解を得られるα,λ
kの値に到達することができない場合があり得る。
【0116】
そこで、制約係数調整部170は、
図9、
図10の手順に代えて、
図11、
図12の手順を制約係数の調整に用いてもよい。すなわち、制約係数調整部170は、解プール130にP(x)=0かつL(x)=0となる解(制約充足解)が存在しない場合に、確率Paでαを増やしてもよい。また、制約係数調整部170は、解プール130にP(x)=0かつL(x)=0となる解が存在しない場合に、確率Plでλ
kを増やしてもよい。こうして、制約係数調整部170は、ステップS2からステップS1、および、ステップS1からステップS0に確率的に移るように、α,λ
kを変化(増加)させることで、全ての制約を満たす解、すなわち、制約充足解を得ることができる。
【0117】
以上説明したように、第2の実施の形態のデータ処理装置100は、BQPにおける等式制約と不等式制約の各制約係数を自動かつ適切に制御することで、ユーザの手間を削減しつつ高い求解性能を実現することができる。
【0118】
データ処理装置100は次の処理を実行するということもできる。
プロセッサ101は、複数の状態変数に関する制約を示すペナルティ関数とペナルティ関数に乗じる制約係数とを含む評価関数に基づいて探索された解を解プール130に格納する。プロセッサ101は、解プール130に格納された複数の解それぞれの制約の充足状況に基づいて制約係数を調整し、調整後の制約係数を含む評価関数に基づいて新たな解の探索を開始させる。
【0119】
これにより、データ処理装置100は評価関数に基づく解の探索における求解性能を向上できる。制約は、例えば等式制約または不等式制約である。前述のように、解プール130は、DRAM102やHDD103などの記憶領域により実現される。DRAM102やHDD103は、第1の実施の形態の記憶部11の一例である。
【0120】
また、評価関数は、複数の制約に対応する複数のペナルティ関数を含んでもよい。その場合、プロセッサ101は、複数の解それぞれの制約ごとの個別の充足状況に基づいて、当該制約に対応する制約係数を調整する。
【0121】
このように、プロセッサ101は、制約ごとに独立して制約係数を調整することで、求解性能の向上を図れる。複数の制約は、例えば等式制約および不等式制約の何れか一方または両方を含む。
【0122】
プロセッサ101は、制約係数の調整では、解プール130の複数の解に制約を満たす解が所定数存在しない場合、当該制約に対応する制約係数を増加させ、当該複数の解に当該制約を満たす解が所定数存在する場合、当該制約に対応する制約係数を減少させる。制約係数を増加させることは、制約係数の値を大きくすることであるとも言える。制約係数を減少させることは、制約係数の値を小さくすることであるとも言える。
【0123】
このように制約係数を増減する調整が行われることで、該当の制約の制約充足境界近辺を探索可能になる。その結果、当該制約の緩和と強化とが繰り返され、求解性能の向上が図られる。
【0124】
また、複数の制約が等式制約および不等式制約を含む場合、プロセッサ101は、次の制約係数の調整を行ってもよい。すなわち、プロセッサ101は、複数の解に等式制約および不等式制約を全て満たす解が存在しない場合に、等式制約に対応する第1の制約係数および不等式制約に対応する第2の制約係数の少なくとも何れかを所定確率で増加させてもよい。
【0125】
これにより、データ処理装置100は、制約充足解を得られる可能性を向上でき、求解性能の向上を図れる。
また、プロセッサ101は、制約係数を調整すると、調整後の制約係数を含む評価関数に基づいて解プール130に格納された複数の解それぞれに対応するエネルギーE(x)を計算する。プロセッサ101は、探索により新たに得られた第1の解に対して評価関数により計算される第1のエネルギーと複数の解のうちの最悪解に対応するエネルギーとの比較に応じて、解プール130に記憶される複数の解のうちの最悪解を第1の解に置換する。
【0126】
これにより、データ処理装置100は、解プール130の解を徐々に改善していくことができる。例えば、良い解の近傍には、更に良い解が存在する可能性が高いことがある。このため、プロセッサ101は、解プール130の複数の解に基づいて、前述のPath Relinkingなどの所定の方法により次の探索に用いる探索開始状態を生成してもよい。これにより、新たな探索においてより良い解に到達する可能性を高められる。
【0127】
また、プロセッサ101は、解プール130の複数の解とは別に、出力解バッファ140にも1以上の解を格納する。出力解バッファ140に保持される1以上の解は、求解対象の問題に対して最終的に出力する候補となる。更に、プロセッサ101は、制約係数を探索ごとに変化させない固定値とした評価関数に基づいて計算される、1以上の解それぞれに対応する出力評価用エネルギーE’(x)も出力解バッファ140に格納する。そして、プロセッサ101は、探索により新たに得られた第1の解に対して制約係数を固定値とした評価関数により計算される第1の出力評価用エネルギーと1以上の解のうちの最悪解に対応する出力評価用エネルギーとの比較を行う。プロセッサ101は、当該比較に応じて、出力解バッファ140に記憶される1以上の解のうちの最悪解を第1の解に置換する。プロセッサ101は、制約係数の調整と探索とを繰り返す処理を終了すると、出力解バッファ140に記憶される1以上の解の少なくとも一部を出力する。
【0128】
これにより、データ処理装置100は、固定値の制約係数で定められる一定の基準によって出力解バッファ140に保持する解を制御でき、最終的に出力する解を適切に制御できる。例えば、前述のように、制約充足解を優先して出力するために、制約係数の固定値(例えば、α’やλ’k)として、C(x)に対して十分大きな値が設定される。例えば、プロセッサ101は、出力解バッファ140に記憶される1以上の解から、出力評価用エネルギーが良いものを優先して出力することができる。
【0129】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
【0130】
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0131】
10 データ処理装置
11 記憶部
12 処理部