ПочатиПочніть безкоштовно

Додавання логічного обмеження у вправі кейс-стаді

Продовжте кейс-стаді для моделі розміщення підприємств із обмеженою потужністю (Capacitated Plant Location) для автовиробника. Вам надано чотири датафрейми Pandas — demand, var_cost, fix_cost і cap, що містять регіональний попит (тис. авто), змінні виробничі витрати (тис. $US), фіксовані виробничі витрати (тис. $US) та виробничі потужності (тис. авто). Також створено два списки Python — loc і size, які містять доступні локації та два типи потужностей заводів. Усі ці змінні виведено в консоль для перегляду. Код для ініціалізації, визначення змінних рішення, створення цільової функції та обмежень уже підготовлено для вас.

Ця вправа є частиною курсу

Аналітика ланцюга постачань у Python

Переглянути курс

Інструкції до вправи

  • Додайте логічне обмеження: якщо в USA відкрито завод великої потужності, то в Germany також має бути відкрито завод малої потужності.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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 += ____ - ____ <= ____
Редагувати та запускати код