数学建模与数学实验第5版-线性规划-习题3.4
《数学建模与数学实验》第5版 线性规划 习题3.4
文章目录
[3. 某工厂利用两种原料甲、乙生产
A 1 、 A 2 、 A 3 A_1、A_2、A_3
A
1
、
A
2
、
A
3
三种产品.](#3_A_1A_2A_3_94)
参考教材:《数学建模与教学实验》第5版
提示:以下是本篇文章正文内容,来自参考教材课后习题。
1. 某鸡场有1000只鸡,用动物饲料和谷物混合喂养.每天每只鸡平均食混合饲料0.5kg,其中动物饲料所占比例不能少于20%.动物饲料每千克0.30元,谷物饲料每千克0.18元,饲料公司每周仅保证供应谷物饲料6000kg
问饲料怎样混合,才能使成本最低?
解:设每天每只鸡动物饲料
x 1 k g x_1kg
x
1
k
g ,谷物饲料
x 2 k g x_2kg
x
2
k
g 混合喂养。
建立模型:
min w
150 x 1 + 90 x 2 s . t { x 1 + x 2
1 x 1 ⩾ 0.2 7 x 2 ⩽ 12 x 1 , x 2 ⩾ 0 \min w=150x_1+90x_2\s.t\left{ \begin{array}{c} x_1+x_2=1\ x_1\geqslant 0.2\ 7x_2\leqslant 12\ x_1,x_2\geqslant 0\\end{array} \right.
min
w
=
150
x
1
90
x
2
s
.
t
⎩
⎨
⎧
x
1
x
2
=
1
x
1
⩾
0.2
7
x
2
⩽
12
x
1
,
x
2
⩾
0
matlab解题:
% 目标函数
f = [150 90];
% 不等式约束
a = [-1 0;0 7];
b = [-0.2;12];
% 等式约束
aeq = [1 1];
beq = [1];
% 上下限
vlb = zeros(2,1);
vub = [];
[x,fval] = linprog(f,a,b,aeq,beq,vlb,vub)
当
x 1
0.2 , x 2
0.8 x_1=0.2,x_2=0.8
x
1
=
0.2
,
x
2
=
0.8 时成本最小为102元。
(lingo解题):
model:
minw=150*x1+90*x2;
x1+x2=1;
x1>=0.2;
7*x2<=12;
end
2. 某工厂用A1,A2两台机床加工B1,B2,B3三种不同零件. 已知在一个生产周期内A1只能工作80机时,A2只能工作100机时. 一个生产周期内计划加工B1 70件、B2 50件、B3 20件.
问怎样安排两台机床一个周期的加工任务,才能使加工成本最低?
两台机床加工每个零件的时间和加工每个零件的成本分别如下列各表所示:
加工每种零件时间表(机时)
机床 | B 1 B_1 B 1 | B 2 B_2 B 2 | B 1 B_1 B 1 |
---|---|---|---|
A 1 A_1 A 1 | 1 | 2 | 3 |
A 2 A_2 A 2 | 1 | 1 | 3 |
加工每种零件成本表(元)
机床 | B 1 B_1 B 1 | B 2 B_2 B 2 | B 1 B_1 B 1 |
---|---|---|---|
A 1 A_1 A 1 | 2 | 3 | 5 |
A 2 A_2 A 2 | 3 | 3 | 6 |
解:设
A 1 A_1
A
1
机床上面加工零件
B 1 , B 2 , B 3 B_1,B_2,B_3
B
1
,
B
2
,
B
3
的个数分别为
X 11 , X 21 , X 31 X_{11},X_{21},X_{31}
X
11
,
X
21
,
X
31
,在
A 2 A_2
A
2
机床上面加工零件的个数分别为
X 12 , X 22 , X 32 X_{12},X_{22},X_{32}
X
12
,
X
22
,
X
32
建立模型:
min w
2 x 11 + 3 x 12 + 5 x 13 + 3 x 21 + 3 x 22 + 6 x 23 s . t { x 11 + 2 x 12 + 3 x 13 ⩽ 80 x 21 + x 22 + 3 x 23 ⩽ 100 x 11 + x 21
70 x 12 + x 22
50 x 13 + x 23
20 x i j ⩾ 0 , ( i j
1 , 2 , 3. ) \min w=2x_{11}+3x_{12}+5x_{13}+3x_{21}+3x_{22}+6x_{23}\s.t\left{ \begin{array}{c} x_{11}+2x_{12}+3x_{13}\leqslant 80\ x_{21}+x_{22}+3x_{23}\leqslant 100\ x_{11}+x_{21}=70\ x_{12}+x_{22}=50\ x_{13}+x_{23}=20\ x_{ij}\geqslant 0,\left( ij=1,2,3. \right)\\end{array} \right.
min
w
=
2
x
11
3
x
12
5
x
13
3
x
21
3
x
22
6
x
23
s
.
t
⎩
⎨
⎧
x
11
2
x
12
3
x
13
⩽
80
x
21
x
22
3
x
23
⩽
100
x
11
x
21
=
70
x
12
x
22
=
50
x
13
x
23
=
20
x
ij
⩾
0
,
(
ij
=
1
,
2
,
)
变量为整数
matlab解题:
% 目标函数
f = [2 3 5 3 3 6];
% 整数个数
intcon = [1,2,3,4,5,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] = intlinprog(f,intcon,a,b,aeq,beq,vlb,vub)
A 1 A_1
A
1
机床上面加工零件
B 1 , B 2 , B 3 B_1,B_2,B_3
B
1
,
B
2
,
B
3
的个数分别为
X 11
68 , X 21
0 , X 31
4 X_{11}=68,X_{21}=0,X_{31}=4
X
11
=
68
,
X
21
=
0
,
X
31
=
4 ,在
A 2 A_2
A
2
机床上面加工零件的个数分别为
X 12
2 , X 22
50 , X 32
16 X_{12}=2,X_{22}=50,X_{32}=16
X
12
=
2
,
X
22
=
50
,
X
32
=
16 ,成本最低为408元。
( lingo解题: )
model:
minw=2*x11+3*x12+5*x13+3*x21+3*x22+6*x23;
x11+2*x12+3*x13<=80;
x21+x22+3*x23<=100;
x11+x21=70;
x12+x22=50;
x13+x23=20;
end
3. 某工厂利用两种原料甲、乙生产 A 1 、 A 2 、 A 3 A_1、A_2、A_3 A 1 、 A 2 、 A 3 三种产品.
每月可供应的原材料数量(单位:t)每万件产品所需各种原料的数量及每万件产品的价格如下表所示:
原料 | A 1 A_1 A 1 | A 2 A_2 A 2 | A 3 A_3 A 3 | 每月原料供应量/t |
---|---|---|---|---|
甲 | 4 | 3 | 1 | 180 |
乙 | 2 | 6 | 3 | 200 |
价格/万元 | 12 | 5 | 4 |
(1).试制定每月最优生产计划,使得总收益最大;
解:设
x i j ( i j
1 , 2 , 3 ) x_{ij}(ij=1,2,3)
x
ij
(
ij
=
1
,
2
,
3
) 表示甲乙两种原料分别生产的三种产品数.
建立模型:
max w
12 x 11 + 5 x 12 + 4 x 13 + 12 x 21 + 5 x 22 + 4 x 23 s . t { 4 x 11 + 3 x 12 + x 13 ⩽ 180 2 x 21 + 6 x 22 + 3 x 23 ⩽ 200 x i j ⩾ 0 , ( i j
1 , 2 , 3 ) \max w=12x_{11}+5x_{12}+4x_{13}+12x_{21}+5x_{22}+4x_{23}\s.t\left{ \begin{array}{c} 4x_{11}+3x_{12}+x_{13}\leqslant 180\ 2x_{21}+6x_{22}+3x_{23}\leqslant 200\ x_{ij}\geqslant 0,\left( ij=1,2,3 \right)\\end{array} \right.
max
w
=
12
x
11
5
x
12
4
x
13
12
x
21
5
x
22
4
x
23
s
.
t
⎩
⎨
⎧
4
x
11
3
x
12
x
13
⩽
180
2
x
21
6
x
22
3
x
23
⩽
200
x
ij
⩾
0
,
(
ij
=
1
,
2
,
3
)
matlab解题:
% 目标函数
f = [12 5 4 12 5 4];
% 不等式约束
a = [4 3 1 0 0 0;0 0 0 2 6 3];
b = [180;200];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(6,1);
vub = [];
[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)
计划甲生产
A 3 A_3
A
3
产品180,乙生产
A 1 A_1
A
1
产品100,总收益最大为1920万元。
lingo求解:
(2).对求得的最优生产计划进行灵敏性分析.
如上结果可得出甲的影子价格为4,乙的影子价格为6;
最优值不变条件下目标函数系数的允许变化范围为:
x 11 ( 12 , 16 ) , x 12 ( 5 , 12 ) , x 13 ( 3 , 4 ) , x 21 ( 2.667 , 12 ) , x 22 ( 5 , 36 ) , x 23 ( 4 , 18 ) x_{11}(12,16),x_{12}(5,12),x_{13}(3,4),x_{21}(2.667,12),x_{22}(5,36),x_{23}(4,18)
x
11
(
12
,
16
)
,
x
12
(
5
,
12
)
,
x
13
(
3
,
4
)
,
x
21
(
2.667
,
12
)
,
x
22
(
5
,
36
)
,
x
23
(
4
,
18
) 甲乙的原料供应量不能增加。可允许降低。 注意:
x 11 x_{11}
x
11
系数的允许范围想要其他变量保持不变。
4. 每班的护士在值班开始时向病房报到,连续工作8个小时.
某医院负责人每日至少需要下列数量的护士:
班次 | 时间 | 最少护士数 |
---|---|---|
1 | 6:00-10:00 | 60 |
2 | 10:00-14:00 | 70 |
3 | 14:00-18:00 | 60 |
4 | 18:00-22:00 | 50 |
5 | 22:00-2:00 | 20 |
6 | 2:00-6:00 | 30 |
医院领导为满足每班所需要的护士数,最少需要雇佣多少护士?
解:设
x i ( i
1 , 2 , . . . , 6 ) x_i(i=1,2,…,6)
x
i
(
i
=
1
,
2
,
…
,
6
) 为6班次的护士数。
模型建立:
min f
x 1 + x 2 + x 3 + x 4 + x 5 + x 6 s . t { x 1 ⩾ 60 x 1 + x 2 ⩾ 70 x 2 + x 3 ⩾ 60 x 3 + x 4 ⩾ 50 x 4 + x 5 ⩾ 20 x 5 + x 6 ⩾ 30 x i ⩾ 0 ( i
1 , 2 , ⋯ , 6 ) 为整数 \min f=x_1+x_2+x_3+x_4+x_5+x_6\s.t\left{ \begin{array}{c} x_1\geqslant 60\ x_1+x_2\geqslant 70\ x_2+x_3\geqslant 60\ x_3+x_4\geqslant 50\ x_4+x_5\geqslant 20\ x_5+x_6\geqslant 30\ x_i\geqslant 0\left( i=1,2,\cdots ,6 \right) \text{为整数}\\end{array} \right.
min
f
=
x
1
x
2
x
3
x
4
x
5
x
6
s
.
t
⎩
⎨
⎧
x
1
⩾
60
x
1
x
2
⩾
70
x
2
x
3
⩾
60
x
3
x
4
⩾
50
x
4
x
5
⩾
20
x
5
x
6
⩾
30
x
i
⩾
0
(
i
=
1
,
2
,
⋯
,
6
)
为整数
matlab求解:
% 目标函数
f = [1 1 1 1 1 1];
% 整数变量个数
intcon = [1,2,3,4,5,6];
% 不等式约束
a = [1 0 0 0 0 0;1 1 0 0 0 0;0 1 1 0 0 0;0 0 1 1 0 0;0 0 0 1 1 0;0 0 0 0 1 1];
b = [60;70;60;50;20;30];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(6,1);
vub = [];
[x,fval] = intlinprog(f,intcon,-a,-b,aeq,beq,vlb,vub)
最少雇佣150护士。
lingo求解:
model:
min=x1+x2+x3+x4+x5+x6;
x1>=60;
x1+x2>=70;
x2+x3>=60;
x3+x4>=50;
x4+x5>=20;
x5+x6>=30;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);
5. 某工厂生产 A1 、A2 两种型号的产品都必须经过零件装配和检验两道工序 , 如果每天 可用于零件装配的工时只有 100 h , 可用于检验的工时只有 120 h.
各型号产品每件需占用 各工序时数和可获得的利润如下表所示
工序 | A 1 A_1 A 1 | A 2 A_2 A 2 | 可用工时/h |
---|---|---|---|
装配/h | 2 | 3 | 100 |
检验/h | 4 | 2 | 120 |
利润/元 | 6 | 4 |
(1).试写出此问题的数学模型 , 并求出最优化生产方案
解:设生产产品
A 1 为 x 1 A_1为x_1
A
1
为
x
1
件,
A 2 为 x 2 A_2为x_2
A
2
为
x
2
件。
建立模型:
max f
6 x 1 + 4 x 2 s . t { 2 x 1 + 3 x 2 ⩽ 100 4 x 1 + 2 x 2 ⩽ 120 x i ⩾ 0 ( i
1 , 2 ) 为整数 \max f=6x_1+4x_2\s.t\left{ \begin{array}{c} 2x_1+3x_2\leqslant 100\ 4x_1+2x_2\leqslant 120\ x_i\geqslant 0\left( i=1,2 \right) \text{为整数}\\end{array} \right.
max
f
=
6
x
1
4
x
2
s
.
t
⎩
⎨
⎧
2
x
1
3
x
2
⩽
100
4
x
1
2
x
2
⩽
120
x
i
⩾
0
(
i
=
1
,
2
)
为整数
matlab求解:
% 目标函数
f = [6 4];
% 整数变量个数
intcon = [1,2];
% 不等式约束
a = [2 3;4 2];
b = [100;120];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(2,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
生产
A 1
20 , A 2
20 A_1=20,A_2=20
A
1
=
20
,
A
2
=
20 ,最优解为200.
( lingo求解: )
model:
max=6*x1+4*x2;
2*x1+3*x2<=100;
4*x1+2*x2<=120;
@gin(x1);@gin(x2);
(2).对产品 A1 的利润进行灵敏度分析
其中可以得出每增加一个单位的装配小时,利润增长0.5元,每增加一个单位的检验小时,利润增加1.25元。
(3).对装配工序的工时进行灵敏度分析
在最优值不变的条件下,目标系数允许变化范围:
x 1 ( 2.667 , 8 ) , x 2 ( 3 , 9 ) ; x_1(2.667,8),x_2(3,9);
x
1
(
2.667
,
8
)
,
x
2
(
3
,
9
)
; 当影子价格有意义时,约束右边项最多可增加装配时间:80,检验时间:80。
(4).如果工厂试制了 A3 型产品 , 每件 A3 产品需装配工时 4 h , 检验工时 2 h , 可获利 润 5 元 , 那么该产品是否应投入生产 ?
建立模型:
max f
6 x 1 + 4 x 2 + 5 x 3 s . t { 2 x 1 + 3 x 2 + 4 x 3 ⩽ 100 4 x 1 + 2 x 2 + 2 x 3 ⩽ 120 x i ⩾ 0 ( i
1 , 2 , 3 ) 为整数 \max f=6x_1+4x_2+5x_3\s.t\left{ \begin{array}{c} 2x_1+3x_2+4x_3\leqslant 100\ 4x_1+2x_2+2x_3\leqslant 120\ x_i\geqslant 0\left( i=1,2,3 \right) \text{为整数}\\end{array} \right.
max
f
=
6
x
1
4
x
2
5
x
3
s
.
t
⎩
⎨
⎧
2
x
1
3
x
2
4
x
3
⩽
100
4
x
1
2
x
2
2
x
3
⩽
120
x
i
⩾
0
(
i
=
1
,
2
,
3
)
为整数
matlab求解:
% 目标函数
f = [6 4 5];
% 整数变量个数
intcon = [1,2,3];
% 不等式约束
a = [2 3 4;4 2 2];
b = [100;120];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(3,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
利润在增加,可以投入生产。
6. 有两个煤厂A,B,每月进煤分别不少于60吨、100吨,它们担负供应三个居民 区的用煤任务,这三个居民区每月用煤分别为45吨、75吨、40吨。A厂离这三个 居民区分别为10公里、5公里、6公里,B厂离这三个居民区分别为4公里、8公里、 15公里.
问这两煤厂如何分配供煤,才能使总运输量最小?
解:设A,B分别向3个地区供煤
x i j ( i j
1 , 2 , 3 ) x_{ij}(ij=1,2,3)
x
ij
(
ij
=
1
,
2
,
3
) .
模型建立:
min s
10 x 11 + 5 x 12 + 6 x 13 + 4 x 21 + 8 x 22 + 15 x 23 s . t { x 11 + x 12 + x 13 ⩾ 60 x 21 + x 22 + x 23 ⩾ 100 x 11 + x 21 ⩾ 45 x 12 + x 22 ⩾ 75 x 13 + x 23 ⩾ 40 x i j ⩾ 0 ( i j
1 , 2 , 3 ) \min s=10x_{11}+5x_{12}+6x_{13}+4x_{21}+8x_{22}+15x_{23}\s.t\left{ \begin{array}{c} x_{11}+x_{12}+x_{13}\geqslant 60\ x_{21}+x_{22}+x_{23}\geqslant 100\ x_{11}+x_{21}\geqslant 45\ x_{12}+x_{22}\geqslant 75\ x_{13}+x_{23}\geqslant 40\ x_{ij}\geqslant 0\left( ij=1,2,3 \right)\\end{array} \right.
min
s
=
10
x
11
5
x
12
6
x
13
4
x
21
8
x
22
15
x
23
s
.
t
⎩
⎨
⎧
x
11
x
12
x
13
⩾
60
x
21
x
22
x
23
⩾
100
x
11
x
21
⩾
45
x
12
x
22
⩾
75
x
13
x
23
⩾
40
x
ij
⩾
0
(
ij
=
1
,
2
,
3
)
matlab求解:
% 目标函数
f = [10 5 6 4 8 15];
% 整数变量个数
intcon = [1,2,3,4,5,6];
% 不等式约束
a = [1 1 1 0 0 0;0 0 0 1 1 1;1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1];
b = [60 100 45 75 40];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(6,1);
vub = [];
[x,fval] = intlinprog(f,intcon,-a,-b,aeq,beq,vlb,vub)
A厂供煤0 20 40;B厂供煤45 55 0。总运输量为960。
7. 某工厂制造三种产品,生产这三种产品需要三种资源:技术服务,劳动力和行政管理.现有100h的技术服务、600好多劳动力和300好多行政管理.求最优产品品种规划.
下表列出三种单位产品对每种资源的需求量:
产品 | 技术服务 | 劳动力 | 行政管理 | 利润 |
---|---|---|---|---|
一 | 1 | 10 | 2 | 10 |
二 | 1 | 4 | 2 | 6 |
三 | 1 | 5 | 6 | 4 |
解:设生产一、二、三产品数为
x i ( i
1 , 2 , 3 ) x_i(i=1,2,3)
x
i
(
i
=
1
,
2
,
3
)
模型建立:
max f
10 x 1 + 6 x 2 + 4 x 3 s . t { x 1 + x 2 + x 3 ⩽ 100 10 x 1 + 4 x 2 + 5 x 3 ⩽ 600 2 x 1 + 2 x 2 + 6 x 3 ⩽ 300 x i ⩾ 0 ( i
1 , 2 , 3 ) \max f=10x_1+6x_2+4x_3\s.t\left{ \begin{array}{c} x_1+x_2+x_3\leqslant 100\ 10x_1+4x_2+5x_3\leqslant 600\ 2x_1+2x_2+6x_3\leqslant 300\ x_i\geqslant 0\left( i=1,2,3 \right)\\end{array} \right.
max
f
=
10
x
1
6
x
2
4
x
3
s
.
t
⎩
⎨
⎧
x
1
x
2
x
3
⩽
100
10
x
1
4
x
2
5
x
3
⩽
600
2
x
1
2
x
2
6
x
3
⩽
300
x
i
⩾
0
(
i
=
1
,
2
,
3
)
(1).若产品三值得生产,它利润是多少?假设利润增加到25/3,求获利。
matlab求解:
% 目标函数
f = [10 6 4];
% 整数变量个数
intcon = [1,2,3];
% 不等式约束
a = [1 1 1;10 4 5;2 2 6];
b = [100;600;300];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(3,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
三利润增加到25/3:
产品三利润增加25/3不值得。
(2)确定全部资源的影子价格:
lingo求解:
model:
max=10*x1+6*x2+4*x3;
x1+x2+x3<=100;
10*x1+4*x2+5*x3<=600;
2*x1+2*x2+6*x3<=300;
@gin(x1);@gin(x2);@gin(x3);
end
由图可知,影子价格为0.
(3).要生产一种新产品,该产品需要技术服务1h,劳动力4h,行政管理4h,有8元利润。应有怎样对策?
模型改进:
max f
10 x 1 + 6 x 2 + 4 x 3 + 8 x 4 s . t { x 1 + x 2 + x 3 + x 4 ⩽ 100 10 x 1 + 4 x 2 + 5 x 3 + 4 x 4 ⩽ 600 2 x 1 + 2 x 2 + 6 x 3 + 4 x 4 ⩽ 300 x i ⩾ 0 ( i
1 , 2 , 3 , 4 ) \max f=10x_1+6x_2+4x_3+8x_4\s.t\left{ \begin{array}{c} x_1+x_2+x_3+x_4\leqslant 100\ 10x_1+4x_2+5x_3+4x_4\leqslant 600\ 2x_1+2x_2+6x_3+4x_4\leqslant 300\ x_i\geqslant 0\left( i=1,2,3,4 \right)\\end{array} \right.
max
f
=
10
x
1
6
x
2
4
x
3
8
x
4
s
.
t
⎩
⎨
⎧
x
1
x
2
x
3
x
4
⩽
100
10
x
1
4
x
2
5
x
3
4
x
4
⩽
600
2
x
1
2
x
2
6
x
3
4
x
4
⩽
300
x
i
⩾
0
(
i
=
1
,
2
,
3
,
4
)
matlab求解:
% 目标函数
f = [10 6 4 8];
% 整数变量个数
intcon = [1,2,3,4];
% 不等式约束
a = [1 1 1 1;10 4 5 4;2 2 6 4];
b = [100;600;300];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(4,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
生产一产品33,二产品17,三产品0,四产品50,最优利润为832.
(4).假定该工厂至少生产10件产品三,确定最优产品规划.
模型改进:
max f
10 x 1 + 6 x 2 + 4 x 3 s . t { x 1 + x 2 + x 3 ⩽ 100 10 x 1 + 4 x 2 + 5 x 3 ⩽ 600 2 x 1 + 2 x 2 + 6 x 3 ⩽ 300 x 3 ⩾ 10 x i ⩾ 0 ( i
1 , 2 , 3 ) \max f=10x_1+6x_2+4x_3\s.t\left{ \begin{array}{c} x_1+x_2+x_3\leqslant 100\ 10x_1+4x_2+5x_3\leqslant 600\ 2x_1+2x_2+6x_3\leqslant 300\ x_3\geqslant 10\ x_i\geqslant 0\left( i=1,2,3 \right)\\end{array} \right.
max
f
=
10
x
1
6
x
2
4
x
3
s
.
t
⎩
⎨
⎧
x
1
x
2
x
3
⩽
100
10
x
1
4
x
2
5
x
3
⩽
600
2
x
1
2
x
2
6
x
3
⩽
300
x
3
⩾
10
x
i
⩾
0
(
i
=
1
,
2
,
3
)
matlab求解:
% 目标函数
f = [10 6 4];
% 整数变量个数
intcon = [1,2,3];
% 不等式约束
a = [1 1 1;10 4 5;2 2 6;0 0 -1];
b = [100;600;300;-10];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(3,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
生产产品一31,生产产品二59,生产产品三10.最优利润为704
8. 已知某工厂计划生产1,2,3三种产品,各产品需要在ABC设备加工。
有关数据如下:
1 | 2 | 3 | 每月设备有效台时 | |
---|---|---|---|---|
A | 8 | 2 | 10 | 300 |
B | 10 | 5 | 8 | 400 |
C | 2 | 13 | 10 | 420 |
单位产品利润/千元 | 3 | 2 | 2.9 |
(1).如何发挥生产能力,使生产盈利最大?
解:设ABC分别加工123产品数
x i j ( i j
1 , 2 , 3 ) x_ij(ij=1,2,3)
x
i
j
(
ij
=
1
,
2
,
3
)
模型建立:
max f 1
3 x 11 + 2 x 12 + 2.9 x 13 + 3 x 21 + 2 x 22 + 2.9 x 23 + 3 x 31 + 2 x 32 + 2.9 x 33 s . t { 8 x 11 + 2 x 12 + 10 x 13 ⩽ 300 10 x 21 + 5 x 22 + 8 x 23 ⩽ 400 2 x 31 + 13 x 32 + 10 x 33 ⩽ 420 x i j ⩾ 0 ( i j
1 , 2 , 3 ) \max f_1=3x_{11}+2x_{12}+2.9x_{13}+3x_{21}+2x_{22}+2.9x_{23}+3x_{31}+2x_{32}+2.9x_{33}\s.t\left{ \begin{array}{c} 8x_{11}+2x_{12}+10x_{13}\leqslant 300\ 10x_{21}+5x_{22}+8x_{23}\leqslant 400\ 2x_{31}+13x_{32}+10x_{33}\leqslant 420\ x_{ij}\geqslant 0\left( ij=1,2,3 \right)\\end{array} \right.
max
f
1
=
3
x
11
2
x
12
2.9
x
13
3
x
21
2
x
22
2.9
x
23
3
x
31
2
x
32
2.9
x
33
s
.
t
⎩
⎨
⎧
8
x
11
2
x
12
10
x
13
⩽
300
10
x
21
5
x
22
8
x
23
⩽
400
2
x
31
13
x
32
10
x
33
⩽
420
x
ij
⩾
0
(
ij
=
1
,
2
,
3
)
matlab求解:
% 目标函数
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)
A生产产品2数150,B生产产品2数80,C生产产品1数210,利润最大1219
(2).若为增加产量,解工厂设备B60台,租金1.8万,是否合算?
模型改进:
max f 1
3 x 11 + 2 x 12 + 2.9 x 13 + 3 x 21 + 2 x 22 + 2.9 x 23 + 3 x 31 + 2 x 32 + 2.9 x 33 − 18 s . t { 8 x 11 + 2 x 12 + 10 x 13 ⩽ 300 10 x 21 + 5 x 22 + 8 x 23 ⩽ 460 2 x 31 + 13 x 32 + 10 x 33 ⩽ 420 x i j ⩾ 0 ( i j
1 , 2 , 3 ) \max f_1=3x_{11}+2x_{12}+2.9x_{13}+3x_{21}+2x_{22}+2.9x_{23}+3x_{31}+2x_{32}+2.9x_{33}-18\s.t\left{ \begin{array}{c} 8x_{11}+2x_{12}+10x_{13}\leqslant 300\ 10x_{21}+5x_{22}+8x_{23}\leqslant 460\ 2x_{31}+13x_{32}+10x_{33}\leqslant 420\ x_{ij}\geqslant 0\left( ij=1,2,3 \right)\\end{array} \right.
max
f
1
=
3
x
11
2
x
12
2.9
x
13
3
x
21
2
x
22
2.9
x
23
3
x
31
2
x
32
2.9
x
33
−
18
s
.
t
⎩
⎨
⎧
8
x
11
2
x
12
10
x
13
⩽
300
10
x
21
5
x
22
8
x
23
⩽
460
2
x
31
13
x
32
10
x
33
⩽
420
x
ij
⩾
0
(
ij
=
1
,
2
,
3
)
matlab求解:
% 目标函数
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)
fval = fval-18
合算。
(3).假设另有两种新产品4,5。4需要用A12台,B5台,C10台,单位盈利2.1千元;5需要设备A4台,B4台,C12台,单位盈利1.87千元,如果ABC设备台时不增加,问新产品投入是否合算?
模型建立:
max f 1
3 x 11 + 2 x 12 + 2.9 x 13 + 2.1 x 14 + 1.87 x 15 + 3 x 21 + 2 x 22 + 2.9 x 23 + 2.1 x 24 + 1.87 x 25 + 3 x 31 + 2 x 32 + 2.9 x 33 + 2.1 x 34 + 1.87 x 35 s . t { 8 x 11 + 2 x 12 + 10 x 13 + 12 x 14 + 4 x 15 ⩽ 300 10 x 21 + 5 x 22 + 8 x 23 + 5 x 24 + 4 x 25 ⩽ 400 2 x 31 + 13 x 32 + 10 x 33 + 10 x 34 + 12 x 35 ⩽ 420 x i j ⩾ 0 ( i j
1 , 2 , 3 , 4 , 5 ) \max f_1=3x_{11}+2x_{12}+2.9x_{13}+2.1x_{14}+1.87x_{15}+3x_{21}+2x_{22}+2.9x_{23}+2.1x_{24}+1.87x_{25}+3x_{31}+2x_{32}+2.9x_{33}+2.1x_{34}+1.87x_{35}\s.t\left{ \begin{array}{c} 8x_{11}+2x_{12}+10x_{13}+12x_{14}+4x_{15}\leqslant 300\ 10x_{21}+5x_{22}+8x_{23}+5x_{24}+4x_{25}\leqslant 400\ 2x_{31}+13x_{32}+10x_{33}+10x_{34}+12x_{35}\leqslant 420\ x_{ij}\geqslant 0\left( ij=1,2,3,4,5 \right)\\end{array} \right.
max
f
1
=
3
x
11
2
x
12
2.9
x
13
2.1
x
14
1.87
x
15
3
x
21
2
x
22
2.9
x
23
2.1
x
24
1.87
x
25
3
x
31
2
x
32
2.9
x
33
2.1
x
34
1.87
x
35
s
.
t
⎩
⎨
⎧
8
x
11
2
x
12
10
x
13
12
x
14
4
x
15
⩽
300
10
x
21
5
x
22
8
x
23
5
x
24
4
x
25
⩽
400
2
x
31
13
x
32
10
x
33
10
x
34
12
x
35
⩽
420
x
ij
⩾
0
(
ij
=
1
,
2
,
3
,
4
,
5
)
matlab求解:
% 目标函数
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)
不合算。
(4).对产品重新设计,改进A9台,B12台,c台,单位盈利4.5千元,对原计划有何影响?
模型建立:
max f 1
4.5 x 11 + 2 x 12 + 2.9 x 13 + 4.5 x 21 + 2 x 22 + 2.9 x 23 + 4.5 x 31 + 2 x 32 + 2.9 x 33 s . t { 9 x 11 + 2 x 12 + 10 x 13 ⩽ 300 12 x 21 + 5 x 22 + 8 x 23 ⩽ 400 4 x 31 + 13 x 32 + 10 x 33 ⩽ 420 x i j ⩾ 0 ( i j
1 , 2 , 3 ) \max f_1=4.5x_{11}+2x_{12}+2.9x_{13}+4.5x_{21}+2x_{22}+2.9x_{23}+4.5x_{31}+2x_{32}+2.9x_{33}\s.t\left{ \begin{array}{c} 9x_{11}+2x_{12}+10x_{13}\leqslant 300\ 12x_{21}+5x_{22}+8x_{23}\leqslant 400\ 4x_{31}+13x_{32}+10x_{33}\leqslant 420\ x_{ij}\geqslant 0\left( ij=1,2,3 \right)\\end{array} \right.
max
f
1
=
4.5
x
11
2
x
12
2.9
x
13
4.5
x
21
2
x
22
2.9
x
23
4.5
x
31
2
x
32
2.9
x
33
s
.
t
⎩
⎨
⎧
9
x
11
2
x
12
10
x
13
⩽
300
12
x
21
5
x
22
8
x
23
⩽
400
4
x
31
13
x
32
10
x
33
⩽
420
x
ij
⩾
0
(
ij
=
1
,
2
,
3
)
matlab求解:
% 目标函数
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)