Это относится к проблеме планирования проекта с ограниченными ресурсами (RCPSP). Это включает планирование определенных задач во временных окнах на машинах в зависимости от наличия рабочей силы. Это настроено в форме Целочисленной Программы. Я использую унифицированное представление дискретного времени.
Переменными решения являются x_it: x_it = 1, если мероприятие i планируется начать в дискретный момент времени t.
Каждое задание имеет приоритет, связанный с ним по внешним причинам. Чтобы проиллюстрировать цель, рассмотрим 3 задачи - p1, p2, p3 с приоритетами 3,3,4. (два уровня приоритета - 3,4) Требование следующее: если достаточно рабочей силы для планирования только p1 и p2 или p3, следует выбрать p3, даже если p1 + p2> p3. Я ищу способ реализовать эту логику, используя переменные решения x_it.
Я пытался реализовать свое требование следующим образом: назначить новый приоритет (P) для каждой задачи: P1 = 3, P2 = 3, P3 = 7; По сути, это включает в себя масштабирование каждого уровня приоритета таким образом, чтобы ни одна комбинация задач с более низким приоритетом не могла быть выше этого уровня приоритета, и установка целевой функции на «максимизировать P_i * x_it»
Проблема этого подхода заключается в том, что при масштабировании большого набора задач (~ 300 задач) и нескольких уровней приоритета (20 уровней) новые значения приоритетов быстро становятся огромными числами (~ 10 ^ 17).
Существует ли более надежный способ реализации этого требования в рамках парадигмы целочисленного программирования?