Построение экспертных систем в среде ИНТЕР-ЭКСПЕРТ
Практическая работа № 1
СОЗДАНИЕ МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ. Создание экспертной системы в интегрированной среде ИНТЕР-ЭКСПЕРТ
Цель работы: проектирование экспертных систем в заданной предметной области с помощью продукционной модели и представление правил в виде дерева. Создание экспертных систем в среде ИНТЕР-ЭКСПЕРТ.
Краткое теоретическое введение Основные понятия экспертных систем Экспертные системы (ЭС) – это сложные программные комплексы, аккумулирующие знания специалистов в конкретных предметных областях и тиражирующие этот эмпирический опыт для консультаций менее квалифицированных пользователей. ЭС предназначены для решения практических задач, возникающих в слабо структурированной и трудно формализуемой предметной области. ЭС были первыми системами, которые привлекли внимание потенциальных потребителей продукции искусственного интеллекта. Определим понятия, связанные со структурой ЭС. Пользователь – специалист предметной области, для которого предназначена система. Обычно его квалификация недостаточно высока, и поэтому он нуждается в помощи и поддержке своей деятельности со стороны ЭС. Инженер по знаниям (когнитолог) – специалист по искусственному интеллекту, выступающий в роли промежуточного буфера между экспертом и базой знаний. Интерфейс пользователя – комплекс программ, реализующих диалог пользователя с ЭС как на стадии ввода информации, так и получения результатов. База знаний (БЗ) – ядро ЭС, совокупность знаний предметной области, записанная на машинный носитель в форме, понятной эксперту и пользователю. Параллельно такому "человеческому" представлению существует БЗ во внутреннем "машинном" представлении.
Решатель – программа, моделирующая ход рассуждений эксперта. Синонимы: дедуктивная машина, блок логического вывода. Подсистема объяснений – программа, позволяющая пользователю получать ответы на вопросы: "Как была получена та или иная рекомендация?" и "Почему система приняла такое решение?" Интеллектуальный редактор БЗ – программа, представляющая инженеру по знаниям возможность создавать БЗ в диалоговом режиме. Включает в себя систему машинного меню, шаблонов языка представления знаний, и сервисных средств, облегчающих работу с базой. В настоящее время сложилась технология разработки ЭС, которая включает следующие шесть этапов: идентификация, концептуализация, формализация, выполнение, тестирование и опытная эксплуатация. Идентификация задачи заключается в составлении неформального (вербального) описания, в котором указываются: общие характеристики задачи; подзадачи, выделяемые внутри данной задачи; ключевые понятия (объекты), их входные (выходные) данные; предположительный вид решения, а также знания, относящиеся к решаемой задаче. На этапе концептуализации определяются следующие особенности задачи: типы доступных данных; исходные и выводимые данные, подзадачи общей задачи; используемые стратегии, а также проводится содержательный анализ проблемной области, выявляются используемые понятия и их взаимосвязи, определяются методы решения задач. Этот этап завершается созданием модели предметной области. Цель формализации – создание одного или нескольких прототипов ЭС, решающих требуемые задачи. Затем по результатам тестирования и опытной эксплуатации создается конечный продукт, пригодный для промышленного использования. Разработка прототипа состоит в программировании его компонентов или выборе их из известных инструментальных средств и наполнении базы знаний.
В ходе тестирования производится оценка выбранного способа представления знаний в ЭС в целом. Для этого инженер по знаниям подбирает примеры, обеспечивающие проверку всех возможностей разработанной ЭС. На этапе опытной эксплуатации проверяется пригодность ЭС для конечного пользователя. При создании ЭС используют различные модели представления знаний: логические, продукционные, сетевые. Наибольшее распространение получили ЭС, основанные на продукционных правилах. База знаний ЭС продукционного типа состоит из множества правил вида: ЕСЛИ С ТО Х, где С – последовательность выражений, определяющих условия активации правила; Х – последовательность действий, которые могут модифицировать состояние рабочей памяти. В качестве инструментальных для создания ЭС могут выступать как языки программирования, так и специализированные инструментальные пакеты для разработки ЭС. Построение экспертных систем в среде ИНТЕР-ЭКСПЕРТ Структура набора правил Набор правил может иметь пять разделов (максимальное количество семь), которые появляются в любом порядке в пределах файла. Окончание набора обозначается END: label. За каждым именем раздела и каждым именем предложения следует двоеточие: GOAL: раздел цели INITIAL: раздел инициализации RULE: раздел правила VARIABLE: раздел переменной COMPLETION: раздел завершения Раздел цели Раздел цели начинается со слова GOAL GOAL: gvar Переменная gvar – безусловная цель набора правил. Если при запросе консультации (CONSULT TO SEEK) переменная цели не специфицируется, то цель консультации gvar. Если же при таком запросе целевая переменная обозначена, то безусловная цель gvar игнорируется. Например: GOAL: x GOAL: AB52
Инициализация Последовательность инициализации представляет собой серию из одной и более команд, которые ИНТЕР-ЭКСПЕРТ выполняет при консультации с набором правил. Чтобы пробные консультации можно было повторить в ходе отладки, необходимо присвоить значения UNKNOWN изменившимся переменным в последовательности инициализации. Раздел инициализации начинается словом INITIAL и состоит из серии, включающей в себя один и более операторов ИНТЕР-ЭКСПЕРТ:
INITIAL: statement Каждый оператор (statement) – действительная команда ИНТЕР-ЭКСПЕРТ. Если командный оператор не умещается на одной строке, закончите эту строку обратной косой чертой и продолжите команду на следующей строке.
INITAL: INPUT REG WITH "Введите имя района:" TEST REG CASE "Восток": FACTOR = 1.073: BREAK; CASE "Запад": FACTOR = 1.06: BREAK; CASE "Юг": FACTOR = 1.113: BREAK; OTHERWISE: FACTOR = 1.05; ENDTEST SELECT * FROM SALESTAB WHERE REG IN ["Восток", \ "Запад", "Юг"] ORDER BY DESCENDING SALES FACTOR = FACTOR * #AVER (3) E.RIGR = "A" Прeдлoжения завершения Последовательность завершения – серия, состоящая из одной или более команд ИНТЕР-ЭКСПЕРТ, которые система ИНТЕР-ЭКСПЕРТ выполнит, как только будет завершена вся аргументация набора правил.
DO: statement Statement
Разделы правил Набор правил – группа из одного или нескольких последовательных разделов правил. В каждом разделе определяется одно правило. Раздел правила начинается со слова RULE и имеет несколько предложений, которые появляются в любом порядке в рамках раздела правила: RULE: rname COMMENT: ctext IF: premise TNEN: tstatement REASON: rtext Метка RULE содержит имя правила, длина которого не должна превышать восемь символов, первый – буквенный. Запрещается использовать ключевое слово ИНТЕР-ЭКСПЕРТа в качестве имени правила. Посылка предложения IF представляет собой любое действительное логическое выражение. В ходе консультации ИНТЕР-ЭКСПЕРТ выполняет действия, содержащиеся в заключении правила, в том случае, если посылка окажется TRUE (а не FALSE или UNKNOWN). Предложение THEN специфицирует действия, которые предпринимаются, если посылка правила – TRUE. Каждый оператор в последовательности действий – любая действительная команда ИНТЕР-ЭКСПЕРТ. Предложение REASON содержит текст пояснений, отображающийся в ходе или после консультации. Например: RULE: HISALES IF: SALES> QUOTA*1.2 THEN: PFACTOR = SALES/QUOTA – 2 REASON: Когда объем продаж более чем на двадцать процентов превосходит квoту (план), избыточный процент следует учитывать как коэффициент при определении новой квоты. Описание переменных Раздел переменной может иметь до семи произвольных предложений, например:
VARIABLE: wvar LABEL: ltext FIND: statement,
где wvar – имя переменной, ltext – метка, содержащая до 48 символов текста, который ИНТЕР-ЭКСПЕРТ отобразит, ссылаясь к переменной при объяснении своей аргументации. Если метки вообще не существует, то используется имя переменной. FIND – последовательность нахождения представляет собой серию из одной или более команд, которые выполняет ИНТЕР-ЭКСПЕРТ, чтобы найти значение переменной, если она типа UNKNOWN. Например, это может быть команда INPUT, подсказывающая ввести значение переменной, или она может быть расширенным процедурным файлом, определяющим это значение.
Koмпиляция набора правил Компиляция набора правил осуществляется с помощью пункта меню «Компиляция» либо в командном режиме (Изменение среды>Командный режим) посредством команды COMPILE ruleset, где ruleset – имя набора правил, находящегося в файле ruleset.RSS. ИНТЕР-ЭКСПЕРТ компилирует указанный набор правил и сохраняет результат в файле ruleset.RSC. Выход из командного режима осуществляется командой BYE.
Пример программы /* INVESTOR.RSS */ GOAL: advice INITIAL: macro skip output "" /* Определение макрокоманды SKIP*/ e.tryp = "e" e.rigr = "m" e.lstr = 80 /* Maксимальная длина строки 80 */ e.deci = 0 /* Нет цифр после десятичной запятой*/ e.lnum = 8 /* Длина числа */ savperdep = 5000 incperdep = 4000 basincome = 15000 advice = unknown goodsave = unknown goodincome = unknown income = unknown savings = unknown steady = unknown needincome = unknown dependents = unknown newcash = unknown clear at 2,27 output "КАПИТАЛОВЛОЖЕНИЯ" skip skip input newcash num with "Какую сумму наличных денег Вы хотели бы вложить?" DO: /* Этот раздел выполняется после обработки правил*/ skip skip output "На основе данной информации:" skip test advice case "акции": output " Вам следует вложить всю сумму в акции." break case "сбережения": output "Вам следует поместить всю сумму в банк." break case "компромисс": tosave = min(newcash, (savperdep * dependents) - savings) tostock = max(0, newcash - tosave) output " Вам следует поместить в сбережения: ", \ tosave using "ff,fff,fff","." if tostock > 0 then output " И вложить ",tostock using "ff,fff,fff",\ " в акции." endif break endtest e.deci = 2 e.lnum = 14 skip skip RULE: R1 IF: goodincome and goodsave THEN: advice = "акции" NEEDS: goodincome goodsave REASON: Вкладывать в акции, если клиент надежный в финансовом отношении. RULE: R2 IF: not goodincome THEN: advice = "сбережения" NEEDS: goodincome REASON: Не вкладывайте в акции, если Ваш доход в настоящее время неустойчив. RULE: R3 IF: not goodsave and goodincome THEN: advice = "компромисс" REASON: Если сбережения небольшие, тогда они должны быть увеличены до того, как их вкладывать. RULE: R4 IF: not steady THEN: goodincome = false REASON: Для хорошего дохода необходима постоянная работа.
RULE: R5 IF: not (income > needincome) THEN: goodincome = false REASON: Доход не зависит от Вас и иждивенцев. RULE: R6 IF: steady and (income > needincome) THEN: goodincome = true REASON: Чтобы доход был хорошим, клиент должен иметь постоянную работу. RULE: R7 IF: known("income") and known("dependents") THEN: needincome = basincome + (dependents * incperdep) REASON: Необходимый доход - это основной доход, который Вам необходим, плюс общий доход Ваших иждивенцев. RULE: R8 IF: savings > (savperdep * dependents) THEN: goodsave = true NEEDS: savings dependents REASON: Сбережения клиентов должны зависеть от них самих и иждивенцев. RULE: R9 IF: savings <= (savperdep * dependents) THEN: goodsave = false NEEDS: savings dependents REASON: Сбережения клиентов не зависят от них самих и иждивенцев. /* Определение переменных */ VAR: NEWCASH LABEL: Сумма наличных денег для вклада VAR: ADVICE LABEL: Данный совет VAR: GOODINCOME LABEL: Текущий доход - хороший VAR: GOODSAVE LABEL: Текущие сбережения - хорошие VAR: NEEDINCOME LABEL: Необходимая сумма дохода VAR: INCOME FIND: skip input income num with \ " Какой Ваш годовой доход семьи? " LABEL: Текущий доход VAR: SAVINGS FIND: skip input savings num with \ " Сколько у Вас сбережений? " LABEL: Текущие сбережения VAR: STEADY FIND: skip input steady str using "u" with \ "Можете ли Вы ожидать стабильный доход на следующий год? (y/n) " steady = (steady = "Y") LABEL: Надежный доход VAR: DEPENDENTS LABEL: Число иждивенцев FIND: skip input dependents num using "dd" with \ " Сколько у Вас иждивенцев? " END:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|