我们必须解决prolog中的liars问题,在几个有约束的环境中(ECLiPSe ic,ECLiPSe fd,SWI-prolog,GNU-prolog,NaxosSolver等)。我已经使用了尾部递归(我认为)和我能想到的那么多切割(这样我认为分辨率树没有达到它可能的大。如果需要,我可以发布我的代码。
当数据编号变为10000-50000时,我在ECLiPSe和SWI-prolog中的fd和ic中收到堆栈溢出,程序将永远运行。所以我想增加ECLiPSe中的堆栈大小,但我看不出如何。 我试着写下我的代码的第一行:
:-set_flag(local_stack_allocated, 512).
,但它说超出了范围。
查看eclipse所说的内容,这可能会有所帮助: * 尽管垃圾收集,但全局/跟踪堆栈溢出! 您可以使用“-g kBytes”(GLOBALSIZE)选项来获得更大的堆栈。 峰值大小为:全局堆栈128832千字节,跟踪堆栈5312千字节
答案 0 :(得分:2)
首先,从错误消息文本中我假设你的意思是ECLiPSe约束逻辑编程系统,而不是Eclipse IDE。
其次,你如何启动ECLiPSe?如何将代码加载到ECLiPSe?
试试这个(你说你在Windows上):
eclipse -g 512000
并按ENTER键。[myprogram].
加载程序(放置ECLiPSe源文件的名称而不是'myprogram')。但是我怀疑你的程序只是永远运行并且占用了所有内存,所以这一切可能最终都无济于事。
EDIT。更新了TkECLiPSe的说明: