23671

Системы искусственного интеллекта. Изучение базовых команд и конструкций CLIPS

Лабораторная работа

Информатика, кибернетика и программирование

Решение: defrule datainput initialfact = printout t crlf Vvedite chislo dnei do zacheta tseloe znachenie: bind days read assert days days printout t crlf Vvedite chislo nesdelannyh laboratornyh rabot v bind works read assert works works printout t crlf Vvedite temperaturu na ulitse: bind temper read assert temper temper printout t crlf Est\' li na ulitse osadki da 1 net 0: bind rain read assert rain rain printout t crlf Is there any white rabbit da 1 net...

Русский

2015-01-29

91.5 KB

46 чел.

Федеральное агентство по образованию.

Санкт-Петербургский ордена Ленина и ордена Октябрьской Революции

Государственный Электротехнический Университет «ЛЭТИ»

Кафедра Вычислительной Техники

Лабораторная работа № 1

по дисциплине

«Системы искусственного интеллекта»

Выполнили:

тов. Гладилин Г.

тов. Гречухин М.

группа 3371

Проверил:

Пантелеев Михаил

Георгиевич

Санкт-Петербург, 2007


Задание

1. Изучение базовых команд и конструкций CLIPS.

1.1. Запустить систему CLIPS (файл clipswin.exe). Активизировать окно просмотра текущего списка фактов (подпункт “Facts Window” пункта “Windows” главного меню). Выполнить следующую последовательность действий, фиксируя после каждого шага состояние списка фактов:

  1.  сбросить систему в исходное состояние командой (clear);
  2.  выполнить начальную установку командой (reset) или комбинацией клавиш Ctrl-U;
  3.  ввести 3 любых упорядоченных факта командой (assert), например: CLIPS> (assert (n n) (m m) (p p));
  4.  повторно выполнить сброс командой (reset);
  5.  установить 3 ранее вводимых упорядоченных факта в качестве исходных фактов, используя конструкцию (deffacts);
  6.  выполнить сброс командой (reset).

1.2. Активизировать дополнительно окно просмотра агенды (подпункт “Agenda Window” пункта “Windows” главного меню). Выполнить следующую последовательность действий, фиксируя после каждого шага состояния списка фактов и агенды:

  1.  используя конструкцию (defrule), ввести три правила, такие, что антецеденты первых двух правил сопоставляются с комбинацией фактов, заданных ранее конструкцией (deffacts), а консеквенты этих правил добавляют новые факты, сопоставляемые с антецедентом третьего правила. Пусть, например, X, Y и Z – факты, заданные конструкцией (deffacts). Тогда структура вводимых правил может быть представлена следующим образом:

X & Y => V;

Y & Z  => W;

V & W => U;

  1.  выполнить по шагам активизацию правил (используя «горячую» комбинацию Ctrl-T).

2. Разработка демонстрационной экспертной системы.

2.1. Сформировать, пользуясь редактором clipsedt.exe, базу знаний демонстрационной ЭС и сохранить ее в файле rulebase.clp. ЭС должна вырабатывать рекомендации студенту накануне зачета и иметь четыре входные переменные («число дней до зачета», «количество несделанных лабораторных работ (в %)», «температура на улице» и «наличие осадков»), две промежуточные («свободное время» и «погода») и выходную переменную («рекомендуемые действия»). Диаграмма зависимости переменных показана на рисунке, в скобках указаны возможные имена переменных:

Общее количество правил в БЗ должно быть не менее 25. Количество значений переменных должно выбираться таким образом, чтобы БЗ отвечала требованию полноты, т.е. содержала правила, соответствующие любым сочетаниям значений переменных в левых частях правил. Например, если переменная «свободное время» имеет 3 значения («отсутствует», «мало» и «много»), а переменная «погода» – 2 значения («плохая» и «хорошая»), то максимальное число правил для определения переменной «действие» будет равно 6.

Решение:

(defrule data-input

 (initial-fact)

=>

 (printout t crlf "Vvedite chislo dnei do zacheta (tseloe znachenie): ")

 (bind ?days (read))

 (assert (days ?days))

 (printout t crlf "Vvedite chislo nesdelannyh laboratornyh rabot (v %) ")

 (bind ?works (read))

 (assert (works ?works))

 (printout t crlf "Vvedite temperaturu na ulitse: ")

 (bind ?temper (read))

 (assert (temper ?temper))

 (printout t crlf "Est' li na ulitse osadki? (da - 1/net - 0): ")

 (bind ?rain (read))

 (assert (rain ?rain))  

 (printout t crlf "Is there any white rabbit? (da - 1/net - 0) //HASN'T Realized: "))

(defrule R1

(days ?days)

(works ?works)

(test (= ?works 0))

=>

(printout t crlf crlf "Vse uzhe sdelano." crlf)

(assert (freetime "infinity"))

(assert (freetimecnst 0)))

(defrule R2

(days ?days)

(works ?works)

(test (and (and(> ?days 5) (<= ?days 7)) (and (<= ?works 50) (> ?works 0) )))

=>

(printout t crlf crlf "Svobodnogo vremeni mnogo" crlf)

(assert (freetime "mnogo"))

(assert (freetimecnst 1)))

(defrule R3

(days ?days)

(works ?works)

(test (and (and(> ?days 5) (<= ?days 7)) (and (<= ?works 100) (> ?works 50) )))

=>

(printout t crlf crlf "Svobodnogo vremeni ne ochen' mnogo" crlf)

(assert (freetime "ne_ochen"))

(assert (freetimecnst 2)))

(defrule R4

(days ?days)

(works ?works)

(test (and (and(> ?days 3) (<= ?days 5)) (and (<= ?works 50) (> ?works 0) )))

=>

(printout t crlf crlf "Svobodnogo vremeni mnogo" crlf)

(assert (freetime "mnogo"))

(assert (freetimecnst 1)))

(defrule R5

(days ?days)

(works ?works)

(test (and (and(> ?days 3) (<= ?days 5)) (and (<= ?works 100) (> ?works 50) )))

=>

(printout t crlf crlf "Svobodnogo vremeni ne ochen' mnogo" crlf)

(assert (freetime "ne_ochen"))

(assert (freetimecnst 2)))

(defrule R6

(days ?days)

(works ?works)

(test (and (= ?days 3) (and ( > ?works 0 ) (<= ?works 50) )))

=>

(printout t crlf crlf "Svobodnogo vremeni ne ochen' mnogo" crlf)

(assert (freetime "ne_ochen"))

(assert (freetimecnst 2)))

(defrule R7

(days ?days)

(works ?works)

(test (and (= ?days 3) (and ( > ?works 50 ) (<= ?works 100) )))

=>

(printout t crlf crlf "Svobodnogo vremeni sovsem nemnogo. Pora delat'" crlf)

(assert (freetime "pora_dalat"))

(assert (freetimecnst 3)))

(defrule R8

(days ?days)

(works ?works)

(test (and (= ?days 2) (and ( > ?works 0 ) (<= ?works 33) )))

=>

(printout t crlf crlf "Svobodnogo vremeni ne ochen' mnogo" crlf)

(assert (freetime "ne_ochen"))

(assert (freetimecnst 2)))

(defrule R9

(days ?days)

(works ?works)

(test (and (= ?days 2) (and ( > ?works 33 ) (<= ?works 66) )))

=>

(printout t crlf crlf "Svobodnogo vremeni sovsem nemnogo. Pora delat'" crlf)

(assert (freetime "pora_dalat"))

(assert (freetimecnst 3)))

(defrule R10

(days ?days)

(works ?works)

(test (and (= ?days 2) (and ( > ?works 66 ) (<= ?works 100) )))

=>

(printout t crlf crlf "Svobodnogo vremeni net -- ne uspevaem" crlf)

(assert (freetime "finish"))

(assert (freetimecnst 4)))

(defrule R11

(days ?days)

 (works ?works)

(test (and (= ?days 1) (and ( > ?works 0 ) (<= ?works 25) )))

=>

(printout t crlf crlf "Svobodnogo vremeni ne ochen' mnogo" crlf)

(assert (freetime "ne_ochen"))

(assert (freetimecnst 2)))

(defrule R12

(days ?days)

 (works ?works)

(test (and (= ?days 1) (and ( > ?works 25 ) (<= ?works 50) )))

=>

(printout t crlf crlf "Svobodnogo vremeni sovsem nemnogo. Pora delat'" crlf)

(assert (freetime "pora_dalat"))

(assert (freetimecnst 3)))

(defrule R13

(days ?days)

 (works ?works)

(test (and (= ?days 1) (and ( > ?works 50 ) (<= ?works 100) )))

=>

(printout t crlf crlf "Svobodnogo vremeni net -- ne uspevaem" crlf)

(assert (freetime "finish"))

(assert (freetimecnst 4)))

(defrule R14

 (days ?days)

(works ?works)

(test (and (= ?days 0) ( > ?works 0 )))

=>

(printout t crlf crlf "Nu kogda-to ono bylo. A seichas uzhe ne vazhno" crlf)

(assert (freetime "ppc"))

(assert (freetimecnst 5)))

(defrule R15

(temper ?temper)

(rain ?rain)

(test (> ?temper 25))

=>

(printout t crlf crlf "Pogoda ochen' horoshaya " crlf)

(assert (weather "v-good"))

(assert (weathercnst 1)))

(defrule R16

(temper ?temper)

 (rain ?rain)

(test (and(and(>= ?temper 5)(< ?temper 25)) (= ?rain 0)) )

=>

(printout t crlf crlf "Pogoda horoshaya " crlf)

(assert (weather "good"))

(assert (weathercnst 2)))

(defrule R17

 (temper ?temper)

(rain ?rain)

(test (and(and(>= ?temper 5)(< ?temper 25)) (<> ?rain 0)) )

=>

(printout t crlf crlf "Pogoda plohaya " crlf)

(assert (weather "bad"))

(assert (weathercnst 3)))

(defrule R18

(temper ?temper)

(rain ?rain)

(test (<= ?temper 5) )

=>

(printout t crlf crlf "Pogoda ochen' plohaya " crlf)

(assert (weather "v-bad "))

(assert (weathercnst 4)))

(defrule R19

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(< ?freetimecnst 3)(= ?weathercnst 1)))

=>

(printout t crlf crlf "Mozhno idti gulyat'" crlf)

(assert (act "go")))

(defrule R20

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (= ?freetimecnst 5))

=>

(printout t crlf crlf "Po povodu pogodi ne znayu, no uchit' uje pozdno" crlf)

(assert (act "nth")))

(defrule R21

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (= ?freetimecnst 0))

=>

(printout t crlf crlf "Po povodu pogodi ne znayu -- gotovsya k sleduyuchey sessii..." crlf)

(assert (act "botan")))

(defrule R22

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(= ?freetimecnst 4)(<> ?weathercnst 5)))

=>

(printout t crlf crlf "Nado uchit'!" crlf)

(assert (act "learn")))

(defrule R23

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

 (test (and(= ?freetimecnst 3)(= ?weathercnst 2)))

=>

(printout t crlf crlf "Luchshe uchit'sya" crlf)

(assert (act "learn")))

(defrule R24

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(= ?freetimecnst 2)(= ?weathercnst 2)))

=>

(printout t crlf crlf "As u wish" crlf)

(assert (act "auw")))

(defrule R25

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(= ?freetimecnst 1)(= ?weathercnst 2)))

=>

(printout t crlf crlf "As u wish" crlf)

(assert (act "auw")))

(defrule R26

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and( or (= ?freetimecnst 2)( = ?freetimecnst 1))(= ?weathercnst 3)))

=>

(printout t crlf crlf "Luchshe uchit'" crlf)

(assert (act "glearn")))

(defrule R27

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(= ?freetimecnst 3)(= ?weathercnst 3)))

=>

(printout t crlf crlf "Luchshe uchit'" crlf)

(assert (act "glearn")))

(defrule R28

(weathercnst ?weathercnst)

(freetimecnst ?freetimecnst)

(test (and(> ?freetimecnst 0) (= ?weathercnst 4)))

=>

(printout t crlf crlf "Luchshe uchit'" crlf)

(assert (act "glearn")))


Пример выполнения программы:

Вывод:

  1.  Основные возможности и базовые команды среды CLIPS изучены.
  2.  Разработана рабочая экспертная система.

  1.  

 

А также другие работы, которые могут Вас заинтересовать

15053. Қазақ әдебиеті - тұлғаның рухани дамуының бастауы 62.5 KB
  ҚАЗАҚ ӘДЕБИЕТІТҰЛҒАНЫҢ РУХАНИ ДАМУЫНЫҢ БАСТАУЫ Ш. А.Өсерова А.Б.Бөгенбаева Жамбыл атындағы №5 орта мектеп Тараз қ. Әр халықтың тәлімтәрбиелік мұрасы ұлттық мәдениетінің маңызды белгісі болып табылады. Осы арқылы ол ұлттың ұлттық тәрбиесінің ере...
15055. Қазақ әдебиетіндегі айтыс өнерінің өзіндік өрнегі 63 KB
  ӘӨЖ ҚАЗАҚ ӘДЕБИЕТІНДЕГІ АЙТЫС ӨНЕРІНІҢ ӨЗІНДІК ӨРНЕГІ Г.А.Жұмабекова Тараз мемлекеттік педагогикалық институты Тараз қ. Қазақ әдебиетінің қайталанбас хас ерекшеліктері аз емес.Осы орайда ауыз әдебиеті үлгілерінің кемел жазба әдебиетке ойысу ұласу үрдісін...
15056. Қазақ әдебиетіндегі терме жанрының қалыптасуы мен дамуы 77.5 KB
  ҚАЗАҚ ӘДЕБИЕТІНДЕГІ ТЕРМЕ ЖАНРЫНЫҢ ҚАЛЫПТАСУЫ МЕН ДАМУЫ М.Т. Мұқашева №8 Төле би атындағы гимназия Тараз қ. Қазақы сөз арнау дәстүрі түрлі жанрлық тақырыптық сипатымен өзге түрік халықтарына қарағанда өте бай. Ең бастысы байырғы рухан
15057. Қазақ әдебиетінің ежелгі дәуірі, көне Түркі ескерткіштері 83 KB
  Қазақ әдебиетінің ежелгі дәуірі: көне Түркі ескерткіштері Ежелгі дәуір әдебиет VIIXIV ғғ. деп аталатын жеті ғасырды қамтыған әдебиетіміздің ұзақ тарихына қатысты ескерткіштер шығармалар аз емес. Олардың алғашқылары деп түркі рутайпаларына ортақ Орхон ескерткішт...
15058. Қазақ әдебитеті пәні бойынша ҰБТ-ге дайындаудың тиімді жолдары 116.5 KB
  ҚАЗАҚ ТІЛІ МЕН ӘДЕБИЕТ ПӘНІ БОЙЫНША ОҚУШЫЛАРДЫ БІРІҢҒАЙ ҰЛТТЫҚ ТЕСТІЛЕУГЕ ДАЙЫНДАУДЫҢ ТИІМДІ ЖОЛДАРЫ Манабаева Гүлбайрам Рахымқызы қазақ тілі мен әдебиеті пәнінің мұғалімі №35 жалпы орта білім беру мектебі Қазақ әдебиетінде өзіндік айтулы із қалдырған белгі
15059. Қазақ мақал-мәтелдерінің гендерлік сипаты 44 KB
  УДК 4Ф Б 76 ҚАЗАҚ МАҚАЛМӘТЕЛДЕРІНІҢ ГЕНДЕРЛІК СИПАТЫ М.Б. Боранбай Қ. Жұбанов атындағы Ақтөбе мемлекеттік университеті Ақтөбе қ. Қазақ халқы рухани дүниеге қазынаға бай халық. Оның қай түрін алсақ та тәлімтәрбиесі мол ұрпақтанұрпаққа қалдырған өcие
15060. Қазақ поэзиясындағы домбыра бейнесі 77.5 KB
  ТІРКЕУ ФОРМАСЫ 1. Тегі аты жөні: Абсаттарова Айдана Рамазанқызы 2. Мекеме лауазымы: Ы.Алтынсарин атындағы дарынды балаларға арналған мамандандырылған обл...
15061. Қазақ поэзиясындағы жыраулық дәстүр 432.5 KB
  Қазақ поэзиясындағы жыраулық дәстүр Ордада ханның қасында әр уақытта ақылшы жыраулар болған. Жыраулар халық поэзиясын жасаған ақылғөй даналар. Олар заманының өздері куә болған елеулі уақиғаларын тарихи кезеңдерді жырға қосқан... Жыраулар поэзиясына дейінгі әдеби...