2016-09-17 21 views
0

因此,我试图为18洞球场制作“高尔夫球杆推荐系统”。现在,在定义了高尔夫球场,高尔夫球杆和高尔夫球员的基本模板之后,由于这个特殊问题呈现的大型搜索空间,我陷入了困境。所以目前我有:在CLIPS中使用规则中的变量进行前向链接

(defrule teeoff 
    ?g <- (golfer (position "tee")) 
    => 
    (retract ?g) 
    (assert (golfer (position "fairway") (Current_club "driver") (Yardage 650)) 

在此之后,球在球道上,可以有多种因素的组合表示,也可以是在沙滩上,它可以在粗糙的,也可能是在一个正常的绿色。我的问题是,而不是把规则为每一个可能性,我可以有一个像一个或两个规则:

(defrule makemove 
    ?m <- (golfer (position ?x)) 
    ?go <- (golfcourse (obstacles ?$y) 
=> 
    (assert (golfer (Current_club ?c))) 

如果没有,那我有什么办法?

回答

1

我建议您设计一个对象或属性来管理ground_material(沙子,绿色......)并将其包含在规则内。 您可以为每个地面编写规则,或在单个规则内使用IF-THEN条件。

希望这可以帮助你。 bye Nic