实现共轭梯度法蒙皮模拟
原创
©著作权归作者所有:来自51CTO博客作者mb6130366233d76的原创作品,请联系作者获取转载授权,否则将追究法律责任
今天把一维搜索和共轭梯度法加在牛顿法前面,发现模拟比较顺利了。
这个是模拟的结果,从左到右硬度递增
在某些情况下还是有问题,如图
在伸直姿态附近容易走到局部极值。
发现模拟失败有以下几种情况:
1. 牛顿法失败
以下是其中失败的一步:
G=[50482.700496 -243431.343366 ];
f = 186558.898373, |GP| = 248610.784123, minGradSize = 1.000000e-002 //
H=[
28632233.818952 -2630383.518856
-2630383.518856 240824.928732
];
此时Hessian为不定矩阵,有负特征值-816
尝试转为最速下降法
2.共轭梯度法失败
通常是选择了太大的步长
下一步着手解决这两个问题。
牛顿法失败,解决Hessian不定、半正定的问题
共轭梯度法失败,改良一维搜索算法,尽可能找到合适步长