1

这是这篇文章的后续内容。简而言之,我在 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) 但程序不停地运行。我认为日志使事情变得复杂。
  • 对于那些感兴趣的人,我的源代码和示例数据在这里

非常感谢!

4

1 回答 1

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 类指定域值时,应遵守此上限。

于 2018-10-21T15:22:34.140 回答