CLIPSÖÐÎÄÊÖ²á ÏÂÔØ±¾ÎÄ

? ×ֶεÄĬÈÏÖµ

¸Ã²¿·Ö×Ô¶¨ÒåÄ£°å°üº¬ÓÐÈý¸öµ¥²Û£¬·Ö±ðΪ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-1) (slot-2) ?

(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))) CLIPS>(run)

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)))

CLIPS>(run)

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))) CLIPS>(run)

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