? ×ֶεÄĬÈÏÖµ
¸Ã²¿·Ö×Ô¶¨ÒåÄ£°å°üº¬ÓÐÈý¸öµ¥²Û£¬·Ö±ðΪname, assetºÍage¡£
Èç¹ûûÓÐÍⲿÉùÃ÷Öµ±»¶¨Ò壬Ôòµ±(reset)Ö´Ðкó£¬CLIPS»á²åÈë×Ô¶¨ÒåÄ£°åµÄĬÈÏÖµ(deftemplate default values)¡£¾Ù¸öÀý×Ó£¬ÔÚ(clear)ÃüÁîºóÊäÈëprospect×Ô¶¨ÒåÄ£°å½á¹¹£¬ÉùÃ÷ÈçÏ£º
CLIPS>(assert (prospect))
CLIPS>(facts)
f-0 (initial-fact)
f-1 (prospect (name ¡°¡±)(assets rich)(age 80)) For a total of 2 facts. CLIPS>
ÈçÄãËù¼û£¬CLIPSÒѾΪname×ֶβåÈëÁËstringÀàÐÍĬÈϵÄÖµ¡ª¡ª¡°¡±¡£Í¬ÑùµÄ£¬CLIPSÒ²²åÈëÁíÁ½¸ö×ֶεÄĬÈÏÖµ¡£²»Í¬µÄÀàÐÍÓв»Í¬µÄĬÈÏ·ûºÅ£¬Èç¶Ô×Ö·û´®STRINGlÀ´Ëµ£¬¿Õ×Ö·û´®Îª¡°¡±£¬¶ÔINTEGERΪÕûÊý0£¬¶ÔFLOATΪ¸¡µãÖµ0.0µÈµÈ¡£¹Ø¼ü×Ö?DERIVE×Ô¶¯Îª²ÛÖµµÄÀàÐÍÑ¡ÔñºÏÊʵÄĬÈÏÖµ£¬Èç¶ÔÓÚ×Ö·û´®STRINGÀàÐÍΪ¿Õ×Ö·û´®¡°¡±¡£
Äã¿ÉÒÔÏÔʽÉùÃ÷×ֶεÄÖµ£¬ÈçÏÂÀýËùʾ£º
CLIPS>(assert (prospect (age 99)(name ¡°Dopey¡±)))
CLIPS>(facts)
f-0 (initial-fact)
f-1 (prospect (name ¡°¡±)(assets rich)(age 80))
f-2 (prospect (name ¡°Dopey¡±)(assets rich)(age 99)) For a total of 3 facts. CLIPS>
×¢ÒâÉÏÃæµÄ×Ö¶ÎÊäÈë˳ÐòÊÇÎ޹ؽôÒªµÄ£¬ËäÈ»ËüÃǶ¼ÊÇÃüÃû×ֶΡ£
ÔÚ×Ô¶¨ÒåÄ£°åÖУ¬×îÖØÒªµÄÊÇÒªÈÏʶµ½NUMBER²»ÊÇÏñ×Ö·û£¬×Ö·û´®£¬ÕûÐͺ͸¡µãÐÍÄÇЩÔʼµÄ×Ö¶ÎÀàÐÍ¡£NUMBERÊǼ´¿ÉÕûÐÍÓֿɸ¡µãµÄ»ìºÏÀàÐÍ£¬Õâ¶ÔÓÚÄÇЩÔÚ±à³ÌÖв¢²»ÐèÒªÔÚºõÄÄÖÖÊý×ÖÀàÐÍ´æ´¢ÊǷdz£ÓÐÓõġ£NUMBERµÄÁ½ÖÖÀàÐÍÖ®Ò»Ö¸¶¨ÀàÐÍÈçÏÂËùʾ£º
(slot age
(type INTEGER FLOAT) (default 80)))
ÔÙ¼û
ͨ³££¬Ò»¸öÓÐN¸ö²ÛµÄ×Ô¶¨ÒåÄ£°åµÄÒ»°ã½á¹¹ÈçÏÂËùʾ£º
(deftemplate
(slot-N))
ÔÚÒ»¸ö×Ô¶¨ÒåÄ£°åÖУ¬ÊôÐÔÖµÒ»°ã±»Ö¸¶¨¾«È·µÄÖµ£¬¶ø²»ÊǼòµ¥µÄÈç80»òrich¡£¾Ù¸öÀý×Ó£¬ÔÚÕâ¸ö×Ô¶¨ÒåÄ£°åÖУ¬Ò»¸öÖµÀàÐͱ»Ö¸¶¨¡£
×Ö¶ÎÖµ¿ÉÒÔ±»ÏÔʽÉùÃ÷£¬Ò²¿ÉÒÔ¸ø³öÒ»¸öÖµµÄ·¶Î§¡£allowed-values¿ÉÒÔÊÇÈÎÒâµÄÔʼÀàÐÍ£¬Èç×Ö·û(SYMBOL)£¬×Ö·û´®(STRING),ÕûÐÍ(INTEGER)£¬¸¡µãÐÍ(FLOAT)µÈ¡£¾ÙÀýÈçÏ£º
Deftemplate Enumerated Values Example
allowed-symbols rich filthy-rich loaded allowed-strings ¡°Dopey¡±¡°Dorky¡±¡°Dicky¡± allowed-numbers 1 2 3 4.5 -2.001 1.3e-4 allowed-integers -100 53
allowed-floats -2.3 1.0 300.00056
allowed-values ¡°Dopey¡± rich 99 1.e9
¶ÔÓÚͬһ¸ö×Ô¶¨ÒåÄ£°å×ֶΣ¬Í¬Ê±Ö¸¶¨ÆäÊý×Ö·¶Î§ºÍÔÊÐíÖµÊÇÐв»Í¨µÄ¡£¾Ù¸öÀý×Ó£¬Èç¹ûÄãÖ¸¶¨(allowed-integer 1 4 8)£¬ÕâÓëÊýÖµ·¶Î§1µ½10µÄ(range 1 10)ÊÇì¶ÜµÄ¡£Èç¹ûһЩÊý×ÖÅöÇÉÊÇÁ¬ÐøµÄ£¬Èç1£¬2£¬3£¬ÄÇôÄã¿ÉÒÔÖ¸¶¨Ò»¸ö·¶Î§(range 1 3)¿ÉÒÔ¾«È·Æ¥Å䡣Ȼ¶ø£¬Õâ¸ö·¶Î§¶ÔÓÚallowed-integersÀ´ËµÊǶàÓàµÄÁË¡£Òò´Ë£¬·¶Î§ºÍÔÊÐíÖµÊÇ»¥³âµÄ£¬µ±ÄãÖ¸¶¨ÁËÒ»¸ö·¶Î§Ê±¾Í²»ÄÜÖ¸¶¨ÔÊÐíÖµ£¬·´Ö®ÒàÈ»¡£Í¨³££¬·¶Î§ÊôÐÔ²»Äܱ»ÓÃÀ´Óëallowed-values£¬allowed-numbers£¬allowed-integer»òallowed-floatsÁ¬½Ó¡£
È¥µô¿ÉÑ¡ÐÅÏ¢£¬Ò»¸ö¹æÔòʹÓõ½×Ô¶¨ÒåÄ£°åÈçÏÂËùʾ£º
CLIPS>(clear) CLIPS>
(deftemplate prospect ; ×Ô¶¨ÒåÄ£°åÃû
(slot name ; ×Ö¶ÎÃû
(default ?DERIVE)) ; ×Ö¶ÎnameµÄĬÈÏÖµ
(slot assets
(default rich)) (slot age
(default 80))) CLIPS>
(defrule matrimonial_candidate
(prospect (name ?name)(asset ?net_worth)(age ?months)) =>
(printout t ¡°Prospect: ¡±?name crlf
?net_worth crlf)
?months ¡°months old¡± crlf))
CLIPS>(assert (prospect (name ¡°Dopey Wonderful¡±)(age 99)))
Prospect: Dopey Wonderful rich
99 months old CLIPS>
×¢ÒâÔÚÉùÃ÷ÊÂʵµÄÃüÁîÖУ¬²¢Ã»ÓÐÖ¸¶¨richµÄÖµ£¬µ«ÊÇ£¬richµÄĬÈÏÖµ»¹ÊDZ»ÓÃÔÚDopeyÉÏÁË¡£
Èç¹ûassets×ֶα»Ö¸¶¨ÖµÎªpoor£¬ÄÇô£¬Ö¸¶¨Öµpoor»áÖØÔØassetsµÄĬÈÏÖµrich¡£ÈçÏÂÊÇÒ»¸ö¹ØÓÚDopeyÄÇÁߨĵÄÖ¶×ÓµÄÀý×Ó£º
CLIPS>(reset)
CLIPS>(assert (prospect (name ¡°Dopey Notwonderful¡±) (assets poor)(age 95)))
Prospect: ¡°Dopey Notwonderful¡± Poor
95 months old CLIPS>
×Ô¶¨ÒåÄ£°åµÄģʽ¿ÉÒÔÏñÈÎÒâÆÕͨģʽһÑùʹÓ᣾ٸöÀý×Ó£¬ÏÂÃæµÄ¹æÔòÓÃÀ´Ïû³ý²»ÊÜ»¶ÓµÄ¶ÔÏó¡£
CLIPS>(undefrule matrimonial_candidate) CLIPS>(defrule bye-bye
?bad-prospect <- (prospect (assets poor)(name ?name)) =>
(retract ?bad-prospect)
(printout t ¡°bye-bye¡± ?name crlf)) CLIPS>(reset)
CLIPS>(assert (prospect (name ¡°Dopey Wonderful¡±)(assets rich)))
CLIPS>(assert (prospect (name ¡°Dopey Notwonderful¡±)(assets poor)))
bye-bye Dopey Notwonderful CLIPS>
¶à²ÛµÄʹÓÃ
Æù½ñΪֹÎÒÃÇ»¹Ö»ÊÇÔÚģʽÖÐÓ¦Óùýµ¥×ֶΣ¬ÉÏÃæµÄname£¬assetsºÍage×Ö¶ÎÖµ¾ùÊǵ¥Öµ¡£ÔÚÐí¶àÀàÐ͵ĹæÔòÖУ¬ÄãÒ²Ðí»áÒªÓõ½¶à×ֶΡ£×Ô¶¨ÒåÄ£°åÔÊÐíÔÚÒ»¸ö¶à²ÛÖÐʹÓõ½¶à²ÛÖµ¡£
×÷Ϊһ¸ö¶à²ÛµÄÀý×Ó£¬¼ÙÉèÄãÏ뽫¹ØÏµprospectµÄnameд³É¶à×ֶΣ¬Õ⽫ÔÚ´¦ÀíprospectsµÄname²¿·ÖÆ¥ÅäÉÏÓкܴóµÄÁé»îÐÔ¡£ÏÂÃæÊDzÉÓÃÁ˶à²ÛºÍ¸Ä½ø¶à×ֶβ¿·ÖÆ¥ÅäµÄ×Ô¶¨ÒåÄ£°åµÄ¶¨Òå¡£×¢ÒâÆäÖеĶà²Ûģʽ$?name£¬ÏÖÔÚ±»ÓÃÀ´ÓëËùÓÐ×é³ÉnameµÄ×Ö¶ÎÆ¥Å䡣ΪÁË·½±ãÆð¼û£¬Í¬Ê±¸ø³öÒ»¸ö×Ô¶¨ÒåÊÂʵ(deffacts)¡£
CLIPS>(clear)
CLIPS>(deftemplate prospect) (multislot name
(type SYMBOL)
(default ?DERIVE))
(slot assets
(type SYMBOL)
(allowed-symbols poor rich wealthy loaded) (default rich))
(slot age
(type INTEGER)
(range 80 ?VARIABLE) ; Ô½ÀÏÔ½ºÃ (default 80)))
CLIPS>(defrule happy_relationship
(prospect (name $?name)(assets ?net_worth)(age ?months)) =>
(printout t ¡°Prospect: ¡±?name crlf
?net_worth crlf
?months¡± moths old¡± crlf))
CLIPS>(deffacts duck-bachelor
(prospect (name Dopey Wonderful)(assets rich)(age 99))) CLIPS>(reset) CLIPS>(run)
Prospect: (Dopey Wonderful) rich
99 months old CLIPS>
ÔÚÊä³öÖУ¬DopeyµÄÃû×Ö±»°üº¬ÔÚÔ²À¨ºÅÀÕâ±íÃ÷ÁËÕâÊÇÒ»¸ö¶à²ÛÖµ¡£Èç¹ûÄ㽫¶à²ÛÓëµ¥²Û×ö±È½Ï£¬Äã»á·¢ÏÖË«ÒýºÅ²»¼ûÁË¡£ÔÚ¶à²ÛÖУ¬name²Û²¢²»ÊÇÒ»¸ö×Ö·û´®£¬CLIPS½«name×öΪÁ½¸öµ¥¶ÀµÄ×Ö¶ÎDopeyºÍWonderfulÀ´¿´¡£
ÐÞ¸Ä×ֶβÛÖµ
×Ô¶¨ÒåÄ£°å´ó´óµÄ·½±ãÁ˶ÔģʽÖÐÖ¸¶¨×ֶεķÃÎÊ£¬ÒòΪÆÚÍû×Ö¶ÎÄܱ»ËüµÄ²ÛÃûËù±ê¶¨¡£¿ÉÒÔÀûÓÃÐÞ¸Ä(modify)ÐÐΪÐÞ¸ÄÖ¸¶¨µÄ×Ô¶¨ÒåÄ£°åÖеIJÛÀ´³·Ïú²¢Ôö¼ÓÒ»¸öÐÂÊÂʵ¡£
×÷Ϊһ¸öÀý×Ó£¬¿´¿´µ±µ¥ÉíѼ×ÓDopey WonderfulʧȥÁËËüËùÓеÄÓ㣬´ÓDonaldѼÄÇÀïΪËüµÄĸѼÂòЩÏ㽶ʲôµÄ£¬ÏÂÃæµÄ¹æÔòÄÜÖ´ÐÐʲô¡£
CLIPS>(undefrule *) CLIPS>
(defrule make-bad-buys
?prospect <- (prospect (name $?name)
(assets rich) (age ?months))
=>
(printout t ¡°Prospect: ¡±?name crlf
¡°rich¡± crlf)
?months ¡° months old¡± crlf crlf)
(modify ?prospect (assets poor))) CLIPS>
(defrule poor-prospect
?prospect <- (prospect (name $?name)
(assets poor) (age ?months))
=>
(printout t ¡°Ex-prospect: ¡±?name crlf
Poor crlf
?months ¡° months old¡± crlf crlf))
CLIPS>(deffacts duck-bachelor
(prospect (name Dopey Wonderful)(asset rich)(age 99))) CLIPS>(reset) CLIPS>(run)
Prospect: (Dopey Wonderful) rich
99 months old