Optimization[QPSolve] - 2 次計画問題を解く
使い方
QPSolve(obj, constr, bd, opts)
パラメータ
obj - algebraic ; 2 次の目的関数
constr - (オプション) set(relation) または list(relation); 線形制約条件
bd - (オプション) name = range の列; 境界条件
opts - (オプション) option = value の形の等式。ただし、option は assume, feasibilitytolerance, infinitebound, initialpoint, iterationlimit, maximize または output
|
説明
|
|
•
|
QPSolve コマンドは線形のもと 2 次を ( または ) にする 2 (QP) を解きます。
|
•
|
第 1 引数 obj は 2 次の目的関数を指定します。もし obj が 1 次の関数の時は自動的に Optimization[LPSolve] コマンドが呼び出されます。
第 2 引数 constr は任意であり、線形不等式 ( タイプ `<=` または `=`) の集合またはリストを指定します。変数は obj と constr の中にある不定の名前のタイプです。
変数に関する境界条件は varname を変数、varrange を区間として各変数ついて varname=varrange の形で次の引数で与えます。区間の端点としてタイプ infinity の値を含めることができます。変数の非負性でデフォルトでは仮定されていませんが、assume=nonnegative オプションで指定することができます。
|
•
|
Maple は解として最小値 ( または最大値 ) およびそれを満たす点のリストを返します。output=solutionmodule オプションが指定されていれば、モジュールを返します。詳しくは Optimization/Solution を参照ください。
2 次計画問題が 計画問題ならば、最小値を返します。そうでない場合、解は最小値かもしれません。
|
|
|
オプション
|
|
•
|
assume = nonnegative -- すべての変数を非負に指定します。
|
•
|
feasibilitytolerance = realcons(positive) -- 許容できる誤差の量を指定します。
|
•
|
infinitebound = realcons(positive) -- infinitebound より大きい値を infinity とみなします。
|
•
|
initialpoint = set(equation) or list(equation) -- varname=value の集合またはリストで初期点を指定します。
|
•
|
iterationlimit = posint -- 有効制約法による反復回数を指定します。
|
•
|
maximize or maximize = truefalse -- true のとき最大値を計算し、false のとき最小値を計算します。'maximize' オプションは maximize = true と同じです。はじめは maximize = false が指定されています。
|
|
|
注意
|
|
•
|
QPSolve コマンドは Numerical Algorithms Group (NAG) によって提供されたライブラリの中の反復有効制約法を使います。初期点は initialpoint オプションで指定できます。そうでないなら、決まった点を使います。
|
•
|
問題がでない場合、エラーを返します。問題がとき、QPSolve は警告を出し計算途中の値を返します。この結果は意味を持たないかもしれません。
|
•
|
asumme=nonnegative を使うことができますが、最適化パッケージでは一般の仮定は提供されていません。
|
|
|
例
|
|
線形制約条件のもと、2 変数 2 次計画問題を解くためには QPSolve を使います。
>
|
QPSolve(2*x+5*y+3*x^2+3*x*y+2*y^2, {x-y>=2});
|
| (4.1) |
非負の制約条件をつけるときは、assume=nonnegative オプションを使います。
>
|
QPSolve(2*x+5*y+3*x^2+3*x*y+2*y^2, {x-y>=2}, assume = nonnegative);
|
| (4.2) |
境界を制約条件とすることができます。
>
|
QPSolve(2*x+5*y+3*x^2+3*x*y+2*y^2, {x-y>=2}, x=1.5..infinity);
|
| (4.3) |
|
|