Matlab畫線性規劃可行域

感謝地心引力 2022-01-08 06:05:54 阅读数:957

matlab 可行

線性規劃什麼的應該是運籌學的內容,雖然數學建模比賽不會考這個,但大家日常學習還是會遇到相關的問題。除了用單純型法,也可以用傳統的畫圖法,畫出可行域,再尋求可行解。可行域一般手畫更快,但要放在論文中還是應該用電腦畫。下面以一個例題,來看如何在matlab中畫可行域(我只是業餘畫一下,代碼僅供參考,大家多多指導)。
在這裏插入圖片描述
code:

%% 直線
L1=[7,0;7,7];
plot(L1(:,1),L1(:,2));hold on %x1最大值為7
text(6.8,4,'x_1=7','color','b');
L2=[0 3;8 3];
plot(L2(:,1),L2(:,2));hold on %x2最大值為3
text(0.8,3.1,'x_2=3','color','b');
L3=[0 9;9 0];
plot(L3(:,1),L3(:,2));hold on
text(2,7,'x_1+x_2=9','color','b')
L4=[0,6;7,0.4];
plot(L4(:,1),L4(:,2));
text(0.5,5,'48x_1+30x_2=360','color','b')
L5=[0,9;7,-0.3];
plot(L5(:,1),L5(:,2));
text(6.5,0,'40x_1+30x_2=270','color','b')
grid on
%% 填充
[X1,X2]=meshgrid(0:0.01:7,0:0.01:3);
idX1=(X1+X2<=9)&(48*X1+60*X2>=360)&(40*X1+30*X2>=270);
X1=X1(idX1);
X2=X2(idX1);
k=convhull(X1,X2);
h=fill(X1(k),X2(k),'g'); %綠色填充
set(h,'edgealpha',0,'facealpha',0.3) %邊界,透明度

效果:
在這裏插入圖片描述

版权声明:本文为[感謝地心引力]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080605536875.html