matlab fprintf_工程优化设计与Matlab实现——无约束问题的直接解法(坐标轮换法)...

导数解法通过目标函数的一阶或二阶导数构造了搜索方向,但不是所有函数的导数都是那么容易求得,或者压根就不存在。直接解法规避了求导,从其他角度构造搜索方向、搜索方法。

坐标轮换法

面对一个多维问题,即多个变量影响一个函数结果,如果要我们设计一个实验去得到各个变量对函数结果的影响效果,那么我们自然而然地会去使用控制变量法,即各实验样本之间只保留一个不同的变量。

那么,我们搜索极小值点的时候,是不是也可以用类似的方法呢?

比如说,函数一共有

共n个变量,每一次迭代只让其中一个变量
变化,即沿着
的坐标轴方向移动,找到这个方向的极小值点,并作为下一次的迭代起点;在下一次迭代中只让另一个变量
变化,即沿着
的坐标轴方向移动,再找到这个方向的极小值点,并作为下一次的迭代起点。将“
”的一个轮回作为一个周期,即
方向搜索结束后,回到
方向继续搜索,直到迭代点满足精度要求为止。

0c3f7b1b287445ea7f5b1516647a0c44.png
坐标轮换法流程图

坐标轮换法的核心在于,将多维问题转换为一系列的一维问题。不需要找到特定的方向,只要依次在每个坐标轴方向用一维搜索寻找最优点,不断迭代。这就使坐标轮换法具有了计算量小、存储量小、方法简单的优点,但它必须经过约为迭代次数*n次的一维搜索,导致坐标轮换法面对维数很多的问题时,收敛速度会变慢。

栗子

利用坐标轮换法,求目标函数

,在起始点为
时的极小值点和极小值。

主程序如下:

clc

目标函数定义如下:

function

坐标轮换法函数定义如下:

%-----------坐标轮换法---主函数-----------%

进退法程序:工程优化设计与Matlab实现——一维搜索方法(一)

黄金分割法程序:工程优化设计与Matlab实现——一维搜索方法(二)

计算结果如下:

e49cda91967c9b7035cf1857719cabda.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值