cgal二次规划objective函数
Cgal quadratic programming objective function
我正在尝试最小化如下函数:
25*x^2 + 45*x*y + y^2
和类似的约束,如:
(25 + y) + 25*x <= 1
要在 objective 函数中输入“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" 的方法显然是正确的。
对于objective函数尝试:
qp.set_d(X, Y, 90);
但是你的矩阵 D:
25 22.5
22.5 1
不是半正定的,因此求解器可能会失败。
我正在尝试最小化如下函数:
25*x^2 + 45*x*y + y^2
和类似的约束,如:
(25 + y) + 25*x <= 1
要在 objective 函数中输入“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" 的方法显然是正确的。
对于objective函数尝试:
qp.set_d(X, Y, 90);
但是你的矩阵 D:
25 22.5
22.5 1
不是半正定的,因此求解器可能会失败。