Существует ли предикат MiniZinc для моделирования зависящих от времени границ ресурсов (например, кумулятивных)? - PullRequest
1 голос
/ 24 июня 2019

Я хочу найти оптимальный код для моделирования определенных событий с продолжительностью, которые потребляют определенные ресурсы (например, кумулятивные), но эти ресурсы могут изменяться со временем (массив количества ресурсов на временной интервал).

Япопытка смоделировать типичную проблему планирования с некоторыми событиями, происходящими в определенное время, которые потребляют количество ограниченных ресурсов, которое не может быть превышено.Ресурсы могут меняться со временем, поэтому предикаты, такие как совокупные, не подходят.Я пытался проверить, что ресурсы не превышаются для каждого временного интервала, но он невероятно медленный по сравнению со встроенным кумулятивным предикатом, и мне было интересно, есть ли что-то вроде:

%ensures that resources are never exceed the time-dependant bound b.
predicate desired_cumulative(array[int] of var int: s, array[int] of var int: d, array[int] of var int: r, array[int] of var int: b)

1 Ответ

1 голос
/ 24 июня 2019

Можно моделировать изменяющуюся доступность ресурса, используя максимально возможную доступность ресурса в качестве совокупного предела, и добавляя дополнительные фиксированные задачи, которые удаляют часть этого доступного ресурса.

Например, скажем, что у вас есть ресурс, который начинается в 13 в момент времени 0, и достигает 15 в момент времени 5, а затем снижается до 12 с времени 10 до конца времен (скажем, 100). Чтобы смоделировать это, используйте cumulative с фиксированной емкостью 15 (максимум) и добавьте две задачи, включенные в промежуток времени от 0 до 5 с использованием ресурсов 2 (15-13), и одну задачу в промежуток времени От 10 до 100 с использованием ресурсов 3 (15-12).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...