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