【最优化算法】基于【MATLAB】的最速下降仿真
文章目录
- 前言
- 一、最速下降法介绍
- 二、最速下降法原理
- 三、最速下降法步骤
- 四、最速下降法代码
- 五、最速下降法测试
- 总结
前言
无约束问题的求解过程一般都是通过一系列的一维搜索来实现,搜索方向的不同,形成了不同的最优化方法。这篇文章从最速下降法入手,来进行搜索。
一、最速下降法介绍
最速下降法又叫梯度法,通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代,其过程刚好与最速下降法相反,所以在求解最大值的优化问题时,常常将目标函数加负号之后,转变为求最小值后,使用最速下降法来求解。
二、最速下降法原理
最速下降法是使用负梯度方向
来作为搜索的方向。设f(x)在Xk附近 可微,dk为搜索方向,gk为梯度方向,有Taylor公式可知:
而由导数的定义可知:Xk在沿着搜索方向下降的变化为
当搜索方向与梯度方向的夹角为π时,下降的变化最小,所以负梯度方向是目标函数在已知点的最速下降方向。
三、最速下降法步骤
- 给定初始点x(0),设置允许误差ε
- 计算初始点的导数,确定搜索方向
- 判断梯度范数与允许误差的大小
- 若梯度范数大于允许误差,则进行一维搜索,
否则停止搜索,得到最优解。 - 进行迭代计算
- 迭代次数更新:k=k+1
- 转步骤(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】的最速下降仿真相关推荐
- matlab距离保护程序,基于MATLAB的距离保护仿真.doc
基于MATLAB的距离保护仿真 摘要:本文阐述了如何利用Matlab中的Simulink及SPS工具箱建立线路的距离保护仿真模型,并用S函数编制相间距离保护和接地距离保护算法程序,构建相应的保护模块, ...
- matlab仿真模拟随机过程,基于MATLAB的随机过程仿真.pdf
基于MATLAB的随机过程仿真.pdf < YSPRACTICE 系统实践 基于MATLAB的随机过程仿真 ◆陈建华 彭淑燕 王 伟 李海燕 摘要:为了改善随机过程课程教学中存在的数学概念抽象难 ...
- Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...
本发明属于汽车系统动力学仿真技术领域,特别是一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法. 背景技术: 汽车系统动力学仿真技术是汽车设计制造中一项不可或缺的技术,尤其是在汽车操纵稳 ...
- matlab谐波电流测量,基于MATLAB谐波电流检测仿真研究
随着电力电子器件的广泛应用,系统电流发生畸变,电网中的谐波污染日益严重,影响了供电质量并且造成了电能的浪费,所以电网中的谐波问题的解决备受关注.本文基于瞬时无功功率理论,设计了电网谐波电流实时检测方法 ...
- matlab异步电机仿真,基于MATLAB的异步电动机仿真
基于MATLAB的异步电动机仿真 目 录 1 引言1 2 异步电动机动态数学模型2 2.1异步电动机动态数学模型的性质2 2.2三相异步电动机的多变量非线性数学模型2 2.2.1电压方程3 2.2.2 ...
- matlab飞行数据仿真,基于MATLAB的飞行仿真
收稿日期: 2005 - 05 - 15 第 23卷 第 06期 计 算 机 仿 真 2006年 06月 文章编号: 1006 - 9348 (2006) 06 - 0057 - 05 基于 MATL ...
- 【机械仿真】基于matlab打桩机运动学仿真【含Matlab源码 2101期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab打桩机运动学仿真[含Matlab源码 2101期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
- 【雷达通信】基于matlab雷达探测威力仿真【含Matlab源码 1974期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab雷达探测威力仿真[含Matlab源码 1974期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付 ...
- 基于matlab的电机,基于MATLAB的电机仿真研究
6.4 直流电动机调速仿真 调速是电力拖动机组在运行过程中的最基本要求,直流电动机具有在宽广范围内平滑.经济调速的优良性能.直流电动机有电枢回路串电阻.改变励磁电流和改变端电压三种调速方式. 6.4. ...
- matlab交流电路仿真,【2017年整理】7基于MATLAB的交流电机仿真.ppt
[2017年整理]7基于MATLAB的交流电机仿真 第7章基于MATLAB的交流电机仿真;7.1电力系统模块集;电力系统模块的使用与SIMULINK模块的使用不同,电力系统模块必须在回路中使用,因此每 ...
最新文章
- pandas编写自定义函数高亮显示(highlight)dataframe中的指定内容(数值)(highlighting a specific values or content of a panda
- 2021年春季学期-信号与系统-第十一次作业参考答案-第一小题
- SaltStack 安装、简单配置和远程执行
- 【维纳滤波】通过MATLAB自带的维纳滤波函数进行滤波
- posixkill php,在linux中使用PHP的posix_kill()会导致奇怪的行为
- Android studio .9图片造成的错误总结
- php实现文件留言,PHP文件操作及实例:留言板
- LeetCode-Spiral Matrix-螺旋矩阵
- java mkdir()和mkdirs()区别
- STP/RSTP/MSTP经典分析与对比
- URAL 1081 Binary Lexicographic Sequence
- 公交/地铁出行测试点
- pkm是什么意思_2017年的你应该拥有什么样的PKM系统?
- 微信公众号制作简单线上预约系统,公众号预约系统怎么做
- MTK6589反向修改拼包法操作流程
- After Effects CC 2019 for Mac(AE中文直装版)
- linux查找文件夹命令
- 容器化部署openvpn,访问策略配置
- 5分钟学废携程出品配置中心阿波罗的原理与搭建
- shape属性详解使用