Я использую minizinc со встроенным Gecode 6.1.1, и я хочу максимизировать целевую функцию со значениями, которые намного больше, чем max int 32. Максимальное значение целого числа с 32 битами составляет 2147483646. Хотя, похоже, не так много информации быть доступным относительно максимального значения для целых чисел в справке minizinc. Однако следующий тест показывает, что Minizinc использует 32-битные целые числа.
Тест очень простой, он просто пытается максимизировать var int.
var int: maxInt;
constraint maxInt>0;
solve maximize maxInt;
output ["maxInt = \(maxInt)"];
Результат
maxInt = 2147483646
Результат близок к максимальному значению int32, и также кажется, что miniZinc не может его «максимизировать» дальше. В следующем примере возвращается странная ошибка.
var int: maxInt;
constraint maxInt>2147483646;
solve maximize maxInt;
output ["maxInt = \(maxInt)"];
Сообщение об ошибке следующее. Сообщение об ошибке не очень информативно, но отображается при попытке использовать числа больше 2147483646.
Ошибка: недопустимый целочисленный литерал в строке № 2 Ошибка: синтаксическая ошибка, непредвиденная ',' в строке № 2 Процесс завершен с ненулевым кодом выхода 1
Мой вопрос заключается в следующем: могу ли я использовать целые числа int64 бит или любое другое представление больших целых чисел с minizinc, и если да, то как? (Использование числа с плавающей запятой не вариант) В идеале я хотел бы иметь какой-нибудь пример того, как что-то максимизировать с помощью
constraint maxLargeInt>2147483647;