1

在 Eclipse CLP 中,我可以定义多少个约束或变量?

我目前正在重塑我的调度问题 - 我需要alldifferent用许多约束替换单个atmost约束。但由于我引入了这个更改,我的 ecl 脚本无法正常工作。“不工作”是指 Eclipse CLP - eclipse.exe 或 TkEclipse GUI 刚刚关闭。没有任何错误信息,评论或说再见。根本不值一提。

如果我尝试注释掉一些约束,脚本至少会被编译。

有人已经为这个问题烦恼了吗?

4

1 回答 1

1

对数量或变量或约束没有具体限制。

但是您正在使用生成的大型源文件,其中子句有数千个子目标。因为 ECLiPSe 使用递归下降解析器,所以此类文件可能导致操作系统堆栈溢出,尤其是在 Windows 上。您可以增加 Windows 堆栈限制,也可以将生成的代码分解为更小的子句,然后一起调用这些子句。

然而,一般来说,生成文本源代码并不是一个好主意:它必须被创建、编写、读取、解析、编译,然后只执行一次。考虑改为生成一个纯数据文件,其中仅包含数组/数字列表等内容,但不包含变量。然后,您可以有一个通用的 ECLiPSe 程序来读取这些数据并使用它们来创建变量和约束,通常在几个循环中。

举一个非常简单的例子,比较https://eclipseclp.org/examples/transport1.pl.txt(所有数据在平面模型中都是显式的)和 https://eclipseclp.org/examples/transport_arr.pl.txt其中模型是通用的,所有数据都来自最后的 data/3 事实(这将对应于生成的数据文件)。

于 2019-05-06T17:56:16.540 回答