선형 제약이 있는 비스킷 문제
축하합니다! 비스킷 사업이 성장했어요. 이제 전국 배송을 돕기 위해 제과점 $A$와 \(B\) 두 곳을 운영하게 되었네요.
각 제과점은 하루에 비스킷 100개를 만들 수 있고, 제과점 $A$에서 비스킷을 만들 때의 비용은 수량 $q$에 대해 \(1.5q\), 제과점 $B$에서는 $1.75q$예요.
가격은 $150 - q$로 정의돼요.
사업이 호황이라 오늘 이미 비스킷 140개가 사전 주문되었어요. 오늘의 이익을 최대화하고 싶다면, 각 제과점에서 몇 개를 만들어야 할까요?
minimize, Bounds, LinearConstraint는 미리 불러와졌고, 수익 함수 R도 이미 정의되어 있어요.
이 연습은 강의의 일부입니다
Python으로 배우는 Optimization 입문
연습 안내
- 비용 함수
C를 정의하세요. 제과점 $A$의 수량에는q[0], 제과점 $B$에는q[1]을 사용하세요. profit함수를 정의하세요.- 최적화 문제의
bounds와constraints를 정의하세요. - 최적화를 수행하고 결과를
result에 저장하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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}')