在Clips规则的RHS中统计已存在的事实

如何在Clips规则的RHS(规则右侧)中测试事实的存在性?我正在尝试设计一个规则,通过计算存在多少个目标事实来“评估”当前状态。很明显如何在LHS(规则左侧)中测试事实,但我找不到如何在RHS中进行等效操作。

我想做类似这样的事情,尽管这并非有效的Clips代码:

(defrule score-state ""    ?score <- (score (value ?value))    =>    (modify ?score (value (+ (exists (goal-1)) (exists (goal-2)) (exists (goal-3))))))

因此,如果没有任何目标状态存在,那么就会存在事实(score (value 0))。相反,如果所有目标状态都存在,那么就会存在事实(score (value 3))。

参考手册提到了函数fact-existp,但这似乎需要传递一个事实地址。我尝试像(fact-existp (goal-1))这样使用它,但是Clips给出了语法错误。


回答:

(deftemplate score   (slot value))(deftemplate goal-1)(deftemplate goal-2)(deftemplate goal-3)(deffacts start   (score (value undefined))   (goal-1)   (goal-3))(deffunction ecount (?g)   (if (any-factp ((?f ?g)) TRUE)      then (return 1)      else (return 0)))(defrule score-state ""    ?score <- (score (value undefined))    =>    (modify ?score (value (+ (ecount goal-1) (ecount goal-2) (ecount goal-3)))))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注