Студопедия Главная Случайная страница Обратная связь

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

Пример объектно-ориентированного программирования в 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; просмотров: 2645. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


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

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

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

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

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