Поволжский Государственный Университет Телекоммуникаций и Информатики
Опубликован: 13.08.2013 | Доступ: свободный | Студентов: 1278 / 381 | Длительность: 07:30:00
Специальности: Экономист

Самостоятельная работа 7: Проектирование систем типа Мамдани

< Лекция 6 || Самостоятельная работа 7 || Лекция 7 >
Аннотация: Цель работы: знакомство с правилами построения нечетких систем, используя системы типа Мамдани.

Подготовка к работе

По указанной литературе изучить приёмы работы построение системы типа Мамдани в программе MATLAB.

Контрольные вопросы

  1. Правила создания системы типа Мамдани.
  2. Порядок использования графического интерфейса для построения системы типа Мамдани.
  3. Какова последовательность проектирование системы нечеткого логического вывода?
  4. Дайте определение терма
  5. Как просмотреть результаты проектирование системы?
  6. Порядок задания нечетких правил в системе типа Мамдани?

Задание к работе

  • Создайте систему типа Мамдами
  • Получите графическое изображение этой системы
  • Построить систему Мамдами с помощью графического интерфейса нечеткой логики Fuzzy Logic.

Исходные данные в таблице 13.1.

Таблица 13.1.
№№ Функция Пределы
1 y=x_1 \cdot cos(x_2) x_1 \in [-3,3]; x_2 \in [-1,1]
2 y=2 \cdot x_1 \cdot tan x_2 x_1 \in [-5,10]; x_2 \in [-1.2,0.7]
3 y=x_1 \cdot cos (x_2^2) x_1 \in [-7,12]; x_2 \in [-0.9,1.5]
4 y=x_1^2+5 \cdot x_2 x_1 \in [-9,15]; x_2 \in [-0,12]
5 y=2 \cdot sin(x_1)+3 \cdot cos(x_2) x_1 \in [-0.8,0.7]; x_2 \in [-1,0.9]
6 y=4 \cdot x_1 + \frac {x_1} {cos(x_2)} x_1 \in [1.2,4.7]; x_2 \in [0.1,0.9]

Пример построения системы типа Мамдани.

y=x_1^2 \cdot sin(x-1) \qquad x_1 \in [-7,3]; x_2 \in [-4.4,1.7]

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

%Построение графика функции 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.

Эталонная поверхность

Рис. 13.1. Эталонная поверхность

Спроектируем системы нечеткого логического вывода, в графическом редакторе Fuzzy Logic.

Откроем графическое окно при помощи функции fuzzy (рисунок 13.2).

Окно редактора FIS-Editor

Рис. 13.2. Окно редактора FIS-Editor

Изначально в окне редактора задана только одна переменная, добавим вторую переменную, в меню Edit выбираем команду Add input . Далее переименуем переменные для этого на блоке input1 , введем новое обозначение x1 в поле редактирования имени текущей переменной и нажмем <Enter>. Аналогично поступим с переменными x2 , и y используя блоки input2 и output1 .

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

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

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

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

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

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

Для лингвистической оценки переменной x2 используем 5 термов с гауссовскими функциями принадлежности (Рисунок 13.4).

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

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

Активизируем переменную 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>.

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

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

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

Чтобы создать правила работы с нечеткими множествами перейдем в редактор базы знаний RuleEditor. Выберем в меню Edit команду Edit rules.

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

  1. Если x1=Средний, то y=Средний;
  2. Если x1=Низкий и x2=Низкий, то y=Высокий;
  3. Если x1=Низкий и x2=Высокий, то y=Высокий;
  4. Если x1=Высокий и x2=Высокий, то y=Выше Среднего;
  5. Если x1=Высокий и x2=Низкий, то y=Выше Среднего;
  6. Если x1=Высокий и x2=Средний, то y=Средний;
  7. Если x1=Низкий и x2=Средний, то y=Низкий;
  8. Если x1=Высокий и x2=Выше Среднего, то y=Средний;
  9. Если x1=Высокий и x2=Ниже Среднего, то y=Средний.

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

База знаний в RuleEditor

Рис. 13.6. База знаний в RuleEditor

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

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

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

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

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

Поверхность “входы-выход” в окне SurfaceViwer

Рис. 13.8. Поверхность “входы-выход” в окне SurfaceViwer

< Лекция 6 || Самостоятельная работа 7 || Лекция 7 >