ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

optimproblem

構文

prob = optimproblem
prob = optimproblem(Name,Value)

説明

prob = optimproblem は、既定のプロパティで最適化問題を作成します。

prob = optimproblem(Name,Value) は 1 つ以上の Name,Value 引数ペアによって指定された追加オプションを使用します。たとえば、最小化問題の代わりに最大化問題を指定するには、prob = optimproblem('ObjectiveSense','maximize') を使用します。

すべて折りたたむ

既定のプロパティで最適化問題を作成します。

prob = optimproblem
prob = 
  OptimizationProblem with properties:

       Description: ''
    ObjectiveSense: 'minimize'
         Variables: [0x0 struct] containing 0 OptimizationVariables
         Objective: [0x0 OptimizationExpression]
       Constraints: [0x0 struct] containing 0 OptimizationConstraints

  No problem defined.

最大化を目的とする線形計画問題を作成します。問題には、2 つの正の変数と 3 つの線形不等式制約があります。

prob = optimproblem('ObjectiveSense','max');

正の変数を作成します。目的関数を問題に含めます。

x = optimvar('x',2,1,'LowerBound',0);
prob.Objective = x(1) + 2*x(2);

問題の線形不等式制約を作成します。

cons1 = x(1) + 5*x(2) <= 100;
cons2 = x(1) + x(2) <= 40;
cons3 = 2*x(1) + x(2)/2 <= 60;
prob.Constraints.cons1 = cons1;
prob.Constraints.cons2 = cons2;
prob.Constraints.cons3 = cons3;

問題を確認します。

showproblem(prob)
  OptimizationProblem : 

	max :
       x(1, 1) + 2*x(2, 1)

	subject to cons1:
       x(1, 1) + 5*x(2, 1) <= 100

	subject to cons2:
       x(1, 1) + x(2, 1) <= 40

	subject to cons3:
       2*x(1, 1) + 0.5*x(2, 1) <= 60

	variable bounds:
       0 <= x(1, 1)
       0 <= x(2, 1)

問題を解きます。

sol = solve(prob);
Optimal solution found.
sol.x
ans = 2×1

   25.0000
   15.0000

入力引数

すべて折りたたむ

名前と値のペアの引数

引数 Name,Value のオプションのコンマ区切りペアを指定します。Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: 最大化問題を指定するには、prob = optimproblem('ObjectiveSense','maximize') を使用します。

問題の制約。OptimizationConstraint 配列またはフィールドとして OptimizationConstraint 配列をもつ構造体として指定します。

例: prob = optimproblem('Constraints',sum(x,2) == 1)

問題のラベル。string または文字ベクトルとして指定します。Description はソフトウェアでは計算に使用されません。Description は、あらゆる理由で自由に使用できるラベルです。たとえば、モデルまたは問題を共有、アーカイブ、または提示し、モデルまたは問題に関する説明情報を Description プロパティに保存できます。

例: prob = optimproblem('Description',"An iterative approach to the Traveling Salesman problem")

データ型: char | string

目的関数。スカラー OptimizationExpression オブジェクトとして指定します。

例: prob = optimproblem('Objective',sum(sum(x))) (2 次元変数 x について)

最適化の意味。'minimize' または 'maximize' で指定します。'min'を指定して 'minimize' を、'max' を指定して 'maximize'を得ることもできます。関数 solve は、ObjectiveSense'minimize' の場合に目的関数を最小化し、ObjectiveSense'maximize' の場合に目的関数を最大化します。

例: prob = optimproblem('ObjectiveSense','max')

データ型: char | string

出力引数

すべて折りたたむ

最適化問題。OptimizationProblem オブジェクトとして返されます。通常、問題の説明を完了するには、目的関数と線形制約を指定します。ただし、目的関数のない実現可能性問題を保持したり、線形制約のない問題を保持したりすることができます。solve を呼び出して、完全な問題を解きます。

R2017b で導入