Zacznij terazZacznij za darmo

Cena dualna i luz ograniczeń – ćwiczenie cz. 1

Planujesz, jakie babeczki powinna wypiekać pewna cukiernia. Może ona produkować:

  • babeczkę standardową: zysk = 5 USD
  • babeczkę jumbo (dwukrotnie większą od standardowej): zysk = 10 USD

Model uwzględnia 2 ograniczenia: godziny pracy pieca (30) i godziny pracy pracowników (65). Ten scenariusz został już zmodelowany w PuLP i znaleziono optymalne rozwiązanie. W konsoli wyświetlono: status modelu, wartości zmiennych decyzyjnych, wartość funkcji celu (czyli zysk) oraz ceny dualne i luzy ograniczeń.

Przykładowy skrypt zawiera kopię tego kodu. Dostosuj ograniczenia i sprawdź, jak zmienia się optymalne rozwiązanie.

To ćwiczenie jest częścią kursu

Analityka łańcucha dostaw w Pythonie

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Define Constraints, Solve, Print Status, Variables, Objective
model = LpProblem("Maximize Bakery Profits", LpMaximize)
R = LpVariable('Regular_production', lowBound=0, cat='Continuous')
J = LpVariable('Jumbo_production', lowBound=0, cat='Continuous')
model += 5 * R + 10 * J, "Profit"

# Adjust the constraint
model += 0.5 * R + 1 * J <= ____
model += 1 * R + 2.5 * J <= 65

# Solve Model, Print Status, Variables, Objective, Shadow and Slack
model.solve()
print("Model Status: {}".format(LpStatus[model.status]))
for v in model.variables():
    print(v.name, "=", v.varValue)
print("Objective = $", value(model.objective))
o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Edytuj i uruchom kod