|
Раздел "Проектирование систем управления\Fuzzy Logic Toolbox"
Список функций Fuzzy Logic Toolbox
\ \
|
|
Настройка систем нечеткого
логического вывода типа Сугэно |
Синтаксис:
[fis, error] = anfis(trndata)
[fis, error] = anfis(trndata, initfis)
[fis, error, stepsize] = anfis(trndata, initfis, trnopt, dispopt, [], optmethod)
[fis, error, stepsize, chkfis, chkerror] = anfis(trndata, initfis, trnopt, dispopt, chkdata)
Описание:
ANFIS является аббревиатурой Adaptive Network – based Fuzzy Inference System. Это основная функция настройки систем нечеткого логического вывода типа Сугэно. Настройка представляет собой итерационную процедуру нахождения таких параметров системы нечеткого логического вывода, в частности параметров функций принадлежности, которые минимизируют расхождения между результатами логического вывода и экспериментальными данными, т. е. между действительным и желаемым поведениями системы. Экспериментальные данные, по которым настраивается функции принадлежности, представляются в виде обучающей выборки.
В основу функции anfis положен один из первых методов построения нейро-нечетких систем для аппроксимации функций, предложенный в 1991 году Янгом (Jang). Для идентификации параметров системы нечеткого логического вывода типа Сугэно функция anfis может использовать метод обратного распространения ошибки а также гибридный алгоритм, основанный на комбинации метода обратного распространения ошибки и метода наименьших квадратов. Функция anfis может использовать дополнительный аргумент для проверки модели – тестирующую выборку.
Функция anfis может имеет шесть входных аргументов:
- trndata – идентификатор обучающей выборки. Этот входной аргумент является обязательным. Обучающая выборка представляет собой матрицу, каждая строчка которой является парой “входы-выход”. Последний столбец матрицы соответствует вектору значений выхода, а все остальные столбцы – входным данным. Заметим, что функцию anfis можно использовать для проектирования систем типа SISO (один вход - один выход) и типа MISO (много входов – один выход);
- initfis – идентификатор исходной системы нечеткого логического вывода, функции принадлежности которой будут настроены с помощью anfis. Исходная система нечеткого логического вывода должна быть системой типа Сугэно нулевого или первого порядка. Еще одним ограничением anfis является недопустимым использования типов функций принадлежностей и методов дефаззификации, определяемых пользователем. При отсутствии аргумента initfis функция anfis вызовет функцию genfis1, которая генерирует типовую систему нечеткого логического вывода. Эта типовая система будет использовать по две функции принадлежности гауссовского типа для каждой входной переменной. В случае, когда пользователь хочет получить систему с иным количеством функций принадлежности, необходимо задать в виде аргумента initfis количество функций принадлежности для оценки каждой входной переменной. Если количество функций принадлежности одинаково для всех входов, тогда достаточно указать только одно значение.
- trnopt – вектор параметров настройки:
trnopt(1) – количество итераций (значение по умолчанию – 10);
trnopt(2) – допустимая ошибка обучения (значение по умолчанию – 0);
trnopt(3) – исходная длина шага (значение по умолчанию – 0.01);
trnopt(4) – коэффициент уменьшения длины шага (значение по умолчанию – 0.9);
trnopt(5) – коэффициент увеличения длины шага (значение по умолчанию – 1.1);
- dispopt – вектор, указывающий какие промежуточные результаты обучения выводить в командное окно MatLab во время настройки. Для вывода информации на экран необходимо установить соответствующую координату вектора в 1. Вектор dispopt имеет четыре координаты:
dispopt(1) – ANFIS-информация: количество функций принадлежности входных и выходной переменных и т.п.;
dispopt(2) – ошибка обучения;
dispopt(3) – длина шага, (выводится в случае его изменения);
dispopt(4) – окончательный результат.
По умолчанию значения всех координат равны 1;
- chkdata – идентификатор тестирующей выборки. Тестирующая выборка используется для исследования свойства обобщения системы нечеткого логического вывода, т. е. способности системы выдавать правильные результаты для данных, отсутствующих в обучающей выборке. Формат тестирующей выборки такой же как и обучающей. Обычно элементы тестирующей выборки несколько отличаются от элементов обучающей выборки. Тестирующая выборка особенно важна для задач обучения с большим количеством входов и (или) для задач с зашумленными данными. При формировании обучающей и тестирующей выборок необходимо стремится к обеспечению свойств представительности выборок;
- optmethod – метод оптимизации, используемый для настройки. Допустимые значения: 1 – гибридный алгоритм и 0 – метод обратного распространения ошибки. По умолчанию применяется гибридный алгоритм, который использует метод обратного распространения ошибки (метод наискорейшего спуска) для настройки функций принадлежности входных переменных и метод наименьших квадратов для настройки функций принадлежности выхода. Точнее говоря, метод наименьших квадратов используется для нахождения коэффициентов линейных функций, связывающих входы и выход в каждом правиле. Метод по умолчанию используется всегда, за исключением случая, когда значение аргумента optmethod равно 0.
Функция anfis может имеет пять выходных аргументов:
- fis – система нечеткого логического вывода, параметры которой настроены таким образом, что минимизируют расхождения между результатами логического вывода и экспериментальными данными из обучающей выборки;
- error – вектор, содержащий значения ошибки обучения на каждой итерации. Ошибка обучения рассчитывается как среднее квадратическое отклонение между результатами нечеткого логического вывода и значениями выходной переменной из обучающей выборки;
- stepsize – вектор, содержащий значения длины шага алгоритма оптимизации на каждой итерации;
- chkfis – система нечеткого логического вывода, параметры которой настроены таким образом, что минимизируют расхождения между результатами логического вывода и экспериментальными данными из тестирующей выборки. Для получения такой системы необходимо задать пятый входной аргумент функции anfis – тестирующую выборку;
- chkerror - вектор, содержащий значения ошибки тестирования на каждой итерации. Ошибка тестирования рассчитывается как среднее квадратическое отклонение между результатами нечеткого логического вывода и значениями выходной переменной из тестирующей выборки. Для расчета ошибки тестирования необходимо задать пятый входной аргумент функции anfis – тестирующую выборку.
Процесс настройки прекращается по достижению требуемой ошибки обучения настройки или после выполнения указанного количества итераций.
Функция anfis может быть вызвана с одним входным аргументом – обучающей выборкой и одним выходным аргументом – системой нечеткого логического вывода, параметры которой настроены по обучающей выборке. При вызове функции anfis значения неинициализированых аргументов принимаются равными по умолчанию. При инициализации только части аргументов, например, первого и шестого – обучающей и тестирующей выборок, значения остальных аргументов (для нашего примера - второго, третьего, четвертого и пятого) необходимо задать как [] или NaN. Значение [] или NaN указывает, что соответствующий аргумент принимает значения, установленные по умолчанию. Значения, установленные по умолчанию могут быть изменены путем непосредственного редактирования файла anfis.m.
Пример.
Синтезируется и настраивается система нечеткого логического вывода fis, моделирующая зависимость y=sin(x) в диапазоне [0, 1].
x=(0:0.04:1)’;
y=sin(x);
trndata=[x y];
[fis, error, stepsize]=anfis(trndata)
\ \
|
|