주스 예제로 보는 그림자 가격
한 기업이 두 대의 기계 $M_1$과 $M_2$를 사용해 자몽 주스(\(g\))와 오렌지 주스(\(o\))를 병에 담고 있습니다. 목표는 다음 제약하에서 이익을 최대화하는 것입니다.
M1: \(6g + 5.5o \leq 40\) 그리고 M2: \(3g + 2.5o \leq 20\)
이 제약은 기계의 생산성과 가용 시간을 반영합니다. 예를 들어, M1은 주당 40시간 사용할 수 있고 자몽 주스 1톤을 병입하는 데 6시간, 오렌지 주스 1톤에는 5.5시간이 필요합니다.
추가로 공급 제약이 있어, 이 회사는 주당 자몽 최대 6톤, 오렌지 최대 12톤만을 공급받습니다. 이는 상한으로 적용됩니다.
pulp는 이미 임포트되어 있고, model과 자몽과 오렌지 주스를 나타내는 변수 g, o도 정의되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 Optimization 입문
연습 안내
- for 루프를 완성해 그림자 가격이 양수인지 확인하는 조건을 넣으세요.
- 제약을 완화했을 때 목적함수의 한계 증가분을 나타내는 변수를 입력하세요.
- 제약의 여유(얼마나 빡빡한지)를 나타내는 변수를 입력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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.")