主要内容

编写基于问题的锥规划的约束条件

以确保解决prob2struct调用coneprog对于二阶锥问题,指定二阶锥约束为以下两种类型之一:

  • 范数(线性表达式)+常数<=线性表达式

  • √(平方和)+常数<=线性表达式

在这里,线性表达式表示优化变量中的线性表达式。平方和表示优化变量的显式平方和,例如总和(x ^ 2)。.的目标函数coneprog优化变量必须是线性的。有关平方和形式的更多信息,请参阅编写基于问题的最小二乘的目标函数

解决prob2struct也叫coneprog当约束类型与下面列出的两种形式等价时:

  • 线性表达式>=平方根+常数

  • 线性表达式>=范数(线性表达式)+常数

  • Const *norm(线性表达式)+常量<=线性表达式提供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);connorm = norm(A*x) <= d' x;probnorm.Constraints.consnorm = consnorm;consumsq =√(sum((A*x).^2)) <= dot(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' A'*A*x) <= d' x;prob.Constraints.cons =缺点;选择= optimoptions(概率);类(选择)
ans = ' optim.options.Fmincon '

另请参阅

||

相关的话题