Optimization[Minimize] - 制約条件つき目的関数の最小値を求める
Optimization[Maximize] - 制約条件つき目的関数の最大値を求める
使い方
Minimize(obj, constr, bd, opts)
Maximize(obj, constr, bd, opts)
Minimize(opfobj, ineqcon, eqcon, opfbd, opts)
Maximize(opfobj, ineqcon, eqcon, opfbd, opts)
パラメータ
obj - 代数式 ; 目的関数
constr - (オプション) set(relation) or list(relation); 制約条件
bd - (オプション) name = range の列 ; 境界
opfobj - procedure; 目的関数
ineqcon - (オプション) set(relation) or list(relation); 不等式制約条件
eqcon - (オプション) set(relation) or list(relation); 等式制約条件
opfbd - (オプション) 範囲の列 ; 境界
opts - (オプション) option = value の形の等式。ただし option は assume, feasibilitytolerance, infinitebound, initialpoint, iterationlimit, optimalitytolerance, または output
|
説明
|
|
•
|
Minimize コマンドはのもとのを計算します。問題が凸 (例として、制約条件および目的関数が線形関数) ならば、解は最小値となります。Maximize コマンドは局所を計算します。2 つのコマンドのアルゴリズムは目的関数および制約条件が 2 階連続微分可能であることを仮定します。
2 つのコマンドは関数またはオペレータの形の問題を解くことができます。詳しくは Optimization/AlgebraicForm および Optimization/OperatorForm を参照ください。 infolevel[Optimization] を 1 以上に設定すると計算の過程を表示することができます。
|
•
|
代数式の入力するときの使い方についてです。第 1 引数 obj は代数式の与えられた目的関数です。
|
|
第 2 引数 constr は変数による制約条件のリストです。変数は obj および constr に含まれる名前の型を持つ不定元です。
|
|
境界条件 bd は、varname を変数、varrange をその範囲とするとき varname = varrange の形で与えられます。
|
•
|
オペレータの形を入力するときの使い方についてです。目的関数 opfobj は変数 x1, x2, ..., xn よる関数で浮動小数を返す手続きです。
不等式および等式制約条件は ineqcon および eqcon によってオプションで指定します。不等式制約条件 v(x1, x2, ..., xn) <= 0 は目的関数 opfobj と同様に制約条件の左辺を手続き v を ineqcon の要素で指定します。同様に、等式制約条件 w(x1, x2, ..., xn) = 0 も手続き w を eqcon の要素として指定します。 ineqcon または eqcon のいずれかは空でも構いません。
|
|
境界 opfbd は変数 x1, x2, ..., xn の順番で n 個の範囲の列によってオプションで与えます。
|
•
|
いずれの入力も、はじめに非負変数であることを仮定していませんが、assume = nonnegative オプションによって指定することができます。境界条件は infinity の型を使うことができます。
|
•
|
Maple は最小値 (最大値) とそれを満たす点 (極値) のリストを解として返します。 output = solutionmodule オプションを指定すると、モジュールを返します。詳しくは Optimization/Solution を参照ください。
|
|
|
オプション
|
|
|
引数 opts は次のオプションからいくつか選ぶことができます。下のリストは、Minimize or Maximize によって呼び出す最適化パッケージのコマンドに適応します。特定のコマンドで指定できるオプションを Minimize および Maximize で使うことができます。すべてのオプションのリストについては Optimization/Options を参照ください。各コマンドはいろいろな内部のソルバを使います。オプションがソルバで使わなかった場合、警告を出します。
|
•
|
assume = nonnegative -- すべての変数を非負と仮定します。
|
•
|
feasibilitytolerance = realcons(positive) -- 許容できる誤差の量を指定します。
|
•
|
infinitebound = realcons(positive) -- infinitebound より大きい値を infinity とみなします。
|
•
|
initialpoint = set(equation), list(equation), または list(numeric) -- varname=value の集合またはリストで初期点を指定します。
|
•
|
iterationlimit = posint -- 最大反復回数を指定します。
|
•
|
optimalitytolerance = realcons(positive) -- 最適な値を見つけるため精度を指定します。このオプションは線形および非線形計画問題で使うことができません。
|
|
|
注意
|
|
•
|
Minimize および Maximize コマンドは、 Numerical Algorithms Group (NAG) よって組み込まれたさまざまな算法を使います。ソルバは反復法を使い初期点を必要とします。解の精度は、非線形計画問題をはじめ初期点に強く依存します。 initialpoint オプションを使って指定することを推奨します。指定しないときは自動的に生成されます。
計算は浮動小数で行われます。データは実数の型で与える必要があり、また問題を正確な値で与えたとしても、解は浮動小数で返します。最適化パッケージにおける数値による計算について詳しくは Optimization/Computation を参照ください。
assume = nonnegative オプションを使うことができますが、一般の仮定を最適化パッケージでは指定することはできません。
|
|
|
例
|
|
| (4.1) |
>
|
Minimize(cos(x), initialpoint = {x=1});
|
| (4.2) |
>
|
Minimize(2*x+y, {4*x-y<=9, x+y>=4}, assume = nonnegative);
|
| (4.3) |
>
|
Minimize((x-1)^2 + (x-y)^2 , {x*(1+y^2)>=8});
|
| (4.4) |
>
|
Minimize((x-1)^2 + (y-1)^2 + (z-1)^2, {x*(1+y^2+z^2)>=8});
|
| (4.5) |
>
|
Maximize(2*x^2+y+2*y^2, {y^2-x<=2, 2*x+y<=6});
|
| (4.6) |
|
|
参照
|
|
Optimization/AlgebraicForm, Optimization/Computation, Optimization[LPSolve], Optimization[LSSolve], Optimization/MatrixForm, Optimization[NLPSolve], Optimization/OperatorForm, Optimization/Options, Optimization[QPSolve], Optimization/Solution, realcons
|
|