2016年大連理工大學(xué)優(yōu)化方法上機(jī)大作業(yè).doc
《2016年大連理工大學(xué)優(yōu)化方法上機(jī)大作業(yè).doc》由會員分享,可在線閱讀,更多相關(guān)《2016年大連理工大學(xué)優(yōu)化方法上機(jī)大作業(yè).doc(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
2016年大連理工大學(xué)優(yōu)化方法上機(jī)大作業(yè) 學(xué)院: 專業(yè): 班級: 學(xué)號: 姓名: 上機(jī)大作業(yè)1: 1.最速下降法: function f = fun(x) f = (1-x(1))^2 + 100*(x(2)-x(1)^2)^2; 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 = steepest(x0,eps) gk = grad(x0); res = norm(gk); k = 0; while res > eps && k<=1000 dk = -gk; ak =1; f0 = fun(x0); f1 = fun(x0+ak*dk); slope = dot(gk,dk); while f1 > f0 + 0.1*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 %f\n,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)^2; end function 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 = norm(gk); k = 0; while res > eps && k<=1000 dk=-bk*gk; xk=x0+dk; k = k+1; x0 = xk; gk = grad(xk); bk = [grad2(xk)]^(-1); res = norm(gk); fprintf(--The %d-th iter, the residual is %f\n,k,res); end x_star = xk; end >> clear >> x0=[0,0]; >> eps=1e-4; >> x1=newton(x0,eps) --The 1-th iter, the residual is 447.213595 --The 2-th iter, the residual is 0.000000 x1 = 1.0000 1.0000 3.BFGS法: function f = fun(x) f = (1-x(1))^2 + 100*(x(2)-x(1)^2)^2; 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 = bfgs(x0,eps) g0 = grad(x0); gk=g0; res = norm(gk); Hk=eye(2); k = 0; while res > eps && k<=1000 dk = -Hk*gk; ak =1; f0 = fun(x0); f1 = fun(x0+ak*dk); slope = dot(gk,dk); while f1 > f0 + 0.1*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*(fa0))/((fa0)*(y0)); res = norm(gk); fprintf(--The %d-th iter, the residual is %f\n,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; 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 =CG(x0,eps) gk = grad(x0); res = norm(gk); k = 0; dk = -gk; while res > eps && k<=1000 ak =1; f0 = fun(x0); f1 = fun(x0+ak*dk); slope = dot(gk,dk); while f1 > f0 + 0.1*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 %f\n,k,res); end x_star = xk; end >> clear >> x0=[0,0]; >> eps=1e-4; >> x=CG(x0,eps) 上機(jī)大作業(yè)2: function f= obj(x) f=4*x(1)-x(2)^2-12; end function [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); end function f=alobj(x) %拉格朗日增廣函數(shù) %N_equ等式約束個數(shù)? %N_inequ不等式約束個數(shù) N_equ=1; N_inequ=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+(0.5/pena)*(max(0,(r_al(i)+pena*g(i))).^2-r_al(i).^2); end %拉格朗日增廣函數(shù)值 f=obj(x)+h_equ+h_inequ; function f=compare(x) global r_al pena N_equ N_inequ; 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:3 h_inequ=abs(max(g(i),-r_al(i+1)/pena)); end h1 = max(h_inequ); f= max(abs(h_equ),h1); %sqrt(h_equ+h_inequ); function [ x,fmin,k] =almain(x_al) %本程序?yàn)槔窭嗜粘俗铀惴ㄊ纠惴?函數(shù)輸入: % x_al:初始迭代點(diǎn) % r_al:初始拉格朗日乘子N-equ:等式約束個數(shù)N_inequ:不等式約束個數(shù)?%函數(shù)輸出 % X:最優(yōu)函數(shù)點(diǎn)FVAL:最優(yōu)函數(shù)值 %============================程序開始================================ global r_al pena ; %參數(shù)(全局變量) pena=10; %懲罰系數(shù) r_al=[1,1,1,1]; c_scale=2; %乘法系數(shù)乘數(shù) cta=0.5; %下降標(biāo)準(zhǔn)系數(shù) e_al=1e-4; %誤差控制范圍 max_itera=25; out_itera=1; %迭代次數(shù) %===========================算法迭代開始============================= while out_itera- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 2016 大連理工大學(xué) 優(yōu)化 方法 上機(jī) 作業(yè)
鏈接地址:http://www.820124.com/p-6720627.html