Clips 不使用声明显著性的订单规则执行

Clips 不使用声明显著性的订单规则执行,clips,fuzzy-logic,Clips,Fuzzy Logic,这就是问题所在,假设我有两条规则。第二条规则取决于第一条规则。 例如: (deftemplate person (slot name (type STRING)) (slot age (type STRING)) ) (deffacts start (person(name "Mike")(age "20")) (person(name "Laura")(age "22")) (person(name "Dean")(age "22")) (person(name "Charlie

这就是问题所在,假设我有两条规则。第二条规则取决于第一条规则。 例如:

 (deftemplate person 
(slot name (type STRING))
(slot age (type STRING))
)

(deffacts start
 (person(name "Mike")(age "20"))
 (person(name "Laura")(age "22"))
 (person(name "Dean")(age "22"))
 (person(name "Charlie")(age "22"))
 )

 (defrule filterage
 (person (name ?n)(age ?a))
 (test (eq ?a "22"))
 =>
 (assert (is-equal-to-22 ?n))
 )

 (defrule creategroup
 (is-equal-to-22 ?c)
 =>
 (assert (is-in-22-years-old-group ?c))
 )
正如所料,第二条规则在任何时候有规则1中的内容时都会触发


那么,我怎样才能让第二条规则等到所有人都被创建出来,而不使用declare salience

你能解释一下defmodules的用途吗?而聚焦模块的作用是什么?我在6.40文档的最后一个剪辑中搜索了它,但找不到它。此外,我被迫使用FuzzyClips 6.10d,所以问题是这是否适用于我的FuzzyClips版本。感谢您抽出时间。基本编程指南的第10节介绍了将与FuzzyCLIPS 6.1一起使用的defmodule。
         CLIPS (6.31 2/3/18)
CLIPS> (defmodule MAIN (export ?ALL))
CLIPS> (defmodule FILTER (import MAIN ?ALL))
CLIPS> (defmodule CREATE (import MAIN ?ALL))
CLIPS> 
(deftemplate MAIN::av ; attribute value
  (slot a)
  (slot v))
CLIPS>   
(deftemplate MAIN::person 
  (slot name)
  (slot age))
CLIPS> 
(deffacts MAIN::start
  (person (name "Mike") (age 20))
  (person (name "Laura") (age 22))
  (person (name "Dean") (age 22))
  (person (name "Charlie") (age 22)))
CLIPS>   
(defrule MAIN::start
  =>
  (focus FILTER CREATE))
CLIPS> 
(defrule FILTER::filterage
  (person (name ?n) (age 22))
  =>
  (assert (av (a is-equal-to-22) (v ?n))))
CLIPS> 
(defrule CREATE::creategroup
  (av (a is-equal-to-22) (v ?c))
  =>
  (assert (av (a is-in-22-years-old-group) (v ?c))))
CLIPS> (watch rules)
CLIPS> (reset)
CLIPS> (run)  
FIRE    1 start: *
FIRE    2 filterage: f-4
FIRE    3 filterage: f-3
FIRE    4 filterage: f-2
FIRE    5 creategroup: f-7
FIRE    6 creategroup: f-6
FIRE    7 creategroup: f-5
CLIPS>