实现共轭梯度法蒙皮模拟

今天把一维搜索和共轭梯度法加在牛顿法前面,发现模拟比较顺利了。
这个是模拟的结果,从左到右硬度递增
rodCG0.gifrodCG.gifrodCG2.gif

在某些情况下还是有问题,如图
problem.gif
在伸直姿态附近容易走到局部极值。

发现模拟失败有以下几种情况:
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不定、半正定的问题
共轭梯度法失败,改良一维搜索算法,尽可能找到合适步长





原文地址:https://www.cnblogs.com/dydx/p/4275138.html