運(yùn)籌學(xué)實(shí)驗(yàn)1
實(shí)驗(yàn)1
一、實(shí)驗(yàn)名稱:MATLAB基礎(chǔ)操作
二、實(shí)驗(yàn)?zāi)康模菏煜?/span>MATLAB軟件的基礎(chǔ)操作為本學(xué)期后續(xù)編程做準(zhǔn)備
三、實(shí)驗(yàn)內(nèi)容
1.???? 練習(xí)MATLAB的基礎(chǔ)操作。
實(shí)現(xiàn)1(實(shí)驗(yàn)1.1:MATLAB基礎(chǔ)操作):
?


1.2:驗(yàn)證幻方矩陣的性質(zhì)
要求:創(chuàng)建腳本文件驗(yàn)證幻方矩陣的性質(zhì)即行和、列和、兩條對(duì)角線和相等。
表格 1代碼自寫
程序代碼
n=input('幻方矩陣的階數(shù)');
? A=magic(n);%生成n階幻方矩陣
? duijiao1=diag(A);
? duijiao2=diag(fliplr(A));
? if sum(duijiao1)==sum(duijiao2)
? ??? disp('對(duì)角線和相等');
? else
? ??? disp('對(duì)角線和不相等');
? end
? for i=1:n
? ??? hang(1,i)=sum(A(i,:));
? end
?
? for i=1:n
? ??? lie(:,i)=sum(A(:,i));
? end
? if length(unique(hang)==1)
? ??? disp('每行和相等');
? else
? ??? disp('每行和不相等');
? end
? if length(unique(lie)==1)
? ??? disp('每列和相等');
? else
? ??? disp('每列和不相等');
? end
運(yùn)行結(jié)果
幻方矩陣的階數(shù)3
對(duì)角線和相等
每行和相等
每列和相等
2.???? 實(shí)驗(yàn)1.3:作業(yè)2.3(1)
要求:編寫程序求解LP問(wèn)題的基解、基可行解、最優(yōu)解。完成作業(yè)2.3(1),并驗(yàn)證手算結(jié)果。(編寫m文件實(shí)現(xiàn),不要在命令窗口下實(shí)現(xiàn))
???
表格 2代碼自寫,參考https://blog.csdn.net/jstlovely/article/details/112135338
程序代碼
A=input('標(biāo)準(zhǔn)系數(shù)矩陣');
? b=input('資源矩陣');
? C=input('價(jià)值向量');
? [m,n]=size(A);%A的行列數(shù)
? allzuhe=nchoosek(n,m);%所有組合數(shù)
? r = rank(A);%矩陣A的秩
? alllie=nchoosek(n,r);
? allhang=nchoosek(m,r);
? allliezuhe=nchoosek(1:n,r);%在列中取秩的組合
? allhangzuhe=nchoosek(1:m,r);
? o=1;
? for i=1:alllie
? ??? B=A(:,allliezuhe(i,:));
? ??? if rank(B)==r
? ??????? X=inv(B)*b;%求基本解
? ??????? for k=1:n
? ??????????? jijie(o,k)=0;
? ??????? end
? ???? ???jijie(o,allliezuhe(i,:)) = X;%輸出這次迭代的基解
? ?????? if X>0
? ?????????? for p=1:n
? ?????????????? kexingjie(o,p)=0;
? ?????????? end
? ?????????? kexingjie(o,allliezuhe(i,:)) ? = X;%輸出這次迭代的可行解
? ?????? end
? ??????? o=o+1;
? ??? end
? end
? kexingjie(all(kexingjie==0,2),:) = [];%去掉可行解中全為0的行
? [s,t]=size(kexingjie);
? for q=1:s
? ??? zuiyoujie(q,1)=C*kexingjie(q,:)';
? end
? [zuiyoujieshu,I]=max(zuiyoujie);
? zuiyoujie=kexingjie(I,:);
運(yùn)行結(jié)果
zuiyoujie
?
zuiyoujie =
?
????? ? 34/5??????????? 0????????????? 0????????????? 7/5????
?
>> kexingjie
?
kexingjie =
?
?????? ? 1????????????? 2????????????? 0????????????? 0??????
????? ? 34/5??????????? 0????????????? 0????????????? 7/5????
?????? ? 0???????????? 45/16?????????? 7/16?????????? 0??????
?
>> jijie
?
jijie =
?
?????? ? 1????????????? 2????????????? 0????????????? 0??????
????? ? 45/13?????????? 0??????????? -14/13?????????? 0??????
????? ? 34/5??????????? 0????????????? 0????????????? 7/5????
?????? ? 0???????????? 45/16?????????? 7/16?????????? 0??????
?????? ? 0???????????? 68/29?????????? 0???????????? -7/29???
?????? 0????????????? 0??????????? -68/31???????? -45/31???
實(shí)驗(yàn)1.4:畫出例2-1 LP問(wèn)題的可行域
表格 3代碼自寫,參考實(shí)驗(yàn)1代碼參考
程序代碼
[X,Y]=meshgrid(-1:0.02:20,-1:0.02:20);
? x=-1:0.1:20;
? y1=8-2*x;
? plot(x,y1);
? ind=(Y+2*X<=8)&(Y<=4)&(X<=3)&(X>=0)&(Y>=0);
? plot(X(ind),Y(ind),'.r','MarkerSize',2);
? hold off;
? title('可行域');
運(yùn)行結(jié)果

?