Я столкнулся с проблемой планирования задач и распределения ресурсов, при которой ресурсы могут запускать новую задачу со сложным условием.
- Ресурс может запустить новую задачу в четную единицу времени, если прошло не менее 2n единиц времени с момента запуска предыдущей задачи, начатой в четную единицу времени.
- То же самое относится к нечетным единицам времени.
Ниже приведено правильное планирование для одного ресурса. Каждое число означает, что в это время было запущено новое задание.
- 0, 1, 2n, 2n + 1, 4n, 4n + 1, ...
У меня много задач с отношениями предшествования (я знаю, как справиться с отношениями предшествования) и несколькими ресурсами такого рода. Я выполнил планирование следующим образом, который не дает оптимального результата:
- Хотя задача может начинаться с нечетной или четной единицы времени, я ограничил половину задач для запуска с четной единицы времени, а другую половину - с нечетной единицей времени, используя «hibidStart »и« stepFunction ».
- Для ресурса s я рассмотрел два "cumulFunction" s_even и s_odd.
- Задачам, запуск которых запрещен в четные (нечетные) единицы времени, необходим ресурс s_odd (s_even). Я определил это ограничение, используя «cumulFunction» и «pulse».
Несмотря на то, что приведенная выше процедура производит правильное планирование, этого недостаточно, поскольку я ищу оптимальное решение. Кто-нибудь знает, как решить эту проблему в CPLEX?