数学建模算法与应用习题
某厂生产三种产品Ⅰ,Ⅱ,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,以A1,A2 表示;有三种规格的设备能完成B工序,以B1,B2,B3,表示。产品Ⅰ可在A,B任何一种规格设备上加工。产品Ⅱ可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2与B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售价格、各种设备有效台时以及满负荷操作时机床设备的费用如表1.2所列,试安排最优的生产计划,使该厂利润最大。
设备 |
产品Ⅰ |
产品Ⅱ |
产品Ⅲ |
设备有效台时 |
满负荷时的设备费用/元 |
设备加工费(元/时台) |
A1 |
5 |
10 |
|
6000 |
300 |
0.05 |
A2 |
7 |
9 |
12 |
10000 |
321 |
0.03 |
B1 |
6 |
8 |
|
4000 |
250 |
0.06 |
B2 |
4 |
|
11 |
7000 |
783 |
0.11 |
B3 |
7 |
|
|
4000 |
200 |
0.05 |
原料费/(元/件) |
0.25 |
0.35 |
0.5 |
|
|
|
单价/(元/件) |
1.25 |
2 |
2.8 |
|
|
|
设参数
设备 |
产品Ⅰ |
产品Ⅱ |
产品Ⅲ |
设备有效台时 |
满负荷时的设备费用/元 |
设备加工费(元/时台) |
A1 |
X1 |
X2 |
|
6000 |
300 |
0.05 |
A2 |
X3 |
X4 |
X5 |
10000 |
321 |
0.03 |
B1 |
X6 |
X7 |
|
4000 |
250 |
0.06 |
B2 |
X8 |
|
X9 |
7000 |
783 |
0.11 |
B3 |
X10 |
|
|
4000 |
200 |
0.05 |
原料费/(元/件) |
0.25 |
0.35 |
0.5 |
|
|
|
单价/(元/件) |
1.25 |
2 |
2.8 |
|
|
|
约束
利润公式——利润 = 单价 - 原料 - 设备费用
import numpy as np
from scipy import optimize
c = np.array([[0.75],[1.15],[0.79],[1.38],[1.94],[0.64],[1.17],[0.56],[1.09],[0.65]])
a=np.array([[5,10,0,0,0,0,0,0,0,0],[0,0,7,9,12,0,0,0,0,0],[0,0,0,0,0,6,8,0,0,0],[0,0,0,0,0,0,0,4,11,0],[0,0,0,0,0,0,0,0,0,7]])
b=np.array([[6000],[10000],[4000],[7000],[4000]])
a_eq=np.array([[1,0,1,0,0,-1,0,-1,0,-1],[0,1,0,1,0,0,-1,0,0,0],[0,0,0,0,1,0,0,0,-1,0]])
b_eq=np.array([[0],[0],[0]])
res = optimize.linprog(-c, A_ub=a, b_ub=b,A_eq=a_eq,b_eq=b_eq,bounds=([0,None],[0,None],[0,None],[0,None],[0,None],[0,None],[0,None],[0,None],[0,None],[0,None]))
print(-res.fun)
print(res.x)
4191.133004592522
[1.20000000e+03 4.00367293e-08 2.30049261e+02 5.00000000e+02
3.24137931e+02 6.20083013e-09 5.00000000e+02 8.58620690e+02
3.24137931e+02 5.71428571e+02]