版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上function x,dk,k=fjqx(x,s)flag=0;a=0;b=0;k=0;d=1;while(flag=0)p,q=getpq(x,d,s);if (p<0) b=d;d=(d+a)/2; end if(p>=0)&&(q>=0)dk=d;x=x+d*s;flag=1;end k=k+1; if(p>=0)&&(q<0)a=d;d=min2*d,(d+b)/2;endend%定義求函數(shù)值的函數(shù)fun,當輸入為x0=(x1,x2)時,輸出為ffunction f=fun(x) f=(x(2)-x
2、(1)2)2+(1-x(1)2;function gf=gfun(x) gf=-4*x(1)*(x(2)-x(1)2)+2*(x(1)-1),2*(x(2)-x(1)2);function p,q=getpq(x,d,s) p=fun(x)-fun(x+d*s)+0.20*d*gfun(x)*s'q=gfun(x+d*s)*s'-0.60*gfun(x)*s'結果:x=0,1;s=-1,1; x,dk,k=fjqx(x,s)x =-0.0000 1.0000dk =1.1102e-016k =54function f= fun( X )%所求問題目標函數(shù)f=X(1)2-
3、2*X(1)*X(2)+2*X(2)2+X(3)2+ X(4)2- X(2)*X(3)+2*X(1)+3*X(2)-X(3);endfunction g= gfun( X )%所求問題目標函數(shù)梯度g=2*X(1)-2*X(2)+2,-2*X(1)+4*X(2)-X(3)+3,2*X(3)-X(2)-1,2*X(4);endfunction x,val,k = frcg( fun,gfun,x0 )%功能:用FR共軛梯度法求無約束問題最小值%輸入:x0是初始點,fun和gfun分別是目標函數(shù)和梯度%輸出:x、val分別是最優(yōu)點和最優(yōu)值,k是迭代次數(shù)maxk=5000;%最大迭代次數(shù)rho=0.5
4、;sigma=0.4;k=0;eps=10e-6;n=length(x0);while(k<maxk) g=feval(gfun,x0);%計算梯度 itern=k-(n+1)*floor(k/(n+1); itern=itern+1; %計算搜索方向 if(itern=1) d=-g; else beta=(g*g')/(g0*g0'); d=-g+beta*d0; gd=g'*d; if(gd>=0.0) d=-g; end end if(norm(g)<eps) break; end m=0;mk=0; while(m<20) if(fev
5、al(fun,x0+rhom*d)<feval(fun,x0)+sigma*rhom*g'*d) mk=m;break; end m=m+1; end x0=x0+rhomk*d; val=feval(fun,x0); g0=g;d0=d; k=k+1;endx=x0;val=feval(fun,x0);end結果:>> x0=0,0,0,0;>> x,val,k = frcg( 'fun','gfun',x0 )x = -4.0000 -3.0000 -1.0000 0val = -8.0000k =21或者functio
6、n x,f,k=second(x)k=0;dk=dfun(x);g0=gfun(x);s=-g0;x=x+dk*s;g1=gfun(x);while(norm(g1)>=0.02)if(k=3)k=0;g0=gfun(x);s=-g0;x=x+dk*s;g1=gfun(x); else if(k<3)u=(norm(g1)2)/(norm(g0)2); s=-g1+u*s;k=k+1;g0=g1;dk=dfun(x);x=x+dk*s;g1=gfun(x);endendf=fun(x);endfunction f=fun(x) f=x(1)2-2*x(1)*x(2)+2*x(2)2
7、+x(3)2+x(4)2-x(2)*x(3)+2*x(1)+3*x(2)-x(3);function gf=gfun(x)gf=2*x(1)-2*x(2)+2,-2*x(1)+4*x(2)-x(3)+3,2*x(3)-x(2)-1,2*x(4);function p,q=con(x,d)ss=-gfun(x);p=fun(x)-fun(x+d*ss)+0.2*d*gfun(x)*(ss)'q=gfun(x+d*ss)*(ss)'-0.6*gfun(x)*(ss)'function dk=dfun(x)flag=0;a=0;d=1;while(flag=0)p,q=con
8、(x,d);if (p<0) b=d;d=(d+a)/2; end if(p>=0)&&(q>=0) dk=d;flag=1;end if(p>=0)&&(q<0) a=d;d=min2*d,(d+b)/2;endEnd結果:x=0,0,0,0;>> x,f,k=second(x)x =-4.0147 -3.0132 -1.0090 0f = -7.9999k = 1function f,x,k=third_1(x) k=0; g=gfun(x);while(norm(g)>=0.001) s=-g;dk=dfun
9、(x,s);x=x+dk*s;k=k+1;g=gfun(x);f=fun(x);endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x(1)2+x(2)2),4*x(2)+2*x(2)*(x(1)2+x(2)2);function j_1,j_2=con(x,d,s)j_1=fun(x)-fun(x+d*s)+0.1*d*gfun(x)*(s)'j_2=gfun(x+d*s)*(s)'-0.5*gfun(x)*(s)'function dk=dfu
10、n(x,s)%獲取步長flag=0;a=0;d=1;while(flag=0)p,q=con(x,d,s);if (p<0) b=d;d=(d+a)/2; end if(p>=0)&&(q>=0)dk=d;flag=1;end if(p>=0)&&(q<0) a=d;d=min2*d,(d+b)/2;endend結果:x=0,1; f,x,k=third_1(x) f =0.7729x = -0.4196 0.0001k =8(1) 程序:function f,x,k=third_2(x)k=0; H=inv(ggfun(x);g=
11、gfun(x);while(norm(g)>=0.001)s=(-H*g')'dk=dfun(x,s);x=x+dk*s;k=k+1;g=gfun(x);f=fun(x);endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x(1)2+x(2)2),4*x(2)+2*x(2)*(x(1)2+x(2)2);function ggf=ggfun(x)ggf=(4*x(1)2+2)*exp(x(1)2+x(2)2),4*x(1)*x(2)*exp(x(1)
12、2+x(2)2); 4*x(1)*x(2)*exp(x(1)2+x(2)2),4+(4*x(2)2+2)*exp(x(1)2+x(2)2);function j_1,j_2=con(x,d,s)j_1=fun(x)-fun(x+d*s)+0.1*d*gfun(x)*(s)'j_2=gfun(x+d*s)*(s)'-0.5*gfun(x)*(s)'function dk=dfun(x,s)% 步長獲取flag=0;a=0;d=1;b=10000;while(flag=0)p,q=con(x,d,s);if (p<0) b=d;d=(d+a)/2; end if(p&
13、gt;=0)&&(q>=0) dk=d;flag=1;end if(p>=0)&&(q<0) a=d;if 2*d>=(d+b)/2d=(d+b)/2;else d=2*d;endendEnd 結果:x=0,1;f,x,k=third_2(x)f =0.7729x = -0.4193 0.0001k =8(2) 程序:function f,x,k=third_3(x)k=0; X=cell(2);g=cell(2);X1=x;H=eye(2);g1=gfun(X1);s=(-H*g1')'dk=dfun(X1,s);X2=
14、X1+dk*s;g2=gfun(X2);while(norm(g2)>=0.001)dx=X2-X1;dg=g2-g1;v=dx/(dx*dg')-(H*dg')'/(dg*H*dg');h1=H*dg'*dg*H/(dg*H*dg');h2=dx'*dx/(dx*dx');h3=dg*H*dg'*v'*v;H=H-h1+h2+h3;k=k+1;X1=X2;g1=gfun(X1);s=(-H*g1')'dk=dfun(X1,s);X2=X1+dk*s;g2=gfun(X2);norm(g2);
15、f=fun(x);x=X2;endfunction f=fun(x) f=x(1)+2*x(2)2+exp(x(1)2+x(2)2);function gf=gfun(x)gf=1+2*x(1)*exp(x(1)2+x(2)2),4*x(2)+2*x(2)*(x(1)2+x(2)2);function ggf=ggfun(x)ggf=(4*x(1)2+2)*exp(x(1)2+x(2)2),4*x(1)*x(2)*exp(x(1)2+x(2)2);4*x(1)*x(2)*exp(x(1)2+x(2)2),4+(4*x(2)2+2)*exp(x(1)2+x(2)2);function p,q=c
16、on(x,d,s) p=fun(x)-fun(x+d*s)+0.1*d*gfun(x)*(s)'q=gfun(x+d*s)*(s)'-0.5*gfun(x)*(s)'function dk=dfun(x,s)flag=0;a=0;d=1;b=10000;while(flag=0)p,q=con(x,d,s);if (p<0) b=d;d=(d+a)/2; end if(p>=0)&&(q>=0) dk=d;flag=1;end if(p>=0)&&(q<0) a=d;if 2*d>=(d+b)/2d=(
17、d+b)/2;else d=2*d;endendend結果:x=0,1;f,x,k=third_3(x)f =0.7729x = -0.4195 0.0000k=6function callqpactH=2 0; 0 2;c=-2 -5'Ae= ; be= ;Ai=1 -2; -1 -2; -1 2;1 0;0 1;bi=-2 -6 -2 0 0'x0=0 0'x,lambda,exitflag,output=qpact(H,c,Ae,be,Ai,bi,x0)function x,lamk,exitflag,output=qpact(H,c,Ae,be,Ai,bi,x0
18、)epsilon=1.0e-9; err=1.0e-6;k=0; x=x0; n=length(x); kmax=1.0e3;ne=length(be); ni=length(bi); lamk=zeros(ne+ni,1);index=ones(ni,1);for (i=1:ni)if(Ai(i,:)*x>bi(i)+epsilon), index(i)=0; endendwhile(k<=kmax)Aee=;if(ne>0), Aee=Ae; endfor(j=1:ni)if(index(j)>0), Aee=Aee; Ai(j,:); endendgk=H*x+c
19、;m1,n1 = size(Aee);dk,lamk=qsubp(H,gk,Aee,zeros(m1,1);if(norm(dk)<=err)y=0.0;if(length(lamk)>ne)y,jk=min(lamk(ne+1:length(lamk);endif(y>=0)exitflag=0;elseexitflag=1;for(i=1:ni)if(index(i)&(ne+sum(index(1:i)=jk) index(i)=0; break;endendendk=k+1;else exitflag=1;alpha=1.0; tm=1.0;for(i=1:n
20、i)if(index(i)=0)&(Ai(i,:)*dk<0)tm1=(bi(i)-Ai(i,:)*x)/(Ai(i,:)*dk);if(tm1<tm)tm=tm1; ti=i;endendendalpha=min(alpha,tm);x=x+alpha*dk;if(tm<1), index(ti)=1; endendif(exitflag=0), break; endk=k+1;endoutput.fval=0.5*x'*H*x+c'*x;output.iter=k;function x,lambda=qsubp(H,c,Ae,be)ginvH=pi
21、nv(H);m,n=size(Ae);if(m>0)rb=Ae*ginvH*c + be;lambda=pinv(Ae*ginvH*Ae')*rb;x=ginvH*(Ae'*lambda-c);elsex=-ginvH*c;lambda=0;end結果>>callqpactx = 1.4000 1.7000lambda = 0.8000exitflag = 0output = fval: -6.4500iter: 7function x,mu,lambda,output=multphr(fun,hf,gf,dfun,dhf,dgf,x0)%功能: 用乘子法解一
22、般約束問題: min f(x), s.t. h(x)=0, g(x).=0%輸入: x0是初始點, fun, dfun分別是目標函數(shù)及其梯度;% hf, dhf分別是等式約束(向量)函數(shù)及其Jacobi矩陣的轉置;% gf, dgf分別是不等式約束(向量)函數(shù)及其Jacobi矩陣的轉置;%輸出: x是近似最優(yōu)點,mu, lambda分別是相應于等式約束和不等式約束的乘子向量; % output是結構變量, 輸出近似極小值f, 迭代次數(shù), 內迭代次數(shù)等maxk=500;c=2.0;eta=2.0;theta=0.8;k=0;ink=0;epsilon=0.00001;x=x0;he=feval(
23、hf,x);gi=feval(gf,x);n=length(x);l=length(he);m=length(gi);mu=zeros(l,1);lambda=zeros(m,1);btak=10;btaold=10;while(btak>epsilon&&k<maxk)%調用BFGS算法程序求解無約束子問題 x,ival,ik=bfgs('mpsi','dmpsi',x0,fun,hf,gf,dfun,dhf,dgf,mu,lambda,c); ink=ink+ik; he=feval(hf,x);gi=feval(gf,x); b
24、tak=0; for i=1:l btak=btak+he(i)2;end%更新乘子向量 for i=1:m temp=min(gi(i),lambda(i)/c); btak=btak+temp2; end btak=sqrt(btak); if btak>epsilon if k>=2&&btak>theta*btaold c=eta*c; end for i=1:l mu(i)=mu(i)-c*he(i); end for i=1:m lambda(i)=max(0,lambda(i)-c*gi(i); end k=k+1; btaold=btak; x
25、0=x; endendf=feval(fun,x);output.fval=f;output.iter=k;%增廣拉格朗日函數(shù)function psi=mpsi(x,fun,hf,gf,dfun,dhf,dgf,mu,lambda,c)f=feval(fun,x);he=feval(hf,x);gi=feval(gf,x);l=length(he);m=length(gi);psi=f;s1=0;for i=1:l psi=psi-he(i)*mu(i); s1=s1+he(i)2;endpsi=psi+0.5*c*s1;s2=0;for i=1:m s3=max(0,lambda(i)-c*
26、gi(i); s2=s2+s32-lambda(i)2;endpsi=psi+s2/(2*c);%不等式約束函數(shù)文件g1.mfunction gi=g1(x)gi=10*x(1)-x(1)2+10*x(2)-x(2)2-34;%目標函數(shù)的梯度文件df1.mfunction g=df1(x)g=4, -2*x(2)'%等式約束(向量)函數(shù)的Jacobi矩陣(轉置)文件dh1.mfunction dhe=dh1(x)dhe=-2*x(1), -2*x(2)'%不等式約束(向量)函數(shù)的Jacobi矩陣(轉置)文件dg1.mfunction dgi=dg1(x)dgi=10-2*x(1), 10-2*x(2)'function x,val,k=bfgs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學反應與能量變化說課稿
- 紅眼睛綠眼睛說課稿
- 肥胖癥的預防及其治療
- 電器廠采光井施工合同
- 寵物行業(yè)稅務管理
- 企業(yè)品牌宣傳租賃合同
- 電商推廣違約承諾書
- 化工原料出口招投標實習報告
- 酒店會議室建設施工合同建筑膜
- 教育設施招投標流程在線檢驗
- 保安培訓記錄內容
- 公務快艇常規(guī)安全
- 案例l五項目三:電動天窗系統(tǒng)的檢測與故障排除
- 高中生活如何啟航 課件 2023-2024學年高一主題班會
- 電力職業(yè)病防控
- 《互聯(lián)網(wǎng)的應用》課件
- 2024年培養(yǎng)皿相關項目可行性分析報告
- 2024山東能源集團高校畢業(yè)生校園招聘筆試參考題庫附帶答案詳解
- 初中九年級美術期末藝術測評指標試卷及答案
- 新能源科學與工程專業(yè)職業(yè)生涯規(guī)劃
- 高考作文等級評分標準
評論
0/150
提交評論