Eclipse CLP:约束/变量的最大数量

时间:2019-05-04 17:16:05

标签: prolog constraints eclipse-clp clp

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

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

如果我尝试注释掉一些约束,则至少会对该脚本进行编译。

有人已经对此问题感到困扰吗?

1 个答案:

答案 0 :(得分:0)

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

但是,您正在处理生成的大型源文件,其中子句具有数千个子目标。由于ECLiPSe使用递归下降解析器,因此此类文件可能导致OS堆栈溢出,尤其是在Windows上。您可以increase the Windows stack limit,也可以将生成的代码分解为较小的子句,然后将它们结合起来调用。

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

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