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.  

 

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

37499. Религиозная философия 46 KB
  Русская религиозная философия ориентирует человека на 1.становления человека 4.социализации человека 4.Гуманизм представляет собой философскую идею о томчто смысл бытия человекаэто 1.
37501. Философия. основные понятия 349 KB
  3 филое Отличается стремлением рационально объяснить мир. Философия как нкука ее предмет структура и фии. Первые фил. Фил.
37503. Философия. Ответы к экзамену 368.5 KB
  Осознание специфики человека. Все животные растения объекты вроде Солнца и весны рассматриваются как существа похожие на человека живущие и действующие так же как он. Философское произведение обращается не только к разуму но и к чувствам человека доставляет эстетическое переживание. Их объединяют в первую очередь рассматриваемые проблемы как устроен мир каково назначение человека как ему следует жить Принципиальное различие состоит в том что ф.
37504. Философия. Тесты 79.5 KB
  Социальнофилософским учением является 1.в этом проявляется безусловный рефлекс 4.Учение Платона о первичности мира идей вне зависимости от субъективного отношения к нему является 1.Основателем теории объясняющей роль бессознательного в жизни человека и общества является 1.
37505. Философия эпохи Возрождения 60 KB
  Для характеристики человека он вводит понятие микрокосм в нем как бы свернут большой космос он так же сложен так же важен подобен Вселенной. Человек в бесконечности что он значит Но: в эпоху Возрождения сформировалась альтернативная культурная ориентация подчеркнувшая как раз достоинство человека. Гуманизм это мировоззренческий принцип согласно которому признается безусловная ценность человека как личности его права на свободное развитие и проявление своих способностей утверждается благо человека как критерий оценки...
37506. Философия Платона, концепция идей 12.37 KB
  Для каждой вещи фиксируется ее смысл идея которая как выясняется для любой вещи данного класса вещей одна и та же и обозначается одним именем. Идея это то самое единое которое составляет суть многообразия. Итак проблему единого и многого Платон разрешает следующим образом: единое это идея а ее проявления это многое. Какая идея наиважнейшая Платон не считал все идеи равнозначными.
37507. Особенности Русской философии 72.99 KB
  Учитывая весь тысячелетний опыт русской истории можно говорить об исторической миссии России. Миссия России определяется ее положением среди других народов тем что в ее составе объединилось до трехсот народов больших великих и малочисленных требовавших защиты. Культура России сложилась в условиях этой многонациональности. на новом витке развития России Русская идея стала предметом пристального внимания русских мыслителей.