我正在做一个练习,我需要在哪里创建一个简单的约会机构匹配系统。目前每个人都有一个爱好,爱好是按活跃和不活跃的类别,如果两个爱好匹配并且两个人有异性,约会机构认为这些人是匹配的。
所以现在我需要系统能够允许多种爱好,但我似乎无法理解这一点。
这是我所拥有的:
(deftemplate MAIN::person
(slot name)
(slot age)
(multislot hobby)
(slot town)
(slot sex))
(person (name "Jane")
(age 25)
(hobby fashion gardening)
(town montrose)
(sex female))
(deffacts hobby_types "Hobby categories"
(hobby_type gardening active)
(hobby_type swinging active)
(hobby_type reading inactive)
(hobby_type fashion inactive)
)
(defrule compatible_hobbies
(opposite_sex ?name1 ?name2)
(person (name ?name1) (hobby ?hobby1))
(person (name ?name2) (hobby ?hobby2))
(hobby_type ?hobby1 ?type)
(hobby_type ?hobby2 ?type)
=>
(assert (hobbies_match ?name1 ?name2))
)
所以首先,我是否正确声明了 multislot 字段?以及如何调整我的 compatible_hobbies 规则以匹配一个人可能拥有的任何一个爱好?