问题标签 [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.
answer-set-programming - Clingo/ASP:在故事生成器中生成角色的最佳方式
我正在尝试用 Clingo 编写故事生成器。
我想说的是“如果现有角色生出新角色,就可以诞生新角色。” 我将新字符定义为entity(<int\>)
,这是我能想到的表示实体的最佳方式。我无法对此进行硬编码,因为可以在故事中创建不同数量的实体。
我code
的是:
但是,输出是:
entity(2, 1)
从未被创建,也不是entity(3, 2)
or entity(4, 3)
。
我究竟做错了什么?有一个更好的方法吗?
answer-set-programming - 在 Clingo 中对多个值求和
我正在计算 cligo 中多个字段的总和:
这行得通。输出是:
但是,这很乏味。我非常想要的是一次总结它们(不工作):
输出是:
有没有办法简化我的第一种方法?
python - 无法理解的行为 subprocess.Popen(cmd,stdout) 和 os.system(cmd)
我首先在 python 脚本中使用外部命令:
然后我得到标准输出。
问题是如果我直接在命令行中执行这个外部命令,在脚本内部执行它时的结果是不一样的。
我用 then os.system(cmd)
,但同样的问题。
python中的这条指令是否使用了一些缓冲区?
我如何解释两个结果之间的区别(命令行和脚本内部)。
安装后,我将此工具用作命令行中的本地命令:
https://potassco.org/clingo/run/
我使用一些文件作为输入,如下所示:
为此,该工具会生成这样的模型:
当我在我的 python 脚本中调用命令时,它不会计算所有模型,它会生成一个不完整的模型。这个问题只出现在大样本中,需要大模型的计算。这就是为什么我要问这个命令是否: subprocess.Popen 和 os.system 使用一些缓冲区......
constraints - 无法理解 clgo 中的基数约束
我在 Clingo 中定义了图形着色问题,如下所示:
我有这样的解决方案:
我无法理解= 1
代码生成部分的含义。我知道它是“设置基数”,但我不明白如何,因为代码必须在每个答案中生成七个节点。此外,以下生成器(生成所有节点组合和在一组长度 7 中选择的颜色)需要= 7
:
这是我正在解决的图形着色问题的图片:https ://imgur.com/a/tX7qtkJ
和坚持: https ://potassco.org/cligo/run/
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 中具体意味着什么?
logic - 如何表示答案集编程中要推理的未知知识?
这是要解决的问题:
如果吉姆不给他的孩子买玩具,那么吉姆的孩子就不会收到圣诞节的玩具。如果吉姆的孩子不写圣诞信,吉姆就不会给他们买玩具。吉姆的孩子们确实收到了圣诞节玩具。” 假设对这个故事的预期解释暗示吉姆的孩子们写了他们的圣诞信。
现在我想将上面的信息编码成规则和事实,以便 clgo 推断吉姆的孩子是否写了这些信。
我写的程序如下:
为简单起见,我只是假设吉姆只有一个名叫彼得的孩子。
在我自己的想法中,答案集的推理过程是:
所有事实都在答案集中,即
son(peter,jim)
肯定receive_toys(peter,jim)
应该在答案集中。既然
receive_toys(peter,jim)
在答案集中,-receive_presents(peter,jim)
就不会在。因此not buy_presents(jim,peter)
应该是假的,并且buy_presents(jim,peter)
在答案集中。因为
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,那么彼得写这封信”,因为那只是我自己在做推理部分。
如何解决答案集编程中的此类问题?
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 应该只有一个计数。