(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022142914
(43)【公開日】2022-10-03
(54)【発明の名称】求解装置およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20220926BHJP
G06F 17/12 20060101ALI20220926BHJP
【FI】
G06N99/00 180
G06F17/12
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021043184
(22)【出願日】2021-03-17
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】301063496
【氏名又は名称】東芝デジタルソリューションズ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 賢
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB02
(57)【要約】
【課題】良い解を効率良く算出する。
【解決手段】求解装置は、非凸二次関数である目的関数を最小化する問題の解を、J個の連立一次方程式を満たし且つK個の連立一次不等式を満たす条件の下で算出する。求解装置は、取得部と、更新部と、出力部とを備える。更新部は、拡張ラグランジュ関数に基づき生成されるI個の決定変数を含む第1関数を最小化するI個の決定変数の解の候補値を取得する第1処理、拡張ラグランジュ関数に基づき生成されるK個の従属変数を含む第2関数を最小化するK個の従属変数の解の候補値を取得する第2処理、および、拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す。拡張ラグランジュ関数は、目的関数を含む目的関数項と、J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
それぞれが0または1となるI個(Iは2以上の整数)の決定変数を含む非凸二次関数である目的関数を最小化する問題の解を、それぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むJ個(Jは0以上の整数)の連立一次方程式を満たし且つそれぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むK個(Kは1以上の整数)の連立一次不等式を満たす条件の下で、算出する求解装置であって、
前記目的関数、前記J個の連立一次方程式および前記K個の連立一次不等式を取得する取得部と、
拡張ラグランジュ関数に基づき生成される前記I個の決定変数を含む第1関数を最小化する前記I個の決定変数の解の候補値を取得する第1処理、前記拡張ラグランジュ関数に基づき生成されるK個の従属変数を含む第2関数を最小化する前記K個の従属変数の解の候補値を取得する第2処理、および、前記拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す更新部と、
前記第1処理、前記第2処理および前記係数処理を繰り返すことによって予め設定された終了条件に達した場合、前記I個の決定変数の解の候補値を、前記問題の解として出力する出力部と、
を備え、
前記拡張ラグランジュ関数は、前記目的関数を含む目的関数項と、前記J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、前記K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む
求解装置。
【請求項2】
前記J個の第1ラグランジュ項のそれぞれは、前記J個の連立一次方程式のうちの対応する連立一次方程式と前記I個の決定変数の解の候補値との誤差を表す関数に、J個の第1ラグランジュ係数のうちの対応する第1ラグランジュ係数を乗じた関数であり、
前記K個の第2ラグランジュ項のそれぞれは、前記K個の連立一次不等式のうちの対応する連立一次不等式の不等号を等号に置き換え且つ定数項を前記K個の従属変数のうちの対応する従属変数に置き換えた代替方程式と、前記I個の決定変数の解の候補値との誤差を表す関数に、K個の第2ラグランジュ係数のうちの対応する第2ラグランジュ係数を乗じた関数であり、
前記ペナルティ項は、それぞれが対応する連立一次方程式と前記I個の決定変数の解の候補値との距離を表すJ個の第1距離関数と、それぞれが対応する代替方程式と前記I個の決定変数の解の候補値との距離を表すK個の第2距離関数との合計に、ペナルティ係数を乗じた関数である
請求項1に記載の求解装置。
【請求項3】
前記更新部は、前記第2処理において、K個の不等式を満たす条件の下で、前記第2関数における前記K個の従属変数の解の候補値を取得し、
前記K個の不等式のそれぞれは、前記K個の従属変数のうちの対応する従属変数が、前記K個の連立一次不等式のうちの対応する連立一次不等式における定数項以下であること表す
請求項2に記載の求解装置。
【請求項4】
前記第1関数は、前記拡張ラグランジュ関数に、前記K個の従属変数の解の候補値を代入した関数であり、
前記第2関数は、前記拡張ラグランジュ関数に、前記I個の決定変数の解の候補値を代入した関数である
請求項3に記載の求解装置。
【請求項5】
前記更新部は、前記係数処理において、前記拡張ラグランジュ関数に含まれる係数として、前記J個の第1ラグランジュ係数、前記K個の第2ラグランジュ係数および前記ペナルティ係数を更新する
請求項4に記載の求解装置。
【請求項6】
前記ペナルティ係数は、正であり、
前記更新部は、前記係数処理において、
前記J個の第1ラグランジュ係数のそれぞれから、対応する連立一次方程式と前記I個の決定変数の解の候補値との誤差に応じた値を減じ、
前記K個の第2ラグランジュ係数のそれぞれから、対応する代替方程式と前記I個の決定変数の解の候補値との誤差に応じた値を減じ、
前記ペナルティ係数を増加させる
請求項5に記載の求解装置。
【請求項7】
前記更新部は、最初の前記第1処理、前記第2処理および前記係数処理に先だって、前記K個の従属変数の解の候補値のそれぞれ、前記J個の第1ラグランジュ係数のそれぞれ、前記K個の第2ラグランジュ係数のそれぞれ、および、前記ペナルティ係数に予め定められた初期値を代入する
請求項6に記載の求解装置。
【請求項8】
前記更新部は、前記第1処理において、前記第1関数を最小化する問題を0-1整数非凸二次計画問題の解を算出する第1ソルバーに与えて、前記第1ソルバーから前記I個の決定変数の解の候補値を取得する
請求項1から7の何れか1項に記載の求解装置。
【請求項9】
前記第1ソルバーが、複数組の前記I個の決定変数の解の候補値を出力する場合、前記更新部は、前記複数組の前記I個の決定変数の解の候補値に基づき、一組の前記I個の決定変数の解の候補値を更新する
請求項8に記載の求解装置。
【請求項10】
前記拡張ラグランジュ関数は、式(1)により表され、
前記K個の不等式は、式(2)により表され、
【数1】
【数2】
前記式(1)および前記式(2)において、
iは、1以上、I以下の整数であり、前記I個の決定変数のそれぞれに割り当てられるインデックスを表し、
i´は、1以上、I以下の整数であり、iとは異なり、前記I個の決定変数のそれぞれに割り当てられるインデックスを表し、
x
iは、前記I個の決定変数のうちのi番目の決定変数であり、
x
i´は、前記I個の決定変数のうちのi´番目の決定変数であり、
P
i,i´は、前記目的関数における2次項における前記i番目の決定変数と前記i´番目の決定変数との乗算値に乗算される係数であり、
Q
iは、前記目的関数の1次項における前記i番目の前記決定変数に乗算される係数であり、
jは、1以上、J以下の整数であり、前記J個の連立一次方程式のそれぞれに割り当てられるインデックスを表し、
A
j,iは、前記J個の連立一次方程式のうちのj番目の連立一次方程式における前記i番目の決定変数に乗算される係数であり、
B
jは、前記j番目の連立一次方程式における定数項であり、
kは、1以上、K以下の整数であり、前記K個の連立一次不等式のそれぞれに割り当てられるインデックスを表し、
C
k,iは、前記K個の連立一次不等式のうちのk番目の連立一次不等式における前記i番目の決定変数に乗算される係数であり、
D
kは、前記k番目の連立一次不等式における定数項であり、
z
kは、k番目の代替方程式における従属変数であり、
λ
jは、前記J個の第1ラグランジュ係数のうちのj番目の第1ラグランジュ係数であり、
λ´
kは、前記K個の第2ラグランジュ係数のうちのk番目の第2ラグランジュ係数であり、
μは、前記ペナルティ係数である
請求項4から7の何れか1項に記載の求解装置。
【請求項11】
それぞれが0または1となるI個(Iは2以上の整数)の第1決定変数を含む非凸二次関数と、それぞれが実数となるM個(Mは2以上の整数)の第2決定変数を含む連続凸関数とを加算した関数である目的関数を最小化する問題の解を、それぞれが前記I個の第1決定変数および前記M個の第2決定変数のうちの少なくとも1つを変数として含むJ個(Jは0以上の整数)の連立一次方程式を満たし、且つ、それぞれが前記I個の第1決定変数および前記M個の第2決定変数のうちの少なくとも1つを変数として含むK個(Kは1以上の整数)の連立一次不等式を満たす条件の下で、算出する求解装置であって、
前記目的関数、前記J個の連立一次方程式および前記K個の連立一次不等式を取得する取得部と、
拡張ラグランジュ関数に基づき生成される前記I個の第1決定変数を含む第1関数を最小化する前記I個の第1決定変数の解の候補値を取得する第1処理、前記拡張ラグランジュ関数に基づき生成される前記M個の第2決定変数およびK個の従属変数を含む第2関数を最小化する前記M個の第2決定変数および前記K個の従属変数の解の候補値を取得する第2処理、および、前記拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す更新部と、
前記第1処理、前記第2処理および前記係数処理を繰り返すことによって予め設定された終了条件に達した場合、前記I個の第1決定変数の解の候補値を、前記問題の解として出力する出力部と、
を備え、
前記拡張ラグランジュ関数は、前記目的関数を含む目的関数項と、前記J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、前記K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む
求解装置。
【請求項12】
前記J個の第1ラグランジュ項のそれぞれは、前記J個の連立一次方程式のうちの対応する連立一次方程式と前記I個の第1決定変数および前記M個の第2決定変数の解の候補値との誤差を表す関数に、J個の第1ラグランジュ係数のうちの対応する第1ラグランジュ係数を乗じた関数であり、
前記K個の第2ラグランジュ項のそれぞれは、前記K個の連立一次不等式のうちの対応する連立一次不等式の不等号を等号に置き換え且つ定数項を前記K個の従属変数のうちの対応する従属変数に置き換えた代替方程式と、前記I個の第1決定変数および前記M個の第2決定変数の解の候補値との誤差を表す関数に、K個の第2ラグランジュ係数のうちの対応する第2ラグランジュ係数を乗じた関数であり、
前記ペナルティ項は、それぞれが対応する連立一次方程式と前記I個の第1決定変数および前記M個の第2決定変数の解の候補値との距離を表すJ個の第1距離関数と、それぞれが対応する代替方程式と前記I個の第1決定変数および前記M個の第2決定変数の解の候補値との距離を表すK個の第2距離関数との合計に、ペナルティ係数を乗じた関数である
請求項11に記載の求解装置。
【請求項13】
前記更新部は、前記第2処理において、K個の不等式を満たす条件の下で、前記第2関数における前記M個の第2決定変数および前記K個の従属変数の解の候補値を取得し、
前記K個の不等式のそれぞれは、前記K個の従属変数のうちの対応する従属変数が、前記K個の連立一次不等式のうちの対応する連立一次不等式における定数項以下であることを表す
請求項12に記載の求解装置。
【請求項14】
前記第1関数は、前記拡張ラグランジュ関数に、直前の前記第2処理において算出された前記K個の従属変数および前記M個の第2決定変数の解の候補値を代入した関数であり、
前記第2関数は、前記拡張ラグランジュ関数に、直前の前記第1処理において算出された前記I個の第1決定変数の解の候補値を代入した関数である
請求項13に記載の求解装置。
【請求項15】
前記更新部は、前記第2処理において、凸二次計画問題の解を算出する第2ソルバーに前記第2関数および前記K個の不等式を与えて、前記第2ソルバーから前記第2関数における前記M個の第2決定変数および前記K個の従属変数の解の候補値を取得する
請求項14に記載の求解装置。
【請求項16】
前記拡張ラグランジュ関数は、式(3)により表され、
前記K個の不等式は、式(4)により表され、
【数3】
【数4】
前記式(3)および前記式(4)において、
iは、1以上、I以下の整数であり、前記I個の第1決定変数のそれぞれに割り当てられるインデックスを表し、
i´は、1以上、I以下の整数であり、iとは異なり、前記I個の第1決定変数のそれぞれに割り当てられるインデックスを表し、
x
iは、前記I個の第1決定変数のうちのi番目の第1決定変数であり、
x
i´は、前記I個の第1決定変数のうちのi´番目の第1決定変数であり、
P
i,i´は、前記目的関数の2次項における前記i番目の第1決定変数と前記i´番目の第1決定変数との乗算値に乗算される係数であり、
Q
iは、前記目的関数の1次項における前記i番目の第1決定変数に乗算される係数であり、
R(y)は、前記連続凸関数であり、
y
mは、前記M個の第2決定変数のうちのm番目の第2決定変数であり、
jは、1以上、J以下の整数であり、前記J個の連立一次方程式のそれぞれに割り当てられるインデックスを表し、
A
j,iは、前記J個の連立一次方程式のうちのj番目の連立一次方程式におけるi番目の前記第1決定変数に乗算される係数であり、
E
j,mは、前記j番目の連立一次方程式における前記m番目の第2決定変数に乗算される係数であり、
B
jは、前記j番目の連立一次方程式における定数項であり、
kは、1以上、K以下の整数であり、前記K個の連立一次不等式のそれぞれに割り当てられるインデックスを表し、
C
k,iは、前記K個の連立一次不等式のうちのk番目の連立一次不等式におけるi番目の前記第1決定変数に乗算される係数であり、
F
k,iは、前記k番目の連立一次不等式における前記m番目の第2決定変数に乗算される係数であり、
D
kは、前記k番目の連立一次不等式における定数項であり、
z
kは、k番目の代替方程式における従属変数であり、
λ
jは、前記J個の第1ラグランジュ係数のうちのj番目の第1ラグランジュ係数であり、
λ´
kは、前記K個の第2ラグランジュ係数のうちのk番目の第2ラグランジュ係数であり、
μは、前記ペナルティ係数である
請求項14または15に記載の求解装置。
【請求項17】
前記連続凸関数は、連続凸二次関数である
請求項11から16の何れか1項に記載の求解装置。
【請求項18】
情報処理装置を求解装置として機能させるためのプログラムであって、
前記求解装置は、それぞれが0または1となるI個(Iは2以上の整数)の決定変数を含む非凸二次関数である目的関数を最小化する問題の解を、それぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むJ個(Jは0以上の整数)の連立一次方程式を満たし且つそれぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むK個(Kは1以上の整数)の連立一次不等式を満たす条件の下で、算出し、
前記情報処理装置を、
前記目的関数、前記J個の連立一次方程式および前記K個の連立一次不等式を取得する取得部と、
拡張ラグランジュ関数に基づき生成される前記I個の決定変数を含む第1関数を最小化する前記I個の決定変数の解の候補値を取得する第1処理、前記拡張ラグランジュ関数に基づき生成されるK個の従属変数を含む第2関数を最小化する前記K個の従属変数の解の候補値を取得する第2処理、および、前記拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す更新部と、
前記第1処理、前記第2処理および前記係数処理を繰り返すことによって予め設定された終了条件に達した場合、前記I個の決定変数の解の候補値を、前記問題の解として出力する出力部と、
して機能させ、
前記拡張ラグランジュ関数は、前記目的関数を含む目的関数項と、前記J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、前記K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む
プログラム。
【請求項19】
情報処理装置を求解装置として機能させるためのプログラムであって、
前記求解装置は、それぞれが0または1となるI個(Iは2以上の整数)の第1決定変数を含む非凸二次関数と、それぞれが実数となるM個(Mは2以上の整数)の第2決定変数を含む連続凸関数とを加算した関数である目的関数を最小化する問題の解を、それぞれが前記I個の第1決定変数および前記M個の第2決定変数のうちの少なくとも1つを変数として含むJ個(Jは0以上の整数)の連立一次方程式を満たし、且つ、それぞれが前記I個の第1決定変数および前記M個の第2決定変数のうちの少なくとも1つを変数として含むK個(Kは1以上の整数)の連立一次不等式を満たす条件の下で、算出し、
前記情報処理装置を、
前記目的関数、前記J個の連立一次方程式および前記K個の連立一次不等式を取得する取得部と、
拡張ラグランジュ関数に基づき生成される前記I個の第1決定変数を含む第1関数を最小化する前記I個の第1決定変数の解の候補値を取得する第1処理、前記拡張ラグランジュ関数に基づき生成される前記M個の第2決定変数およびK個の従属変数を含む第2関数を最小化する前記M個の第2決定変数および前記K個の従属変数の解の候補値を取得する第2処理、および、前記拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す更新部と、
前記第1処理、前記第2処理および前記係数処理を繰り返すことによって予め設定された終了条件に達した場合、前記I個の第1決定変数の解の候補値を、前記問題の解として出力する出力部と、
して機能させ、
前記拡張ラグランジュ関数は、前記目的関数を含む目的関数項と、前記J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、前記K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、求解装置およびプログラムに関する。
【背景技術】
【0002】
最適化問題の一つとして、線形制約・0-1整数非凸二次計画問題が知られている。線形制約・0-1整数非凸二次計画問題は、それぞれが0または1となる複数の決定変数を含む非凸二次関数を最小化する解を、複数の連立一次方程式および複数の連立一次不等式の制約条件の下で、算出する問題である。線形制約・0-1整数非凸二次計画問題は、スケジューリングの最適化等に応用される。
【0003】
線形制約・0-1整数非凸二次計画問題の求解方法として、例えば、分枝限定法または近似解法が知られている。分枝限定法は、決定変数の1つ1つに対して場合分けを行って、目的関数値の上界および下界を算出する。そして、分枝限定法は、大域的最適解を取りえる範囲を絞り込んでいきながら、大域的最適解を算出する。
【0004】
近似解法は、例えば、等式制約および不等式制約のそれぞれを、制約に違反する量の二乗に比例する障壁関数により表す。そして、近似解法は、有効と推定される制約のみを利用することにより、無制約・0-1整数非凸二次計画問題に変換し、この問題をイジングマシンで解く。
【0005】
しかし、分枝限定法は、決定変数の1つ1つに対して場合分けを行うため、決定変数の数に対して計算量が指数的に増大してしまっていた。また、近似解法は、制約の周辺での目的関数の傾きが大きい場合、障壁関数の比例係数であるペナルティパラメータを、目的関数の傾きより大きくしなければならない。
【0006】
このような場合、近似解法は、イジングマシンへの入力行列の係数の大きさが、目的関数に由来する係数よりもペナルティパラメータに由来する係数の方が大きくなってしまう。このため、近似解法は、実行可能解を算出するためにイジングマシンの計算能力の多くを費やすこととなり、効率が悪かった。また、近似解法は、悪い目的関数値をもつ解に到達する場合もあるので、良い目的関数値をもつ解に到達するために、ペナルティパラメータに対してハイパーパラメータチューニングを行わなければならなく、処理が複雑となってしまっていた。
【先行技術文献】
【特許文献】
【0007】
【非特許文献】
【0008】
【非特許文献1】Lawler, E. L., & Wood, D. E., “Branch-and-bound methods”, A survey. Operations research, 14(4),1996, 699-719.
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明が解決しようとする課題は、良い解を効率良く算出することができる求解装置およびプログラムを提供することにある。
【課題を解決するための手段】
【0010】
実施形態に係る求解装置は、それぞれが0または1となるI個(Iは2以上の整数)の決定変数を含む非凸二次関数である目的関数を最小化する問題の解を、それぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むJ個(Jは0以上の整数)の連立一次方程式を満たし且つそれぞれが前記I個の決定変数のうちの少なくとも1つを変数として含むK個(Kは1以上の整数)の連立一次不等式を満たす条件の下で、算出する。前記求解装置は、取得部と、更新部と、出力部とを備える。前記取得部は、前記目的関数、前記J個の連立一次方程式および前記K個の連立一次不等式を取得する。前記更新部は、拡張ラグランジュ関数に基づき生成される前記I個の決定変数を含む第1関数を最小化する前記I個の決定変数の解の候補値を取得する第1処理、前記拡張ラグランジュ関数に基づき生成されるK個の従属変数を含む第2関数を最小化する前記K個の従属変数の解の候補値を取得する第2処理、および、前記拡張ラグランジュ関数に含まれる係数を更新する係数処理、を予め定められた順序で繰り返す。前記出力部は、前記第1処理、前記第2処理および前記係数処理を繰り返すことによって予め設定された終了条件に達した場合、前記I個の決定変数の解の候補値を、前記問題の解として出力する。前記拡張ラグランジュ関数は、前記目的関数を含む目的関数項と、前記J個の連立一次方程式に対応するJ個の第1ラグランジュ項と、前記K個の連立一次不等式に対応するK個の第2ラグランジュ項と、ペナルティ項と、を含む。
【図面の簡単な説明】
【0011】
【
図1】第1実施形態に係る求解装置の機能構成を示す図である。
【
図2】第1実施形態に係る求解装置の処理の流れを示すフローチャートである。
【
図3】第2実施形態に係る求解装置の機能構成を示す図である。
【
図4】第2実施形態に係る求解装置の処理の流れを示すフローチャートである。
【
図5】求解装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら実施形態に係る求解装置10について説明する。
【0013】
(第1実施形態)
図1は、第1実施形態に係る求解装置10の機能構成を示す図である。
【0014】
第1実施形態に係る求解装置10は、線形制約条件を含む0-1整数非凸二次計画問題の解を算出する。求解装置10は、プロセッサ、コンピュータまたはサーバ等がプログラムを実行することにより実現される。
【0015】
より具体的には、求解装置10は、整数非凸二次関数である目的関数を最小化する問題の解を、線形制約を満たす条件下で算出する。目的関数は、それぞれが0または1となるI個(Iは2以上の整数)の決定変数を含む。
【0016】
線形制約は、線形等式制約と線形不等式制約とを含む。線形等式制約は、J個(Jは0以上の整数)の連立一次方程式により表される。J個の連立一次方程式のそれぞれは、I個の決定変数のうちの少なくとも1つを変数として含む。なお、線形制約は、線形等式制約を含まなくてもよい。この場合、求解装置10は、J=0として、J個の連立一次方程式を取り扱う。
【0017】
線形不等式制約は、K個(Kは1以上の整数)の連立一次不等式により表される。K個の連立一次不等式のそれぞれは、I個の決定変数のうちの少なくとも1つを変数として含む。
【0018】
第1実施形態に係る求解装置10は、取得部22と、関数生成部24と、第1ソルバー26と、更新部30と、更新値記憶部32と、出力部34とを備える。
【0019】
取得部22は、ユーザが操作手段を操作することにより入力された、目的関数、線形等式制約および線形不等式制約を取得する。取得部22は、これらの情報を、ネットワーク等を介して他の装置から受信してもよい。
【0020】
関数生成部24は、取得部22により取得された情報に基づき、拡張ラグランジュ関数および従属変数制約を生成する。
【0021】
拡張ラグランジュ関数は、問題の解を効率良く算出するために生成される関数である。拡張ラグランジュ関数は、I個の決定変数、および、K個の従属変数を含む。K個の従属変数のそれぞれは、問題の解を算出するために設定される。K個の従属変数のそれぞれは、実数の値となる。従属変数制約は、K個の従属変数のそれぞれの値を制約するK個の不等式により表される。なお、拡張ラグランジュ関数および従属変数制約については、さらなる詳細を、
図2を参照して後述する。
【0022】
第1ソルバー26は、制約条件を含まない0-1整数非凸二次計画問題の解を算出する。すなわち、第1ソルバー26は、0-1整数非凸二次関数を最小化する問題の解を算出する。第1ソルバー26は、イジング問題の解を算出するソルバーであってもよい。第1ソルバー26は、例えば、求解装置10を実現するプロセッサまたはコンピュータが0-1整数非凸二次計画問題の求解プログラムを実行することにより実現される。また、第1ソルバー26は、サーバ等により提供されてもよい。この場合、第1ソルバー26は、求解装置10の外部に実現されてもよい。第1ソルバー26が求解装置10の外部に実現される場合、求解装置10は、ネットワークを介して第1ソルバー26に対して目的関数を与えて、解の候補値を第1ソルバー26からネットワークを介して取得する。
【0023】
更新部30は、第1処理、第2処理および係数処理を、予め設定された終了条件に達するまで繰り返す。更新部30は、第1処理、第2処理、係数処理の順で繰り返す。
【0024】
第1処理は、第1関数を最小化するI個の決定変数の解の候補値を取得する処理である。更新部30は、第1処理を実行する毎にI個の決定変数の解の候補値を更新する。
【0025】
第1関数は、拡張ラグランジュ関数に基づき生成されるI個の決定変数を含む関数である。第1関数は、拡張ラグランジュ関数に、K個の従属変数の解の候補値を代入した関数である。K個の従属変数の解の候補値は、直前の第2処理に基づく値である。また、最初の第2処理が実行される前に、最初の第1処理が実行される場合には、K個の従属変数の解の候補値は、予め設定された初期値となる。
【0026】
第1関数は、整数非凸二次関数である。従って、更新部30は、第1処理において、第1関数を最小化する問題を第1ソルバー26に与えて、第1ソルバー26から問題の解として、I個の決定変数の解の候補値を取得する。なお、第1関数については、さらなる詳細を、
図2を参照して後述する。
【0027】
第2処理は、K個の不等式により表される従属変数制約を満たす条件の下で、第2関数を最小化するK個の従属変数の解の候補値を取得する処理である。更新部30は、第2処理を実行する毎にK個の従属変数の解の候補値を更新する。
【0028】
第2関数は、拡張ラグランジュ関数に基づき生成されるK個の従属変数を含む関数である。第2関数は、拡張ラグランジュ関数に、I個の決定変数の解の候補値を代入した関数である。I個の決定変数の解の候補値は、直前の第1処理に基づき更新された値である。また、最初の第1処理が実行される前に最初の第2処理が実行される場合には、K個の決定変数の解の候補値は、予め設定された初期値となる。
【0029】
K個の不等式は、K個の従属変数に対応する。K個の不等式のそれぞれは、対応する従属変数がとり得る最小値を表す。
【0030】
第1実施形態において第2関数は、K個の従属変数のそれぞれが互いに独立している。第2関数のそれぞれの従属変数の項は、凸二次関数となる。従って、更新部30は、第2処理において、ソルバー等を用いずに、K個の不等式により表される従属変数制約を満たす条件の下で第2関数を最小化するK個の従属変数の解の候補値を演算処理により算出する。なお、第2関数については、さらなる詳細を、
図2を参照して後述する。
【0031】
係数処理は、拡張ラグランジュ関数に含まれる複数の係数のそれぞれを更新する処理である。更新部30は、直前の第1処理に基づき更新されたI個の決定変数の解の候補値、および、直前の第2処理に基づき更新されたK個の従属変数の解の候補値に基づき、拡張ラグランジュ関数に含まれる複数の係数のそれぞれを更新する。なお、拡張ラグランジュ関数に含まれる複数の係数のそれぞれは、最初の第1処理および最初の第2処理が実行される前においては、予め設定された初期値となる。なお、係数を更新する演算処理については、さらなる詳細を、
図2を参照して後述する。
【0032】
更新値記憶部32は、I個の決定変数の解の候補値、K個の従属変数の解の候補値、および、拡張ラグランジュ関数に含まれる複数の係数を記憶する。更新部30は、第1処理、第2処理および係数処理を実行する毎に、更新値記憶部32に記憶された対応する値を更新する。
【0033】
出力部34は、更新部30が第1処理、第2処理および係数処理を繰り返すことによって、予め設定された終了条件に達した場合、I個の決定変数の解の候補値を、求解の対象となる線形制約条件を含む0-1整数非凸二次計画問題の解として出力する。
【0034】
例えば、出力部34は、I個の決定変数の解の候補値が線形等式制約および線形不等式制約を満たしており、且つ、I個の決定変数の解の候補値を代入した目的関数の値が予め定められた閾値以下である場合、終了条件に達したと判断してもよい。これに加えてまたはこれに代えて、出力部34は、I個の決定変数の解の候補値が線形等式制約および線形不等式制約を満たしており、且つ、更新部30による繰り返し回数が予め設定された回数を超えた場合に、終了条件に達したと判断してもよい。なお、出力部34は、更新部30による繰り返し回数が予め設定された回数を超えても、I個の決定変数の解の候補値が線形等式制約および線形不等式制約を満たさない場合、解が算出できなかったことを示す情報を出力してもよい。
【0035】
出力部34は、解を表示手段に表示することによりユーザに提示してもよい。また、出力部34は、解をネットワークを介して外部の装置に送信してもよい。
【0036】
図2は、第1実施形態に係る求解装置10の処理の流れを示すフローチャートである。求解装置10は、
図2に示す流れで処理を実行する。
【0037】
まず、S11において、取得部22は、それぞれが0または1となるI個の決定変数を含む整数非凸二次関数である目的関数を取得する。
【0038】
I個の決定変数は、式(1)のように表される。
【数1】
【0039】
I個の決定変数それぞれは、0または1となり、式(2)のように制約される。
【数2】
【0040】
【0041】
iは、1以上、I以下の整数であり、I個の決定変数のそれぞれに割り当てられるインデックスを表す。i´は、1以上、I以下の整数であり、iとは異なり、I個の決定変数のそれぞれに割り当てられるインデックスを表す。すなわち、I個の決定変数のうちの、x1は、1番目の決定変数であり、x2は、2番目の決定変数であり、xIは、I番目の決定変数であり、xiは、i番目の決定変数であり、xi´は、i´番目の決定変数である。
【0042】
Pi,i´は、目的関数の2次項におけるi番目の決定変数とi´番目の決定変数との乗算値に乗算される係数である。Pi,i´は、実数である。Qiは、目的関数の1次項におけるi番目の決定変数に乗算される係数である。Qiは、実数である。
【0043】
続いて、S12において、取得部22は、線形等式制約を取得する。具体的には、線形等式制約は、式(4)のJ個の連立一次方程式により表される。
【数4】
【0044】
jは、1以上、J以下の整数であり、J個の連立一次方程式のそれぞれに割り当てられるインデックスを表す。Aj,iは、j番目の連立一次方程式におけるi番目の決定変数に乗算される係数である。Aj,iは、実数である。Bjは、j番目の連立一次方程式における定数項である。Bjは、実数である。
【0045】
なお、取得部22は、線形等式制約を取得しなくてもよい。線形等式制約を取得しない場合、求解装置10は、J=0とし、jに関する演算を実行しない。
【0046】
続いて、S13において、取得部22は、線形不等式制約を取得する。具体的には、線形不等式制約は、式(5)のK個の連立一次不等式により表される。
【数5】
【0047】
kは、1以上、K以下の整数であり、K個の連立一次不等式のそれぞれに割り当てられるインデックスを表す。Ck,iは、k番目の連立一次不等式におけるi番目の決定変数に乗算される係数である。Ck,iは、実数である。Dkは、k番目の連立一次不等式における定数項である。Dkは、実数である。
【0048】
続いて、S14において、関数生成部24は、目的関数、J個の連立一次方程式およびK個の連立一次不等式に基づき、拡張ラグランジュ関数を生成する。拡張ラグランジュ関数は、式(6)により表される。
【数6】
【0049】
拡張ラグランジュ関数は、目的関数項と、J個の第1ラグランジュ項と、K個の第2ラグランジュ項と、ペナルティ項と、を含む。
【0050】
目的関数項は、目的関数を含む。目的関数項は、式(7)により表される。
【数7】
【0051】
J個の第1ラグランジュ項は、J個の連立一次方程式に対応する。J個の第1ラグランジュ項を総加算した式は、式(8)により表される。
【数8】
【0052】
関数生成部24は、J個の第1ラグランジュ係数を設定する。λjは、J個の第1ラグランジュ係数のうちのj番目の第1ラグランジュ係数である。j番目の第1ラグランジュ係数は、J個の第1ラグランジュ項のうちの、j番目の第1ラグランジュ項に含まれる。J個の第1ラグランジュ係数のそれぞれは、実数である。
【0053】
J個の第1ラグランジュ項のそれぞれは、J個の連立一次方程式のうちの対応する連立一次方程式とI個の決定変数の解の候補値との誤差を表す関数に、J個の第1ラグランジュ係数のうちの対応する第1ラグランジュ係数を乗じた関数である。すなわち、J個の第1ラグランジュ項のそれぞれは、I個の決定変数の解の候補値が、対応する線形等式制約を満たすと0となり、対応する線形等式制約を満たさないとマイナス方向またはプラス方向にずれる関数である。
【0054】
なお、式(8)は、先頭に-1が乗じられている。しかし、式(8)は、-1が乗じられていなくてもよい。
【0055】
K個の第2ラグランジュ項は、K個の連立一次不等式に対応する。K個の第2ラグランジュ項を総加算した式は、式(9)により表される。
【数9】
【0056】
関数生成部24は、K個の第2ラグランジュ係数を設定する。λ´Kは、K個の第2ラグランジュ係数のうちのk番目の第2ラグランジュ係数である。k番目の第2ラグランジュ係数は、K個の第2ラグランジュ項のうちの、k番目の第2ラグランジュ項に含まれる。K個の第2ラグランジュ係数のそれぞれは、実数である。
【0057】
関数生成部24は、K個の従属変数を設定する。zkは、K個の従属変数のうちのk番目の従属変数である。従属変数は、実数の値をとる。
【0058】
また、関数生成部24は、K個の代替方程式を設定する。k番目の従属変数は、K個の代替方程式のうちのk番目の代替方程式に含まれる。K個の代替方程式は、K個の連立一次不等式に対応する。K個の代替方程式のそれぞれは、K個の連立一次不等式のうちの対応する連立一次不等式の不等号を等号に置き換え、且つ、定数項をK個の従属変数のうちの対応する従属変数に置き換えた方程式である。式(9)の例の場合、k番目の代替方程式は、式(5)の不等号を等号に置き換え、且つ、Dkをzkに置き換えた方程式となる。
【0059】
K個の第2ラグランジュ項のそれぞれは、K個の代替方程式のうちの対応する代替方程式と、I個の決定変数の解の候補値との誤差を表す関数に、K個の第2ラグランジュ係数のうちの対応する第2ラグランジュ係数を乗じた関数である。すなわち、K個の第2ラグランジュ項のそれぞれは、I個の決定変数の解の候補値が、対応する代替方程式を満たすと0となり、対応する代替方程式を満たさないとマイナス方向またはプラス方向にずれる関数である。
【0060】
なお、式(9)は、先頭に-1が乗じられている。しかし、式(9)は、-1が乗じられていなくてもよい。
【0061】
ペナルティ項は、式(10)により表される。
【数10】
【0062】
μは、ペナルティ係数である。ペナルティ係数は、0より大きい実数である。ペナルティ項は、J個の第1距離関数と、K個の第2距離関数との合計に、ペナルティ係数を乗じた関数である。
【0063】
J個の第1距離関数は、J個の連立一次方程式に対応する。J個の第1距離関数のそれぞれは、J個の連立一次方程式のうちの対応する連立一次方程式とI個の決定変数の解の候補値との間の距離(第1距離)を表す関数である。例えば、式(10)の例の場合、J個の第1距離関数のそれぞれは、対応する連立一次方程式とI個の決定変数の解の候補値との誤差を二乗した関数である。
【0064】
K個の第2距離関数は、K個の代替方程式に対応する。K個の第2距離関数のそれぞれは、K個の代替方程式のうちの対応する代替方程式とI個の決定変数の解の候補値との間の距離(第2距離)を表す関数である。例えば、式(10)の例の場合、K個の第2距離関数のそれぞれは、対応する代替方程式とI個の決定変数の解の候補値との誤差を二乗した関数である。すなわち、ペナルティ項は、第1距離と第2距離との合計がプラスになるほど、プラス方向にずれる関数である。
【0065】
なお、式(10)は、先頭に1/2が乗じられている。しかし、式(10)は、0より大きい実数であれば、1/2以外の値が乗じられてもよい。
【0066】
続いて、S15において、関数生成部24は、従属変数制約を生成する。従属変数制約は、K個の従属変数の制約条件を表す。
【0067】
従属変数制約は、K個の不等式により表される。K個の不等式は、K個の従属変数に対応する。K個の不等式のそれぞれは、対応する従属変数が、定数以下であることを表す。具体的には、従属変数制約は、式(11)により表される。
【数11】
【0068】
すなわち、K個の不等式のそれぞれは、K個の従属変数のうちの対応する従属変数が、K個の連立一次不等式のうちの対応する連立一次不等式における定数項以下であることを表す。式(11)の例の場合、K個の不等式のそれぞれは、式(5)の決定変数の1次項(ΣCk,i・xi)をzkに置き換えた不等式となる。
【0069】
続いて、S16において、更新部30は、nを0に初期化する。更新部30は、S18からS26までの処理を繰り返す。nは、S18からS26までの処理の実行回数を表す。nは、初期値が0であり、1ずつ増加する。
【0070】
続いて、S17において、更新部30は、最初の第1処理、最初の第2処理および最初の係数処理に先だって、I個の決定変数の解の候補値のそれぞれ、K個の従属変数の解の候補値のそれぞれ、J個の第1ラグランジュ係数のそれぞれ、K個の第2ラグランジュ係数のそれぞれ、および、ペナルティ係数に対して、予め定められた初期値を代入する。
【0071】
なお、I個の決定変数の解の候補値のそれぞれ、K個の従属変数の解の候補値のそれぞれ、J個の第1ラグランジュ係数のそれぞれ、K個の第2ラグランジュ係数のそれぞれ、および、ペナルティ係数は、S18からS26までのループ処理毎に更新がされる。
【0072】
本例においては、xi[n]は、n回目のループ処理の後のI個の決定変数の解の候補値を表す。zk[n]は、n回目のループ処理の後のK個の従属変数の解の候補値を表す。λj[n]は、n回目のループ処理の後の第1ラグランジュ係数を表す。λ´k[n]は、n回目のループ処理の後の第2ラグランジュ係数を表す。μ[n]は、n回目のループ処理の後のペナルティ係数を表す。なお、xi[0]は、xi[n]の初期値を表す。zk[0]は、zk[n]の初期値を表す。λj[0]は、λj[n]の初期値を表す。λ´k[0]は、λ´k[n]の初期値を表す。μ[0]は、μ[n]の初期値を表す。
【0073】
例えば、更新部30は、これらの各値を、式(12)のように初期化する。
【数12】
【0074】
μ0は、0より大きい予め定められた実数である。式(12)のmin(A,B)は、AまたはBのうち何れか小さい方の値を選択する関数を表す。
【0075】
S18において、更新部30は、拡張ラグランジュ関数に基づき、I個の決定変数を含む第1関数を生成する。n+1回目のループ処理において生成される第1関数は、式(13)により表される。
【数13】
【0076】
すなわち、n+1回目のループ処理において生成される第1関数は、直前のループ処理(n回目のループ処理)の後における、K個の従属変数の解の候補値であるzk[n]、J個の第1ラグランジュ係数であるλj[n]、K個の第2ラグランジュ係数であるλ´k[n]、および、ペナルティ係数であるμ[n]を式(6)の拡張ラグランジュ関数に代入した関数である。第1関数は、I個の決定変数を含む整数非凸二次関数となる。なお、1回目のループ処理においては、直前のループ処理の後のzk[n]、λj[n]、λ´k[n]、および、μ[n]は、S17で代入した初期値となる。
【0077】
続いて、S19において、更新部30は、第1処理を実行する。すなわち、更新部30は、第1関数を最小化するI個の決定変数の解の候補値を取得する。例えば、更新部30は、式(14)に示す関数を実行する。
【数14】
【0078】
minは、以下に続く関数を最小化する演算子である。argxは、xの値を取得する関数である。更新部30は、式(14)の実行に応じて、第1関数を最小化する問題を第1ソルバー26に与えて、第1ソルバー26から問題の解として、I個の決定変数の解の候補値を取得する。
【0079】
続いて、S20において、更新部30は、終了条件に達したか否かを判断する。更新部30は、終了条件に達した場合、処理をS27に進める。更新部30は、終了条件に達していない場合、処理をS21に進める。
【0080】
続いて、S21において、更新部30は、更新値記憶部32に記憶されているI個の決定変数の解の候補値のそれぞれを更新する。なお、第1ソルバー26は、I個の決定変数の解の候補値を、複数組分の出力する場合がある。例えば、第1ソルバー26は、目的関数の値が最小値から所定番目までの所定組のI個の決定変数の解の候補値を出力する場合がある。
【0081】
このような場合、更新部30は、複数組のI個の決定変数の解の候補値に基づき、一組のI個の決定変数の解の候補値を算出してもよい。そして、更新部30は、n+1回目のループ処理におけるI個の決定変数の解の候補値のそれぞれ(xi[n+1])を、複数組のI個の決定変数の解の候補値に基づき算出した値に置き換えてもよい。例えば、更新部30は、決定変数毎に、所定個の候補値の平均値を算出する。そして、更新部30は、I個の決定変数の解の候補値のそれぞれを、対応する所定個の決定変数の解の候補値の平均値に置き換えてもよい。
【0082】
S22において、更新部30は、拡張ラグランジュ関数に基づき、K個の従属変数を含む第2関数を生成する。n+1回目のループ処理において生成される第2関数は、式(15)により表される。
【数15】
【0083】
すなわち、n+1回目のループ処理において生成される第2関数は、直前のS21で更新されたI個の決定変数の解の候補値であるxi[n+1]、並びに、直前のループ処理(n回目のループ処理)の後のJ個の第1ラグランジュ係数であるλj[n]、K個の第2ラグランジュ係数であるλ´k[n]およびペナルティ係数であるμ[n]を式(6)の拡張ラグランジュ関数に代入した関数である。第2関数は、K個の従属変数を含む凸二次関数となる。なお、1回目のループ処理においては、直前のループ処理において更新された、λj[n]、λ´k[n]、および、μ[n]は、S17で代入した初期値となる。
【0084】
続いて、S23において、更新部30は、第2処理を実行する。すなわち、更新部30は、K個の不等式により表される従属変数制約を満たす条件の下で、第2関数を最小化するK個の従属変数の解の候補値を取得する。例えば、更新部30は、式(16)に示す関数を実行する。
【数16】
【0085】
argzは、zの値を取得する関数である。
【0086】
ここで、第2関数は、凸二次関数である。そして、第2関数に含まれるK個の従属変数であるzkのそれぞれは、他の変数から独立している。このため、K個の従属変数のそれぞれは、第2関数を偏微分した関数が0となる解が最小値となる。
【0087】
従って、更新部30は、K個の従属変数のそれぞれについて、微分関数が0となる値が対応する不等式を満たしている場合、微分関数を0とする値を候補値として取得する。また、更新部30は、K個の従属変数のそれぞれについて、微分関数が0となる値が対応する不等式を満たしていない場合、対応する不等式を満たす最小値を候補値として取得する。
【0088】
例えば、更新部30は、式(17)に表される関数により、第2関数に含まれるK個の従属変数のそれぞれの最小値を取得することができる。
【数17】
【0089】
なお、min(A,B)は、AまたはBのうち何れか小さい方の値を選択する関数を表す。
【0090】
続いて、S24において、更新部30は、更新値記憶部32に記憶されているK個の従属変数の解の候補値のそれぞれを更新する。
【0091】
続いて、S25において、更新部30は、係数処理を実行する。すなわち、更新部30は、更新値記憶部32に記憶されているJ個の第1ラグランジュ係数、K個の第2ラグランジュ係数およびペナルティ係数を更新する。
【0092】
具体的には、更新部30は、直前のループ処理において更新されたJ個の第1ラグランジュ係数のそれぞれから、対応する連立一次方程式とI個の決定変数の解の候補値との誤差に応じた値を減じる。より具体的には、更新部30は、n+1回目のループ処理におけるJ個の第1ラグランジュ係数(λ
j[n+1])として、式(18)に示す値を代入する。
【数18】
【0093】
また、具体的には、更新部30は、直前のループ処理において更新されたK個の第2ラグランジュ係数のそれぞれから、対応する代替方程式とI個の決定変数の解の候補値との誤差に応じた値を減じる。より具体的には、更新部30は、n+1回目のループ処理におけるK個の第2ラグランジュ係数(λ´
k[n+1])として、式(19)に示す値を代入する。
【数19】
【0094】
また、具体的には、更新部30は、直前のループ処理において更新されたペナルティ係数を増加させる。より具体的には、更新部30は、n+1回目のループ処理におけるペナルティ(μ[n+1])として、式(20)に示す値を代入する。
【数20】
【0095】
なお、式(20)におけるαは、予め定められた値であって、正の実数である。
【0096】
続いて、S26において、更新部30は、nに1を加算する。そして、更新部30は、S26の処理を終えると、処理をS18に戻し、S18からS26までの処理を、S20の終了条件に達するまで繰り返す。更新部30は、S20で終了条件に達した場合(S20のYes)、処理をS27に進める。
【0097】
S27において、出力部34は、S19で取得したI個の決定変数の解の候補値が線形等式制約および線形不等式制約を満たしている場合、I個の決定変数の解の候補値を、求解の対象となる0-1整数非凸二次計画問題の解として出力する。また、出力部34は、S19で取得したI個の決定変数の解の候補値が線形等式制約および線形不等式制約を満たしていない場合、求解の対象となる0-1整数非凸二次計画問題の解が算出できなかったことを示す情報を出力する。
【0098】
以上のような第1実施形態に係る求解装置10は、制約条件を含まない0-1整数非凸二次計画問題の解を取得する第1処理と、凸二次関数の解を取得する第2処理とを交互に繰り返す。制約条件を含まない0-1整数非凸二次計画問題は、イジングマシン等のソルバーにより、良い解を簡易に取得可能である。また、凸二次関数は、一次方程式を解くことにより、非常に容易に最適解を取得可能である。従って、求解装置10は、第1処理と第2処理とを繰り返すことにより、線形制約条件を含む0-1整数非凸二次計画問題について、良い解を効率良く算出することができる。
【0099】
また、第1実施形態に係る求解装置10は、目的関数に、J個の第1ラグランジュ項と、K個の第2ラグランジュ項と、ペナルティ項とを加算した拡張ラグランジュ関数を用いて、I個の決定変数の解を算出する。J個の第1ラグランジュ項およびK個の第2ラグランジュ項は、制約の周辺での目的関数の傾きを打ち消すような働きをする。従って、第1実施形態に係る求解装置10は、ペナルティ項に含まれるペナルティ係数を、目的関数に含まれる係数であるPi,i´およびQiよりも大きくしなくても、制約条件を満たす解を取得することができる。従って、第1実施形態に係る求解装置10は、第1ソルバー26の計算能力を、実行可能解を取得するためでなく良い解を探すために多く費やさせることができる。よって、求解装置10は、良い解を取得する確率を上げることができる。
【0100】
また、第1実施形態に係る求解装置10は、第1ラグランジュ係数、第2ラグランジュ係数およびペナルティ係数を簡易な演算により更新する。これにより、求解装置10は、第1ラグランジュ係数、第2ラグランジュ係数およびペナルティ係数を容易に更新することができる。
【0101】
(第2実施形態)
第2実施形態に係る求解装置10は、線形制約条件を含む、0-1整数非凸二次計画および連続凸計画を組み合わせた問題の解を算出する。第2実施形態は、第1実施形態と同一または対応する係数、変数、機能ブロックおよびステップについて、同一の記号または符号を付けて適宜説明を省略し、相違点を中心に説明をする。
【0102】
図3は、第2実施形態に係る求解装置10の機能構成を示す図である。
【0103】
第2実施形態に係る求解装置10は、整数非凸二次関数と連続凸関数とを加算した目的関数を最小化する問題の解を、線形制約を満たす条件下で算出する。例えば、連続凸関数は、連続凸二次関数である。整数非凸二次関数は、それぞれが0または1となるI個の第1決定変数を含む。連続凸関数は、それぞれが実数となるM個(Mは2以上の整数)の第2決定変数を含む。
【0104】
線形制約は、線形等式制約と線形不等式制約とを含む。線形等式制約は、J個の連立一次方程式により表される。J個の連立一次方程式のそれぞれは、I個の第1決定変数およびM個の第2決定変数のうちの少なくとも1つを変数として含む。なお、線形制約は、線形等式制約を含まなくてもよい。この場合、求解装置10は、J=0として、J個の連立一次方程式を取り扱う。
【0105】
線形不等式制約は、K個の連立一次不等式により表される。K個の連立一次不等式のそれぞれは、I個の第1決定変数およびM個の第2決定変数のうちの少なくとも1つを変数として含む。
【0106】
第2実施形態に係る求解装置10は、第1実施形態の構成と比較して、第2ソルバー42をさらに備える。
【0107】
第2ソルバー42は、変数の範囲を制約する条件の下で、連続凸計画問題の解を算出する。例えば、目的関数に含まれる連続凸関数が連続凸二次関数である場合、第2ソルバー42は、変数の範囲を制約する条件の下で、連続凸二次計画問題の解を算出する。第2ソルバー42は、例えば、求解装置10を実現するプロセッサまたはコンピュータが連続凸計画問題の求解プログラムを実行することにより実現される。また、第2ソルバー42は、サーバ等により提供されてもよい。この場合、第2ソルバー42は、求解装置10の外部に実現されてもよい。第2ソルバー42は、一例として、OSQP(Operator Splitting Quadratic Program)と呼ばれるソルバープログラムをコンピュータが実行することにより実現することができる。第2ソルバー42が求解装置10の外部に実現される場合、求解装置10は、ネットワークを介して第2ソルバー42に対して連続凸関数(例えば連続凸二次関数)を与えて、解の候補値を第2ソルバー42からネットワークを介して取得する。
【0108】
取得部22は、目的関数、線形等式制約および線形不等式制約を取得する。関数生成部24は、取得部22により取得された情報に基づき、拡張ラグランジュ関数および従属変数制約を生成する。
【0109】
拡張ラグランジュ関数は、解を効率良く算出するために生成される関数である。拡張ラグランジュ関数は、I個の第1決定変数、M個の第2決定変数、および、K個の従属変数を含む。
【0110】
更新部30は、第1処理、第2処理および係数処理を、予め設定された終了条件に達するまで繰り返す。
【0111】
第1処理は、第1関数を最小化するI個の第1決定変数の解の候補値を取得する処理である。更新部30は、第1処理を実行する毎にI個の第1決定変数の解の候補値を更新する。
【0112】
第1関数は、拡張ラグランジュ関数に基づき生成されるI個の第1決定変数を含む関数である。第1関数は、拡張ラグランジュ関数に、M個の第2決定変数の候補値およびK個の従属変数の解の候補値を代入した関数である。M個の第2決定変数の解の候補値およびK個の従属変数の解の候補値は、直前の第2処理に基づく値である。また、最初の第2処理が実行される前に、最初の第1処理が実行される場合には、M個の第2決定変数の解の候補値およびK個の従属変数の解の候補値は、予め設定された初期値となる。
【0113】
第1関数は、整数非凸二次関数である。従って、更新部30は、第1処理において、第1関数を最小化する問題を第1ソルバー26に与えて、第1ソルバー26から問題の解として、I個の第1決定変数の解の候補値を取得する。
【0114】
第2処理は、K個の不等式により表される従属変数制約を満たす条件の下で、第2関数を最小化するM個の第2決定変数の解の候補値およびK個の従属変数の解の候補値を取得する処理である。更新部30は、第2処理を実行する毎にM個の第2決定変数の解の候補値およびK個の従属変数の解の候補値を更新する。
【0115】
第2関数は、拡張ラグランジュ関数に基づき生成されるM個の第2決定変数およびK個の従属変数を含む関数である。第2関数は、拡張ラグランジュ関数に、I個の第1決定変数の解の候補値を代入した関数である。I個の第1決定変数の解の候補値は、直前の第1処理に基づき更新された値である。また、最初の第1処理が実行される前に最初の第2処理が実行される場合には、K個の第1決定変数の解の候補値は、予め設定された初期値となる。
【0116】
K個の不等式は、K個の従属変数に対応する。K個の不等式のそれぞれは、対応する従属変数がとり得る最小値を表す。
【0117】
第2関数は、連続凸関数である。例えば、第2関数は、連続凸二次関数である。従って、更新部30は、第2処理において、K個の不等式の条件の下で第2関数を最小化する問題を第2ソルバー42に与えて、第2ソルバー42から問題の解として、M個の第2決定変数の解の候補値およびK個の従属変数の解の候補値を取得する。
【0118】
係数処理は、拡張ラグランジュ関数に含まれる複数の係数のそれぞれを更新する処理である。更新部30は、直前の第1処理に基づき更新されたI個の第1決定変数の解の候補値、直前の第2処理に基づき更新されたM個の第2決定変数の解の候補値、および、直前の第2処理に基づき更新されたK個の従属変数の解の候補値に基づき、拡張ラグランジュ関数に含まれる複数の係数のそれぞれを更新する。なお、拡張ラグランジュ関数の複数の係数のそれぞれは、最初の第1処理および最初の第2処理が実行される前において、予め設定された初期値となる。
【0119】
更新値記憶部32は、I個の第1決定変数の解の候補値、M個の第2決定変数の解の候補値、K個の従属変数の解の候補値、および、拡張ラグランジュ関数に含まれる複数の係数を記憶する。更新部30は、第1処理、第2処理および係数処理を実行する毎に、更新値記憶部32に記憶された対応する値を更新する。
【0120】
出力部34は、更新部30が第1処理、第2処理および係数処理を繰り返すことによって、予め設定された終了条件に達した場合、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値を、問題の解として出力する。
【0121】
図4は、第2実施形態に係る求解装置10の処理の流れを示すフローチャートである。求解装置10は、
図4に示す流れで処理を実行する。
【0122】
まず、S11において、取得部22は、それぞれが0または1となるI個の第1決定変数を含む整数非凸二次関数と、それぞれが実数となるM個の第2決定変数を含む連続凸関数とを加算した目的関数を取得する。連続凸関数は、例えば、連続凸二次関数である。
【0123】
I個の第1決定変数およびM個の第2決定変数は、式(21)のように表される。I個の第1決定変数は、x
iである。M個の第2決定変数は、y
iである。
【数21】
【0124】
なお、I個の第1決定変数は、0または1となるので、第1実施形態のI個の決定変数と同様である。従って、第2実施形態において、I個の第1決定変数は、xiと表している。
【0125】
M個の第2決定変数それぞれは、実数であり、式(22)のように制約される。
【数22】
【0126】
目的関数は、式(23)のように表される。
【数23】
【0127】
mは、1以上、M以下の整数であり、M個の第2決定変数のそれぞれに割り当てられるインデックスを表す。すなわち、M個の第2決定変数のうちの、y1は、1番目の第2決定変数であり、y2は、2番目の第2決定変数であり、yMは、M番目の第2決定変数であり、ymは、m番目の第2決定変数である。
【0128】
R(ym)は、連続凸関数を表す。R(ym)は、例えば、連続凸二次関数である。
【0129】
続いて、S12において、取得部22は、線形等式制約を取得する。具体的には、線形等式制約は、式(24)のJ個の連立一次方程式により表される。
【数24】
【0130】
Ej,mは、j番目の連立一次方程式におけるm番目の第2決定変数に乗算される係数である。Ej,mは、実数である。なお、取得部22は、線形等式制約を取得しなくてもよい。線形等式制約を取得しない場合、求解装置10は、J=0とし、jに関する演算を実行しない。
【0131】
続いて、S13において、取得部22は、線形不等式制約を取得する。具体的には、線形不等式制約は、式(25)のK個の連立一次不等式により表される。
【数25】
【0132】
Fk,mは、k番目の連立一次不等式におけるm番目の第2決定変数に乗算される係数である。Fk,mは、実数である。
【0133】
続いて、S14において、関数生成部24は、目的関数、J個の連立一次方程式およびK個の連立一次不等式に基づき、拡張ラグランジュ関数を生成する。拡張ラグランジュ関数は、式(26)により表される。
【数26】
【0134】
拡張ラグランジュ関数は、目的関数項と、J個の第1ラグランジュ項と、K個の第2ラグランジュ項と、ペナルティ項と、を含む。
【0135】
目的関数項は、目的関数を含む。目的関数項は、式(27)により表される。
【数27】
【0136】
J個の第1ラグランジュ項は、J個の連立一次方程式に対応する。J個の第1ラグランジュ項を総加算した式は、式(28)により表される。
【数28】
【0137】
J個の第1ラグランジュ項のそれぞれは、J個の連立一次方程式のうちの対応する連立一次方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差を表す関数に、J個の第1ラグランジュ係数のうちの対応する第1ラグランジュ係数を乗じた関数である。すなわち、J個の第1ラグランジュ項のそれぞれは、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値が、対応する線形等式制約を満たすと0となり、対応する線形等式制約を満たさないとマイナス方向またはプラス方向にずれる関数である。
【0138】
なお、式(28)は、先頭に-1が乗じられている。しかし、式(28)は、-1が乗じられていなくてもよい。
【0139】
K個の第2ラグランジュ項は、K個の連立一次不等式に対応する。K個の第2ラグランジュ項を総加算した式は、式(29)により表される。
【数29】
【0140】
関数生成部24は、K個の代替方程式を設定する。K個の代替方程式のそれぞれは、K個の連立一次不等式のうちの対応する連立一次不等式の不等号を等号に置き換え、且つ、定数項をK個の従属変数のうちの対応する従属変数に置き換えた方程式である。式(29)の例の場合、k番目の代替方程式は、式(25)の不等号を等号に置き換え、且つ、Dkをzkに置き換えた方程式となる。
【0141】
K個の第2ラグランジュ項のそれぞれは、K個の代替方程式のうちの対応する代替方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差を表す関数に、K個の第2ラグランジュ係数のうちの対応する第2ラグランジュ係数を乗じた関数である。すなわち、K個の第2ラグランジュ項のそれぞれは、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値が、対応する代替方程式を満たすと0となり、対応する代替方程式を満たさないとマイナス方向またはプラス方向にずれる関数である。
【0142】
なお、式(29)は、先頭に-1が乗じられている。しかし、式(29)は、-1が乗じられていなくてもよい。
【0143】
ペナルティ項は、式(30)により表される。
【数30】
【0144】
ペナルティ項は、J個の第1距離関数と、K個の第2距離関数との合計に、ペナルティ係数を乗じた関数である。J個の第1距離関数のそれぞれは、J個の連立一次方程式のうちの対応する連立一次方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との間の距離(第1距離)を表す関数である。例えば、式(30)の例の場合、J個の第1距離関数のそれぞれは、対応する連立一次方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差を二乗した関数である。
【0145】
K個の第2距離関数のそれぞれは、K個の代替方程式のうちの対応する代替方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との間の距離(第2距離)を表す関数である。例えば、式(30)の例の場合、K個の第2距離関数のそれぞれは、対応する代替方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差を二乗した関数である。すなわち、ペナルティ項は、第1距離と第2距離との合計がプラスになるほど、プラス方向にずれる関数である。
【0146】
なお、式(30)は、先頭に1/2が乗じられている。しかし、式(30)は、0より大きい実数であれば、1/2以外の値が乗じられてもよい。
【0147】
続いて、S15において、関数生成部24は、K個の不等式により表される従属変数制約を生成する。従属変数制約は、式(31)により表される。
【数31】
【0148】
K個の不等式のそれぞれは、K個の従属変数のうちの対応する従属変数が、K個の連立一次不等式のうちの対応する連立一次不等式における定数項以下であることを表す。式(31)の例の場合、K個の不等式のそれぞれは、式(25)の左辺をzkに置き換えた不等式となる。
【0149】
続いて、S16において、更新部30は、nを0に初期化する。
【0150】
続いて、S17において、更新部30は、最初の第1処理、最初の第2処理および最初の係数処理に先だって、I個の第1決定変数の解の候補値のそれぞれ、M個の第2決定変数の解の候補値のそれぞれ、K個の従属変数の解の候補値のそれぞれ、J個の第1ラグランジュ係数のそれぞれ、K個の第2ラグランジュ係数のそれぞれ、および、ペナルティ係数に対して、予め定められた初期値を代入する。
【0151】
本例においては、y
m[n]は、n回目のループ処理の後のM個の第2決定変数の解の候補値を表す。なお、y
m[0]は、y
m[n]の初期値を表す。例えば、更新部30は、これらの各値を、式(32)のように初期化する。
【数32】
【0152】
なお、argy,zは、yおよびzの値を取得する関数である。更新部30は、式(32)におけるzk[n]およびym[n]を、演算により算出可能であれば、演算により算出してもよいし、式(32)を満たすzk[n]およびym[n]をユーザから受け付けたり、別の装置から取得してもよい。また、更新部30は、式(32)におけるzk[n]およびym[n]を、後述するS22およびS23と同様に、第2関数を生成し、生成した第2関数を最小化する問題を第2ソルバー42に与えて、第2ソルバー42から問題の解として取得してもよい。
【0153】
S18において、更新部30は、拡張ラグランジュ関数に基づき、I個の第1決定変数を含む第1関数を生成する。n+1回目のループ処理において生成される第1関数は、式(33)により表される。
【数33】
【0154】
すなわち、n+1回目のループ処理において生成される第1関数は、直前のループ処理(n回目のループ処理)の後における、M個の第2決定変数の解の候補値であるym[n]、K個の従属変数の解の候補値であるzk[n]、J個の第1ラグランジュ係数であるλj[n]、K個の第2ラグランジュ係数であるλ´k[n]、および、ペナルティ係数であるμ[n]を、式(26)の拡張ラグランジュ関数に代入した関数である。第1関数は、I個の第1決定変数を含む整数非凸二次関数となる。なお、1回目のループ処理においては、直前のループ処理の後のym[n]、zk[n]、λj[n]、λ´k[n]、および、μ[n]は、S17で代入した初期値となる。
【0155】
続いて、S19において、更新部30は、第1処理を実行する。すなわち、更新部30は、第1関数を最小化するI個の第1決定変数の解の候補値を取得する。例えば、更新部30は、式(34)に示す関数を実行する。
【数34】
【0156】
更新部30は、式(34)を実行することによって、第1関数を最小化する問題を第1ソルバー26に与えて、第1ソルバー26から問題の解として、I個の第1決定変数の解の候補値を取得する。
【0157】
続いて、S20において、更新部30は、終了条件に達したか否かを判断する。更新部30は、終了条件に達した場合、処理をS27に進める。更新部30は、終了条件に達していない場合、処理をS21に進める。
【0158】
続いて、S21において、更新部30は、更新値記憶部32に記憶されているI個の第1決定変数の解の候補値のそれぞれを更新する。
【0159】
S22において、更新部30は、拡張ラグランジュ関数に基づき、M個の第2決定変数およびK個の従属変数を含む第2関数を生成する。n+1回目のループ処理において生成される第2関数は、式(35)により表される。
【数35】
【0160】
すなわち、n+1回目のループ処理において生成される第2関数は、直前のS21で更新されたI個の第1決定変数の解の候補値であるxi[n+1]、並びに、直前のループ処理(n回目のループ処理)の後のJ個の第1ラグランジュ係数であるλj[n]、K個の第2ラグランジュ係数であるλ´k[n]およびペナルティ係数であるμ[n]を式(26)の拡張ラグランジュ関数に代入した関数である。なお、1回目のループ処理においては、直前のループ処理において更新された、λj[n]、λ´k[n]、および、μ[n]は、S17で代入した初期値となる。
【0161】
続いて、S23において、更新部30は、第2処理を実行する。すなわち、更新部30は、K個の不等式により表される従属変数制約を満たす条件の下で、第2関数を最小化するM個の第2決定変数の解の候補値およびK個の従属変数の解の候補値を取得する。例えば、更新部30は、第2関数を最小化する問題を第2ソルバー42に与えて、第2ソルバー42から問題の解として、M個の第2決定変数の解の候補値およびI個の第1決定変数の解の候補値を取得する。例えば、更新部30は、式(36)に示す関数を実行する。
【数36】
【0162】
なお、argy,zは、yおよびzの値を取得する関数である。
【0163】
続いて、S24において、更新部30は、更新値記憶部32に記憶されているM個の第2決定変数の解の候補値のそれぞれおよびK個の従属変数の解の候補値のそれぞれを更新する。
【0164】
続いて、S25において、更新部30は、係数処理を実行する。すなわち、更新部30は、更新値記憶部32に記憶されているJ個の第1ラグランジュ係数、K個の第2ラグランジュ係数およびペナルティ係数を更新する。
【0165】
具体的には、更新部30は、直前のループ処理において更新されたJ個の第1ラグランジュ係数のそれぞれから、対応する連立一次方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差に応じた値を減じる。より具体的には、更新部30は、n+1回目のループ処理におけるJ個の第1ラグランジュ係数(λ
j[n+1])として、式(37)に示す値を代入する。
【数37】
【0166】
また、具体的には、更新部30は、直前のループ処理において更新されたK個の第2ラグランジュ係数のそれぞれから、対応する代替方程式と、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値との誤差に応じた値を減じる。より具体的には、更新部30は、n+1回目のループ処理におけるK個の第2ラグランジュ係数(λ´
k[n+1])として、式(38)に示す値を代入する。
【数38】
【0167】
また、具体的には、更新部30は、直前のループ処理において更新されたペナルティ係数を増加させる。より具体的には、更新部30は、n+1回目のループ処理におけるペナルティ(μ[n+1])として、式(39)に示す値を代入する。
【数39】
【0168】
続いて、S26において、更新部30は、nに1を加算する。そして、更新部30は、S26の処理を終えると、処理をS18に戻し、S18からS26までの処理を、S20の終了条件に達するまで繰り返す。更新部30は、S20で終了条件に達した場合(S20のYes)、処理をS27に進める。
【0169】
S27において、出力部34は、S19で取得したI個の第1決定変数の解の候補値およびS23で取得したM個の第2決定変数の解の候補値が線形等式制約および線形不等式制約を満たしている場合、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値を、求解の対象となる0-1整数非凸二次計画問題の解として出力する。また、出力部34は、I個の第1決定変数の解の候補値およびM個の第2決定変数の解の候補値が線形等式制約および線形不等式制約を満たしていない場合、求解の対象となる0-1整数非凸二次計画問題の解が算出できなかったことを示す情報を出力する。
【0170】
以上のような第2実施形態に係る求解装置10は、制約条件を含まない0-1整数非凸二次計画問題の解を取得する第1処理と、連続凸関数の解を取得する第2処理とを交互に繰り返す。制約条件を含まない0-1整数非凸二次計画問題は、イジングマシン等のソルバーにより、良い解を簡易に取得可能である。また、連続凸計画問題は、既存のソルバーにより、良い解を簡易に取得可能である。従って、求解装置10は、第1処理と第2処理とを繰り返すことにより、線形制約条件を含む0-1整数非凸二次計画問題と連続凸計画問題とを組み合わせた問題に対して、良い解を効率良く算出することができる。
【0171】
また、以上のような第2実施形態に係る求解装置10は、目的関数に、J個の第1ラグランジュ項と、K個の第2ラグランジュ項と、ペナルティ項とを加算した拡張ラグランジュ関数を用いて、I個の第1決定変数の解を算出する。J個の第1ラグランジュ項およびK個の第2ラグランジュ項は、制約の周辺での目的関数の傾きを打ち消すような働きをする。従って、第2実施形態に係る求解装置10は、ペナルティ項に含まれるペナルティ係数を、目的関数に含まれる係数であるPi,i´およびQiよりも、大きくしなくても、制約条件を満たす解を取得することができる。従って、第2実施形態に係る求解装置10は、第1ソルバー26の計算能力を、実行可能解を取得するためでなく良い解を探すために多く費やさせることができる。よって、求解装置10は、良い解を取得する確率を上げることができる。
【0172】
また、第2実施形態に係る求解装置10は、第1ラグランジュ係数、第2ラグランジュ係数およびペナルティ係数を簡易な演算により更新する。これにより、求解装置10は、第1ラグランジュ係数、第2ラグランジュ係数およびペナルティ係数を容易に更新することができる。
【0173】
(変形例)
第1実施形態に係る拡張ラグランジュ関数に含まれるK個の第2ラグランジュ項は、式(40)のように表されてもよい。
【数40】
【0174】
式(40)のφ(x)は、活性化関数を表す。活性化関数は、例えば、式(41)に示すようなReLU関数である。
【数41】
【0175】
φ(x)は、xが閾値以上であるか、x閾値より小さいかに応じて、xをそのまま出力するか、0を出力するかを切り替える。閾値は、どのような値であってもよい。
【0176】
また、このような場合、更新部30は、S25の係数処理において、第2ラグランジュ係数を式(42)に示すように、活性化関数を用いて更新する。
【数42】
【0177】
このような拡張ラグランジュ関数は、第1ソルバー26が決定変数の値に応じて、最適値を探索するか否かを切り替えるソルバーである場合に有効となる。また、活性化関数は、第2実施形態に係る拡張ラグランジュ関数の第2ラグランジュ項に適用されてもよい。
【0178】
(ハードウェア構成)
図5は、求解装置10のハードウェアブロック図である。求解装置10は、一例として、
図5に示すような一般のコンピュータ(情報処理装置)と同様のハードウェア構成により実現される。求解装置10は、
図5に示すような1つのコンピュータまたはサーバにより実現されてもよいし、協働して動作する複数のコンピュータまたはサーバにより実現されてもよい。また、求解装置10は、一部に専用のハードウェア回路を備える構成であってもよい。
【0179】
求解装置10は、メモリ204と、1または複数のハードウェアプロセッサ206と、記憶装置208と、操作装置210と、表示装置212と、通信装置214とを備える。各部は、バスにより接続される。
【0180】
メモリ204は、例えば、ROM222と、RAM224とを含む。ROM222は、求解装置10の制御に用いられるプログラムおよび各種設定情報等を書き換え不可能に記憶する。RAM224は、SDRAM(Synchronous Dynamic Random Access Memory)等の揮発性の記憶媒体である。RAM224は、1または複数のハードウェアプロセッサ206の作業領域として機能する。
【0181】
1または複数のハードウェアプロセッサ206は、メモリ204(ROM222およびRAM224)にバスを介して接続される。1または複数のハードウェアプロセッサ206のそれぞれは、例えば、CPU(Central Processing Unit)であってもよいし、演算用のハードウェア回路であってもよい。
【0182】
1または複数のハードウェアプロセッサ206は、RAM224の所定領域を作業領域としてROM222または記憶装置208に予め記憶された各種プログラムとの協働により各種処理を実行し、求解装置10を構成する各部の動作を統括的に制御する。また、1または複数のハードウェアプロセッサ206は、ROM222または記憶装置208に予め記憶されたプログラムとの協働により、操作装置210、表示装置212および通信装置214等を制御する。
【0183】
記憶装置208は、フラッシュメモリ等の半導体による記憶媒体、磁気的または光学的に記録可能な記憶媒体等の書き換え可能な記録装置である。記憶装置208は、求解装置10の制御に用いられるプログラムおよび各種設定情報等を記憶する。
【0184】
操作装置210は、マウスおよびキーボード等の入力デバイスである。操作装置210は、ユーザから操作入力された情報を受け付け、受け付けた情報を1または複数のハードウェアプロセッサ206に出力する。
【0185】
表示装置212は、情報をユーザに表示する。表示装置212は、1または複数のハードウェアプロセッサ206から情報等を受け取り、受け取った情報を表示する。なお、通信装置214または記憶装置208等に情報を出力する場合、求解装置10は、表示装置212を備えなくてもよい。通信装置214は、外部の機器と通信して、ネットワーク等を介して情報を送受信する。
【0186】
本実施形態の求解装置10で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0187】
また、本実施形態の求解装置10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の求解装置10で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、本実施形態の求解装置10で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0188】
情報処理装置を求解装置10として機能させるためのプログラムは、例えば、取得モジュール、関数生成モジュール、更新モジュールおよび出力モジュールを含むモジュール構成となっている。さらに、プログラムは、第1ソルバーモジュールおよび第2ソルバーモジュールを含んでもよい。このプログラムは、1または複数のハードウェアプロセッサ206により実行されることにより各モジュールがメモリ204のRAM224にロードされ、1または複数のハードウェアプロセッサ206を、取得部22、関数生成部24、更新部30および出力部34として機能させる。さらに、このプログラムは、1または複数のハードウェアプロセッサ206を、第1ソルバー26および第2ソルバー42として機能させてもよい。なお、これらの構成は、一部または全部がハードウェアにより構成されていてもよい。
【0189】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0190】
10 求解装置、
22 取得部
24 関数生成部
26 第1ソルバー
30 更新部
32 更新値記憶部
34 出力部
42 第2ソルバー