机械优化设计MATLAB程序(2)

2018-11-19 22:37

g1=A*x1+b; y0=A*a0*d0; s0=a0*d0;

% H1=H0+s0*s0'/(s0'*y0)-H0*y0*y0'*H0/(y0'*H0*y0);

H1=H0+((1+y0'*H0*y0/(s0'*y0))*s0*s0'-H0*y0*s0'-s0*y0'*H0)/(s0'*y0); k=k+1; d1=-H1*g1;

a1=-d1'*g1/(d1'*G0*d1); a0=a1; d0=d1; H0=H1; s0=a0*d0; x1=x1+a0*d0; break end end x=x1;

fx=0.5*x1'*A*x1+b'*x1+c;

运行结果如下:

》 [x,fx,k]=bianchidufa([3 -1;-1 1],[-2;0],0,[2;1]) H1 =

0.4031 0.2578 0.2578 0.8945 fx = -1 x =

1.0000 1.0000 fx = -1 k = 1

故函数极小点是点(1,1)

25.用鲍威尔法求函数f?x1,x2??x12?2x2?4x1?2x1x2的极小点。

用鲍威尔法在MATLAB的M文件编辑器中编写的M文件,如下:

function [x,fx,k]=bowell(A,b,c,x0)%鲍威尔法 d01=[1;0]; d02=[0;1]; x02=[0;0]; esp=1e-12;%停机原则 k=0;%迭代次数

while norm(x0-x02)>=esp k=k+1; g01=A*x0+b;

a01=-d01'*g01/(d01'*A*d01);

x01=x0+a01*d01; g02=A*x01+b;

a02=-d02'*g02/(d02'*A*d02); x02=x01+a02*d02; d10=x02-x0; g10=A*x02+b;

a10=-d10'*g10/(d10'*A*d10); x10=x0+a01*d01; d01=d02; d02=d10; x0=x10; end x=x0;

fx=0.5*x'*A*x+b'*x+c;

运行结果如下:

[x,fx,k]=bowell([2 -2;-2 4],[-4;0],0,[2;1]) fx = -8 x = 4 2 fx = -8 k = 3

6.用单纯形法求线性规划问题

minf(x)??1.1x1?2.2x2?3.3x3?4.4x4?x1?x2?x3?4?s.t.?x1?2x2?2.5x3?3x4?5?x?0(j?1,2,3,4)?j%单纯形法matlab程序-danchunxingfa

% 求解标准型线性规划:max c*x; s.t. A*x=b; x>=0

% 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标

% 输出变量sol是最优解, 其中松弛变量(或剩余变量)可能不为0 % 输出变量val是最优目标值,kk是迭代次数

function [sol,val,kk]=danchunxingfa(A,N) [mA,nA]=size(A); kk=0; % 迭代次数 flag=1; while flag

用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:

kk=kk+1;

if A(mA,:)<=0 % 已找到最优解 flag=0;

sol=zeros(1,nA-1); for i=1:mA-1

sol(N(i))=A(i,nA); end

val=-A(mA,nA); else

for i=1:nA-1

if A(mA,i)>0&A(1:mA-1,i)<=0 % 问题有无界解 disp('have infinite solution!'); flag=0; break; end end

if flag % 还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i; % 进基变量的下标 end end

sita=zeros(1,mA-1); for i=1:mA-1 if A(i,inb)>0

sita(i)=A(i,nA)/A(i,inb); end end

temp=inf; for i=1:mA-1

if sita(i)>0&sita(i)

% 以下更新N for i=1:mA-1 if i==outb N(i)=inb; end end

% 以下进行转轴运算

A(outb,:)=A(outb,:)/A(outb,inb); for i=1:mA

if i~=outb

A(i,:)=A(i,:)-A(outb,:)*A(i,inb); end end end end end ;

令g(x)?1.1x1?2.2x2?3.3x3?4.4x4,则求minf(x)??1.1x1?2.2x2?3.3x3?4.4x4就变成求?maxg(x),即minf(x)??maxg(x).运行结果如下:

>> A=[1 1 1 0 4; 1 2 2.5 3 5;

1.1 2.2 -3.3 4.4 0];N=[3;4];[sol,val,kk]=danchunxingfa(A,N) sol =

0 0 4.0000 1.6667 val =

7.3333 kk = 2 所以,

经两次转轴运算,得到的最优解为x1?x2?0,x3?4.0000,x4?1.667,minf(x)??7.3333

7. 求解线性规划问题

minz??7x1?12x2?9x1?4x2?x3?360?4x?5x?x?200 ?124s.t.??3x1?10x2?x5?300?xj?0(j?1,2,3,4,5)?用单纯形法在MATLAB的M文件编辑器中编写的M文件,如下:

%单纯形法matlab程序-danchunxingfa

% 求解标准型线性规划:max c*x; s.t. A*x=b; x>=0

% 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标

% 输出变量sol是最优解, 其中松弛变量(或剩余变量)可能不为0 % 输出变量val是最优目标值,kk是迭代次数

function [sol,val,kk]=danchunxingfa(A,N) [mA,nA]=size(A);

kk=0; % 迭代次数 flag=1; while flag kk=kk+1;

if A(mA,:)<=0 % 已找到最优解 flag=0;

sol=zeros(1,nA-1); for i=1:mA-1

sol(N(i))=A(i,nA); end

val=-A(mA,nA); else

for i=1:nA-1

if A(mA,i)>0&A(1:mA-1,i)<=0 % 问题有无界解 disp('have infinite solution!'); flag=0; break; end end

if flag % 还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i; % 进基变量的下标 end end

sita=zeros(1,mA-1); for i=1:mA-1 if A(i,inb)>0

sita(i)=A(i,nA)/A(i,inb); end end

temp=inf; for i=1:mA-1

if sita(i)>0&sita(i)

% 以下更新N for i=1:mA-1 if i==outb N(i)=inb;

end end

% 以下进行转轴运算

A(outb,:)=A(outb,:)/A(outb,inb); for i=1:mA

if i~=outb

A(i,:)=A(i,:)-A(outb,:)*A(i,inb); end end end end end ;

运行结果如下:

令Y?7x1?12x2,则求minz?7x1?12x2可转变为求?maxY,即minz?-maxY.

>> A=[9 4 1 0 0 360; 4 5 0 1 0 200; 3 10 0 0 1 300;

7 12 0 0 0 0]; N=[3;4;5]; [sol,val,kk]=danchunxingfa(A,N) sol =

20 24 84 0 0 val = 420 kk = 3

所以,经3次转轴运算,得到的最优解为

x1?20,x2?24,x3?84,x4?x5?0,minz??420.


机械优化设计MATLAB程序(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机的火灾报警器开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: