主要内容

对具体问题具体分析锥编程写约束

以确保解决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 '

另请参阅

||

相关的话题