问题标签 [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.
prolog - 如何在 SICStus Prolog 中模拟 SWI-Prolog 的 atom_to_term(+Atom, -Term, -Bindings)?
我正在使用 SICStus Prolog 编写 Dali 代理,我需要将原子转换为术语,但我无法使用atom_to_term
SWI-Prolog 中内置的
prolog - 如何将使用 atom_to_term 的代码从 SWI-prolog 转换为 SICStus Prolog
我正在尝试编写一个规则来比较两个原子以查看哪个更好例如(memory_with_gb_2 比 memory_with_gb_1 更好),我在 SWI-prolog 中编写和尝试的内容如下:
这在 SWI-Prolog 中运行良好,但是当我在 SICStus Prolog 中尝试它时,它似乎不起作用,无论如何要在 SICStus 中实现上层代码。
prolog - Prolog 计数有限制
我不知道如何实现以下目标:
我想计算满足某个条件(其值未知)的次数。
例如,如果我有列表[A1,A2,A3]
和[B1,B2,B3]
,我如何创建一个列表[R1,R2,R3]
,Ri
如果和1
如果不是。Ai=Bi
0
这是“程序”的基础。
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(),我的问题就会出现。例如:我想一个解决方案可能是:
但标签“永远”挂起
我的方法错了吗?有没有更好的方法来解决这个问题?
测试代码:
我像这样运行它:
prolog - Prolog,测试标签启发式
我正在做一些实验来比较 Sicstus Prolog 中的不同标签启发式。
但我不断进入“资源错误:内存不足”。
我很确定我在测试代码中做错了什么。
以下代码将复制我的问题:
调用 t1 谓词后不久,我收到“资源错误:内存不足”异常。
我想我应该在调用 atest 释放资源后做点什么?
另外:这是测量标记时间的正确方法吗?有没有更好的方法来做到这一点?
prolog - 内存泄漏 Sicstus Prolog
这个问题是这个问题的后续。
我在 Sicstus prolog 中运行大量测试:
每个测试都是独立的,并将其结果打印到屏幕上。测试之间没有关系,因此每次测试之间不需要存储/保存数据。
我的问题是 Sicstus 积累内存并最终遇到异常:'资源错误:内存不足'
我试图像这样组织我的测试:
但我仍然遇到问题。
有没有其他方法可以告诉 Prolog 在每次调用测试之间释放所有分配的内存?
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 中是否有任何普遍接受的谓词
prolog - 序言:如何用 global_cardinality 判断一个列表至少有 N 个等于 M 的元素(M,N 是整数)
例如:我有一些变量:A,B,C,D 和一个条件:在 [A,B,C,D] 列表中必须至少有两倍的数字 2。我只能使用global_cardinality/2组合约束.
prolog - 累计机器的结束时间
我正在处理我用来cumulatives/3
建模的调度问题。
前任:
如果我运行谓词s1/3
,我会得到:
此示例显示 m1 在 12 处完成,m2 在 15 处完成,m3 在 15 处完成。
但是,当每台机器完成所有任务时,“最佳”或最佳表达方式是什么?我想为机器的结束时间添加一些额外的限制。是否有任何适合表达这一点的全局约束?
prolog - 使用累积
我正在解决使用cumulatives/[2,3]
谓词的问题。但是当我尝试将它与minimize
in结合起来时,我的表现非常糟糕labeling
我有以下演示。10 个任务,所有持续时间为 1,4 台机器,所有容量=1。我的目标是最小化总时间,即minimize(maximum(Es))
:
如果我现在运行它并解决 1 秒钟,我会得到:
即所有任务都已安排在机器 1 上运行
在看到任何最小化迹象之前,我需要运行求解器 30 秒:
如果我跑了 60 秒,我开始得到可接受的结果:
我觉得这需要的时间太长了。关于为什么需要这么长时间的任何评论?