Добавлен: 22.05.2023
Просмотров: 394
Скачиваний: 5
С помощью нейронных сетей строится, естественно, нейросетевая реализация функции: создается нейронная сеть, которая, получая на входе вектор аргументов, выдает на выходе значение функции. Обычно предполагается, что типичные нейросетевые реализации достаточно «хорошие» и любая из них подойдет в качестве решения задачи. При необходимости вместо наложения условий типа максимальной гладкости минимизируют число слоев, количество нейронов и/или число связей, а также требуют, чтобы функция активации нейронов была «максимально пологой».[8]
2. Практическая часть. Применение нечеткой логики на практике
2.1 Постановка задачи
В задаче требуется определить расход воды при поливе с/х угодий. Входные сигналы:
а) количество с/ч культур (много культур, мало культур),
б) температура воздуха летом (засушливое лето, нормальное лето, холодное лето).
Выходной сигнал: расход воды на полив (большой расход, средний расход, маленький расход).
Правила:
1. Если с/х культур много, лето засушливое, то расход воды большой.
2. Если с/х культур много, лето нормальное, то расход воды средний.
3. Если с/х культур мало, лето холодное, то расход воды маленький.
2.2 Описание пакета Fuzzy Toolbox
Пакет Fuzzy Logic Toolbox (пакет нечеткой логики) - это совокупность прикладных программ, позволяющих конструировать нечеткие экспертные и/или управляющие системы [1]. Данный пакет является одним из инструментальных средств широко известной и распространенной в нашей стране математической системы MATLAB. Основные возможности пакета:
-Построение систем нечеткого вывода (экспертных систем, регуляторов, аппроксиматоров зависимостей)
-Построение адаптивных нечетких систем (гибридных нейронных сетей)
-Интерактивное динамическое моделирование в Simulink
Пакет позволяет работу:
-в режиме графического интерфейса,
-в режиме командной строки,
-с использованием блоков и примеров пакета Simulink.
Ниже рассмотрены основные свойства и правила работы с пакетом Fuzzy Logic Toolbox версий 2.0.1 и 2.1, используемых, соответственно, в системах MATLAB версий 5.3 и 6.12.
Графический интерфейс Fuzzy Logic Toolbox. В состав программных средств Fuzzy Logic Toolbox входят следующие основные программы, позволяющие работать в режиме графического интерфейса:
-редактор нечеткой системы вывода Fuzzy Inference System Editor (FIS Editor или FIS-редактор) вместе со вспомогательными программами - редактором функций принадлежности (Membership Function Editor), редактором правил (Rule Editor), просмоторщиком правил (Rule Viewer) и просмоторщиком поверхности отклика (Surface Viewer);
-редактор гибридных систем (ANFIS Editor, ANFIS-редактор);
-программа нахождения центров кластеров (программа Clustering - кластеризация).
Набор данных программ предоставляет пользователю максимальные удобства для создания, редактирования и использования различных систем нечеткого вывода.
2.3 Руководство пользователя
В рамках пакета пользователь может выполнять необходимые действия по разработке и использованию нечетких моделей в одном из следующих режимов:
-В интерактивном режиме с помощью графических средств редактирования и визуализации всех компонентов систем нечеткого вывода
-В режиме команд с помощью ввода имен соответствующих функций с необходимыми аргументами непосредственно в окно команд системы MATLAB
-Для разработки и дальнейшего применения систем нечеткого вывода в интерактивном режиме могут быть использованы следующие графические средства, входящие в состав пакета Fuzzy Logic Toolbox.
-Редактор систем нечеткого вывода Fuzzy Inference System (FIS Editor) или сокращенно редактор FIS.
-Редактор функций принадлежности системы нечеткого вывода (Membership Function Editor) или сокращенно редактор функций принадлежности.
-Редактор правил системы нечеткого вывода (Rule Editor) или сокращенно редактор правил.
-Программа просмотра правил системы нечеткого вывода (Rule Viewer).
-Программа просмотра поверхности системы нечеткого вывода (Surface Viewer).
Кроме этих графических средств, в состав пакета Fuzzy Logic Toolbox также входят следующие специальные программы.
Если функция fuzzy вызывается без аргументов, то редактор FIS вызывается для вновь создаваемой системы нечеткого вывода с именем Untitled по умолчанию.
При этом по умолчанию также задается целый ряд параметров, таких как тип системы нечеткого вывода (Мамдани), нечеткие логические операции, методы импликации, агрегирования и дефазификации и некоторые другие. Пользователь может согласиться с этими значениями или изменить их.
Если функция fuzzy вызывается с аргументом в форме fuzzy ('а'), где а - имя внешнего файла с расширением fis с уже разработанной системой нечеткого вывода, то редактор вызывается с уже загруженной системой FIS с именем а.
Редактор FIS имеет главное меню, которое позволяет пользователю вызывать другие графические средства работы с системой нечеткого вывода FIS, загружать и сохранять структуру FIS во внешних файлах и т.д.
Главное меню редактора содержит позиции:
-
- File — работа с файлами моделей (их создание, сохранение, считывание и печать);
- Edit — операции редактирования (добавление и исключение входных и выходных переменных);
- View — переход к дополнительному инструментарию.
Пункт меню File (Файл) редактора FIS содержит следующие операции:
-
- New FIS... - позволяет выбрать тип задаваемой новой системы нечеткого вывода: Mamdani - типа Мамдани или Sugeno - типа Сугено. При этом задаваемая система нечеткого вывода не имеет ни входных, ни выходных переменных, а ее имя задается по умолчанию как Untitled;
- Import - позволяет загрузить в редактор FIS существующую систему нечеткого вывода одним из следующих способов: From Workspace... - из рабочего пространства программы MATLAB или From Disk... - из внешнего файла;
- Export - позволяет сохранить редактируемую систему нечеткого вывода одним из следующих способов: То Workspace... - в рабочем пространстве программы MATLAB или То Disk... - во внешнем файле;
- Print - позволяет распечатать на принтере редактируемую систему нечеткого вывода;
- Close - закрывает редактор FIS.
- Пункт меню Edit (Редактирование) содержит следующие операции:
- Undo - отменяет выполнение последнего действия;
- Add Variable... - позволяет добавить в редактируемую систему нечеткого вывода переменную одного из следующих типов: Input - входную переменную или Output - выходную переменную;
- Remove Selected Variable - удаляет выбранную переменную из редактируемой системы нечеткого вывода;
- Membership Functions... - вызывает редактор функций принадлежности;
- Rules - вызывает редактор правил нечеткого вывода.
- Пункт меню View (Вид) содержит следующие операции:
- Rules - вызывает программу просмотра правил нечеткого вывода;
- Surface - вызывает программу просмотра поверхности нечеткого вывода.
В левой нижней части рабочего интерфейса редактора FIS имеется 5 всплывающих меню:
-
- And method (Метод логической конъюнкции) - позволяет задать один из следующих методов для выполнения логической конъюнкции в условиях нечетких правил:
- min - метод минимального значения; prod - метод алгебраического произведения; Custom - метод, определенный пользователем. Or method (Метод логической дизъюнкции) - позволяет задать один из следующих методов для выполнения логической дизъюнкции в условиях нечетких правил:
- max - метод максимального значения (нечеткий логический оператор дизъюнкции);
- probor - метод алгебраической суммы; Custom - метод, определенный пользователем. Implication method (Метод вывода заключения) - позволяет задать один из следующих методов для выполнения (активизации) логического заключения в каждом из нечетких правил (не используется для систем типа Сугено):
- min - метод минимального значения (нечеткий логический оператор конъюнкции);
- prod - метод алгебраического произведения; Custom - метод, определенный пользователем. Aggregation method (Метод агрегирования) - позволяет задать один из следующих методов для агрегирования значений функции принадлежности каждой из выходных переменных в заключениях нечетких правил:
- max - метод максимального значения;
- sum - метод граничной суммы;
- probor - метод алгебраической суммы;
- Custom - метод, определенный пользователем.
Defuzzification method (Метод дефазификации) - позволяет задать один из следующих методов для выполнения дефазификации выходных переменных в системе нечеткого вывода типа Мамдани:
-
- centroid - метод центра тяжести для дискретного множества значений функции принадлежности;
- bisector - метод центра площади;
- mom (middle of maximum) - метод среднего максимума, определяемый как среднее арифметическое левого и правого модальных значений;
- som (smallest of maximum) - метод наименьшего (левого) модального значения;
- lom (largest of maximum) - метод наибольшего (правого) модального значения;
- Custom - метод, определенный самим пользователем.
Для систем нечеткого вывода типа Сугено можно выбрать один из следующих методов дефазификации:
-
- wtaver (weighted average) - метод взвешенного среднего;
- wtsu
2.4 Результаты работы
Основываясь на интуитивном представлении и логических умозаключениях согласно условию задачи зададим:
-
- входной сигнал количества с/ч культур (много культур, мало культур) в относительных единицах в диапазоне от 0 до 1:
- входной сигнал температуры воздуха летом (засушливое лето, нормальное лето, холодное лето) в диапазоне от 0 до 50 ОС:
- выходной сигнал расхода воды на полив (большой расход, средний расход, маленький расход) в относительных единицах в диапазоне от 0 до 1.
Правила:
1. Если с/х культур много, лето засушливое, то расход воды большой.
2. Если с/х культур много, лето нормальное, то расход воды средний.
3. Если с/х культур мало, лето холодное, то расход воды маленький.
Таким образом, согласно условию, задача будет описана следующими основными правилами:
- Если «С/х культур» много и «Лето» засушливое то «Расхода воды на полив» будет большой.
- Если «С/х культур» много и «Лето» нормальное то «Расхода воды на полив» будет средний.
- Если «С/х культур» мало и «Лето» холодное то «Расхода воды на полив» будет маленький.
Используя пакет нечеткой логики Fuzzy Toolbox системы MatLab, покажем, как можно построить нечеткую аппроксимирующую систему, базирующуюся на алгоритме Mamdani. Командой (функцией) Fuzzy (рис.1) из режима командной строки запускается основная интерфейсная программа пакета Fuzzy Logic – редактор нечеткой системы вывода (Fuzzy Inference System Editor, FIS Editor, FIS – редактор). Вид открывающегося при этом окна приведен на рисунке 2.
Рисунок 1 – Вызов команды открытия Fuzzy Logic Toolbox
Рисунок 2 – Интерфейс главного окна Fuzzy Logic Toolbox (модель Mamdani)
Через пункт меню Edit/Add Variable…->Input добавляем в систему второй вход (входную переменную) и называем их соответствующим образом (рис.3).
Рисунок 3 – Измененный вид входных и выходных параметров главного окна модели в Fuzzy Logic Toolbox
Через пункт меню Edit/MFs… перейдем к окну Membership Functions и добавим соответствующие функции принадлежности треугольного типа (рис.4 и 5), аналогично и для выходной переменной используем функции принадлежности треугольной формы (рис.6).
Обозначим названия каждой функции принадлежности для входных переменных «Температура воздуха летом» как «Холодное», «Нормальное» и «Засушливое», «Количество с/ч культур» как «Мало» и «Много», а для выходной переменной «Расход воды на полив» как «Маленький», «Средний» и «Большой». Зададим их границы.
Рисунок 4 – Вид функций принадлежности для входной переменной «Количество с/ч культур» в окне Membership Function Editor
Рисунок 5 – Вид функций принадлежности для входной переменной «Температура воздуха летом» в окне Membership Function Editor
Рисунок 6 – Вид функций принадлежности для выходной переменной «Расход воды на полив» в окне Membership Function Editor
Далее зададим соответствующие логические правила с помощью Rule Editor (рис.7).
Рисунок 7 – Задание правил соответствия в окне Rule Editor
Откроем окно просмотра правил (View/Rules) и установим значения переменных (рис.8): «Количество с/ч культур» =0,5 и «Температура воздуха летом» = 25. Увидим ответ: «Расход воды на полив» =0,5. Приведем еще несколько вариантов (рис.9 и 10). Результаты проверок подтверждают правильность работы созданной нечеткой модели оценки расхода воды на полив.
Подтверждением отмеченной зависимости выходной переменной от входных может служить вид поверхности отклика, который представляется при выборе пункта меню View/Surface (рис.11). С помощью мышки график можно поворачивать во все стороны.
Рисунок 8 – Результат проверки разработанной системы в окне Rule Viewer