问题标签 [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 回答
796 浏览

zebra-puzzle - Clingo:断言部分约束

我正在尝试实现一个程序,clingo以解决其中一个经典谜语,其中您有一系列事实和约束的断言,并且您必须推断出其他事实。问题来了:

五个不同国籍的男人住在五个并排的房子里,每个房子的颜色都不一样;他们都有不同的工作,不同的喜爱动物和喜爱的饮料。我们知道:

  1. 英国人住在红房子里。
  2. 西班牙人最喜欢的动物是狗。
  3. 日本人是画家。
  4. 意大利人喝茶。
  5. 挪威人住在左起第一个房子里。(number_norw = 1)
  6. 住在温室里的人喝咖啡。
  7. 绿房子就在白房子的右边。(number_green = number_white + 1)
  8. 店员喜欢猫。
  9. 推销员住在黄色的房子里。
  10. 牛奶是中心屋最喜欢的饮料。(number_milk = 3)
  11. 挪威人的房子与蓝色的房子相邻。(number_norw = number_blue ± 1)
  12. 厨师喜欢果汁。
  13. 住在医生旁边的房子里的男人喜欢狐狸。
  14. 爱马的男人住在推销员的隔壁。

任务是找出谁喜欢斑马。所以我提出断言:

现在我坚持断言约束;如何编码断言 1. 到 14.?我只需要了解正确的语法,所以如果有人可以通过一两个示例让我走上正确的轨道,我可以弄清楚其余的。谢谢。

注意,我可以从 5. 和 11. 推断出第二个房子是蓝色的,因为11. number_blue = number_norw ± 1,5. number_norw = 1和 0 不在可能的数字范围内,但我不想手动将其添加到约束中,因为我希望clingo自己弄清楚。

0 投票
1 回答
1086 浏览

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,但我有点匆忙完成它,因为我明天有作业。如果有人能提供一些启示,那就太好了。谢谢。

0 投票
1 回答
461 浏览

answer-set-programming - 在答案集编程中,模型和最小模型有什么区别?

我正在学习人工智能课程,我们正在使用答案集编程(特别是 Clingo)。我们目前主要谈论的是理论,我在区分模型和最小模型时遇到了一些麻烦。我有以下定义:

满足定程序的规则、模型、最小模型和答案集

  1. 如果程序在其规则主体中没有“不”,则称为确定程序。
  2. 集合 S 被称为满足以下形式的规则 a :- b1, ..., bm, not c1, ..., not cn。如果它的主体被 S 满足(即 b1 ... bm 在 S 中,而 c1 ... cn 都不在 S 中)意味着它的头部必须被 S 满足(即 a 在 S 中)。
  3. 如果集合 S 满足该程序的所有规则,则称它满足该程序。
  4. 如果 (a) S 满足 P(也称为 S 是 P 的模型)并且 (b) S 的严格子集不满足 P(即 S 是P 的最小模型)。

带着问题(从讲座幻灯片中提取,而不是家庭作业):

谁能告诉我上述问题的答案是什么?我可能可以从那里找出区别,尽管如果有人可以解释普通话的区别(而不是教科书的定义),那就太好了。我不确定在哪个论坛发布这个问题 - 请让我知道它是否应该发布在其他地方。

谢谢

0 投票
1 回答
2628 浏览

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。你推荐什么书来很好地介绍答案集编程?

0 投票
1 回答
201 浏览

c# - 将子程序输出重定向到文件

我有一个答案集程序(已验证可以工作),我想在 C# 控制台应用程序中运行它。我想将该程序的输出重定向到一个文本文件,然后我可以从中读取。我试过了:

但是,运行时,我收到以下错误:“***ERROR: (clingo): '>result.txt': could not open input file!”

我想知道如何解决这个问题。

0 投票
2 回答
1693 浏览

answer-set-programming - 在 clgo 中聚合

我已经生成:

如何总结激光场 2+1+6?

我在 cligo_guild.pdf 的第 21 页看到了以下内容:

上来:

但我得到:

我正在使用 clgo 3.0.4。谢谢您的帮助。

0 投票
4 回答
1526 浏览

answer-set-programming - 列表在 ASP(答案集编程)中应该如何表示?

处理器“a”处理消息“a_b_c_d”的标头“a”并将有效负载“b_c_d”传递给下一级的另一个处理器,如下所示:

我应该如何在 ASP 中表示列表'a_b_c_d',并将上述更改为一般情况?

0 投票
1 回答
739 浏览

answer-set-programming - 优化语句语法的差异(cligo 3 和 cligo 4)

对于 cligo3,我在逻辑程序中有一个优化语句:

(基本上,我希望解决方案包含尽可能少的上述内容 - 它们的权重都相同)。

此语法适用于 cligo3,但不适用于 cligo4。应该如何为 cligo4 重写?

0 投票
1 回答
1799 浏览

answer-set-programming - 如何在 cligo 4.5 中最小化文字实例的数量

我不确定如何在 cligo4(ASP 求解器)中编写优化语句。

我想最小化每个答案集中某些文字的实例总数。

我正在模拟 ASP 中的火灾响应代理。代理可以选择在不同时间执行某些简单的操作,例如:

代理有目标,需要在特定时间混合使用上述操作。我想尽量减少上述每个实例的数量,同时仍然实现代理目标。

如何编写适当的优化语句?(我假设我需要一个“最小化”声明)。

谢谢。

0 投票
1 回答
3126 浏览

aggregate - 在 clgo 中计算聚合

测试数据

我想根据工作类型和特定工作类型的员工人数按员工分组。例如:

下面是我要运行的查询

请告知,我是 Clingo 的初学者