1626434812-e667f6b6e7e69d3a0798830a58e9075b (844135), страница 28
Текст из файла (страница 28)
В их состав могут входить средства модифицировання функционирования оболочки, набор компонентов, позволяющих конструировать собственные оболочки, средства комплексирования компонентов в виде языка высокого уровня, развитый графический интерфейс с пользователем. Подобные средства называют средстваии автстатизацин разрабовкн ~ироекпшровтаи) ЭС. Они обычно позволяют представлять предметную область в виде сложной структуры, состоящей из произвольного числа понятий.
Необходимость выбора средств, анализа их возможностей, модификации их функционирования и тд. требует от пользователя специальных знаний в области ИИ. При разработке реальных экспертных систем в большинстве случаев используются так называемые языки искусственного интеллекта типа Лисп и Пролог. Однако в последнее время наметился переход к использованию языков традиционного программирования (С, С++ и т.п.), что позволяет упростить интеграцию создаваемой экспертной системы в эксплуатируемые информационно-аналитические системы и снизить требования к быстродействию и объему памяти. 6.3. Инструментальное средство разработки экспертных систем СЫРЯ 6.3.1. Общие сведения о СЕ1РЯ СПРН ~С Еащиацс 1п[едга~ед Ргодис1юп сумет) является одним из распространенных инструментальных средств разработки экспертных систем (ЭС). Базы данных.
Интеллектуальнав обработка информации Представляя собой логически полную среду, содержащую встроенный редактор и средства отладки, СЫРЯ является оболочкой ЭС. Разработчиком СЫРЯ является Национальное Аэрокосмическое Агентство США. Первая версия системы вышла в 1984 году, текущая версия — 6.1. СЫРЯ использует продукционную модель представления знаний и поэтому содержит три основных элемента: 1.
список фактов, 2. базу знаний, 3. блок вывода. Принципиальным отличием данной системы от аналогов является то, что она полностью реализована на языке С. Причем исходные тексты ее программ опубликованы в сети Интернет. В СЫРЯ используется оригинальный ЫРЯ-подобный язык программирования, ориентированный на разработку ЭС. Кроме того, СЫРЯ поддерживает еще две парадигмы программирования: объектно-ориентированную и процедурную. Аспекты объектно-ориентированного программирования в СЫРЯ нами рассматриваться не будут. 6.3.2.
Программирование в СОРЯ 6.3.2.1. Основные элементы программирования СЫРЯ предоставляет три основных элемента для написания программ; простые типы данных; ° функции для манипулирования данными; ° конструкции для пополнения базы знаний. Простые типы данных Для представления информации в СЫРЯ предусмотрено восемь простых типов данных: ЕХоаг., ~пг.едег, БугпЬо1, зсг~пд, ех1егпа1-ас1с1гевв, йасин-асЫгевв, 1.пвсапсе-пате и 1.пв~апсе-асЫ~еав. Для представления числовой информации используются типы ЕХоа~ и ~п~едег, символьной — вупЬо1 и в~гз.пд.
Остановимся на рассмотрении этих четырех типов данных. При записи числа могут использоваться только цифры (0-9), десятичная точка (.), знак (+) или ( — ) и (е) при экспоненциальном представлении. Число сохраняется либо как целое, либо как действительное. Любое число, состояшее только из цифр, перед которыми может стоять знак, сохраняется как целое (тип 1.п~едег представляется внутри СЫРЯ как тип языка С 1опя 1п1ецег). Все остальные числа сохраняются как действительные (й1оа~ — С доцЫе Йоа1).
Глава б. Системы, пснпванныв на знаниях Количество значащих цифр зависит от аппаратной реализации. В этой же связи могут возникать ошибки округления. Как в любом языке программирования, особенную осторожность необходимо проявлять при сравнении чисел с плавающей точкой, а также при сравнении с ними целых чисел. Примеры целых чисел: 237 15 +12 -32 Примеры чисел с плавающей точкой: 237е3 15.О9 +12.0 -32.3е-7 Последовательность символов, которая не удовлетворяет числовым типам, обрабатывается как тип данных я ужЬо1, Тип данных аутпЬо1 в СЫРБ — последовательность символов, состоящая из одного или нескольких любых печатных символов кода АБС11. Как только в последовательности символов встречается символ-разделитель, ву~пЬо1 заканчивается.
Следующие символы служат разделителями: любой непечатный АБС11 символ (включая пробел, символ табуляции, СК, 1 Г), двойные кавычки, "(", ")", "Й", "~", "<", "-", ";". Символы-разделители не могут включаться в зутпЬо! за исключением символа "<", который может быть первым символом в аутЬо1. Кроме того, ауглЬо1 не может начинаться с символа "?" или последовательности символов "И", поскольку эти символы зарезервированы для переменных. Заметим, что СЫРБ различает регистр символов. Ниже приведены примеры выражений символыюго типа: йос Не11а 576-Н1 Ьаб ~а1ые 127А 742-42-42 8+=-Ъ ЯеагсЬ Тип данных я~г1пд — это последовательность символов, состоящая из нуля и более печатных символов и заключенная в двойные кавычки. Если внутри строки встречаются двойные кавычки, то перед ними необходимо поместить символ (ф То же справедливо и для самого (~).
Несколько примеров: н~ и па а „с1 Ьи п1 и л~ ги па~ н. ~еи Отметим, что строка "аЬсй" ие тоже самое, что аЬсд. Они содержат одинаковые наборы символов, но являются экземплярами различного типа. Функции Под функцией в СЫРБ понимается фрагмент исполняемого кода, с которым связано уникальное имя и который возвращает полезное значение или имеет полезный побочный эффект (например, вывод информации на экран). Существует несколько типов функций. Пользовательские и системные функции — это фрагменты кода, написанные на внешних языках (например, на С) и связанныс со средой СЫРБ.
Системными называются те функции, которые были определены изначально внутри среды С1.1РБ. Пользовательскими называются функции, которые были определены вне СЫРБ. Базы Данных. Интеллектуальная обработка информации Хотя СКАРБ и не ориснтирована на численные вычисления, в ней предусмотрен ряд стандартных арифметических и математических функций.
Среди них: + Сложение Вычитание * Умножение Деление ** Возведение в степень АЬв Определение абсолютного значения яс(гг. Вычисление квадратного корня Моб Взятие по модулю ()1п Нахождение минимума Нахождение максимума Конструкция бегтппс~з.оп позволяет пользователю определять новые функции непосредственно в среде СЫРБ с использованием синтаксиса СПРЗ. Функции, определенные таким образом, вьплядят и работают подобно остальным функциям, однако они выполняются не напрямую, а интерпретируются средой С1ЛРБ. Вызовы функций в СПРЯ имеют префиксную форму: аргументы функции могут стоять только после ее названия.
Вызов функции начинается с открывающейся скобки, за которой следует имя функции, затем идут аргументы, каждый из которых отделен одним или несколькими пробелами. Аргументами функции могут быть данные простых типов, переменные или вызовы других функций. В конце вызова ставится закрывающаяся скобка. Ниже приведены примеры вызовов функций; (+ 3 4 5) (* 5 6.() 2) (+ 3 (* 8 9) 4) (" 8 (+ 3 (* 2 3 4) 9) (" 3 4) ) Конструкции В С(ЛРБ существует несколько описывающих конструкций: бе1вобы1е, бейгп1е, бейХас~в, беХгевр1а~е, беЕд1оЬа1, беййцпсг1оп, бейс1ааз, бей1пв~апсев, беГвевваде-йапб1ег, бейдепет1с.
При записи все они заключаются в скобки. Определение конструкции отличается от вызова функции главным образом по производимому эффекту. Обыч- Глава 6. Системы, основанные на знаниях но вызов функции оставляет состояние среды С1 1РБ без изменений (за рядом исключений, когда речь идет о функциях сброса, очистки, открытия файла и т.п.). Определение конструкции, напротив, в точности направлено на изменение состояния среды путем внесения изменений в базу знаний СЫРЗ. В отличие от функций конструкции никогда не возвращают значений.
Все конструкции (за исключением сне йд1оЬа1) позволяют размещать комментарии сразу вслед за именем конструкции. Кроме того, комментарии могут вставляться в код СЫРЯ при помощи точки с запятой (;). Все, что следует за (;) до конца строки, будет игнорироваться СЫРБ. Если (;) стоит первым символом в строке, то вся строка считается комментарием.
6.3.2.2. Факты Факты являются одной из основных форм представления информации в системе СЫРБ. Каждый факт представляет фрагмент информации, который был помещен в текущий список фактов, называемый йас~-11вс. Факт представляет собой основную единицу данных, используемую правилами. Количество фактов в списке и объем информации, который может быть сохранен в факте, ограничивается только размером памяти компьютера. Если при добавлении нового факта к списку обнаруживается, что он полностью совпадает с одним из уже включенных в список фактов, то эта операция игнорируется (хотя такое поведение можно изменить), Факт может описываться индексом или адресом. Всякий раз, когда факт добавляется (изменяется), ему присваивается уникальный целочисленный индекс.