今天把一维搜索和共轭梯度法加在牛顿法前面,发现模拟比较顺利了。
这个是模拟的结果,从左到右硬度递增
实现共轭梯度法蒙皮模拟_搜索实现共轭梯度法蒙皮模拟_极值_02实现共轭梯度法蒙皮模拟_极值_03
 
在某些情况下还是有问题,如图
实现共轭梯度法蒙皮模拟_搜索算法_04
在伸直姿态附近容易走到局部极值。
 
发现模拟失败有以下几种情况:
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不定、半正定的问题
共轭梯度法失败,改良一维搜索算法,尽可能找到合适步长