Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение 2.2.4. Синтаксис команды retract
(retrасt <определение-факта>+ \ *) Аргумент <определение-факта> может являться либо переменной, связанной с адресом факта с помощью правила (эта возможность будет описана в следующей главе), либо индексом факта без префикса (например, 3 для факта с индексом f-3), либо выражением, вычисляющим этот индекс (например, (+ 1 2) для факта с индексом f-3). Если в качестве аргумента функции retract использовался символ *, то из текущей базы знаний системы будут удалены все факты. Функция retract не имеет возвращаемого значения. Пример 2.2.6. Добавление фактов (assert (а) (b) (с) (d) (e) (f)) Пример 2.2.7. Удаление фактов (retract 0 (+ 0 2) (+022)) Эта команда удалит все факты с четными индексами, используя индекс факта непосредственно (первый аргумент) и выражение, которое вычисляет индекс факта (второй и третий аргумент). Рис. 2.2.5. Результат добавления и удаления фактов В случае, если факт с указанным индексом не будет найден, CLIPS выдаст соответствующее сообщение об ошибке. Выполните команду: Пример 2.2.8. Удаление всех фактов (retract *) После выполнения данной команды список фактов будет очищен полностью. Необходимо заметить, что функция retract не оказывает никакого воздействия на индекс следующих добавленных фактов, т. е. этот индекс не обнуляется. Если после удаления всех введенных фактов добавить в систему какой-нибудь факт, то он получит индекс f-б, несмотря на то, что список фактов в данный момент пуст. Функция modify Используя функции assert и retract, можно выполнять большинство необходимых для функционирования правил действий. В том числе и изменения существующего факта. Например, если в список фактов ранее был добавлен факт (temperature is low), который получил индекс 0, то изменить его значение можно, например, следующим образом: Пример 2.2.9. Изменение существующего факта (clear) (assert (temperature is low)) (retract 0) (assert (temperature is high)) Для изменения упорядоченных фактов доступен только этот способ. Для упрощения операции изменения неупорядоченных фактов CLIPS предоставляет функцию modify, которая позволяет изменять значения слотов таких фактов. Modify просто упрощает процесс изменения факта, но ее внутренняя реализация эквивалентна вызовам пар функций retract и assert. За один вызов modify позволяет изменять только один факт. В случае удачного выполнения функция возвращает новый индекс модифицированного факта. Если в процессе выполнения произошла какая-либо ошибка, то пользователю выводится соответствующее предупреждение и функция возвращает значение FALSE.
Определение 2.2.5. Синтаксис команды modify (modify <определение-факта> <новое-значение-слота>+) Аргументом <определение-факта> может быть либо переменная, связанная с адресом факта с помощью правила, либо индекс факта без префикса (например, 3 для факта с индексом f-3). После определения факта следует список из одного или более новых значений слотов указанного шаблона. Для использования приведенного выше примера его необходимо переделать следующим образом: Пример 2.2.10. Изменение существующего неупорядоченного факта (deftemplate temperature (slot value)) (assert (temperature (value low))) (modify 0 (value high)) Рис. 2.2.6. Результат изменения существующего неупорядоченного факта Обратите внимание на движение фактов в базе знаний CLIPS при выполнении функции modify — сначала удаляется старый факт с индексом f-o, a затем добавляется новый факт с индексом f-1, идентичный предыдущему, но с новым значением заданного слота. Если в шаблоне заданного факта отсутствует слот, значение которого требуется изменить, CLIPS выведет соответствующее сообщение об ошибке. Если заданный факт отсутствует в списке фактов, пользователь также получит соответствующее предупреждение. Функция duplicate Помимо функции modify, в CLIPS существует еще одна очень полезная функция, упрощающая работу с фактами, — функция duplicate. Эта функция создает новый неупорядоченный факт заданного шаблона и копирует в него определенную пользователем группу полей уже существующего факта того же шаблона. По действиям, которые выполняет функция duplicate, аналогична modify, за исключением того, что она не удаляет старый факт из списка фактов. Одним вызовом функции duplicate можно создать одну копию некоторого заданного факта. Как и функция modify, duplicate, в случае удачного выполнения, возвращает индекс нового факта, а в случае неудачи — значение false.
|
|||||
Последнее изменение этой страницы: 2021-03-10; просмотров: 71; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.159.224 (0.005 с.) |