主要内容

OptimizationInequality

描述

一个OptimizationInequality对象中包含一个不等式约束OptimizationVariable对象或OptimizationExpression对象。不等式约束使用比较运算符< =>=

一条语句可以表示一组不等式。例如,你可以用矩阵变量的每一行来表示不等式x在这个语句中总和不超过1:

Constrsum = sum(x,2) <= 1

使用OptimizationInequality对象中的约束OptimizationProblem

提示

有关完整的工作流程,请参见具体问题具体分析优化工作流程

创建

使用带有比较运算符的优化表达式创建不等式< =>=

包括不等式约束用点符号表示的优化问题的性质。

概率= optimproblem;x = optimvar (“x”、4、6);sum(x,2) <= 1;prob.Constraints.SumLessThanOne = SumLessThanOne;

您还可以通过使用来创建空的优化不等式optimineqoptimconstr.通常,然后在循环中设置不等式。例如,请参见在循环中创建不等式.然而,对于最有效的问题公式,避免在循环中设置不等式。看到创造有效的优化问题

属性

全部展开

索引名称,指定为字符串或字符向量的单元格数组。有关使用索引名的信息,请参见优化变量的命名索引

数据类型:细胞

此属性是只读的。

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

数据类型:结构体

对象的功能

不可能实行 在某一点违反约束
显示 显示优化对象信息
保存优化对象描述

例子

全部折叠

创建一个4乘6的优化变量矩阵x。

x = optimvar (“x”、4、6);

创建一个不等式每一行x和不超过1。

Constrsum = sum(x,2) <= 1
construcsum = 4x1 Linear OptimizationInequality array with properties: IndexNames: {{} {}} Variables: [1x1 struct] containing 1 OptimizationVariable参见不等式公式with show。

对不平等的看法。

显示(constrsum)
(1,1) x (1,1) + x(1、2)+ (3)+ (4)+ x(1、5)+ x (1,6) < = 1 (2, 1) x (2, 1) + (2, 2) + x(2、3)+ x(2、4)+(2、5)+ x (2,6) < = 1 (3,1) x (1) + (2) + (3) + x(3、4)+ x(3、5)+(3、6)< = 1 (4,1)x (4 1) + (2) + (3) + x (4, 4) + x(4、5)+(4、6)< = 1

为了在优化问题中包含不等式,集a约束财产constrsum通过使用点符号。

概率= optimproblem;prob.Constraints.constrsum = constrsum
prob = OptimizationProblem with properties: Description: " ObjectiveSense: '最小化' Variables: [1x1 struct] containing 1 OptimizationVariable Objective: [0x0 OptimizationExpression] Constraints: [1x1 struct] containing 1 OptimizationConstraint见problem formulation with show. "

创建一个二元变量的约束x一定是在几个圆心和半径都在数组中的圆盘的交点上中心半径

x = optimvar (“x”、1、2);中心= [1 -2;3 -4;-2 3];半径= [6 7 8];若干= optimineq(长度(半径));i = 1:长度总和(若干)若干(i) = ((x -中心(我:))^ 2)< =半径(我)^ 2;结束

查看不等式表达式。

显示(若干)
arg_LHS <= arg_RHS where: arg1 = 0 ([3,1]);arg1(1) = sum((x - extraParams{1}).^2);arg1(2) = sum((x - extraParams{2}).^2);arg1(3) = sum((x - extraParams{3}).^2);arg_LHS = __arg1 (:);Arg1 = 0 ([3, 1]);__arg1 (1) = 36;__arg1 (2) = 49;__arg1 (3) = 64;arg_RHS = __arg1 (:); extraParams{1}: 1 -2 extraParams{2}: 3 -4 extraParams{3}: -2 3

您可以通过对变量使用矩阵操作来创建相同的约束,而不是使用循环。

constr2 =总和(((x, x, x) -中心)^ 2,2)< =半径”。^ 2;

在循环中创建不等式比使用矩阵操作创建不等式更耗时。

介绍了R2019b