文章目录

  • 前言
  • 一、最速下降法介绍
  • 二、最速下降法原理
  • 三、最速下降法步骤
  • 四、最速下降法代码
  • 五、最速下降法测试
  • 总结

前言

无约束问题的求解过程一般都是通过一系列的一维搜索来实现,搜索方向的不同,形成了不同的最优化方法。这篇文章从最速下降法入手,来进行搜索。


一、最速下降法介绍

最速下降法又叫梯度法,通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代,其过程刚好与最速下降法相反,所以在求解最大值的优化问题时,常常将目标函数加负号之后,转变为求最小值后,使用最速下降法来求解。

二、最速下降法原理

最速下降法是使用负梯度方向

来作为搜索的方向。设f(x)在Xk附近 可微,dk为搜索方向,gk为梯度方向,有Taylor公式可知:

而由导数的定义可知:Xk在沿着搜索方向下降的变化为



当搜索方向与梯度方向的夹角为π时,下降的变化最小,所以负梯度方向是目标函数在已知点的最速下降方向。

三、最速下降法步骤

  1. 给定初始点x(0),设置允许误差ε
  2. 计算初始点的导数,确定搜索方向
  3. 判断梯度范数与允许误差的大小
  4. 若梯度范数大于允许误差,则进行一维搜索,
    否则停止搜索,得到最优解。
  5. 进行迭代计算
  6. 迭代次数更新:k=k+1
  7. 转步骤(2)继续进行后续搜索,直至得到局部最优解。

四、最速下降法代码

function [k, ender]=fun(f,x,e)
%最速下降法,f为目标函数
syms x1 x2 m; %x1、x2为变量,m为步长
d=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,组合为梯度
flag=1;  %循环标志
k=0; %迭代次数
while(flag)d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值nor=norm(d_temp); %范数if(nor>=e)x_temp=x+m*d_temp;            %改变初始点x的值f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数f_temp=subs(f_temp,x2,x_temp(2));h=diff(f_temp,m);  %对m求导,求出最佳步长m_temp=solve(h);   %求方程,得到当次mx=x+m_temp*d_temp; %更新起始点xk=k+1;%迭代次数增加elseflag=0;end
end
ender=double(x);  %搜索的终点
end

五、最速下降法测试

测试以二元函数发f(x1,x2)=2*x1^2 + x2^2为例:

syms x1 x2;
f=2*x1^2+x2^2;
e=0.1;
x=[1;1];
[k,ender]=fun(f,x,e)k =3ender =-0.00820.0329

经过三次迭代,误差小于允许误差,最终最优解在(-0.0082,0.0329)处取得。


总结

在有限的迭代次数内,只能得到局部最优解,不一定能够取得真正的最优解,而且最速下降法是根据梯度来进行迭代,所以搜索的的实际曲线是锯齿形的曲线,越接近到最优解的点,下降的速度越缓慢。

【最优化算法】基于【MATLAB】的最速下降仿真相关推荐

  1. matlab距离保护程序,基于MATLAB的距离保护仿真.doc

    基于MATLAB的距离保护仿真 摘要:本文阐述了如何利用Matlab中的Simulink及SPS工具箱建立线路的距离保护仿真模型,并用S函数编制相间距离保护和接地距离保护算法程序,构建相应的保护模块, ...

  2. matlab仿真模拟随机过程,基于MATLAB的随机过程仿真.pdf

    基于MATLAB的随机过程仿真.pdf < YSPRACTICE 系统实践 基于MATLAB的随机过程仿真 ◆陈建华 彭淑燕 王 伟 李海燕 摘要:为了改善随机过程课程教学中存在的数学概念抽象难 ...

  3. Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...

    本发明属于汽车系统动力学仿真技术领域,特别是一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法. 背景技术: 汽车系统动力学仿真技术是汽车设计制造中一项不可或缺的技术,尤其是在汽车操纵稳 ...

  4. matlab谐波电流测量,基于MATLAB谐波电流检测仿真研究

    随着电力电子器件的广泛应用,系统电流发生畸变,电网中的谐波污染日益严重,影响了供电质量并且造成了电能的浪费,所以电网中的谐波问题的解决备受关注.本文基于瞬时无功功率理论,设计了电网谐波电流实时检测方法 ...

  5. matlab异步电机仿真,基于MATLAB的异步电动机仿真

    基于MATLAB的异步电动机仿真 目 录 1 引言1 2 异步电动机动态数学模型2 2.1异步电动机动态数学模型的性质2 2.2三相异步电动机的多变量非线性数学模型2 2.2.1电压方程3 2.2.2 ...

  6. matlab飞行数据仿真,基于MATLAB的飞行仿真

    收稿日期: 2005 - 05 - 15 第 23卷 第 06期 计 算 机 仿 真 2006年 06月 文章编号: 1006 - 9348 (2006) 06 - 0057 - 05 基于 MATL ...

  7. 【机械仿真】基于matlab打桩机运动学仿真【含Matlab源码 2101期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab打桩机运动学仿真[含Matlab源码 2101期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  8. 【雷达通信】基于matlab雷达探测威力仿真【含Matlab源码 1974期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab雷达探测威力仿真[含Matlab源码 1974期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付 ...

  9. 基于matlab的电机,基于MATLAB的电机仿真研究

    6.4 直流电动机调速仿真 调速是电力拖动机组在运行过程中的最基本要求,直流电动机具有在宽广范围内平滑.经济调速的优良性能.直流电动机有电枢回路串电阻.改变励磁电流和改变端电压三种调速方式. 6.4. ...

  10. matlab交流电路仿真,【2017年整理】7基于MATLAB的交流电机仿真.ppt

    [2017年整理]7基于MATLAB的交流电机仿真 第7章基于MATLAB的交流电机仿真;7.1电力系统模块集;电力系统模块的使用与SIMULINK模块的使用不同,电力系统模块必须在回路中使用,因此每 ...

最新文章

  1. pandas编写自定义函数高亮显示(highlight)dataframe中的指定内容(数值)(highlighting a specific values or content of a panda
  2. 2021年春季学期-信号与系统-第十一次作业参考答案-第一小题
  3. SaltStack 安装、简单配置和远程执行
  4. 【维纳滤波】通过MATLAB自带的维纳滤波函数进行滤波
  5. posixkill php,在linux中使用PHP的posix_kill()会导致奇怪的行为
  6. Android studio .9图片造成的错误总结
  7. php实现文件留言,PHP文件操作及实例:留言板
  8. LeetCode-Spiral Matrix-螺旋矩阵
  9. java mkdir()和mkdirs()区别
  10. STP/RSTP/MSTP经典分析与对比
  11. URAL 1081 Binary Lexicographic Sequence
  12. 公交/地铁出行测试点
  13. pkm是什么意思_2017年的你应该拥有什么样的PKM系统?
  14. 微信公众号制作简单线上预约系统,公众号预约系统怎么做
  15. MTK6589反向修改拼包法操作流程
  16. After Effects CC 2019 for Mac(AE中文直装版)
  17. linux查找文件夹命令
  18. 容器化部署openvpn,访问策略配置
  19. 5分钟学废携程出品配置中心阿波罗的原理与搭建
  20. shape属性详解使用

热门文章

  1. Hides for Mac v5.6.0.1 一键隐藏所有应用
  2. tcl网络电视android无法启动,tcl智能电视系统升级和刷机常见问题解答
  3. 多用户商城系统源码_业务逻辑功能思维导图_OctShop
  4. hdu 校赛 油菜花王国
  5. 什么是敏捷开发Scrum
  6. 以太坊编程涉及那些开发语言?
  7. 使用AI提取文字路径
  8. 增强现实中的光学透射式头盔显示器的标定初步
  9. 软件配置 | pip下载第三方库文件及配置pip源的不完全总结
  10. matlab中门函数怎么化,Matlab中函数tf2zp的解析