Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;(deftemplate <Spatiu_depozitare
- ; {zona}
- ; <<<sub_zona>>>
- ; <<container>>
- ;)
- (deftemplate Spatiu_depozitare
- (field zona (type SYMBOL)(allowed-symbols k1 k2 k3))
- (field sub_zona (type SYMBOL)(allowed-symbols a b c))
- (multifield container (type SYMBOL)(allowed-symbols c1 c2 c4))
- )
- (deffacts init
- ;conditii zone adiacente (adiacent ?zona1 ?zona2)
- (adiacent k1 k2)
- (adiacent k2 k1)
- (adiacent k2 k3)
- (adiacent k3 k2)
- ;(Spatiu_depozitare {zona} <<<sub_zona>>> <<container>>)
- (Spatiu_depozitare (zona k1) (sub_zona a) (container c1))
- (Spatiu_depozitare (zona k1) (sub_zona b) (container))
- ;(Spatiu_depozitare (zona k1) (sub_zona a) (container c1 c4))
- ;(se_afla <masina> <parcare> <zona> {ocupat,liber} <container>)
- ;(se_afla m1 p1 k1 liber c1)
- (se_afla m1 p3 k3 ocupat c1)
- (se_afla m2 p2 k2 liber c)
- ;parcare (parcare ?nume ?zona {ocupat,liber})
- (parcare p1 k1 liber)
- (parcare p2 k2 ocupat)
- (parcare p3 k3 ocupat)
- )
- (deffacts scopuri
- ;scop(muta ?sursa ?subzona)
- ;(muta c1 b) ;test scop
- ;(deplasare ?masina ?zona1 ?parcare1 ?zona2 ?parcare2)
- ;(deplasare m1 k1 p1 k2 p2)
- (deplasare m1 k3 p3 k2 p2)
- )
- ;Daca scopul este de a muta containerul ?sursa pe ?subzona si containerul ?sursa este liber, atunci containerul ?sursa pe ?subzona
- (defrule R1 "muta containerul de pe o subzona in alta subzona"
- ?scop <- (muta ?sursa ?subzona)
- ?a1 <- (Spatiu_depozitare (zona ?k) (sub_zona ?sb1) (container ?sursa))
- ?a2 <- (Spatiu_depozitare (zona ?k) (sub_zona ?subzona) (container $?c))
- =>
- (retract ?scop ?a1 ?a2)
- (assert (Spatiu_depozitare (zona ?k) (sub_zona ?subzona) (container ?sursa))
- (Spatiu_depozitare (zona ?k) (sub_zona ?sb1) (container ?c))
- )
- (printout t "containerul " ?sursa " este mutat in subzona "?subzona " din zona " ?k crlf)
- )
- (defrule R2 "deplasare masina dintr-o zona in alta"
- ;(deplasare ?masina ?zona1 ?parcare1 ?zona2 ?parcare2)
- ?scop <- (deplasare ?m ?z1 ?p1 ?z2 ?p2)
- ?a1 <-(parcare ?p1 ?z1 ?starep)
- ?a2 <-(parcare ?p2 ?z2 ~?starep)
- ;(se_afla <masina> <parcare> <zona> {ocupat,liber} <container>)
- ?a3 <-(se_afla ?m ?p1 ?z1 ?starem ?c)
- ;verific adiacenta zonelor
- (adiacent ?z1 ?z2)
- (adiacent ?z2 ?z1)
- =>
- (retract ?scop ?a1 ?a2 ?a3)
- (assert
- (parcare ?p1 ?z1 liber)
- (parcare ?p2 ?z2 ?starep)
- (se_afla ?m ?p2 ?z2 ?starem ?c)
- )
- (printout t "masina " ?m " s-a deplasat din parcarea "?p1 " din zona " ?z1 " in parcarea "?p2 " din zona "?z2 crlf)
- )
- (defrule R3 "verificare pacari adiacente(daca sunt libere)"
- ?d <- (deplasare ?m ?z2 ?p2 ?z3 ?p3)
- ?d1 <-(se_afla ?) ;(se_afla m1 p3 k3 ocupat c1)
- ?d2 <-(se_afla ) ;(se_afla m2 p2 k2 liber c)
- ;parcari (parcare ?nume ?zona {ocupat,liber})
- ?scop <-(parcare ?p1 ?z1 ?starep2)
- ?scop2 <-(parcare ?p2 ?z2 ?starep)
- ?scop3 <-(parcare ?p3 ?z3 ?starep)
- (adiacent ?z1 ?z2)
- (adiacent ?z2 ?z1)
- (adiacent ?z2 ?z3)
- (adiacent ?z3 ?z2)
- =>
- (retract ?scop ?scop2 ?scop3)
- (assert
- ;(parcare ?p1 ?z1 ?starep ) ;parcare (parcare ?nume ?zona {ocupat,liber})
- ;(parcare ?p2 ?z2 ?starep2 )
- ;(parcare ?p3 ?z3 ?starep )
- (deplasare ?m )
- )
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement