我正在使用CGAL解决一些二次规划问题。
假设我想要使x
从-oo
(负无穷)到+oo
,最小化x^2
。这可以通过以下方式轻松解决:
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
。在 CGAL 中如何最大化类似于
x^2
的目标函数?