При первом использовании целлюлозы я пытаюсь установить условное ограничение для производственной проблемы, над которой я работаю. К сожалению, я не могу найти в документации никаких примеров того, как это сделать.
Задача состоит в том, чтобы максимизировать доход путем информирования ежемесячной производственной мощности завода о том, какой продукт производить, на основе прогнозной цены за продукт за вычетом затрат (естественно, здесь пропущено множество других ограничений, иначе это было бы гораздо проще) ,
Для приведенных ниже данных мне необходимо установить следующие ограничения:
- Завод может производить только один продукт в месяц, несмотря на то, что он способен производить несколько продуктов.
, который ограничивает производство одним продуктом в месяц. Я довольно новичок в целлюлозе, но, несмотря на траление документации и ТАК, я не могу найти пример реализации.
Производственные данные:
Мой код пока
# omitted data etl logic - it is formatted as per the above images
# Get production info
plants = LpVariable.dicts('plants',
((month, plant, product) for month, plant, product in wp_df.index if month >= 4),
lowBound = 0,
cat='Integer')
# Get forecast price info by product
forecast_prices = LpVariable.dicts('price_by_prod',
((month, contract) for month, contract in fcst_diffs.index if month >= 4),
lowBound = 0,
cat='Integer')
# Prod costs for each month, plant.
costs = LpVariable.dicts(
'prod costs',
((month, plant) for month, plant in prod_costs_df.index),
lowBound=0,
cat='Integer')
# Define problem
model = LpProblem('Revenue Maximising Production Optimisation',
LpMaximize)
# Define objective function
model += lpSum(
[plants[m,w,g] * wp_df.loc[(m,w,g), 'production_output'] for m, w, g in wp_df.index]
+ [costs[m, w] * costs_df.loc[(m,w), 'prod_costs_usd'] for m, w in prod_costs_df.index]
)
Пока я опускаю ограничения, так как у меня довольно много настроек.
Спасибо за помощь, спасибо.