Gurobi error 10020:约束Q不是PSD(需要对角线调整5.6e+01)
大家好!
我在用二次约束求解优化问题:
x'*Q*x + Q '*x >= c。
Q是半确定的正数。所要求的调整非常大,所以我假设这不是一个近似误差。原因可能是什么?我还知道,在我正在执行的优化的特定实例中,约束对于最优是无效的(目标函数受到其他一些线性约束的限制)。
谢谢!
如果有人想看一看问题,这是如下:
\模型matlab
\ LP格式-用于模型浏览。使用MPS格式捕获完整的模型细节。
最大化
4.5 a_1_s_3 a_1_s_2 a_1_s_1 + 3.5 + 2.5 + 1.5 a_1_s_4 a_1_s_5 + 0.5
+ 4.5 a_2_s_3 a_2_s_2 a_2_s_1 + 3.5 + 2.5 + 1.5 a_2_s_4 a_2_s_5 + 0.5
受
R0: a_1_s_1 <= 3
R1: a_1_s_2 <= 3
R2: a_1_s_3 <= 3
R3: a_1_s_4 <= 3
R4: a_1_s_5 <= 3
R5: a_2_s_1 <= 3
R6: a_2_s_2 <= 3
R7: a_2_s_3 <= 3
R8: a_2_s_4 <= 3
R9: a_2_s_5 <= 3
R10: a_1_s_1 <= 1.758458454848485
R11: a_1_s_1 + a_1_s_2 <= 1.758458454848485
R12: a_1_s_1 + a_1_s_2 + a_1_s_3 <= 1.758458454848485
R13: a_1_s_1 + a_1_s_2 + a_1_s_3 + a_1_s_4 < = 1.758458454848485
R14: a_1_s_1 + a_1_s_2 + a_1_s_3 + a_1_s_4 + a_1_s_5 < = 1.758458454848485
R15: a_2_s_1 <= 7.435834567878438
R16: a_2_s_1 + a_2_s_2 <= 7.435834567878438
R17: a_2_s_1 + a_2_s_2 + a_2_s_3 <= 7.435834567878438
R18: a_2_s_1 + a_2_s_2 + a_2_s_3 + a_2_s_4 < = 7.435834567878438
R19: a_2_s_1 + a_2_s_2 + a_2_s_3 + a_2_s_4 + a_2_s_5 < = 7.435834567878438
R20: a_1_s_1 >= -0.1
R21: a_1_s_2 >= -0.1
R22: a_1_s_3 >= -0.1
R23: a_1_s_4 >= -0.1
R24: a_1_s_5 >= -0.1
R25: a_2_s_1 >= -0.1
R26: a_2_s_2 >= -0.1
R27: a_2_s_3 >= -0.1
R28: a_2_s_4 >= -0.1
R29: a_2_s_5 >= -0.1
R30: a_1_s_1 >= -13.24154154515152
R31: a_1_s_1 + a_1_s_2 >= -13.24154154515152
R32: a_1_s_1 + a_1_s_2 + a_1_s_3 >= -13.24154154515152
R33: a_1_s_1 + a_1_s_2 + a_1_s_3 + a_1_s_4 > = -13.24154154515152
R34: a_1_s_1 + a_1_s_2 + a_1_s_3 + a_1_s_4 + a_1_s_5
> = -13.24154154515152
R35: a_2_s_1 >= -7.564165432121562
R36: a_2_s_1 + a_2_s_2 >= -7.564165432121562
R37: a_2_s_1 + a_2_s_2 + a_2_s_3 >= -7.564165432121562
R38: a_2_s_1 + a_2_s_2 + a_2_s_3 + a_2_s_4 > = -7.564165432121562
R39: a_2_s_1 + a_2_s_2 + a_2_s_3 + a_2_s_4 + a_2_s_5
> = -7.564165432121562
Qc0: - 371.6306304681818 a_1_s_1 - 289.046045919697 a_1_s_2
- 206.4614613712121 a_1_s_3 - 123.8768768227273 a_1_s_4
—41.29229227424243 a_1_s_5—582.11255555453 a_2_s_1
—452.7542098757456 a_2_s_2—323.3958641969611 a_2_s_3
- 194.0375185181767 a_2_s_4 - 64.67917283939222 a_2_s_5 + [
20.25 a_1_s_1 ^ 2 + 31.5 a_1_s_1 * a_1_s_2 + 22.5 a_1_s_1 * a_1_s_3
+ 13.5 a_1_s_1 * a_1_s_4 + 4.5 a_1_s_1 * a_1_s_5 + 12.25 a_1_s_2 ^ 2
+ 17.5 a_1_s_2 * a_1_s_3 + 10.5 a_1_s_2 * a_1_s_4
6.25 + 3.5 a_1_s_2 * a_1_s_5 + a_1_s_3 ^ 2 + 7.5 a_1_s_3 * a_1_s_4
2.25 + 2.5 a_1_s_3 * a_1_s_5 + a_1_s_4 ^ 2 + 1.5 a_1_s_4 * a_1_s_5
20.25 + 0.25 a_1_s_5 ^ 2 + a_2_s_1 ^ 2 + 31.5 a_2_s_1 * a_2_s_2
+ 22.5 a_2_s_1 * a_2_s_3 + 13.5 a_2_s_1 * a_2_s_4
12.25 + 4.5 a_2_s_1 * a_2_s_5 + a_2_s_2 ^ 2 + 17.5 a_2_s_2 * a_2_s_3
+ 10.5 a_2_s_2 * a_2_s_4 + 3.5 a_2_s_2 * a_2_s_5 + 6.25 a_2_s_3 ^ 2
+ 7.5 a_2_s_3 * a_2_s_4 + 2.5 a_2_s_3 * a_2_s_5 + 2.25 a_2_s_4 ^ 2
0.25 + 1.5 a_2_s_4 * a_2_s_5 + a_2_s_5 ^ 2] > = -5554.576490445143
界限
结束
-
嗨,基督徒,
如果Q是正半定的,那么约束(x^\top Q x + c^\top x \leq b)是凸的,但约束(x^\top Q x + c^\top x \geq b)不是凸的。一个简单的例子可以在\(\mathbb{R}^2 \)中找到:集合\(\{(x,y): y^2 \leq x \} \)是凸的,但集合\(\{(x,y): y^2 \geq x \} \)不是凸的。
尽管如此,Gurobi 9.0能够解决具有非凸约束和目标的问题。要启用此功能,请设置非凸参数2。
我希望这能有所帮助。谢谢!
伊莱
请登录留下评论。
评论
1评论