问题标签 [clingo]

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

answer-set-programming - Clingo/ASP:在故事生成器中生成角色的最佳方式

我正在尝试用 Clingo 编写故事生成器。

我想说的是“如果现有角色生出新角色,就可以诞生新角色。” 我将新字符定义为entity(<int\>),这是我能想到的表示实体的最佳方式。我无法对此进行硬编码,因为可以在故事中创建不同数量的实体。

code的是:

但是,输出是:

entity(2, 1)从未被创建,也不是entity(3, 2)or entity(4, 3)

我究竟做错了什么?有一个更好的方法吗?

0 投票
1 回答
664 浏览

answer-set-programming - 在 Clingo 中对多个值求和

我正在计算 cligo 中多个字段的总和:

这行得通。输出是:

但是,这很乏味。我非常想要的是一次总结它们(不工作):

输出是:

有没有办法简化我的第一种方法?

0 投票
2 回答
469 浏览

clingo - Clingo 打印重复的答案?

我无法解释clingo v 5.2.2下面的输出:

在此处输入图像描述

为什么要clingo打印answer1两次?我已经检查过这两个answer1s 是完全一样的。

我在我的代码中使用优化。这可能是问题吗?

我已经建立了一个测试仓库。可以通过在测试存储库中运行以下行来生成上述输出。

0 投票
0 回答
100 浏览

python - 无法理解的行为 subprocess.Popen(cmd,stdout) 和 os.system(cmd)

我首先在 python 脚本中使用外部命令:

然后我得到标准输出。

问题是如果我直接在命令行中执行这个外部命令,在脚本内部执行它时的结果是不一样的。

我用 then os.system(cmd),但同样的问题。

python中的这条指令是否使用了一些缓冲区?

我如何解释两个结果之间的区别(命令行和脚本内部)。

安装后,我将此工具用作命令行中的本地命令:

https://potassco.org/clingo/run/

我使用一些文件作为输入,如下所示:

为此,该工具会生成这样的模型:

当我在我的 python 脚本中调用命令时,它不会计算所有模型,它会生成一个不完整的模型。这个问题只出现在大样本中,需要大模型的计算。这就是为什么我要问这个命令是否: subprocess.Popen 和 os.system 使用一些缓冲区......

0 投票
1 回答
526 浏览

constraints - 无法理解 clgo 中的基数约束

我在 Clingo 中定义了图形着色问题,如下所示:

我有这样的解决方案:

我无法理解= 1代码生成部分的含义。我知道它是“设置基数”,但我不明白如何,因为代码必须在每个答案中生成七个节点。此外,以下生成器(生成所有节点组合和在一组长度 7 中选择的颜色)需要= 7

这是我正在解决的图形着色问题的图片:https ://imgur.com/a/tX7qtkJ

和坚持: https ://potassco.org/cligo/run/

0 投票
1 回答
300 浏览

answer-set-programming - 在 clgo/ASP 中 1<0 和 1=-1 是什么意思?

我以前从未使用过 clgo,而且我发现在线文档不完整(我也无法在 Potassco 论坛上发帖)。我有一段带有格式规则行的 cligo 代码

foo(L1, L2, L3) :- isa(thing,object), isa(thing, object)...

这部分代码是有道理的,但在最后一条规则之前的行尾,我的条件是 1>0、1<0 或 1==-1。我不确定它们是什么意思,因为它们似乎不遵循正常的布尔规则。有谁知道这在 clgo 中具体意味着什么?

0 投票
1 回答
177 浏览

logic - 如何表示答案集编程中要推理的未知知识?

这是要解决的问题:

如果吉姆不给他的孩子买玩具,那么吉姆的孩子就不会收到圣诞节的玩具。如果吉姆的孩子不写圣诞信,吉姆就不会给他们买玩具。吉姆的孩子们确实收到了圣诞节玩具。” 假设对这个故事的预期解释暗示吉姆的孩子们写了他们的圣诞信。

现在我想将上面的信息编码成规则和事实,以便 clgo 推断吉姆的孩子是否写了这些信。

我写的程序如下:

为简单起见,我只是假设吉姆只有一个名叫彼得的孩子。

在我自己的想法中,答案集的推理过程是:

  1. 所有事实都在答案集中,即son(peter,jim)肯定receive_toys(peter,jim)应该在答案集中。

  2. 既然receive_toys(peter,jim)在答案集中,-receive_presents(peter,jim)就不会在。因此not buy_presents(jim,peter)应该是假的,并且buy_presents(jim,peter)在答案集中。

  3. 因为buy_presents(jim,peter)在答案集中,-buy_presents(jim,peter)所以是假的。并且由于son(peter,jim)在答案集中,not write_letters(peter)将是错误的,并且write_letters(peter)将在答案集中。

所以我认为答案应该是 { son(peter,jim), receive_toys(peter,jim), buy_presents(jim,peter), write_letters(peter)}

因此我们可以得出结论是彼得确实写了这封信。

但是在 cligo 中运行它时,我得到以下信息:

我有点认为 cligo 要求首先在规则中定义每个原子操作。但是在这里我只想推理彼得是否写了这封信,所以我不能自我定义“如果 xxx,那么彼得写这封信”,因为那只是我自己在做推理部分。

如何解决答案集编程中的此类问题?

0 投票
1 回答
145 浏览

logic - 比较多个集合的基数并从最大集合的成员中获取特定值

我正在使用 cligo 来解决洪水问题。我使用谓词frontier([CELL], [COLOR], [TIMESTEP])来跟踪作为洪水邻居的所有单元格。边界集可能如下所示:

我们可以将这个集合分成两个子集。每个颜色值分别为 2 或 3 的一种。我需要的基本上是两件事:

  1. 确定哪个子集更大,即颜色值为 2 或 3 的单元格是否更多(顺便说一句,颜色的数量不固定,因此解决方案必须是通用的)
  2. 获取最大集合成员的颜色值

如何比较谓词逻辑中 n (n>=2) 集的基数?

先感谢您!

0 投票
1 回答
122 浏览

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]

我希望以后能够添加约束(比如这个注释不应该跟那个注释,等等)。我很感激任何提示,因为我对此知之甚少。

0 投票
1 回答
156 浏览

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 应该只有一个计数。