popovIliya

wheather forecast in jess extended version

Nov 17th, 2021
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.49 KB | None | 0 0
  1. ;;;========================================================
  2. ;;;    Илия Попов ИСТ-2 ФК202514******
  3. ;;;    Контролно; условие: Да се напише експертна система,
  4. ;;;    коятo определя какво ще е времето.
  5. ;;;    Като може да се въвежда времето от конзолата.
  6. ;;;    Предложеното решение е подходящо за времева прогноза
  7. ;;;========================================================
  8.  
  9. ;;****************
  10. ;;* DEFFUNCTIONS *
  11. ;;****************
  12.  
  13. (deffunction hardware(?model ?serial)
  14.     return ""
  15. )
  16.  
  17. (deffunction sensors-connection(?hardware)
  18.     (if (neq ?hardware "") then
  19.        ;(printout t "Hardware found! " crlf)
  20.         return "Hardware found!"
  21.         else
  22.         ;(printout t "No hardware found! " crlf)
  23.         return "No hardware found!"
  24.         )
  25.     )
  26.  
  27. (deffunction min-temp(?value)
  28.     return ?value
  29. )
  30.  
  31. (deffunction max-temp(?value)
  32.     return ?value
  33. )
  34. (deffunction humidity(?value)
  35.     return ?value
  36.     )
  37. (deffunction sensors-read-data()
  38.     (if (eq sensors-connection TRUE) then
  39.        ; TO DO return temp and humidity
  40.        else
  41.         return "NO DATA"
  42.       )
  43. )
  44.  
  45. (deffunction ask-user()
  46.     (printout t "Какво е времето? ")
  47.     (bind ?enter  (read))
  48.     (if (neq ?enter "")then
  49.         (bind ?enter (lowcase ?enter))
  50.         )
  51.     return ?enter  
  52. )
  53.  
  54.  
  55.  
  56. ;;****************
  57. ;;* deftemplate  *
  58. ;;****************
  59.  
  60. (deftemplate hardware-sensor "Знания относно хардуерния сензор"
  61.     (slot sensor-info)
  62.     (slot status)
  63.     (multislot data);temp and humidity
  64.     )
  65. (assert (hardware-sensor(sensor-info (hardware "" ""))(status (sensors-connection (hardware "" "")))))
  66.  
  67. (deftemplate user-answer "Знания за времето веведени от потребител"
  68.     (slot answer)
  69.     )
  70.  
  71. (deftemplate weather-conditions "Знания относно времевите състояния"
  72.     (slot sunny)
  73.     (slot cold)
  74.     (slot wet)
  75.     (slot foggy)
  76.     (slot frozen)
  77. )
  78. (assert (weather-conditions (sunny слънчево)
  79.         (cold студено)
  80.         (wet дъждовно)
  81.         (foggy мъгливо)
  82.         (frozen замръзнало)))
  83.  
  84. (deftemplate weather-forecast "Крайна прогноза за времето"
  85.     (slot season (default ""))
  86.     (slot conditions (default ""))
  87.     (slot min-temp (default 0))
  88.     (slot max-temp (default 1))
  89.     (slot humidity (default 2)); влажност
  90.     (multislot information)
  91.     )
  92.  
  93. ;;****************
  94. ;;* defrule      *
  95. ;;****************
  96.  
  97. (defrule read-value
  98.    (hardware-sensor(status ?s&"Hardware found!"|"No hardware found!"))
  99.     =>
  100.     (if (= ?s "Hardware found!")
  101.         then
  102.         (assert (hardware-sensor(data (sensors-read-data))))
  103.         else
  104.         (printout t "Статус на хардуерното устройство за метерологични данни: " ?s crlf)
  105.         (printout t "Тъй като устройството не e налично ще питам Вас " crlf)
  106.         (assert (user-answer (answer (ask-user))))
  107.      )  
  108. )
  109.  
  110. (defrule weather-is-sunny
  111.    (user-answer (answer ?a))(weather-conditions (sunny ?s))
  112.     (test (= ?a ?s))
  113.      =>
  114.     (assert (weather-forecast (information Времето е топло и  ?s)))
  115.     )
  116.  
  117. (defrule weather-is-cold
  118.    (user-answer (answer ?a))(weather-conditions (cold ?c))
  119.     (test (= ?a ?c))
  120.      =>
  121.    (assert (weather-forecast(information Времето е  ?c  и може да вали сняг)))
  122.     )
  123.  
  124. (defrule weather-is-wet
  125.     (user-answer (answer ?a))(weather-conditions (wet ?w))
  126.     (test (= ?a ?w))
  127.      =>
  128.    (assert (weather-forecast (information Времето е  ?w  и може да вали)))
  129.     )
  130.  
  131. (defrule weather-is-foggy
  132.    (user-answer (answer ?a))(weather-conditions (foggy ?f))
  133.     (test (= ?a ?f))
  134.      =>
  135.     (printout t ?a ?f)
  136.     (assert (weather-forecast (information Времето е  ?f  и може да вали дъжд или сняг)))
  137.     )
  138.  
  139. (defrule weather-is-frozen
  140.   (user-answer (answer ?a))(weather-conditions (frozen ?f))
  141.      (test (= ?a ?f))
  142.      =>
  143.     (assert (weather-forecast (information Времето е много студено и навън всичко е  ?f)))    
  144. )
  145.  
  146. (defrule ready-answer
  147.     (weather-forecast(information $?i))
  148.     =>
  149.     (printout t $?i)
  150.     )
  151.            
  152. (run)
  153. (facts)
Advertisement
Add Comment
Please, Sign In to add comment