Оптимизация пакетного процесса в pyomo Python. Как установить фиксированное время работы для каждого пакета?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Оптимизация пакетного процесса в pyomo Python. Как установить фиксированное время работы для каждого пакета?

Сообщение Гость »


Я хочу оптимизировать промышленный пакетный процесс с помощью pyomo в Python. Целевая функция – минимизация стоимости системы. В моем упрощенном примере я указываю производственные затраты со случайными значениями. Уникальность пакетного процесса заключается в том, что после включения системы она должна работать в течение четырех или кратных четырех временных шагов (несколько партий подряд). Down_time не обязательно должно быть кратно четырем. (Только в упрощенной задаче время простоя не должно превышать двух или хотя бы 20 временных шагов).

Я пытался определить правило блокировки, которое должно гарантировать время выполнения %4, но оно не работает. Тем не менее время выполнения > 4 появляется. Если я переключу ограничение с >= 4 на == 4 (см. ниже), оптимизация вообще не будет работать.

Обновление:

Все работает нормально, за исключением окна выключения, поскольку оно приводит к остановке производства на 20 временных шагов, как показано на рисунке ниже:

Принудительная остановка производства

Удаление ограничения выключения приводит к следующему рисунку. Видно, что пакетный процесс хорошо оптимизирован, но пауза максимум 2 или 20+ не обеспечена:

Без ограничения отключения

Обновленный код:
импортировать pyomo.environ как pyo импортировать numpy как np импортировать случайный # Определим модель модель = pyo.ConcreteModel() # 1. Определите модель, наборы и параметры. T = 56 # количество временных шагов производственная_цель = 16 model.timesteps = pyo.RangeSet(1, T) # Функция производственных затрат Production_cost = (np.sin(np.linspace(0, 8*np.pi, T)) + 1) * 50 Production_cost = [_ для _ в диапазоне (T)] Production_cost = [random.randint(1,100) для _ в диапазоне (T)] # 2. Определите переменные решения. model.production = pyo.Var(model.timesteps, Within=pyo.Binary) # производственное решение model.running = pyo.Var(model.timesteps, Within=pyo.Binary) # статус завода model.start = pyo.Var(model.timesteps, Within=pyo.Binary) # запуск завода # 3. Определить целевую функцию. защита obj_rule (модель): возвращаемая сумма (production_cost[t-1] * model.production[t] для t в model.timesteps) model.obj = pyo.Objective(rule=obj_rule, sense=pyo.minimize) # 4. Определите ограничения. # Общее ограничение производства защита total_production_rule (модель): return sum(model.production[t] для t в model.timesteps) == Production_goal model.total_production_con = pyo.Constraint(rule=total_production_rule) # Производство возможно только при работающем заводе def Production_on_rule (модель, т): return model.production[t] == ​​model.running[t] model.production_on_con = pyo.Constraint(model.timesteps, rule=production_on_rule) # Работает, если запущен в текущем или предыдущих 3 периодах защита Running_rule (модель, т): return model.running[t] 0) model.running_con = pyo.Constraint(model.timesteps, rule=running_rule) # Запуск, если ни одного запуска не произошло в течение предыдущих 3 периодов Защиту start_rule (модель, т): return model.start[t] 0) model.start_con = pyo.Constraint(model.timesteps, rule=start_rule) # Ограничение окна выключения защита Shutdown_window_rule (модель, т): if t > 3 и t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Положение: фиксированное; не работает при использовании фонового фильтра
    Гость » » в форуме CSS
    0 Ответы
    6 Просмотры
    Последнее сообщение Гость
  • Положение: фиксированное; работает на десктопе, но не на мобильном
    Гость » » в форуме CSS
    0 Ответы
    5 Просмотры
    Последнее сообщение Гость
  • Ошибка компиляции Xcode 11.4 «Отсутствует продукт пакета <имя пакета>»
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • GEKKO/IPOPT - Оптимизация NL становится невозможной из-за изменения показателя степени
    Гость » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Гость
  • Оптимизация задачи коммивояжера для посещения городов [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»