ドキュメンテーション

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

optimexpr

空の最適化式配列の作成

構文

expr = optimexpr(n)
expr = optimexpr(cstr)
expr = optimexpr(cstr1,n2,...,cstrk)
expr = optimexpr([n1,n2,...,nk])
expr = optimexpr({cstr1,cstr2,...,cstrk})

説明

expr = optimexpr(n) は、空の n 行 1 列の OptimizationExpression 配列を作成します。expr を、最適化式を作成するループの初期値として使用します。

expr = optimexpr(cstr) は、インデックス付けのためにベクトル cstr を使用できる空の OptimizationExpression 配列を作成します。expr の要素数は、cstr の長さと同じです。cstr が行ベクトルの場合、expr は行ベクトルになります。cstr が列ベクトルの場合、expr は列ベクトルになります。

expr = optimexpr(cstr1,n2,...,cstrk) または expr = optimexpr([n1,n2,...,nk]) または expr = optimexpr({cstr1,cstr2,...,cstrk}) は、正の整数 nj と名前 cstrj のすべての組み合わせについて、次元が整数 nj または cstrj のエントリの長さに等しい最適化式の空の配列を作成します。

すべて折りたたむ

3 つの最適化式から成る空の配列を作成します。

expr = optimexpr(3)
expr = 
  3x1 OptimizationExpression array with properties:

    IndexNames: {{}  {}}

  See expression formulation with showexpr.

色の名前の string 配列と、色の名前によってインデックス付けされる最適化式を作成します。

strexp = ["red","green","blue","yellow"];
expr = optimexpr(strexp)
expr = 
  1x4 OptimizationExpression array with properties:

    IndexNames: {{}  {1x4 cell}}

  See expression formulation with showexpr.

string の代わりに文字ベクトルの cell 配列を使用して、同じ効果を得ることができます。

strexp = {'red','green','blue','yellow'};
expr = optimexpr(strexp)
expr = 
  1x4 OptimizationExpression array with properties:

    IndexNames: {{}  {1x4 cell}}

  See expression formulation with showexpr.

strexp が 1 行 4 列ではなく 4 行 1 列の場合、expr も 4 行 1 列です。

strexp = ["red";"green";"blue";"yellow"];
expr = optimexpr(strexp)
expr = 
  4x1 OptimizationExpression array with properties:

    IndexNames: {{1x4 cell}  {}}

  See expression formulation with showexpr.

3 x 4 x 2 の空の配列を作成します。

expr = optimexpr(3,4,2)
expr = 
  3x4x2 OptimizationExpression array with properties:

    IndexNames: {{}  {}  {}}

  See expression formulation with showexpr.

3 行 4 列の配列の最適化式を作成します。1 番目の次元は string "brass""stainless"、および "galvanized" によってインデックス付けされ、2 番目の次元は数値的にインデックス付けされます。

bnames = ["brass","stainless","galvanized"];
expr = optimexpr(bnames,4)
expr = 
  3x4 OptimizationExpression array with properties:

    IndexNames: {{1x3 cell}  {}}

  See expression formulation with showexpr.

stainless 式が対応する x(galvanized) 値の 1.5 倍であることを示す名前付きインデックスを使用して式を作成します。

x = optimvar('x',bnames,4);
expr('stainless',:) = x('galvanized',:)*1.5;
showexpr(expr('stainless',:))
('stainless', 1)

  1.5*x('galvanized', 1)

('stainless', 2)

  1.5*x('galvanized', 2)

('stainless', 3)

  1.5*x('galvanized', 3)

('stainless', 4)

  1.5*x('galvanized', 4)

入力引数

すべて折りたたむ

変数の次元。正の整数として指定します。

例: 4

データ型: double

インデックス名。string 配列または文字ベクトルの cell 配列として指定します。

例: expr = optimexpr(["Warehouse","Truck","City"])

例: expr = optimexpr({'Warehouse','Truck','City'})

データ型: string | cell

出力引数

すべて折りたたむ

最適化式。OptimizationExpression オブジェクトとして返されます。

ヒント

  • optimexpr を使用して、for ループ内などに、プログラムによって入力される空の式を作成できます。

    x = optimvar('x',8);
    expr = optimexpr(4)
    for k = 1:4
        expr(k) = 5*k*(x(2*k) - x(2*k-1));
    end
  • 一般に、ループではなく、ベクトル化されたステートメントで式を作成する方がより効率的です。詳細は、効率的な最適化問題の作成を参照してください。

R2017b で導入