问题标签 [eclipse-clp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
constraint-programming - 以可读的形式列出 Eclipse CLP 中的所有约束
我有一个 ECLiPSe 脚本,其目标是将我的问题编码为一组算术约束。在 REPL 中,我最终得到一个延迟目标列表,如下所示:
是否有一个谓词可以在约束存储中为我提供类似的可读约束列表?
delayed_goals
给出了一些特定于库的约束(比如prop_ic_con(ic_con(... <some special characters> etc ))
上面列表中的干净输出。我需要将它从 shell 脚本输出到文件,而不是从默认隐藏延迟目标的交互式循环中输出。
constraint-programming - ECLiPSe CLP 产生具有意外范围的变量
我对以下代码有疑问:
上面的代码(谓词 buggy_pred_test)不应该打印两个相同的数字吗?在这种情况下,它会产生两个不同的数字(分别为 Lo 和 Hi):
我无法弄清楚这种行为的原因是什么。我正在为 Linux 使用 ECLiPSE 6.1 #194、x86_64。非常感谢您的帮助。
prolog - 打印最小化步骤序言
我正在使用 ECLiPSe 6.1 开发一个序言程序(CLPFD)。该程序有很多变量,我想最小化某个值,但(显然)最小化步骤需要很多时间。如何打印在最小化阶段找到的每个解决方案?输出仅打印(例如)Found a solution with cost 22003482
而不是解决方案本身。我想拥有:
在最小化过程的每一步。
我试过这种方法:
whereAllNodesList
是列表列表,是到期时TimeOutGoal
运行的目标。TimeLimit
此解决方案不会打印找到的最后一个解决方案,而是打印带有标签的第一个非优化解决方案。
有什么建议么?谢谢。
prolog - 处理巨大的数值序言
我正在使用 prolog,我需要处理巨大的数值(我知道,prolog 最初并不是为处理数字而设计的)。我正在使用 ECLiPSe 6.1 和一些内置谓词的文档,如下所述fd_global:ordered_sum\2
:
任何没有有限边界的输入变量将被赋予默认边界 -10000000 到 10000000
我如何处理大于 10000000 的值?(通常,不一定使用 ECLiPSe)。
logging - 为什么大数字在 ECLiPSe Prolog 中显示不完整?
我使用适用于 Windows 的最新版本的 ECLiPSe Prolog 64 位,然后编译代码:
输入的查询:
第一个问题:为什么在 TkEclipse 中只显示 1999 个数字而没有 456574 个完整数字?
第二个问题:是否可以将与用户的交互记录在文件 ECLiPSe Prolog 上作为 SWI-Prolog 的协议(+文件)?
我很抱歉做了两个问题。如果您能提供任何帮助,我将不胜感激。
prolog - 从 ECLiPSe 中的整数列表构造地面数据数组
我正在尝试使用make_graph_symbolic/3
graph_algorithms 库中的 ,它要求节点是地面数据数组。
当我从矩阵构造这个图时,节点名是 XY,其中 X 是特定元素的行,Y 是列。我编写的另一个谓词nodeNames/2
生成所有名称的列表(它们是整数值)。
但是,当我尝试将此列表提供给 make_graph_symbolic 谓词时,它会为其使用的谓词之一引发以下错误:
当我尝试通过提供 [](11, 12, 21, 22) 手动执行此操作时,它工作正常。这表明我的数组是错误的,但我真的不明白为什么,因为整数值是接地的。
现在是实际问题:是否可以将整数列表转换为包含相同整数的地面数据数组?
我在 prolog 和 ECLiPSe 方面没有那么丰富的经验,所以我不确定这是否可能。这几天我一直在寻找解决方案。我最接近的是使用apply([], [list of ints])谓词,但这并没有达到预期的效果(因为它会尝试评估列表)。
编辑:我忘了提:线性化矩阵并使用make_graph/2
make_graph_symbolic-predicate 代替并不是一个真正的选择,因为最终,并非矩阵中的每个元素都会在图中使用。
Edit2:示例:假设我想从以下矩阵中提取节点名:
所需的节点名是 11、12、21 和 22(其中第一个数字是行,第二个是列)。我通过将每一行提供给以下谓词来做到这一点:
它基本上只是遍历列表并将每个节点添加到列表中,直到它达到基本情况。对于上图,这将产生以下列表:
然后我尝试将其输入 make_graph_symbolic-predicate 作为其节点列表。
这会导致上面发布的错误。但是,当我像这样对其进行硬编码时:
它工作正常。所以基本上我所追求的是将 [22, 21, 12, 11] 转换为 [](22, 21, 12, 11) 的方法。
prolog - 如何在 ECLiPSe CLP 中暂停直到完整列表被实例化?
ECLiPSe CLP 有一个内置谓词 suspend(+Goal, +Prio, +CondList),其中 CondList 通常采用 X -> inst 的形式。但是如何在整个列表实例化之前暂停呢?如果您执行 List -> inst,它将从实例化一个元素的那一刻起成功。旁注:列表没有固定大小。