Liniowo ograniczona produkcja ciasteczek
Gratulacje! Twój biznes ciasteczkowy się rozrósł. Masz teraz dwie piekarnie, \(A\) i \(B\), które pomagają ci dostarczać ciasteczka w całym kraju.
Każda piekarnia może wyprodukować 100 ciasteczek dziennie. Koszt wyprodukowania ciasteczka w piekarni \(A\) wynosi \(1{,}5\) razy ilość \(q\), a w piekarni \(B\) – \(1{,}75q\).
Cena zdefiniowana jest wzorem \(150 - q\).
Interesy idą świetnie – masz już 140 zamówień na ciasteczka na dziś. Chcesz zmaksymalizować dzienny zysk. Ile ciasteczek powinna wyprodukować każda piekarnia?
Funkcje minimize, Bounds i LinearConstraint zostały już załadowane, a funkcja przychodu R jest gotowa do użycia.
To ćwiczenie jest częścią kursu
Wprowadzenie do optymalizacji w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj funkcję kosztu
C, używającq[0]dla ilości w piekarni \(A\) iq[1]dla piekarni \(B\). - Zdefiniuj funkcję
profit(zysk). - Zdefiniuj
bounds(ograniczenia brzegowe) iconstraints(ograniczenia) dla swojego problemu optymalizacyjnego. - Przeprowadź optymalizację i zapisz wynik do zmiennej
result.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
def R(q):
return (150 - q[0] - q[1]) * (q[0] + q[1])
# Define the cost function
def C(q):
return ____
# Define the profit function
def profit(q):
return ____
# Define the bounds and constraints
bounds = Bounds(____, ____)
constraints = LinearConstraint([1, 1], ____)
# Perform optimization
result = ____(lambda q: ____,
[50, 50],
bounds=bounds,
constraints=constraints)
print(result.message)
print(f'The optimal number of biscuits to bake in bakery A is: {result.x[0]:.2f}')
print(f'The optimal number of biscuits to bake in bakery B is: {result.x[1]:.2f}')
print(f'The bakery company made: ${-result.fun:.2f}')