На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

Экспертный компонент системы автоматизированного исследовательского проектирования

Статья опубликована в выпуске журнала № 2 за 2000 год.
Аннотация:
Abstract:
Авторы: Табаков В.М. () - , Иванов Ю.К. () -
Ключевое слово:
Ключевое слово:
Количество просмотров: 10102
Версия для печати
Выпуск в формате PDF (0.84Мб)

Размер шрифта:       Шрифт:

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

Одним из типов прикладных ЭС являются системы проектирования. Системы проектирования строят конфигурации, которые удовлетворяют ограничениям, присущим данной задаче проектирования. В системах проектирования строятся различные сочетания описаний объектов друг с другом и проверяется, удовлетворяют ли подобные конфигурации сформулированным ограничениям. Кроме того, во многих системах проектирования делается попытка минимизировать некоторую целевую функцию, учитывающую затраты и другие параметры будущих проектов. Такой взгляд на систему проектирования позволяет включить сюда задачу о целенаправленном поведении, в которой целевая функция служит мерой приближения к цели [1].

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

В системе автоматизированного исследовательского проектирования (САИПР) "Чертеж-4" реализована продукционная схема представления знаний. Язык продукций, наряду с алгоритмическими языками, представленными в оболочке САИПР, является равноправным средством описания моделей. Этот язык является гибридным, так как допускает использование языковых конструкций алгоритмического языка С++.

Экспертный компонент состоит из следующих подсистем:

-                    редактор наборов правил;

-                    компилятор наборов правил;

-                    интерпретатор знаний – механизм логического вывода (механизм аргументации) со средствами объяснения и трассировки логического вывода.

Процесс построения исполняемого модуля системы представлен на рисунке.

Редактор наборов правил встроен в основную среду разработки и представляет собой стандартный текстовый редактор с дополнительными элементами управления процессом построения исполняемого экспертного модуля.

Двухпроходный компилятор наборов правил осуществляет преобразование исходного набора в вид, пригодный для интерпретации механизмом логического вывода, и строит корректный С++-модуль с функциями управления механизмом логического вывода и всеми конструкциями языка С++, которые встретились в наборе правил.

Окончательное построение исполняемого модуля осуществляется стандартными средствами среды разработки Microsoft Visual C++.

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

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

В механизме логического вывода реализованы три метода вывода – прямой, обратный и смешанный.

Прямой вывод, иногда называемый выводом от фактов к цели, рассматривает каждое правило в прямом направлении, то есть от посылки к заключению. Если же посылка истинна, правило запускается и выполняются действия заключения. Если посылка правила окажется ложной, тогда действия, указанные в заключении, не выполняются, а рассматривается другое правило.

Процесс построения исполняемой экспертной системы

Обратный вывод заключается в разделении общей проблемы на ряд подпроблем. Каждая из них может быть, в свою очередь, разбита на свои подпроблемы. Другими словами, механизм вывода стремится прежде всего определить неизвестное значение переменной, представляющей в данный момент текущую цель. Так же обрабатываются и все остальные правила, способные определить текущую цель, и механизм вывода сосредоточивается на их решении.

В системе существует еще одна стратегия логического вывода – смешанный вывод, выполнение которого позволяет динамически изменять направление процесса аргументации.

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

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

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

Основные конструкции наборов правил

Набор правил состоит из обязательных и необязательных разделов. Имена разделов записываются прописными буквами и заканчиваются двоето- чием (:). Порядок разделов в наборе правил не имеет значения для компилятора и может быть произвольным. Допускается пересечение разделов, например, раздел инициализации можно вставлять между правилами или описанием переменных. Порядок расположения правил является определяющим в приоритете выбора для механизма логического вывода.

Обязательные разделы набора правил:

-                    раздел цели (ЦЕЛЬ:);

-                    раздел правила (ПРАВИЛО:);

-                    раздел окончания набора (КОНЕЦ:).

Необязательные разделы:

-                    раздел переменной (ПЕРЕМЕННАЯ:);

-                    раздел инициализации (ИНИЦИАЛИЗАЦИЯ:);

-                    раздел вывода результатов (ВЫВОД:).

Раздел цели представляется ключевым словом ЦЕЛЬ: и следующим за ним идентификатором имени переменной, которая является явной или условной целью данного набора правил. Раздел цели является обязательным разделом, поэтому всегда одна переменная должна быть объявлена как переменная цели.

Иногда удобнее строить набор правил для достижения нескольких целей, в этом случае можно действовать несколькими путями.

Если необходимо при консультации с набором правил получить одновременно несколько целей, например, получить комплексную оценку научного эксперимента по нескольким обязательным несвязанным критериям, то можно создать искусственную цель: например, КОМПЛЕКСНАЯ_ ОЦЕНКА, которая будет являться только индикатором того, получены ли все составляющие цели или нет.

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

Например:

ПРАВИЛО: ЦЕЛЬ

ЕСЛИ: цель_1 & цель_2 & цель_3 & цель_4

ТО: КОМПЛЕКСНАЯ_ОЦЕНКА=ИСТИНА

ОБЪЯСНЕНИЕ: комплексная оценка достигается при определении составляющих целей 1-4.

Вообще возможность формирования неявных фреймов в данной системе представляется очень важной и позволяет говорить о возможности работы с объектами в пределах набора правил и о некоторой гибридности представления и обработки знаний в системе.

В случае когда вам требуется использовать несколько независимых наборов правил в одном приложении, следует использовать другой способ задания цели. Так как в готовый продукт может быть встроен только один откомпилированный набор правил, то следует разместить ваши независимые наборы правил в один файл набора, задав в разделе ЦЕЛЬ: имя цели одного из них. Для других наборов никаких дополнительных целей задавать не надо. Для вывода других целей при вызове механизма логического вывода следует воспользоваться параметрической настройкой.

В системе предусмотрена глобальная переменная, которой можно присвоить значение имени переменной, отличной от объявленной в разделе ЦЕЛЬ:. Если значение этой переменной задано, то вывод будет осуществляться исходя из вновь назначенной цели. Это позволяет в одном наборе правил размещать множество разнородных наборов, активизируя нужный заданием соответствующей цели.

Раздел инициализации представляется ключевым словом ИНИЦИАЛИЗАЦИЯ: и следующим за ним процедурным блоком.

ИНИЦИАЛИЗАЦИЯ: <процедурный блок>

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

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

Раздел вывода результатов представляет собой конструкцию вида

ВЫВОД: <процедурный блок>

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

Раздел вывода результатов условно называется так, поскольку после выполнения консультации может не понадобиться выводить результаты, например на экран, а просто передавать их другим компонентам интегрированной системы. Этот раздел является необязательным. Вывод или передачу данных можно организовать и другими способами, например, из процедурных блоков предложений ТО: или ЗАВЕРШЕНИЕ: правила, в котором определяется переменная цели.

Раздел правил представляет собой одну или множество конструкций следующего вида:

ПРАВИЛО: <идентификатор имени правила>

ЕСЛИ: <логическое выражение>

ТО: <процедурный блок>

НАЧАЛО: <процедурный блок>

ЗАВЕРШЕНИЕ: <процедурный блок>

ОБЪЯСНЕНИЕ: <текст>

В разделе правил должно быть минимум одно правило, иначе теряется смысл какого-либо логического вывода.

Конструкция ЕСЛИ: <логическое выражение> совместно с предложением ТО: является основным носителем знаний ЭС. Предложение ЕСЛИ: называется посылкой правила, или его левой частью. Логическое выражение представляет собой один или множество фактов, отображенных идентификаторами имен переменных, выражений арифметического или логического типа, соединенных знаками реляционных и логических операций.

Например:

ЕСЛИ: (а=5 & c=b*0.25) ! (d & f>3)

Запись, представленная здесь, подобна записи логических выражений в языках программирования или языках инструментальных систем. Если логическое выражение принимает значение ИСТИНА, то это означает активизацию правила, то есть начинают выполняться процедурные действия из процедурного блока предложения ТО: данного правила.

Когда логическое выражение, представленное в предложении ЕСЛИ: принимает значение ИСТИНА, то говорят, что правило активизируется и начинают выполняться действия, представленные в предложении

ТО: <процедурный блок>

По аналогии с тем, что ЕСЛИ: еще называют левой частью правила, ТО: иногда называют правой частью правила, а в случае когда о ЕСЛИ: говорят, как о "посылке" правила, ТО: называют заключением правила.

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

Предложение ТО: – это одно из основных предложений, через которое организуется интеграция с использованием конструкции СИ:[…]. Так как действия в предложении ТО: выполняются в результате активизации правила, то очевидно, что действием правила достигаются какие-то временные и основные цели, и это, возможно, потребует передачи значений этих целей (подцелей) в другие блоки системы, например, в базы данных или в расчетные блоки.

Предложения НАЧАЛО: и ЗАВЕРШЕНИЕ: представляют собой процедурные блоки, выполняющиеся перед и после попытки активизации правила соответственно, и выполнением которых можно управлять с помощью специальных управляющих параметров.

Конструкция ОБЪЯСНЕНИЕ: <текст> играет двоякую роль в системе.

Во-первых, <текст> содержит смысловое объяснение действия правила и участвует в построении объяснений действия ЭС, во-вторых, <текст> может служить подсказкой в объяснении причин запроса значения какой-либо переменной в системе. Рассмотрим более подробно оба эти случая.

Одним из свойств ЭС является способность объяснять свои действия, в частности, цепочку рассуждений при попытке достижения какой-либо цели.

Цель определяется, как правило, путем последовательной активизации какого-либо количества правил, каждое из которых имеет свое смысловое предназначение в цепочке логического вывода и выводит значения каких-либо подцелей. Текст из предложения ОБЪЯСНЕНИЕ: и должен позволить воссоздать логическую цепочку объяснения действий всего набора. Этот текст выводится только для активизированных правил совместно со значениями фактов, которые использовались в предложениях ЕСЛИ: и ТО: наборов правил на момент активизации конкретного правила. Система объяснений может быть запрошена заданием соответствующего параметра режима консультации с ЭС.

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

В момент запроса значения в стандартном окне запроса нажатием кнопки "ПРАВИЛО" можно запросить текст из предложения ОБЪЯСНЕНИЕ: того правила, которое рассматривается в данный момент механизмом логического вывода.

Раздел переменной представляет собой необязательную конструкцию, состоящую из следующих необязательных предложений:

ПЕРЕМЕННАЯ: <идентификатор_переменной>

ТИП: { ЧИС[ЛО], СТР[ОКА], ЛОГ[ИЧЕСКИЙ], ЦЕЛ[ЫЙ], ССЫЛКА }

ОПРЕДЕЛЕНИЕ: <процедурный блок>

МЕТКА: <текст метки>

РАЗМЕР: <число символов (1-255)>

КОЛИЧЕСТВО: <число (1-255)>

ЗНАЧЕНИЯ: <значения переменной (1-20)>

Предложение ПЕРЕМЕННАЯ: <идентификатор> предназначено для именования заголовка блока набора правил, задающего дополнительные (уточняющие) характеристики данной переменной, в частности значения, которые могут быть присвоены переменной, или процедурные действия, приводящие к нахождению значений данной переменной.

Предложение МЕТКА: <текст> содержит текст, который описывает суть данной переменной. Поскольку правила записи идентификаторов переменных допускают размер идентификаторов до 31 символа, суть переменной можно выразить в самом идентификаторе, в результате в предложении МЕТКА: отпадет необходимость.

Предложение ОПРЕДЕЛЕНИЕ: <процедурный блок> может содержать процедурный блок, в котором выполняются действия по нахождению и присвоению значения (значений) данной переменной.

Предложение ЗНАЧЕНИЯ: предназначено для задания возможных значений переменной. При необходимости определения значения переменной пользователю будет предложена форма для выбора из данного набора значений, отображаемого в виде списка. Использование этого предложения допустимо для списка, число элементов которого не превышает 255.

Предложением ТИП: <спецификатор типа> можно специфицировать один из четырех основных допустимых типов переменной – числовой, символьный (строковый), логический и целый. Пятым допустимым типом является специальная конструкция ССЫЛКА.

Запись вида КОЛИЧЕСТВО: <число> предназначена для спецификации максимального числа значений, которое может принимать конкретная переменная. В системе предусмотрена возможность присвоения каждой переменной от 1 до 255 значений. Число, следующее за ключевым словом количество:, указывает системе, какой объем памяти необходимо резервировать для хранения значений переменной. Если предложение количество: отсутствует, то предполагается, что переменная может иметь одно значение.

Предложение РАЗМЕР: <число> предназначено для спецификации размера только для символьных переменных и может содержать за ключевым словом РАЗМЕР: число от 1 до 254.

Специальные конструкции для организации интеграции с другими  компонентами САИПР

Специальная конструкция СИ:[…]

Элемент языка системы – конструкция СИ:[<фрагмент текста языка Си>] является основным интеграционным компонентом системы, с помощью которого организуется интеграция разнородных компонентов, обмен данными между ними и пользовательский интерфейс прикладной системы.

Конструкция <фрагмент текста языка Си> представляет собой исходный текст функционально самостоятельного блока программы на языке Си (Microsoft Visual С++), выполняющего какие-либо действия с использованием любых доступных операций языка Си и функций системных, инструментальных и пользовательских библиотек языка Си и его окружения.

Конструкция СИ:[...] может использоваться в следующих случаях:

-                    для передачи в систему значения из блока, реализованного на языке Си, и присвоения этого значения переменной набора правил;

-                    для передачи в блок программы на языке Си значения переменной из набора правил;

-                    для выхода в блок программы на языке Си с целью выполнения каких-либо действий без явного обмена данными;

-                    для выполнения действий, связанных с обработкой специальных функций обработки значений переменных и их факторов уверенности;

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

Спецификатор типа ССЫЛКА

Тип ССЫЛКА используется для организации прямого использования внешних переменных (из других компонент САИПР) в наборах правил. Это предложение может записываться в двух вариантах.

Первый вариант – ТИП: ССЫЛКА().

В этом случае в качестве имени переменной ссылки используется <имя переменной>, указанное в предложении ПЕРЕМЕННАЯ: <имя переменной>.

Второй вариант – ТИП: ССЫЛКА(<имя переменной>), где имя переменной может не совпадать с именем, указанным в предложении ПЕРЕМЕННАЯ:.

По имени переменной посредством специальной функции, встроенной в компилятор, организуется прием данных о внешней переменной – ее тип, размерность, метка и признак (входная/выходная).

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

Возможности экспертного компонента были опробованы при построении прототипа ЭС выбора состава оборудования и размещения основных групп систем управления техническими средствами на корабле [2].

Экспертный компонент, встроенный в САИПР "Чертеж-4", представляет собой модифицированную инструментальную систему COMP-C 2.0, которая совместно с системой COMP-Pascal 1.0 образуют семейство COMP–систем для построения экспертных приложений в наиболее популярных средах программирования MS Visual C++, Borland (Inprise) C++ Builder и Delphi [3].

Более подробную информацию о COMP-системах можно получить в Интернете на странице http://i7.da.ru

Список литературы

1. Построения экспертных систем: Пер. с англ./Под ред. Ф.Хейеса-Рота, Д.Уотермана, Д.Лената. - М.: Мир, 1987. - 441с.

2. Иванов Ю.К., Антипов В.В. Экспертная система исследовательского проектирования. - Научная сессия МИФИ-2000. //Сб. науч. тр.: В 13 т. - М.: МИФИ-2000. - Т.3. - 228с.

3. Иванов Ю.К. Инструментальные системы для построения экспертных приложений в Windows-95/98/NT. - Научная сессия МИФИ-2000. //Сб. науч. тр.: В 13 т. - М.: МИФИ-2000. - Т.3. - 228с.


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=874&lang=
Версия для печати
Выпуск в формате PDF (0.84Мб)
Статья опубликована в выпуске журнала № 2 за 2000 год.

Возможно, Вас заинтересуют следующие статьи схожих тематик: