Python 如何在IBM ILOG CPLEX CP优化器中处理大整数?

Python 如何在IBM ILOG CPLEX CP优化器中处理大整数?,python,optimization,constraint-programming,ilog,cp-optimizer,Python,Optimization,Constraint Programming,Ilog,Cp Optimizer,这是我们的后续行动。简而言之,我正在用Python解决一个约束编程问题。优化目标之一是使整数x_1*x_2*…*的乘积最大化x_n。随着问题的扩大(例如,n大约为300),产品显然会变得非常大,CP Optimizer似乎无法处理这个大整数。对于不同的n值,返回的产品始终为1.79769e+308 整数的大小是无限的,在本机Python中没有最大值,所以我猜CP优化器处理大整数的方式不同。在CP优化器中有没有处理大整数的方法 一些旁注: 我的程序在较小的数据量(小n)下运行良好 我试着最大化l

这是我们的后续行动。简而言之,我正在用Python解决一个约束编程问题。优化目标之一是使整数x_1*x_2*…*的乘积最大化x_n。随着问题的扩大(例如,n大约为300),产品显然会变得非常大,CP Optimizer似乎无法处理这个大整数。对于不同的n值,返回的产品始终为1.79769e+308

整数的大小是无限的,在本机Python中没有最大值,所以我猜CP优化器处理大整数的方式不同。在CP优化器中有没有处理大整数的方法

一些旁注:

  • 我的程序在较小的数据量(小n)下运行良好
  • 我试着最大化log(x_1)+log(x_2)+…+日志(x_n),但程序正在不间断地运行。我认为日志使事情变得复杂
  • 对于那些感兴趣的人,我的源代码和示例数据如下
非常感谢

in

你可以读

在64位平台上,最大的正整数,根据IEEE 754可以表示为64位浮点数,或常数2^53-1。在32位平台上,常量为2^31-1


在为IlcIntVar类指定域值时,应遵守此上限。

这是float64的上限(因此,即使此数据类型对您也会失败;并且会在核心中静默使用)。由于可能不支持任意算术,您可能会尝试根据附加的模型假设为该总和添加上限。当然,这在某种程度上是假设您期望在这个有效范围内找到一个解决方案。