Проектирование систем типа Мамдани.




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

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

%Построение графика функции y=x1^2*sin(x2-1)

%в области x1є[-7,3] и x2є[-4.4,1.7].

n=15;

x1=-7:10/(n-1):3;

x2=-4.4:6.1/(n-1):1.7;

y=zeros(n,n);

for j=1:n

y(j,:)=x1.^2*sin(x2(j)-1);

end

surf(x1,x2,y)

xlabel('x1')

ylabel('x2')

zlabel('y')

title('Target');

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

Рисунок 4.13 - Эталонная поверхность

 

Шаг 1. Для загрузки основного fis-редактора напечатаем слова fuzzy в командной строке.

Шаг 2. Добавим вторую входную переменную. Для этого в меню Edit выбираем команду Add input.

Шаг 3. Переименуем первую входную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке input1, введем новое обозначение x1 в поле редактирования имени текущей переменной и нажмем < Enter >.

Шаг 4. Переименуем вторую входную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке input2, введем новое обозначение x2 в поле редактирования имени текущей переменной и нажмем < Enter >.

Шаг 5. Переименуем выходную переменную. Для этого сделаем один щелчок левой кнопкой мыши на блоке output1, введем новое обозначение y в поле редактирования имени текущей переменной и нажмем < Enter >.

Шаг 6. Зададим имя системы. Для этого в меню File выбираем в подменю Export команду To disk и вводим имя файла, например, first.

Шаг 7. Перейдем в редактор функций принадлежности. Для этого сделаем двойной щелчок левой кнопкой мыши на блоке x1.

Шаг 8. Зададим диапазон изменения переменной x1. Для этого напечатаем -7 3 в поле Range (рисунок 4.14) и нажмем < Enter >.

Рисунок 4.14 - Функции принадлежности переменной x1

 

Шаг 9. Зададим функции принадлежности переменной x1. Для лингвистической оценки этой переменной будем использовать 3 терма с треугольными функциями принадлежности. Для этого в меню Edit выберем команду Add MFs... В результате появиться диалоговое окно выбора типа и количества функций принадлежностей. По умолчанию это 3 терма с треугольными функциями принадлежности. Поэтому просто нажимаем < Enter >.

Шаг 10. Зададим наименования термов переменной x1. Для этого делаем один щелчок левой кнопкой мыши по графику первой функции принадлежности (рисунок 4.14). Затем вводим наименование терма, например, Низкий, в поле Name и нажмем < Enter >. Затем делаем один щелчок левой кнопкой мыши по графику второй функции принадлежности и вводим наименование терма, например, Средний, в поле Name и нажмем < Enter >. Еще раз делаем один щелчок левой кнопкой мыши по графику третьей функции принадлежности и вводим наименование терма, например, Высокий, в поле Name и нажмем < Enter >. В результате получим графическое окно, изображенное на рисунке 4.14.

Шаг 11. Зададим функции принадлежности переменной x2. Для лингвистической оценки этой переменной будем использовать 5 термов с гауссовскими функциями принадлежности. Для этого активизируем переменную x2 с помощью щелчка левой кнопки мыши на блоке x2. Зададим диапазон изменения переменной x2. Для этого напечатаем -4.4 1.7 в поле Range (рисунок 4.15) и нажмем< Enter >. Затем в меню Edit выберем команду Add MFs.... В появившимся диалоговом окне выбираем тип функции принадлежности gaussmf в поле MF type и 5 термов в поле Number of MFs. После этого нажимаем < Enter >.

Рисунок 4.15 - Функции принадлежности переменной x2

 

Шаг 12. По аналогии с шагом 10 зададим следующие наименования термов переменной x2: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рисунке 4.15.

Шаг 13. Зададим функции принадлежности переменной y. Для лингвистической оценки этой переменной будем использовать 5 термов с треугольными функциями принадлежности. Для этого активизируем переменную y с помощью щелчка левой кнопки мыши на блоке y. Зададим диапазон изменения переменной y. Для этого напечатаем -50 50 в поле Range (рисунок 4.16) и нажмем< Enter >.Затем в меню Edit выберем команду Add MFs.... В появившимся диалоговом окне выбираем 5 термов в поле Number of MFs. После этого нажимаем < Enter >.

Рисунок 4.16 - Функции принадлежности переменной y

 

Шаг 14. По аналогии с шагом 10 зададим следующие наименования термов переменной y: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рисунке 4.16.

Шаг 15. Перейдем в редактор базы знаний RuleEditor. Для этого выберем в меню Edit команду Edit rules....

Шаг 16. На основе визуального наблюдения за графиком, изображенным на рисунке 4.13 сформулируем следующие девять правил:

Если x1=Средний, то y=Средний;

Если x1=Низкий и x2=Низкий, то y=Высокий;

Если x1=Низкий и x2=Высокий, то y=Высокий;

Если x1=Высокий и x2=Высокий, то y=Выше Среднего;

Если x1=Высокий и x2=Низкий, то y=Выше Среднего;

Если x1=Высокий и x2=Средний, то y=Средний;

Если x1=Низкий и x2=Средний, то y=Низкий;

Если x1=Высокий и x2=Выше Среднего, то y=Средний;

Если x1=Высокий и x2=Ниже Среднего, то y=Средний.

Для ввода правила необходимо выбрать в меню соответствующую комбинацию термов и нажать кнопку Add rule. На рисунке 4.17 изображено окно редактора базы знаний после ввода всех девяти правил. Число, приведенное в скобках в конце каждого правила представляет собой весовым коэффициент соответствующего правила.

Рисунок 4.17 - База знаний в RuleEditor

 

Шаг 17. Сохраним созданную систему. Для этого в меню File выбираем в подменю Export команду To disk.

На рисунке 4.18 приведено окно визуализации нечеткого логического вывода. Это окно активизируется командой View rules... меню View. В поле Input указываются значения входных переменных, для которых выполняется логический вывод.

Рисунок 4.18 - Визуализация нечеткого логического вывода в RuleViewer

 

На рисунке 4.19 приведена поверхность «входы-выход», соответствующая синтезированной нечеткой системе. Для вывода этого окна необходимо использовать команду View surface... меню View. Сравнивая поверхности на рисунке 4.13 и на рисунке 4.19 можно сделать вывод, что нечеткие правила достаточно хорошо описывают сложную нелинейную зависимость.

Рисунок 4.19 - Поверхность «входы-выход» в окне SurfaceViwer

 

Контрольные вопросы к защите

1. Для чего предназначен FIS-редактор?

2. Назовите основные элементы окна FIS-редактора?

3. Опишите редактор функций принадлежности?

4. Какого типа имеются функции принадлежности в пакете fuzzy logic?

5. Опишите окно редактора баз знаний?

6. Каким образом можно произвести визуализацию нечеткого логического вывода?

7. Что такое визуализация поверхности типа «входы-выходы»?



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: