Oefening met logische restrictie
Je klant heeft zes producten besteld die de komende maand geleverd moeten worden. Je zult meerdere vrachtwagenladingen moeten verzenden om alle producten te leveren. Er is een gewichtslimiet van 25.000 lbs per vrachtwagen. Om kasstromen te optimaliseren wil je de meest winstgevende combinatie van producten verzenden die op je vrachtwagen past.
| Product | Weight (lbs) | Profitability ($US) |
|---|---|---|
| A | 12,583 | 102,564 |
| B | 9,204 | 130,043 |
| C | 12,611 | 127,648 |
| D | 12,131 | 155,058 |
| E | 12,889 | 238,846 |
| F | 11,529 | 197,030 |
Twee Python-dictionaries weight en prof, en een lijst prod zijn voor je aangemaakt met daarin het gewicht, de winstgevendheid en de naam van elk product. Je kunt ze verkennen in de console.
Deze oefening maakt deel uit van de cursus
Supply Chain Analytics in Python
Oefeninstructies
- Voeg een restrictie toe zodat het totaalgewicht van de vrachtwagen kleiner dan of gelijk aan 25.000 lbs is.
- Voeg een restrictie toe zodat het model maximaal slechts één van de producten D, E en F selecteert.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Initialized model, defined decision variables and objective
model = LpProblem("Loading Truck Problem", LpMaximize)
x = LpVariable.dicts('ship_', prod, cat='Binary')
model += lpSum([prof[i] * x[i] for i in prod])
# Define Constraint
model += lpSum([weight[i] * x[i] for i in prod]) ____ ____
model += ____
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))