如何在IBM ILOG CPLEX CP Optimizer中处理大整数?

时间:2018-10-21 07:51:22

标签: python optimization constraint-programming ilog cp-optimizer

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

整数的大小是无限的,并且在本机Python中没有最大值,因此我猜CP Optimizer处理大整数的方式有所不同。 CP Optimizer中有什么方法可以处理大整数?

一些注意事项:

  • 我的程序在较小的数据大小(较小的 n )下工作正常。
  • 我尝试最大化log(x_1)+ log(x_2)+ ... + log(x_n),但程序未停止运行。我认为 log 使事情变得复杂。
  • 对于那些感兴趣的人,我的源代码和示例数据是here

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

您可以阅读

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

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