Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Еремеев А.П., Чибизова Н.В. Методическое пособие по курсу «Экспертные системы».doc
Скачиваний:
76
Добавлен:
02.05.2014
Размер:
1.32 Mб
Скачать
      1. Редактирование правил

Покажем, как редактировать уже созданные правила. Будем использовать правила из предыдущих примеров. Для этого запустим программу editxs.exe, в качестве файла БЗ укажем файл, который был создан в первом примере.

Система будет задавать вопросы относительно характеристик БЗ. Отметим, что вопросы будут заданы только для тех характеристик, которые мо­гут быть изменены. По умолчанию принимаются ранее установленные значения. Вначале будет предложено изменить режим поиска применимых правил. Оставим его без изменения, т.е. будут просматриваться все правила. Далее следует вопрос об изменении режима отображения применяемых правил. Также оставим этот режим без изменения. Не будем изменять и режим проверки новых правил. На этом заканчиваются вопросы, связанные с изменением характеристик БЗ, и приступим к редактированию правил.

Вызовем первое правило, нажав клавишу <Е> и указав номер правила – 1. На экране появится созданное ранее правило, в нижней части экрана будет находиться меню команд редактирования его частей (рис. 2.2).

Вначале изменим THEN-часть правила. Для этого нажмем клавишу <T>. Программа отобразит три заключения из THEN-части правила. При этом изменятся команды меню (рис.2.3).

Можно удалить, добавить, изменить заключения или изменить их порядок. Добавим заключение нажатием клавиши <A>: High printing speed is unnecessary. При вводе этого заключения использовали квалификатор. Удалим третье заключение, нажав клавишу <D>, а затем указав номер три. Изменим уже новое заключение три. При изменении существующее заключение будет удалено, но автоматически будет вызван квалификатор, и нужно указать его новое значение. Новым значением будет necessary. Порядок заключений в THEN и ELSE-части менее важен, чем порядок условий в IF-части правила. Тем не менее, изменим порядок следования заключений.

Рис.2.2. Меню команд редактирования правил

Рис. 2.3. Пример меню

В итоге получим:

1 High printing speed is necessary

2 Model A – Probability = 0/10

3 Model B – Probability = 0/10

Завершим редактирование нажатием клавиши <ENTER>. Появится меню, изображенное на рис. 2.3. Можно выбрать желаемое правило с помощью клавиш <>, <>. Удалим первое правило. При удалении правила система выдаст запрос на подтверждение.

Имеется возможность перестроить порядок правил, при этом можно перенумеровывать целые блоки правил. Для изменения порядка правил необходимо нажать клавишу <M>. Далее нужно указать старые и новые номера правил.

На этом закончим редактирование правил, нажав клавишу <S> для сохранения произведенных изменений и выхода из программы.

      1. Использование внешних программ

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

Как и ранее, введем название предметной области, имя автора. Для разнообразия выберем третью шкалу вероятности.

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

Следующей характеристикой является использование внешних программ при запуске экспертной системы. В данном случае используем внешние программы. В качестве такой программы будем использовать небольшую программу, которая рассчитывает среднее для введенных значений. Эта программа называется average.exe и находится в одном каталоге вместе с экспертной системой Exsys.

Далее система предложит задать варианты выбора. Так как в этом примере будет демонстрироваться лишь использование внешних программ, то введем «CHOICE 1,…,CHOICE N».

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

Зададим новое правило. Введем переменную [COUNT], которая будет содержать количество введенных пользователем чисел. Об этой переменной нужно сообщить информацию системе. Эта переменная – численная, ее не нужно инициализировать, ее значение будет связано с внешней программой. Можно задать диапазон допустимых значений для этой переменной, но в данном случае этого делать не будем. Также введем переменную [AVERAGE], в которой будет содержаться соответствующий результат работы внешней программы. Характеристики этой переменной аналогичны характеристикам переменной [COUNT]. Описания этих переменных должны быть заданы так же, как если бы их значения задавал пользователь.

В IF-части правила произвольно зададим условие [COUNT]>3 and [AVERAGE]>5. THEN- и ELSE-части определим соответственно: Choice 1 – Probability=56/100 и Choice 3 – Probability=73/100. В итоге получим правило:

RULE NUMBER: 1

IF: (1) [COUNT] > 3

and (2) [AVERAGE] > 5

THEN: (1) Choice 1 – Probability = 56/100

ELSE: (1) Choice 3 – Probability = 73/100

Внешняя программа должна указывать, значения каких переменных или квалификаторов передаются экспертной системе. В данном случае [COUNT] будет переменной 1, а [AVERAGE] будет переменной 2. Внешняя программа должна возвращать значение для [COUNT] путем записи в файл RETURN.DAT строки, начинающейся с префикса V1. Строка со значением переменной 2 должна начинаться префиксом V2.

Теперь определим квалификатор The letter selected was, чье значение также будет получено от внешней программы. Квалификатор имеет два значения: A и B. Внешняя программа потребует от пользователя ввести одно из значений квалификатора. Данные, возвращаемые в файл RETURN.DAT должны быть в следующем формате: буква Q, указывающая на квалификатор, номер квалификатора, одно или несколько значений квалификатора (числовые значения квалификаторов). Например, запись Q1 1,2 означает, что выбраны первое и второе значения для перового квалификатора.

Зададим следующее правило:

RULE NUMBER: 2

IF: (1) The letter selected was A

THEN: (1) Choice 1 – Probability = 34/100

ELSE: (1) Choice 2 – Probability = 89/100

Рассмотрим другой тип внешних программ – программ, связанных с единственной переменной. Для этого определим переменную [NUM]. Программа average.exe не пригодна для того, чтобы возвращать значения этой переменной. Как обычно, нужно сообщить системе характеристики новой переменной. С переменной [NUM] хотим связать внешнюю программу. Для этого при вводе текста, описывающего эту переменную нужно написать RUN(имя_файла), а затем записать привычный комментарий. Начиная описание переменной с RUN(…), сообщим системе, что в момент, когда потребуется ее значение, должна вызваться внешняя программа, которая это значение вычислит. Значение переменной также должно быть записано в файл RETURN.DAT. Exsys автоматически выберет это значение и свяжет его с переменной [NUM]. Внешняя программа будет вызываться только в том случае, когда требуется значение переменной [NUM]. Для этих целей имеется программа getnum.exe, она находится в каталоге с экспертной системой.

Определим квалификатор, с которым связана программа getcolor.exe. Программа getcolor.exe будет возвращать цвет, выбранный пользователем. Значение(я) цвета должно передаваться в формате, описанном выше. Задавая его текстовое описание квалификатора, вначале запишем RUN(getcolor), затем будет следовать имя квалификатора: the color selected is. Значения квалификатора: red, blue, yellow, green.

Зададим следующее правило:

RULE NUMBER: 3

IF: (1) [NUM] > 0

And (2) The color selected is red or yellow

THEN: (1) Choice 2 – Probability = 27/100

ELSE: (1) Choice 1 – Probability = 10/100

В итоге получили ЭС, использующую три внешние программы. Рассмотрим, как работает полученная ЭС. Запустим программу Exsys.exe, в качестве файла БЗ зададим имя, только что созданного файла. Необходимо инициализировать переменные и квалификаторы. Для инициализации переменных [AVERAGE] и [COUNT], а также квалификатора The letter selected was используется программа average.exe. На экране появятся следующие сообщения:

You are now in the external program AVERAGE.EXE.

This program will calculate the average of any number of values you enter.

The number of values entered and the average will be passed back to EXSYS

Enter a value >0 to be averaged. To end input press <ENTER>:

Предлагается ввести несколько положительных чисел. Введем числа 1, 7, 9, 22, 5. В результате увидим:

5 VALUES WERE ENTERED. THE AVERAGE = 8.800000.

Затем предлагается ввести значение(я) квалификатора, мы выберем 1-е значение. После этого управление передается ЭС.

Так как в БЗ имеются правила, в которых используются значения переменной [NUM] и квалификатора The color selected is, связанных с внешними программами, эти программы также вызываются.

На экране появятся следующие сообщения:

You are now in the external program GETNUM.EXE.

This program will ask for a value and pass it back to EXSYS.

Enter a value to be passed to EXSYS:

Введем значение 6, после чего увидим:

You are now in the external program GETCOLOR.EXE.

This program will ask for a color and pass it back to EXSYS.

Please type the name of your favorite color among red, blue, green, yellow

Выберем первое и второе значения квалификатора. После этого ЭС завершает свою работу и отображает результаты.

Values based on -100 to +100 system

VALUE

1. Choice 1

45

2. Choice 2

27

3. The number of values that were averaged

5.0

4. The average value

8.80

5. The number entered in the external program

6.0