Matlab 当Hessian不对称时,如何停止quadprog?

Matlab 当Hessian不对称时,如何停止quadprog?,matlab,quadprog,Matlab,Quadprog,我试图用MATLAB的函数quadprog解决一个二次优化问题。实际上,我正在尝试使用for循环来解决许多(不是一个)串联的二次优化问题,其中每个qp取决于之前qp结果的结果。问题是,有时根据初始点,会出现警告:“您的Hessian不对称。重置H=(H+H')/2.” 问题1和问题2:这是否意味着解算器没有生成(正确的)解决方案?或者情况是,当使用新的hessian时,可以认为生成的决策向量是正确的,即最小化目标函数的决策向量 我(无知)的想法是,在这种情况下,我应该停止模拟,尝试不同的初始点。

我试图用MATLAB的函数quadprog解决一个二次优化问题。实际上,我正在尝试使用for循环来解决许多(不是一个)串联的二次优化问题,其中每个qp取决于之前qp结果的结果。问题是,有时根据初始点,会出现警告:“您的Hessian不对称。重置H=(H+H')/2.”

问题1和问题2:这是否意味着解算器没有生成(正确的)解决方案?或者情况是,当使用新的hessian时,可以认为生成的决策向量是正确的,即最小化目标函数的决策向量


我(无知)的想法是,在这种情况下,我应该停止模拟,尝试不同的初始点。但我预计exit标志将从1更改为其他值,并且使用简单的if-exitflag~=1返回结束循环,进程将停止。但事实并非如此。退出标志没有改变,但决策变量向量似乎不是正确答案。

通常很难回答。你如何构造你的黑森?您可以检查
H==H'
max(abs(H-H'))
。通常很难回答。你如何构造你的黑森?您可以检查
H==H'
max(abs(H-H'))