我正在尝试最小化如下函数:
25*x^2 + 45*x*y + y^2
和类似的约束,如:
(25 + y) + 25*x <= 1
要在目标函数中输入“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 <= -24”
qp.set_a(X, 0, 25);
qp.set_a(Y, 0, 1);
qp.set_b(0, -24);
(如有错误请指正)
如果有任何建议,我将不胜感激,尤其是“45*x*y”问题。
最佳答案
您将“(25 + y) + 25*x <= 1”替换为“y + 25*x <= -24”的方法显然是正确的。
对于目标函数尝试:
qp.set_d(X, Y, 90);
但是你的矩阵 D:
25 22.5
22.5 1
不是半正定的,因此求解器可能会失败。
关于c++ - Cgal二次规划目标函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49922432/