NArgMin

NArgMin[f,x]

f が数値的に最小になる位置 xminを与える.

NArgMin[f,{x,y,}]

f が数値的に最小になる位置{xmin,ymin,}を与える.

NArgMin[{f,cons},{x,y,}]

f が制約条件 cons に従って数値的に最小になる位置を与える.

NArgMin[,xreg]

x が領域 reg 内にあるように制限する.

詳細とオプション

  • NArgMinは大域的最適化(GO)としても知られている.
  • NArgMinは,与えられた制約条件に従って常に f の最小値を求めようとする.
  • NArgMinは,通常,制約が与えられた場合に可能な最小値を求めるために使われる.分野によっては,最適な戦略,最良適合,最適な構成等と呼ばれることがある.
  • NArgMin{xmin,ymin,}の形のリストを返す.
  • NArgMin[,{x,y,}]は事実上{x,y,}/.Last[NMinimize[,{x,y,},]に等しい.
  • fcons が線形または凸のとき,NArgMinが与える結果は実数および整数値の両方の上で最小値になる.それ以外の場合の結果は単に極小値であるかもしれない.
  • NArgMinが制約条件を満足できないと判断した場合は{Indeterminate,}が返される.
  • NArgMinは,目的関数 f と制約条件 cons がスカラー変数またはベクトル変数に依存する式で与えられるモデリング言語をサポートする.fcons は,一般に,非常に効率的な形に解析されるが,fcons の項が変数の数値に対して数値を与える限りNArgMinはしばしば解を求めることができる.
  • 制約条件 cons は以下の論理結合でよい.
  • lhs==rhs等式
    lhs>rhs, lhsrhs, lhs<rhs, lhsrhs不等式 (LessEqual, )
    lhsrhs, lhsrhs, lhsrhs, lhsrhsベクトル不等式 (VectorLessEqual, )
    {x,y,}rdom領域指定
  • NArgMin[{f,cons},xrdom]は,事実上,NArgMin[{f,cons&&xrdom},x]に等しい.
  • xrdom については,Indexed[x,i]を使って別の座標に言及することができる.
  • 次は,使用可能な領域 rdom である.
  • Reals実数スカラー変数
    Integers整数スカラー変数
    Vectors[n,dom]のベクトル変数
    Matrices[{m,n},dom]の行列変数
    幾何領域 に制限されたベクトル変数
  • デフォルトで,すべての変数が実数であるとみなされる.
  • 次は,指定可能なオプションである.
  • AccuracyGoalAutomatic目標となる最終確度桁数
    EvaluationMonitor Nonef が評価されたときに常に評価される式
    MaxIterationsAutomatic使用する最大反復回数
    Method Automatic使用されるメソッド
    PrecisionGoalAutomatic目標となる最終精度桁数
    StepMonitor Noneステップを取るたびに常に評価される式
    WorkingPrecision MachinePrecision内部計算に使用する精度
  • AccuracyGoalPrecisionGoalの設定で最小値の位置の値と最小になったときの関数の値の両方で目標とする桁数を指定する.
  • NArgMinは,AccuracyGoalPrecisionGoalで指定された目標値のどちらかが達成されるまで計算を続ける.
  • NArgMinのためのメソッドには2つのクラスがある.最初のクラスは問題の特性を使うので,メソッドが収束する際に求まった最小値は大域的であることが保証される.2番目のクラスは発見的なメソッドで,複数の局所探索を使うことがあるが,一般的には確率論によって調整され,大域的最小値に焦点が当てられる.このメソッドもしばしば大域的な最小値を求めるが,必ずそうするとは保証されない.
  • 次は,解に収束する場合に最小値を与えることが保証されているメソッドである.
  • "Convex"凸法だけを使う
    "MOSEK"凸問題用の商用MOSEKライブラリを使う
    "Gurobi"凸問題用の商用Gurobiライブラリを使う
    "Xpress"凸問題用の商用Xpressライブラリを使う
  • 次は,発見的手法である.
  • "NelderMead"Nelder・Meadのシンプレックス法
    "DifferentialEvolution"差分進化を使う
    "SimulatedAnnealing"焼きなまし法を使う
    "RandomSearch"複数のランダムな初期点から始めて求まった最良の極小値を使う
    "Couenne"非凸混合整数非線形問題にCouenneライブラリを使う

例題

すべて開くすべて閉じる

  (4)

一変数関数が最小になる点を求める:

多変数関数が最小になる点を求める:

制約条件に従って関数が最小になる点を求める:

幾何学領域上で最小になる点を求める:

これをプロットする:

スコープ  (40)

基本的な用法  (12)

制約条件 に従って の値を最小にするの値を求める:

VectorGreaterEqualでいくつかの線形不等式制約を表すことができる:

v>= または\[VectorGreaterEqual]を使ってベクトル不等式の記号を入力する:

スカラー不等式を使った同等の形:

ベクトル変数 を使う:

にスレッディングの可能性があるので,不等式 とは等しくないかもしれない:

での意図しないスレッディングを避けたければInactive[Plus]を使うとよい:

定数パラメータを持つ方程式を使って での意図しないスレッディングを回避する:

VectorGreaterEqual"NonNegativeCone"についての錐不等式を表す:

円錐の次元を明示的に指定したければ,{"NonNegativeCone",n}を使うとよい:

最小化点を求める:

制約条件 に従って を最小にする点を求める:

"NormCone"で錐不等式を使って制約条件 を指定する:

最小化点を求める:

制約条件 に従って関数 を最小にする点を求める:

Indexedを使ってベクトル変数の成分(例:TemplateBox[{x, 1}, IndexedDefault])にアクセスする:

ベクトル変数の次元と領域が曖昧なときはVectors[n,dom]を使って指定する:

NonNegativeReals (TemplateBox[{}, NonNegativeReals])を使って非負の制約条件を指定する:

ベクトル不等式 を使った同等の形:

NonPositiveReals (TemplateBox[{}, NonPositiveReals])を使って非正の制約条件を指定する:

ベクトル不等式を使った同等の形:

Orによる制約を指定することができる:

領域制約1  (4)

Integersを使って整数領域の制約を指定する:

Vectors[n,Integers]を使ってベクトル変数に整数領域の制約を指定する:

NonNegativeIntegers (TemplateBox[{}, NonNegativeIntegers])を使って非負の整数領域の制約を指定する:

NonPositiveIntegers (TemplateBox[{}, NonPositiveIntegers])を使って非正の整数領域の制約を指定する:

領域制約2  (5)

領域上で を最小にするの値を求める:

プロットする:

2つの領域間の距離を最小にする点を求める:

プロットする:

三角形と楕円形が交差する最小の を求める:

プロットする:

指定された3点を含むような最小半径の円を求める:

プロットする:

Circumsphereを使うと同じ結果が直接得られる:

を使って 内のベクトルであるように指定する.ただし,TemplateBox[{x}, Norm]=1

線形問題  (5)

線形の目的関数と制約条件がある場合は,最小値が見付かるとそれは大域的になる:

制約条件は等式制約および不等式制約である:

Equalを使っていくつかの等式制約を一度に表現する:

いくつかのスカラー等式を使った同等の形:

VectorLessEqualを使っていくつかのLessEqual不等式制約を一度に表現する:

v<= を使ってベクトル不等式をコンパクトな形で入力する:

スカラー不等式を使った同等の形:

Intervalを使って変数の境界を指定する:

凸問題  (7)

"NonNegativeCone"を使って の形の線形関数を指定する:

v>= を使ってベクトル不等式をコンパクトな形で入力する:

線形制約条件に従って凸二次関数を最小にする点を求める:

領域と最小化点をプロットする:

凸二次制約集合に従って凸二次関数を最小にする点を求める:

領域と最小化点をプロットする:

2つの凸領域間の距離を最短にする点 をプロットする:

プロットする:

が半正定値になるように を最小にする:

ミニマイザを目的関数のプロット上に示す:

が半正定値でとなるように凸目的関数を最小にする点を求める:

領域と最小化点をプロットする:

4-ノルムの単位円板上で凸目的関数を最小にする点を求める:

領域と最小化点をプロットする:

凸に変換可能  (4)

面積1で の長方形の外周を最小にする高さ と重み の値を求める:

この問題は対数凸問題であり,変換{hExp[],wExp[ ]}を行い,対数を取って凸問題を得ることで解ける:

不等式制約とノルム制約に従って擬似凸関数 を最大化する.目的関数は領域上の非負関数と非正関数の積なので,擬似凸関数である:

擬似凸問題はパラメータ についてのパラメトリック凸最適化問題として解くことができる:

目的関数を等位集合 の関数としてプロットする:

区間内の等位集合の値について,最小の目的関数が求まる:

等位集合の値が大きくなると,問題は実行不可能になる:

制約条件に従って を最小化する.目的関数は凸ではないが凸関数の差 として表すことができる.ただし, は凸関数である:

領域と最小化点をプロットする:

制約条件に従って を最小化する.制約条件は凸ではないが凸条件の差 として表すことができる.ただし, は凸関数である:

領域と最小化点をプロットする:

一般的な問題  (3)

非線形制約条件に従って線形目的関数を最小にする:

プロットする:

非線形目的関数を線形制約条件に従って最小にする点を求める:

目的関数と最小化点をプロットする:

非線形目的関数を非線形制約条件に従って最小にする点を求める:

プロットする:

オプション  (7)

AccuracyGoalとPrecisionGoal  (2)

収束基準を強制する:

次で,収束基準を強制する.これはデフォルトの機械精度計算では達成できない:

WorkingPrecisionの設定値を高くするとプロセスが収束するようになる:

EvaluationMonitor  (1)

関数の解を求める過程で評価したすべての点を最小値の環で記録する:

訪れた点の中で目的関数の値で最終的な解に近いすべての点をプロットする:

Method  (2)

メソッドの中には特定の問題に対して準最適化結果を与えるものがある:

この問題の場合は,自動選択されたメソッドが最適な結果を与える:

この非凸問題に対して自動メソッド選択は"Couenne"を選ぶ:

目的関数を最小点とともにプロットする:

速度を求めたければ,たくさんの変数がある問題には"NelderMead"メソッドを使う:

StepMonitor  (1)

NArgMinが古典的なRosenbrock関数の最小値を求めるのに取るステップ:

WorkingPrecision  (1)

作業精度をにする.デフォルトでAccuracyGoalPrecisionGoalに設定されている:

アプリケーション  (14)

幾何学の問題  (4)

半径1で中心が の2つの異なる円板上にある最近点を求める.が円板1の上の点,が円板2の上の点であるとする.目的は,制約条件に従ってを最小にすることである:

2つの点の位置を可視化する:

与えられた領域を包み込む最小の球の半径 と中心 を求める:

制約条件 に従って半径 を最小にする:

包み込む球を可視化する:

包み込む最小の球はBoundingRegionを使って効率的に求めることができる:

3Dの点集合を包み込む,{x:TemplateBox[{{{a, ., x}, +, b}}, Norm]<=1}としてパラメータ化される楕円体の体積を最小にする の値を求める:

各点 について制約条件TemplateBox[{{{a, ., {p, _, i}}, +, b,  }}, Norm]<=1, i=1,2,...,n が満たされなければならない:

体積を最小にすることはを最小にすることに等しい:

パラメータ化された楕円を明示的な形式に変換する:

境界楕円体の体積は,最小であるとは限らないが,BoundingRegionで求めることもできる:

指定された半径 ()で重なり合ない 個の円を収めることができる最小の正方形を求める.円の数と各円の半径を指定する:

が円 の中心なら,目的はを最小化することである. を最小にして とするために目的を変形することができる:

円は重なってはならない:

変数を集める:

円は正方形の中に収まっている.境界ボックスと各円の中心を求める:

円と境界ボックスをプロットする:

正方形の円で覆われた部分の割合を計算する:

データフィッティング問題  (3)

与えられた行列 a とベクトル b について,制約条件 に従ってを最小化する点を求める:

データの最初と最後の点が曲線上にあるようにして,三次曲線を離散データにフィットする:

DesignMatrixを使って行列を構築する:

最初と最後の点が曲線上になければならないという制約条件を定義する:

を最小にすることで係数 を求める:

フィットとデータを比較する:

を最小にする の値を求めることで,外れ値にあまり敏感ではない非線形離散データのフィットを求める:

基底 を使ってデータをフィットする.補間関数は である:

解を求める:

フィットを可視化する:

補間関数と参照関数を比較する:

分類問題  (3)

2つの点集合 を分離する直線 を求める:

分離するためには,集合1は を,集合2は を満足しなければならない:

目的はを最小にすることだが,そうすると の間の厚みの2倍が与えられる:

分離線は以下のようになる:

3Dの2つの点集合 を分離する二次多項式を求める:

DesignMatrixを使って2つの集合のための二次多項式データ行列を構築する:

分離するためには,集合1は を,集合2は を満足しなければならない:

を最小にすることで分離多項式を求める:

2つの点集合を分離する多項式は以下である:

2つのデータ集合を分離する多項式をプロットする:

与えられた点集合 を異なる集合に分割する.これは,を最小にすることで各集合の中心 を求めることで行える.ただし,は与えられた局所カーネルで は与えられたペナルティパラメータである:

カーネル は,もし ならば ,それ以外では k 最近傍()関数である.この問題のために 最近傍が選ばれた:

目的関数

集合の中心を求める:

各データ点に対応する中心が存在する.同じ集合に属するデータは同じ中心を持つ:

グループ化された点を抽出してプロットする:

画像処理  (1)

全変動ノルムの下で最も近い画像を求めることで,破損した画像を回復する:

40%のデータ点をランダムに削除することで破損画像を作成する:

目的はsum_(i=1)^(n-1)sum_(j=1)^(m-1)sqrt(TemplateBox[{{TemplateBox[{u, {i, +, 1}, j}, IndexedDefault], -, TemplateBox[{u, i, j}, IndexedDefault]}}, Abs]^2+TemplateBox[{{TemplateBox[{u, i, {j, +, 1}}, IndexedDefault], -, TemplateBox[{u, i, j}, IndexedDefault]}}, Abs]^2)を最小にすることである.ただし, は画像データである:

任意の非零のデータ点 TemplateBox[{u, i, j}, IndexedDefault]は破損していないと仮定する.これらの点について,TemplateBox[{u, i, j}, IndexedDefault]=u_(i j)^(orig)と設定する:

解を求め,回復された画像を表示する:

施設の場所の問題  (1)

さまざまな携帯電話基地局 の場所と にいるクライアントにサービスを提供するために必要な範囲 を求める:

各基地局は,範囲に比例する電力(で与えられる)を消費する.目的は電力消費量を最小にすることである:

を,クライアント が携帯基地局 でカバーされるなら であることを示す決定変数とする:

各携帯基地局はその範囲がクライアントの何人かをカバーするような場所になければならない:

各携帯基地局は複数のクライアントをカバーする:

各携帯基地局は最低と最高のカバレッジを持つ:

すべての変数を集める:

各携帯基地局の位置とその範囲を求める:

各携帯基地局の位置とその範囲を抽出する:

各携帯基地局の位置とその範囲をクライアントの場所について可視化する:

ポートフォリオの最適化  (1)

リスクが最小でリターンか最大になるような,資本 の6つの株式への投資配分を求める:

リターンは で与えられる.ただし, は個別の株式の予想収益の値のベクトルである:

リスクは で与えられる. はリスク回避パラメータであり, である:

目的は,指定されたリスク回避パラメータについてリスクを最小にしつつリターンを最大にすることである:

株式の売買による株式の市場価格への影響はでモデル化される:

重み はどれも0より大きくなければならず,重みに市場影響コストを加えたものは1でなければならない:

リスク回避パラメータの範囲について,利益と対応するリスクを計算する:

範囲 での最適な は,リスクとリターンのトレードオフの上界包絡線を与える:

指定数のリスク回避パラメータについて重みを計算する:

市場コストを説明することで,低リスク回避のための多様化したポートフォリオが得られるが,リスク回避が高い場合は,多様化されていない株式を購入するため,市場への影響コストが支配的になる:

軌道の最適化  (1)

始点と終点の間の距離が最短となるような円形障害物を避ける経路を求める:

経路は 個の異なる点に離散化できる.点と点の間の距離は 未満でなければならない.ただし, は最短とする距離である:

点は円形障害物の中にあってはならない:

始点と終点は既知である:

変数を集める:

制約条件に従って長さ を最短にする:

結果を可視化する:

特性と関係  (6)

NMinimizeは最小値と,変数の値を最小にする規則を与える:

NArgMinは最小にする値のリストを与える:

NMinValueは最小値だけを与える:

関数 f の最大化は-f の最小化に等しい:

凸問題については,ConvexOptimizationを使って追加的な解の特性が得られるかもしれない:

双対解を得る:

パラメータがある凸問題について,ParametricConvexOptimizationを使うとParametricFunctionが与えられる:

ParametricFunctionはパラメータの値について評価できる:

NArgMinを使ってパラメトリック問題についての関数を定義する:

2通りのアプローチの所要時間を比較する:

ParametricFunctionの導関数も計算できる:

RobustConvexOptimizationは,パラメータ制約がある凸問題についてはパラメータの可能なすべての値について有効な最適値を求める:

NArgMinはパラメータの特定の値についてより小さい最小値を与えるミニマイザを求めるかもしれない:

このミニマイザは の使用可能なすべての値についての制約条件は満足しない:

パラメータの特定の値について求まった最小値はロバストな最小値以下である:

RegionNearestを使って指定された領域の最近点を計算する:

これは,NArgMinを使っても計算できる:

考えられる問題  (2)

目的関数は有界ではないことがある:

制約条件を満たす点はないかもしれない:

Wolfram Research (2008), NArgMin, Wolfram言語関数, https://reference.wolfram.com/language/ref/NArgMin.html (2024年に更新).

テキスト

Wolfram Research (2008), NArgMin, Wolfram言語関数, https://reference.wolfram.com/language/ref/NArgMin.html (2024年に更新).

CMS

Wolfram Language. 2008. "NArgMin." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/NArgMin.html.

APA

Wolfram Language. (2008). NArgMin. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NArgMin.html

BibTeX

@misc{reference.wolfram_2024_nargmin, author="Wolfram Research", title="{NArgMin}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/NArgMin.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_nargmin, organization={Wolfram Research}, title={NArgMin}, year={2024}, url={https://reference.wolfram.com/language/ref/NArgMin.html}, note=[Accessed: 22-November-2024 ]}