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

39 чел.

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

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

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

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

Лабораторная работа № 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.  

 

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

25298. Філософські дискусії 20-30-х років та їх переломлення в Україні 32 KB
  Філософські дискусії 2030х років та їх переломлення в Україні У 2030х роках починає формуватися марксистськоленінський світогляд. У звязку з цим починається боротьба за утвердження марксистськоленінського природознавства яке розпочавшись з дискусії 30х років завершилося не тільки встановленням повного контролю політичноідеологічної системи над природознавством але й розгромом цілого ряду наукових напрямів фізичним знищенням їх представників. З перших днів утвердження радянської влади на Україні культура освіта наука...
25299. Філософський доробок С.Семковського 93 KB
  Тут він заснував першу в Україні кафедру марксизму і марксознавства яка потім перетворилася на Український інститут марксизму в якому до 1931 р. інституті марксизмуленінізму був створений філсоціолог. марксизму У 1918 р. кафедру марксизму і марксознавства яка потім перетв.
25300. В.Юринець та його філософський спадок 28.5 KB
  Юринець та його філософський спадок Юринець Володимир Олександрович 18911937.
25301. Слуховой анализатор 48.5 KB
  Средняя сосудистая оболочка в передней части глаза образует ресничное тело и радужную оболочку обуславливающую цвет глаз. Внутренняя сетчатая оболочка сетчатка или ретина содержит фоторецепторы глаза палочки и колбочки и служит для преобразования световой энергии в нервное возбуждение. Светопреломляющие среды глаза преломляя световые лучи обеспечивают четкое изображение на сетчатке. Основными преломляющими средами глаза человека являются роговица и хрусталик.
25302. Вкусовой и обонятельный анализатор 23.5 KB
  Хеморецепторы вкуса представляют собой вкусовые луковицы расположенные в эпителии языка задней стенке глотки и мягкого неба. Микроворсинки рецепторных клеток выступают из луковицы на поверхность языка и реагируют на растворенные в воде вещества. Рецепторы разных частей языка воспринимают четыре основных вкуса: горького задняя часть языка кислого края языка сладкого передняя часть языка и соленого яердняя часть и края языка.
25303. РОЛЬ СЕНСОРНЫХ СИСТЕМ В УПРАВЛЕНИИ ДВИЖЕНИЯМИ. СОМАТОСЕНСОРНАЯ ЧУВСТВИТЕЛЬНОСТЬ И КОРРЕКЦИЯ ДВИЖЕНИЙ 35.5 KB
  СОМАТОСЕНСОРНАЯ ЧУВСТВИТЕЛЬНОСТЬ И КОРРЕКЦИЯ ДВИЖЕНИЙ Выполнение движений сопряжено с растягиванием кожи и давлением на отдельные ее участки поэтому кожные рецепторы оказываются включенными в анализ движений. Эта функциональная связь является физиологической основой комплексного кинестетического анализа движений при котором импульсы кожных рецепторов дополняют мышечную проприоцептивную чувствительность. Благодаря проприоцепции возможны коррекция уточнение движений в соответствии с текущими потребностями выполнения произвольного действия....
25304. Физиологические реакции живого организма 39 KB
  Раздражение Раздражителем живой клетки или организма как целого может оказаться любое изменение внешней среды или внутреннего состояния организма если оно достаточно велико возникло достаточно быстро и продолжается достаточно долго. Клетки значительно более чувствительны по отношению к своим адекватным раздражителям чем к неадекватным. Возбудимость Некоторые клетки и ткани нервная мышечная и железистая специально приспособлены к осуществлению быстрых реакций на раздражение.
25305. Стресс 33.5 KB
  0004 ГОМЕОСТАЗ Внутренняя среда организма в которой живут все его клетки это кровь лимфа межтканевая жидкость. Ее характеризует относительное постоянство гомеостаз различных показателей так как любые ее изменения приводят к нарушению функций клеток и тканей организма особенно высокоспециализированных клеток центральной нервной системы. Способность сохранять гомеостаз в условиях постоянного обмена веществ и значительных колебаний факторов внешней среды обеспечивается комплексом регуляторных функций организма. существовать и двигаться...
25306. Адаптация 28 KB
  У человека адаптация выступает как свойство организма которое обеспечивается автоматизированными самонастраивающимися саморегулирующимися системами сердечнососудистой дыхательной выделительной и др. Адаптация это эффективная и экономная адекватная приспособительная деятельность организма к воздействию факторов внешней среды. Чем выше уровень интеграции координированности сложных регуляторных процессов тем эффективнее адаптация.