问题标签 [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.
zebra-puzzle - Clingo:断言部分约束
我正在尝试实现一个程序,clingo
以解决其中一个经典谜语,其中您有一系列事实和约束的断言,并且您必须推断出其他事实。问题来了:
五个不同国籍的男人住在五个并排的房子里,每个房子的颜色都不一样;他们都有不同的工作,不同的喜爱动物和喜爱的饮料。我们知道:
- 英国人住在红房子里。
- 西班牙人最喜欢的动物是狗。
- 日本人是画家。
- 意大利人喝茶。
- 挪威人住在左起第一个房子里。(number_norw = 1)
- 住在温室里的人喝咖啡。
- 绿房子就在白房子的右边。(number_green = number_white + 1)
- 店员喜欢猫。
- 推销员住在黄色的房子里。
- 牛奶是中心屋最喜欢的饮料。(number_milk = 3)
- 挪威人的房子与蓝色的房子相邻。(number_norw = number_blue ± 1)
- 厨师喜欢果汁。
- 住在医生旁边的房子里的男人喜欢狐狸。
- 爱马的男人住在推销员的隔壁。
任务是找出谁喜欢斑马。所以我提出断言:
现在我坚持断言约束;如何编码断言 1. 到 14.?我只需要了解正确的语法,所以如果有人可以通过一两个示例让我走上正确的轨道,我可以弄清楚其余的。谢谢。
注意,我可以从 5. 和 11. 推断出第二个房子是蓝色的,因为11. number_blue = number_norw ± 1
,5. number_norw = 1
和 0 不在可能的数字范围内,但我不想手动将其添加到约束中,因为我希望clingo
自己弄清楚。
answer-set-programming - Clingo:创建自定义函数
如果可以定义的话,我无法在 cligo 中创建一个“函数”。在我想要完成的简化版本中,我编写了这个非常简短的程序:
基本上,我想定义一个邻接函数,true
如果它们的差值的绝对值等于 1,则给定任何两个数字都将成立。我对上述程序的期望是输出结果:adj(1,2) adj(2,1) adj(2,3) adj(3,2)
,但我看到了这个输出:
(如果我省略#hide a/1.
它将输出答案:)a(1) a(2) a(3)
。
我觉得这是 clgo 101,所以也许我误解了这里的基础知识。我正在尝试通过学习我在网上偶然发现的示例来学习 Clingo,但我有点匆忙完成它,因为我明天有作业。如果有人能提供一些启示,那就太好了。谢谢。
answer-set-programming - 在答案集编程中,模型和最小模型有什么区别?
我正在学习人工智能课程,我们正在使用答案集编程(特别是 Clingo)。我们目前主要谈论的是理论,我在区分模型和最小模型时遇到了一些麻烦。我有以下定义:
满足定程序的规则、模型、最小模型和答案集
- 如果程序在其规则主体中没有“不”,则称为确定程序。
- 集合 S 被称为满足以下形式的规则 a :- b1, ..., bm, not c1, ..., not cn。如果它的主体被 S 满足(即 b1 ... bm 在 S 中,而 c1 ... cn 都不在 S 中)意味着它的头部必须被 S 满足(即 a 在 S 中)。
- 如果集合 S 满足该程序的所有规则,则称它满足该程序。
- 如果 (a) S 满足 P(也称为 S 是 P 的模型)并且 (b) S 的严格子集不满足 P(即 S 是P 的最小模型)。
带着问题(从讲座幻灯片中提取,而不是家庭作业):
谁能告诉我上述问题的答案是什么?我可能可以从那里找出区别,尽管如果有人可以解释普通话的区别(而不是教科书的定义),那就太好了。我不确定在哪个论坛发布这个问题 - 请让我知道它是否应该发布在其他地方。
谢谢
answer-set-programming - 关于答案集编程的新手问题
我对 Clingo(和逻辑编程)完全陌生,我正在寻找实现以下基本约束的最佳方法:
Q1。我有一个谓词selected(T)
,其中 T 的范围从 1 到 N=5;如何指定至少存在一个 T这样 selected(T) ?
Q2。我有一个二元谓词wrap(E,T)
,其中 E,T 的范围从 1 到 M,N;如何指定每个 E 至少存在一个 T使得 wrap(E,T) ?
Q3。我如何指定 if selected(a)
OR selected(b)
thenselected(c)
必须为假
我实际上使用了两行代码,但可能有更好的方法:
Q4。如何指定如果某个条件 C(A) 为真,那么两个一元谓词 p1(A) 和 p2(A) 必须具有相同的值?
我实际上使用了两行代码:
Q5。你推荐什么书来很好地介绍答案集编程?
c# - 将子程序输出重定向到文件
我有一个答案集程序(已验证可以工作),我想在 C# 控制台应用程序中运行它。我想将该程序的输出重定向到一个文本文件,然后我可以从中读取。我试过了:
但是,运行时,我收到以下错误:“***ERROR: (clingo): '>result.txt': could not open input file!”
我想知道如何解决这个问题。
answer-set-programming - 在 clgo 中聚合
我已经生成:
如何总结激光场 2+1+6?
我在 cligo_guild.pdf 的第 21 页看到了以下内容:
上来:
但我得到:
我正在使用 clgo 3.0.4。谢谢您的帮助。
answer-set-programming - 列表在 ASP(答案集编程)中应该如何表示?
处理器“a”处理消息“a_b_c_d”的标头“a”并将有效负载“b_c_d”传递给下一级的另一个处理器,如下所示:
我应该如何在 ASP 中表示列表'a_b_c_d',并将上述更改为一般情况?
answer-set-programming - 优化语句语法的差异(cligo 3 和 cligo 4)
对于 cligo3,我在逻辑程序中有一个优化语句:
(基本上,我希望解决方案包含尽可能少的上述内容 - 它们的权重都相同)。
此语法适用于 cligo3,但不适用于 cligo4。应该如何为 cligo4 重写?
answer-set-programming - 如何在 cligo 4.5 中最小化文字实例的数量
我不确定如何在 cligo4(ASP 求解器)中编写优化语句。
我想最小化每个答案集中某些文字的实例总数。
我正在模拟 ASP 中的火灾响应代理。代理可以选择在不同时间执行某些简单的操作,例如:
代理有目标,需要在特定时间混合使用上述操作。我想尽量减少上述每个实例的数量,同时仍然实现代理目标。
如何编写适当的优化语句?(我假设我需要一个“最小化”声明)。
谢谢。
aggregate - 在 clgo 中计算聚合
测试数据
我想根据工作类型和特定工作类型的员工人数按员工分组。例如:
下面是我要运行的查询
请告知,我是 Clingo 的初学者