Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

infeasibility

一个点处的约束违反值

说明

使用 infeasibility 求在某点处的约束违反值数值。

提示

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

示例

infeas = infeasibility(constr,pt) 返回约束 constr 在点 pt 处的违反度量。

示例

全部折叠

检查一个点是否满足约束。

设置优化变量和两个约束。

x = optimvar('x');
y = optimvar('y');
cons = x + y <= 2;
cons2 = x + y/4 <= 1;

检查点 x = 0y = 4 是否满足名为 cons 的约束。当点的不可行性为零时,该点可行。

pt.x = 0;
pt.y = 4;
infeas = infeasibility(cons,pt)
infeas = 2

该点在此约束下不可行。

检查对于其他约束的可行性。

infeas = infeasibility(cons2,pt)
infeas = 0

该点对于此约束可行。

检查点是否满足一个具有多个条件的约束。

设置优化变量和约束向量。

x = optimvar('x',3,2);
cons = sum(x,2) <= [1;3;2];

检查点 pt.x = [1,-1;2,3;3,-1] 是否满足这些约束。

pt.x = [1,-1;2,3;3,-1];
infeas = infeasibility(cons,pt)
infeas = 3×1

     0
     2
     0

该点对于第二个约束不可行。

输入参数

全部折叠

优化约束,指定为 OptimizationEquality 对象、OptimizationInequality 对象或 OptimizationConstraint 对象。constr 可以表示单个约束或约束数组。

示例: xy 是标量变量时,constr = x + y <= 1 是单个约束。

示例: x 是二维或多维数组时,constr = sum(x) == 1 是约束数组。

要计算的点,对于约束中的优化变量,指定为具有与优化变量名称匹配的字段名称的结构体。pt 中每个字段的大小必须与对应优化变量的大小相匹配。

示例: pt.x = 5*eye(3)

数据类型: struct

输出参数

全部折叠

约束的不可行性,以实数数组形式返回。每个零条目表示一个可行约束,每个正条目表示一个不可行约束。infeas 的大小与约束 constr 的大小相同。有关非标量 infeas 的示例,请参阅计算多个约束违反值

警告

基于问题的方法不支持目标函数、非线性等式或非线性不等式中使用复数值。如果某函数计算具有复数值,即使是作为中间值,最终结果也可能不正确。

版本历史记录

在 R2017b 中推出