我已经将剪辑嵌入到C语言中。我有这样的情况:在.clp文件中,我有事实清单
(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))) 现在我想取消这些事实,并在列表中声明新的事实。我使用Retract(factPtr);取消事实,使用AssertString("(sensor (name 1) (status 0))");断言事实。我打印事实清单,结果是
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.事实指数是从11开始,而不是从1开始,我想知道是否有函数或解,新断言的事实可以从f-1开始。Ps:Clear()函数可以重置事实索引,但规则也将被清除.这似乎没什么用。
感谢你的回答或任何想法。
发布于 2014-04-08 18:50:24
Reset()函数将删除所有事实并重置事实索引,而不删除任何规则。
https://stackoverflow.com/questions/22934164
复制相似问题