MATLAB 帮助中心
一个点处的约束违反值
infeas = infeasibility(constr,pt)
使用 infeasibility 求在某点处的约束违反值数值。
infeasibility
提示
有关完整的工作流,请参阅基于问题的优化工作流或基于问题的方程求解工作流。
infeas = infeasibility(constr,pt) 返回约束 constr 在点 pt 处的违反度量。
infeas
constr
pt
示例
全部折叠
检查一个点是否满足约束。
设置优化变量和两个约束。
x = optimvar('x'); y = optimvar('y'); cons = x + y <= 2; cons2 = x + y/4 <= 1;
检查点 x = 0、y = 4 是否满足名为 cons 的约束。当点的不可行性为零时,该点可行。
x = 0
y = 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]
pt.x = [1,-1;2,3;3,-1]; infeas = infeasibility(cons,pt)
infeas = 3×1 0 2 0
该点对于第二个约束不可行。
OptimizationEquality
OptimizationInequality
OptimizationConstraint
优化约束,指定为 OptimizationEquality 对象、OptimizationInequality 对象或 OptimizationConstraint 对象。constr 可以表示单个约束或约束数组。
示例: 当 x 和 y 是标量变量时,constr = x + y <= 1 是单个约束。
x
y
constr = x + y <= 1
示例: 当 x 是二维或多维数组时,constr = sum(x) == 1 是约束数组。
constr = sum(x) == 1
要计算的点,对于约束中的优化变量,指定为具有与优化变量名称匹配的字段名称的结构体。pt 中每个字段的大小必须与对应优化变量的大小相匹配。
示例: pt.x = 5*eye(3)
pt.x = 5*eye(3)
数据类型: struct
struct
约束的不可行性,以实数数组形式返回。每个零条目表示一个可行约束,每个正条目表示一个不可行约束。infeas 的大小与约束 constr 的大小相同。有关非标量 infeas 的示例,请参阅计算多个约束违反值。
警告
基于问题的方法不支持在目标函数、非线性等式和非线性不等式中使用复数值。如果某函数计算具有复数值,即使是作为中间值,最终结果也可能不正确。
在 R2017b 中推出
OptimizationEquality | OptimizationInequality | OptimizationConstraint | evaluate
evaluate
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处