НачатьНачать бесплатно

Комбинирование ограничений

Вы разрабатываете план распределения для сети складов. В сети два склада (W1 и W2), каждый из которых может отгружать три вида продуктов (A, B и C). Склад W1 небольшой: он может отгружать либо 10 единиц продукта A в неделю, либо 15 единиц продукта B в неделю, либо 20 единиц продукта C в неделю. Ваша цель — минимизировать общие затраты.

В консоли выведен DataFrame библиотеки Pandas с именем demand, который содержит ежемесячный спрос на каждый продукт. Кроме того, в коде уже представлена модель PuLP с инициализацией, определением переменных решения, целевой функцией и ограничением, обеспечивающим равенство общего объёма отгрузки каждого продукта его спросу.

Это упражнение является частью курса

Аналитика цепочек поставок на Python

Посмотреть курс

Инструкции к упражнению

  • Дополните код ограничением, которое моделирует ограничения на отгрузку склада W1 в течение 4 недель.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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