问题标签 [answer-set-programming]
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.
logic - 比较多个集合的基数并从最大集合的成员中获取特定值
我正在使用 cligo 来解决洪水问题。我使用谓词frontier([CELL], [COLOR], [TIMESTEP])
来跟踪作为洪水邻居的所有单元格。边界集可能如下所示:
我们可以将这个集合分成两个子集。每个颜色值分别为 2 或 3 的一种。我需要的基本上是两件事:
- 确定哪个子集更大,即颜色值为 2 或 3 的单元格是否更多(顺便说一句,颜色的数量不固定,因此解决方案必须是通用的)
- 获取最大集合成员的颜色值
如何比较谓词逻辑中 n (n>=2) 集的基数?
先感谢您!
answer-set-programming - 如何生成固定大小的事实列表(包括重复项)?
我是 ASP 和 Clingo 的新手,我需要为学校做一个项目。我想到了一些基本的音乐发生器。
现在,我需要生成音符(我现在坚持使用 C 大调)。我也想随机生成它们,但我不知道该怎么做。如何使以下代码生成随机的音符序列(也可以重复)?
到目前为止,代码不允许超过 7 作为上限,因为它不会显示重复的注释。
电流输出:play(b) play(g) play(e) play(c)
想要的输出:play(d) play(g) play(f) ...[20-30 randomly generated notes]
我希望以后能够添加约束(比如这个注释不应该跟那个注释,等等)。我很感激任何提示,因为我对此知之甚少。
answer-set-programming - 如何获取谓词中重复值的计数?
我正在尝试获取某个玩家获得的相等分数的计数。例如,如果我有 score(p1, 1), score(p2, 1), score(p3, 2),我想用 result(1,2) 和 result 获得一个新的谓词occurrences(Score, Count) (2,1),因为两次得1分,而只得一次得2分。
我尝试使用以下程序计算出现次数:
getScore(S) :- 分数(P,S)。
出现次数(S,L):- L = #count{Sc:得分(P,Sc)},getScore(S)。
但是,得到的值是不正确的:occurrences(1,2),occurrences(2,2)。如上所述,分数 2 应该只有一个计数。
answer-set-programming - Clingo:按顺序(索引)比较字符串文字?
我已经定义了一个名为Clingotableau10
的调色板:
tableau10(blue;orange;red;teal;green;yellow;purple;pink;brown;gray).
有没有办法按颜色定义中出现的顺序比较颜色?(例如,blue = 0, orange = 1, red = 2, ...
)
我的目标是能够声明诸如blue < orange
...blue < gray
prolog - Prolog中的否定失败和答案集编程中的默认否定
与答案集编程中的默认否定相比,我很难将否定的概念理解为 Prolog 中的失败。有人可以向我解释一下有什么区别吗?
reasoning - clgo中勇敢/谨慎的推理
在 Clingo 指南中,有两种模式分别称为谨慎和勇敢,介绍如下:
勇敢计算逻辑程序的勇敢结果(所有答案集的联合)。
谨慎计算逻辑程序的谨慎后果(所有答案集的交集)。
指南中没有提供更多信息。我尝试了一些示例,但无法理解该问题。
我尝试运行以下简单的 ASP 程序:
在没有模式参数的情况下运行 Clingo 将给出正确的答案集:
如指南中所述,如果在勇敢模式下运行,它将计算所有答案集的并集,我应该得到结果{p, q}
。
同样,对于谨慎的情况,预期结果为空。
然而,Clingo 勇敢推理的实际结果是:
紧贴版本 5.3.0
从 test/cautious_reasoning.lp 读取
解决...
答案:1
q
后果:[1;2]
答案:2
qp
后果:[2;2]
满意
型号:2
勇敢:是的
后果:2
来电:1
时间:0.006s(求解:0.00s 1st Model:0.00s Unsat:0.00s)
CPU时间:0.002s
对于谨慎的情况:
紧贴版本 5.3.0
从 test/cautious_reasoning.lp 读取
解决...
答案:1
q
后果:[0;1]
答案:2
后果:[0;0]
满意
型号:2
谨慎:是的
后果:0
来电:1
时间:0.001s(求解:0.00s 1st Model:0.00s Unsat:0.00s)
CPU时间:0.001s
那么里面的数字[]
代表什么?如何理解 Clingo 中谨慎勇敢的推理模式?
matrix - 答案集编程:重新排列矩阵,使第 2 行中没有相同的数字顺序
让我有矩阵
一个=
1 2 3
1 3 5
1 2 4
2 3 7
任务是重新排列矩阵,以便在任何行中没有两个元素的顺序相同。
例如,在第 1 行和第 2 行中,我们有相同顺序的数字 1 和 3。我们在第 1 行从左到右翻转 1 和 3 中的数字并得到
3 2 1
1 3 5
1 2 4
2 3 7
我的想法是这是一个搜索问题,可以通过答案集编程来解决吗?问题是,如果您尝试使用某种算法来执行此操作,那么在某些时候您最终会将两个数字按照与它们在其他行中的顺序相同的顺序排列。
这对于重新定向网格的三角形表面网格面很有用,其中面法线指向不一致的方向,以便所有法线都指向内(或外)
answer-set-programming - 如何从 cligo 开始?
我已经安装了clgo。但我不知道如何运行它。文件中有一些示例。我试图运行它。但它失败了。
我在 Windows 和 Ubuntu 中都安装了它。我已将其添加到路径中。
C:\Windows\system32>cligo color.lp\graph.lp cligo 版本 5.3.0 从颜色\图形读取:错误:无法打开文件:
color.lp\graphC:\Windows\system32> cligo context-py.lp encoding.lp --of=3 0 * 错误: (clingo): 'encoding': 无法打开输入文件!*信息 : (cligo): 尝试使用“--help”获取使用信息
C:\Windows\system32> cligo context-lua.lp encoding.lp --of=3 0 * 错误: (cligo): 无法打开输入文件!*信息 : (cligo): 尝试使用“--help”获取使用信息
answer-set-programming - 我有什么似乎正在运行的 ASP 代码,但它没有返回任何答案集?
我正在尝试使用答案集编程、Clingo 和 MKAtoms 解决二进制数独难题。我有一组工作代码,但它没有返回任何答案集。
我已经查看了代码,但不确定问题所在。
输入文件:
没有错误,但它应该返回与上述规则匹配的答案位置。
max - 在 clgo 中找到一个原子的最大值
我是 clgo 的初学者,我一生都无法弄清楚如何获得给定原子的最大值。
例如
在这种情况下,我希望得到的结果是x_max(9)
.