Supply Chain Analytics in Python
Aaren Stubberfield
Supply Chain Analytics Mgr.

Algemeen concept:
Waarom:
Context - Glasbedrijf - Resourceplanning:
| Resource | Prod. A | Prod. B | Prod. C |
|---|---|---|---|
| Winst $US | $500 | $450 | $600 |
Restricties:
Risico's:
# Klasse initialiseren en variabelen definiëren
model = LpProblem("Max Glass Co. Profits", LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
# Doelfunctie definiëren
model += 500 * A + 450 * B + 600 * C
# Restricties definiëren en oplossen
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)
# Doelfunctie definiëren
model += (500+a)*A + (450+b)*B + (600+c)*C
# Klasse initialiseren en variabelen definiëren
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)
# Doelfunctie definiëren
model += (500+a)*A + (450+b)*B + (600+c)*C
# Restricties definiëren en oplossen
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():
# Klasse initialiseren
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)
# Doelfunctie definiëren
model += (500+a)*A + (450+b)*B + (600+c)*C
# Restricties definiëren en oplossen
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():
# Klasse initialiseren
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)
# Doelfunctie definiëren
model += (500+a)*A + (450+b)*B +
(600+c)*C
# Restricties definiëren en oplossen
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())
Output: (resultaten kunnen verschillen)
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
Product A:

Product B:

Product C:

Objectiefwaarden:

Voordelen
Stappen
normalvariateSupply Chain Analytics in Python