Advertisement
Adytzu04

SBCX proiect EII

Mar 24th, 2015
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. ;(deftemplate <Spatiu_depozitare
  2. ; {zona}
  3. ; <<<sub_zona>>>
  4. ; <<container>>
  5. ;)
  6.  
  7. (deftemplate Spatiu_depozitare
  8. (field zona (type SYMBOL)(allowed-symbols k1 k2 k3))
  9. (field sub_zona (type SYMBOL)(allowed-symbols a b c))
  10. (multifield container (type SYMBOL)(allowed-symbols c1 c2 c4))
  11. )
  12.  
  13. (deffacts init
  14. ;conditii zone adiacente (adiacent ?zona1 ?zona2)
  15. (adiacent k1 k2)
  16. (adiacent k2 k1)
  17. (adiacent k2 k3)
  18. (adiacent k3 k2)
  19.  
  20. ;(Spatiu_depozitare {zona} <<<sub_zona>>> <<container>>)
  21. (Spatiu_depozitare (zona k1) (sub_zona a) (container c1))
  22. (Spatiu_depozitare (zona k1) (sub_zona b) (container))
  23. ;(Spatiu_depozitare (zona k1) (sub_zona a) (container c1 c4))
  24.  
  25. ;(se_afla <masina> <parcare> <zona> {ocupat,liber} <container>)
  26. ;(se_afla m1 p1 k1 liber c1)
  27. (se_afla m1 p3 k3 ocupat c1)
  28. (se_afla m2 p2 k2 liber c)
  29.  
  30. ;parcare (parcare ?nume ?zona {ocupat,liber})
  31. (parcare p1 k1 liber)
  32. (parcare p2 k2 ocupat)
  33. (parcare p3 k3 ocupat)
  34. )
  35.  
  36. (deffacts scopuri
  37. ;scop(muta ?sursa ?subzona)
  38. ;(muta c1 b) ;test scop
  39.  
  40. ;(deplasare ?masina ?zona1 ?parcare1 ?zona2 ?parcare2)
  41. ;(deplasare m1 k1 p1 k2 p2)
  42. (deplasare m1 k3 p3 k2 p2)
  43. )
  44.  
  45. ;Daca scopul este de a muta containerul ?sursa pe ?subzona si containerul ?sursa este liber, atunci containerul ?sursa pe ?subzona
  46. (defrule R1 "muta containerul de pe o subzona in alta subzona"
  47. ?scop <- (muta ?sursa ?subzona)
  48. ?a1 <- (Spatiu_depozitare (zona ?k) (sub_zona ?sb1) (container ?sursa))
  49. ?a2 <- (Spatiu_depozitare (zona ?k) (sub_zona ?subzona) (container $?c))
  50.  
  51. =>
  52. (retract ?scop ?a1 ?a2)
  53. (assert (Spatiu_depozitare (zona ?k) (sub_zona ?subzona) (container ?sursa))
  54. (Spatiu_depozitare (zona ?k) (sub_zona ?sb1) (container ?c))
  55. )
  56. (printout t "containerul " ?sursa " este mutat in subzona "?subzona " din zona " ?k crlf)
  57. )
  58.  
  59. (defrule R2 "deplasare masina dintr-o zona in alta"
  60. ;(deplasare ?masina ?zona1 ?parcare1 ?zona2 ?parcare2)
  61. ?scop <- (deplasare ?m ?z1 ?p1 ?z2 ?p2)
  62. ?a1 <-(parcare ?p1 ?z1 ?starep)
  63. ?a2 <-(parcare ?p2 ?z2 ~?starep)
  64.  
  65. ;(se_afla <masina> <parcare> <zona> {ocupat,liber} <container>)
  66. ?a3 <-(se_afla ?m ?p1 ?z1 ?starem ?c)
  67.  
  68. ;verific adiacenta zonelor
  69. (adiacent ?z1 ?z2)
  70. (adiacent ?z2 ?z1)
  71.  
  72. =>
  73. (retract ?scop ?a1 ?a2 ?a3)
  74. (assert
  75. (parcare ?p1 ?z1 liber)
  76. (parcare ?p2 ?z2 ?starep)
  77. (se_afla ?m ?p2 ?z2 ?starem ?c)
  78. )
  79. (printout t "masina " ?m " s-a deplasat din parcarea "?p1 " din zona " ?z1 " in parcarea "?p2 " din zona "?z2 crlf)
  80. )
  81.  
  82. (defrule R3 "verificare pacari adiacente(daca sunt libere)"
  83. ?d <- (deplasare ?m ?z2 ?p2 ?z3 ?p3)
  84.  
  85. ?d1 <-(se_afla ?) ;(se_afla m1 p3 k3 ocupat c1)
  86. ?d2 <-(se_afla ) ;(se_afla m2 p2 k2 liber c)
  87.  
  88. ;parcari (parcare ?nume ?zona {ocupat,liber})
  89. ?scop <-(parcare ?p1 ?z1 ?starep2)
  90. ?scop2 <-(parcare ?p2 ?z2 ?starep)
  91. ?scop3 <-(parcare ?p3 ?z3 ?starep)
  92.  
  93. (adiacent ?z1 ?z2)
  94. (adiacent ?z2 ?z1)
  95.  
  96. (adiacent ?z2 ?z3)
  97. (adiacent ?z3 ?z2)
  98.  
  99. =>
  100. (retract ?scop ?scop2 ?scop3)
  101. (assert
  102. ;(parcare ?p1 ?z1 ?starep ) ;parcare (parcare ?nume ?zona {ocupat,liber})
  103. ;(parcare ?p2 ?z2 ?starep2 )
  104. ;(parcare ?p3 ?z3 ?starep )
  105. (deplasare ?m )
  106. )
  107.  
  108. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement