对具体问题具体分析锥编程写约束
以确保解决
或prob2struct
调用coneprog
对于一个二阶锥问题,指定的二阶锥约束的两种类型:
规范(线性表达式)+常数< =线性表达式
√平方和)+常数< =线性表达式
在这里,线性表达式
意味着一个线性表达式的优化变量。平方和
意味着一个优化变量的显式平方之和,如总和(x ^ 2)。
。目标函数为coneprog
必须是线性优化变量。平方和的形式的更多信息,参见写具体问题具体分析最小二乘法的目标函数。
解决
和prob2struct
也叫coneprog
当约束类型有一个等价的形式列出的两个:
线性表达式> =√平方和+常数
线性表达式> =规范(线性表达式)+常数
const *规范(线性表达式)+常数< =线性表达式
提供const > 0
(平方和)^ 0.5
而不是√平方和
例如,coneprog
是默认解决以下两个公式等价问题当你打电话吗解决
。
x = optimvar (“x”3,…下界的(负负0),…“UpperBound”,正正2);一个=诊断接头([1,1/2,0]);d = [0, 0, 1];f = (1 2 0);probnorm = optimproblem (“目标”f (x);probsumsq = optimproblem (“目标”f (x);consnorm =规范(A * x) < = d ' * x;probnorm.Constraints。consnorm = consnorm;conssumsq =√总和(A * x) ^ 2)) < =点(d, x);probsumsq.Constraints。conssumsq = conssumsq;optnorm = optimoptions (probnorm);类(optnorm)
ans = ' optim.options.ConeprogOptions
optsumsq = optimoptions (probsumsq);类(optsumsq)
ans = ' optim.options.ConeprogOptions
如果你写二阶约束不同,如在数学上等价的√x ' * x)
,解决
调用不同的解算器,等fmincon
。在这种情况下,您需要提供解决
初始点,和解决方案过程可以是不同的(通常是低效率),如以下示例。
x = optimvar (“x”3,…下界的(负负0),…“UpperBound”,正正2);一个=诊断接头([1,1/2,0]);d = [0, 0, 1];f = (1 2 0);概率= optimproblem (“目标”f (x);缺点=√x ' * ' * * x) < = d ' * x;prob.Constraints。缺点=缺点;选择= optimoptions(概率);类(选择)
ans = ' optim.options.Fmincon '