大家好,欢迎来到IT知识分享网。
1.1
题目
这道题就是简单的一个线性规划模型,不要求我们自行建立,所以就按照书本上的例题去写就行
代码
% 例题1 %使用matlab解决线性规划问题 %目标函数:z=3x1-x2-x3 % 要求x1,x2,x3都是下限大于0 c=[-3,1,1]'; A=[1,-2,1; 4,-1,-2]; b=[11,-3]'; Aeq=[-2,0,1]; beq=1; lb=zeros(3,1); ub=[];%对上限没有要求 [x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)
运行结果如图所示
1.2
题目
分别用 M a t l a b 和 L i n g o 求解下列规划问题 : 分别用 Matlab 和 Lingo 求解下列规划问题: 分别用Matlab和Lingo求解下列规划问题:
min z = ∣ x 1 ∣ + 2 ∣ x 2 ∣ + 3 ∣ x 3 ∣ + 4 ∣ x 4 ∣ , \min z=\left|x_{1}\right|+2\left|x_{2}\right|+3\left|x_{3}\right|+4\left|x_{4}\right|, minz=∣x1∣+2∣x2∣+3∣x3∣+4∣x4∣, s. t. { x 1 − x 2 − x 3 + x 4 = 0 x 1 − x 2 + x 3 − 3 x 4 = 1 , x 1 − x 2 − 2 x 3 + 3 x 4 = − 1 2 \text { s. t. }\left\{\begin{array}{l} x_{1}-x_{2}-x_{3}+x_{4}=0 \\ x_{1}-x_{2}+x_{3}-3 x_{4}=1, \\ x_{1}-x_{2}-2 x_{3}+3 x_{4}=-\frac{1}{2} \end{array}\right. s. t. ⎩
⎨
⎧x1−x2−x3+x4=0x1−x2+x3−3x4=1,x1−x2−2x3+3x4=−21
书上例题的解释
% 例题2 clear;clc % 由于有绝对值的问题,所以需要将变量进行代换 c=[1:4,1:4]'; %令ui=(xi+|xi|)/2,vi=(|xi|-xi)/2 Aeq=[1,-1,-1,1; 1,-1,1,-3; 1,-1,-2,3]; Aeq=[Aeq,-Aeq] beq=[0,1,-0.5]; [y,z]=linprog(c,[],[],Aeq,beq,zeros(8,1)); x=y(1:4)-y(5:end) z
运行结果如下:
1.3
题目
根据题目要求建立以下规划方程
对于完成产品 I I I来说,设以 A 1 , A 2 A_1,A_2 A1,A2完成 A A A工序的产品分别为 x 1 , x 2 x_1,x_2 x1,x2件,完成 A A A转入 B B B的三道工序 B 1 B 2 B 3 B_1B_2B_3 B1B2B3分别为 x 3 , x 4 , x 5 x_3,x_4,x_5 x3,x4,x5
以此类推,然后建立如下方程
max z = ( 1.25 − 0.25 ) ( x 1 + x 2 ) + ( 2 − 0.35 ) x 8 + ( 2.8 − 0.5 ) x 9 − 300 6000 ( 5 x 1 + 10 x 6 ) − 321 10000 ( 7 x 2 + 9 x 7 + 12 x 9 ) − 250 4000 ( 6 x 3 + 8 x 3 ) − 783 7000 ( 4 x 4 + 11 x 9 ) − 200 4000 ∗ 7 x 5 \max z=(1.25-0.25)(x_1+x_2)+(2-0.35)x_8+(2.8-0.5)x_9-\frac{300}{6000}(5x_1+10x_6)\\-\frac{321}{10000}(7x_2+9x_7+12x_9)-\frac{250}{4000}(6x_3+8x_3)-\frac{783}{7000}(4x_4+11x_9)-\frac{200}{4000}*7x_5\\ maxz=(1.25−0.25)(x1+x2)+(2−0.35)x8+(2.8−0.5)x9−6000300(5x1+10x6)−10000321(7x2+9x7+12x9)−4000250(6x3+8x3)−7000783(4x4+11x9)−4000200∗7x5 s. t. { 5 x 1 + 10 x 6 ≤ 6000 , 7 x 2 + 9 x 7 + 12 x 9 ≤ 10000 , 6 x 3 + 8 x 8 ≤ 4000 4 x 4 + 11 x 9 ≤ 7000 7 x 5 ≤ 4000 , x 1 + x 2 = x 3 + x 4 + x 5 , x 6 + x 7 = x 8 , x i ≥ 0 , i = 1 , 2 , … , 9. \text { s. t. }\left\{\begin{array}{l} 5x_{1}+10x_{6}\le6000, \\ 7x_{2}+9x_{7}+12x_{9}\le10000, \\ 6x_{3}+8x_{8}\le 4000\\ 4x_{4}+11x_{9}\le 7000\\ 7x_5\le 4000,\\ x_1+x_2=x_3+x_4+x_5,\\ x_6+x_7=x_8,\\ x_i\ge0,i=1,2,\dots,9. \end{array}\right. s. t. ⎩
⎨
⎧5x1+10x6≤6000,7x2+9x7+12x9≤10000,6x3+8x8≤40004x4+11x9≤70007x5≤4000,x1+x2=x3+x4+x5,x6+x7=x8,xi≥0,i=1,2,…,9.
代码
% 例3 %这道题是实际应用题 %完成工序一共为8个 clear;clc c = zeros(9,1); % 初始化目标函数的系数向量全为0 c(1) = 1.25 -0.25 -300/6000*5; % x1前面的系数是c1 c(2) = 1.25 -0.25 -321/10000*7; c(3) = -250 / 4000 * 6; c(4) = -783/7000*4; c(5) = -200/4000 * 7; c(6) = -300/6000*10; c(7) = -321 / 10000 * 9; c(8) = 2-0.35-250/4000*8; c(9) = 2.8-0.5-321/10000*12-783/7000*11;% 我们求的是最大值,所以这里需要改变符号 A=[5,zeros(1,4),10,zeros(1,3); 0,7,zeros(1,4),9,0,12; zeros(1,2),6,zeros(1,4),8,0; zeros(1,3),4,zeros(1,4),11; zeros(1,4),7,zeros(1,4)]; b=[6000,10000,4000,7000,4000]'; aeq=ones(2,9); aeq(1,3:5)=-aeq(1,3:5); aeq(2,8)=-aeq(2,8); aeq(1,6:8)=0; aeq(2,1:5)=0; %aeq(6:9)=zeros(1,4) %aeq=[aeq;aeq]; aeq(:,9)=0 beq=zeros(1,2); beq=beq'; lb=zeros(9,1); [x,z]=linprog(-c,A,b,aeq,beq,lb,[]); %整数规划 intcon=1:9; [x2,z2]=intlinprog(-c,intcon,A,b,aeq,beq,lb,[]) z2=-z2
1.4
题目
一架货机有三个货舱:前舱、中舱和后舱。三个货舱所能装载的
货物的最大重量和体积有限制(如表 3 所示)。现有四类货物用该货机进行装运,
货物的规格以及装运后获得的利润如表 4 所示。并且为了飞机的平衡,三个货
舱装载的货物重量必须与其最大的容许量成比例。问应如何装运,使货机飞行利
润最大?
假设:
每种货物可以无限细分;
每种货物可以分布在一个或者多个货舱内;
不同的货物可以放在同一个货舱内,并且可以保证不留空隙。
分析
这道题的目标函数还是比较好写的,包括其约束条件也是比较好写,但是货物重量必须与其最大的容许量成比例这个约束条件还是要好好琢磨的
代码
%例题1.4 %本题要求使得飞机利润最大,则目标函数与利润挂钩 clear;clc; c=zeros(12,1); c(1)=3100; c(5)=3100; c(9)=3100; c(2)=3800; c(6)=3800; c(10)=3800; c(3)=3500; c(7)=3500; c(11)=3500; c(4)=2850; c(8)=2850; c(12)=2850; A=zeros(10,12); A(1,1:4)=1;A(2,5:8)=1;A(3,9:12)=1; A(4,1:4:9)=1; A(5,2:4:10)=1; A(6,3:4:11)=1; A(7,4:4:12)=1; value=[480,650,580,390]; for i=1:length(value) A(8,i)=value(i); A(9,i+4)=value(i); a(10,i+8)=value(i); end A b=[10,16,8,18,15,23,12,6800,8700,5300]'; Aeq=zeros(3,12); Aeq(1,1:4)=16; Aeq(1,4:8)=-10; Aeq(2,1:4)=8; Aeq(2,9:12)=-10; Aeq(3,5:8)=8; Aeq(3,9:12)=-16; Aeq beq=zeros(3,1); lb=zeros(12,1); [x,z]=linprog(-c,A,b,Aeq,beq,lb,[]); x z=-z
运行结果如下:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153752.html