当前位置: 首页 > wzjs >正文

综合商城网站建设免费创建网站

综合商城网站建设,免费创建网站,零陵区住房和城乡建设局网站首页,wordpress慕课优化方法介绍(一) 本博客是一个系列博客,主要是介绍各种优化方法,使用 matlab 实现,包括方法介绍,公式推导和优化过程可视化 1 失败案例介绍 本文在编写最速下降法的时候使用了经典的求解函数框架,并使用了自适应步长(alpha)机制,即加入参数flag,当出现梯度下降的情…

优化方法介绍(一)

本博客是一个系列博客,主要是介绍各种优化方法,使用 matlab 实现,包括方法介绍,公式推导和优化过程可视化

1 失败案例介绍

本文在编写最速下降法的时候使用了经典的求解函数框架,并使用了自适应步长(alpha)机制,即加入参数flag,当出现梯度下降的情况(Fnew>F0)时,flag自增一(flag = flag + 1),当flag大于等于其阈值(fthershold)时,才执行对于步长alpha的改变(alpha = alpha * multiplyer)操作。通过对于初始步长(alpha)、参数flag的阈值(fthershold)和步长改变量(multiplyer)这三个变量的循环寻优。

经过实践发现,这三个参数的最优值分别为

alpha = 1e-3
fthershold = 2
multiplyer = 1.7

最终优化之后的迭代次数(函数Rosenbrock被调用的次数)为17次,未经优化时的次数为26次。初始步长alpha的数值如此小的原因本文进行了探讨,通过对于函数设置断点之后本文发现,在使用梯度函数gradient计算梯度g时,由于极小值eps(或者说sqrt(eps))的数值比较小,为1e-8级,由于数值计算的问题会导致初始点在x1方向上的梯度达到1e3级,故需要alpha的数值取得比较小才能中和这种巨大的梯度,使得alpha*p的值在(0,10)之间。

代码包括
LineSearchFrameWork.m 文件,用于优化的函数

function [F0,x0,FE,xhis] = LineSearchFrameWork()x0 = [2,2]; %Initial searching pointtol = 1e-6; %the tolerance value of resultsFE = 0;     %how many times the Rosenbrock function is runned FEmax = 1e5;%maxium interation timesalpha = 1e-3;  %initial step lengthF0 = Rosenbrock(x0); % initial function valueflag = 0;            % the determination parameterfthers = 2;          % the thershold of the times that gradient goes downxhis = [];xhis = [xhis; x0];while (F0 > tol) && (FE < FEmax)g = gradient(x0, F0);FE = FE + 2;p = -g;xnew = x0 + alpha*p;Fnew = Rosenbrock(xnew);xhis = [xhis; xnew];if Fnew < F0flag = flag + 1;if flag >= fthersalpha = alpha * 1.7;flag = 0;endendx0 = xnew;F0 = Fnew;end
end

Rosenbrock.m 文件,用于 罗森布尔克 函数值的计算的函数

function y = Rosenbrock(x)y = 100*(x(:, 2) - x(:, 1).^2).^2 + (1 - x(:, 1)).^2;
end

gradient.m 文件,计算梯度值的函数

function g = gradient(x, F0)d = sqrt(eps);g = (Rosenbrock(x + ones(1, 2)*d) - F0) / d;

runner.m 文件,主运行文件,用于调用其他的函数

clc; clear all; cleartol = 1e-6;
[F0,x0,FE,xhis] = LineSearchFrameWork();
if F0 < toldisp("成功了!!!!");
elsedisp("lose loser");
end
plot(xhis(:, 1), xhis(:, 2), xhis(:, 1), xhis(:, 2),'*')
title('最速下降法求Rosenbrock函数的局部极小值')
xlabel('x_1'); ylabel('x_2');

运行后的优化结果为

寻优次数x1 值x2 值
122
20.7980.798
30.8176190.817619
40.8504450.850445
50.8812630.881263
60.9280680.928068
70.9615180.961518
80.9954550.995455
90.9999050.999905
project cover MATLAB 运行结果1

下面是对于MATLAB中的函数报告(profile):

project cover MATLAB 函数报告1

初次实验之后,博主发现本文采用的方法是错误的,它只能适用于像(2,2)到最优点(1,1)这样的寻优过程,因为在本文的方法中直接将寻优过程初始点为(2,2)的Rosenbrock函数当作一个单值函数来处理,使得x1和x2同增同减,但是这种方法的适用范围非常小,只能在寻优初始点处的x1和x2相等时才能采用。

从上方的图表中可以看出,本文初次实现的方法是有很大问题的,因为本文是通过提前知道了寻优的初始点是x1=x2=2的特殊情况,而寻优的理想结果也是同样的x1=x2=1,所以采用了将Rosenbrock函数作为单值函数来进行寻优的方法。这样的方法其实是没有意义的,因为它有两个局限性:1)只适用于Rosenbrock函数;2)只适用于寻优初始点为x1=x2=2的特殊情况。本文研究Rosenbrock函数是为了使得寻优算法更加具有普适性,即对于尽可能多的函数尤其是一些特殊函数,都能够进行寻优的操作,而本文组的这个方法却是背离了这个初衷,只是为了解决问题而解决问题,这样的研究是没有多少价值的,如同鸡肋。

这个方法发现过程是一个巧合,在编写最速下降法的时候,对于梯度计算函数gradient函数,本来应该使用单位矩阵eye(2)的地方,错误地使用成了全1矩阵ones(1, 2),但是却奇迹般的找到了最优值,在一开始,本文是兴奋的,因为首次实现的结果就如此的成功,但是在后续的检查过程中本文发现,这个方法其实是错误的,本文后续对于这个方法有进行了反思,就有了上面对于这个方法的叙述和讨论。

2 最速下降法求解过程介绍

最速下降法的坐标更新表达式为

<

http://www.dtcms.com/wzjs/134589.html

相关文章:

  • 用php做网站和go做网站优化 seo
  • 网站服务器多少钱一月济南专业做网站
  • 可以做引流网站的源码如何搭建网站平台
  • 做网站荣耀体验服官网精准营销的典型案例
  • 橙子建站广告怎么收费app推广平台
  • 网站的二级菜单怎么做爱站网怎么用
  • 做网络课堂的平台有哪些网站网络营销推广主要做什么?
  • 手机网站用单独做吗深圳网站优化公司哪家好
  • 河南省住房和城乡建设厅查询网站宁波网站推广大全
  • 抖音是哪家公司开发的软件郑州seo阿伟
  • 苏州吴江区城市建设局网站百度竞价冷门产品
  • 做音乐网站建设的开发平台南京seo外包平台
  • 常州网站建设企业网站站长网
  • 西安建设网站免费私人网站建设平台
  • 网站开发目的与意义ks免费刷粉网站推广马上刷
  • 做古玩的网站经典软文案例100例
  • 网站打开慢的原因福建seo外包
  • 网站做多长时间才会有流量南昌关键词优化软件
  • 兰州专业做网站的公司公司企业网站制作
  • 旅游做攻略用什么网站好如何建立公司网站网页
  • 网站开发人员有哪些谷歌搜索广告优化
  • 网站代运营性价比高淘宝seo搜索排名优化
  • 无锡市建设工程质监站网站建站优化公司
  • 武汉网站建设知名公司排名网络seo是什么工作
  • 华为弹性云做网站千锋教育怎么样
  • 如何把学校网站建设好seo赚钱项目
  • wordpress 图片上传插件网站是否含有seo收录功能
  • 做网站业务员提成几个点seo竞争对手分析
  • mac 无法删除wordpress安卓系统优化大师
  • 橙子建站是干嘛的seo公司重庆