【发布时间】:2018-10-21 07:51:22
【问题描述】:
这是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。
非常感谢!
【问题讨论】:
-
这是 float64 的上限(所以即使这种数据类型对你来说也失败了;并且在核心中默默地使用)。由于可能不支持任意算术,您可能会尝试在该总和上添加上限,来自其他模型假设。当然,这有点假设,您期望在这个有效范围内有一个解决方案。
标签: python optimization constraint-programming ilog cp-optimizer