问题标签 [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.
answer-set-programming - 如何在 cligo 4.5 中最小化文字实例的数量
我不确定如何在 cligo4(ASP 求解器)中编写优化语句。
我想最小化每个答案集中某些文字的实例总数。
我正在模拟 ASP 中的火灾响应代理。代理可以选择在不同时间执行某些简单的操作,例如:
代理有目标,需要在特定时间混合使用上述操作。我想尽量减少上述每个实例的数量,同时仍然实现代理目标。
如何编写适当的优化语句?(我假设我需要一个“最小化”声明)。
谢谢。
prolog - 如何浏览 Answer Set Prolog 中的事实列表?
我有一个事实清单,例如
等等,还有
等等,以及
我不得不说一个学生能不能毕业。
要毕业,学生必须完成所有课程。但是,如果不在规则中写下所有术语,我怎么能这么说呢?
我认为是
但我不知道如何解释规则在不写所有课程的情况下参加了所有课程。有人能帮我吗?
谢谢。
prolog - 将逻辑难题转换为谓词演算和 prolog/dlv
问题是:盐被偷了!好吧,我们发现罪魁祸首要么是毛毛虫,要么是蜥蜴比尔,要么是柴郡猫。三人受审并在法庭上发表以下声明:
碰巧的是,其中至少有一个撒了谎,至少有一个说的是真话。谁吃了盐?
我确定比尔是不是真的,比所有的陈述都是真的,如果柴郡是真的,那么所有的都是假的,所以它一定是毛毛虫。
查看谓词演算并对其进行编程,它会是这样的:
但是,然后在谓词逻辑中进一步描述这一点,我不会如何描述他们所做的描述或请求。如果一个陈述是真的,那如何暗示其他陈述可能是错误的。
logic - 在 DLV/Prolog 中映射谓词和命题
我无法理解如何做某事
想象一下,我有 3 头驴,每头驴都有最喜欢的布,并在它最喜欢的游乐场玩耍。
如果我给这些驴子限制哪个操场可能是它最喜欢的操场,例如操场 A、B 或 C,或者甚至通过诸如 Donkey humphey 最喜欢的布绝对不是T 恤我该怎么做。
IE 到目前为止我的想法是
我使用 dlv 作为我的答案集求解器
aggregate - 在 clgo 中计算聚合
测试数据
我想根据工作类型和特定工作类型的员工人数按员工分组。例如:
下面是我要运行的查询
请告知,我是 Clingo 的初学者
answer-set-programming - 答案集编程:如何将学生分配到一个小组中,以使不喜欢彼此的两个学生不在同一个小组中
我是答案集编程的初学者。我想将所有学生分成不同的组,这样: 1. 每个组有 3 到 4 名学生 2. 没有两个不喜欢彼此的学生在同一个组中。3. 我们不能将同一个学生分配到不同的组。
我写过这样的:
我已经添加了每个组可以包含多少学生的约束,但不知道如何满足其他两个条件。
对你的帮助表示感谢。谢谢。
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 的单元格......
我究竟做错了什么?
solver - 答案集编程#Count 基数约束
我是 ASP 的完整初学者。
所以我正在生成一个扫雷游戏。目前,我将地雷生成到不同的单元格中。但是我的#Count 不起作用,如何<=
在每个答案集中将每个地雷限制为 2?
answer-set-programming - 答案集编程:分成两组,让彼此喜欢的人在同一个集合中,不喜欢的人=不同的集合
我基本上是答案集编程(CLINGO)的初学者,所以我已经尝试这个问题好几个小时了。
人(a;b;c;d;e;f)。
喜欢(b,e;d,f)。
不喜欢(a,b;c,e)。
喜欢的人必须在同一个集合,不能和不喜欢的人在同一个集合。所以输出应该是: b,e | a, c, d, f
我知道它背后的逻辑;对它进行分区,以便如果一个元素同时处于喜欢和不喜欢的状态,那么它应该在自己的集合中,而其他所有元素都在另一个集合中。但这是声明式编程,所以我不确定如何解决这个问题。任何帮助,将不胜感激。
answer-set-programming - 使用约束将正方形打包成矩形 (CLINGO)
使用 CLINGO 将一组给定的正方形打包到给定的矩形区域中,而没有重叠。例如,我们要打包正方形:
A 4 号,B 3 号,C 和 D 2 号,E 1 号
进入 5 x 8 的区域。
我不确定扔掉重叠方块的限制是什么,或者我是否做对了。