Самостоятельная работа 7: Проектирование систем типа Мамдани
Подготовка к работе
По указанной литературе изучить приёмы работы построение системы типа Мамдани в программе MATLAB.
Контрольные вопросы
- Правила создания системы типа Мамдани.
- Порядок использования графического интерфейса для построения системы типа Мамдани.
- Какова последовательность проектирование системы нечеткого логического вывода?
- Дайте определение терма
- Как просмотреть результаты проектирование системы?
- Порядок задания нечетких правил в системе типа Мамдани?
Задание к работе
- Создайте систему типа Мамдами
- Получите графическое изображение этой системы
- Построить систему Мамдами с помощью графического интерфейса нечеткой логики Fuzzy Logic.
Исходные данные в таблице 13.1.
Пример построения системы типа Мамдани.
Для построения трехмерного изображения функции в предложенной области составим следующую программу:
%Построение графика функции y=x1^2*sin(x2-1); %в области x1є[-7,3] и x2є[-4.4,1.7]; n=15; % количество точек для построения графика x1=-7:10/(n-1):3; % диапазон изменения х1 с необходимым количеством шагов 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') % прописывается название оси х1 ylabel('x2') zlabel('y') title('Базовый ');
В результате выполнения программы получим графическое изображение, приведенное на рисунке 13.1.
Спроектируем системы нечеткого логического вывода, в графическом редакторе Fuzzy Logic.
Откроем графическое окно при помощи функции fuzzy (рисунок 13.2).
Изначально в окне редактора задана только одна переменная, добавим вторую переменную, в меню Edit выбираем команду Add input . Далее переименуем переменные для этого на блоке input1 , введем новое обозначение x1 в поле редактирования имени текущей переменной и нажмем <Enter>. Аналогично поступим с переменными x2 , и y используя блоки input2 и output1 .
Зададим имя системы. Для этого в меню File выбираем в подменю Export команду To disk и вводим имя файла, например, first .
Затем перейдем в редактор функций принадлежности. Для этого сделаем двойной щелчок левой кнопкой мыши на блоке x1 .
Зададим диапазон изменения переменной x1 . Для этого напечатаем -7 3 в поле Range (см. рисунок 13.3) и нажмем <Enter>.
Для лингвистической оценки переменной x1 будем использовать 3 терма с треугольными функциями принадлежности. В меню Edit выберем команду Add MFs. в результате появиться диалоговое окно выбора типа и количества функций принадлежностей. По умолчанию это 3 терма с треугольными функциями принадлежности. Поэтому просто нажимаем <Enter>. Вводим наименование терма Низкий, в поле Name и нажмем <Enter>. Затем делаем вводим наименование терма Средний, в поле Name и нажмем <Enter>. Аналогично присваиваем наименование терма Высокий графику третьей функции принадлежности. Получим графическое окно, изображенное на рисунке 13.3.
Для лингвистической оценки переменной x2 используем 5 термов с гауссовскими функциями принадлежности (Рисунок 13.4).
Активизируем переменную x2 с помощью щелчка левой кнопки мыши на блоке x2. Зададим диапазон изменения переменной x2. В поле Range введем -4.4 1.7 (см. рисунок 13.4) и нажмем <Enter>. В меню Edit выберем команду Add MFs. Выбираем тип функции принадлежности gaussmf в поле MF type и 5 термов в поле Number of MFs. В заключении нажимаем <Enter>.
По аналогии с х1 зададим следующие наименования термов переменной x2: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рисунке 13.5.
Зададим функции принадлежности переменной y, используя 5 термов с треугольными функциями принадлежности. Зададим диапазон изменения переменной y. Напечатаем -50 50 в поле Range (рисунок 13.5) и нажмем <Enter>. В меню Edit выберем команду Add MFs. Выбираем 5 термов в поле Number of MFs, нажимаем <Enter>.
По аналогии с переменной х2 зададим следующие наименования термов переменной y: Низкий, Ниже среднего, Средний, Выше среднего, Высокий. В результате получим графическое окно, изображенное на рисунке 13.5.
Чтобы создать правила работы с нечеткими множествами перейдем в редактор базы знаний RuleEditor. Выберем в меню Edit команду Edit rules.
На основе визуального наблюдения за графиком, изображенным на рисунке 13.1, сформулируем следующие девять правил:
- Если 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. На рисунке 13.6 изображено окно редактора базы знаний после ввода всех девяти правил. Число, приведенное в скобках в конце каждого правила представляет собой весовым коэффициент соответствующего правила.
Сохраним созданную систему. Для этого в меню File выбираем в подменю Export команду To disk.
На рисунок 13.7 приведено окно визуализации нечеткого логического вывода. Это окно активизируется командой View rules меню View. В поле Input указываются значения входных переменных, для которых выполняется логический вывод.
На рисунке 13.8 приведена поверхность "входы-выход", соответствующая синтезированной нечеткой системе. Для вывода этого окна необходимо использовать команду View surface меню View. Сравнивая поверхности на рисунке 13.1 и на рисунке 13.8 можно сделать вывод, что нечеткие правила с высокой точностью описывают сложную нелинейную зависимость.