Как работать с большими целыми числами в IBM ILOG CPLEX CP Optimizer? - PullRequest
0 голосов
/ 21 октября 2018

Это продолжение от этого поста .Короче говоря, я использую IBM ILOG CPLEX CP Optimizer в Python для решения проблемы программирования с ограничениями.Одна из целей оптимизации - максимизировать произведение целых чисел x_1 * x_2 * ... * x_n.По мере увеличения проблемы (например, n составляет около 300), продукт, очевидно, станет очень большим, и Оптимизатор CP, похоже, не сможет обработать это большое целое число.Для различных значений n возвращаемый продукт всегда был 1.79769e + 308.

Целые числа не ограничены по размеру и не имеют максимального значения в собственном Python, поэтому я предполагаю, что CP Optimizer обрабатывает большие целые числапо-другому.Есть ли способ справиться с большими целыми числами в CP Optimizer?

Некоторые примечания:

  • Моя программа работала нормально с меньшими размерами данных (маленький n ).
  • Я пытался максимизировать log (x_1) + log (x_2) + ... + log (x_n), но программа работала без остановок.Я считаю, что log усложняет ситуацию.
  • Для тех, кто заинтересован, мой исходный код и примеры данных здесь .

Большое спасибо!

1 Ответ

0 голосов
/ 21 октября 2018

in https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.ide.help/refcppopl/html/variables/IlcIntMax.html

Вы можете прочитать

На 64-битных платформах наибольшее положительное целое число, которое может быть представлено как 64-битное число с плавающей запятой согласно IEEE 754, иликонстанта 2 ^ 53-1.На 32-битных платформах константа 2 ^ 31-1.

Этот верхний предел должен соблюдаться при указании значений домена для класса IlcIntVar.

...