제약 결합 연습 문제
창고 네트워크의 유통 계획을 세우고 있습니다. 네트워크에는 두 개의 창고(W1, W2)가 있고, 각 창고는 세 가지 제품(A, B, C)을 배송할 수 있어요. W1은 소형 창고로, 1주에 제품 A 10개 또는 제품 B 15개 또는 제품 C 20개를 배송할 수 있습니다. 목표는 총비용을 최소화하는 것입니다.
콘솔에는 각 제품의 월간 수요가 담긴 Pandas DataFrame demand가 출력되어 있습니다. 또한 PuLP 모델에서 초기화, 의사결정변수 정의, 목적함수 설정, 그리고 각 제품의 총 배송량이 해당 수요와 같아지도록 하는 제약을 포함한 코드가 제공되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 공급망 분석
연습 안내
- 4주 동안의 W1 배송 제한을 모델링하는 제약식 코드를 완성하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh],
lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c] for c in cust for p in prod for w in wh])
for c in cust:
for p in prod:
model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]
# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust])
+ ____ * lpSum([X[(____, ____, c)] for c in cust])
+ ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____