我正在尝试最小化以下功能:
25*x^2 + 45*x*y + y^2
和类似的约束:
(25 + y) + 25*x <= 1
<{3>}中的。
要在目标函数中输入“25x ^ 2”和“y ^ 2”,我可以执行以下操作:
qp.set_d(X, X, 50);
qp.set_d(Y, Y, 2);
但是“45 * x * y”呢?
以及如何添加此约束“(25 + y)+ 25 * x <= 1” 在我看来像这样,但我不确定25:
qp.set_a(X, 0, 25);
qp.set_a(Y, 0, 1);
qp.set_b(0, 1);
一种解决方案应该是将功能更新为此格式“y + 25 * x&lt; = -24”
qp.set_a(X, 0, 25);
qp.set_a(Y, 0, 1);
qp.set_b(0, -24);
(如果我错了,请在约束中纠正我)
我会感激任何建议,尤其是“45 * x * y”问题。
答案 0 :(得分:1)
你的替换方法&#34;(25 + y)+ 25 * x&lt; = 1&#34; by&#34; y + 25 * x&lt; = -24&#34;显然是正确的。
对于目标函数,尝试:
qp.set_d(X, Y, 90);
但你的矩阵D:
25 22.5
22.5 1
不是半正的,因此求解器可能会失败。