Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:2009:miw09_xtt_clips [2009/08/25 20:00]
jsi08
pl:miw:2009:miw09_xtt_clips [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +~~ODT~~
 ====== MIW 2009 XTT_CLIPS ====== ====== MIW 2009 XTT_CLIPS ======
   *Zrealizował:​ [[mfabia@student.agh.edu.pl|Maciej Fabia]] (4RI)   *Zrealizował:​ [[mfabia@student.agh.edu.pl|Maciej Fabia]] (4RI)
Linia 9: Linia 10:
  
 ====== Sprawozdanie ====== ====== Sprawozdanie ======
-===== Przykłady systemów ekspertowych w CLIPS =====+===== 1. Przykłady systemów ekspertowych w CLIPS =====
 Aby uruchomić program w CLIPS, należy: Aby uruchomić program w CLIPS, należy:
   - otworzyć plik z rozszerzeniem "​clp",​   - otworzyć plik z rozszerzeniem "​clp",​
Linia 17: Linia 18:
 Jeśli uruchamiamy program ponownie, musimy wyczyścić listę faktów poleceniem Execution->​Reset. Jeśli uruchamiamy program ponownie, musimy wyczyścić listę faktów poleceniem Execution->​Reset.
  
-==== Prosty system wybierający metodę leczenia ====+==== 1.1. Prosty system wybierający metodę leczenia ====
  
 === Przeznaczenie === === Przeznaczenie ===
Linia 164: Linia 165:
 </​code>​ </​code>​
  
-==== Automotive Expert System ====+==== 1.2. Automotive Expert System ====
  
 === Przeznaczenie === === Przeznaczenie ===
Linia 191: Linia 192:
  
 W systemie zmodyfikowano priorytety reguł: W systemie zmodyfikowano priorytety reguł:
-  * podwyższony priorytet //​normal-engine-state-conclusions//​ i //​unsatisfactory-engine-state-conclusions//​ - +  * podwyższony priorytet //​normal-engine-state-conclusions//​ i //​unsatisfactory-engine-state-conclusions//​ - zapewniają wstawienie faktów związanych ze stanem silnika przed dalszą pracą,
-zapewniają wstawienie faktów związanych ze stanem silnika przed dalszą pracą,+
   * podwyższony priorytet //​system-banner//​ - wypisuje powitalny banner po uruchomieniu,​   * podwyższony priorytet //​system-banner//​ - wypisuje powitalny banner po uruchomieniu,​
   * podwyższony priorytet //​print-repair//​ - wypisuje po zakończeniu diagnostyki,​ co musimy naprawić,   * podwyższony priorytet //​print-repair//​ - wypisuje po zakończeniu diagnostyki,​ co musimy naprawić,
Linia 391: Linia 391:
 </​code>​ </​code>​
  
-==== Animal Identification Expert System ====+==== 1.3. Animal Identification Expert System ====
  
 === Przeznaczenie === === Przeznaczenie ===
Linia 427: Linia 427:
   * 40 pytań.   * 40 pytań.
  
-=== Kod programu ===+=== Kod programu ​(tylko silnik) ​===
 <​code>​ <​code>​
-;;;​====================================================== 
-;;;   ​Animal Identification Expert System 
-;;; 
-;;;     A simple expert system which attempts to identify 
-;;;     an animal based on its characteristics. 
-;;;     The knowledge base in this example is a  
-;;;     ​collection of facts which represent backward 
-;;;     ​chaining rules. CLIPS forward chaining rules are 
-;;;     then used to simulate a backward chaining inference 
-;;;     ​engine. 
-;;; 
-;;;     CLIPS Version 6.0 Example 
-;;;  
-;;;     To execute, merely load, reset, and run. 
-;;;     ​Answer questions yes or no. 
-;;;​====================================================== 
- 
-;;;​*************************** 
-;;;* DEFTEMPLATE DEFINITIONS * 
-;;;​*************************** 
  
 (deftemplate rule  (deftemplate rule 
Linia 522: Linia 502:
      else (assert (goal is ?​variable))))      else (assert (goal is ?​variable))))
  
-;;;​*************************** +</​code>​ 
-;;;* DEFFACTS KNOWLEDGE BASE + 
-;;;​***************************+===== 2. Modele ARD i XTT przykładów ===== 
 + 
 +Wykonałem schematy ARD oraz XTT systemów [[#​Automotive Expert System]] i [[#Animal Identification Expert System]] na podstawie [[hekate:​hekate_case_thermostat|termostatu]] i [[hekate:​ardplus|opisu teoretycznego]]. 
 +Korzystałem z narzędzi [[hekate:​varda|VARDA]] oraz [[hekate:​hqed|HQEd]]. 
 + 
 +==== Automotive Expert System ==== 
 + 
 +=== Schemat ARD === 
 +{{:​pl:​miw:​2009:​miw09_xtt_clips:​auto-ard.png|schemat ARD}} 
 + 
 +=== Schemat TPH === 
 +{{:​pl:​miw:​2009:​miw09_xtt_clips:​auto-tph.png|schemat TPH}} 
 + 
 +=== Schemat XTT === 
 +{{:​pl:​miw:​2009:​miw09_xtt_clips:​auto-xtt.png|schemat XTT}} 
 + 
 +==== Animal Identification Expert System ==== 
 + 
 +Ze względu na duże rozmiary schematy są na podstronie [[pl:​miw:​2009:​miw09_xtt_clips:​projekt|dodatkowa dokumentacja]]. 
 + 
 +==== Wnioski ==== 
 +Na schematach ARD widać, że poszukiwana wartość zależy bezpośrednio od dużej liczby atrybutów.  
 +Tymczasem w obu systemach dominują reguły o niewielkiej liczbie argumentów - np. system rozpoznawania  
 +zwierząt korzysta z reguł maksymalnie dwuargumentowych. 
 + 
 +Dzieje się tak, ponieważ prawie każda reguła  
 +służąca do szukania wartości finalnego atrybutu ma inny zestaw argumentów (atrybutów). Gdyby wszystkie  
 +reguły dawały się podzielić na kilka takich grup, że w każdej mielibyśmy (prawie) ten sam zestaw  
 +atrybutów odpowiednio po lewej (warunkowej) i prawej stronie, otrzymane schematy ARD 
 +byłyby znacznie prostsze.  
 + 
 +===== 3. Termostat w CLIPS ===== 
 +Stworzyłem model termostatu w języku CLIPS zgodnie z [[hekate:​hekate_case_thermostat]].  
 + 
 +==== Opis programu ==== 
 +  * Program korzysta z funkcji zapewniających pobranie i walidację danych 
 +    * //​ask-question//​ sprawdza, czy odpowiedź znajduje się na liście dozwolonych odpowiedzi i ewentualnie ponawia pytanie 
 +    * //​ask-number//​ sprawdza, czy podana liczba mieści się w wymaganym przedziale,​ 
 +  * pierwsze trzy reguły pobierają tylko dane od użytkownika,​ 
 +  * pozostałe reguły są odpowiednikami [[hekate:​hekate_case_thermostat#​Original Rules|opisów słownych]],​ 
 +  * aby porównać liczby (lub użyć dowolnej funkcji zwracającej wartości true/false) w części warunkowej reguły, konieczne było zastosowanie słowa kluczowego //test//. Do testu na pojedynczym polu dopasowywanego faktu można też użyć składni wykorzystującej znaki "​**&​**"​ i "​**:​**"​. 
 + 
 +==== Uruchamianie ==== 
 + 
 +Aby uruchomić program, należy otworzyć plik //​therm-clips.clp//​ w środowisku CLIPS, wybrać z menu  
 +Buffer->​Load Buffer, a następnie Execution->​Run. Po podaniu miesiąca, dnia tygodnia i godziny zostanie  
 +wyświetlona odpowiednia temperatura. Jeśli chcemy dodatkowo śledzić dodawanie wszystkich faktów podczas  
 +wykonywania,​ przed poleceniem Run należy wpisać w konsoli ''​(watch facts)''​. 
 + 
 +==== Kod programu ==== 
 + 
 +<​code>​ 
 +;;;************************************** 
 +;;;​Termostat 
 +;;;Maciej Fabia, MIW 2009 
 +;;;************************************** 
 + 
 +;;​**************** 
 +;;* DEFFUNCTIONS ​* 
 +;;**************** 
 + 
 +(deffunction ask-question (?question $?​allowed-values) 
 +   ​(printout t ?​question) 
 +   (bind ?answer (read)) 
 +   (if (lexemep ?answer)  
 +       then (bind ?answer (lowcase ?​answer))) 
 +   ​(while (not (member ?answer ?​allowed-values)) do 
 +      (printout t ?​question) 
 +      (bind ?answer (read)) 
 +      (if (lexemep ?answer)  
 +          then (bind ?answer (lowcase ?​answer)))) 
 +   ?​answer) 
 + 
 +(deffunction ask-number (?question ?​lower-limit ?​upper-limit) 
 +   ​(printout t ?​question) 
 +   (bind ?answer (read)) 
 +   ​(while (not (and (integerp ?answer) (>= ?answer ?​lower-limit) (<= ?answer ?​upper-limit))) do 
 +      (printout t ?​question) 
 +      (bind ?answer (read))) 
 +   ?​answer) 
 + 
 +;;************ 
 +;;* RULES    * 
 +;;​************ 
 + 
 +(defrule ask-month 
 +   (not (month ?)) 
 +=> 
 +   ​(assert (month (ask-number "Podaj miesiac, liczba 1-12: " 1 12)))) 
 + 
 +(defrule ask-day 
 +   (not (day ?)) 
 +=> 
 +   ​(assert (day (ask-question "Podaj dzien, mon/​tue/​wed/​thu/​fri/​sat/​san:​ " mon tue wed thu fri sat  
 + 
 +sun)))) 
 + 
 +(defrule ask-hour 
 +   (not (hour ?)) 
 +=> 
 +   ​(assert (hour (ask-number "Podaj godzine, liczba 0-23: " 0 23)))) 
 + 
 +(defrule season-is-winter 
 +   ​(month 1|2|12) 
 +   (not (season ?)) 
 +=> 
 +   ​(assert (season winter))) 
 + 
 +(defrule season-is-spring 
 +   ​(month 3|4|5) 
 +   (not (season ?)) 
 +=> 
 +   ​(assert (season spring))) 
 + 
 +(defrule season-is-summer 
 +   ​(month 6|7|8) 
 +   (not (season ?)) 
 +=> 
 +   ​(assert (season summer))) 
 + 
 +(defrule season-is-fall 
 +   ​(month 9|10|11) 
 +   (not (season ?)) 
 +=> 
 +   ​(assert (season fall))) 
 + 
 +(defrule today-is-workday 
 +   (day mon|tue|wed|thu|fri) 
 +   (not (today ?)) 
 +=> 
 +   ​(assert (today workday))) 
 + 
 +(defrule today-is-weekend 
 +   (day sat|sun) 
 +   (not (today ?)) 
 +=> 
 +   ​(assert (today weekend))) 
 + 
 +(defrule business-hours 
 +   (not (business-hours ?)) 
 +   ​(today workday) 
 +   (hour ?hour) 
 +   (test (and (>= ?hour 9) (<= ?hour 17))) 
 +=> 
 +   ​(assert (business-hours yes))) 
 + 
 +(defrule not-business-hours-too-early 
 +   (not (business-hours ?)) 
 +   ​(today workday) 
 +   (hour ?hour) 
 +   (test (< ?hour 9)) 
 +=> 
 +   ​(assert (business-hours no))) 
 + 
 +(defrule not-business-hours-too-late 
 +   (not (business-hours ?)) 
 +   ​(today workday) 
 +   (hour ?hour) 
 +   (test (> ?hour 17)) 
 +=> 
 +   ​(assert (business-hours no))) 
 + 
 +(defrule not-business-hours-weekend 
 +   (not (business-hours ?)) 
 +   ​(today weekend) 
 +=> 
 +   ​(assert (business-hours no))) 
 + 
 +(defrule summer-free-time 
 +   (not (setting ?)) 
 +   ​(season summer) 
 +   ​(business-hours no) 
 +=> 
 +   ​(assert (setting 27))) 
 + 
 +(defrule summer-business 
 +   (not (setting ?)) 
 +   ​(season summer) 
 +   ​(business-hours yes) 
 +=> 
 +   ​(assert (setting 24))) 
 + 
 +(defrule spring-free-time 
 +   (not (setting ?)) 
 +   ​(season spring) 
 +   ​(business-hours no) 
 +=> 
 +   ​(assert (setting 15))) 
 + 
 +(defrule spring-business 
 +   (not (setting ?)) 
 +   ​(season spring) 
 +   ​(business-hours yes) 
 +=> 
 +   ​(assert (setting 20))) 
 + 
 +(defrule winter-free-time 
 +   (not (setting ?)) 
 +   ​(season winter) 
 +   ​(business-hours no) 
 +=> 
 +   ​(assert (setting 14))) 
 + 
 +(defrule winter-business 
 +   (not (setting ?)) 
 +   ​(season winter) 
 +   ​(business-hours yes) 
 +=> 
 +   ​(assert (setting 18))) 
 + 
 +(defrule fall-free-time 
 +   (not (setting ?)) 
 +   ​(season fall) 
 +   ​(business-hours no) 
 +=> 
 +   ​(assert (setting 16))) 
 + 
 +(defrule fall-business 
 +   (not (setting ?)) 
 +   ​(season fall) 
 +   ​(business-hours yes) 
 +=> 
 +   ​(assert (setting 20))) 
 + 
 +(defrule Answer 
 +   ​(setting ?setting) 
 +=> 
 +   ​(printout t "Set thermostat to " ?setting " degrees"​ crlf))
  
-(deffacts knowledge-base ​ 
-   (goal is type.animal) 
-   ​(legalanswers are yes no) 
-   (rule (if backbone is yes)  
-         (then superphylum is backbone)) 
-   (rule (if backbone is no)  
-         (then superphylum is jellyback)) 
-   ​(question backbone is "Does your animal have a backbone?"​) 
-   (rule (if superphylum is backbone and 
-          warm.blooded is yes)  
-         (then phylum is warm)) 
-   (rule (if superphylum is backbone and 
-          warm.blooded is no)  
-         (then phylum is cold)) 
-   ​(question warm.blooded is "Is the animal warm blooded?"​) 
-   (rule (if superphylum is jellyback and 
-          live.prime.in.soil is yes)  
-         (then phylum is soil)) 
-   (rule (if superphylum is jellyback and 
-          live.prime.in.soil is no)  
-         (then phylum is elsewhere)) 
-   ​(question live.prime.in.soil is "Does your animal live primarily in soil?"​) 
-   (rule (if phylum is warm and 
-          has.breasts is yes)  
-         (then class is breasts)) 
-   (rule (if phylum is warm and 
-          has.breasts is no)  
-         (then type.animal is bird/​penguin)) 
-   ​(question has.breasts is "​Normally,​ does the female of your animal nurse its young with milk?"​) 
-   (rule (if phylum is cold and 
-          always.in.water is yes)  
-         (then class is water)) 
-   (rule (if phylum is cold and 
-          always.in.water is no)  
-         (then class is dry)) 
-   ​(question always.in.water is "Is your animal always in water?"​) 
-   (rule (if phylum is soil and 
-          flat.bodied is yes)  
-         (then type.animal is flatworm)) 
-   (rule (if phylum is soil and 
-          flat.bodied is no)  
-         (then type.animal is worm/​leech)) 
-   ​(question flat.bodied is "Does your animal have a flat body?"​) 
-   (rule (if phylum is elsewhere and 
-          body.in.segments is yes)  
-         (then class is segments)) 
-   (rule (if phylum is elsewhere and 
-          body.in.segments is no)  
-         (then class is unified)) 
-   ​(question body.in.segments is "Is the animals body in segments?"​) 
-   (rule (if class is breasts and 
-          can.eat.meat is yes)  
-         (then order is meat)) 
-   (rule (if class is breasts and 
-          can.eat.meat is no)  
-         (then order is vegy)) 
-   ​(question can.eat.meat is "Does your animal eat red meat?"​) 
-   (rule (if class is water and 
-          boney is yes)  
-         (then type.animal is fish)) 
-   (rule (if class is water and 
-          boney is no)  
-         (then type.animal is shark/ray)) 
-   ​(question boney is "Does your animal have a boney skeleton?"​) 
-   (rule (if class is dry and 
-          scally is yes)  
-         (then order is scales)) 
-   (rule (if class is dry and 
-          scally is no)  
-         (then order is soft)) 
-   ​(question scally is "Is your animal covered with scaled skin?"​) 
-   (rule (if class is segments and 
-          shell is yes)  
-         (then order is shell)) 
-   (rule (if class is segments and 
-          shell is no)  
-         (then type.animal is centipede/​millipede/​insect)) 
-   ​(question shell is "Does your animal have a shell?"​) 
-   (rule (if class is unified and 
-          digest.cells is yes)  
-         (then order is cells)) 
-   (rule (if class is unified and 
-          digest.cells is no)  
-         (then order is stomach)) 
-   ​(question digest.cells is "Does your animal use many cells to digest it's food instead of a stomach?"​) 
-   (rule (if order is meat and 
-          fly is yes)  
-         (then type.animal is bat)) 
-   (rule (if order is meat and 
-          fly is no)  
-         (then family is nowings)) 
-   ​(question fly is "Can your animal fly?") 
-   (rule (if order is vegy and 
-          hooves is yes)  
-         (then family is hooves)) 
-   (rule (if order is vegy and 
-          hooves is no)  
-         (then family is feet)) 
-   ​(question hooves is "Does your animal have hooves?"​) 
-   (rule (if order is scales and 
-          rounded.shell is yes)  
-         (then type.animal is turtle)) 
-   (rule (if order is scales and 
-          rounded.shell is no)  
-         (then family is noshell)) 
-   ​(question rounded.shell is "Does the animal have a rounded shell?"​) 
-   (rule (if order is soft and 
-          jump is yes)  
-         (then type.animal is frog)) 
-   (rule (if order is soft and 
-          jump is no)  
-         (then type.animal is salamander)) 
-   ​(question jump is "Does your animal jump?"​) 
-   (rule (if order is shell and 
-          tail is yes)  
-         (then type.animal is lobster)) 
-   (rule (if order is shell and 
-          tail is no)  
-         (then type.animal is crab)) 
-   ​(question tail is "Does your animal have a tail?"​) 
-   (rule (if order is cells and 
-          stationary is yes)  
-         (then family is stationary)) 
-   (rule (if order is cells and 
-          stationary is no)  
-         (then type.animal is jellyfish)) 
-   ​(question stationary is "Is your animal attached permanently to an object?"​) 
-   (rule (if order is stomach and 
-          multicelled is yes)  
-         (then family is multicelled)) 
-   (rule (if order is stomach and 
-          multicelled is no)  
-         (then type.animal is protozoa)) 
-   ​(question multicelled is "Is your animal made up of more than one cell?"​) 
-   (rule (if family is nowings and 
-          opposing.thumb is yes)  
-         (then genus is thumb)) 
-   (rule (if family is nowings and 
-          opposing.thumb is no)  
-         (then genus is nothumb)) 
-   ​(question opposing.thumb is "Does your animal have an opposing thumb?"​) 
-   (rule (if family is hooves and 
-          two.toes is yes)  
-         (then genus is twotoes)) 
-   (rule (if family is hooves and 
-          two.toes is no)  
-         (then genus is onetoe)) 
-   ​(question two.toes is "Does your animal stand on two toes/hooves per foot?"​) 
-   (rule (if family is feet and 
-          live.in.water is yes)  
-         (then genus is water)) 
-   (rule (if family is feet and 
-          live.in.water is no)  
-         (then genus is dry)) 
-   ​(question live.in.water is "Does your animal live in water?"​) 
-   (rule (if family is noshell and 
-          limbs is yes)  
-         (then type.animal is crocodile/​alligator)) 
-   (rule (if family is noshell and 
-          limbs is no)  
-         (then type.animal is snake)) 
-   ​(question limbs is "Does your animal have limbs?"​) 
-   (rule (if family is stationary and 
-          spikes is yes)  
-         (then type.animal is sea.anemone)) 
-   (rule (if family is stationary and 
-          spikes is no)  
-         (then type.animal is coral/​sponge)) 
-   ​(question spikes is "Does your animal normally have spikes radiating from it's body?"​) 
-   (rule (if family is multicelled and 
-          spiral.shell is yes)  
-         (then type.animal is snail)) 
-   (rule (if family is multicelled and 
-          spiral.shell is no)  
-         (then genus is noshell)) 
-   ​(question spiral.shell is "Does your animal have a spiral-shaped shell?"​) 
-   (rule (if genus is thumb and 
-          prehensile.tail is yes)  
-         (then type.animal is monkey)) 
-   (rule (if genus is thumb and 
-          prehensile.tail is no)  
-         (then species is notail)) 
-   ​(question prehensile.tail is "Does your animal have a prehensile tail?"​) 
-   (rule (if genus is nothumb and 
-          over.400 is yes)  
-         (then species is 400)) 
-   (rule (if genus is nothumb and 
-          over.400 is no)  
-         (then species is under400)) 
-   ​(question over.400 is "Does an adult normally weigh over 400 pounds?"​) 
-   (rule (if genus is twotoes and 
-          horns is yes)  
-         (then species is horns)) 
-   (rule (if genus is twotoes and 
-          horns is no)  
-         (then species is nohorns)) 
-   ​(question horns is "Does your animal have horns?"​) 
-   (rule (if genus is onetoe and 
-          plating is yes)  
-         (then type.animal is rhinoceros)) 
-   (rule (if genus is onetoe and 
-          plating is no)  
-         (then type.animal is horse/​zebra)) 
-   ​(question plating is "Is your animal covered with a protective plating?"​) 
-   (rule (if genus is water and 
-          hunted is yes)  
-         (then type.animal is whale)) 
-   (rule (if genus is water and 
-          hunted is no)  
-         (then type.animal is dolphin/​porpoise)) 
-   ​(question hunted is "Is your animal, unfortunately,​ commercially hunted?"​) 
-   (rule (if genus is dry and 
-          front.teeth is yes)  
-         (then species is teeth)) 
-   (rule (if genus is dry and 
-          front.teeth is no)  
-         (then species is noteeth)) 
-   ​(question front.teeth is "Does your animal have large front teeth?"​) 
-   (rule (if genus is noshell and 
-          bivalve is yes)  
-         (then type.animal is clam/​oyster)) 
-   (rule (if genus is noshell and 
-          bivalve is no)  
-         (then type.animal is squid/​octopus)) 
-   ​(question bivalve is "Is your animal protected by two half-shells?"​) 
-   (rule (if species is notail and 
-          nearly.hairless is yes)  
-         (then type.animal is man)) 
-   (rule (if species is notail and 
-          nearly.hairless is no)  
-         (then subspecies is hair)) 
-   ​(question nearly.hairless is "Is your animal nearly hairless?"​) 
-   (rule (if species is 400 and 
-          land.based is yes)  
-         (then type.animal is bear/​tiger/​lion)) 
-   (rule (if species is 400 and 
-          land.based is no)  
-         (then type.animal is walrus)) 
-   ​(question land.based is "Is your animal land based?"​) 
-   (rule (if species is under400 and 
-          thintail is yes)  
-         (then type.animal is cat)) 
-   (rule (if species is under400 and 
-          thintail is no)  
-         (then type.animal is coyote/​wolf/​fox/​dog)) 
-   ​(question thintail is "Does your animal have a thin tail?"​) 
-   (rule (if species is horns and 
-          one.horn is yes)  
-         (then type.animal is hippopotamus)) 
-   (rule (if species is horns and 
-          one.horn is no)  
-         (then subspecies is nohorn)) 
-   ​(question one.horn is "Does your animal have one horn?"​) 
-   (rule (if species is nohorns and 
-          lives.in.desert is yes)  
-         (then type.animal is camel)) 
-   (rule (if species is nohorns and 
-          lives.in.desert is no)  
-         (then type.animal is giraffe)) 
-   ​(question lives.in.desert is "Does your animal normally live in the desert?"​) 
-   (rule (if species is teeth and 
-          large.ears is yes)  
-         (then type.animal is rabbit)) 
-   (rule (if species is teeth and 
-          large.ears is no the type.animal is rat/​mouse/​squirrel/​beaver/​porcupine)) 
-   ​(question large.ears is "Does your animal have large ears?"​) 
-   (rule (if species is noteeth and 
-          pouch is yes)  
-         (then type.animal is "​kangaroo/​koala bear"​)) 
-   (rule (if species is noteeth and 
-          pouch is no)  
-         (then type.animal is mole/​shrew/​elephant)) 
-   ​(question pouch is "Does your animal have a pouch?"​) 
-   (rule (if subspecies is hair and 
-          long.powerful.arms is yes)  
-         (then type.animal is orangutan/​gorilla/​chimpanzie)) 
-   (rule (if subspecies is hair and 
-          long.powerful.arms is no)  
-         (then type.animal is baboon)) 
-   ​(question long.powerful.arms is "Does your animal have long, powerful arms?"​) 
-   (rule (if subspecies is nohorn and 
-          fleece is yes)  
-         (then type.animal is sheep/​goat)) 
-   (rule (if subspecies is nohorn and 
-          fleece is no)  
-         (then subsubspecies is nofleece)) 
-   ​(question fleece is "Does your animal have fleece?"​) 
-   (rule (if subsubspecies is nofleece and 
-          domesticated is yes)  
-         (then type.animal is cow)) 
-   (rule (if subsubspecies is nofleece and 
-          domesticated is no)  
-         (then type.animal is deer/​moose/​antelope)) 
-   ​(question domesticated is "Is your animal domesticated?"​) 
-   ​(answer is "I think your animal is a " type.animal)) 
 </​code>​ </​code>​
  
 ====== Spotkania ====== ====== Spotkania ======
 [[pl:​miw:​2009:​miw09_xtt_clips:​spotkania|Notatki ze spotkań projektowych]] [[pl:​miw:​2009:​miw09_xtt_clips:​spotkania|Notatki ze spotkań projektowych]]
 +
 +====== Projekt ======
 +[[pl:​miw:​2009:​miw09_xtt_clips:​projekt|Dodatkowa dokumentacja]] - schematy ARD, TPH i XTT systemu identyfikującego zwierzęta. Przeniesione ze względu na duże rozmiary.
  
 ====== Materiały ====== ====== Materiały ======
 +Kopie lokalne programów CLIPS mają zmienione rozszerzenia z ''​clp''​ na ''​txt''​.
 +  * [[http://​clipsrules.sourceforge.net/​OnlineDocs.html|Dokumentacja on-line CLIPS-a]], dla początkujących polecam //User Guide//
 +  * [[http://​www.cis.ysu.edu/​~john/​824/​examples/​EMH7.txt|System wybierający metodę leczenia]], {{:​pl:​miw:​2009:​miw09_xtt_clips:​emh7.txt|kopia lokalna}}
 +  * {{:​pl:​miw:​2009:​miw09_xtt_clips:​auto.txt|Automotive Expert System:}}, {{:​pl:​miw:​2009:​miw09_xtt_clips:​auto-model.pl|źródło VARDA}}, {{:​pl:​miw:​2009:​miw09_xtt_clips:​car_expert_hml.txt|źródło HQEd 6_8}},​{{:​pl:​miw:​2009:​miw09_xtt_clips:​car-expert.xttml|źródło HQEd 5_6}}
 +  * {{:​pl:​miw:​2009:​miw09_xtt_clips:​animal.txt|Rozpoznawanie zwierząt}},​ {{:​pl:​miw:​2009:​miw09_xtt_clips:​anim-model.pl|źródło VARDA}}, {{:​pl:​miw:​2009:​miw09_xtt_clips:​anim_hml.txt|źródło HQEd 6_8}},​{{:​pl:​miw:​2009:​miw09_xtt_clips:​anim.xttml|źródło HQEd 5_6}}
 +  * {{:​pl:​miw:​2009:​miw09_xtt_clips:​therm_clips.txt|Termostat w CLIPS}}
pl/miw/2009/miw09_xtt_clips.1251223216.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0