问题标签 [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 - 生成区间信息的问题
给定一个随时间变化的二元函数,我尝试提取有关此函数中出现的间隔的信息。例如,我有状态 a 和 b,以及以下功能:
然后我想要一个像这样的事实间隔(开始,长度,值):
这是我到目前为止得到的:
这实际上工作得很好,但仍然不正确,这是我的输出,当我使用 cligo 4.5.4 运行它时:
它只有一个错误:T == 9 处的所有间隔(L == 1 的间隔除外)
所以我尝试添加以下约束,以摆脱那些:
在我看来,这意味着“禁止,有一个间隔,这样 T + L 就不是时间” 但是现在 cligo 说这个问题将无法满足。
所以我尝试了另一种解决方案,它应该做同样的事情,但以一种不太通用的方式:
这也让整个事情无法解决。我真的不明白,我只是希望这两个规则都能摆脱函数用完的间隔。那么为什么他们会完全杀死模型的所有元素呢?
此外,在我的实验中,我将函数规则替换为:
即使没有有问题的约束,这也会使整个事情无法满足,这是为什么呢?
所以是的......我想,我从根本上误解了一些东西,如果有人能告诉我那到底是什么,我会非常高兴。
最好的问候 Uzaku
compiler-errors - asp (clingo) : 为什么排序总和不起作用
考虑以下代码,在cligo中编译。
文件test.lp
. 编译命令:clingo 0 test.lp
.
代码应该计算每种颜色的频率总和。对于"red"
,这应该是9
,对于“blue"
这应该是100
。因为"red"
该值2
被计算两次。当我替换{...}
为[…]
应该使列表成为有序列表并提供有序总和时,编译器会抱怨error: syntax error, unexpected [, expecting {
。我有clingo version 4.5.4
。我的代码或编译器有问题吗?
有人可以告诉我,我如何在 asp 中执行有序的求和?
answer-set-programming - 计算真谓词的数量并限制
有没有一种特定的方法可以限制使用指定事实可用的真实谓词的数量?
目前我总共有(2)。作为一个事实。我认为这会起作用:
:- 总计(N), #count{x:something_to_limit(x)} = K, K=N。
但是,这不会将 something_to_limit 谓词的数量限制为指定的 total(2) 事实,其中 N 等于 2。
任何帮助将不胜感激:)
answer-set-programming - 使用答案集编程解决逻辑难题
免责声明:我对 cligo 和一般的答案集编程几乎是全新的。
我正在尝试使用 cligo解决网格逻辑难题。首先,我想生成包含每个类别的一个实例的所有模型。
例如,如果有三个人:
person(a; b; c).
,三个房子:house(w; x; z).
,以及三种颜色:
color(r; g; y).
我希望一个潜在的稳定模型是
assign(a, r, x), assign(b, g, z), assign(c, y, w)
,另一个潜在的稳定模型是
assign(a, g, w), assign(b, y, z), assign(c, r, x)
,等等。也就是说,每个人只出现一次,颜色也是如此。我认为一旦有了这些模型,我就可以使用约束来消除模型,直到难题解决。
我尝试过使用选择规则和约束:
但这不能很好地扩展到具有许多变量的大型谜题。任何人都可以建议更好的方法吗?
c++ - 如何从 C++ 文件运行答案集编程文件?
我可以使用哪些方法从 C++ 代码的主函数运行 ASP 文件?
我正在做一个项目,我希望使用 C++ 文件控制一个模拟的turtlebot,并使用 ASP 代码构建一个机器人可以用来实现指定目标的行动计划。
我正在使用 Ubuntu 14.04、SPARC(一个 ASP 求解器)、ROS indigo 和凉亭。
linux - 如何使用 SPARC 求解器的输出作为 python 文件的输入?
我的问题:我需要将 SPARC 求解器的输出(当前在终端中显示为文本)作为 Python 代码中的变量保存。我怎样才能做到这一点?
快速说明:SPARC 是用于 ASP(答案集编程)文件的求解器 - 只是提到这一点,以便人们不会感到困惑并认为我指的是 asp.net。
我在同一个终端中使用命令同时运行 Python 文件和 ASP 文件(在查询模式下)python pythonfile.py | java -jar sparc.jar aspfile.sp
。python 文件的输出以 的形式sys.stdout.write()
被重定向为 SPARC 求解器的输入;即我输出的文本变成了使用我的 ASP 代码解决的查询。这是有效的,并生成了我想要的输出,但我不知道如何在我的 Python 代码中使用该输出。
这是我提出的另一个问题的后续行动,在此处找到。在那个问题中,我试图找出如何从我的 C++ 代码运行 ASP 文件。我在给出的答案中选择了选项 2,并且正在使用重定向的标准输出,两个文件作为单独的进程运行。请注意自原始问题以来的一项重大变化:我现在使用 Python 而不是 C++。
如果需要,请提供更多详细信息:我的 Python 版本是 2.7,我的操作系统是 Ubuntu 14.04。我认为这无关紧要,但如果是的话,您应该知道我的 Python 代码也被用于控制 Gazebo Turtlebot 模拟,并且我正在使用 ROS Indigo 运行该模拟。除非有人要求,否则我不会发布我的代码,因为我只想知道我可以使用什么方法(我在互联网上找不到任何有效的方法),而不是需要我的代码调试/帮助编写它。但是,我将在下面发布一个示例,说明我的代码运行时向终端输出的内容,因为这是我试图“捕获”的信息。
我想将答案“是”和“否”作为变量保存在我的 Python 文件中。
解决方案:
对于任何想做同样事情的人,我遵循 CaptainTrunky 提供的答案。
首先我运行命令python pythonfile.py | java -jar sparc.jar aspfile.sp > sparc.out
,将 SPARC 输出保存到文本文件 sparc.out。
然后我运行python outputParser.py
一个脚本来打印文本文件的内容,让我检查我是否正确地处理了数据。脚本非常简单:
python-2.7 - 尝试在 Python2.7 和 ASP 之间进行双向通信:将命名管道的内容写入文本文件不起作用
我正在使用 Python2.7,SPARC ASP 求解器,并且正在从 Ubuntu14.04 命令行运行我的代码。
我正在尝试在我的 Python 代码和我的 ASP(答案集编程)代码之间建立双向通信。为此,我从 python 向 ASP 发送查询,将 ASP 响应放入 fifo 管道,在 python 代码中,fifo 的内容被读入字符串,然后将该字符串写入文本文件(这是这样的我可以检查文本文件,看看我是否得到了我期望的输出)。然而,出现了两个问题:文本文件中只出现了部分预期响应,而不是全部,虽然我的 python 代码处于无限循环中,但它似乎只运行一次。出了什么问题?
不幸的是,尽管进行了数天的研究并就堆栈溢出提出了一些较小的问题,并且尽管本网站上的好人提供了一些非常有用的答案,但我仍然无处可去,我不确定我的代码中的问题出在哪里。所以我将发布我所有的代码,希望有人可以帮助我一劳永逸地解决这个问题。
我的python代码:
我的 ASP 代码:
我如何从命令行运行我的代码:
发生了什么:
运行我的代码后,我检查afile.txt
了写了什么。它总是公正?-
的,没有“是”。我还可以看出我的 python 代码只运行一次,因为当我追加到文本文件而不是写入时,每次运行我的代码时只添加一行。ASP 求解器的输出应该是?- yes
.
我怀疑问题出在 ASP 代码中,因为如果在命令行中我键入> sparc.out
而不是> fifo
(这样输出直接放入文本文件而无需先经过 fifo),则文本文件包含几十个重复的?- yes
,这是我所期望的。
我需要弄清楚如何使用 fifo 而不是仅仅将输出写入文本文件,因为对于我的代码所针对的应用程序而言,不断地读取/写入文本文件太慢了(为turtlebot 创建一个行动计划;当我在机器人上测试了文本文件版本,它不断停止和启动,因为它每次从文本文件中读取时都会暂停)。
我知道将所有代码转储到帖子中并说“为我修复它!”并不是很好的形式,但我无能为力。如果有人可以帮助我进行双向沟通,我将非常感激。
java - 使用 Runtime.exec() 从 Java 程序运行 ASP 程序时出现问题
所以我遇到的问题是,当使用 bash 脚本运行时,我无法让 ASP 程序完全执行。所以脚本运行 ASP 但只是启动,它永远不会完成。
所以我的问题是如何在使用 bash 时使 cligo 完全执行
普通终端中的这条线只是给出
然后保持在那里没有完成。
我认为我的问题与我对 bash 如何运行/执行事物的理解有关,因此将不胜感激任何帮助。
编辑:
应该注意的是,当被中断的 clgo 告诉我 CPU 时间为零时,它什么也没做。我知道这个 asp 可以工作,并且在使用 bash 运行时会给出很多结果。
answer-set-programming - 在答案集编程中检查两个矩形之间的交集
下面的规则检查交叉点。
但是它会生成对称对。也就是说,它检查交叉点(A,B)和交叉点(B,A)显然其中一项检查是微不足道的。我在接地器中检测到它。这是接地器输出。
如何防止发生对称情况?
如果问题出在其他地方,我会提供生成这些规则的完整来源。
编辑:我认为以前的版本(完整源代码)对于其他人来说非常复杂,无法得出结论。所以我把它简化了。此代码导致上述问题。