Написав мое первое нетривиальное приложение MiniZinc, я продолжаю работать с ошибкой «не могу определить границы». Как обычно удается устранить эту ошибку?MiniZinc «не может определять границы»
ответ
В общем случае «невозможно определить границы» означает, что решатель не может определить границы (область) переменной принятия решения.
Следует избегать использования «var int» в качестве области переменной принятия решения, поскольку это, вероятно, замедлит процесс решения. Бывают моменты, когда решатель может определить домен, например. в случаях любит
% ...
var int: z = sum(x);
, когда «x» объявили домены. Но, как правило, пытайтесь определить домены.
Я понимаю, что «не может определять границы» означает, что решатель не может определить границы. Но когда это произойдет - возможно, простой пример прольет некоторый свет. Кроме того, я думал, что «var» означает переменную решения и что все они являются точкой CP - для указания ограничений на неизвестные значения - так почему вы предлагаете их избегать? Я использую G12 fd. –
Ну, «var int» - это переменная решения с огромным (максимально возможным) доменом, который заставит решателя попробовать все возможные значения для значений в этом домене. «var 0..10» также является переменной решения, но с гораздо меньшей областью возможных значений. Вы должны попытаться ограничить домен настолько малым, насколько это возможно, поскольку это ускорит работу. Что произойдет, если вы ограничите области переменных решения? Какую версию MiniZinc вы используете? Я знаю, что в некоторых более ранних версиях MiniZinc 2 были некоторые проблемы с этими ошибками, которые были исправлены позже. – hakank
А, я использовал множество массивов типа "array [1 .. n] var int: X;" и не понимал, что это должен быть «массив [1 ..n] из var 1 .. 10: X». Благодарю. Использование 0.9.6. Но действительно ли решатель действительно пытается «все» значения? Я думал, что они умнее этого. –
- 1. MiniZinc 2.0.5: «в понимании массива ... не может определять границы»
- 2. интерфейс не может определять типов
- 3. Как установить решатель minizinc
- 4. Расписание minizinc no overlapping
- 5. Minizinc no output
- 6. Множественный выход под minizinc
- 7. Как панель инструментов Vista может игнорировать или определять настройку заполнения границы?
- 8. Minizinc inested for loop
- 9. Minizinc массив сортировки
- 10. Может ли Javascript определять PNG или JPG?
- 11. Не определять второй метод?
- 12. Может ли require.js автоматически определять baseURL?
- 13. A Toolstrip, который может автоматически определять размер
- 14. Может ли jsoup автоматически определять кодировку xml?
- 15. Может ли Doctrine определять генерируемые столбцы MySQL?
- 16. Фундамент диапазона слайдера не может установить границы
- 17. Xlsxwriter не может установить ширину границы
- 18. Не может анимировать цвет границы с JQuery
- 19. Ограничения Minizinc из другого массива
- 20. Как переменная может иметь значение, а также не определять?
- 21. Создание участков с частичным откликом: не может определять названия функций
- 22. MiniZinc объединить массивы переменных индекса
- 23. Максимальное количество последовательных значений (Minizinc)
- 24. Решение струнные ограничения в MiniZinc
- 25. minizinc: найти элемент в аранжировке
- 26. Ограничения мощности (pow) в minizinc
- 27. Minizinc: возможно ли это ограничение?
- 28. Как оптимизировать это приложение MiniZinc?
- 29. Предоставить начальное решение в MiniZinc
- 30. Minizinc: создать массив Int пар
На это легче ответить, если вы покажете модель (или сегмент, который все еще дает вам эту ошибку). Какой решатель FlatZinc вы используете? – hakank