数学建模线性规划实例及详细解答(MATLAB代码)
前言:
?最近在學(xué)習(xí)數(shù)學(xué)建模的算法與應(yīng)用,以一本較好的書籍為指導(dǎo)(《數(shù)學(xué)建模算法與應(yīng)用》),不過對于我來說,我主要去攻MATLAB代碼及建模方法,當(dāng)然書里還有l(wèi)ingo代碼解析。對于這本書,我感覺還是蠻難啃的,就像今天我寫的這篇博客來說,其中最后一題就是我啃了不知道有多久,最后我老老實實的把每一步都寫在紙上,然后一步一步的用MATLAB去試,最后終于搞懂了,此時心情不可言喻啊😃。如此,我來分享一下我學(xué)到的東西吧。
注意:如要那本書的電子版可以關(guān)注我,然后免費送你!!!
1.題目1:
先來一道簡單的吧:
這是讓大家熟悉一下對MATLAB代碼的😄
1.1.MATLAB代碼:
f=[-3,1,1]; A=[1,-2,1;4,-1,-2] b=[11;-3]; Aeq=[-2,0,1]; beq=[1]; lb=zeros(3,1); [x,fval]=linprog(f,A,b,Aeq,beq,lb,[]) x=-x %上述轉(zhuǎn)換為求最小值,再提個符號變?yōu)樯鲜銮蟮媚繕?biāo)值再來一道相對較難的:
什么反應(yīng)。我們可以定義其它的變量來代替絕對值里面的數(shù),比如用(x1x_{1}x1?+x2x_{2}x2?)/2表示絕對值x1x_{1}x1?當(dāng)然這里的x1x_{1}x1?更上面的不一樣。然而,去掉絕對值的數(shù),我們可以用(x1x_{1}x1?-x2x_{2}x2?)/2,其中,每個數(shù)都大于等于0,接下來,我們可以上代碼了。
1.2.MATLAB代碼:
f=[1/2,1/2,1,1,3/2,3/2,2,2]; Aeq=[1/2,-1/2,-1/2,1/2,-1/2,1/2,1/2,-1/2;1/2,-1/2,-1/2,1/2,1/2,-1/2,-3/2,3/2;1/2,-1/2,-1/2,1/2,-1,1,3/2,-3/2]; beq=[0;1;-1/2]; lb=zeros(8,1); [x,fval]=linprog(f,[],[],Aeq,beq,lb,[])好了,我相信大家看到這里應(yīng)該對相關(guān)的MATLAB代碼熟悉了吧,那現(xiàn)在我們來實戰(zhàn)一下。
2.題目2:
?解:設(shè)x1x_{1}x1?,x2x_{2}x2?分別表示在產(chǎn)品I中通過設(shè)備A1A_{1}A1?,A2A_{2}A2?的機器個數(shù),同樣x3x_{3}x3?,x4x_{4}x4?,x5x_{5}x5?,分別表示在產(chǎn)品I中通過設(shè)備B1B_{1}B1?,B2B_{2}B2?,B3B_{3}B3?的機器個數(shù)。x6x_{6}x6?,x7x_{7}x7?,x8x_{8}x8?,分別在產(chǎn)品II中表示通過設(shè)備A1A_{1}A1?,A2A_{2}A2?,B1B_{1}B1?的機器個數(shù),x9x_{9}x9?表示在產(chǎn)品III中A2A_{2}A2?機器的個數(shù)。
有這樣的等式:x1x_{1}x1?+x2x_{2}x2?+x3x_{3}x3?=x4x_{4}x4?+x5x_{5}x5?,x6x_{6}x6?+x7x_{7}x7?=x8x_{8}x8?。
(圖來源《數(shù)學(xué)建模算法與應(yīng)用習(xí)題解答》)
對于該MATLAB代碼我感覺是有點難度,在此小編就不在展示了哦,大家實力非常強,所以我就不展示了。😄😄😄
再來一道代碼詳細的題目:
在此,小編就不建模了,我給出一個好的建模解析給你們:
對于在markdown中,其數(shù)學(xué)公式太難打了,所以,我就發(fā)一張這樣的筆記,給大家看一下哈,這是我將每一步寫成有數(shù)字的建模方式,有了這樣的,我們就可以更好的寫代碼。(字有點丑,大家將就一下哈)
2.1.代碼:
%目標(biāo)函數(shù) c=[3100;3800;3500;2850]; %由目標(biāo)函數(shù)可知有12個未知數(shù),且有一些規(guī)律,大家可以自行找一下 c=c*ones(1,3); %使c變成一個4行3列的函數(shù),并且,剛剛對應(yīng)于目標(biāo)函數(shù)未知量前面的系數(shù) c=c(:); %將c以列排序 %接下來就看約束條件1,可看出未知數(shù)前面系數(shù)是1,且需要構(gòu)造一個下面的數(shù)組 a1=zeros(3,12); for i=1:3a1(i,4*i-3:4*i)=1; %如果大家看不懂的話,可以去MATLAB上試一下這段代碼最后數(shù)組的結(jié)果 end b1=[10 16 8]'; %看約束條件2 a2=zeros(4,12); for i=1:4 a2(i,i:4:12)=1; %如果大家看不懂的話,可以去MATLAB上試一下這段代碼最后數(shù)組的結(jié)果 end b2=[18 15 23 12]'; %看約束條件3 bb=[480;650;580;390]; a3=zeros(3,12); for i=1:3a3(i,4*i-3:4*i)=bb; %如果大家看不懂的話,可以去MATLAB上試一下這段代碼最后數(shù)組的結(jié)果 end b3=[6800 8700 5300]'; a=[a1;a2;a3]; b=[b1;b2;b3]; %看平衡條件 aeq=zeros(2,12); %如果大家看不懂的話,可以去MATLAB上試一下這段代碼最后數(shù)組的結(jié)果 aeq(1,1:4)=1/10; aeq(1,5:8)=-1/16; aeq(2,5:8)=1/16; aeq(2,9:12)=-1/8; beq=[0;0]; lb=zeros(12,1); [x,y]=linprog(-c,a,b,aeq,beq,lb,[]) x=reshape(x,[4,3]) %解出的x值以列排序,將它重組為3*4的數(shù)組 x=sum(x') %表示艙口1,2,3分別放入貨物的總重量 y=-y; %目標(biāo)函數(shù)最終的值啊!!!寫這篇博客讓我承受了莫大的打擊,先是數(shù)學(xué)公式編輯的學(xué)習(xí),再到放棄該學(xué)習(xí),最后又是直接放圖片。再則自己為了讓讀者易懂,寫了幾頁的草稿…在此,我好像有點累了,我好像要去休息了。我想在此對大家說一句保護好身體哦,還有就是多多支持!!!😄😄😄
好了,這篇博客也寫完了,希望對大家有幫助!!!
總結(jié)
以上是生活随笔為你收集整理的数学建模线性规划实例及详细解答(MATLAB代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue报错:error Strings
- 下一篇: SSIS 学习之旅 FTP访问类