русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-11-28; просмотров: 2702; Нарушение авторских прав


 

Цель выполнения лабораторной работы:Освоить основы программирования нечетких систем с помощью встроенных функций пакета нечеткой логики программной среды MATLAB.

Задание: Необходимо запрограммировать нечеткую систему, необходимую для аппроксимации табличной функции , . Варианты задания представлены в табл. 4.1.

Пример выполнения:

Задача. В данной лабораторной работе необходимо запрограммировать нечеткую систему для аппроксимации таблично заданной функции. Для примера возьмем таблично заданную функцию из примера к лабораторной работе 1 (табл. 4.2).

Пакет Fuzzy Logic Toolbox наделен множеством функций для создания нечетких систем (Приложение 1).

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

 

a=newfis('approxim','sugeno'); % создание нечеткой системы типа Сугено

a=addvar(a,'input','x',[0 1]); % добавляем входную переменную х с диапазоном изменений от 0 до 1

a=addvar(a,'output','y',[0 3]); % добавляем выходную переменную у с диапазоном изменений от 0 до 3

a=rmmf(a,'input',1,'mf',1);%удаление функций принадлежности входной и выходной переменных создаваемых по умолчанию при создании нечеткой системы (необходимо для версии MATLAB ниже версии 7.5)

a=rmmf(a,'input',1,'mf',2);

a=rmmf(a,'input',1,'mf',1);

a=rmmf(a,'output',1,'mf',1);

a=rmmf(a,'output',1,'mf',2);

a=rmmf(a,'output',1,'mf',1);

a=addmf(a,'input',1,'mf1','gaussmf',[0.05 0.1]); % добавляем функцию принадлежности mf1 гауссовского типа для входной переменной с диапазоном изменений от 0,05 до 0,1

a=addmf(a,'input',1,'mf2','gaussmf',[0.05 0.2]);

a=addmf(a,'input',1,'mf3','gaussmf',[0.05 0.3]);

a=addmf(a,'input',1,'mf4','gaussmf',[0.05 0.4]);

a=addmf(a,'input',1,'mf5','gaussmf',[0.05 0.5]);



a=addmf(a,'input',1,'mf6','gaussmf',[0.05 0.6]);

a=addmf(a,'input',1,'mf7','gaussmf',[0.05 0.7]);

a=addmf(a,'input',1,'mf8','gaussmf',[0.05 0.8]);

a=addmf(a,'input',1,'mf9','gaussmf',[0.05 0.9]);

a=addmf(a,'input',1,'mf10','gaussmf',[0.05 1]);

a=addmf(a,'output',1,'mf1','constant',[2.05]); % добавляем функцию принадлежности mf1 для выходной переменной, которая является константой равной 2,05

a=addmf(a,'output',1,'mf2','constant',[1.94]);

a=addmf(a,'output',1,'mf3','constant',[1.92]);

a=addmf(a,'output',1,'mf4','constant',[1.87]);

a=addmf(a,'output',1,'mf5','constant',[1.77]);

a=addmf(a,'output',1,'mf6','constant',[1.74]);

a=addmf(a,'output',1,'mf7','constant',[1.71]);

a=addmf(a,'output',1,'mf8','constant',[1.6]);

a=addmf(a,'output',1,'mf9','constant',[1.56]);

a=addmf(a,'output',1,'mf10','constant',[1.4]);

rulelist=[...

1 1 1 1

2 2 1 1

3 3 1 1

4 4 1 1

5 5 1 1

6 6 1 1

7 7 1 1

8 8 1 1

9 9 1 1

10 10 1 1]; % формируем базу знаний

a=addrule(a,rulelist) % добавляем набор правил в нечеткую систему

tip=evalfis([0.3],a) % в режиме командой строки узнаем ответ системы на вход равный 0,3

Fuzzy(a) % вызываем FIS-редактор для отображения созданной нечеткой системы вывода

Поясним, как формируется база знаний. При программировании база знаний представляет собой матрицу, каждая строка которой представляет собой правило. Матрица правил состоит из m+n+2 столбцов, где m-количество входных переменных, n – количество выходных переменных. Первые m столбцов отражают входы системы. Каждый из этих столбцов отражают индекс функции принадлежности соответствующей входной переменной. Следующие n столбцов отражают выходы системы. Каждый из этих столбцов отражают индекс функции принадлежности соответствующей выходной переменной. m+n+1 столбец отражает вес правила в базе знаний. Вес представляет собой число от 0 до 1. m+n+2 столбец показывает связку между входными переменными в правиле. Если значение равно 1, то между входами ставится знак И (AND). Если значение равно 2, то между входами ставится знак ИЛИ (OR). Таким образом MATLAB интерпретирует, например, первую строку нашей базы знаний следующим образом:

If (x is mf1) then (y is mf1)

В результате работе нашей программы была построена следующая нечеткая системы (рис. 4.17–4.22):

 

Рис. 4.17. Окно редактора функции

 

 

Рис. 4.18. Окно функций принадлежности входной переменной

 

Рис.4.19. Окно функций принадлежности выходной переменной

 

Рис. 4.20. Окно редактора правил

 

Рис.4.21. Окно просмотра правил

Рис. 4.22. График функции

Выводы (пример):

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

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

1. Какая команда используется для добавления переменной? Опишите параметры функции.

2. Каким образом задаются и добавляются правила в программном коде?

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

4. Каким образом задаются типы функций принадлежности?

 



<== предыдущая лекция | следующая лекция ==>
Построение элементарной нечеткой экспертной системы | Кластеризация с помощью алгоритма нечетких центров


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.872 сек.