gpt4 book ai didi

optimization - 如何最大化大于 32 位的 var int?

转载 作者:行者123 更新时间:2023-12-03 17:11:29 24 4
gpt4 key购买 nike

我正在使用带有内置 Gecode 6.1.1 的 minizinc,我想最大化一个目标函数,其值远大于 max int 32。32 位整数的最大值是 2147483646。虽然似乎没有太多与 the reference of minizinc 中的整数最大值相关的信息可用.但是下面的测试表明 Minizinc 使用 32 位整数。

测试非常简单,它只是试图最大化一个 var int。

var int: maxInt;
constraint maxInt>0;

solve maximize maxInt;

output ["maxInt = \(maxInt)"];

结果是

maxInt = 2147483646

结果接近最大 int32 值,而且 miniZinc 似乎无法进一步“最大化”它。以下示例返回一个奇怪的错误。

var int: maxInt;
constraint maxInt>2147483646;

solve maximize maxInt;

output ["maxInt = \(maxInt)"];

错误信息如下。错误消息的信息量不是很大,但在尝试使用大于 2147483646 的数字时会显示。

Error: invalid integer literal in line no. 2 Error: syntax error, unexpected ',' in line no. 2 Process finished with non-zero exit code 1

我的问题如下:我可以在 minizinc 中使用 int64 位整数或任何其他大整数表示吗?如果可以,如何使用? (不能使用 float )理想情况下,我想举一些例子来说明如何使用

最大化某些东西
constraint maxLargeInt>2147483647;

最佳答案

这里的限制并不是真正的 MiniZinc,而是求解器。正如文档所述(来自您引用的关于整数的链接,我的重点):

Overview. Integers represent integral numbers. Integer representations are implementation-defined. This means that the representable range of integers is implementation-defined. However, an implementation should abort at run-time if an integer operation overflows.

以下是运行测试模型时某些求解器的 maxInt 解的一些示例(使用约束 maxInt > 0):

  1. 地理编码:2147483646
  2. PicatSAT:72057594037927935 (2^54)
  3. 开心:500000000

关于optimization - 如何最大化大于 32 位的 var int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57389291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com