NMaximize
NMaximize[f,x]
x について f の数値的最大値を求める.
NMaximize[f,{x,y,…}]
x, y, … について f の数値的最大値を求める.
NMaximize[{f,cons},{x,y,…}]
制約条件 cons の下で f の数値的最大値を求める.
NMaximize[…,x∈rdom]
x が領域 rdom 内にあるように制限する.
詳細とオプション
- NMaximizeは大域的最適化(GO)としても知られている.
- NMaximizeは,与えられた制約条件に従って常に f の最大値を求めようとする.
- NMaximizeは,通常,制約が与えられた場合に可能な最大値を求めるために使われる.分野によっては,最適な戦略,最良適合,最適な構成等と呼ばれることがある.
- NMaximizeは{fmax,{x->xmax,y->ymax,…}}の形のリストを返す.
- f および cons が線形または凹のとき,NMaximizeが与える結果は実数および整数値の両方の上で最大値になる.それ以外の場合は結果が単に極大値であるかもしれない.
- NMaximizeが制約条件を満足できないと判断した場合は{Infinity,{x->Indeterminate,…}}が返される.
- NMaximizeは,目的関数 f と制約条件 cons がスカラー変数またはベクトル変数に依存する式で与えられるモデリング言語をサポートする.f と cons は,一般に,非常に効率的な形に解析されるが,f と cons の項が変数の数値に対して数値を与える限りNMaximizeはしばしば解を求めることができる.
- 制約条件 cons は以下の論理結合でよい.
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual, …) lhsrhs, lhsrhs, lhsrhs, lhsrhs ベクトル不等式 (VectorLessEqual, …) {x,y,…}∈rdom 領域指定 - NMaximize[{f,cons},x∈rdom]は事実上 NMaximize[{f,cons&&x∈rdom},x]に等しい.
- x∈rdom については,Indexed[x,i]を使って別の座標に言及することができる.
- 次は,使用可能な領域 rdom である.
-
Reals 実数スカラー変数 Integers 整数スカラー変数 Vectors[n,dom] のベクトル変数 Matrices[{m,n},dom] の行列変数 ℛ 幾何領域 に制限されたベクトル変数 - デフォルトで,変数は実数であると仮定される.
- 次は,指定可能なオプションである.
-
AccuracyGoal Automatic 目標となる最終確度桁数 EvaluationMonitor None f が評価されたときに常に評価される式 MaxIterations Automatic 使用する最大反復回数 Method Automatic 使用されるアルゴリズム PrecisionGoal Automatic 目標となる最終精度桁数 StepMonitor None ステップを取るたびに常に評価される式 WorkingPrecision MachinePrecision 内部計算に使用する精度 - AccuracyGoalとPrecisionGoalの設定で最大値の位置の値と最大になったときの関数の値の両方で目標とする桁数を指定する.
- NMaximizeは,AccuracyGoalとPrecisionGoalで指定された目標値のどちらかが達成されるまで計算を続ける.
- NMaximizeのためのメソッドには2つのクラスがある.最初のクラスは問題の特性を使うので,メソッドが収束する際に求まった最大値は大域的であることが保証される.2番目のクラスは発見的なメソッドで,複数の局所探索を使うことがあるが,一般的には確率論によって調整され,大域的最大値に焦点が当てられる.このメソッドもしばしば大域的な最大値を求めるが,必ずそうするとは保証されない.
- 次は,解に収束する場合に最大値を与えることが保証されているメソッドである.
-
"Convex" 凸法だけを使う "MOSEK" 凸問題用の商用MOSEKライブラリを使う "Gurobi" 凸問題用の商用Gurobiライブラリを使う "Xpress" 凸問題用の商用Xpressライブラリを使う - 次は,発見的な方法である.
-
"NelderMead" Nelder・Meadのシンプレックス法 "DifferentialEvolution" 差分進化を使う "SimulatedAnnealing" 焼きなまし法を使う "RandomSearch" 複数のランダムな初期点から始めて求まった最良の極小値を使う "Couenne" 非凸混合整数非線形問題にCouenneライブラリを使用する
例題
すべて開くすべて閉じるスコープ (35)
基本的な用法 (11)
VectorGreaterEqualでいくつかの線形不等式制約が表現できる:
v>= または\[VectorGreaterEqual]を使ってベクトル不等式の記号を入力する:
にスレッディングの可能性があるので,不等式 は とは等しくないかもしれない:
での意図しないスレッディングを避けたければInactive[Plus]を使うとよい:
定数パラメータを持つ方程式を使って での意図しないスレッディングを回避する:
VectorGreaterEqualは"NonNegativeCone"についての錐不等式を表す:
円錐の次元を明示的に指定したければ,{"NonNegativeCone",n}を使うとよい:
"NormCone"で錐不等式を使って制約条件 を指定する:
Indexedを使ってベクトル変数の成分(例:)にアクセスする:
ベクトル変数の次元と領域が曖昧なときはVectors[n,dom]を使って指定する:
NonNegativeReals ()を使って非負の制約条件を指定する:
NonPositiveReals ()を使って非正の制約条件を指定する:
領域制約1 (5)
Integersを使って整数領域の制約を指定する:
Vectors[n,Integers]を使ってベクトル変数に整数領域の制約を指定する:
NonNegativeIntegers ()を使って非負の整数領域の制約を指定する:
NonPositiveIntegers ()を使って非正の整数領域の制約を指定する:
Orという制約を指定することができる:
領域制約2 (5)
異なる2つの領域内にあるように制約されている2点間の可能な最大距離を求める:
Circumsphereを使うと同じ結果が直接得られる:
線形問題 (5)
線形の目的関数と制約条件がある場合は,最大値が見付かるとそれは大域的になる:
Equalを使っていくつかの等式制約を一度に表現する:
VectorLessEqualを使っていくつかのLessEqual不等式制約を一度に表現する:
Intervalを使って変数の境界を指定する:
凸問題 (3)
オプション (10)
AccuracyGoalとPrecisionGoal (2)
Method (5)
StepMonitor (1)
NMaximizeが関数の最大値を求めるのに取るステップ:
WorkingPrecision (1)
作業精度をにする.デフォルトでAccuracyGoalとPrecisionGoalはに設定されている:
アプリケーション (8)
幾何学の問題 (4)
表面積が最大で1の楕円体の体積を最大にする主軸 の半分の長さを求める:
以下は球である.軸の長さについての制約条件を加えるとこれが変化する:
凸多角形の解析的中心を求める.解析的中心は制約条件までの距離の積を最大にする点である:
凸多角形の各線分は半平面との交点として表すことができる .線形不等式を抽出する:
目的は を最大化することである.対数関数は単調なので,これはを最大化することに等しい:
凸多角形に収まる,としてパラメータ化可能な最大面積の楕円を求める:
凸多角形の各線分は半平面との交点として表すことができる .線形不等式を抽出する:
半平面にパラメータ化を適用するとが与えられる.項.したがって,制約条件はである:
ポートフォリオの最適化 (1)
リスクが最小でリターンか最大になるような,資本 の6つの株式への投資配分を求める:
リターンは で与えられる.ただし, は個別の株式の予想収益の値のベクトルである:
リスクは で与えられる. はリスク回避パラメータであり, である:
目的は,指定されたリスク回避パラメータについてリスクを最小にしつつリターンを最大にすることである:
株式の売買による株式の市場価格への影響はでモデル化されるが,これは,エピグラフ変換を使ったPower Coneによってモデル化できる:
重み はどれも0より大きくなければならず,重みに市場影響コストを加えたものは1でなければならない:
リスク回避パラメータの範囲について,利益と対応するリスクを計算する:
範囲 での最適な は,リスクとリターンのトレードオフの上界包絡線を与える:
市場コストを説明することで,低リスク回避のための多様化したポートフォリオが得られるが,リスク回避が高い場合は,多様化されていない株式を購入するため,市場への影響コストが支配的になる:
投資問題 (2)
投資収益率が最大となるように,資本金250,000ドルを2つの株と1つの債権に割り当てる方法を求める.2つの株への投資額を ,債権への投資額を とする:
電気・ガス株に投資される金額は40,000ドルを超えることはできない:
債権に投資される金額は最低でも70,000ドルでなければならない:
2つの株への投資総額は全投資額の少なくとも半分でなければならない:
株式からはそれぞれ9%と4%の年間配当が支払われる.債権は5%の配当がある.投資の全収益は以下の通りである:
投資する最適金額は,費用を最小限に抑えながら利益を最大化することで求められる:
最大の利益を生み出す投資の最適な組合せを求める.各投資に関連する純現在価値と費用は次の通りである:
巡回セールスマン問題 (1)
セールスマンが 都市をそれぞれ1回だけ通り,旅費を最大限に抑えて旅行距離は最短にする経路を求める.場所を生成する:
都市 から都市 までの距離を とする. は,なら経路が都市 から都市 へ向かう決定変数である:
一つの都市から次の都市への旅費は15ドルである.セールスマンは,2都市間の距離が50マイル以内の場合は5ドル,それ以外の場合は10ドルの定額料金を支払う.節約総額は以下の通りである:
セールスマンは厳密に1つの都市に到着して厳密に1つの別の都市に向けて出発する:
セールスマンはある都市に到着して同じ都市に向けて出発することはできない:
特性と関係 (6)
NMaximizeは最大値と,変数の値を最大にする規則を与える:
NArgMaxは最大化する値のリストを与える:
NMaxValueは最大値だけを与える:
凸問題については,ConvexOptimizationを使って追加的な解の特性が得られるかもしれない:
パラメータがある凸問題について,ParametricConvexOptimizationを使うとParametricFunctionが与えられる:
ParametricFunctionはパラメータの値について評価できる:
NMaximizeを使ってパラメトリック問題についての関数を定義する:
ParametricFunctionの導関数も計算できる:
RobustConvexOptimizationは,パラメータ制約がある凸問題についてはパラメータの可能なすべての値について有効な最適値を求める:
NMaximizeはパラメータの特定の値についてより大きい値を求めるかもしれない:
このマキシマイザは と の使用可能なすべての値についての制約条件は満足しない:
パラメータの特定の値について求まった最大値はロバストな最大値以上である:
NMaximizeは最大値を求めようとするのに対し,FindMaximumは極大値を求めようとする:
Maximizeは最大値を求め,無限大の精度で使うことができる:
考えられる問題 (4)
非線形関数については,特定のメソッドではNMaximizeが極大値しか求められないことがある:
NMaximizeは,特定のメソッドについて二次元関数の極大値を円板上で求める:
NMaximizeは,この問題については自動選択されたメソッドを使って大域的解を求める:
RegionBoundsを使って境界ボックスを計算する:
NMaximizeおよびNMinimizeを使って同じ境界を計算する:
記号パラメータにこの関数を適用するとNIntegrateからメッセージが出る:
この関数をNMaximizeのような数値関数と一緒に使っても同じように警告が出される:
このメッセージが出ないようにするために,引数が数値のときにだけ評価する関数を定義する:
これで,この関数をNMaximizeのような他の数値関数と一緒に使えるようになった:
テキスト
Wolfram Research (2003), NMaximize, Wolfram言語関数, https://reference.wolfram.com/language/ref/NMaximize.html (2024年に更新).
CMS
Wolfram Language. 2003. "NMaximize." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/NMaximize.html.
APA
Wolfram Language. (2003). NMaximize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NMaximize.html