1. (简答题)某鸡场有1000只鸡,用动物饲料和谷物饲料混合喂养。每天每只鸡平均食混合饲料|0.5 kg,其中动物饲料所占比例不能少于20%。动物饲料每千克0.30元,谷物饲料每千克0.18元,饲料公司每周仅保证供应谷物饲料6000kg,问饲料怎样混合,才能使成本最低?
解析:
Min z =1000*(0.3x1+0.18x2)
S.t.{x1>=0.1
1000*x2<=6000/7
X1+x2=0.5
}
{x1,x2}>=0
改写为
Min z =(300,180)*(x1;x2)
S.t.{(-1,0)<=-0.1
(0,1)<=6/7
(1,1)=0.5
}
{x1,x2}>=0
代码:
f=[300,180];
A=[-1,0;0,1;1,1];
b=[-0.1;6/7;0.5];
Aeq=[1,1];
beq=0.5;
vlb=zeros(2,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果:
>> untitled8
Optimal solution found.
x =
0.1000
0.4000
fval =
102
2.某工厂用A1,A2两台机床加工B1,B2,B3三种不同的零件。
解析:
设A1加工B1,B2,B3的数量分别为x1,x2,x3;
A2加工B1,B2,B3的数量分别为x4,x5,x6
Min z = 2x1+3x2+5x3+3x4+3x5+6x6
S.t.{x1+x4=70
X2+x5=50
X3+x6=20
X1+2x2+3x3<=80
X4+x5+3x6<=100}
{x1,x2,x3,x4,x5,x6}>=0
改写成
Min z = (2,3,5,3,3,6){x1;x2;x3;x4;x5;x6}
(1,2,3,0,0,0
0,0,0,1,1,3)<=(80;100)
(1,0,0,1,0,0
0,1,0,0,1,0
0,0,1,0,0,1)=(70;50;20)
{x1,x2,x3,x4,x5,x6}>=0
代码:
f=[2,3,5,3,3,6];
A=[1,2,3,0,0,0;0,0,0,1,1,3];
b=[80;100];
Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];
beq=[70;50;20];
vlb=zeros(6,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
运行结果:
>> untitled9
Optimal solution found.
x =
70.0000
0
3.3333
0
50.0000
16.6667
fval =
406.6667
>>
3. (简答题)有两个煤场A,B,每月进煤分别不大于60 t,100 t,它们担负供应三个居民区的用煤任务,这三个居民区每月需要用煤分别为45t,75t,40t。A厂离这三个居民区分别为10km,5km,6km,B厂离这三个居民区分别为4km,8km,15km,问这两煤厂如何分配供煤,才能使总运输量最小?
解析:
设A给1,2,3居民区分别运煤x1,x2,x3
B给1,2,3居民区分别运煤x4,x5,x6
Min z =10x1+5x2+6x3+4x4+8x5+15x6
S.t.{x1+x2+x3<=60
X4+x5+x6<=100
X1+x4=45
X2+x5=75
X3+x6=40}
Xi>=0,i=[1:6]
改写成
Min z =(10,5,6,4,8,15)(x1;x2;x3;x4;x5;x6)
S.t.{
(1,1,1,0,0,0
0,0,0,1,1,1)<=(60;100)
(1,0,0,1,0,0
0,1,0,0,1,0
0,0,1,0,0,1)=(45;75;40)
Xi>=0,i=[1:6]
}
代码
f=[10,5,6,4,8,15];
A=[1,1,1,0,0,0;0,0,0,1,1,1];
b=[60;100];
Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];
beq=[45;75;40];
vlb=zeros(6,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果
Optimal solution found.
x =
0
20
40
45
55
0
fval =
960
4.已知某工厂计划生产 Ⅰ、Ⅱ、Ⅲ三种产品,各产品需要在A、B、C设备上加工,有关数据如下:
(1)
解析
设A生产I,II,III数量为x1,x2,x3
b生产I,II,III数量为x4,x5,x6
c生产I,II,III数量为x7,x8,x9
Minz=3(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)
St{
8x1+2x2+10x3<=300
10x4+5x5+8x6<=400
2x7+13x8+10x9<=420
}
Xi>0,i=1:9
改写成
-Minz=(-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9)Xi,i=1:9
St{
(8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10)<=(300;400;420)
}
代码
f=[-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9];
A=[8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果
>> untitled9
Optimal solution found.
x =
0
150
0
0
80
0
210
0
0
fval =
-1090
>>
(2)
解析
设A生产I,II,III数量为x1,x2,x3
b生产I,II,III数量为x4,x5,x6
c生产I,II,III数量为x7,x8,x9
Minz=3(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)-18
St{
8x1+2x2+10x3<=300
10x4+5x5+8x6<=460
2x7+13x8+10x9<=420
}
Xi>0,i=1:9
改写成
-Minz=(-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9)Xi,i=1:9
St{
(8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10)<=(300;460;420)
}
代码
f=[-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9];
A=[8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10];
b=[300;460;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果
>> untitled9
Optimal solution found.
x =
0
150
0
0
92
0
210
0
0
fval =
-1114
>>
1114-18=1096>1090 合算
(3)
解析
设A生产I,II,III,IV,V数量为x1,x2,x3,x4,x5
b生产I,II,III,IV,V数量为x6,x7,x8,x9,x10
c生产I,II,III,IV,V数量为x11,x12,x13,x14,x15
Minz=3(x1+x6+x11)+2(x2+x7+x12)+2.9(x3+x8+x13)+2.1(x4+x9+x14)+1.87(x5+x10+x15)
St{
8x1+2x2+10x3+12x4+4x5<=300
10x6+5x7+8x8+5x9+4x10<=400
2x11+13x12+10x13+10x14+12x15<=420
}
Xi>0,i=1:15
改写成
-Minz=(-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87)Xi,i=1:15
St{
(8,2,10,12,4,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,10,5,8,5,4,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,2,13,10,10,12)<=(300;400;420)
}
代码
f=[-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87];
A=[8,2,10,12,4,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,10,5,8,5,4,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,2,13,10,10,12];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(15,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果
>> untitled9
Optimal solution found.
x =
0
150
0
0
0
0
0
0
0
100
210
0
0
0
0
fval =
-1117
>>
1117>1090 合算
(4)
解析
设A生产I,II,III数量为x1,x2,x3
b生产I,II,III数量为x4,x5,x6
c生产I,II,III数量为x7,x8,x9
Minz=4.5(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)
St{
9x1+2x2+10x3<=300
12x4+5x5+8x6<=400
4x7+13x8+10x9<=420
}
Xi>0,i=1:9
改写成
-Minz=(-4.5,-2,-2.9,-4.5,-2,-2.9,-4.5,-2,-2.9)Xi,i=1:9
St{
(9,2,10,0,0,0,0,0,0;0,0,0,12,5,8,0,0,0;0,0,0,0,0,0,4,13,10)<=(300;400;420)
}
代码
f=[-4.5,-2,-2.9,-4.5,-2,-2.9,-4.5,-2,-2.9];
A=[9,2,10,0,0,0,0,0,0;0,0,0,12,5,8,0,0,0;0,0,0,0,0,0,4,13,10];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)
结果
>> untitled9
Optimal solution found.
x =
0
150
0
0
80
0
105
0
0
fval =
-932.5000
>>
注意:
MATLAB内线性规划函数只能求解函数最小值,如需求解最大值则要将求解函数取负,最终结果为fval的绝对值