Python 供应链分析
Aaren Stubberfield
Supply Chain Analytics Mgr.

总体思路:
原因:
背景——玻璃公司资源规划:
| 资源 | 产品 A | 产品 B | 产品 C |
|---|---|---|---|
| 利润 $US | $500 | $450 | $600 |
约束:
风险:
# 初始化类并定义变量
model = LpProblem("Max Glass Co. Profits", LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
# 定义目标函数
model += 500 * A + 450 * B + 600 * C
# 定义约束并求解
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A <= 8
model.solve()
a, b, c = normalvariate(0,25),
normalvariate(0,25),
normalvariate(0,25)
# 定义目标函数
model += (500+a)*A + (450+b)*B + (600+c)*C
# 初始化类并定义变量
model = LpProblem("Max Glass Co. Profits",
LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
a, b, c = normalvariate(0,25),
normalvariate(0,25),
normalvariate(0,25)
# 定义目标函数
model += (500+a)*A + (450+b)*B + (600+c)*C
# 定义约束并求解
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A <= 8
model.solve()
def run_pulp_model():
# 初始化类
model = LpProblem("Max Glass Co. Profits", LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
a, b, c = normalvariate(0,25), normalvariate(0,25), normalvariate(0,25)
# 定义目标函数
model += (500+a)*A + (450+b)*B + (600+c)*C
# 定义约束并求解
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A <= 8
model.solve()
o = {'A':A.varValue, 'B':B.varValue, 'C':C.varValue, 'Obj':value(model.objective)}
return(o)
def run_pulp_model():
# 初始化类
model = LpProblem("Max Glass Co. Profits",
LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
a, b, c = normalvariate(0,25),
normalvariate(0,25),
normalvariate(0,25)
# 定义目标函数
model += (500+a)*A + (450+b)*B +
(600+c)*C
# 定义约束并求解
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A <= 8
model.solve()
o = {'A':A.varValue, 'B':B.varValue,
'C':C.varValue,
'Obj':value(model.objective)}
return(o)
for i in range(100):
output.append(run_pulp_model())
df = pd.DataFrame(output)
print(df['A'].value_counts())
print(df['B'].value_counts())
print(df['C'].value_counts())
输出:(结果可能不同)
6.666667 73
0.000000 14
8.000000 13
Name: A, dtype: int64
4.000000 73
5.454546 14
2.400000 13
Name: B, dtype: int64
0.000000 86
4.090909 14
Name: C, dtype: int64
产品 A:

产品 B:

产品 C:

目标值:

优点
步骤
normalvariate 为关键输入添加噪声Python 供应链分析