Stínové ceny s džusy
Firma využívá dva stroje \(M_1\) a \(M_2\) k plnění grapefruitového džusu (\(g\)) a pomerančového džusu (\(o\)) do lahví. Cílem je maximalizovat zisk při splnění následujících omezení:
M1: \(6g + 5.5o \leq 40\) a M2: \(3g + 2.5o \leq 20\)
Omezení odrážejí produktivitu a dostupnost strojů. Například stroj M1 je k dispozici 40 hodin týdně a potřebuje 6 hodin na stočení 1 tuny grapefruitového džusu a 5,5 hodiny na tunu pomerančového džusu.
Existuje také omezení dodávek – firma dostává maximálně 6 tun grapefruitů a 12 tun pomerančů týdně. To jsou horní meze.
pulp je již naimportován a model je definován spolu s proměnnými g a o pro grapefruitový a pomerančový džus.
Toto cvičení je součástí kurzu
Introduction to Optimization in Python
Pokyny k cvičení
- Doplň cyklus for tak, aby obsahoval podmínku ověřující, zda je stínová cena kladná.
- Zadej proměnnou, která měří mezní nárůst účelové funkce při uvolnění omezení.
- Zadej proměnnou, která měří, jak těsné je dané omezení.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
print(LpStatus[model.status])
print(f'The optimal amount of {g.name} embottled is: {g.varValue:.2f} tons')
print(f'The optimal amount of {o.name} embottled is: {o.varValue:.2f} tons')
for name, c in model.constraints.items():
# Check if shadow value is positive
if c.____ > 0:
# Enter the variable that measures marginal increase in objective when constraint is relaxed
print(f"Increasing the capacity of {name} by one unit would increase profit by {c.____} units.")
else:
# Enter the variable that measures how tight the constraint is
print(f"{name} has {c.____} units of unused capacity.")