导数解法通过目标函数的一阶或二阶导数构造了搜索方向,但不是所有函数的导数都是那么容易求得,或者压根就不存在。直接解法规避了求导,从其他角度构造搜索方向、搜索方法。
坐标轮换法
面对一个多维问题,即多个变量影响一个函数结果,如果要我们设计一个实验去得到各个变量对函数结果的影响效果,那么我们自然而然地会去使用控制变量法,即各实验样本之间只保留一个不同的变量。
那么,我们搜索极小值点的时候,是不是也可以用类似的方法呢?
比如说,函数一共有
![0c3f7b1b287445ea7f5b1516647a0c44.png](https://i-blog.csdnimg.cn/blog_migrate/6db6786c9b19b37922d3295c0ae02fe8.jpeg)
坐标轮换法的核心在于,将多维问题转换为一系列的一维问题。不需要找到特定的方向,只要依次在每个坐标轴方向用一维搜索寻找最优点,不断迭代。这就使坐标轮换法具有了计算量小、存储量小、方法简单的优点,但它必须经过约为迭代次数*n次的一维搜索,导致坐标轮换法面对维数很多的问题时,收敛速度会变慢。
栗子
利用坐标轮换法,求目标函数
主程序如下:
clc
目标函数定义如下:
function
坐标轮换法函数定义如下:
%-----------坐标轮换法---主函数-----------%
进退法程序:工程优化设计与Matlab实现——一维搜索方法(一)
黄金分割法程序:工程优化设计与Matlab实现——一维搜索方法(二)
计算结果如下:
![e49cda91967c9b7035cf1857719cabda.png](https://i-blog.csdnimg.cn/blog_migrate/e3367aded76abc3935d754e3809cc347.png)