Функции для работы с нечеткими множествами: ADDRULE, EVALMF, EVALFIS.
ADDRULE -Добавляет правила в базу знаний системы нечеткого логического вывода. Синтаксис: FIS_name= addrule (FIS_name, ruleList). Функция addrule имеет два входных аргумента:
FIS_name – идентификатор системы нечеткого логического вывода в рабочей области MatLab;
ruleList – матрица добавляемых правил. Матрица правил должна быть задана в формате indexed. Количество строк матрицы ruleList равно количеству добавляемых правил, т.е. каждая строка матрицы соответствует одному правилу. Количество столбцов матрицы равно m+n+2, где m (n) – количество входных (выходных) переменных системы нечеткого логического вывода. Первые m столбцов соответствуют входным переменным, т.е. задают ЕСЛИ-часть правил. Следующие n столбцов соответствуют выходным переменным, т.е. задают ТО-часть правил.
EVALMF -Вычисление значений произвольной функции принадлежности. Синтаксис: y = evalmf (x, params, type). Позволяет вычислить значения произвольной функции принадлежности. Функция evalmf иметь три входных аргумента: x – вектор, для координат которого необходимо рассчитать степени принадлежности; params – вектор параметров функции принадлежности, порядок задания которых определяется ее типом; type – тип функции принадлежности. Значение типа функции принадлежности может быть задано в виде строчки символов или числом: 1 - 'trimf';2 - 'trapmf'; 3 - 'gaussmf'; 4 - ‘gauss2mf';5 - 'sigmf';6 - 'dsigmf'; 7 - 'psigmf'; 8 - 'gbellmf'; 9 - 'smf';10 - 'zmf';11 - 'pimf'.
При задании другого типа функции принадлежности предполагается, что она определена пользователем и задана соответствующим m-файлом. Функция evalmf возвращает выходной аргумент y, содержащий степени принадлежности координатвектора x.
EVALFIS -Выполнение нечеткого логического вывода. Синтаксис: output = evalfis(input, fis);output = evalfis(input, fis, numPts). Функция evalfis может иметь три входных аргумента, первые два из которых обязательные:
input – матрица значений входных переменных, для которых необходимо выполнить нечеткий логический вывод. Матрица должна иметь размер M x N, где N – количество входных переменных; M – количество входных данных. Каждая строчка матрицы представляет один вектор значений входных переменных;
fis – идентификатор системынечеткогологическоговывода;
numPts – необязательный входной аргумент, задающий количество точек дискретизации функций принадлежности. Значение по умолчанию равно 101.
Функция evalfis может иметь четыре выходных аргумента:
output – матрица значений выходных переменных, получаемая в результате нечеткого логического вывода для вектора входных значений input. Матрица имеет размер M x L, где M – количество входных данных; L – количество выходных переменныхв fis;
IRR – матрица размером NR x N, где NR – количество правил в fis; N – количество входных переменных. Матрица содержит степени принадлежности входных значений термам, входящих в базу знаний;
ORR – матрица размером numPts x (NR*L), где numPts – количество точек дискретизации; Аргументы IRR, ORR являются необязательными, они содержат промежуточные результаты нечеткого логического вывода.
Возможности и назначение ANFIS-редактора.
ANFIS является аббревиатурой Adaptive Neuro-Fuzzy Inference System – (адаптивная нейро-нечеткая система). ANFIS-редактор позволяет автоматически синтезировать из экспериментальных данных нейро-нечеткие сети. Нейро-нечеткую сеть можно рассматривать как одну из разновидностей систем нечеткого логического вывода типа Сугэно. При этом функции принадлежности синтезированных систем настроены (обучены) так, чтобы минимизировать отклонения между результатами нечеткого моделирования и экспериментальными данными. Загрузка ANFIS-редактора осуществляется по команде anfisedit.
ANFIS-редактор содержит 3 верхних меню - File, Editи View, область визуализации, область свойств ANFIS, область загрузки данных, область генерирования исходной системы нечеткого логического вывода, область обучения, область тестирования, область вывода текущей информации, а также кнопки Helpи Close, которые позволяют вызвать окно справки и закрыть ANFIS-редактор, соответственно.
Область визуализации
В этой области выводится два типа информации:
· при обучении системы – кривая обучения в виде графика зависимости ошибки обучения от порядкового номера итерации.
· при загрузке данных и тестировании системы – экспериментальные данные и результаты моделирования.
Экспериментальные данные и результаты моделирования выводятся в виде множества точек в двумерном пространстве. При этом по оси абцисс откладывается порядковый номер строчки данных в выборке (обучающей, тестирующей или контрольной), а по оси ординат - значение выходной переменной для данной строчки выборки. Используются следующие маркеры:
голубая точка (.) – теструющая выборка;
голубая окружность (o) – обучающая выборка;
голубой плюс (+) – контрольная выборка;
красная звездочка (*) – результаты моделирования.
Область свойств ANFISВ области свойств ANFIS (ANFIS info) выводится информация о количестве входных и выходных переменных, о количестве функций принадлежностей для каждой входной переменной, а также о количестве строчек в выборках. В этой области расположены две кнопки Structureи Clear Plot.
Нажатие кнопки Structureоткрыет новое графическое окно, в котором система нечеткого логического вывода представляет в виде нейро-нечеткой сети.
Нажатие кнопки Clear Plotпозволяет очистить область визуализации.
Область загрузки данных
В области загрузки данных (Load data) расположены:
· меню выбора типа данных (Type), содержащее альтернативы:
o Traning -обучающая выборка;
o Testing - тестирующая выборка;
o Checking - контрольная выборка;
o Demo - демонстрационный пример;
· меню выбора источника данных (From), содержащее альтернативы:
o disk – диск;
o worksp.-рабочая область MatLab;
· кнопка загрузки данных Load Data…;
· кнопка очистки данных Clear Data.
Примечание. В течении одной сеанса работы ANFIS-редактора можно загружать данные одного формата, т.е. количество входных переменных в выборках должно быть одинаковым.