处理二次约束 xy <= z 的方法

计算科学 优化 二次规划 非凸的
2021-12-26 07:17:47

我有非线性约束,比如

x1x2x3

其中目标是线性的,所有其他约束也是线性的。我知道我可以将产品转换为x1,x2,x30

y1=12(x1+x2)

y2=12(x1x2)

y12y22x3

但是当谈到最后一个约束时,它不是凸的(矩阵不是 PSD),因此不适合像 CPLEX 和 Gurobi 这样的商业求解器(据我所知)。此外,它们不是二次可表示的。至少我不知道如何重新制定它们,或者找到合适的近似值(“对实际目的有用”)。现在,我的问题。

是否有一种有效的(在某种程度上)处理这些约束的方法?

我问这个是因为它们看起来很简单,并且约束表达式是凸函数的差异(不同域上的两个凸函数的总和是凸的)。y12(y22+x3)

也许一些放松技巧已被证明是有用的?凸性?换句话说,如何规避这一点?

2个回答

如果这是您问题的唯一相关部分,您可以将其编写为半定程序。由于不会单独出现,您可以将其视为正数的平方,那么您的问题是x1,x2

(x3yy1y)0
其中y=x1x2

正如我在评论中所说,我得到了一个新提示:https ://www.or-exchange.org/questions/14687/approach-to-resolve-the-issue-with-a-non-linear-constraint-xy -z

可以用对数函数攻击双线性约束。因此,我们可以引入新变量并且我们的约束将变为zi=ln(xi)

z1+z2z3

当然,我们也必须包括额外的约束。特别是那些代表zixi

exp(zi)=xi

但是指数函数在实际应用中是二次可表示的。