我正在使用 CGAL 来解决一些二次规划问题。
假设我想最小化x^2
从x
( -oo
-infinity) 到
+oo
. 这可以通过以下方式轻松解决:
Program qp (CGAL::SMALLER, false, 0, false, 0);
qp.set_d(0, 0, 2);
Solution s = CGAL::solve_quadratic_program(qp, ET());
结果当然会返回0
。现在假设我想最大化
x^2
. 为此,我必须最小化-x^2
. 但是以下内容在 CGAL 中不起作用:
Program qp (CGAL::SMALLER, false, 0, false, 0);
qp.set_d(0, 0, -2);
Solution s = CGAL::solve_quadratic_program(qp, ET());
因为现在的矩阵D = [-2]
不是半正定的(二次规划问题的 API “要求” D 是半正定的)。通过运行上面的代码片段,0
会返回错误的结果而不是-oo
.
为了最大化像x^2
CGAL 中的目标函数,我应该怎么做?