NArgMax

NArgMax[f,x]

f が数値的に最大になる位置 xmaxを与える.

NArgMax[f,{x,y,}]

f が数値的に最大になる位置{xmax,ymax,}を与える.

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

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

NArgMax[,xreg]

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

詳細とオプション

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

例題

すべて開くすべて閉じる

  (4)

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

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

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

幾何学領域上で関数が最大になる点を求める:

これをプロットする:

スコープ  (35)

基本的な用法  (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つの領域内にあるように制約されている2点間の可能な最大距離を求める:

これをプロットする:

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

これをプロットする:

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

これをプロットする:

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

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

線形問題  (5)

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

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

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

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

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

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

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

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

凸問題  (3)

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

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

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

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

が半正定値でとなるように凹目的関数を最大にする:

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

凸に変換可能  (3)

不等式制約とノルム制約に従って擬似凸関数 を最大にする.目的関数は2つの非負のアフィン関数の積なので,擬似凸関数である:

最大化は負の目的関数(擬似凸関数)を最小化することで解くことができる.擬似凸問題はパラメータ についてのパラメトリック凸最適化問題として解くことができる:

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

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

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

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

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

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

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

一般的な問題  (3)

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

プロットする:

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

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

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

プロットする:

オプション  (7)

AccuracyGoalとPrecisionGoal  (2)

収束基準を強制する:

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

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

EvaluationMonitor  (1)

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

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

Method  (2)

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

自動メソッド選択は,この問題に対して最適解を与える:

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

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

速度を求めるなら,変数が多い問題には"NelderMead"メソッドを使う:

StepMonitor  (1)

NArgMaxが関数の最大値を求めるのに取るステップ:

WorkingPrecision  (1)

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

アプリケーション  (8)

幾何学の問題  (4)

表面積が最大で1の楕円体の体積を最大にする主軸 の半分の長さを求める:

表面積は以下で近似できる:

逆数を最小化することで体積を最大にする:

以下は球である.軸の長さについての制約条件を加えるとこれが変化する:

結果の楕円体をプロットする:

凸多角形の解析的中心を求める.解析的中心は制約条件までの距離の積を最大にする点である:

凸多角形の各線分は半平面との交点として表すことができる .線形不等式を抽出する:

目的は を最大にすることである.対数関数は単調なので,これはを最大にすることに等しい:

制約のない問題を解く:

中心の位置を可視化する:

凸多角形に収まる,としてパラメータ化可能な最大面積の楕円を求める:

凸多角形の各線分は半平面との交点として表すことができる .線形不等式を抽出する:

半平面にパラメータ化を適用するとが与えられる.項.したがって,制約条件はである:

面積を最大にすることはを最大にすることに等しい:

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

の正方形に収まる重なり合ない 個の円の最大半径 と中心を求める.ボックスの制限は と表すことができる:

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

変数を集める:

最大半径 と円の中心 を求める:

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

円で覆われている正方形の割合を計算する:

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

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

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

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

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

株式の売買による株式の市場価格への影響はでモデル化されるが,これは,エピグラフ変換を使ったPower Coneによってモデル化できる:

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

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

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

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

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

投資問題  (2)

投資収益率が最大になるように,資本金250,000ドルを2つの株と1つの債権に割り当てる方法を求める.2つの株への投資額を ,債権への投資額を とする:

電気・ガス株に投資される金額は40,000ドルを超えることはできない:

債権に投資される金額は最低でも70,000ドルでなければならない:

2つの株への投資総額は全投資額の少なくとも半分でなければならない:

株式からはそれぞれ9%と4%の年間配当が支払われる.債権は5%の配当がある.投資の全収益は以下の通りである:

株式と債権の購入および取引実行のための費用はである:

投資する最適金額は,費用を最小限に抑えながら利益を最大にすることで求められる:

投資総額と投資から受け取った年間配当金は以下の通りである:

最大の利益を生み出す投資の最適な組合せを求める.各投資に関連する純現在価値と費用は次の通りである:

を,投資 を選択した場合に となる決定変数であるとする. 目的は,収益を最大にして費用を最小にすることである:

最高で14,000ドルを投資することができる:

投資の最適な組合せを得るために最大化問題を解く:

巡回セールスマン問題  (1)

セールスマンが 都市をそれぞれ1回だけ通り,旅費を最大限に抑えて旅行距離は最短にする経路を求める.場所を生成する:

都市 から都市 までの距離を とする. は,なら経路が都市 から都市 へ向かう決定変数である:

一つの都市から次の都市への旅費は15ドルである.セールスマンは,2都市間の距離が50マイル以内の場合は5ドル,それ以外の場合は10ドルの定額料金を支払う.節約総額は以下の通りである:

目的は節約を最大にして距離を最小にすることである:

セールスマンは厳密に1つの都市に到着して厳密に1つの別の都市に向けて出発する:

セールスマンはある都市に到着して同じ都市に向けて出発することはできない:

セールスマンは1回のツアーですべての場所を回らなければならない:

決定変数はバイナリ変数で,ダミー変数は である:

距離が最短となる経路を求める:

経路を抽出する:

移動距離は以下の通りである:

節約総額は以下の通りである:

特性と関係  (5)

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

NArgMaxは最大にする値のリストを与える:

NMaxValueは最大値だけを与える:

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

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

双対解を得る:

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

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

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

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

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

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

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

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

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

考えられる問題  (2)

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

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

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

テキスト

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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