问题标签 [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.
prolog - 两个目标函数
如果我们在 Eclipse CLP 中有两个Cost1
比 更重要的目标函数Cost2
,以下是否正确?
prolog - 是否可以延迟分配操作
我有一个小脚本/代码,我想施加一些active
限制。在下面显示的代码中,我P[I,J] #= E
在下一行中有 andResult[I,E] #= J
但这会抛出一个instantiation error
因为E
没有实例化。
对于这些约束,我需要知道值是什么P[I,J]
,所以如果我把它写成这样,E is P[I,J]
我将不会得到一个,instantiation error(incase i suspend next two constraints with suspend, e.g suspend:(P[I,J] #= E)
但它会影响约束的活动性,因为它assignment
不会被延迟,但只有约束会被延迟。有没有其他方法可以施加这种约束?
prolog - 在 eplex 库中是否对模运算有任何明确的支持
我正在使用eplex
和ic
图书馆并试图解决一个问题。我看到and 为eplex
andic
提供了明确的支持addition,multiplication
,subtraction
但不支持modulo
or division
。
更准确地说,我有这个代码:
并且mod
要求它的两个参数是接地的,但Result[I]
没有实例化,而是具有值范围。所以我的问题是如何延迟这种涉及mod
操作的约束。
prolog - 使用约束在 ECLiPSe Prolog 中修剪对称解决方案
这是我目前正在研究的约束满足问题的一个子问题,因此,我省略了应用于变量的额外约束。
假设我们有一个包含 5 个变量的列表,并且说 vars 可以取 1 到 3 之间的值。对称性是这样定义的:假设我们要对所有变量进行 2 个完全赋值。我们还假设对于这些完整分配中的每一个,我们计算具有相同值的变量集。如果我们能找到一种方法,使第一个分配的每个集合在第二个分配中都可以有一个相等/相同的集合,那么这两个分配将是对称的。
这是一个让事情更清楚的小例子:让我们做以下两个作业:
这两个是对称的。让我们也采取以下一个:
这也与 L1 和 L2 对称。
我正在尝试修剪所有对称分配。我如何在约束中表达这一点?
到目前为止,我已经尝试使用约束来找到第一个没有赋值的变量,并且基本上用 #=/2; 锁定它的值。对于每个可能的域值,这都会发生一次。我的代码出现实例化错误,但我不确定我的努力是否真的是解决此问题的有效方法。
eclipse-clp - 是否有很好的资源来查找 ECLiPSe 的常见问题?
作为一个新的 ECLiPSe 用户,我遇到了问题。
我能够查阅.pl
文件,但是当我将扩展名更改为时,.ecl
我收到了一条文件不存在的消息。
我什至能够运行该.pl
文件,但无法访问任何附属谓词。只有最长的一个跑了。(它没有被称为main
。)
我终于加了export
一行,解决了这个问题。
加载['../<current-directory>/file.ecl']
有效,但尝试加载['file.ecl']
或['./file.ecl']
生成无此类文件消息。
是否有新手问题和答案的存储库或用户邮件列表?
谢谢。
prolog - 斑马之谜的年龄比较
我正在尝试通过 CLP 用 ECLiPSe Prolog 解决类似于爱因斯坦谜题的逻辑谜题:
一个乐队有 6 位爵士乐手,没有一位年龄小于 70 岁。每个艺术家都写过不同的歌曲。
使用的乐器是:位置 1 的钢琴(乐队的左侧外侧),位置 2 的长笛(位置 1 的右侧),位置 3 的鼓(位置 2 的右侧),位置 4 的低音提琴(位置 3 的右侧),位置 5 的萨克斯管(位置 4 的右侧)和位置 6(乐队的右侧外侧)的小号。
艺术家的名字是:安迪、科尼利厄斯、弗里茨、马库斯、皮特、沃尔特。
艺术家的姓氏是:Bramkamp、Franke、Karolewicz、Lueg、Schlüter、Weidemann。
艺人年龄分别
为:76、77、78、79、80、82。歌曲名称为:Im Bermudadreieck、Jupps-Eck-Blues、Krösken-Tanz、Legende vom Bergmann、Sally's Dog、Wanne-Eickel -布鲁斯。线索 1:弹钢琴的人至少比使用低音提琴的人大两岁。
线索 2:在Lueg右边的一个位置是Walter。Walter的位置也比Sally's Dog作曲家更靠左一位。
线索3:位置5的人比Pete小一岁,比Im Bermudadreieck的作曲家大一岁。
线索 4:比这位77 岁的艺术家更靠右的一位是Wanne-Eickel-Blues的作曲家。
线索5:比弗里茨更靠右的一个位置是弗兰克。弗兰克比Legende von Bergmann的作曲家至少大 3 岁。这位作曲家比施吕特年长。线索6:比科尼利厄斯
更靠右的一位是80岁的魏德曼。Weidemann也比Karolewicz更靠左一位。他们都不是Krösken-Tanz的作曲家。 线索 7:Jupps-Eck-Blues 的作曲家Schlüter比Markus更靠右一位。Schlüter比Andi更靠左一个位置。
我对 Prolog 完全陌生,感谢http://www.hakank.org/bprolog/和http://www.hakank.org/bprolog/a_round_of_golf.pl我能够完成大部分代码。目前我停留在线索 4上,我不知道如何将 77 岁艺术家的位置 (1..6) 与年龄列表 (76..80:82) 结合起来。
prolog - ECLiPSe CLP - 带有时间窗口的 TSP。我如何计算成本?
我正在研究 TSP 的变体,其中每个节点都有一个时间窗口,但我在计算成本函数时遇到了一些问题。我使用的是后继模型,所以我有一个列表,其中每个变量表示下一个目的地,Xi = j 是从节点 i 到节点 j 的链接。
我的代码如下所示:
其中different_from_index是 Next 变量的索引与其值之间的约束:Next[i] != i,而create_objective是定义目标函数的谓词。首先 create_objective 谓词创建链接成本列表,因此使用简单的 sumlist 谓词很容易获得成本。但我需要为每个节点定义一个时间窗口,我想是这样的:
[H成本| TCost] 是前面提到的成本列表,但已排序和反转(因此我将列表的 n 元素作为第一个链接,将 n-1 作为第二个链接,依此类推)。此外,节点谓词包含在开头加载的 prolog 文件中。不幸的是,这似乎不起作用:它既不返回 false 也不返回错误的解决方案。经过一段时间的计算,我收到此消息:
我理解错误,但我不知道如何解决它。我使用更简单的模型和类似的 time_window 谓词成功地做到了,但在这种情况下似乎不合适。
谁能帮我吗?谢谢指教。
prolog - 如何使用 Prolog 的 foreach/2 循环
我试图让foreach/2
循环在 Prolog 中工作(使用 tkeclipse)。我知道它需要第一个参数中的一个元素和一个列表来搜索该元素作为第二个参数。
我的问题是,尽管尝试重写我的代码并在线寻找解决方案,但我仍然无法使其工作。
在下面的代码中,我尝试编写一个谓词visite/2
,它接受博物馆列表并返回它们所在城市的列表。
非常感谢您的帮助,因为它可以让我为即将到来的考试做好更好的准备。
prolog - 如何在 ECLiPSe 中读取大型 Prolog 文件?
我通过eclipse生成了一个大的路径文件。每行包含一个包含 27 个点的列表的子句。
但是,我无法将文件加载到内存中(即使有 8G 堆):
将此与swipl
:
两者都不令人印象深刻,但我希望 ECLiPSe 能够以合理的内存量完成。
这是预期的行为吗?可以做什么?
我知道解决方案可能是“使用数据库”或 EXDR,但这不应该能够有效地完成吗?