在无约束问题的导数解法中,我们借助梯度方向构造了“两头牛的轭”,我们称其为共轭梯度法。(详情见工程优化设计与Matlab实现——无约束问题的导数解法(四))
在这里,我们不再依赖梯度方向,而从其他角度来入手,构造共轭方向。
共轭方向法
Point 1 共轭方向与函数极值的关系
由于目标函数可以使用在任一点
从而转换为求
所以我们可以先以二元二次函数为例进行说明:
对于具有正定矩阵
有两个性质:
一个是:其等值线为同心椭圆族,中心为极值点;
另一个是:过椭圆族中心的直线与椭圆交点处诸切线相互平行
根据这两个性质有如下推论:按任意搜索方向
所以,如果由
![0334ac1541982739bfe7546cb764814a.png](https://img-blog.csdnimg.cn/img_convert/0334ac1541982739bfe7546cb764814a.png)
推广到n元二次函数
对于具有
其性质如下:
如果n元二次函数有n个共轭方向
对于任意目标函数
任意目标函数
Point 2 共轭方向的构成
![2c191a50d454921babd739a95f0540f1.png](https://img-blog.csdnimg.cn/img_convert/2c191a50d454921babd739a95f0540f1.png)
选取线性无关的坐标单位矢量
从
直到第n次循环,构造出
对于n元二次函数F(x),从初始点
![983ca7717c42d01b92eb967f58644383.png](https://img-blog.csdnimg.cn/img_convert/983ca7717c42d01b92eb967f58644383.png)
Point 3 共轭方向法的特点
共轭方向法与坐标轮换法是十分接近的,共轭方向法用构造出来的更优的共轭方向来代替原来的单位矢量方向,这就相当于对坐标轮换法的搜索方向进行了优化,使之能更快的收敛。
但是这样构造出一个方向后就将其用于计算,很可能导致迭代中的n个搜索方向有时会变成线性相关,不能形成共轭方向,导致搜索失败(如下图)。这就需要对共轭方向法进行改进——鲍威尔法(见栗子后面)。
![460e3a28ac3786ff4e8f42660e906b5a.png](https://img-blog.csdnimg.cn/img_convert/460e3a28ac3786ff4e8f42660e906b5a.png)
Point 4 共轭方向法的栗子
利用共轭方向法求目标函数
主程序:
clc
目标函数:
function
共轭方向法函数:
%-----------共轭方向法---主函数-----------%
进退法程序:工程优化设计与Matlab实现——一维搜索方法(一)
黄金分割法程序:工程优化设计与Matlab实现——一维搜索方法(二)
计算结果为:
![988ca85d69f11c2cd8e81f6e7db981ba.png](https://img-blog.csdnimg.cn/img_convert/988ca85d69f11c2cd8e81f6e7db981ba.png)
鲍威尔法
鲍威尔法是共轭方向法的一种,克服了共轭方向法更新的搜索方向与原向量组中的向量可能出现线性相关的缺点。
具体改进如下:
在原n个方向和每轮求出的新方向(
选择原则:所选择的n个方向矢量是线性无关的——必要条件;并最大限度地保证所选择的n个方向矢量是关于A共轭。
Point 1 Powell判别
初始搜索时,采用共轭方向法完成一轮迭代,即从
求出反射点
若
则将
若
去掉
![cd676291fc2c943f411cedae1170f7ee.png](https://img-blog.csdnimg.cn/img_convert/cd676291fc2c943f411cedae1170f7ee.png)
Point 2 栗子
利用鲍威尔法求目标函数
主程序:
clc
目标函数定义:
function
鲍威尔法函数定义:
%-----------鲍威尔法---主函数-----------%
进退法程序:工程优化设计与Matlab实现——一维搜索方法(一)
黄金分割法程序:工程优化设计与Matlab实现——一维搜索方法(二)
计算结果为:
![a05d154aab040428ac3d4eb3d6c668be.png](https://img-blog.csdnimg.cn/img_convert/a05d154aab040428ac3d4eb3d6c668be.png)