Генерация уникальных решений с помощью Constraint Programming

У меня было краткое знакомство с CP и MiniZinc, но я не эксперт.

У меня есть модель CP, которую я не могу разместить здесь в банкомате, реализованная в MiniZinc. Мне нужно найти все возможные решения проблемы. Мы ожидаем, что будет всего несколько человек, скажем, менее 1000, более 100.

Я попытался решить модель с флагом -a, переданным в minizinc ver. 1.6, но я замечаю, что многие решения печатаются одинаково.

Здесь они относятся к "проекции". В другой статье я читал, что они использовали какой-то "механизм возврата".

Это все еще не ясно для меня.

Мои вопросы тогда:

  1. Каков наилучший способ генерировать только уникальные решения из модели CP?
  2. Существует ли стандартный механизм, реализованный в библиотеках CP, таких как SCIP или Gecode? У него есть общее имя?
  3. Это вычислительно эффективно?
  4. Миницинк поддерживает это? Как мне получить доступ к этой функции?

1 ответ

Решение

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

В вопросе, который вы связали ( это недавнее обсуждение), упоминается, что решатель FlatZinc от Gecode (по крайней мере, версия SVN) теперь генерирует различные решения с учетом подмножества переменных решения в разделе вывода. Другие решатели FlatZinc, похоже, не имеют этой функции.

Если это не отвечает на ваши вопросы, пожалуйста, дайте более подробную информацию о модели и примере вывода (включая раздел вывода).

Другие вопросы по тегам