IPOPTを使った最適化
IPOPT (Interior Point OPTimizer)は,数理最適化問題の局所解を求めるために設計された,大規模非線形最適化のためのソフトウェアパッケージである.
IPOPTLink はWolfram LibraryLink を使ってIPOPT関数にリンクする,Wolframシステムのアプリケーションである.IPOPTLink はIPOPTMinimizeやParametricIPOPTMinimize等,さまざまな関数を提供する.これらの関数はパラメータを使って,または使わないで極小値を求めるのに使用できる.これらはWolfram言語のFindMinimum等の最適化関数で自動的に使用される.
しかし,IPOPTLink の関数を直接呼び出して,IPOPTに実装された機能をより柔軟に使用することもできる.
IPOPTMinimize | IPOPTを使って極小値を計算する |
IPOPTData | IPOPTMinimizeが返したデータ式 |
IPOPTMinValue | IPOPTData式から目的関数の極小値を取得する |
IPOPTArgMin | IPOPTData式から極小値の位置を取得する |
ParametricIPOPTMinimize | IPOPTを使ってパラメータを伴う極小値を計算する |
IPOPTはの約条件付きの数学的な 次元制最適化問題の解を求めるように設計されている.条件付き最適化問題は,目的関数と呼ばれる,複数の変数の実数値の関数 を制約条件の下で極小化する問題である.制約条件として,変数を制約する条件か,関数で定義される制約条件の2種類を指定することができる.変数を制約する条件は, (ただし x=(x1,…,xn))という形である.関数の制約条件は,という形である.
IPOPTMinimizeは,制約条件の種類によって,次の3つの方法で使用できる:
IPOPTMinimize[f(x),x,x0] | 制約条件のない極小化 |
IPOPTMinimize[f(x),x,x0,xbounds] | 境界の制約条件付き極小化 |
IPOPTMinimize[f(x),x,x0,xbounds,g(x),gbounds] | 関数の制約条件と変数の境界による,制約条件付き極小化 |
制約条件なしの極小化
IPOPTMinimize[f,{x1,…},{x1i0,…}] | 制約条件のない極小化 |
IPOPTLink を使用するためには,パッケージをロードする必要がある.
IPOPTMinimizeを使ってIPOPTソルバを呼び出す.目的関数を ,引数変数を{},初期値を{}とする.
IPOPTMinimizeはIPOPTDataオブジェクトを返す.オブジェクトには極小値が含まれる.
IPOPTDataオブジェクトは,極小値が見付かった座標点も含んでいる.
境界の制約付き極小化
IPOPTMinimize[f,{x1,…},{x1i0,…},{{x1min,x1max},…}] | 境界の制約付き極小化 |
x が区間 に制限された の極小値を,から始めて求める.ここでもIPOPTMinimizeを使い,目的関数を ,引数変数を ,初期値を とする.変数の境界も指定する必要がある:
IPOPTMinimizeはIPOPTDataオブジェクトを返す.オブジェクトには極小値と極小化点が含まれる.
制約条件付き関数の極小化
IPOPTMinimize[f,{x1,…},{x1i0,…},{{x1min,x1max},…},{g1,…},{{g1min,g1max},…}] | 関数の制約条件と変数の境界による,制約条件付き極小化 |
関数の制約条件と変数の境界による制約条件付き極小化IPOPTMinimize
を円上で極小化する.制約関数は であり,上下制約境界は1に等しい.
ParametricIPOPTMinimize
ParametricIPOPTMinimizeは問題設定において任意の場所にパラメータが存在する極小化問題を設定する際に使用できる.最適化問題はその後,異なるパラメータ値で繰り返し解くことができる.ParametricIPOPTMinimizeはIPOPTMinimizeの引数すべてに加え,最後にパラメータ変数引数{p1,…}を取る.
ParametricIPOPTMinimize[f,{x1,…},{x1i0,…},{{x1min,x1max},…},{g1,…},{{g1min,g1max},…},{p1,…}] | 制約条件付きのパラメトリックな極小化 |
制約条件付きのパラメトリックな極小化ParametricIPOPTMinimize
このステップは関数の前処理とすべての必要な微分を行い,ParametricFunctionを返してパラメータ値を待機する.
実際の極小化はパラメータ値を与えた後に始まり,解はIPOPTData式に保存される.
複数のパラメータ値についてIPOPTMinimizeの代りにParametricIPOPTMinimizeを使うと,目的関数と制約関数の処理,および必要なすべての微分を繰り返すことによるオーバーヘッドを削減する.これは複雑さによっては大幅な削減となり得る.
IPOPTMinimizeを使った極大化
工学における例
カムの曲率と半径に制約条件があるとき,凸面カムが1回転する際に,弁の開口面積を最大化するカムを設計する.問題設定はCOPSテストスイートからのものであり,以下にまとめる.
カムの形状は角度6π/5においては半径 rmin の円周であり,設計変数 ri,i=1,…,n は,角度2π/5に均等に配分された角度 θ におけるカムの半径を表す.残りの角度2π/5は,これと対象となる.
以下の制約条件を指定する.各半径 ri は区間{rmin, rmax}において制約される.また,A(ri-1,ri+1)≤A(ri-1,ri)+ A(ri,ri+1)で表される凸面の制約条件もある.ここでA(ri,rj)は原点とカム面の点 ri, rj で定義される三角形の面積である.さらにパラメータ α に依存する曲率についての条件-α ≤(ri+1-ri)/θ ≤α もある.
目的関数を定義するために,弁の開口面積と設計変数 ri には π rv 2(r1+…+rn)/n という単純な線形関係があると仮定する.ここで rv は弁の形状に関連する定数である.
これは,パラメータ rmin,rmax, α のパラメトリックな問題として設定することができる.設計変数には n=20 を選び,と仮定する.
参考文献
IPOPTはAndreas Wächter氏,Carl Laird氏他によってCOIN-OR Initiativeの一環として書かれたものである.これは以下の論文に基づいている.A. Wächter and L. T. Biegler, 「On the Implementation of a Primal-Dual Interior Point Filter Line Search Algorithm for Large-Scale Nonlinear Programming」,Mathematical Programming 106(1),2006,pp. 25-57.