資源簡介
線性規劃單純形法-大M法和兩階段法程序實現(MATLAB)。程序有詳細的注釋。通俗易懂。
程序共有三個函數:main函數、twophase.m函數、MySimplex_method.m函數。
其中twophase.m函數是利用兩階段單純形法。MySimplex_method.m函數是利用大M法單純形法求解。
MySimplex_method.m函數既包含大M法,也包含單純形法。twophase.m的單純形法求解是通過調用MySimplex_method.m函數實現的。
在main函數中輸入約束方程和目標函數,自動調用twophase.m函數、 MySimplex_method.m函數去進行規劃求解。
如有需要,請聯系私信我索取利用該程序求解實際問題的演講PPT和Word。

代碼片段和文件信息
?A=[0?1?0?0?1?0?0?1?0?0;??????%?不等式約束????????????
????3?0?0?1?0?0?2?0?0?0;
????0?3?0?0?1?0?0?2?0?0;
????0?0?3?0?0?1?0?0?2?0;
????1?1?1?0?0?0?0?0?0?0;
????0?0?0?1?1?1?0?0?0?0];
b=[650;650;850;400;650;555];
AA=[0?0?0?1?1?1?0?0?0?-1????%?等式約束
????1?0?0?1?0?0?1?0?0?0;
????0?0?1?0?0?1?0?0?1?0;
????0?0?0?0?0?0?1?1?1?0];
?bb=[185;450;350;400];
c=?[-1150?-1150?-1150?-760?-760?-760?-350?-350?-350?0?];???%?目標函數系數
A=input(‘請輸入不等式約束方程組系數矩陣:‘);?????????????%?單純形法求解標準形線性規劃問題:?min?c*x?s.t.?A*x<=b??AA*x=bb??
b=input(‘請輸入不等式約束方程組常數項向量b(b>=0):‘);???%其中bb>=0??b>0,??x>=0
AA=input(‘請輸入等式約束方程組系數矩陣:‘);???????????????
bb=input(‘請輸入等式約束方程組常數項向量bb(bb>=0):‘);
c=input(‘請輸入目標函數系數向量:‘);
model=input(‘請輸入采用的單純形法,選擇大M法請輸入1,選擇兩階段法請輸入2:‘);
if?isempty(AA)&&isempty(A)???????????????????%矩陣全為空
????disp(‘矩陣全為空,無法計算退出程序‘);
end
if?(~isempty(AA))&&(~isempty(A))????????????%矩陣全不空,
????[e1f1]=size(A);
????A=[Aeye(e1)];
????[e2f2]=size(AA);
????AA=[AAzeros(e2e1)];
????A=[A;AA];??????????????????????????????%得到了添加了松弛變量的系數矩陣?。
????b=[b;bb];????????????????????????%b為約束方程組常數項。??
????c1=[czeros(1e1)];??????????%到這,已經化成了標準型。
??????if?model==2
?????????[xzstage1_sturct_STstage2_sturct_STST]?=?twophase(c1Ab);
??????????x=x(1:f1)????%?輸出參數:?x最優解?z最優目標函數值ST存儲單純形表數據
??????????z
??????????ST?%stage1_sturct_ST是第一階段的單純形表的集合。%stage2_sturct_ST是第二階段的單純形表的集合。若需顯示,你自行寫入
????????????????%ST是最終的單純形表。
??????elseif?model==1
?????????[xz~~~sturct_STST]?=?MySimplex_method(c1Ab)?;
??????????x=x(1:f1)
??????????z
??????????ST?????????????????%sturct_ST是單純形表的集合(大M法只需要一個單純形表)%ST是最終的單純形表。
??????else
?????????disp(‘方法選擇錯誤,退出程序。‘)
?
??????end
???
end
if?isempty(AA)&&(~isempty(A))????%當AA為空,A不為空時。
?????[e1f1]=size(A);
??????A=[Aeye(e1)];
??????b=b;
??????c1=[czeros(1e1)];?%到這,已經化成了標準型。
??????if?model==2
??????[xzstage1_sturct_STstage2_sturct_STST]?=?twophase(c1Ab);
??????z
???????x=x(1:f1)
???????ST
??????
?????elseif?model==1
??????[xz~~~sturct_STST]?=?MySimplex_method(c1Ab)?;
???????x=x(1:f1)
???????z
???????ST
?????else
????????disp(‘方法選擇錯誤,退出程序。‘)
?
?????end
end
if?(~isempty(AA))&&isempty(A)????%當A為空,AA不為空時。
????A=AA;
????b=bb;
????c1=c;??%本身已經是標準型
????if?model==2
?????[xzstage1_sturct_STstage2_sturct_STST]?=?twophase(c1Ab);
??????x
??????z
??????ST
???%stage1_sturct_ST是第一階段的單純形表的集合。%stage2_sturct_ST是第二階段的單純形表的集合。
???elseif?model==1
??????[xz~~~sturct_STST]?=?MySimplex_method(c1Ab)?;
???????x
???????z
???????ST
?????else
????????disp(‘方法選擇錯誤,退出程序。‘)
????end
?
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3015??2020-05-27?11:07??程序\main.m
?????文件???????3626??2020-05-27?10:38??程序\MySimplex_method.m
?????文件???????2728??2020-05-27?10:57??程序\twophase.m
?????目錄??????????0??2020-06-03?10:26??程序
-----------?---------??----------?-----??----
?????????????????9369????????????????????4
- 上一篇:MATLAB實現圖片柱面投影
- 下一篇:zernike 波前擬合
評論
共有 條評論