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

Вправа на поєднання обмежень

Ви працюєте над планом дистрибуції для мережі складів. У мережі є два склади (W1 і W2), і кожен може відвантажувати три типи продуктів (A, B і C). W1 невеликий і може відвантажувати або 10 одиниць продукту A на тиждень, або 15 одиниць продукту B на тиждень, або 20 одиниць продукту C на тиждень. Ви прагнете мінімізувати загальні витрати.

У консолі виведено датафрейм 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])) <= ____
Редагувати та запускати код