我正在使用 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^2CGAL 中的目标函数,我应该怎么做?