Студопедия — Пример объектно-ориентированного программирования в CLIPS.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример объектно-ориентированного программирования в CLIPS.






Рассмотрим следующую задачу. Необходимо разработать и реализовать объектную модель автомата по продаже газированной воды. Вода может быть выдана как с сиропом (стоимостью 3 монеты) или без сиропа (стоимостью 1 монета). Количество сиропа и воды ограничено. В листинге 5 представлена реализация данной задачи в CLIPS.

Автомат по продаже воды реализован в виде класса gas-water-automate, родительский класс которого является USER, класс не абстрактный (role concrete). Чтобы класс мог быть использован при сопоставлении образцов во время выполнения правил pattern-match выставлен как reactive. У класса имеются два слота gas-water и syrup, доступные как для чтения, так и для записи (create-accessor read-write). Данные слоты будут использоваться для хранения количества порций воды и сиропа, их тип задается как INTEGER.

Объект данного класса в нашей программе будет называться our-automate. Зададим воды 2, а сиропа 3 порции.

Выдачу воды реализуем в обработчике сообщений getwater, в который в качестве параметра будем передавать номинал монеты. Вызов данного сообщения реализуем в правиле, которое будет выполняться, когда в базе фактов появится факт со словом money и номиналом монеты. Например, чтобы получить воду с сиропом необходимо задать следующий факт:

(deffacts world

(money 3)

)

 

Листинг 5. Программа моделирующая автомат по продаже воды

(defclass gas-water-automate

(is-a USER);;родительский класс

(role concrete);;класс неабстрактный

(pattern-match reactive);;класс активный

(slot gas-water (type INTEGER) (create-accessor read-write));;вода

(slot syrup (type INTEGER) (create-accessor read-write));;сироп

;;предварительно объявляем обработчик сообщений:

(message-handler getwater)

)

 

(definstances automates;;объявляем экземпляр класса

(our-automate of gas-water-automate

(gas-water 2)

(syrup 3)

)

)

 

;;обработчик сообщений

(defmessage-handler gas-water-automate getwater (?money)

(if (=?money 1) then;;если 1 монета, то выдаем воду без сиропа

(if (> (dynamic-get gas-water) 0) then;;если воды нет – оповещаем об этом

(dynamic-put gas-water (- (dynamic-get gas-water) 1))

(printout t "Your gas-water, please" crlf)

else

(printout t "Sorry, no more gas-water" crlf)

)

else

(if (=?money 3) then;;если 3 монеты, то выдаем воду с сиропом

;;если воды или сиропа нет, то нужно оповестить об этом

(if (and (> (dynamic-get gas-water) 0) (> (dynamic-get syrup) 0)) then

(dynamic-put gas-water (- (dynamic-get gas-water) 1))

(dynamic-put syrup (- (dynamic-get syrup) 1))

(printout t "Your gas-water with syrup, please" crlf)

else

(printout t "Sorry, no more gas-water or syrup" crlf)

)

else;;если ввели не 1 и не 3 монеты, то сообщаем об этом

(printout t "Wrong money" crlf)

)

)

)

 

;;правило, которое выполняется когда в базе фактов есть монеты

(defrule drinkwater

?f<-(money?money)

=>

;;вызываем обработчик сообщений

(send [our-automate] getwater?money)

;;удаляем факт

(retract?f)

)

 

Задания

1. Выполните вариант задания, выданного преподавателем из лабораторной работы № 1 с помощью объектно-ориентированных средств в CLIPS.

2. Выполните полученную программу с различными начальными данными.


Литература

1. Питер Джексон. Введение в экспертные системы. М.: Изд. дом "Вильямс", 2001,– 622с.

2. Рассел С., Норвиг.П. Искусственный интеллект: современный подход, 2-е изд..: Пер. С англ. – М.: Изд. дом "Вильямс", 2006, -1408 с.

3. Люгер Дж. Искусственный интеллект: стратегии и методы решения сложных проблем, 4-е изд...: Пер. с англ. – М.: Изд. дом "Вильямс", 2003,– 864 с.

4. Адрес языка CLIPS в Интернете: http://www.ghg.net/clips/CLIPS.html

5. А.П. Частиков, Т.А. Гаврилов, Д.Л. Белов. Разработка экспертных систем. Среда CLIPS. – СПб.:БХВ-Петербург, 2003. – 608 с.

6. В.В. Корнеев, А.Ф. Гаев, С.В. Васютин, В.В. Райх. Базы данных. Интеллектуальная обработка информации. – М.: “Нолидж”, 2000

 


СОДЕРЖАНИЕ

Введение. 3

1. Основные теоретические сведения. 3

1.1. Основные элементы программирования в CLIPS. 4

1.1.1. Простые типы данных. 4

1.1.2. Работа с базой знаний в CLIPS. Факты.. 5

1.1.3. Операции над фактами. 7

1.1.4. Работа с базой правил. Правила. 10

1.1.5. Функции для манипулирования данными. Определение функций. 14

1.2. Наблюдение за процессом интерпретации программы.. 16

1.3. GUI-интерфейс CLIPS. 17

2. Лабораторная работа №1. Решение задач на планирование. 19

2.1. Задачи на планирование действий. 19

2.2. Пример программы по планированию действий робота – "Робот и ящик" 19

2.3. Порядок выполнения работы. Задания. 25

3. Лабораторная работа №2. Решение задач из логики высказываний на
CLIPS. 28

3.1. Элементы математической логики. Логика высказываний. 28

3.1.1. Основные операции над высказываниями. 28

3.2. Примеры программ логического доказательства. 32

3.3. Варианты заданий. 45

4. Лабораторная работа №3. Реализация эвристических поисковых алгоритмов на примере алгоритма А*. 50

4.1. Эвристический алгоритм поиска в пространстве состояний. 50

4.2. Пример решения задачи поиска в пространстве состояний. 51

4.3. Варианты заданий. 75

5. Лабораторная работа №4. Объектное программирование в CLIPS. 79

5.1. Использование объектно-ориентированных средств в CLIPS. 79

5.1.1. Наследование. 80

5.1.2. Описатели классов. 82

5.1.3. Фасеты.. 84

5.2. Пример объектно-ориентированного программирования в CLIPS. 90

5.3. Задания. 92

Литература. 93

 







Дата добавления: 2015-08-30; просмотров: 2586. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия