ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:4.60MB ,
资源ID:2156512      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2156512.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大连理工大学优化方法上机大作业.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、大连理工大学优化方法上机大作业 2016年大连理工大学优化方法上机大作业学院:专业:班级:学号:姓名:上机大作业1:1.最速下降法:function f = fun(x) f = (1-x(1)2 + 100*(x(2)-x(1)2)2; endfunction g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)2-x(2); g(2) = 200*(x(2)-x(1)2); end function x_star = steepest(x0,eps) gk = grad(x0); res = norm(gk); k = 0;

2、while res eps & k f0 + *ak*slope ak = ak/4; xk = x0 + ak*dk; f1 = fun(xk); end k = k+1; x0 = xk; gk = grad(xk);res = norm(gk); fprintf(-The %d-th iter, the residual is %fn,k,res); end x_star = xk; end clear x0=0,0; eps=1e-4; x=steepest(x0,eps)2.牛顿法:function f = fun(x) f = (1-x(1)2 + 100*(x(2)-x(1)2)

3、2; endfunction g = grad2(x) g = zeros(2,2); g(1,1)=2+400*(3*x(1)2-x(2); g(1,2)=-400*x(1); g(2,1)=-400*x(1); g(2,2)=200; end function g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)2-x(2); g(2) = 200*(x(2)-x(1)2); end function x_star = newton(x0,eps) gk = grad(x0); bk = grad2(x0)(-1); res

4、= norm(gk); k = 0; while res eps & k clear x0=0,0; eps=1e-4; x1=newton(x0,eps)-The 1-th iter, the residual is -The 2-th iter, the residual is x1 = 法:function f = fun(x) f = (1-x(1)2 + 100*(x(2)-x(1)2)2; endfunction g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)2-x(2); g(2) = 200*(x(2)-x(

5、1)2); end function x_star = bfgs(x0,eps) g0 = grad(x0); gk=g0; res = norm(gk); Hk=eye(2); k = 0; while res eps & k f0 + *ak*slope ak = ak/4; xk = x0 + ak*dk; f1 = fun(xk); end k = k+1; fa0=xk-x0; x0 = xk; go=gk;gk = grad(xk);y0=gk-g0;Hk=(eye(2)-fa0*(y0)/(fa0)*(y0)*(eye(2)-(y0)*(fa0)/(fa0)*(y0)+(fa0*

6、(fa0)/(fa0)*(y0);res = norm(gk); fprintf(-The %d-th iter, the residual is %fn,k,res); end x_star = xk; End clear x0=0,0; eps=1e-4; x=bfgs(x0,eps)4.共轭梯度法: function f = fun(x) f = (1-x(1)2 + 100*(x(2)-x(1)2)2; endfunction g = grad(x) g = zeros(2,1); g(1)=2*(x(1)-1)+400*x(1)*(x(1)2-x(2); g(2) = 200*(x(

7、2)-x(1)2); end function x_star =CG(x0,eps) gk = grad(x0);res = norm(gk); k = 0; dk = -gk; while res eps & k f0 + *ak*slope ak = ak/4; xk = x0 + ak*dk; f1 = fun(xk); end k = k+1; x0 = xk; g0=gk; gk = grad(xk);res = norm(gk);p=(gk/g0)2;dk1=dk;dk=-gk+p*dk1;fprintf(-The %d-th iter, the residual is %fn,k

8、,res); end x_star = xk; end clear x0=0,0; eps=1e-4; x=CG(x0,eps)上机大作业2:function f= obj(x)f=4*x(1)-x(2)2-12;endfunction h,g =constrains(x)h=x(1)2+x(2)2-25;g=zeros(3,1);g(1)=-10*x(1)+x(1)2-10*x(2)+x(2)2+34;g(2)=-x(1);g(3)=-x(2);endfunction f=alobj(x) %拉格朗日增广函数%N_equ等式约束个数?%N_inequ不等式约束个数N_equ=1;N_ineq

9、u=3;global r_al pena;%全局变量h_equ=0;h_inequ=0;h,g=constrains(x);%等式约束部分?for i=1:N_equ h_equ=h_equ+h(i)*r_al(i)+(pena/2)*h(i).2;end %不等式约束部分for i=1:N_inequ h_inequ=h_inequ+pena)*(max(0,(r_al(i)+pena*g(i).2-r_al(i).2);end%拉格朗日增广函数值f=obj(x)+h_equ+h_inequ;function f=compare(x) global r_al pena N_equ N_ine

10、qu;N_equ=1;N_inequ=3;h_inequ=zeros(3,1);h,g=constrains(x);%等式部分for i=1:1 h_equ=abs(h(i); end%不等式部分 for i=1:3h_inequ=abs(max(g(i),-r_al(i+1)/pena);endh1 = max(h_inequ);f= max(abs(h_equ),h1); %sqrt(h_equ+h_inequ);function x,fmin,k =almain(x_al)%本程序为拉格朗日乘子算法示例算法%函数输入:% x_al:初始迭代点% r_al:初始拉格朗日乘子N-equ:等式

11、约束个数N_inequ:不等式约束个数?%函数输出% X:最优函数点FVAL:最优函数值%=程序开始=global r_al pena ; %参数(全局变量)pena=10; %惩罚系数r_al=1,1,1,1;c_scale=2; %乘法系数乘数cta=; %下降标准系数e_al=1e-4; %误差控制范围max_itera=25;out_itera=1; %迭代次数%=算法迭代开始=while out_iteramax_itera x_al0=x_al; r_al0=r_al; %判断函数? compareFlag=compare(x_al0); %无约束的拟牛顿法BFGS X,fmin=

12、fminunc(alobj,x_al0); x_al=X; %得到新迭代点 %判断停止条件? if compare(x_al)e_al disp(we get the opt point); break end %c判断函数下降度? if compare(x_al)cta*compareFlag pena=1*pena; %可以根据需要修改惩罚系数变量 else pena=min(1000,c_scale*pena); %乘法系数最大1000 disp(pena=2*pena); end %?更新拉格朗日乘子 h,g=constrains(x_al); for i=1:1 %等式约束部分 r_al(i)= r_al0(i)+pena*h(i); end for i=1:3 %不等式约束部分 r_al(i+1)=max(0,(r_al0(i+

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1