Optimization パッケージの概要
使い方
Optimization[command](arguments)
command(arguments)
|
説明
|
|
•
|
最適化パッケージは制約条件のもと目的関数の最小値および最大値を数値的に求めるコマンドを集めたものです。このパッケージでは、 Numerical Algorithms Group (NAG) により提供されたものを利用しています。
|
•
|
線形計画問題 (LPs), 2次計画問題 (QPs), 非線形計画問題 (NLPs) および最小二乗問題を解くことができます。制約条件はなくても計算します。変数は連続であり、局所解は凸空間でなくても計算されると仮定します。 LPSolve は整数計画問題を、NLPSolve は与えられた区間での最適解を計算することがします。
|
•
|
ソルバはハードウェア浮動小数環境または、任意精度のソフトウェア浮動小数環境で計算を行います。ソルバに対する最適なパフォーマンスを得る方法についてための計算環境については Optimization/Computation を参照ください。
|
|
|
最適化パッケージのコマンドへのアクセス
|
|
•
|
最適化パッケージのコマンドはコマンドの使い方にある長い形または短い形の一方で使うことができます。
最適化パッケージの実装はモジュールでされており、コマンドは Optimization:-command で使うことができます。
詳しくは Module Members を参照ください。
|
|
|
注意
|
|
•
|
最適化問題を計算している間に、ソルバの進行状況について詳しい情報がほしいときは、infolevel[Optimization]に正の整数をセットしてください。infolevel を大きくするとより詳しい情報を表示できます。
|
|
|
例
|
|
LPSolve は線形計画問題を解くときに使います。assume=nonnegative オプションはすべての変数 x と y を非負とします。解を満たす x と y の値と目的関数の値が結果として表示されます。
>
|
LPSolve(-x-y, {y<=3*x+1/2, y<=-5*x+2}, assume=nonnegative);
|
| (5.1) |
NLPSolve を使って初期点から探索して極小値を計算します。
>
|
NLPSolve(sin(x)/x, x=1..15, initialpoint=[x=7]);
|
| (5.2) |
Minimize コマンドは自動で最適なソルバを選択して計算します。
>
|
Minimize(2*x+5*y+3*x^2+3*x*y+2*y^2, {x-y>=2}, assume=nonnegative);
|
| (5.3) |
制約条件 Ax<=b のもと g-Cx のノルムの最小値を計算するときは LSSolve の Matrix form を使います。
>
|
g := Vector([1.2, 2.0, 4.0], datatype=float):
C := Matrix([[3.0, -2.0], [0.15, 3.5], [3.8, 4.0]], datatype=float):
A := Matrix([[-1.0, 3.0]], datatype=float):
b := Vector([0.5], datatype=float):
LSSolve([g, C], [A, b]);
|
| (5.4) |
|
|