compiler-errors - asp (clingo) : why are ordered sums not working

标签 compiler-errors answer-set-programming clingo

考虑下面的代码,在 中编译固执 .

文件 test.lp .编译命令:clingo 0 test.lp .

col(("rot";"blau")).

freq("rot","hell",2). freq("rot","dunkel",2). freq("rot","hell",5).
freq("blau","hell",20). freq("blau","dunkel",30). freq("blau","hell",50).

freq_sum(C,F) :- F = #sum{ X : freq(C,_,X) }, col(C).
%% does not work: >>error: syntax error, unexpected [, expecting {<<
% freq_sum(C,F) :- F = #sum[ X : freq(C,_,X) ], col(C).

#show freq_sum/2.

代码应该计算每种颜色的频率总和。对于 "red" , 这应该是 9对于 “blue"这应该是 100 .对于 "red"2被计算两次。当我更换 {...}通过 […] ,这应该使列表成为有序列表并提供有序总和,编译器提示 error: syntax error, unexpected [, expecting { .我有 clingo version 4.5.4 .我的代码或编译器有问题吗?

有人可以告诉我,我如何在 asp 中执行有序的求和?

最佳答案

万一有人遇到这个问题,我找到了解决方案。问题是版本 4 中的 cligo/gringo 版本不支持多集。只能通过 {...} 进入列表.尽管如此,还是有一种方法可以防止多个元素的折叠。

freq_sum(C,F) :- F = #sum{ X,H : freq(C,H,X) }, col(C).

命名发生索引的对象,允许列表中的每个项目被唯一标记,防止重复值被视为单个元素。我在 http://ceur-ws.org/Vol-1645/paper_9.pdf 的 §2 中找到了这个解决方案.

关于compiler-errors - asp (clingo) : why are ordered sums not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549083/

相关文章:

answer-set-programming - 计算有向图中两个节点之间的距离

Prolog/ASP(Clingo) 到 CLIPS 翻译器

answer-set-programming - Clingo:创建自定义函数

answer-set-programming - 如何用 Clingo 求和?

java - 线程 “main”中的异常java.lang.NoClassDefFoundError : javapasswords in Linux [closed]

c - Windows 上的加载程序出现权限被拒绝错误

C++ 中缀到后缀

java - Unresolved 编译问题 : The type java. lang.String 无法解析。隐式构造函数 Object() 未定义

answer-set-programming - 仅计算/解决 cligo 中的特定规则

answer-set-programming - 使用答案集编程的 N 皇后问题