1

我正在尝试使用InteriorPointSolver来解决具有线性约束的标准二次规划问题(根据可以在此处找到的定义)。我的问题没有线性项(定义中的“c”向量)。我通过在所有变量中使用SetCoefficient(Int32, Rational, Int32, Int32)来设置“Q”矩阵(将“目标”行作为 vidRow 传递)。我是否正确假设 InteriorPointSolver 正在最小化二次规划问题的标准定义中定义的目标函数?

我问这个是因为当我自己计算 x^T * Q * x 时(使用我从求解器获得的 x 的最优解),我得到的值与求解器声称的最优目标函数值大不相同(通过 Statistics.Primal 或 GetValue(goal))。唯一一次我的计算和求解器的最佳值一致是当我对 Q 使用单位矩阵时。我猜我设置错误或者我不完全理解正在最小化的函数。

我已经查阅了所有我能找到的文档,但找不到关于内点求解器正在最小化的确切功能的一个很好的解释。谁能指导我正确的方向?

4

1 回答 1

2

事实证明,

SetCoefficient(goal, 2.0, x, y)

效果完全一样

SetCoefficient(goal, 2.0, y, x)

两次调用的效果是在您的目标函数中设置 x*y 项的系数,第二次调用只是覆盖您在第一次调用中设置的系数。求解器不会将 xy 项与 yx 项区别对待,也不会添加系数(如我所料)。因此,如果您的目标是在目标函数中有一个 4xy 项,则必须进行以下调用:

SetCoefficient(goal, 4.0, x, y)

而不是上面列出的两个调用。

于 2012-01-26T19:01:59.740 回答