大连理工大学优化方法上机作业

上传人:大米 文档编号:476196174 上传时间:2023-07-21 格式:DOC 页数:10 大小:88.91KB
返回 下载 相关 举报
大连理工大学优化方法上机作业_第1页
第1页 / 共10页
大连理工大学优化方法上机作业_第2页
第2页 / 共10页
大连理工大学优化方法上机作业_第3页
第3页 / 共10页
大连理工大学优化方法上机作业_第4页
第4页 / 共10页
大连理工大学优化方法上机作业_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《大连理工大学优化方法上机作业》由会员分享,可在线阅读,更多相关《大连理工大学优化方法上机作业(10页珍藏版)》请在金锄头文库上搜索。

1、大连理工大学优化方法上机大作业优化方法上机大作业 学 院:电子信息与电气工程学部 姓 名: 学 号: 指导老师: 上机大作业(一)%目标函数function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;end%目标函数梯度function gf=gfun(x)gf=-400*x(1)*(x(2)-x(1)2)-2*(1-x(1);200*(x(2)-x(1)2);End%目标函数Hess矩阵function He=Hess(x)He=1200*x(1)2-400*x(2)+2,-400*x(1); -400*x(1), 200;end%线搜索步长function

2、mk=armijo(xk,dk)beta=0.5; sigma=0.2;m=0; maxm=20;while (m=maxm) if(fun(xk+betam*dk)=fun(xk)+sigma*betam*gfun(xk)*dk) mk=m; break; end m=m+1;endalpha=betamknewxk=xk+alpha*dkfk=fun(xk)newfk=fun(newxk)%最速下降法function k,x,val=grad(fun,gfun,x0,epsilon)%功能:梯度法求解无约束优化问题:minf(x)%输入:fun,gfun分别是目标函数及其梯度,x0是初始点

3、,% epsilon为容许误差%输出:k是迭代次数,x,val分别是近似最优点和最优值maxk=5000; %最大迭代次数beta=0.5; sigma=0.4;k=0;while(kmaxk) gk=feval(gfun,x0); %计算梯度 dk=-gk; %计算搜索方向 if(norm(gk)epsilon), break;end %检验终止准则 m=0;mk=0; while(m20) %用Armijo搜索步长 if(feval(fun,x0+betam*dk) x0=0;0; k,x,val=grad(fun,gfun,x0,1e-4)迭代次数:k = 1033x = 0.9999

4、0.9998val = 1.2390e-008%牛顿法x0=0;0;ep=1e-4;maxk=10;k=0;while(kmaxk) gk=gfun(x0); if(norm(gk)ep) x=x0 miny=fun(x) k0=k break; else H=inv(Hess(x0); x0=x0-H*gk; k=k+1; endendx = 1.0000 1.0000miny = 4.9304e-030迭代次数k0 = 2%BFGS方法function k,x,val=bfgs(fun,gfun,x0,varargin)%功能:梯度法求解无约束优化问题:minf(x)%输入:fun,gfu

5、n分别是目标函数及其梯度,x0是初始点,% epsilon为容许误差%输出:k是迭代次数,x,val分别是近似最优点和最优值N=1000;epsilon=1e-4;beta=0.55;sigma=0.4;n=length(x0);Bk=eye(n);k=0;while(kN) gk=feval(gfun,x0,varargin:); if(norm(gk)epsilon), break;end dk=-Bkgk; m=0;mk=0; while(m20) newf=feval(fun,x0+betam*dk,varargin:); oldf=feval(fun,x0,varargin:); i

6、f(newf0) Bk=Bk-(Bk*sk*sk*Bk)/(sk*Bk*sk)+(yk*yk)/(yk*sk); end k=k+1; x0=x;endval=feval(fun,x0,varargin:); x0=0;0; k,x,val=bfgs(fun,gfun,x0)k = 20x = 1.0000 1.0000val = 2.2005e-011%共轭梯度法function k,x,val=frcg(fun,gfun,x0,epsilon,N)if nargin5,N=1000;endif nargin4, epsilon=1e-4;endbeta=0.6;sigma=0.4;n=le

7、ngth(x0);k=0;while(k=0),dk=-gk;end end if(norm(gk)epsilon),break;end m=0;mk=0; while(m20) if(feval(fun,x0+betam*dk) x0=0;0;k,x,val=frcg(fun,gfun,x0,1e-4,1000)k = 122x = 1.0001 1.0002val = 7.2372e-009上机大作业(二)%目标函数function f_x=fun(x)f_x=4*x(1)-x(2)2-12;%等式约束条件function he=hf(x)he=25-x(1)2-x(2)2;end%不等式

8、约束条件function gi_x=gi(x,i)switch i case 1 gi_x=10*x(1)-x(1)2+10*x(2)-x(2)2-34; case 2 gi_x=x(1); case 3 gi_x=x(2); otherwiseend%求目标函数的梯度function L_grad=grad(x,lambda,cigma)d_f=4;2*x(2);d_g(:,1)=-2*x(1);-2*x(2);d_g(:,2)=10-2*x(1);10-2*x(2);d_g(:,3)=1;0;d_g(:,4)=0;1;L_grad=d_f+(lambda(1)+cigma*hf(x)*d_

9、g(:,1);for i=1:3 if lambda(i+1)+cigma*gi(x,i)eps&k_B=10000 dk=-Hk*gk; m=0; while m=5000 if lag(x0+a_*rhom*dk,lambda,cigma)-lag(x0,lambda,cigma)=c*a_*rhom*gk*dk mk=m; break; end m=m+1; end ak=a_*rhomk; xk=x0+ak*dk; delta=xk-x0; y=grad(xk,lambda,cigma)-gk; Hk=(I-(delta*y)/(delta*y)*Hk*(I-(y*delta)/(delta*y)+(delta*delta)/(delta*y); k_B=k_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号