Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕХНОЛОГИЯ ОБРАБОТКИ ИНФОРМАЦИИ | Лабораторная работа 2.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Редактор правил

Редактор базы знаний (Rule Editor) предназначен для формирования и модификации нечетких правил.

Общий вид редактора правил базы знаний приведен на рис.

В нижней части графического окна расположены кнопки Help и Close, которые позволяют вызвать окно справки и закрыть редактор, соответственно.

Редактор правил содержит четыре системных меню File, Edit, View, Options, меню выбора термов входных и выходных переменных, поля установки логических операций И, ИЛИ, НЕ и весов правил, а также кнопки редактирования и просмотра правил.

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

  • логическая связка переменных внутри правила – И;

  • логическая операция НЕ – отсутствует;

  • значение весового коэффициента правила – 1.

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

Для удаления правила из базы знаний необходимо сделать однократный щелчок левой кнопкой мыши по этому правилу и нажать кнопку Delete Rule.

Для модификации правила необходимо сделать однократный щелчок левой кнопкой мыши по этому правилу, затем установить необходимые параметры правила и нажать кнопку Edit Rule.

Пример разработки системы нечеткого вывода

В качестве примера разработки системы нечеткого вывода в интерактивном ре­жиме с помощью графических средств пакета Fuzzy Logic Toolbox рассмотрим следующую нечеткую модель.

"Чаевые в ресторане". Рассмотрим ситуацию в ресторане, при которой после окончания обслуживания посетителя принято оставлять официанту чаевые. Основываясь на устоявшихся обычаях и интуитивных представлениях посетителей ресторанов, величина суммы чаевых не является постоянной и зависит, например, от качест­ва обслуживания и качества приготовления заказанных блюд.

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

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

  1. Если обслуживание плохое или ужин подгоревший, то чаевые — малые.

  2. Если обслуживание хорошее, то чаевые — средние.

  3. Если обслуживание отличное или ужин превосходный, то чаевые — щедрые.

В качестве входных параметров системы нечеткого вывода будем рассматривать 2 нечеткие переменные: "качество обслуживания" и "качество приготовления заказанных блюд" (или сокращенно — "качество ужина"), а в ка­честве выходного параметра — нечеткую переменную "величи­на чаевых".

В качестве множества первой переменной "качество обслу­живания" будем использовать множество Т1={"плохое", "хорошее", "оппичиое"}, а в качестве множества второй переменной "качество ужина" будем использовать множество Т2={"подгоревший"', "превосходный"}. В качестве множества выходной переменной "величина чаевых" будем использовать множество Т3={"малые", "средние", "щедрые"}. При этом каждый из темов первой и второй входной переменной будем оценивать по 10-балльной порядковой шкале, при которой цифре 0 соответствует наихудшая оценка, а цифре 10 — наилучшая оценка. Что касается термов выходной переменной, то будем предполагать, что малые чаевые составляют около 5% от стоимости заказанных блюд, средние чае­вые — около 15%, а щедрые чаевые — около 25%.

С учетом сделанных уточнений, рассмотренная субъективная информация о ве­личине чаевых может быть представлена в форме 3-х правил нечетких продук­ций следующего вида (система нечеткого вывода типа Мамдани):

ПРАВИЛО_1: ЕСЛИ "качество обслуживания плохое" ИЛИ "ужин подгоревший" ТО "величина чаевых малая"

ПРАВИЛО_2: ЕСЛИ "качество обслуживания хорошее" ТО "величина чаевых средняя"

ПРАВИЛО_3: ЕСЛИ "качество обслуживания отличное" ИЛИ "ужин превосход­ный" ТО "величина чаевых щедрая"

Процесс разработки системы нечеткого вывода в интерактивном режиме для рассмотренного выше примера "Чаевые в ресторане" состоит в выполнении сле­дующей последовательности действий:

Вызвать редактор систем нечеткого вывода FIS, для чего в окне команд на­брать имя соответствующей функции fuzzy. После выполнения этой коман­ды на экране появится графический интерфейс редактора FIS с именем систе­мы нечеткого вывода Untitled и типом системы нечеткого вывода (Мамдани), предложенными по умолчанию

Поскольку в примере рассматривается система нечеткого вывода с двумя входами, необходимо добавить в разрабатываемую систему FIS еще одну входную переменную. Для этого следует выполнить команду меню Edit>Add Variable... >Input. В результате выполнения этой команды на диаграмме сис­темы нечеткого вывода появится новый желтый прямоугольник с именем второй входной переменной: input2

3. Изменим имена входных и выходных переменных, предложенных системой MATLAB по умолчанию. Для этого необходимо выделить прямоугольник с именем соответствующей переменной, выполнив щелчок на его изображении на диаграмме (стороны выделенного прямоугольника имеют красный цвет). После этого следует набрать новое имя переменной в поле ввода Name в пра­вой части редактора FIS. Результат изменения имен переменных системы не­четкого вывода изображен на рис.

4. Изменим имя системы нечеткого вывода (Untitled), предложенное по умолча­нию. Для этого сохраним создаваемую структуру FIS во внешнем файле с именем qualnew.fis, выполнив команду меню File>Export>To Disk....

При этом будет вызвано стандартное диалоговое окно сохранения файла, в котором пользователю предлагается ввести имя соответствующего файла (расширение файла приписывается автоматически). Оставим без изменения предложенные системой MATLAB по умолчанию, метод нечеткого логического И (And method)— значение "min", метод нечеткого логического ИЛИ (Or method) — значение "max", метод импликации (Implication)— значение "min", метод аг­регирования (Aggregation) — значение "max" ' и метод дефаззификации (Defuzzification)— значение "centroid". Очевидно, эти значения могут быть изменены пользователем.

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

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

Вначале изменим диапазон определения значений входных переменных, для чего в полях ввода Range и Display Range изменим верхнее значение с 1 на 10 (баллов). Аналогично выполняются изменения соответствующих диапазонов для выходной переменной "tip", при этом верхнее значе­ние 1 следует заменить на 30 (%). Изменения подтверждаются нажатием на клавишу <Enter> на клавиатуре.

Далее изменим названия термов первой входной переменной "обслужи­вание", предложенные системой MATLAB по умолчанию (mf1, mf2, mf3) на "bad", "good", "very" соответственно. Оставим без изменения тип функций принадлежности переменных (треугольный trimf). Параметры функций принадлежности зададим в виде троек a b c, где a – нижняя граница интервала, b – середина интервала, с – верхняя граница интервала. Вид редактора функций принадлежности после внесенных изменений для первой из входных переменных изображен на рис.

Аналогичным образом изменим названия термов второй входной переменной "dinner" и удалим один из термов с соответствующей функцией принадлежно­сти. Переход к редактированию переменной осуществляется щелчком на изображении прямоугольника с име­нем необходимой переменной. Функции принадлежности ее термов и параметры зададим аналогично первой переменной.

Вид редактора функций принадлежности после внесенных изменений для второй входной переменной изображен на рис.

Наконец, изменим названия термов и параметры функций принадлежности для выходной переменной tip", оставив без изменения треугольный тип функ­ций принадлежности, предложенный системой MATLAB. Для терма "little" зададим параметры [0 5 10], для терма "small"— [10 15 20], для терма " ched" — [20 25 30]. Вид редактора функций принадлежности после сделан­ных изменений для выходной переменной "tip" изображен на рис.

6. Теперь настала очередь определить правила нечеткого вывода для разраба­тываемой экспертной системы. Для этой цели следует воспользоваться редак­тором правил.

Поскольку первоначально база правил нечеткого вывода пуста, то после вы­зова редактора правил центральное многострочное поле ввода не содержит никаких правил. Для их определения следует использовать поля меню и пере­ключатели в нижней части графического интерфейса редактора правил. Для задания первого правила следует оставить выделенное по умолчанию поле с именем терма "bad" для первой входной переменной, поле с именем терма "gor" - для второй входной переменной и поле с именем терма "little" - для выходной переменной. Далее следует переключатель Connection поставить в положение or (логическое ИЛИ) и нажать на кнопку Add rule. После этого первое правило отобразится в верхнем окне.

Аналогичным образом задается второе правило, для которого следует выде­лить имена термов "good", "none" и "small", и третье правило с именами термов "very ", "velik" и "ched" для соответствующих перемен­ных. Вид редактора правил после их определения для разрабатываемой экс­пертной системы изображен на рис.

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

Разместим на форме 4 поля StaticText (две подсказки для двух вводимых величин, одну подсказку для результата и одно поле для выводимого результата консультации), 3 поля RadioButton (для выбора значения первой входной величины ), 2 поля RadioButton (для выбора значения второй входной величины ) и кнопку Push Button, по нажатии которой происходит обращение к функции отклика (Callback).

Окно примет вид:

При нажатии правой кнопкой мыши по любому элементу на форме или по самой форме появляется контекстное меню

Для нашего примера функция CallBack кнопки имеет вид:

%Прием выбранных значений входных параметров

r11=get(handles.radiobutton1,'Value');

r12=get(handles.radiobutton2,'Value');

r13=get(handles.radiobutton3,'Value');

r21=get(handles.radiobutton4,'Value');

r22=get(handles.radiobutton5,'Value');

%Фаззификация

if (r11==1)

r1=1

end

if (r12==1)

r1=5.5

end

if (r13==1)

r1=8.5

end

if (r21==1)

r2=1.5

end

if (r22==1)

r2=6.5

end

%загрузка системы нечеткого вывода из файла

fis=readfis('qualnew');

%выполнение нечеткого вывода для заданных значений входных переменных

y=evalfis([r1 r2],fis)

%Дефаззификация

if (y<=10)

ys='малые';

elseif (y<=20)

ys='средние';

else

ys='щедрые';

end

%Запись значения на экран

set(handles.text3,'String',ys);

Выполнение диалоговой программы начинается при нажатии кнопки на форме

Пример диалога:

До нажатия кнопки

После нажатия кнопки:

47