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

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

GUI-интерфейс CLIPS






Для того чтобы иметь возможность наблюдать за всеми изменениями, происходящими в состоянии CLIPS, используется команда Window->All Above Данная команда открывает окна Facts (содержит факты из списка фактов) и Agenda (содержит все правила из списка активных правил).

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

Для загрузки содержимого файла в базу знаний CLIPS, нужно воспользоваться пунктом Load Constructs меню File.

Для того чтобы CLIPS активизировал начальный факт (initial-fact с идентификатором F-0) необходимо выбрать Executtion->Reset. Данная команда удаляет существующие факты из списка фактов, включает в список фактов исходный факт (initial-fact), включает в список фактов все факты, описанные в конструкциях (deffacts).

Затем, по команде Executtion->Run CLIPS начнет выполнение всех правил программы. Для сохранения протокола работы программы, а также получения ответа в текстовом файле необходимо сразу после запуска CLIPS выполнить команду File -> TurnDribbleOn и в диалоговом окне ввести имя файла, в который будет сохраняться содержимого главного окна CLIPS. После окончания работы программы выполнить TurnDribbleOff, по этой команде файл для вывода будет закрыт.

 


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

Цель работы: ознакомление с основными принципами программирования на языке CLIPS, получение навыков работы в оболочке CLIPS, разработка программы на составление планов действий технической системой в заданной предметной области.

Технические средства: персональный компьютер с операционной системой Windows 9x/Me/NT/2000/XP.

Программные средства: текстовый редактор (Блокнот, WordPad и т.п.), оболочка языка CLIPS версии 6.2 и выше.

 

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

Задачи планировщика – определить последовательность действий модуля решения, например системы управления. Традиционное планирование основано на знаниях, поскольку создание плана требует организации частей знаний и частичных планов в процедуру решения. Планирование используется в экспертных системах при рассуждении о событиях, происходящих во времени. Планирование находит применение в производстве, управлении, робототехнике, в задачах понимания естественного языка.

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

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

Имеются 2 комнаты – A и B, в комнате A находится робот, в комнате B – ящик; задача – вытолкнуть ящик в комнату A.

Решим эту задачу с помощью шаблонных фактов. Введем шаблон in, определяющий местоположение предмета:

 

(deftemplate in

(slot object (type SYMBOL))

(slot location (type SYMBOL))

)

 

Слот Object будет задавать название предмета или робота, location – название места, где этот предмет или робот находится.

Чтобы задать роботу конкретную цель действий зададим шаблон goal:

 

(deftemplate goal

(slot object (type SYMBOL))

(slot from (type SYMBOL))

(slot to (type SYMBOL))

)

 

слот object – определяет название объекта, который необходимо переместить, слоты from и to определяют откуда и куда.

На основе шаблонов in и goal запишем начальные факты:

 

(deffacts world

(in (object robot) (location RoomA))

(in (object box) (location RoomB))

(goal (action push) (object box) (from RoomB) (to RoomA))

)

Первый факт соответствует тому, что робот находится в комнате A, второй, что ящик в комнате B, третий – перетащить ящик из комнаты B в A.

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

1) перемещение робота в комнату, где находится объект;

2) перемещение робота с объектом в комнату, указанную в цели;

3) останов программы если цель достигнута.

Реализуем первое действие:

 

(defrule move

(goal (object?X) (from?Y))

(in (object?X) (location?Y))

?robot-position <- (in (object robot) (location ~?Y))

=>

(modify?robot-position (location?Y))

)

 

В данном правиле имеются три предпосылки. В первой предпосылке, использующей шаблон goal задаются значения переменных?X и?Y. Во второй определяется наличие объекта?X в комнате?Y. В третьей предпосылке проверяется, что местоположение робота не соответствует?Y и запоминается ссылка на данный факт в переменной?robot-position. Если все предпосылки данного правила истинны, то с помощью оператора modify меняется значение слота location на значение переменной?Y факта?robot-position, т. е. робот перемещается в комнату, в которой находится объект, который необходимо переместить.

Аналогично реализуется правило перемещения робота с ящиком, в комнату, указанную в цели:

 

(defrule push

(goal (object?X) (from?Y) (to?Z))

?object-position <- (in (object?X) (location?Y))

?robot-position <- (in (object robot) (location?Y))

=>

(modify?robot-position (location?Z))

(modify?object-position (location?Z))

)

 

В данном случае изменяются два факта, ссылки на которые задаются в переменных?object-position и?robot-position: значение слота location меняется на значение переменной?Z, соответствующей значению куда необходимо переместить предмет роботом.

Останов выполнения программы в CLIPS осуществляется с помощью команды (halt). Условием останова является наличие факта, что предмет, указанный в цели (слот object) находится в комнате, указанной в слоте to:

 

(defrule stop

(goal (object?X) (to?Y))

(in (object?X) (location?Y))

=>

(halt)

)

 

Полный текст программы представлен в листинге 1.

 

Листинг 1. Программа «робот и ящик»

;; ШАБЛОНЫ

;; Шаблон «цель»

(deftemplate goal

(slot action (type SYMBOL))

(slot object (type SYMBOL))

(slot from (type SYMBOL))

(slot to (type SYMBOL))

)

;; Шаблон “в”

(deftemplate in

(slot object (type SYMBOL))

(slot location (type SYMBOL))

)

;; ФАКТЫ

;; Робот в комнате А,

;; ящик в комнате B,

;; цель - вытолкнуть ящик в комнату A.

(deffacts world

(in (object robot) (location RoomA))

(in (object box) (location RoomB))

(goal (action push) (object box) (from RoomB) (to RoomA))

)

;;ПРАВИЛА

;; Прекратить процесс, когда цель будет достигнута.

(defrule stop

(goal (object?X) (to?Y))

(in (object?X) (location?Y))

=>

(halt)

)

;; Если робот отсутствует в том месте, где находится объект,

;; который нужно передвинуть,

;; переместить туда робот.

(defrule move

(goal (object?X) (from?Y))

(in (object?X) (location?Y))

?robot-position <- (in (object robot) (location ~?Y))

=>

(modify?robot-position (location?Y))

)

;; Если робот и объект не в том помещении,

;; которое указано в цели,

;; переместить туда робот и объект.

(defrule push

(goal (object?X) (from?Y) (to?Z))

?object-position <- (in (object?X) (location?Y))

?robot-position <- (in (object robot) (location?Y))

=>

(modify?robot-position (location?Z))

(modify?object-position (location?Z))

)

 

Чтобы запустить программу в CLIPS необходимо:

1) скопировать текст программы в любой текстовый редактор (редактор CLIPS, Notepad) и сохранить его с расширением clp, например, robot.clp;

2) загрузить этот файл в среду CLIPS с помощью меню File\Load… (Ctrl+L);

3) выполнить команду reset. Для этого либо введите эту команду в командной строке интерпретатора:

CLIPS> (reset)

либо выберите в меню команду Execution->Reset (CTRL+U);

4) в меню Execution->Watch установите флажок Rules,чтобы наблюдать результат трассировки процесса выполнения;

5) затем запустите интерпретатор. Для этого либо введите эту команду run в командную строку интерпретатора:

CLIPS> (run)

либо выберите в меню команду Execution->Reset (CTRL+R).

 







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



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

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

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

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

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

Объект, субъект, предмет, цели и задачи управления персоналом Социальная система организации делится на две основные подсистемы: управляющую и управляемую...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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