2014-09-23 2 views
0

У меня была короткая экспозиция CP и MiniZinc, но я не эксперт.Создание уникальных решений с программированием Constraint

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

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

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

Мне все еще не ясно.

Мои вопросы, то есть:

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

ответ

4

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

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

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

+0

Indedd. В моей модели я написал MIP-подобное ограничение формы 'a [t]> = b [t] -b [t-1]', чтобы указать, что a [t] измеряет изменения между значениями b от времени t-1 до t. Я заменил его на 'a [t] = max (0, b [t] -b [t-1])' и работает так, как ожидалось. Интересно, но если нет лучшего способа выразить ограничение более эффективным способом. –

Смежные вопросы