问题标签 [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.

0 投票
1 回答
1799 浏览

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

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

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

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

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

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

谢谢。

0 投票
2 回答
205 浏览

prolog - 如何浏览 Answer Set Prolog 中的事实列表?

我有一个事实清单,例如

等等,还有

等等,以及

我不得不说一个学生能不能毕业。

要毕业,学生必须完成所有课程。但是,如果不在规则中写下所有术语,我怎么能这么说呢?

我认为是

但我不知道如何解释规则在不写所有课程的情况下参加了所有课程。有人能帮我吗?

谢谢。

0 投票
1 回答
732 浏览

prolog - 将逻辑难题转换为谓词演算和 prolog/dlv

问题是:盐被偷了!好吧,我们发现罪魁祸首要么是毛毛虫,要么是蜥蜴比尔,要么是柴郡猫。三人受审并在法庭上发表以下声明:

碰巧的是,其中至少有一个撒了谎,至少有一个说的是真话。谁吃了盐?

我确定比尔是不是真的,比所有的陈述都是真的,如果柴郡是真的,那么所有的都是假的,所以它一定是毛毛虫。

查看谓词演算并对其进行编程,它会是这样的:

但是,然后在谓词逻辑中进一步描述这一点,我不会如何描述他们所做的描述或请求。如果一个陈述是真的,那如何暗示其他陈述可能是错误的。

0 投票
0 回答
154 浏览

logic - 在 DLV/Prolog 中映射谓词和命题

我无法理解如何做某事

想象一下,我有 3 头驴,每头驴都有最喜欢的布,并在它最喜欢的游乐场玩耍。

如果我给这些驴子限制哪个操场可能是它最喜欢的操场,例如操场 A、B 或 C,或者甚至通过诸如 Donkey humphey 最喜欢的布绝对不是T 恤我该怎么做。

IE 到目前为止我的想法是

我使用 dlv 作为我的答案集求解器

0 投票
1 回答
3126 浏览

aggregate - 在 clgo 中计算聚合

测试数据

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

下面是我要运行的查询

请告知,我是 Clingo 的初学者

0 投票
1 回答
248 浏览

answer-set-programming - 答案集编程:如何将学生分配到一个小组中,以使不喜欢彼此的两个学生不在同一个小组中

我是答案集编程的初学者。我想将所有学生分成不同的组,这样: 1. 每个组有 3 到 4 名学生 2. 没有两个不喜欢彼此的学生在同一个组中。3. 我们不能将同一个学生分配到不同的组。

我写过这样的:

我已经添加了每个组可以包含多少学生的约束,但不知道如何满足其他两个条件。

对你的帮助表示感谢。谢谢。

0 投票
1 回答
96 浏览

answer-set-programming - 网格中的连续单元组

我正在开发一个解谜器(nonograms、griddler、picross...),只是为了好玩和学习更多的 ASP。(您可以在维基百科https://en.wikipedia.org/wiki/Nonogram中阅读有关这些谜题的更多信息)

我想检查是否有一组水平连续的黑色单元格 ( cell(I,J,o)) 被两个白色单元格 ( ) 包围cell(I,J,x),一个在左侧,一个在右侧。

如您所见,我cell(I,J1..J2,o)hblock/3定义中使用来检查col(J1)和之间的每个单元格col(J2)是否为黑色(标有 o 符号),但是当给出以下输入时:

它输出hblock(2,3,1) hblock(2,1,3) hblock(2,1,1),这意味着它正在检测单个黑色单元格的两个块(In(2,1)和(2,3))以及(2,1)和(2,3)之间的三个黑色单元格的更大块,但它不应该被检测到,因为它在中间有一个标有 x 的单元格......

我究竟做错了什么?

0 投票
1 回答
778 浏览

solver - 答案集编程#Count 基数约束

我是 ASP 的完整初学者。

所以我正在生成一个扫雷游戏。目前,我将地雷生成到不同的单元格中。但是我的#Count 不起作用,如何<=在每个答案集中将每个地雷限制为 2?

0 投票
1 回答
213 浏览

answer-set-programming - 答案集编程:分成两组,让彼此喜欢的人在同一个集合中,不喜欢的人=不同的集合

我基本上是答案集编程(CLINGO)的初学者,所以我已经尝试这个问题好几个小时了。

人(a;b;c;d;e;f)。

喜欢(b,e;d,f)。

不喜欢(a,b;c,e)。

喜欢的人必须在同一个集合,不能和不喜欢的人在同一个集合。所以输出应该是: b,e | a, c, d, f

我知道它背后的逻辑;对它进行分区,以便如果一个元素同时处于喜欢和不喜欢的状态,那么它应该在自己的集合中,而其他所有元素都在另一个集合中。但这是声明式编程,所以我不确定如何解决这个问题。任何帮助,将不胜感激。

0 投票
1 回答
281 浏览

answer-set-programming - 使用约束将正方形打包成矩形 (CLINGO)

使用 CLINGO 将一组给定的正方形打包到给定的矩形区域中,而没有重叠。例如,我们要打包正方形:

A 4 号,B 3 号,C 和 D 2 号,E 1 号

进入 5 x 8 的区域。

我不确定扔掉重叠方块的限制是什么,或者我是否做对了。