사례 연구 연습: 논리 제약 추가하기
자동차 제조사의 Capacitated Plant Location 모형 사례 연구를 이어서 진행하세요. 네 개의 Pandas 데이터프레임 demand, var_cost, fix_cost, cap 가 제공되어 있으며, 각각 지역별 수요(천 대), 단위 생산비용(천 달러), 고정 생산비용(천 달러), 생산 능력(천 대)을 담고 있습니다. 또한 두 개의 Python 리스트 loc, size 도 미리 생성되어 있으며, 다양한 공장 위치와 두 종류의 공장 규모가 들어 있습니다. 이 모든 변수는 확인할 수 있도록 콘솔에 출력되어 있습니다. 모형 초기화, 의사결정변수 정의, 목적함수 및 제약식 생성 코드는 이미 작성되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 공급망 분석
연습 안내
- 미국의 고용량 공장이 개설되면 독일의 저용량 공장도 반드시 개설되도록 논리 제약을 추가하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_",
[(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
+ lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)]
for s in size])
# Define logical constraint
model += ____ - ____ <= ____