Я пытаюсь решить гипотетическую линейную задачу с помощью PuLP. Задача направлена на минимизацию эксплуатационных расходов на горизонте 5 лет при максимальном улучшении формы и состояния продукта. Проблема должна генерировать 5 затрат, по одной на каждый год при оптимизации системы в целом и операций каждый год.
total_cost = [(var_cost[year] + fix_cost[year] + cost_new_sensors[year]) for year in range(0,5)]
total_cost
включает в себя обслуживание трех типов датчиков:
# units price_new fixed_cost_per_unit_per_yr variable_costs_pr_yr_pr_unit
sensor_type_a 300 $50 rent + insurance power + maint
sensor_type_b 900 $75 rent + insurance power + maint
sensor_type_c 1500 $90 maint + insurance -
- Проблема должна учитывать, что каждый год датчики находятся в лучшем состоянии, чем годом ранее, а также не может быть более 12% датчиков с состоянием
"Very poor"
. - Система должна иметь возможность заменить тип датчика другим или отказаться от покупки нового датчика, если экспозиция невысока. (Это заявление не имеет отношения к этому сообщению)
Для sensor_type_a
:
- Fixed costs:
- the rent for years 1 to 5 per unit are
[50, 55, 55, 55, 60]
- страхование единицы на годы с 1 по 5 составляет
[ 1.0, 1.2, 1.2, 1.8, 2.0]
- the rent for years 1 to 5 per unit are
- Variable costs:
- power is based on number of items the sensor measured:
10+.05*each_measurement
. Price goes up by 1% per year - обслуживание основано на
$500 for the total number of sensors + each_measurement*2.45
. Цена растет на 2% в год
- power is based on number of items the sensor measured:
- Индекс экспозиции указывает на состояние каждого датчика и основан на следующей таблице:
_
exposure(# of measurements) category
<=100 excellent
250 good
400 poor
>=400 very poor
Для sensor_type_b
:
- Fixed costs:
- the rent for years 1 to 5 per unit are
[60, 65, 65, 70, 75]
- страхование единицы на период с 1 по 5 год составляет
[ 1.1, 1.3, 1.4, 1.7, 2.0]
- the rent for years 1 to 5 per unit are
- Variable costs:
- power is based on number of items the sensor measured:
10+.08*each_measurement
. Price goes up by 1% per year - обслуживание основано на
$500 for the total number of sensors + each_measurement*2.65
. Цена растет на 1,5% в год
- power is based on number of items the sensor measured:
- Индекс экспозиции указывает на состояние каждого датчика и основан на следующей таблице:
_
exposure(# of measurements) category
<=200 excellent
350 good
500 poor
>=500 very poor
Для sensor_type_c
:
- Fixed costs:
- Maintenance for all units for years 1 to 5 are
[5000, 5100, 5200, 5300, 5400]
- страхование единицы на период с 1 по 5 год
[ 1.1, 1.3, 1.4, 1.7, 2.0]
- Maintenance for all units for years 1 to 5 are
- Индекс экспозиции указывает на состояние каждого датчика и основан на следующей таблице:
_
exposure(# of measurements) category
<=300 excellent
450 good
600 poor
>=600 very poor
Моя целевая функция / уравнение сводится к минимуму:
problem = pulp.LpProblem(’Cost Minimization’, pulp.LpMinimize)
Мои ограничения:
У меня проблемы с настройкой функций ограничения. Вот что я концептуально собираюсь сделать (смесь псевдо и питона):
problem += sum([fixed_costs[yr][a] + var_costs[yr][a]
for a in sensor_type_a
for yr in years])
problem += sum([fixed_costs[yr][b] + var_costs[yr][b]
for a in sensor_type_b
for yr in years])
problem += sum([fixed_costs[yr][c] + var_costs[yr][c]
for a in sensor_type_c
for yr in years])
problem += sum(sensor_type_[a].condition('very poor') + \
sensor_type_[b].condition('very poor') + \
sensor_type_[c].condition('very poor')) <= 12%
problem += sum(sensor_type_[a].average_condition(yr) + \
sensor_type_[b].average_condition(yr) + \
sensor_type_[c].average_condition(yr) >=
sensor_type_[a].average_condition(yr-1) + \
sensor_type_[b].average_condition(yr-1) + \
sensor_type_[c].average_condition(yr-1)
Вопрос:
Если я не на правильном пути с моим псевдо + питоном, как я могу правильно настроить свои ограничения для решения проблемы?
Обратите внимание, что у меня есть таблица для каждого элемента, заполненная для каждой переменной с соответствующими категориями и точками данных.
Измените, чтобы отразить комментарии ниже:
Всего необходимо измерить 2700 единиц или местоположений. У меня есть таблица следующего характера:
unit_ID actual_2013 forecasted_2014 forecasted_2015 forecasted_2016 forecasted_2017
1 25 30 40 35 50
2 400 430 460 480 50
n x_1 x_2 x_3 x_4 x_5
Модель не может изменить набор типов датчиков для этого года, однако она должна иметь возможность адекватно моделировать ее для будущих лет. Это означает, что включает стоимость замены и т. Д., Чтобы получить более совершенные датчики и снизить общую стоимость.
Единицы взаимозаменяемы.
decision variables
прозрачное, составление станет намного проще. - person Ram Narasimhan   schedule 13.07.2013