问题标签 [sicstus-prolog]

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 回答
309 浏览

prolog - 如何在 SICStus Prolog 中模拟 SWI-Prolog 的 atom_to_term(+Atom, -Term, -Bindings)?

我正在使用 SICStus Prolog 编写 Dali 代理,我需要将原子转换为术语,但我无法使用atom_to_termSWI-Prolog 中内置的

0 投票
2 回答
326 浏览

prolog - 如何将使用 atom_to_term 的代码从 SWI-prolog 转换为 SICStus Prolog

我正在尝试编写一个规则来比较两个原子以查看哪个更好例如(memory_with_gb_2 比 memory_with_gb_1 更好),我在 SWI-prolog 中编写和尝试的内容如下:

这在 SWI-Prolog 中运行良好,但是当我在 SICStus Prolog 中尝试它时,它似乎不起作用,无论如何要在 SICStus 中实现上层代码。

0 投票
1 回答
125 浏览

prolog - Prolog 计数有限制

我不知道如何实现以下目标:

我想计算满足某个条件(其值未知)的次数。

例如,如果我有列表[A1,A2,A3][B1,B2,B3],我如何创建一个列表[R1,R2,R3]Ri如果和1如果不是。Ai=Bi0

这是“程序”的基础。

0 投票
1 回答
116 浏览

prolog - 矩阵列与all_diff使用的区别

我试图表达从列表列表中的一个元素到另一个元素的转换关系。我想做的,就是说两个任意元素之间应该存在一定的差异。

如果我们有清单

其中所有元素都是长度为 Y 的列表。

我现在想表达应该与 Xa->Xb 有所不同,其中 Xa 中的所有元素都等于或小于但一个,并且 Xa 和 Xb 是 X 的任何给定元素(a!= b)

例如:如果 Xa=[1,1,1,1] 那么 Xb 可能是 [1,1,1,2],因为所有元素都相等或减少,除了最后一个,它从 1->2 开始。

我写了以下谓词来做到这一点:

这接缝工作正常。如果我也尝试在行上使用 all_different(),我的问题就会出现。例如:我想一个解决方案可能是:

但标签“永远”挂起

我的方法错了吗?有没有更好的方法来解决这个问题?

测试代码:

我像这样运行它:

0 投票
2 回答
316 浏览

prolog - Prolog,测试标签启发式

我正在做一些实验来比较 Sicstus Prolog 中的不同标签启发式。

但我不断进入“资源错误:内存不足”。

我很确定我在测试代码中做错了什么。

以下代码将复制我的问题:

调用 t1 谓词后不久,我收到“资源错误:内存不足”异常。

我想我应该在调用 atest 释放资源后做点什么?

另外:这是测量标记时间的正确方法吗?有没有更好的方法来做到这一点?

0 投票
3 回答
339 浏览

prolog - 内存泄漏 Sicstus Prolog

这个问题是这个问题的后续

我在 Sicstus prolog 中运行大量测试:

每个测试都是独立的,并将其结果打印到屏幕上。测试之间没有关系,因此每次测试之间不需要存储/保存数据。

我的问题是 Sicstus 积累内存并最终遇到异常:'资源错误:内存不足'

我试图像这样组织我的测试:

但我仍然遇到问题。

有没有其他方法可以告诉 Prolog 在每次调用测试之间释放所有分配的内存?

0 投票
1 回答
145 浏览

sicstus-prolog - x86 平台中的 SICStus Prolog 升级

目前我们在 32 位平台上使用 SICStus 版本:3.12.10 和 patch1 (x86-linux-glibc2.3)。我的要求:根据新要求,我们必须升级 SICStus Prolog 版本 4.2.3 并且 x86 平台从 32 位更改为 64 位。您能否解释一下要修改的代码更改是什么。

编辑:谓词 atom_codes/2、number_codes/2 支持 Sicstus prolog 版本 3 和 4。类似地,在 SICStus Prolog 版本 3.12.10 和 SICStus Prolog 版本 4.2.3 中是否有任何普遍接受的基本谓词。如果你能请你分享有任何参考文件和链接。

编辑:prolog 版本 3 和 4 中是否有任何普遍接受的谓词

0 投票
1 回答
307 浏览

prolog - 序言:如何用 global_cardinality 判断一个列表至少有 N 个等于 M 的元素(M,N 是整数)

例如:我有一些变量:A,B,C,D 和一个条件:在 [A,B,C,D] 列表中必须至少有两倍的数字 2。我只能使用global_cardinality/2组合约束.

0 投票
1 回答
107 浏览

prolog - 累计机器的结束时间

我正在处理我用来cumulatives/3建模的调度问题。

前任:

如果我运行谓词s1/3,我会得到:

此示例显示 m1 在 12 处完成,m2 在 15 处完成,m3 在 15 处完成。

但是,当每台机器完成所有任务时,“最佳”或最佳表达方式是什么?我想为机器的结束时间添加一些额外的限制。是否有任何适合表达这一点的全局约束?

0 投票
2 回答
261 浏览

prolog - 使用累积

我正在解决使用cumulatives/[2,3]谓词的问题。但是当我尝试将它与minimizein结合起来时,我的表现非常糟糕labeling

我有以下演示。10 个任务,所有持续时间为 1,4 台机器,所有容量=1。我的目标是最小化总时间,即minimize(maximum(Es))

如果我现在运行它并解决 1 秒钟,我会得到:

即所有任务都已安排在机器 1 上运行

在看到任何最小化迹象之前,我需要运行求解器 30 秒:

如果我跑了 60 秒,我开始得到可接受的结果:

我觉得这需要的时间太长了。关于为什么需要这么长时间的任何评论?