实验二、线性规划的灵敏度分析 (一) 实验目的 1. 线性规划求解的单纯形法的灵敏度分析的编程实现 2 .掌握使用 matlab 、 Lingo 、 Excel 的规划求解功能求解,并利用“敏感性报告”进行分析。 (二)实验内容 课本例 1 解的灵敏度分析 ( 1 ):调用单纯形程序: function =simplexfun(A,A1,b,c,m,n,n1,cb,xx) % A,b are the matric in A*x=b % c is the matrix in max z=c*x % A1 is the matric in simplex table % m is the numbers of row in A and n is the con number in A % n1 is the nubers of artificial variables,and artificial variables are default as the last % n1 variables in x. % cb is the worth coefficient matrix for basic variables % xx is the index matrix for basic variables % B1 is the invers matrix for the basic matrix in simplex table.The initial % matrix is default as the last m con in the matrix A. x=zeros(n,1); z=0; B1=A1(:,n-m+1:n); sgma1=c-(cb*B1)*A; =max(sgma1); k=kk(1); flg=0; ll=0; while (masg0)(ll20) ll=ll+1; thita=1000+zeros(m,1); for i=1:m if A1(i,k)0 thita(i)=A1(i,k)\b(i); end end =find(thita999); if sum(c8)m =min(thita); r=rr(1); aa=A1(r,k); for i=1:m if i==r b(r)=b(r)/aa; for j=1:n A1(r,j)=A1(r,j)/aa ; end end end for i=1:m if i~=r cc=A1(i,k) b(i)=b(i)-b(r)*cc; for j=1:n A1(i,j)=A1(i,j)-A1(r,j)*cc; end end end cb(r)=c(k); xx(r)=k; B1=A1(:,n-m+1:n); sgma1=c-(cb*B1)*A; =max(sgma1); k=kk(1); thita=100+zeros(m,1); else flg=3; masg=-1; x='unbound solution'; z='inf'; end end if flg~=3 if n1==0 sgma1=c-(cb*B1)*A =find(sgma1-0.0000000001); if sum(rc)==n-m flg=1; else flg=2; end x=zeros(n,1); for i=1:m x(xx(i))=b(i); end z=c*x; else x=zeros(n,1); for i=1:m x(xx(i))=b(i); end xa=x((n-n1+1):n,:); ra=find(xa); if sum(ra)==0 sgma1=c-(cb*B1)*A; =find(sgma1-0.00000001); if sum(rc)==n-m flg=1; else flg=2; end z=c*x; else flg=4; x='nothing'; z='nothing'; end end end sgma=sgma1; ll; A= ; A1=A; b= ; c= ; m=3; n=5 cb= ; xx= ; 然后调用单纯行解法 simplexfun111 ; 求出值,并返回 B1,b, 然后输入: r=1,2,3 求之。 function =lingb(B1,b,r) m=length(b); aa=-10000*ones(m,1); bb=10000*ones(m,1); for i=1:m if B1(i,r)0 aa(i)=-b(i)/B1(i,r); end if B1(i,r)0 bb(i)=-b(i)/B1(i,r); end end a1=max(aa); b1=min(bb); 实验小结:通过 matlab 程序的编写,掌握了 单纯形法灵敏度分析的编程实现。