Система нечеткого логического вывода представляется в рабочей области MatLab в виде структуры данных, изображенной на рис. 5.1.
Существует два способа загрузки FIS в рабочую область:
- считывание с диска с помощью функции readfis;
- передача из основного fis-редактора путем выбора в меню File подменю Export и команды To workspace.
Поля структуры данных системы нечеткого логического вывода предназначены для хранения следующей информации:
name
| -
| наименование системы нечеткого логического вывода;
|
type
| -
| тип системы. Допустимые значения 'Mamdani' и 'Sugeno';
|
andMethod
| -
| реализация логической операции И. Запрограммированные реализации: 'min' - минимум и 'prod' - умножение;
|
orMethod
| -
| реализация логической операции ИЛИ. Запрограммированные реализации: 'max' - максимум и 'probor' - вероятностное ИЛИ;
|
defuzzMethod
| -
| метод дефаззификации. Запрограммированные методы для систем типа Мамдани: 'centroid' - центр тяжести; 'bisector' -медиана; 'lom' - наибольший из максимумов; 'som' - наименьший из максимумов; 'mom' - среднее из максимумов. Запрограммированные методы для систем типа Сугэно: 'wtaver' - взвешенное среднее и 'wtsum' - взвешенная сумма;
|
impMethod
| -
| реализация операции импликации. Запрограммированные реализации: 'min' - минимум и 'prod' - умножение;
|
aggMethod
| -
| реализация операции объединения функций принадлежности выходной переменной. Запрограммированные реализации: 'max' - максимум; 'sum' - сумма и 'probor' - вероятностное ИЛИ;
|
input
| -
| массив входных переменных;
|
input.name
| -
| наименование входной переменной;
|
input.range
| -
| диапазон изменения входной переменной;
|
input.mf
| -
| массив функций принадлежности входной переменной;
|
input.mf.name
| -
| наименование функции принадлежности входной переменной;
|
input.mf.type
| -
| модель функции принадлежности входной переменной. Запрограммированные модели: dsigmf - функция принадлежности в виде разности между двумя сигмоидными функциями; gauss2mf - двухсторонняя гауссовская функция принадлежности; gaussmf - гауссовская функция принадлежности; gbellmf - обобщенная колокообразная функция принадлежности; pimf - пи-подобная функция принадлежности; psigmf - произведение двух сигмоидных функций принадлежности; sigmf - сигмоидная функция принадлежности; smf - s-подобная функция принадлежности; trapmf - трапециевидная функция принадлежности; trimf - треугольная функция принадлежности; zmf - z-подобная функция принадлежности;
|
input.mf.params
| -
| массив параметров функции принадлежности входной переменной;
|
output
| -
| массив выходных переменных;
|
output.name
| -
| наименование выходной переменной;
|
output.range
| -
| диапазон изменения выходной переменной;
|
output.mf
| -
| массив функций принадлежности выходной переменной;
|
output.mf.name
| -
| наименование функции принадлежности выходной переменной;
|
output.mf.type
| -
| модель функции принадлежности выходной переменной. Запрограммированные модели для системы типа Мамдани: dsigmf - функция принадлежности в виде разности между двумя сигмоидными функциями; gauss2mf - двухсторонняя гауссовская функция принадлежности; gaussmf - гауссовская функция принадлежности; gbellmf - обобщенная колокообразная функция принадлежности; pimf - пи-подобная функция принадлежности; psigmf - произведение двух сигмоидных функций принадлежности. Запрограммированные модели для системы типа Сугэно: constatnt - константа (функция принадлежности в виде синглтона); linear - линейная комбинация входных переменных;
|
output.mf.params
| -
| массив параметров функции принадлежности выходной переменной;
|
rule
| -
| массив правил нечеткой базы знаний;
|
rule.antecedent
| -
| посылки правила. Указываются порядковые номера термов в порядке записи входных переменных. Число 0 указывает на то, что значение соответствующей входной переменной не влияет на истинность правила;
|
rule.consequent
| -
| заключения правила. Указываются порядковые номера термов в порядке записи выходных переменных. Число 0 указывает на то, что правило не распространяется на соответствующую выходную переменную;
|
rule.weight
| -
| вес правила. Задается числом из диапазона [0, 1];
|
rule.connection
| -
| логическая связка переменных внутри правила: 1 - логическое И; 2 - логическое ИЛИ.
|
Для доступа к свойствам системы нечеткого логического вывода достаточно указать имя соответствующего поля. Например, команда FIS_NAME.rule(1).weight=0.5 устанавливает вес первого правила в 0.5, команда length(FIS_NAME.rule) определяет количество правил в базе знаний, а команда FIS_NAME.input(1).mf(1).name='низкий' переименовывает первый терм первой входной переменной в "низкий".