Minizinc: Возвращает текст, когда условия неудовлетворительны

Я пишу код, который должен решить пасьянс в MiniZinc. Меня попросили вернуть сообщение «Этот пасьянс не может быть решен», если условия неудовлетворительны.

К сожалению, я не смог найти решение этой проблемы в Интернете. У кого-нибудь есть идеи о том, как я могу это сделать?


person Kuba    schedule 30.10.2016    source источник


Ответы (1)


Я не знаю надежной версии, чтобы сделать это, на самом деле это немного сложно. Но вот некоторые мысли.

Стандартный ответ, когда модель не удовлетворена: "=====НЕУДОВЛЕТВОРИТЕЛЬНО=====". Вы можете написать программу-оболочку, чтобы заменить эту строку на «Этот пасьянс не может быть решен». Это, наверное, то, что я сделал бы сам.

Эту строку можно изменить с помощью программы «solns2out» (программа в цепочке инструментов MiniZinc, которая делает красивую печать решения), у которой есть параметр «--unsat-msg», где вы можете указать свое собственное сообщение.

Насколько я знаю, параметр solns2out недоступен через MiniZincIDE, поэтому вам нужно свернуть свою собственную цепочку инструментов, поэтому вам нужно написать полную цепочку программ для ее использования, например

 flatzinc model.mzn -some_parameters | solver model.fzn -with_some_parameters | solns2out model.ozn --unsat-msg "This solitaire cannot be solved"

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

(Иногда проще использовать программу «minizinc» вместо программы «flatzinc». Запустите программы с опцией -help, чтобы увидеть различные параметры.)

person hakank    schedule 30.10.2016