Факты в clips. Упорядоченные факты. — КиберПедия 

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Факты в clips. Упорядоченные факты.

2017-12-21 2114
Факты в clips. Упорядоченные факты. 4.83 из 5.00 6 оценок
Заказать работу

 

Основные сведения

Факты являются одной из основных форм представления информации в системе CLIPS. Каждый факт представляет фрагмент информации, который был помещен в текущий список фактов, называемый fact-list. Факт представляет собой основную единицу данных, используемую правилами. Количество фактов в списке и объем информации, который может быть сохранен в факте, ограничивается только размером памяти компьютера.

Факт может описываться индексом или адресом. Всякий раз, когда факт добавляется (изменяется), ему присваивается уникальный целочисленный индекс. Индексы фактов начинаются с нуля и для каждого нового или измененного факта увеличиваются на единицу. Идентификатор факта записывается в виде f - <индекс>. Например, запись f-10 служит для обозначения факта с индексом 10.

Для просмотра текущего списка фактов используется команда facts.

Каждый раз после выполнения команд reset и clear выделение индексов начинается с нуля.

Существует два формата представления фактов: упорядоченные и неупорядоченные (шаблонные). Упорядоченные факты состоят из выражения символьного типа, за которым следует последовательность (возможно, пустая) из полей, разделенных пробелами. Вся запись заключается в скобки. Первое поле определяет "отношение", которое применяется к оставшимся полям.

Примеры упорядоченных фактов:

(студент Смирнов_Сергей)

(однокурсники Иванов Петров Сидоров)

(цвет красный).

Для работы с фактами любого типа используются следующие функции:

1) (assert <список фактов>) – добавляет новые факты в текущий список. Количество фактов произвольное.

Если операция выполнена успешно, то функция возвращает адрес последнего добавленного факта, если операция по добавлению фактов была не успешной, то функция возвращает значение False.

2) (retract <индекс>) – удаляет из текущего списка произвольное количество фактов

3) (fact-relation <индекс>) – позволяет определить отношение (связь) факта с указанным индексом.

Функция возвращает значение первого поля факта, если данный факт существует, или значение false если не существует.

4) (fact-existp <индекс факта>) – позволяет определить, содержится ли в текущем списке фактов факт с указанным индексом. Если присутствует, то функция возвращается значение true, иначе false

Факты можно включать в базу данных не по одиночке, а целым массивом. Для этого в CLIPS имеется конструктор deffacts.

(deffacts <имя списка фактов><Список фактов>)

Например,

(deffacts student_list

(student Ivanov Ivan)

(student Petrov Petr)

)

Выражение начинается с команды deffacts, затем приводится имя списка фактов (в примере — student_list), а за ним следуют элементы списка, причем их количество не ограничивается. Этот массив фактов можно тем удалить из базы командой undeffacts.

 

Пример 1.

В режиме командной строки создать список из 3-х упорядоченных фактов вида: (vedomost <name><gruppa><ocenka>). Просмотреть полученный список. Изменить список фактов следующим образом:

1) удалить факт f-1.

2)изменить в факте f-2 значение оценки

3)изменить в факте f-3 значение группы

 

Решение

Для формирования списка из 3-х упорядоченных фактов в режиме командной строки записываем команду assert с перечислением необходимых фактов (рис.5)

Рис.5 Добавление новых фактов в режиме командной строки

 

Для просмотра списка фактов записываем команду facts в командной строке (рис. 6).

Рис. 6 Просмотр списка фактов

 

Чтобы из текущего списка фактов удалить факт, используем команду retract (рис.7)

Рис. 7 Удаление факта f-1 и просмотр списка фактов.

 

Изменить значение поля в упорядоченном факте можно, удалив старый факт и добавив новый. Чтобы изменить в факте f-2 значение оценки, необходимо егоудалить и добавить факт с новым значением оценки (рис.8)

Рис. 8 Замена в факте f-2 значения оценки

 

Аналогично выполняется замена в факте f-3 значения группы (рис. 9)

Рис. 9 Замена в факте f-3 значения группы

 

 

Пример 2.

С помощью конструктора deffacts создать три упорядоченных факта вида (color <название цвета>). Добавить два новых факта, используя функцию assert. Удалить факты с индексами 2 и 4.

 

Решение

Создайте новый файл в CLIPS, в котором конструктор deffacts определяет список фактов (рис.10). Сохраните файл под именем, например color-list.

 

Рис.10 Содержимое файла color-list.clp

 

Загрузите данный файл в CLIPS с помощью команды Load (File -> Load). Сообщение интерпретатора TRUE означает, что в файле нет синтаксических ошибок и команда загрузки выполнена корректно (рис.11)

Рис. 11 Сообщение интерпретатора после загрузки файла color-list.clp

 

Выполните последовательно команды reset, а затем facts и просмотрите текущий список фактов:

Рис.12 Текущий список фактов, полученный в результате загрузки файла color-list.clp

 

Добавьте еще один факт:

 

Рис.13. Добавление нового факта

 

Просмотрите весь список:

Рис.14. Текущий список фактов

 

5. Удалите факты 2 и 3 и просмотрите окончательный список фактов

Рис.14 Текущий список фактов после удаления фактов f-2 и f-3

 

Контрольные вопросы

1. Поясните назначение фактов в Clips.

2. Как записывается индекс факта в Clips?

3. Какие типы фактов существуют в Clips?

4. Объясните структуру упорядоченных фактов.

5. Какая команда используется для просмотра текущего списка фактов?

6. Поясните назначение конструктора deffacts.

7. Какая функция используется для добавления новых фактов?

8. Какая функция используется для удаления фактов?

9. Поясните назначение функций fact-relation и fact-existp.

 

Задания для самостоятельной работы

1. В режиме командной строки создать список из 4-х упорядоченных фактов вида: (student <name><kurs>). Просмотреть полученный список. Изменить список фактов следующим образом: а) удалить факт f-2; б) изменить в факте f-3 значение <kurs>.

2. В режиме командной строки создать три упорядоченных факта вида (poezd <номер><пункт_назначения><время_отправления>) с помощью конструктора deffacts. Добавить два новых факта, используя функцию assert. Просмотреть полученный список фактов. Удалить факты с индексами 1,4. В фактах с индексами 2, 3 изменить время отправления.

3. В режиме командной строки создать список из 4-х упорядоченных фактов вида: (sotrudnik <fio><otdel>). Просмотреть полученный список. Изменить список фактов следующим образом: а) удалить факт f-1; б)изменить в факте f-3 значение <fio>

4. В режиме командной строки создать три упорядоченных факта вида (tovar <наименование><страна-производитель><цена><количество>) с помощью конструктора deffacts. Добавить два новых факта, используя функцию assert. Просмотреть полученный список фактов. В фактах с индексами 2, 4 изменить цену. Удалить все факты.

 

 


Поделиться с друзьями:

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.019 с.