I have embedded CLIPS into C Language. I have situation like this: in a .clp file, I have fact list

(deftemplate sensor
 (slot name) 
 (slot status)) 

(deffacts FRONTSENSOR
(sensor (name 1) (status 1))
(sensor (name 2) (status 1))
(sensor (name 3) (status 0))
(sensor (name 4) (status 0))
(sensor (name 5) (status 1))
(sensor (name 6) (status 0))
(sensor (name 7) (status 0))
(sensor (name 8) (status 0))) 

now I want to cancel these facts and assert new facts in to the list. I use Retract(factPtr); to cancel facts and use AssertString("(sensor (name 1) (status 0))"); to assert fact. And I print the fact list, result is

f-0     (initial-fact)
f-11    (sensor (name 1) (status 0))
f-12    (sensor (name 2) (status 0))
f-13    (sensor (name 3) (status 1))
f-14    (sensor (name 4) (status 0))
f-15    (sensor (name 5) (status 0))
f-16    (sensor (name 6) (status 0))
f-17    (sensor (name 7) (status 1))
f-18    (sensor (name 8) (status 1))
For a total of 9 facts.

the fact-index is start from 11 instead of 1, I wonder if there is function or solution that the new asserted fact can start from f-1. Ps:Clear()function can reset the fact-index, but the rules will also be cleaned. It seems not helpful.

Thank for answers or any ideas.

有帮助吗?

解决方案

The Reset() function will remove all the facts and reset the fact-indices without removing any of the rules.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top