Main Content

OptimizationConstraint

优化约束

说明

OptimizationConstraint 对象包含关于 OptimizationVariable 对象或 OptimizationExpression 对象的约束。每个约束使用以下比较运算符之一:==<=>=

一条语句可以表示一个约束的数组。例如,您可以表示矩阵变量 x 的每行总和等于一的约束,如使用循环方式创建简单约束中所示。

提示

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

创建对象

使用 optimconstr 创建一个空约束对象。通常,使用循环来填充对象中的表达式。

如果使用比较运算符 ==<=>= 从优化变量创建优化表达式,则生成的对象或者是 OptimizationEquality,或者是 OptimizationInequality。请参阅兼容性考虑

通过使用圆点表示法,在优化问题的 Constraints 属性中包含约束。

prob = optimproblem;
x = optimvar('x',5,3);
rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == i;
end
prob.Constraints.rowsum = rowsum;

属性

全部展开

索引名称,指定为字符串元胞数组或字符向量。有关使用索引名称的信息,请参阅Named Index for Optimization Variables

数据类型: cell

此 属性 为只读。

对象中的优化变量,指定为 OptimizationVariable 对象的结构体。

数据类型: struct

对象函数

infeasibility一个点处的约束违反值
show显示有关优化对象的信息
write保存优化对象描述

示例

全部折叠

创建一个 5×3 优化变量 x

x = optimvar('x',5,3);

使用循环创建每行总和为 1 的约束。使用 optimconstr 初始化循环。

rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == 1;
end

检查 rowsum 对象。

rowsum
rowsum = 
  5x1 Linear OptimizationConstraint array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 1 OptimizationVariable

  See constraint formulation with show.

显示 rowsum 中的约束。

show(rowsum)
(1, 1)

  x(1, 1) + x(1, 2) + x(1, 3) == 1

(2, 1)

  x(2, 1) + x(2, 2) + x(2, 3) == 1

(3, 1)

  x(3, 1) + x(3, 2) + x(3, 3) == 1

(4, 1)

  x(4, 1) + x(4, 2) + x(4, 3) == 1

(5, 1)

  x(5, 1) + x(5, 2) + x(5, 3) == 1

版本历史记录

在 R2017b 中推出

全部展开