1、大连理工优化作业matlab源程序2000年11月9日%第二章第17题,修正单纯形法解习题11(1)clc;clear;A=2 1 2;3 3 1;m,n=size(A);b=4;3;r=4 1 1;c=4 1 1;bs=2:3; nbs=1:1; a1=A(:,1);T=A(:,bs);a2=inv(T)*a1;b=inv(T)*b;A=a2,eye(m);B=eye(m);xb=Bb;cb=c(bs);%cn=c(nbs);con=1;M=zeros(1);while con M=M+1; t=cb/B; r=c-t*A; if all(r=0) x(bs)=xb; x(nbs)=0; f
2、x=cb*xb; disp(当前解是最优解,minz=,num2str(fx) disp(当前解为) disp(x) break end rnbs=r(nbs); kk=find(rnbs=min(rnbs); k=kk(1); Anbs=A(:,nbs); yik=BAnbs(:,k);%yik xb=Bb;%yi0 if all(yik0); w=abs(xb(i,1)./yik(i,1); l=find(w=min(w); rr=min(l); yrrk=yik(rr,1); Abs=A(:,bs); D=Anbs(:,k); Anbs(:,k)=Abs(:,rr); Abs(:,rr)
3、=D; F=bs(rr); bs(rr)=nbs(k); nbs(k)=F; AA=Anbs,Abs; EE=eye(m); EE(:,rr)=-yik./yrrk; Errk=EE; Errk(rr,rr)=1/yrrk; BB=Errk/B; B=inv(BB); cb=c(:,bs); xb=Errk*xb; x(bs)=xb; x(nbs)=0; fx=cb*xb; end if M=1000 disp(此问题无有限最优解) break endend%第二章第17题修正单纯型法解第11(2)A=1 -1 2 -1;2 1 -3 1;1 1 1 1;m,n=size(A);b=2;6;7
4、;r=2 1 -1 -1;c=2 1 -1 -1;bs=1:3; nbs=4:4; a1=A(:,4);T=A(:,bs);a2=inv(T)*a1;b=inv(T)*b;A=eye(m),a2;B=eye(m);xb=Bb;cb=c(bs);%cn=c(nbs);con=1;M=zeros(1);while con M=M+1; t=cb/B; r=c-t*A; if all(r=0) x(bs)=xb; x(nbs)=0; fx=cb*xb; disp(当前解是最优解,minz=,num2str(fx) disp(对应的最优解为,x=) disp(x) break end rnbs=r(n
5、bs); kk=find(rnbs=min(rnbs); k=kk(1); Anbs=A(:,nbs); yik=BAnbs(:,k); xb=Bb;%yi0 if all(yik0); w=abs(xb(i,1)./yik(i,1); l=find(w=min(w); rr=min(l); yrrk=yik(rr,1); Abs=A(:,bs); D=Anbs(:,k); Anbs(:,k)=Abs(:,rr); Abs(:,rr)=D; F=bs(rr); bs(rr)=nbs(k); nbs(k)=F; AA=Anbs,Abs; EE=eye(m); EE(:,rr)=-yik./yrr
6、k; Errk=EE; Errk(rr,rr)=1/yrrk; BB=Errk/B; B=inv(BB); cb=c(:,bs); xb=Errk*xb; x(bs)=xb; x(nbs)=0; fx=cb*xb; end if M=1000 disp(此问题无有限最优解) break endend%这是第三章十一题%f(x)=x2+exp(-x);%x=-2,3%采用0.618法clc;clear;a=-2; b=3;%cout=1; MAX=100; k=0.618; e=0.00001; x1=a+(1-k)*(b-a);x2=a+k*(b-a);while(coutMAX)if(b-a
7、e) if(x12+exp(-x1)(x22+exp(-x2) a=x1; b=b; x1=x2; x2=a+k*(b-a); cout=cout+1; elseif(x12+exp(-x1)=(x22+exp(-x2) a=a; b=x2; x2=x1; x1=a+(1-k)*(b-a); cout=cout+1; endendend%这是第三章第15题,要求采用不精确一维搜索算法二解问题clc;clear;syms x1 x2 ky=100*(x2-x12)2+(1-x1)2; v=x1 x2;%X(i)g=jacobian(y,v); z=subs(y,x1,x2,x1+k,x2+k);
8、%X(i)+k*S(i)z1=subs(z,x1,x2,-1,1); z2=diff(z1,k); k1=0;k2=100;k3=inf;cout=1; MAX=1000;c1=0.1;c2=0.5;T=0.1;s=1;1;while(cout=(-c1*k2*(g1*s)&(g2*s)=c2*(g1*s) KK=k2; disp(最小步长=) disp(KK) break;elseif(y1-y2)(-c1*k2*(g1*s)|(g2*s)k1&u=k2&uk3) k1=k2; k2=u; elseif(u=k3) u=k3-T*(k3-k1); k2=u; end m=k1 k2 k3 u
9、 cout; cout=cout+1;endend%这是第三章第19题,要求采用阻尼牛顿法计算函数的极小值clc;clear;syms x1 x2 km=3;n=2;e=0.000000000000000000000001; MAX=10; cout=1; %y=x12+x22+x1*x2-3*x1;y=ff(x1,x2);y1=diff(y,x1); y2=diff(y,x2); y11=diff(y1,x1); y12=diff(y1,x2);y21=diff(y2,x1);y22=diff(y2,x2);while(coute) A=y11 y12; y21 y22; B=df1;df2
10、; C=inv(A); S=-C*B; z=ff(x1+k*S(1,1),x2+k*S(2,1); z1=subs(diff(z,k),x1,x2,m,n); kk=solve(z1,k); S2=m+kk*S(1,1);n+kk*S(2,1); m=S2(1,1); n=S2(2,1); cout=cout+1; elseif(double(df1)2+(double(df2)2=e) X=eye(2)*S2; disp(最优解,x=) disp(X); disp(最优值,f(x)=) disp(subs(y,x1,x2,X(1,1),X(2,1) cout=cout+1; break; e
11、ndend%函数文件,单独成文件function y=ff(a,b)y=a2+b2+a*b-3*a;clc;clear;syms x1 x2 ke=0.000001; MAX=300; cout=1; m=2;n=0;X0=m;n;temp=1;y=myBFGS(x1,x2);H0=eye(2); y1=diff(y,x1);y2=diff(y,x2);mmm=0;G0=subs(y1;y2,x1,x2,m,n);while(coute) S0=-H0*G0; z=myBFGS(x1+k*S0(1,1),x2+k*S0(2,1); z1=diff(z,k); z2=subs(z1,x1,x2,
12、m,n); k1=double(solve(z2,k); kk=1; for i=1:numel(k1) if(imag(k1(i)=0) if(k1(i)0) if(k1(i)kk) kk=k1(i); end end end end X1=m+kk*S0(1,1);n+kk*S0(2,1); XX=subs(X1-X0,x1,x2,m,n); G1=subs(y1;y2,x1,x2,X1(1,1),X1(2,1); GG=G1-G0; u=1+GG*H0*GG/(XX*GG); H1=H0+(u*XX*XX-H0*GG*XX-XX*GG*H0)/(XX*GG); G0=G1; X0=X1;
13、 H0=H1; cout=cout+1; elseif(double(df1)2+(double(df2)2=e) disp(最优解为,x=) disp(X0); break; endendfunction y=myBFGS(a,b)y=(a-1)2+5*(b-a2)2;%这是26题的函数%第三章第31题,BFGS法解习题27clc;clear;syms x1 x2 ke=0.000001; MAX=300;cout=1; m=1;n=0;X0=m;n;y=myBFGS(x1,x2);H0=eye(2); y1=diff(y,x1);y2=diff(y,x2);mmm=0;G0=subs(y1
14、;y2,x1,x2,m,n);while(coute) S0=-H0*G0; z=myBFGS(x1+k*S0(1,1),x2+k*S0(2,1); z1=diff(z,k); z2=subs(z1,x1,x2,m,n); k1=double(solve(z2,k); kk=0; for i=1:numel(k1) if(imag(k1(i)=0) kk=k1(i); end end X1=m+kk*S0(1,1);n+kk*S0(2,1); XX=subs(X1-X0,x1,x2,m,n); G1=subs(y1;y2,x1,x2,X1(1,1),X1(2,1); GG=G1-G0; u=1+GG*H0*GG/(XX*GG); H1=H0+(u*XX*XX-H0*GG*XX-XX*GG*H0)/(XX*GG); G0=G1; X0=X1; H0=H1; cout=cout+1; elseif(double(df1)2+(double(df2)2=e) disp(最优解为,x=) disp(X0); break; endend%M函数文件,单独文件function y=myBFGS(a,b)y=a+2*b2+exp(a2+b2);%这是27题的函数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1