主要内容

写入基于问题的锥形编程的约束

以确保解决要么prob2struct.呼叫coneprog.对于二阶锥问题,将二阶锥限制指定为两种类型之一:

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

  • SQRT(正方形之和)+常数<=线性表达式

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

解决prob2struct.还要打电话coneprog.当约束类型具有等效表单到两个列出的时:

  • 线性表达> = SQRT(平方和)+常数

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

  • const * norm(线性表达)+常数<=线性表达式假如const> 0.

  • (正方形的总和)^ 0.5代替SQRT(正方形的总和)

例如,coneprog.是您致电时,以下两个等效问题配方中的每一个的默认解算器解决

x = Optimvar('X',3,......'indowbound',[ -  inf,-inf,0],......'上行',[inf,Inf,2]);a = diag([1,1 / 2,0]);d = [0; 0; 1];f = [-1,-2,0];probnorm = OptimProblem('客观的',f * x);probsumsq = OptimProblem('客观的',f * x);consnorm = norm(a * x)<= d'* x;probnorm.constraints.consnorm = consnorm;consssumsq = sqrt(sum((a * x)。^ 2))<= dot(d,x);probsumsq.constraints.conssumsq = consssumsq;OptNorm = Optimoptions(probnorm);班级(Optnorm)
ans ='Optim.Options.coneprogogtions
Optsumsq = Optimoptions(probsumsq);类(Optsumsq)
ans ='Optim.Options.coneprogogtions

如果您以不同方式编写二阶约束,例如数学上等效sqrt(x'* x)解决呼叫不同的求解器,例如粉刺。在这种情况下,您需要提供解决如初始点,并且解决方案过程可以不同(并且通常效率低),如以下示例中那样。

x = Optimvar('X',3,......'indowbound',[ -  inf,-inf,0],......'上行',[inf,Inf,2]);a = diag([1,1 / 2,0]);d = [0; 0; 1];f = [-1,-2,0];prob = OptimProblem('客观的',f * x);缺点= sqrt(x'* a'* a * x)<= d'* x;prob.constraints.cons =缺点;选择= Optimoptions(prob);班级(选择)
ans ='Optim.Options.Fmincon'

也可以看看

||

相关话题