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

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

Пример 5.14. Создание копии существующего неупорядоченного факта





 

(deftemplate car

(slot name)

(slot producer)

(slot type)

(slot max-speed))

(assert (car

(name scorpio)

(producer ford)

(type sedan)

(max-speed 180)))

(duplicate 0

(type off-road)

(max-speed 130))

В приведенном примере определяется шаблон, описывающий свойства ав­томобиля, и добавляется факт — автомобиль Ford Scorpio с типом кузова седан и максимальной скоростью 180 (км/ч). После этого с помощью функ­ции duplicate добавляется факт с информацией об еще одном автомобиле с похожими характеристиками — это внедорожник Ford Scorpio с макси­мальной скоростью 130 (км/ч). Duplicate просто облегчает нам жизнь, из­бавляя от излишнего ввода значений данных совпадающих слотов.

В случае, если добавляемый с помощью duplicate факт уже присутствует в списке фактов, будет выдана соответствующая информация об ошибке и возвращено значение false. Факт при этом добавлен не будет. Это поведе­ние можно изменить, разрешив существование одинаковых фактов в базе знаний. Как это сделать, было описано в разд. 5.2.3.

5.2.7. Функция assert-string

Кроме функции assert, CLIPS предоставляет еще одну функцию, полезную при добавлении фактов, — assert-string. Эта функция принимает в качест­ве единственного аргумента символьную строку, являющуюся текстовым представлением факта (в том виде, в котором вы набираете его, например, в функции assert), и добавляет его в список фактов. Функция assert-string может работать как с упорядоченными, так и с неупорядоченными фактами. Одним вызовом функции assert-string можно добавить только один факт.

Определение 5.9. Синтаксис команды assert-string

(assert-string <строковое-выражение>)

Строковое выражение должно быть заключено в кавычки. Функция преоб­разует заданное строковое выражение в факт CLIPS, разделяя отдельные слова на поля, с учетом определенных в системе на текущий момент шаб­лонов. Если в строке необходимо записать внутреннее строковое выра­жение, представляющее, скажем, некоторое поле, то для включения в строковое выражение символа кавычек используется обратная косая черта (backslash). Например, факт (book-name "clips user Guide") можно добавить следующим образом:

Пример 5.15. Использование кавычек внутри строки

(assert-string "(book-name V'CLIPS User Guide\")")

Для добавления содержащегося в поле символа обратной косой черты ис­пользуйте ее дважды. Если обратная косая должна содержаться внутри под­строки, ее необходимо использовать четыре раза. Например, для помещения в текущий список факта (a\b "c\d") необходимо вызвать функцию assert-string со следующим строковым аргументом:

Пример 5.16. Использование обратной косой черты

 

(assert-string "(a\\b \"c\\\\d\")")

Если добавления факта прошло удачно, функция возвращает индекс только что добавленного факта, в противном случае функция возвращает сообще­ние об ошибке и значение false. Функция assert-string не позволяет добавлять факт в случае, если такой факт уже присутствует в базе знаний (если вы еще не включили возможность присутствия одинаковых фактов).

5.2.8. Функция fact-existp

В этом разделе рассмотрим очень простую, но чрезвычайно важную функ­цию fact-existp. Эта функция определяет, присутствует ли в данный мо­мент факт, заданный индексом или переменной указателем, в базе знаний системы. В случае если факт присутствует в списке фактов, функция возвращает значение true, иначе — false.

Определение 5.10. Синтаксис команды fact-existp

(fact-existp <определение-факта>)

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

Пример 5.17. Использование функции fact-existp

 

(clear)

(assert-string "(a\\b \"c\\\\d\")")

(fact-existp 0)

(retract 0)

(fact-existp 0)

Замечание

He забудьте выполнить команду clear, чтобы добавленный факт имел нулевой индекс. После первого вызова функция fact-exist вернет значение true, а после удаления факта с индексом 0 — false.







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




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


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


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


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

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

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

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

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

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