2016-02-12 2 views
1

В Minizinc, можно ли выбрать домен? скажем, у моего домена много решений, запуск --all-solutions изначально возвратит очень похожие решения.Поиск пробного домена

1) есть ли способ опробовать домен? возможно, BFS? цель заключается в анализе последующих решений.

2) Есть ли методы оценки размера поискового домена в CP?

мой домен является Staff Rostering Проблема

С уважением, H

ответ

2
  1. Это не возможно выбрать BFS в MiniZinc но есть search annotations. С помощью аннотаций поиска вы можете выбрать, в каком порядке переменные должны быть разветвлены. Вы также можете выбрать, какое значение будет разветвлено. К сожалению, MiniZinc не поддерживает поиск случайных переменных.

    В вашем случае я бы ветром на dom_w_deg со случайным значением, но любой другой выбор переменной может работать, попробуйте их.

    solve::seq_search([int_search(some_array, dom_w_deg, indomain_random,complete)]) satisfy; 
    

    Обратите внимание, что не все решатели поддерживают использование аннотаций поиска.

    Другие альтернативы - добавить ограничения, которые удаляют аналогичные результаты.

  2. Вы всегда можете вычислить количество перестановок, которое может быть у вас в вашем решении, количество переменных, помноженное на свой домен. Это не будет учитывать никаких ограничений, и реальное пространство поиска может быть намного меньше.

Другой способ визуализации поиска - использовать сущность или другие программы для визуализации поиска.

gist http://www.imada.sdu.dk/~marco/Teaching/AY2010-2011/DM826/gist2.png

Вы можете расширить и убрать части дерева поиска и увидеть, какие переменные были разветвленными на.

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