資源描述:
《實驗報告(單純形法的matlab程序).docx》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、實驗一:線性規(guī)劃單純形算法一、實驗目的通過實驗熟悉單純形法的原理,掌握Matlab循環(huán)語句的應用,提高編程的能力和技巧。二、算法對于一般的標準形式線性規(guī)劃問題(求極小問題),首先給定一個初始基本可行解。設初始基為B,然后執(zhí)行如下步驟:(1).解BxBb,求得xBB1b,令xN0,計算目標函數(shù)值fcBxB以b1,2,...,m)記B1的第個分量i(ibi(2).計算單純形乘子w,wBCB,得到wCBB1,對于非基變量,計算判別數(shù)izicicBB1pici,令kmax{zici},R為非基變量集合iR若判別數(shù)k0,則得到一個
2、最優(yōu)基本可行解,運算結束;否則,轉到下一步(3).解Bykpk,得到y(tǒng)kB1pk;若yk0,即yk的每個分量均非正數(shù),則停止計算,問題不存在有限最優(yōu)解,否則,進行步驟(4).bminb0yryt,且ytk(4).確定下標r,使rkt:ytk0tkxBr為離基變量。xk為進基變量,用pk替換pBr,得到新的基矩陣B,返回步驟(1)。對于極大化問題,可以給出完全類似的步驟,只是確定進基變量的準則不同。對于極大化問題,應令zkckmin{zjcj}四、計算框圖開始。初始可行解B令xBB1bb,xN0,fcBxB計算單純形乘子w
3、cBB1,計算判別數(shù)iwpjcj,jR(非基變量)令kmax{j,jR}k0?是得到最優(yōu)解否解方程Bykpk,得到y(tǒng)kB1pk。yk0?是不存在有限最優(yōu)解否確定下標r,是brminbt,且ytk0yrkytkt:ytk0xk為進基變量,用pk替換pBr,得到新的基矩陣B五、計算程序function[x,f]=zuiyouhua(A,b,c)-可編輯修改-。size(A)=[m,n];i=n+1:n+m;%基變量集合,后面m個松弛變量為初始基變量;N=1:n;%初始非基變量;B=eye(m,m);xb=b';xn=zero
4、s(m,1);f1=0;w=zeros(1,m);z=-c;%初始判別數(shù);flag=1;while(1)[a,k]=max(z);%x(k)為進基變量;ifa<=0flag=0;breakelsey=inv(B)*A(:,k)ify<=0flag=0;fprintf('不存在最優(yōu)解')breakendt=find(y>0);-可編輯修改-。[a,r1]=min(b1(t)./y(t))r=t(r1);%基變量中第r個變量為退基變量;i(:,r)=kB(:,r)=A(:,k);%換基,即將原基中第r個變量換成第k個變量;c
5、b=c(:,i);%新的價值系數(shù);xb=inv(B)*b;b0=xb;x=zeros(1,n+m)x(:,i)=xb'f=cb*xbz=cb*inv(B)*A-c;%可用z=cb*(BA)-c,判別數(shù).endend六、數(shù)值實驗及結果分析求解線性規(guī)劃問題:min3x1x2s.t.3x13x2x3304x14x2x4162x1x212xi0,i1,2,3,4在工作區(qū)輸入:A=[3,3,1,0;-4,-4,0,1;2,-1,0,0];b=[30,16,12]';c=[-3,1,0,0];-可編輯修改-。[x,f]=zuiy
6、ouhua(A,b,c)x=7.33332.666700056.00000f=-19.3333檢驗結果正確-可編輯修改-。THANKS!!!致力為企業(yè)和個人提供合同協(xié)議,策劃案計劃書,學習課件等等打造全網(wǎng)一站式需求歡迎您的下載,資料僅供參考-可編輯修改-