ParametricIPOPTMinimize[f,{x1,…},{x1i0,…},{{x1min,x1max},…},{g1,…},{{g1min,g1max},…},pars]
制約条件xj min≤xj≤xj max,gi min≤gi≤gi max,パラメータ pars において,x についての f の極小値を x=x0 から始めて数値的に検索する.
ParametricIPOPTMinimize
ParametricIPOPTMinimize[f,{x1,…},{x1i0,…},{{x1min,x1max},…},{g1,…},{{g1min,g1max},…},pars]
制約条件xj min≤xj≤xj max,gi min≤gi≤gi max,パラメータ pars において,x についての f の極小値を x=x0 から始めて数値的に検索する.
詳細とオプション
- ParametricIPOPTMinimizeを使うにはまずNeeds["IPOPTLink`"]を使ってそれをロードする必要がある.
- ParametricIPOPTMinimizeは結果をParametricFunctionで返す.
- パラメータはオプションを含むParametricIPOPTMinimizeのどの引数に存在してもよい. »
- ParametricIPOPTMinimizeはIPOPTMinimizeと同じオプションと設定を取る.
例題
すべて開く すべて閉じる例 (2)
パラメータが
を持つ
についての
の極小値を
から始めて求める.
Needs["IPOPTLink`"]パラメトリック極小化問題を設定し,ParametricFunctionオブジェクトを得る:
pf = ParametricIPOPTMinimize[x Cos[p x], {x}, {1}, {}, {}, {}, {p}]問題には制約条件がないので,対応する引数は{}で置き換える.
パラメータ値を与え,IPOPTData式の事例を取得する:
sol = pf[2]IPOPTData式から極小値とその位置を抽出する:
{IPOPTMinValue[sol], IPOPTArgMin[sol]}Needs["IPOPTLink`"]パラメトリック極小化問題を設定し,ParametricFunctionオブジェクトを得る:
pf = ParametricIPOPTMinimize[p x ^ 2 + (y - 2) ^ 2, {x, y}, {2, 1}, {{-Infinity, Infinity}, {r, Infinity}}, {x ^ 2}, {{q, Infinity}}, {p, q, r}]パラメータ値を与え,IPOPTData式の事例を取得する:
sol = pf[2, 1, 3]IPOPTData式から極小値とその位置を抽出する:
{IPOPTMinValue[sol], IPOPTArgMin[sol]}オプション (3)
StepMonitor (1)
関数の極小値を求める際にParametricIPOPTMinimizeが取ったステップ:
Needs["IPOPTLink`"]pf = ParametricIPOPTMinimize[p x ^ 2 + (y - 2) ^ 2, {x, y}, {2., 1.}, {{-Infinity, Infinity}, {r, Infinity}}, {x ^ 2}, {{q, Infinity}}, {p, q, r}, StepMonitor :> Print[{"x" -> x, "y" -> y, "f" -> p x ^ 2 + (y - 2) ^ 2}]]sol = pf[2, 1, 3]IPOPTOptions (2)
IPOPTライブラリのドキュメントのオションページに記載されているようにIPOPTOptionsを使ってオプションを設定する:
Needs["IPOPTLink`"]pf = ParametricIPOPTMinimize[ Cos[x + y] * Sin[x - y], {x, y}, {0, 1}, {{-1, 1}, {-1, 1}}, {}, {}, {p}, "IPOPTOptions" -> {"tol" -> 10. ^ -p}]sol = pf[4]{Abs[IPOPTMinValue[sol] - (-1)] / 1, Abs[IPOPTArgMin[sol] - {-Pi / 4, Pi / 4}] / (Pi / 4)}sol = pf[6]{Abs[IPOPTMinValue[sol] - (-1)] / 1, Abs[IPOPTArgMin[sol] - {-Pi / 4, Pi / 4}] / (Pi / 4)}Needs["IPOPTLink`"]pf = ParametricIPOPTMinimize[ Cos[x + y] * Sin[x - y], {x, y}, {0, 1}, {{-1, 1}, {-1, 1}}, {}, {}, {p}, "IPOPTOptions" -> {"max_iter" -> p}]下のメッセージは,デフォルトの許容誤差10^-8を満足するためには,繰返し回数が5回では十分でなかったことを示唆する:
sol = pf[5]sol = pf[10]相対誤差がデフォルトの目標10^-8を下回っていることを確認する:
{Abs[IPOPTMinValue[sol] - (-1)] / 1, Abs[IPOPTArgMin[sol] - {-Pi / 4, Pi / 4}] / (Pi / 4)}アプリケーション (1)
ParametricIPOPTMinimizeにおいて初期点をパラメータとし,さまざまな開始点で問題を解いて,大域的最小値を求める.
f[x_, y_] := x Sin[10x] y ^ 2Cos[5y]ipts = RandomPoint[Disk[{-1, -1}], 1000];Show[plot = Plot3D[f[x, y], {x, y}∈Disk[{-1, -1}], PlotRange -> All, Mesh -> None], Graphics3D[Point[Map[Append[#, 0.25 + f@@#]&, ipts]]]]Needs["IPOPTLink`"]pf = ParametricIPOPTMinimize[f[x, y], {x, y}, {x0, y0}, {{-2, 0}, {-2, 0}}, {(x + 1) ^ 2 + (y + 1) ^ 2}, {{0, 1}}, {x0, y0}]sols = pf@@@ipts;minvals = IPOPTMinValue /@ sols;
minpts = IPOPTArgMin /@ sols;解と初期点を集め,極小値でソートして,大域的最小値とその点を求める:
pointData = Transpose[{minvals, minpts, ipts}];{gminval, gminpt, gipt} = First[Sort[pointData]]点を極小値の位置でグループ化する.小さい数値的な差を把握するために,格子を使用する:
latticePoint[{v_, p_, ip_}] := Round[1000 p] / 1000.;grouped = GatherBy[pointData, latticePoint];minValues = grouped[[All, 1, 1]];
minPoints = grouped[[All, 1, 2]];
groupedInit = grouped[[All, All, 3]];極小値の位置によって初期点に色を付ける.極小値の位置は矢印で示す.大域的最小値は赤で示す:
colors = Map[ColorData[58], Range[Length[grouped]]];Show[plot, Graphics3D[{MapThread[{#1, Arrow[{Append[#2, 4], Append[#2, #3]}]}&, {colors, minPoints, minValues}], MapThread[{#1, Point[Map[Append[#, 0.25 + f@@#]&, #2]]}&, {colors, groupedInit}], {PointSize[0.05], Red, Point[Append[gminpt, gminval]]}}]]テクニカルノート
関連するガイド
テキスト
Wolfram Research (2016), ParametricIPOPTMinimize, Wolfram言語関数, https://reference.wolfram.com/language/IPOPTLink/ref/ParametricIPOPTMinimize.html.
CMS
Wolfram Language. 2016. "ParametricIPOPTMinimize." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/IPOPTLink/ref/ParametricIPOPTMinimize.html.
APA
Wolfram Language. (2016). ParametricIPOPTMinimize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/IPOPTLink/ref/ParametricIPOPTMinimize.html
BibTeX
@misc{reference.wolfram_2026_parametricipoptminimize, author="Wolfram Research", title="{ParametricIPOPTMinimize}", year="2016", howpublished="\url{https://reference.wolfram.com/language/IPOPTLink/ref/ParametricIPOPTMinimize.html}", note=[Accessed: 16-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_parametricipoptminimize, organization={Wolfram Research}, title={ParametricIPOPTMinimize}, year={2016}, url={https://reference.wolfram.com/language/IPOPTLink/ref/ParametricIPOPTMinimize.html}, note=[Accessed: 16-August-2026]}