2015-04-30 40 views
2

我已生成:團聚體clingo

curr(p5,2) curr(p5,1) curr(p5,6) 

如何可以總結LASE字段2 + 1 + 6?

只見clingo_guild.pdf第21頁以下:

15 :- not M-2 [ enroll(C) : hours(C,H) = H ] M, max_hours(M). 

,並提出:

#sum [pick(P) : curr(P,I) = I]. 

,但我得到:

ERROR: unstratified predicate in: 
bus3.lp:73:2: #sum[pick(P)=I:curr(P,I)]. 
bus3.lp:73:17: curr/2 

我使用clingo 3.0 0.4。感謝您的幫助。

回答

1

我假設你要爲每個「挑」的總數,並且我認爲選秀被定義爲

pick(P) :- curr(P, _). 

你應該在接你指的是代碼告訴。在您引用的clingo3 guide case中,這不是必需的。

在clingo3:

% clingo3 
curr(p4,2). curr(p4,2). curr(p4,6). 
curr(p5,2). curr(p5,1). curr(p5,6). 

pick(P) :- curr(P, _). 
% for each pick P, sum all I from matching curr(P, I) 
totals(P, S) :- S = #sum[ curr(P,I) = I ], pick(P). 

#hide. 
#show totals/2. 

而且在clingo4,它使用表達這些更一致的方式:

% clingo4 
% ... 
totals(P, S) :- S = #sum{ I : curr(P,I)}, pick(P). 
#show totals/2. 
+0

感謝您的快速回復,vukk,它的工作原理。 -Tak –