问题标签 [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.

0 投票
1 回答
120 浏览

constraint-programming - 以可读的形式列出 Eclipse CLP 中的所有约束

我有一个 ECLiPSe 脚本,其目标是将我的问题编码为一组算术约束。在 REPL 中,我最终得到一个延迟目标列表,如下所示:

是否有一个谓词可以在约束存储中为我提供类似的可读约束列表?

delayed_goals给出了一些特定于库的约束(比如prop_ic_con(ic_con(... <some special characters> etc ))上面列表中的干净输出。我需要将它从 shell 脚本输出到文件,而不是从默认隐藏延迟目标的交互式循环中输出。

0 投票
1 回答
70 浏览

constraint-programming - ECLiPSe CLP 产生具有意外范围的变量

我对以下代码有疑问:

上面的代码(谓词 buggy_pred_test)不应该打印两个相同的数字吗?在这种情况下,它会产生两个不同的数字(分别为 Lo 和 Hi):

我无法弄清楚这种行为的原因是什么。我正在为 Linux 使用 ECLiPSE 6.1 #194、x86_64。非常感谢您的帮助。

0 投票
3 回答
155 浏览

list - 如何向 Prolog 指定列表的所有元素必须为 1 或 0?

如何确保序言列表的所有元素都是 0 或 1?

我需要生成一个给定长度的列表,并确保其中只有这两个数字:
例如 [0,0,0,0,0,0], [1,0,0,1,0,1,1 ] ETC

我想需要使用像ICFD这样的库,但我不太清楚如何使用每个方法中的方法来处理这个问题。

0 投票
1 回答
274 浏览

prolog - 打印最小化步骤序言

我正在使用 ECLiPSe 6.1 开发一个序言程序(CLPFD)。该程序有很多变量,我想最小化某个值,但(显然)最小化步骤需要很多时间。如何打印在最小化阶段找到的每个解决方案?输出仅打印(例如)Found a solution with cost 22003482而不是解决方案本身。我想拥有:

在最小化过程的每一步。

我试过这种方法:

whereAllNodesList是列表列表,是到期时TimeOutGoal运行的目标。TimeLimit此解决方案不会打印找到的最后一个解决方案,而是打印带有标签的第一个非优化解决方案。

有什么建议么?谢谢。

0 投票
1 回答
123 浏览

prolog - 处理巨大的数值序言

我正在使用 prolog,我需要处理巨大的数值(我知道,prolog 最初并不是为处理数字而设计的)。我正在使用 ECLiPSe 6.1 和一些内置谓词的文档,如下所述fd_global:ordered_sum\2

任何没有有限边界的输入变量将被赋予默认边界 -10000000 到 10000000

我如何处理大于 10000000 的值?(通常,不一定使用 ECLiPSe)。

0 投票
2 回答
87 浏览

logging - 为什么大数字在 ECLiPSe Prolog 中显示不完整?

我使用适用于 Windows 的最新版本的 ECLiPSe Prolog 64 位,然后编译代码:

输入的查询:

第一个问题:为什么在 TkEclipse 中只显示 1999 个数字而没有 456574 个完整数字?

第二个问题:是否可以将与用户的交互记录在文件 ECLiPSe Prolog 上作为 SWI-Prolog 的协议(+文件)?

我很抱歉做了两个问题。如果您能提供任何帮助,我将不胜感激。

0 投票
1 回答
68 浏览

prolog - 从 ECLiPSe 中的整数列表构造地面数据数组

我正在尝试使用make_graph_symbolic/3graph_algorithms 库中的 ,它要求节点是地面数据数组。

当我从矩阵构造这个图时,节​​点名是 XY,其中 X 是特定元素的行,Y 是列。我编写的另一个谓词nodeNames/2生成所有名称的列表(它们是整数值)。

但是,当我尝试将此列表提供给 make_graph_symbolic 谓词时,它会为其使用的谓词之一引发以下错误:

当我尝试通过提供 [](11, 12, 21, 22) 手动执行此操作时,它工作正常。这表明我的数组是错误的,但我真的不明白为什么,因为整数值是接地的。

现在是实际问题:是否可以将整数列表转换为包含相同整数的地面数据数组?

我在 prolog 和 ECLiPSe 方面没有那么丰富的经验,所以我不确定这是否可能。这几天我一直在寻找解决方案。我最接近的是使用apply([], [list of ints])谓词,但这并没有达到预期的效果(因为它会尝试评估列表)。

编辑:我忘了提:线性化矩阵并使用make_graph/2make_graph_symbolic-predicate 代替并不是一个真正的选择,因为最终,并非矩阵中的每个元素都会在图中使用。

Edit2:示例:假设我想从以下矩阵中提取节点名:

所需的节点名是 11、12、21 和 22(其中第一个数字是行,第二个是列)。我通过将每一行提供给以下谓词来做到这一点:

它基本上只是遍历列表并将每个节点添加到列表中,直到它达到基本情况。对于上图,这将产生以下列表:

然后我尝试将其输入 make_graph_symbolic-predicate 作为其节点列表。

这会导致上面发布的错误。但是,当我像这样对其进行硬编码时:

它工作正常。所以基本上我所追求的是将 [22, 21, 12, 11] 转换为 [](22, 21, 12, 11) 的方法。

0 投票
0 回答
70 浏览

prolog - 制作显示矩阵prolog tkeclipse

我是 prolog 的新手,想从图像中给出的下面的 prolog 代码生成显示矩阵下图是使用 tkEclipse(Eclipse for prolog)从给定的 prolog 代码生成的下面是 prolog 从代码中显示具有前后状态的矩阵 的约束满足问题的代码

到目前为止,我已经生成了如下所示的显示矩阵我用部分列制作显示矩阵。代码很好,问题主要是关于如何使用编译器生成那种显示矩阵

0 投票
1 回答
128 浏览

prolog - 如何在 ECLiPSe CLP 中暂停直到完整列表被实例化?

ECLiPSe CLP 有一个内置谓词 suspend(+Goal, +Prio, +CondList),其中 CondList 通常采用 X -> inst 的形式。但是如何在整个列表实例化之前暂停呢?如果您执行 List -> inst,它将从实例化一个元素的那一刻起成功。旁注:列表没有固定大小。

0 投票
3 回答
127 浏览

prolog - 使用 n 分数问题避免 findall 溢出

我正在尝试打印n=4的n 分数问题的所有解决方案:

当我运行查询时:

我得到以下异常:

我在想是否有办法在程序内部循环并每次打印一个解决方案,或者我不能这样做,因为问题有太多解决方案?