Main Content

optimexpr

空の最適化式配列の作成

説明

optimexpr を使用して、最適化式のセットを初期化します。

ヒント

完全なワークフローについては、問題ベースの最適化ワークフローまたは方程式を解くための問題ベースのワークフローを参照してください。

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: {{}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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

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

    IndexNames: {{}  {1x4 cell}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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

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

    IndexNames: {{}  {1x4 cell}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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

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

    IndexNames: {{}  {}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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}  {}}
     Variables: [1x1 struct] containing 0 OptimizationVariables

  See expression formulation with show.

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

x = optimvar('x',bnames,4);
expr('stainless',:) = x('galvanized',:)*1.5;
show(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 で導入