线性规划什么的应该是运筹学的内容,虽然数学建模比赛不会考这个,但大家日常学习还是会遇到相关的问题。除了用单纯型法,也可以用传统的画图法,画出可行域,再寻求可行解。可行域一般手画更快,但要放在论文中还是应该用电脑画。下面以一个例题,来看如何在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) %边界,透明度
效果: