(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-24
(45)【発行日】2023-12-04
(54)【発明の名称】最適化問題の最適解演算装置及び最適化問題の最適解演算方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20231127BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2022529241
(86)(22)【出願日】2020-06-04
(86)【国際出願番号】 JP2020022063
(87)【国際公開番号】W WO2021245866
(87)【国際公開日】2021-12-09
【審査請求日】2022-08-17
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002941
【氏名又は名称】弁理士法人ぱるも特許事務所
(72)【発明者】
【氏名】服部 潤也
(72)【発明者】
【氏名】遠藤 雅也
(72)【発明者】
【氏名】大曲 祐子
【審査官】北川 純次
(56)【参考文献】
【文献】特開2017-223229(JP,A)
【文献】特開2010-155546(JP,A)
【文献】国際公開第2015/184729(WO,A1)
【文献】米国特許出願公開第2008/0077361(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06N 20/00
G06F 30/00
(57)【特許請求の範囲】
【請求項1】
入力された最適化問題に対する解を更新部による処理を経由して演算する最適化問題の最適解演算装置であって、
前記最適化問題に関する不等式制約の集合である不等式制約集合、評価関数、初期解を入力として取得し、前記初期解に基づいて前記不等式制約集合の不等式制約をすべて満たす実行可能初期解を生成し、前記実行可能初期解に対して、前記不等式制約集合から等号が成立している等式制約の集合である等式制約集合を生成する初期条件生成部と、
初回の場合は前記実行可能初期解であり、次回以降の場合は前記更新部により更新された解である入力解に対して、前記等式制約集合と前記評価関数から生成される連立一次方程式の求解演算を行い、前記評価関数を最小化又は最大化する解である評価解を演算する最適化演算部と、
前記最適化演算部により出力された前記評価解を判定すると共に、前記等式制約集合から前記評価解が満たすべき制約を更新して更新された前記等式制約集合と、前回の前記入力解及び前記評価解に基づいて更新された前記入力解とを生成する前記更新部と、を備え、
前記最適化演算部は、
前記入力解に対する前記連立一次方程式の左辺のベクトルと前記連立一次方程式の右辺のベクトルとの差である初期残差ベクトルから初期残差ノルムを計算する初期ノルム計算部と、
反復法を実行し、前記連立一次方程式の反復回数毎の解である反復解を演算する反復解演算部と、
前記反復解演算部にて演算された前記反復解に対する前記連立一次方程式の左辺のベクトルと前記連立一次方程式の右辺のベクトルとの差である残差ベクトルから残差ノルムを計算するノルム計算部と、
予め設定された第一閾値と、緩和パラメータ及び前記初期残差ノルムに基づいて設定される第二閾値とのいずれかであって大きい方である収束判定閾値以下に前記残差ノルムがなった場合に前記反復解が収束したと判定し、収束したと判定された前記反復解を前記評価解として出力する収束判定部と、を備え、
前記更新部は、
前記等式制約集合の更新が不要と判定し、かつ前記収束判定閾値が前記第一閾値である場合に前記評価解を最適解と決定し、
前記最適解を前記最適化問題に対する解である出力解として出力する、
最適化問題の最適解演算装置。
【請求項2】
前記最適化問題に対する解を演算する際に単精度型変数を用いて演算する場合に、前記緩和パラメータの値は予め定められた10
2から10
4の値であり、
前記最適化問題に対する解を演算する際に倍精度型変数を用いて演算する場合に、前記緩和パラメータの値は予め定められた10
8から10
12の値である、
請求項1記載の最適化問題の最適解演算装置。
【請求項3】
前記更新部は、
前記等式制約集合の更新が不要と判定し、かつ前記収束判定閾値が前記第二閾値である場合に前記評価解を準最適解と決定し、
前記評価解が前記最適解と決定されない場合に前記準最適解を前記最適化問題に対する解である出力解として出力する、
請求項1又は2に記載の最適化問題の最適解演算装置。
【請求項4】
前記更新部は、
前記等式制約集合の更新した回数が上限値に達した場合に、
前記収束判定閾値が前記第一閾値である場合に前記評価解を第一
反復上限解と決定し、
前記収束判定閾値が前記第二閾値である場合に前記評価解を第二
反復上限解と決定し、
前記評価解が前記最適解又は前記準最適解と決定されない場合に、前記第一
反復上限解、前記第二
反復上限解のいずれかを前記最適化問題に対する解である出力解として出力する、
請求項3記載の最適化問題の最適解演算装置。
【請求項5】
前記更新部は、
前記等式制約集合の更新した回数が上限値に達した場合に、
前記収束判定閾値が前記第一閾値又は前記第二閾値である場合に前記評価解を
反復上限解と決定し、
前記評価解が前記最適解又は前記準最適解と決定されない場合に、前記
反復上限解を前記最適化問題に対する解である出力解として出力する、
請求項3記載の最適化問題の最適解演算装置。
【請求項6】
前記更新部は、
前記出力解が、前記最適解、前記準最適解のいずれかを示す判定フラグを出力する結果出力部を備える、
請求項3記載の最適化問題の最適解演算装置。
【請求項7】
前記更新部は、
前記出力解が、前記最適解、前記準最適解、前記第一
反復上限解、前記第二
反復上限解のいずれかを示す判定フラグを出力する結果出力部を備える、
請求項4記載の最適化問題の最適解演算装置。
【請求項8】
前記更新部は、
前記出力解が、前記最適解、前記準最適解、前記
反復上限解のいずれかを示す判定フラグを出力する結果出力部を備える、
請求項5記載の最適化問題の最適解演算装置。
【請求項9】
最適解演算装置が、入力された最適化問題に対する解を更新工程による処理を経由して演算する最適化問題の最適解演算方法であって、
前記最適化問題に関する不等式制約の集合である不等式制約集合、評価関数、初期解を入力として取得し、前記初期解に基づいて前記不等式制約集合の不等式制約をすべて満たす実行可能初期解を生成し、前記実行可能初期解に対して、前記不等式制約集合から等号が成立している等式制約の集合である等式制約集合を生成する初期条件生成工程と、
初回の場合は前記実行可能初期解であり、次回以降の場合は前記更新工程により更新された解である入力解に対して、前記等式制約集合と前記評価関数から生成される連立一次方程式の求解演算を行い、前記評価関数を最小化又は最大化する解である評価解を演算する最適化演算工程と、
前記最適化演算工程により出力された前記評価解を判定すると共に、前記等式制約集合から前記評価解が満たすべき制約を更新して更新された前記等式制約集合と、前回の前記入力解及び前記評価解に基づいて更新された前記入力解とを生成する前記更新工程と、を含み、
前記最適化演算工程は、
前記入力解に対する前記連立一次方程式の左辺のベクトルと前記連立一次方程式の右辺のベクトルとの差である初期残差ベクトルから初期残差ノルムを計算する初期ノルム計算工程と、
反復法を実行し、前記連立一次方程式の反復回数毎の解である反復解を演算する反復解演算工程と、
前記反復解演算工程にて演算された前記反復解に対する前記連立一次方程式の左辺のベクトルと前記連立一次方程式の右辺のベクトルとの差である残差ベクトルから残差ノルムを計算するノルム計算工程と、
予め設定された第一閾値と、緩和パラメータ及び前記初期残差ノルムに基づいて設定される第二閾値とのいずれかであって大きい方である収束判定閾値以下に前記残差ノルムがなった場合に前記反復解が収束したと判定し、収束したと判定された前記反復解を前記評価解として出力する収束判定工程と、を含み、
前記更新工程は、
前記等式制約集合の更新が不要と判定し、かつ前記収束判定閾値が前記第一閾値である場合に前記評価解を最適解と決定し、
前記最適解を前記最適化問題に対する解である出力解として出力する、
最適化問題の最適解演算方法。
【請求項10】
前記更新工程は、
前記等式制約集合の更新が不要と判定し、かつ前記収束判定閾値が前記第二閾値である場合に前記評価解を準最適解と決定し、
前記評価解が前記最適解と決定されない場合に前記準最適解を前記最適化問題に対する解である出力解として出力する、
請求項9記載の最適化問題の最適解演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、最適化問題の最適解演算装置及び最適化問題の最適解演算方法に関するものである。
【背景技術】
【0002】
製造物の設計は、最適な形状、配置等が最適になるように実行される。制御方法の設計は、制御対象が予め設定された精度で制御できるように最適な工程を構築する。このため製造物の設計、制御方法の設計は、最適化問題を解く作業ということができる。最適化問題を解く装置及び方法、すなわち最適化問題の最適解演算装置及び最適化問題の最適解演算方法の一例である構造物の構造最適設計方法及び構造最適設計装置が特許文献1に開示されている。特許文献1の構造最適設計方法は、2重構造最適化問題を解く方法であり、設計変数ベクトルの最適化問題の反復ステップ毎に状態変数ベクトルの最適化問題を解く方法である。特許文献1の構造最適設計装置は、状態変数ベクトルと設計変数ベクトルに対する第1の評価汎関数の最適化問題を解く第1の求解手段と、該状態変数ベクトルと該設計変数ベクトルに対する第2の評価汎関数の最適化問題を解く第2の求解手段とを有し、2重最適化問題として定式化される構造最適設計問題を解く装置である。
【0003】
特許文献1の構造最適設計装置では、第2の求解手段の第2の評価汎関数が残差ベクトルのノルムにより構成されており、第2の評価汎関数の最適化問題演算の収束判定を、残差ベクトルのノルムの2乗が予め設定された収束判定閾値よりも小さくなることを確認して判定している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1のような最適化問題の最適解演算装置にあっては、残差ノルムと予め設定された収束判定閾値との大きさで収束判定を行っている。しかし、演算の際における丸め誤差等による残差ベクトルに含まれる演算誤差の影響により、収束判定閾値を満たさず、反復演算を繰り返しても収束した解が得られない場合があるという問題があった。
【0006】
本願明細書に開示される技術は、残差ベクトルに含まれる演算誤差が解の演算に影響する状況において、収束した解を得ることを目的としている。
【課題を解決するための手段】
【0007】
本願明細書に開示される一例の最適化問題の最適解演算装置は、入力された最適化問題に対する解を更新部による処理を経由して演算する最適化問題の最適解演算装置である。最適化問題の最適解演算装置は、最適化問題に関する不等式制約の集合である不等式制約集合、評価関数、初期解を入力として取得し、初期解に基づいて不等式制約集合の不等式制約をすべて満たす実行可能初期解を生成し、実行可能初期解に対して、不等式制約集合から等号が成立している等式制約の集合である等式制約集合を生成する初期条件生成部と、初回の場合は実行可能初期解であり、次回以降の場合は更新部により更新された解である入力解に対して、等式制約集合と評価関数から生成される連立一次方程式の求解演算を行い、評価関数を最小化又は最大化する解である評価解を演算する最適化演算部と、最適化演算部により出力された評価解を判定すると共に、等式制約集合から評価解が満たすべき制約を更新して更新された等式制約集合と、前回の入力解及び評価解に基づいて更新された入力解とを生成する更新部と、を備えている。最適化演算部は、入力解に対する連立一次方程式の左辺のベクトルと連立一次方程式の右辺のベクトルとの差である初期残差ベクトルから初期残差ノルムを計算する初期ノルム計算部と、反復法を実行し、連立一次方程式の反復回数毎の解である反復解を演算する反復解演算部と、反復解演算部にて演算された反復解に対する連立一次方程式の左辺のベクトルと連立一次方程式の右辺のベクトルとの差である残差ベクトルから残差ノルムを計算するノルム計算部と、予め設定された第一閾値と、緩和パラメータ及び初期残差ノルムに基づいて設定される第二閾値とのいずれかであって大きい方である収束判定閾値以下に残差ノルムがなった場合に反復解が収束したと判定し、収束したと判定された反復解を評価解として出力する収束判定部と、を備えている。更新部は、等式制約集合の更新が不要と判定し、かつ収束判定閾値が第一閾値である場合に評価解を最適解と決定し、最適解を最適化問題に対する解である出力解として出力する。
【発明の効果】
【0008】
本願明細書に開示される一例の最適化問題の最適解演算装置は、収束判定部が予め設定された第一閾値と、緩和パラメータ及び初期残差ノルムに基づいて設定される第二閾値とのいずれかであって大きい方である収束判定閾値以下に残差ノルムがなった場合に反復解が収束したと判定し、収束したと判定された反復解を評価解として出力し、更新部が等式制約集合の更新が不要と判定し、かつ収束判定閾値が第一閾値である場合に評価解を最適解と決定するので、残差ベクトルに含まれる演算誤差が解の演算に影響する状況において収束した解を得ることができる。
【図面の簡単な説明】
【0009】
【
図1】実施の形態1に係る最適化問題の最適解演算装置における機能ブロックを示す図である。
【
図2】実施の形態1に係る最適化問題の最適解演算装置のハードウェア構成例を示す図である。
【
図3】
図1の評価解演算部の機能ブロックを示す図である。
【
図4】
図1の最適化問題の最適解演算装置の動作フローを示す図である。
【
図5】
図1の初期条件生成部の動作フローを示す図である。
【
図6】
図1の最適化演算部の動作フローを示す図である。
【
図7】
図3の評価解演算部の動作フローを示す図である。
【
図8】
図1の更新部における動作フローの第一例を示す図である。
【
図9】
図1の更新部における動作フローの第二例を示す図である。
【
図10】
図1の更新部における動作フローの第三例を示す図である。
【
図11】実施の形態2に係る最適化問題の最適解演算装置における機能ブロックの第一例を示す図である。
【
図12】実施の形態2に係る最適化問題の最適解演算装置における機能ブロックの第二例を示す図である。
【発明を実施するための形態】
【0010】
実施の形態1.
図1は実施の形態1に係る最適化問題の最適解演算装置における機能ブロックを示す図であり、
図2は実施の形態1に係る最適化問題の最適解演算装置のハードウェア構成例を示す図である。
図3は、
図1の評価解演算部の機能ブロックを示す図である。
図4は
図1の最適化問題の最適解演算装置の動作フローを示す図であり、
図5は
図1の初期条件生成部の動作フローを示す図であり、
図6は
図1の最適化演算部の動作フローを示す図である。
図7は
図3の評価解演算部の動作フローを示す図であり、
図8は
図1の更新部における動作フローの第一例を示す図である。
図9は
図1の更新部における動作フローの第二例を示す図であり、
図10は
図1の更新部における動作フローの第三例を示す図である。実施の形態1に係る最適化問題の最適解演算装置81は、最適化問題を解く必要がある装置に内蔵したコントロールユニットによって実現される。例えば、車両を目標経路に追従させる最適化問題を解く場合、燃費を最適化させる問題を解く場合等の車両に関する最適化問題を解く場合は、車両に搭載したコントロールユニットに実装する。工場の運用を最適化する最適化問題を解く場合は、工場の管制装置に搭載したコントロールユニットに実装される。このように、本願明細書に開示される一例の最適化問題の最適解演算装置81は、最適化問題の対象は限定せず、種々の最適化問題が与えられた場合に、その最適化問題の解を演算する装置である。
【0011】
図2に最適化問題の最適解演算装置81のハードウェア構成例を示した。最適化問題の最適解演算装置81は、種々の最適化問題を取得すると共に取得した最適化問題の演算結果を出力するためのインターフェース82と、最適化問題の最適解を演算するプロセッサ83と、最適化問題を解くプログラム、演算データ等を記憶するメモリ84とを備えている。最適化問題の最適解演算装置81の機能ブロックは、プロセッサ83がメモリ84に記憶されたプログラムを実行することにより実現される。また、複数のプロセッサ83及び複数のメモリ84が連携して各機能を実行してもよい。
【0012】
図1、
図4を用いて、実施の形態1に係る最適化問題の最適解演算装置81の機能ブロック及び動作フローを説明する。以下では、評価関数Jを最小化する最適化問題の最適解の演算について説明を行う。適宜、最適化問題の最適解演算装置を単に最適解演算装置と称することにする。なお、評価関数Jを最大化する最適化問題の最適解の演算の場合は、評価関数Jに-1を乗算し符号を反転させることで評価関数Jを最小化する最適化問題として扱うことができる。最適解演算装置81は、初期条件生成部100、最適化演算部200、更新部300を備えている。初期条件生成部100は、与えられた最適化問題すなわち入力された最適化問題に対して、最適化演算部200の反復演算により最適化問題の解を演算するための初期条件を含む入力データを生成する。最適化演算部200は、初期条件生成部100が生成した初期条件を含む入力データ又は更新部300により更新された更新条件を含む入力データに基づいて、収束した解又は発散していない解である評価解yを演算する。評価解yは、少なくも発散していない解であり、収束に向かっているものの反復解演算回数が上限値に達した解も含まれる。
【0013】
更新部300は、最適化演算部200が演算した評価解yが満たすべき条件がある場合に再度最適化演算部200が演算に用いる入力データを更新し、評価解yが判定条件を満たす場合に最適解wg1又は準最適解wg2を含む出力解waを出力する。最適解wg1は予め設定された解の第一許容誤差を満たす解であり、準最適解wg2は第一許容誤差よりも緩い予め設定された解の第二許容誤差を満たす解である。最適化演算部200に入力される入力データは、解wk、等式制約集合S2kである。初期条件生成部100が生成した入力データは、実行可能初期解w0、初期の等式制約集合S2である。適宜、初期条件生成部100が生成した初期条件を含む入力データを初期入力データと称し、更新部300により更新された更新条件を含む入力データを更新入力データと称することにする。最適化演算部200に初期入力データとして実行可能初期解w0、初期の等式制約集合S2が入力される。2回目以降の演算の際に、最適化演算部200に更新入力データとして解wk、等式制約集合S2kが入力される。
【0014】
最適解演算装置81は、ステップST1の初期条件生成工程、ステップST2の最適化演算工程、ステップST3の更新工程を実行する。最適解演算装置81は、ステップST1にて、与えられた最適化問題に対して、初期入力データすなわち実行可能初期解w0、初期の等式制約集合S2を初期条件生成部100により生成する(初期条件生成工程)。最適解演算装置81は、ステップST2にて、初期条件生成工程により生成された初期入力データ又はステップST3の更新工程により更新された更新入力データすなわち解wk、等式制約集合S2kに基づいて、少なくとも発散していない評価解yを演算する(最適化演算工程)。最適解演算装置81は、ステップST3にて、最適化演算工程にて演算された評価解yが満たすべき条件がある場合に再度最適化工程の演算に用いる入力データを更新し、評価解yが判定条件を満たす場合に最適解wg1又は準最適解wg2を含む出力解waを出力する(更新工程)。
【0015】
初期条件生成部100は、インターフェース82を介して、式(1)で表される最適化問題の評価関数J、式(2)で表される不等式制約の集合すなわち不等式制約集合S1、及び初期解w0inを最適化問題の入力として取得する。不等式制約集合S1、評価関数J、初期解w0inが最適化問題に関する入力条件である。式(1)において、wは解ベクトルであり、wTは転置された解ベクトルである。Hは第一条件行列であり、hTは調整行ベクトルである。CTは制約行列であり、bは制約ベクトルである。式(2)は上限制約として示しているが、下限制約が含まれていてもよい。下限制約の場合、制約式の両辺に-1を乗算し符号を反転させることで式(2)のように上限制約として扱うことができる。
【0016】
【0017】
図1、
図5を用いて、初期条件生成部100の機能ブロック及び動作フローを説明する。初期条件生成部100は、実行可能初期解w
0を生成する初期解生成部11、不等式制約集合S1から等式制約集合S2を生成する等式制約集合生成部12を備えている。初期条件生成部100は、ステップST11の初期解生成工程、ステップST12の等式制約集合生成工程を実行する。ステップST11の初期解生成工程は初期解生成部11により実行され、ステップST12の等式制約集合生成工程は等式制約集合生成部12により実行される。ステップST11にて、初期解生成部11が実行可能初期解w
0の生成を行う(初期解生成工程)。初期条件生成部100に入力された初期解w
0inが不等式制約集合S1を満たす場合は、初期解生成部11は入力された初期解w
0inを実行可能初期解w
0とする。不等式制約集合S1を満たさず、実行不可能な解である場合は、初期解生成部11は不等式制約集合S1を満たすような実行可能初期解w
0を生成する。
【0018】
ステップST12にて、等式制約集合生成部12は、実行可能初期解w
0に対して、不等式制約集合S1の中で等号が成立している制約のみを抜き出し、等式制約の集合である等式制約集合S2を式(3)のように生成する(等式制約集合生成工程)。
【数3】
式(3)の右辺bは、実行可能初期解w
0において、等号が成立している制約ベクトルである。A
T
0は、実行可能初期解w
0が制約ベクトルbを満たす場合における制約行列である。
【0019】
図1、
図3、
図6、
図7を用いて、最適化演算部200の機能ブロック及び動作フローを説明する。最適化演算部200は、最適化問題の評価関数J、等式制約集合
S2
k
、及び解w
kを入力として取得する。なお、解w
k、等式制約集合S2
kの添え字kは最適化演算部200の反復回数すなわち演算反復回数に対応しており、初回の演算ではkは0である。初回の演算では、解w
k及び等式制約集合S2
kはそれぞれ実行可能初期解w
0及び等式制約集合S2である。最適化演算部200は、カルーシュ・クーン・タッカー条件(KKT条件)を含む連立一次方程式SLEを生成する方程式生成部21、初期残差ベクトルr
inのノルムである初期残差ノルムNR
0を計算する初期ノルム計算部22、少なくとも発散していない評価解yを演算すると共に中間判定フラグfg1を生成する評価解演算部23を備えている。中間判定フラグfg1は、解が予め設定された解の第一許容誤差を満たす第一収束解であるか、予め設定された解の第一許容誤差を満たさないものの予め設定された解の第二許容誤差を満たす第二収束解かを示すフラグである。最適化演算部200は、ステップST21の方程式生成工程、ステップST22の初期ノルム計算工程、ステップST23の評価解演算工程を実行する。ステップST21の方程式生成工程は方程式生成部21により実行され、ステップST22の初期ノルム計算工程は初期ノルム計算部22により実行され、ステップST23の評価解演算工程は評価解演算部23により実行される。
【0020】
評価解演算部23は、反復解演算回数jが反復解演算回数上限値jmに達したかを判定する演算回数判定部24、反復解yjを演算する反復解演算部25、残差ベクトルrjのノルムである残差ノルムNRjを計算するノルム計算部26、反復解yjの収束判定を行い、評価解yと中間判定フラグfg1を生成する収束判定部27を備えている。評価解演算部23は、ステップST23の評価解演算工程としてステップST41~ST45を実行する。ステップST41の反復解演算回数判定工程及びステップST45の反復解演算回数更新工程は、演算回数判定部24により実行される。ステップST42の反復解演算工程は反復解演算部25により実行され、ステップST43のノルム計算工程はノルム計算部26により実行され、ステップST44の収束判定工程は収束判定部27により実行される。
【0021】
ここでは最適解演算装置81は等式制約のみを制約とする評価関数Jの最小化問題を解くので、ステップST21において等式制約のみを制約とする評価関数Jの最小化問題を解くための連立一次方程式SLEを生成する(方程式生成工程)。等式制約のみを制約とする評価関数Jの最小化問題は、式(4)で表される。ステップST21の方程式生成工程では、カルーシュ・クーン・タッカー条件(KKT条件)を含む連立一次方程式SLEを式(5)のように生成する。式(5)のyは式(4)で表される演算反復回数がkにおける最小化問題の評価解であり、λは各制約に対応するラグランジュ乗数である。hは調整列ベクトルであり、調整行ベクトルhTとは転置した関係にある。Akは演算反復回数がkにおける制約行列であり、AT
kは制約行列Akの転置行列である。bkは演算反復回数がkにおける制約ベクトルである。なお、評価解演算部23が生成する評価解yのうち収束した評価解yは、演算反復回数がkにおける最小化問題の最適解を含む収束解ということもできる。収束した評価解yは、更新部300の演算判定部37で最適解であると判定された場合に、式(4)で表される最小化問題の最適解となる。
【0022】
【0023】
ここで、添え字のkは、前述したように最適化演算部200の演算反復回数に対応している。評価解演算部23が生成する評価解yは、更新部300により更新された解wk+1になる。この解wk+1は、更新された演算反復回数kにおける最適化演算部200に入力される解wkになる。
【0024】
以後の説明では、式(5)で示した連立一次方程式SLEの表記を単純化した式(6)を用いる。式(5)における左辺の行列すなわち制約行列はA
~と表記し、左辺のyを含む列ベクトルをxと表記し、右辺のb
kを含む列ベクトルすなわち制約ベクトルをb
~と表記する。
【数6】
【0025】
ステップST22において、初期ノルム計算部22は、最適化演算部200が入力として取得した解wkすなわち入力解に対する連立一次方程式SLEにおける初期残差ベクトルrinのノルムである初期残差ノルムNR0を式(7)のように計算する。初期残差ベクトルrinは式(7)の最も右側における記号「||」で挟まれた式で表される。初期残差ベクトルrinは解wkに対する連立一次方程式SLEの左辺のベクトルと連立一次方程式SLEの右辺のベクトルとの差である。Ak
~は演算反復回数がkにおける制約行列A~であり、bk
~は演算反復回数がkにおける制約ベクトルb~である。
【0026】
【0027】
ステップST23にて、評価解演算部23は、反復解演算処理を複数回実行し、反復法を用いて連立一次方程式SLEの求解演算をすることにより、評価関数Jを最小化する解すなわち収束した解又は発散していない解である評価解yを演算する(評価解演算工程)。ステップST23の評価解演算工程について、詳しく説明する。ステップST41にて、演算回数判定部24は、最適化演算部200の反復解演算回数jが予め設定された反復解演算回数上限値jmに到達したかを判定する(反復解演算回数判定工程)。ステップST41にて、反復解演算回数jが反復解演算回数上限値jmに到達している場合は終了し、反復解演算回数jが反復解演算回数上限値jmに到達していない場合はステップST42に進む。ステップST42にて、反復解演算部25は反復解演算処理を実行し、反復法を用いて連立一次方程式SLEの求解演算をすることにより、評価関数Jを最小化する解すなわち反復解yjを演算する(反復解演算工程)。反復解演算回数jは後述する。
【0028】
連立一次方程式SLEの求解を行う反復法としては、共役勾配法(CG(conjugate gradient)法)、一般化最小残差法(GMRES(generalized minimal residual)法)などのクリロフ部分空間法を用いる手法が知られている。また、反復法を行う前に、数値的な収束性、安定性を高めるため、連立一次方程式SLEに対して前処理を施してもよい。クリロフ部分空間法を用いた反復法、及び、連立一次方程式SLEに対する前処理については、藤野清次・張紹良著、「反復法の数理」、朝倉書店、1996年、又は森正武著、「数値解析 第2版」、共立数学講座12、2002年に、詳細が記載されている。
【0029】
ステップST43にて、ノルム計算部26はステップST42の反復解演算工程で演算された反復解yjに対して、連立一次方程式SLEにおける残差ベクトルrjのノルムである残差ノルムNRjを式(8)のように計算する(ノルム計算工程)。残差ベクトルrjは式(8)の最も右側における記号「||」で挟まれた式で表される。残差ベクトルrjは反復解yjに対する連立一次方程式SLEの左辺のベクトルと連立一次方程式SLEの右辺のベクトルとの差である。
【0030】
ここで添え字jはステップST42の反復解演算工程で実施する連立一次方程式SLEの求解のための演算の反復回数すなわち反復解演算回数を示す。これは、最適化演算部200の反復回数を示す演算反復回数kとは異なる。最適化演算部200のk回目の反復時に、ステップST42の反復解演算工程の反復解演算がj回行われることを意味する。
【0031】
【0032】
ステップST44にて、収束判定部27は反復解yjが収束したかを判定する(収束判定工程)。具体的には、収束判定部27はステップST42のj回目の反復解演算により得られた解すなわち反復解yjに対して、ノルム計算部26で求めた反復解yjに対する連立一次方程式SLEにおける残差ベクトルrjのノルムである残差ノルムNRjが収束判定閾値Nth以下であるかを判定する。ステップST44にて、残差ノルムNRjが収束判定閾値Nth以下である場合、収束判定部27は連立一次方程式SLEの解が求まったと判定し、収束した反復解yjを収束した評価解yとして出力して終了する。ステップST44にて、残差ノルムNRjが収束判定閾値Nth以下でない場合すなわち収束判定閾値Nthよりも大きい場合は、ステップST45を経由してステップST41に戻る。演算回数判定部24は、ステップST45にて反復解演算回数jを1つ増加する更新を行い(反復解演算回数更新工程)、ステップST41の反復解演算回数判定工程を実行する。
【0033】
最適化演算部200は、反復解yjが収束した場合に収束した反復解yjを収束した評価解yとして出力する。最適化演算部200は、反復解演算回数jが反復解演算回数上限値jmに達するまでに反復解yjが収束しなかった場合に、収束しなかった反復解yjを発散していない評価解yとして出力する。なお、後述する緩和パラメータmを適切に設定し、十分に大きいな反復解演算回数上限値jmを設定することで、収束した反復解yjが得られる。緩和パラメータmを適切に設定することで、反復解演算回数jが反復解演算回数上限値jmに達するまでに反復解yjが収束しなかった場合でも、更新部300によるデータ更新によりステップST2の最適化演算工程を繰り返すことで、残差ノルムNRjが小さくなり、収束した反復解yjを得られる。なお、演算反復回数k、反復解演算回数jの上限値である演算反復回数上限値km、反復解演算回数上限値jmを十分大きな値にすることができない場合は、収束した解を得られないこともある。この場合、後述するステップST36の結果出力工程にて解なしと処理される。
【0034】
ステップST44の収束判定工程で用いる収束判定閾値Nthは、解の許容誤差から予め設定される第一閾値Nt1と、緩和パラメータmとステップST22の初期ノルム計算工程により計算された初期残差ノルムNR0に基づいて設定される第二閾値Nt2とを比較して、大きいほうに設定する。すなわち、収束判定閾値Nthは、予め設定される第一閾値Nt1と、緩和パラメータmと初期残差ノルムNR0に基づいて設定される第二閾値Nt2とのいずれかであって大きい方である。第二閾値Nt2については、以下の式(9)のように設定する。
【0035】
【0036】
収束判定閾値Nthを第一閾値Nt1及び第二閾値Nt2の大きい方に設定することで、初期残差ノルムNR0が小さい場合には、ステップST44の収束判定工程において第一閾値Nt1を用いて収束判定を行った解が得られるため、ステップST23の評価解演算工程において、予め設定された第一許容誤差以内の精度の解が得られる。第一閾値Nt1を用いて収束判定を行った解は、十分に最適化された解であり、更新部300の処理を経て最適解を示す出力解waとなり得る。一方、初期残差ノルムNR0が大きいときにはステップST44の収束判定工程において第二閾値Nt2を用いて収束判定を行った解が得られる。第二閾値Nt2を用いて収束判定を行った解は、予め設定された第一許容誤差は超えるものの予め設定された解の第二許容誤差を満たしており、準最適化された解であり、更新部300の処理を経て準最適解を示す出力解waとなり得る。これにより、有効桁数が不足し、桁落ちなど数値誤差の影響によりステップST42の反復解演算工程において残差ベクトルrj又は反復解yjが発散し、ステップST23の評価解演算工程において発散していない評価解yが得られない問題を防止できる。
【0037】
反復法を用いた連立一次方程式SLEの求解では、演算した解すなわち反復解yjに対する残差ベクトルrjを用いて、次の反復時の解を演算する。初めて計算した初期残差ベクトルrinのノルムである初期残差ノルムNR0が大きく、次に計算した残差ベクトルrjのノルムである残差ノルムNRjが急激に小さくなった場合、残差ベクトルrjを示す変数の有効桁数が不足し、次の解を適切に演算することができない場合がある。第二閾値Nt2は初期残差ノルムNR0と、演算に用いる変数の有効桁数を考慮した緩和パラメータmを用いて設定されるため、残差ノルムNRjの数値誤差の影響が大きくなる前に、収束判定を行うことができる。
【0038】
緩和パラメータmは、最適化演算部200の各変数に単精度型変数を用いて演算を行う場合には、第一範囲E1として102~104と設定する。また、緩和パラメータmは、倍精度型変数を用いて演算を行う場合には、第二範囲E2として108~1012と設定する。緩和パラメータmの値に適切な値を設定することにより、ステップST42の反復解演算工程で演算される反復解yj、ステップST43のノルム計算工程で演算される残差ベクトルrjなどの変数について、十分な有効桁数を確保することができる。最適解演算装置81は、有効桁数が十分である場合は通常通りステップST23の評価解演算工程の反復を行い、ステップST44の収束判定工程において第一閾値Nt1を用いて収束判定を行うことで、最適化演算部200により予め設定された許容誤差以内の精度の解を得ることができる。また、最適解演算装置81は、有効桁数が十分でなく、桁落ちなどによる数値誤差が大きくなり、ステップST42の反復解演算工程で演算される反復解yj、及びステップST43のノルム計算工程で演算される残差ベクトルrjが適切でなくなる可能性がある場合には、ステップST44の収束判定工程において第二閾値Nt2を用いて収束判定を行うことで、反復解yj及び残差ベクトルrjが適切でなくなる可能性を防止できる。
【0039】
緩和パラメータmの値が第一範囲E1又は第二範囲E2より小さい場合、ステップST42の反復解演算工程において変数の有効桁数が十分であり、数値誤差の影響が小さく、精度良く演算が実行できているにもかかわらず、ステップST44の収束判定工程において、解の許容誤差から予め設定される第一閾値Nt1ではなく、第二閾値Nt2により収束判定が行われるケースが生じる。その場合、最適化演算部200から出力される評価解yの精度が低下する。また、緩和パラメータmの値が第一範囲E1又は第二範囲E2より大きい場合、有効桁数が十分でなく、桁落ちなどによる数値誤差が大きくなり、しかもステップST44の収束判定工程において収束したと判定されないケースが生じる。ステップST44の収束判定工程において収束したと判定されないので、評価解yは反復解演算回数jが反復解演算回数上限値jmを超えた反復上限演算解として出力される。この場合、更新部300により評価解yが解wk+1に更新され、更新された等式制約集合S2k+1及び解wk+1が最適化演算部200に入力され、最適化演算部200の演算処理すなわちステップST2の最適化演算工程が再度実行される。その場合、ステップST42の反復解演算における反復解yj及びステップST43のノルム計算工程で演算される残差ベクトルrjが適切でなくなり、連立一次方程式SLEの解が求まらず、意図した効果が得られない。なお、緩和パラメータmの値が第一範囲E1又は第二範囲E2に収まっていれば、十分な反復解演算回数上限値jmを設定することで収束した評価解yが得られる。
【0040】
評価解演算部23は、ステップST44の収束判定工程において、収束判定閾値Nthとして第一閾値Nt1を用いて収束判定した場合は、評価解yは予め設定された解の第一許容誤差を満たす解であることを示す中間判定フラグfg1を出力する。また、評価解演算部23は、ステップST44の収束判定工程において、収束判定閾値Nthとして第二閾値Nt2を用いて収束判定した場合は、評価解yは予め設定された解の第二許容誤差を満たす解であることを示す中間判定フラグfg1を出力する。第一許容誤差を満たす解は第一収束解であり、第二許容誤差を満たす解は第二収束解である。例えば、中間判定フラグfg1が2ビットの信号の場合、中間判定フラグfg1が3であれば第一収束解を示し、中間判定フラグfg1が2であれば第二収束解を示すことができる。
【0041】
図1、
図8を用いて、更新部300の機能ブロック及び動作フローを説明する。更新部300は、等式制約集合S2
k及び解w
kを更新し、更新された等式制約集合S2
k+1及び解w
k+1を生成するデータ更新部31、解w
k+1を判定し、判定条件を満たす出力解wa及び判定フラグfg2を生成する演算判定部37を備えている。演算判定部37は、等式制約集合S2
kが更新されたかを判定する集合更新判定部32、演算反復回数kが演算反復回数上限値kmに達したかを判定する更新回数判定部33、判定条件を満たす出力解wa及び判定フラグfg2を生成する結果出力部35を備えている。更新部300は、ステップST31のデータ更新工程、ステップST37の演算判定工程を実行する。ステップST37の演算判定工程は、ステップST32の集合更新判定工程、ステップST33の更新回数判定工程、ステップST35の中間判定フラグ判定工程、ステップST36の結果出力工程から構成されている。ステップST31のデータ更新工程はデータ更新部31により実行され、ステップST37の演算判定工程は演算判定部37により実行される。ステップST32の集合更新判定工程は集合更新判定部32により実行され、ステップST33の更新回数判定工程は更新回数判定部33により実行される。ステップST35の中間判定フラグ判定工程、ステップST36の結果出力工程は、結果出力部35により実行される。
【0042】
更新部300は、不等式制約集合S1、等式制約集合S2k、最適化演算部200に入力された解wk、最適化演算部200にて生成された評価解y、中間判定フラグfg1を入力として取得する。ステップST31のデータ更新工程では等式制約集合S2k及び最適化演算部200に入力された解wkを更新し、更新された等式制約集合S2k+1及び解wk+1を出力する。最適化演算部200は、k+1回目の演算を行う際に入力される等式制約集合S2k及び解wkとして等式制約集合S2k+1及び解wk+1を用いる。等式制約集合S2k+1及び解wk+1は、以下のように決定する。
【0043】
(a)等式制約集合S2kに追加すべき制約がある場合の更新方法(更新方法1)
ステップST31にてデータ更新部31は、最適化演算部200により得られた評価解yが不等式制約集合S1を1つ以上満たさない場合、更新部300により出力される解wk+1を式(10)で定める。ただし、αは、0<α<1、かつ、wk+1が不等式制約集合S1を満たす条件のもと、最も大きい値に設定する。また、ステップST31にてデータ更新部31は、wk+1に関して新たに等式制約を満たす制約を等式制約集合S2kに追加して、更新された等式制約集合S2k+1を生成する。
【0044】
【0045】
(b)等式制約集合S2kに除去すべき制約がある場合の更新方法(更新方法2)
ステップST31にてデータ更新部31は、最適化演算部200により得られた評価解yが不等式制約集合S1をすべて満たす場合、更新部300により出力される解wk+1を式(11)で定める。また、ステップST31にてデータ更新部31は、最適化演算部200により得られた評価解yについて、ラグランジュ乗数λ<0を満たすものが存在する場合、その中で最も絶対値の大きなものに対応する制約を等式制約集合S2kから取り除いて、更新された等式制約集合S2k+1を生成する。
【0046】
【0047】
ステップST31のデータ更新工程にて、データ更新部31は更新方法1又は更新方法2により、等式制約集合S2
k及び解w
kを更新し、更新された等式制約集合S2
k+1及び解w
k+1を生成する。ステップST31のデータ更新工程において、等式制約集合S2
kを更新しない場合、すなわち、等式制約集合S2
kに制約を追加せず、かつ、等式制約集合S2
kから制約を除去しない場合、最適化演算部200により得られた評価解yは不等式制約集合S1を満たし、最適解演算装置81に入力された評価関数Jを最小化する最適解である。このため、最適解演算装置81は演算を終了し、評価解yを最適解の出力解waとして出力される。これはステップST37の演算判定工程の一部の処理の概要である。出力解waが出力される場合は、最適解演算装置81の演算が終了する。すなわち、出力解waが出力される場合は、
図8に示した演算終了であり、
図4に示した終了である。出力解waが出力される場合は言わば完全終了であり、ステップST33にて条件が満たされずに更
新データである等式制約集合S2
k+1及び解w
k+1を出力して終了する場合は更新終了である。更新終了の場合は、最適解演算装置81はステップST2に戻って最適化演算工程を実行する。ステップST37の演算判定工程を詳しく説明する。
【0048】
ステップST32の集合更新判定工程にて、集合更新判定部32は等式制約集合S2kが更新されたか、具体的には等式制約集合S2kと等式制約集合S2k+1とが異なるかを判定する。等式制約集合S2kと等式制約集合S2k+1とが異なる場合はステップST33に進み、等式制約集合S2kと等式制約集合S2k+1とが異なっていない場合すなわち等しい場合はステップST35に進む。
【0049】
ステップST33の更新回数判定工程にて、更新回数判定部33は演算反復回数kが予め設定された演算反復回数上限値kmに達しているかを判定する。演算反復回数kが演算反復回数上限値kmに達している場合はステップST35に進み、演算反復回数kが演算反復回数上限値kmに達していない場合は、更新部300はデータ更新部31により生成された等式制約集合S2k+1及び解wk+1を最適化演算部200に出力してステップST3の更新工程を終了する。前述したように、この場合の終了は更新終了である。演算反復回数kが演算反復回数上限値kmに達している場合は、最適解演算装置81は反復上限到達として演算を終了する。演算反復回数kが演算反復回数上限値kmに達している場合は、等式制約集合S2kの更新した回数が上限値に達したということもできる。この場合は完全終了である。
【0050】
ステップST35の中間判定フラグ判定工程にて、ステップST32の集合更新判定工程から進んできた場合に、結果出力部35は中間判定フラグfg1の情報を判定する。中間判定フラグfg1が第一収束解を示す場合には、結果出力部35は最適解を示す判定フラグfg2を生成する。また、中間判定フラグfg1が第二収束解を示す場合には、結果出力部35は準最適解を示す判定フラグfg2を生成する。前述したように、予め設定された解の第一許容誤差を満たす評価解yは、十分に最適化された解であり、すなわち最適解である。また、予め設定された解の第二許容誤差を満たす評価解yは、準最適化された解であり、すなわち準最適解である。より具体的には、ステップST44の収束判定工程の収束判定閾値Nthが第一閾値Nt1の場合における評価解yが最適解であり、ステップST44の収束判定工程の収束判定閾値Nthが第二閾値Nt2の場合における評価解yが準最適解である。例えば、判定フラグfg2が2ビットの信号の場合、判定フラグfg2が3であれば最適解を示し、判定フラグfg2が2であれば準最適解を示すことができる。
【0051】
ステップST35の中間判定フラグ判定工程にて、ステップST33の更新回数判定工程から進んできた場合に、結果出力部35は中間判定フラグfg1の情報を判定することなく、ステップST36の結果出力工程にて、解なしを示す判定フラグfg2を出力する。この場合、通常の出力解waは出力されない。例えば、解なしを示す判定フラグfg2は1である。この場合、通常の出力解waは出力されないが、空(ヌル)のデータとして例えば0を出力してもよい。
【0052】
ステップST36の結果出力工程にて、ステップST32の集合更新判定工程から進んできた場合に、結果出力部35は出力解wa及び判定フラグfg2を出力する。中間判定フラグfg1が第一収束解を示す場合には、評価解yを最適解の出力解waすなわち最適解wg1として出力し、最適解を示す判定フラグfg2を出力する。中間判定フラグfg1が第二収束解を示す場合には、評価解yを準最適解の出力解waすなわち準最適解wg2として出力し、準最適解を示す判定フラグfg2を出力する。出力解waとして出力される最適解wg1及び準最適解wg2は、収束した解である。最適解wg1は、ステップST32の集合更新判定工程にて等式制約集合の更新が不要と判定され、かつ収束判定閾値Nthが第一閾値Nt1である場合に評価解yが最適解と決定され、最適化問題に対する解である出力解waとして出力された解であるということもできる。準最適解wg2は、ステップST32の集合更新判定工程にて等式制約集合の更新が不要と判定され、かつ収束判定閾値Nthが第二閾値Nt2である場合に評価解yが準最適解と決定され、評価解yが最適解wg1と決定されない場合に最適化問題に対する解である出力解waとして出力された解ということもできる。
【0053】
このように、実施の形態1の最適化問題の最適解演算装置81は、最適化演算部200で演算された評価解yを用いて、更新部300において等式制約集合S2k及び解wkを更新することを繰り返し、評価関数Jを最小化する最適解又は準最適解を求める。そのため、初期条件生成部100により生成された実行可能初期解w0に基づいて計算された初期残差ノルムNR0、残差ノルムNRjが大きい場合でも、十分に大きいな反復解演算回数上限値jmを設定することで、最適化演算部200がステップST44の収束判定工程において第二閾値Nt2を用いて収束判定を行った評価解yすなわち第二閾値Nt2を用いて収束した評価解yを更新部300に出力することができる。また、実施の形態1の最適化問題の最適解演算装置81は、最適化演算部200から出力された評価解yに基づいて等式制約集合S2k及び解wkを更新し、再び最適化演算部200によりステップST2の最適化演算工程を実行する。つまり、実施の形態1の最適化問題の最適解演算装置81は、実行可能初期解w0に基づいて計算された初期残差ノルムNR0、残差ノルムNRjが大きい場合でも、最適化演算部200により新たな連立一次方程式SLEを生成し、再度連立一次方程式SLEの求解演算を行う。
【0054】
ステップST2の最適化演算工程とステップST3の更新工程を繰り返すことにより、最適化演算部200に入力される解wkに基づいて計算された初期残差ノルムNR0、残差ノルムNRjが小さくなっていき、最適化演算部200はステップST44の収束判定工程において第一閾値Nt1を用いて収束判定を行った評価解yすなわち第一閾値Nt1を用いて収束した評価解yを更新部300に出力することができる。したがって、実施の形態1の最適化問題の最適解演算装置81は、ステップST2の最適化演算工程とステップST3の更新工程とを繰り返すことにより、第一閾値Nt1を用いて収束した解すなわち予め設定された許容範囲内の精度の最適解が得られやすくなる。
【0055】
つまり、実施の形態1の最適解演算装置81は、初期残差ベクトルrin、残差ベクトルrjに対する演算誤差の影響が大きくなる前に、第二閾値Nt2で収束判定を行い、その時点の評価解yを用いて再度最適化演算部200によりステップST2の最適化演算工程を実行する。このことにより、実施の形態1の最適解演算装置81は、再度ステップST2の最適化演算工程が実行される際に、ステップST22の初期ノルム計算工程にて計算される初期残差ノルムNR0を小さくすることができる。これは、再計算の際の入力初期解である解wkが最適解に近いことを意味し、初期残差ベクトルrin、残差ベクトルrjに対する演算誤差の影響が小さくなるため、第一閾値Nt1を用いて収束した解すなわち予め設定された許容範囲内の精度の最適解が得られやすくなる。また、再度ステップST2の最適化演算工程が実行される際に、第二閾値Nt2を用いる場合であっても第二閾値Nt2も小さく設定されるため、実施の形態1の最適化問題の最適解演算装置81は、演算を繰り返すことで、第一閾値Nt1による収束判定により解が得られることとなる。
【0056】
前述したように、更新部300はステップST32の集合更新判定工程にて、等式制約集合S2kに等式制約の追加又は除去を行わない場合には、不等式制約集合S1をすべて満たし、かつ、評価関数Jを最小化する最適解の出力解waとして、最適化演算部200にて得られた評価解yを出力する。出力解waは、ステップST44の収束判定工程において収束判定閾値Nthが第一閾値Nt1である場合の最適解wg1と、ステップST44の収束判定工程において収束判定閾値Nthが第二閾値Nt2である場合の準最適解wg2とを含んでいる。準最適解wg2は、連立一次方程式SLEの残差ノルムNRjは予め設定された解の許容誤差から設定される第一閾値Nt1より大きいが、更新部300は準最適解を示す判定フラグfg2を出力するので、最適解演算装置81により得られた出力解waが予め設定された解の許容誤差精度すなわち解の第一許容誤差以内の精度は満たしていない解であることを知ることができる。
【0057】
実施の形態1の最適化問題の最適解演算装置81を備えた最適化問題を解く必要がある装置は、最適化問題の最適解演算装置81が出力した出力解waについて、準最適解であることを示す判定フラグfg2を得た場合に、その出力解waを採用するかどうかの確認をすることが可能となる。
【0058】
実施の形態1の最適化問題の最適解演算装置81は、残差ベクトルrjの演算誤差が影響する前に、評価解yの収束判定を行うことが可能となる。すなわち、実施の形態1の最適化問題の最適解演算装置81は、残差ベクトルrjに含まれる演算誤差が最適解の演算に影響する状況において収束した解を出力解waとして得ることができる。
【0059】
なお、今まで実施の形態1の最適化問題の最適解演算装置81は、不等式制約を含んだ最適化問題を対象として説明した。最適化問題の制約が等式制約のみの場合である場合においても、実施の形態1の最適化問題の最適解演算装置81は、残差ベクトルrjの演算誤差が影響する前に、評価解yの収束判定を行うことが可能となる。すなわち、最適化問題の制約が等式制約のみの場合である場合においても、実施の形態1の最適化問題の最適解演算装置81は、残差ベクトルに含まれる演算誤差が最適解の演算に影響する状況において収束した解を得ることができる。この場合、最適化演算部200に入力される入力データは実行可能初期解w0及びインターフェース82を介して入力される等式制約集合S2である。また、初期条件生成部100の等式制約集合生成部12、更新部300のデータ更新部31、集合更新判定部32及び更新回数判定部33は不要となる。なお、最適化演算部200において結果出力部35を取り込めば、更新部300は不要になる。
【0060】
また、実施の形態1の最適化問題の最適解演算装置81では、更新部300が
図8に示した動作フローの第一例を実行する例を説明した。しかし、ステップST33の更新回数判定工程は、演算反復回数kのみを用いた場合に限定されない。例えば、ステップST23の評価解演算工程で実行する連立一次方程式SLEの求解のための反復解演算回数jを考慮してもよい。例えば、演算反復回数kと反復解演算回数jとの和である演算合計回数ktが演算合計回数上限値ktmに到達した場合に、更新終了又は演算終了するようにしてもよい。このようにした更新部300における動作フローの第二例を
図9に示した。また、演算反復回数kと反復解演算回数jのそれぞれに対して反復回数上限値を設定して監視してもよい。このようにした更新部300における動作フローの第三例を
図10に示した。更新部300が動作フローの第二例又は第三例を実行することで、実施の形態1の最適化問題の最適解演算装置81は、ステップST2の最適化演算工程の反復回数が増加して演算時間がかかることにより所定周期で演算が完了しなくなることを防止することが可能となる。
【0061】
図9に示した更新部300における動作フローの第二例は、
図8に示した動作フローの第一例におけるステップST33の更新回数判定工程がステップST38の更新回数判定工程に変更された点で異なる。
図8に示した動作フローの第一例と異なる部分を主に説明する。更新部300は、ステップST31のデータ更新工程、ステップST37の演算判定工程を実行する。ステップST37の演算判定は、ステップST32の集合更新判定工程、ステップST38の更新回数判定工程、ステップST35の中間判定フラグ判定工程、ステップST36の結果出力工程から構成されている。ステップST38の更新回数判定工程は更新回数判定部33により実行される。ステップST32の集合更新判定工程にて、等式制約集合S2
kと等式制約集合S2
k+1とが異なっている場合はステップST38に進む。
【0062】
ステップST38の更新回数判定工程にて、更新回数判定部33は演算反復回数kと反復解演算回数jとの和である演算合計回数ktが予め設定された演算合計回数上限値ktmに達しているかを判定する。演算合計回数ktが演算合計回数上限値ktmに達している場合はステップST35に進み、演算合計回数ktが演算合計回数上限値ktmに達していない場合は、更新部300はデータ更新部31により生成された等式制約集合S2k+1及び解wk+1を最適化演算部200に出力してステップST3の更新工程を終了する。この場合は更新終了である。演算合計回数ktが演算合計回数上限値ktmに達している場合は、最適解演算装置81は反復上限到達として演算を終了する。演算合計回数ktが演算合計回数上限値ktmに達している場合は、等式制約集合S2kの更新した回数が上限値に達したということもできる。この場合は、完全終了である。
【0063】
図10に示した更新部300における動作フローの第三例は、
図8に示した動作フローの第一例におけるステップST33の更新回数判定工程がステップST39の更新回数判定工程に変更された点で異なる。
図8に示した動作フローの第一例と異なる部分を主に説明する。更新部300は、ステップST31のデータ更新工程、ステップST37の演算判定工程を実行する。ステップST37の演算判定は、ステップST32の集合更新判定工程、ステップST39の更新回数判定工程、ステップST35の中間判定フラグ判定工程、ステップST36の結果出力工程から構成されている。ステップST39の更新回数判定工程は更新回数判定部33により実行される。ステップST32の集合更新判定工程にて、等式制約集合S2
kと等式制約集合S2
k+1とが異なっている場合はステップST39に進む。
【0064】
ステップST39の更新回数判定工程にて、更新回数判定部33は演算反復回数kが予め設定された演算反復回数上限値kmに達しているか又は反復解演算回数jが予め設定された反復解演算回数上限値jmaに達しているかを判定する。演算反復回数kが演算反復回数上限値kmに達している場合又は反復解演算回数jが反復解演算回数上限値jmaに達している場合はステップST35に進み、演算反復回数kが演算反復回数上限値kmに達していない場合又は反復解演算回数jが反復解演算回数上限値jmaに達していない場合は、更新部300はデータ更新部31により生成された等式制約集合S2k+1及び解wk+1を最適化演算部200に出力してステップST3の更新工程を終了する。この場合は更新終了である。演算反復回数kが演算反復回数上限値kmに達している場合又は反復解演算回数jが反復解演算回数上限値jmaに達している場合は、最適解演算装置81は反復上限到達として演算を終了する。演算反復回数kが演算反復回数上限値kmに達している場合、又は反復解演算回数jが反復解演算回数上限値jmaに達している場合は、等式制約集合S2kの更新した回数が上限値に達したということもできる。この場合は完全終了である。
【0065】
以上のように、実施の形態1の最適化問題の最適解演算装置81は、入力された最適化問題に対する解を更新部300による処理を経由して演算する最適化問題の最適解演算装置である。最適化問題の最適解演算装置81は、最適化問題に関する不等式制約の集合である不等式制約集合S1、評価関数J、初期解w0inを入力として取得し、初期解w0inに基づいて不等式制約集合S1の不等式制約をすべて満たす実行可能初期解w0を生成し、実行可能初期解w0に対して、不等式制約集合S1から等号が成立している等式制約の集合である等式制約集合S2を生成する初期条件生成部100と、初回の場合は実行可能初期解w0であり、次回以降の場合は更新部300により更新された解wk+1である入力解(解wk)に対して、等式制約集合S2k(等式制約集合S2又は等式制約集合S2k+1)と評価関数Jから生成される連立一次方程式SLEの求解演算を行い、評価関数Jを最小化又は最大化する解である評価解yを演算する最適化演算部200と、最適化演算部200により出力された評価解yを判定すると共に、等式制約集合S2kから評価解yが満たすべき制約を更新して更新された等式制約集合S2k+1と、前回の入力解(解wk)及び評価解yに基づいて更新された入力解(解wk+1)とを生成する更新部300と、を備えている。最適化演算部200は、入力解(解wk)に対する連立一次方程式SLEの左辺のベクトルと連立一次方程式SLEの右辺のベクトルとの差である初期残差ベクトルrinから初期残差ノルムNR0を計算する初期ノルム計算部22と、反復法を実行し、連立一次方程式SLEの反復回数(反復解演算回数j)毎の解である反復解yjを演算する反復解演算部25と、反復解演算部25にて演算された反復解yjに対する連立一次方程式SLEの左辺のベクトルと連立一次方程式の右辺のベクトルとの差である残差ベクトルrjから残差ノルムNRjを計算するノルム計算部26と、予め設定された第一閾値Nt1と、緩和パラメータm及び初期残差ノルムNR0に基づいて設定される第二閾値Nt2とのいずれかであって大きい方である収束判定閾値Nth以下に残差ノルムNRjがなった場合に反復解yjが収束したと判定し、収束したと判定された反復解yjを評価解yとして出力する収束判定部27と、を備えている。更新部300は、等式制約集合S2kの更新が不要と判定し、かつ収束判定閾値Nthが第一閾値Nt1である場合に評価解yを最適解wg1と決定し、最適解wg1を最適化問題に対する解である出力解waとして出力する。実施の形態1の最適化問題の最適解演算装置81は、この構成により、収束判定部27が予め設定された第一閾値Nt1と、緩和パラメータm及び初期残差ノルムNR0に基づいて設定される第二閾値Nt2とのいずれかであって大きい方である収束判定閾値Nth以下に残差ノルムNRjがなった場合に反復解yjが収束したと判定し、収束したと判定された反復解yjを評価解yとして出力し、更新部300が等式制約集合S2kの更新が不要と判定し、かつ収束判定閾値Nthが第一閾値Nt1である場合に評価解を最適解と決定するので、残差ベクトルrjに含まれる演算誤差が解の演算に影響する状況において収束した解を得ることができる。
【0066】
実施の形態1の最適化問題の最適解演算方法は、入力された最適化問題に対する解を更新工程による処理を経由して演算する最適化問題の最適解演算方法である。最適化問題の最適解演算方法は、最適化問題に関する不等式制約の集合である不等式制約集合S1、評価関数J、初期解w0inを入力として取得し、初期解w0inに基づいて不等式制約集合S1の不等式制約をすべて満たす実行可能初期解w0を生成し、実行可能初期解w0に対して、不等式制約集合S1から等号が成立している等式制約の集合である等式制約集合S2を生成する初期条件生成工程と、初回の場合は実行可能初期解w0であり、次回以降の場合は更新部300により更新された解wk+1である入力解(解wk)に対して、等式制約集合S2k(等式制約集合S2又は等式制約集合S2k+1)と評価関数Jから生成される連立一次方程式SLEの求解演算を行い、評価関数Jを最小化又は最大化する解である評価解yを演算する最適化演算工程と、最適化演算工程により出力された評価解yを判定すると共に、等式制約集合S2kから評価解yが満たすべき制約を更新して更新された等式制約集合S2k+1と、前回の入力解(解wk)及び評価解yに基づいて更新された入力解(解wk+1)とを生成する更新工程と、を含んでいる。最適化演算工程は、入力解(解wk)に対する連立一次方程式SLEの左辺のベクトルと連立一次方程式SLEの右辺のベクトルとの差である初期残差ベクトルrinから初期残差ノルムNR0を計算する初期ノルム計算工程と、反復法を実行し、連立一次方程式SLEの反復回数(反復解演算回数j)毎の解である反復解yjを演算する反復解演算工程と、反復解演算工程にて演算された反復解yjに対する連立一次方程式SLEの左辺のベクトルと連立一次方程式の右辺のベクトルとの差である残差ベクトルrjから残差ノルムNRjを計算するノルム計算工程と、予め設定された第一閾値Nt1と、緩和パラメータm及び初期残差ノルムNR0に基づいて設定される第二閾値Nt2とのいずれかであって大きい方である収束判定閾値Nth以下に残差ノルムNRjがなった場合に反復解yjが収束したと判定し、収束したと判定された反復解yjを評価解yとして出力する収束判定工程と、を含んでいる。更新工程は、等式制約集合S2kの更新が不要と判定し、かつ収束判定閾値Nthが第一閾値Nt1である場合に評価解yを最適解wg1と決定し、最適解wg1を最適化問題に対する解である出力解waとして出力する。実施の形態1の最適化問題の最適解演算方法は、この構成により、収束判定工程において予め設定された第一閾値Nt1と、緩和パラメータm及び初期残差ノルムNR0に基づいて設定される第二閾値Nt2とのいずれかであって大きい方である収束判定閾値Nth以下に残差ノルムNRjがなった場合に反復解yjが収束したと判定し、収束したと判定された反復解yjを評価解yとして出力し、更新工程において等式制約集合S2kの更新が不要と判定し、かつ収束判定閾値Nthが第一閾値Nt1である場合に評価解を最適解と決定するので、残差ベクトルrjに含まれる演算誤差が解の演算に影響する状況において収束した解を得ることができる。
【0067】
実施の形態2.
図11は実施の形態2に係る最適化問題の最適解演算装置における機能ブロックの第一例を示す図であり、
図12は実施の形態2に係る最適化問題の最適解演算装置における機能ブロックの第二例を示す図である。実施の形態1の最適解演算装置81では、ステップST35の中間判定フラグ判定工程にて、ステップST33の更新回数判定工程から進んできた場合に、結果出力部35は中間判定フラグfg1の情報を判定しない例を説明した。実施の形態2の最適解演算装置81は、ステップST33の更新回数判定工程から進んできた場合にも、結果出力部35が中間判定フラグfg1の情報を判定して反復上限に達した解を示す出力解waを出力する例である。
図11に示した実施の形態2の最適化問題の最適解演算装置81の第一例では、出力解waとして、最適解wg1、準最適解wg2以外に第一反復上限解wu1、第二反復上限解wu2が出力される。
図12に示した実施の形態2の最適化問題の最適解演算装置81の第二例では、出力解waとして、最適解wg1、準最適解wg2以外に反復上限解wuが出力される。実施の形態2の最適解演算装置81は、実施の形態1の最適解演算装置81とは更新部300の結果出力部35の動作が異なる。実施の形態1の最適解演算装置81と異なる部分を主に説明する。
【0068】
図8に示した更新部300における動作フローの第一例において、ステップST32の集合更新判定工程からステップST35の中間判定フラグ判定工程に進む場合には、仮に最適化演算部200にて演算しても入力データが更新されてないので現状の解から改善する解は得られない。この場合は、言わば完全収束解ということもできる。ステップST33の更新回数判定工程を経てステップST35の中間判定フラグ判定工程に進む場合は、ステップST32の集合更新判定工程にてデータ更新が行われたので、現状の解から改善
できる場合であるが、ステップST44の収束判定工程において中間判定フラグfg1が第一収束解又は第二収束解を含んでいる場合もある。この第一収束解は、第一閾値Nt1を満たしているので、予め設定された解の第一許容誤差を満たす解であり、十分に最適化された解である。第二収束解は、第一許容誤差よりも緩い予め設定された解の第二許容誤差を満たす解であり、準最適化された解である。
【0069】
ステップST35の中間判定フラグ判定工程にて、結果出力部35は中間判定フラグfg1の情報を判定する。結果出力部35は、ステップST32の集合更新判定工程から進んできており、かつ中間判定フラグfg1が第一収束解を示す場合には、最適解を示す判定フラグfg2を生成する。結果出力部35は、ステップST32の集合更新判定工程から進んできており、かつ中間判定フラグfg1が第二収束解を示す場合には、準最適解を示す判定フラグfg2を生成する。結果出力部35は、ステップST33の更新回数判定工程から進んできた場合には、次のように判定し、判定フラグfg2を生成する。
【0070】
結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第一収束解を示す場合には、第一反復上限解を示す判定フラグfg2を生成する。結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第二収束解を示す場合には、第二反復上限解を示す判定フラグfg2を生成する。例えば、判定フラグfg2が3ビットの信号の場合、判定フラグfg2が7であれば最適解を示し、判定フラグfg2が6であれば準最適解を示すことができる。また、判定フラグfg2が3であれば第一反復上限解を示し、判定フラグfg2が2であれば第二反復上限解を示すことができる。
【0071】
ステップST36の結果出力工程にて、結果出力部35は出力解wa及び判定フラグfg2を出力する。結果出力部35は、ステップST32の集合更新判定工程から進んできており、かつ中間判定フラグfg1が第一収束解を示す場合には、評価解yを最適解の出力解waすなわち最適解wg1として出力し、最適解を示す判定フラグfg2を出力する。結果出力部35は、ステップST32の集合更新判定工程から進んできており、かつ中間判定フラグfg1が第二収束解を示す場合には、評価解yを準最適解の出力解waすなわち準最適解wg2として出力し、準最適解を示す判定フラグfg2を出力する。結果出力部35は、ステップST33の更新回数判定工程から進んできた場合には、次のように出力解wa及び判定フラグfg2を出力する。
【0072】
結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第一収束解を示す場合には、評価解yを第一反復上限解の出力解waすなわち第一反復上限解wu1として出力し、第一反復上限解を示す判定フラグfg2を出力する。結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第二収束解を示す場合には、評価解yを第二反復上限解の出力解waすなわち第二反復上限解wu2として出力し、第二反復上限解を示す判定フラグfg2を出力する。出力解waとして出力される最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2は、いずれも収束した解である。第一反復上限解wu1は、ステップST33の更新回数判定工程を経由して等式制約集合S2kとの更新した回数が上限値に達した場合に、収束判定閾値Nthが第一閾値Nt1である場合に評価解yが第一反復上限解と決定され、評価解yが最適解wg1又は準最適解wg2と決定されない場合に最適化問題に対する解である出力解waとして出力された解ということもできる。第二反復上限解wu2は、ステップST33の更新回数判定工程を経由して等式制約集合S2kとの更新した回数が上限値に達した場合に、収束判定閾値Nthが第二閾値Nt2である場合に評価解yが第二反復上限解と決定され、評価解yが最適解wg1又は準最適解wg2と決定されない場合に最適化問題に対する解である出力解waとして出力された解ということもできる。
【0073】
ステップST35の中間判定フラグ判定工程にて、中間判定フラグfg1が第一収束解又は第二収束解を示さない場合は、結果出力部35は第一収束解又は第二収束解が得られなかったと判定し、ステップST36の結果出力工程にて、解なしを示す判定フラグfg2を出力する。この場合、出力解waは出力されない。例えば、解なしを示す判定フラグfg2は1である。
【0074】
実施の形態2の第一の最適解演算装置81は、最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2のいずれかを出力解waとして出力するので、実施の形態2の第一の最適解演算装置81から出力解waを取得する装置又は後段の処理では、出力解waを最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2として把握することが可能となる。このため、実施の形態2の第一の最適解演算装置81から出力解waを取得する装置又は後段の処理では、その出力解waを採用するかどうかの確認ができ、採用する出力解waに応じて処理を変更することが可能となる。
【0075】
実施の形態2の最適解演算装置81の第一例として、最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2のいずれかを出力解waとして出力する例を説明したが、
図12に示した実施の形態2の最適解演算装置81の第二例のように第一反復上限解wu1、第二反復上限解wu2の代わりに反復上限解wuを出力してもよい。実施の形態2の最適解演算装置81の第一例と異なる部分を主に説明する。
【0076】
ステップST35の中間判定フラグ判定工程にて、結果出力部35は、ステップST33の更新回数判定工程から進んできた場合には、次のように判定し、判定フラグfg2を生成する。結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第一収束解又は第二収束解を示す場合には、反復上限解を示す判定フラグfg2を生成する。例えば、判定フラグfg2が3ビットの信号の場合、判定フラグfg2が7であれば最適解を示し、判定フラグfg2が6であれば準最適解を示し、判定フラグfg2が4であれば反復上限解を示すことができる。
【0077】
ステップST36の結果出力工程にて、ステップST33の更新回数判定工程から進んできた場合には、次のように出力解wa及び判定フラグfg2を出力する。結果出力部35は、ステップST33の更新回数判定工程から進んできており、かつ中間判定フラグfg1が第一収束解又は第二収束解を示す場合には、評価解yを反復上限解の出力解waすなわち反復上限解wuとして出力し、反復上限解を示す判定フラグfg2を出力する。出力解waとして出力される最適解wg1、準最適解wg2、反復上限解wuは、いずれも収束した解である。反復上限解wuは、ステップST33の更新回数判定工程を経由して等式制約集合S2kとの更新した回数が上限値に達した場合に、収束判定閾値Nthが第一閾値Nt1又は第二閾値Nt2である場合に評価解yが反復上限解と決定され、評価解yが最適解wg1又は準最適解wg2と決定されない場合に最適化問題に対する解である出力解waとして出力された解ということもできる。
【0078】
実施の形態2の第二の最適解演算装置81は、最適解wg1、準最適解wg2、反復上限解wuのいずれかを出力解waとして出力するので、実施の形態2の第二の最適解演算装置81から出力解waを取得する装置又は後段の処理では、出力解waを最適解wg1、準最適解wg2、反復上限解wuとして把握することが可能となる。このため、実施の形態2の第二の最適解演算装置81から出力解waを取得する装置又は後段の処理では、その出力解waを採用するかどうかの確認ができ、採用する出力解waに応じて処理を変更することが可能となる。
【0079】
図8の更新部300における動作フローの第一例を用いて、実施の形態2の最適解演算装置81について説明した。しかし、実施の形態2の最適解演算装置81は、更新部300が
図9又は
図10に示した動作フローで動作してもよい。更新部300が
図9の動作フローで動作する場合は、ステップST33の更新回数判定工程をステップST38の更新回数判定工程に読み替える。また、更新部300が
図10の動作フローで動作する場合は、ステップST33の更新回数判定工程をステップST39の更新回数判定工程に読み替える。この場合でも、実施の形態2の第一の最適解演算装置81は、最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2のいずれかを出力解waとして出力するので、実施の形態2の第一の最適解演算装置81から出力解waを取得する装置又は後段の処理では、出力解waを最適解wg1、準最適解wg2、第一反復上限解wu1、第二反復上限解wu2として把握することが可能となる。また、実施の形態2の第二の最適解演算装置81は、最適解wg1、準最適解wg2、反復上限解wuのいずれかを出力解waとして出力するので、実施の形態2の第二の最適解演算装置81から出力解waを取得する装置又は後段の処理では、出力解waを最適解wg1、準最適解wg2、反復上限解wuとして把握することが可能となる。
【0080】
なお、本願は、様々な例示的な実施の形態及び実施例が記載されているが、1つ、または複数の実施の形態に記載された様々な特徴、態様、及び機能は特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも1つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも1つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
【符号の説明】
【0081】
25…反復解演算部、26…ノルム計算部、27…収束判定部、35…結果出力部、81…最適化問題の最適解演算装置、100…初期条件生成部、200…最適化演算部、300…更新部、fg2…判定フラグ、J…評価関数、j…反復解演算回数、jma…反復解演算回数上限値、k…演算反復回数、km…演算反復回数上限値、kt…演算合計回数、ktm…演算合計回数上限値、m…緩和パラメータ、NR0…初期残差ノルム、NRj…残差ノルム、Nt1…第一閾値、Nt2…第二閾値、Nth…収束判定閾値、rin…初期残差ベクトル、rj…残差ベクトル、S1…不等式制約集合、S2…等式制約集合、S2k…等式制約集合、S2k+1…等式制約集合、SLE…連立一次方程式、w0…実行可能初期解、w0in…初期解、wa…出力解、wg1…最適解、wg2…準最適解、wk…解、wk+1…解、wu…反復上限解、wu1…第一反復上限解、wu2…第二反復上限解、y…評価解、yj…反復解