Main Content

optimexpr

创建空优化表达式数组

说明

使用 optimexpr 初始化一组优化表达式。

提示

有关完整的工作流,请参阅基于问题的优化工作流基于问题的方程求解工作流

示例

expr = optimexpr(n) 创建一个空的 n×1 OptimizationExpression 数组。在创建优化表达式的循环中,使用 expr 作为初始值。

示例

expr = optimexpr(cstr) 创建一个空的 OptimizationExpression 数组,该数组可以使用向量 cstr 进行索引。expr 的元素数与 cstr 的长度相同。当 cstr 是行向量时,expr 也是行向量。当 cstr 是列向量时,expr 也是列向量。

示例

对于正整数 nj 和名称 cstrj 的任意组合,expr = optimexpr(cstr1,n2,...,cstrk)expr = optimexpr([n1,n2,...,nk])expr = optimexpr({cstr1,cstr2,...,cstrk}) 创建一个空的优化表达式数组,其维数等于整数 nj 或 cstrj 的条目的长度。

示例

全部折叠

创建一个包含三个优化表达式的空数组。

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

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

  See expression formulation with show.

创建颜色名称字符串数组,以及按颜色名称进行索引的优化表达式。

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 = {'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 是 4×1 而不是 1×4,则 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×4×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 优化表达式数组,其中第一个维度按字符串 "brass""stainless""galvanized" 进行索引,第二个维度按数值进行索引。

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

索引名称,指定为字符串数组或字符向量元胞数组。

示例: 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
  • 通过向量化语句而不是循环来创建表达式通常更高效。请参阅Create Efficient Optimization Problems

版本历史记录

在 R2017b 中推出