MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Проектирование систем управления\Fuzzy Logic Toolbox

С.Д.Штовба "Введение в теорию нечетких множеств и нечеткую логику"

В оглавление книги \ К следующему разделу \ К предыдущему разделу

5. Структура данных системы нечеткого логического вывода

Система нечеткого логического вывода представляется в рабочей области 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='низкий' переименовывает первый терм первой входной переменной в "низкий".

Структура fis-файла

Системы нечеткого логического вывода сохраняется надиске в виде fis-файлов - текстовых файлов специального формата. Функции readfis и writefis используются для чтения и записи этих файлов. Иногда удобно модифицировать системы нечеткого логического вывода путем редактирования их fis-файлов, без вызова GUI -модулей Fuzzy Logic Toolbox. Для изменения fis-файлов можно использовать любой текстовый редактор. Однако редактировать fis-файлы надо осторожно так как, изменения некоторых строчек файла влечет за собой необходимость корректирования нескольких других. Например, если при редактировании удален терм, используемый для лингвистической оценки входной или выходной переменной, то необходимо убедиться, что в базе знаний отсутствуют правила, включающие этой терм.

Формат fis-файла описан в табл. 5.1 на примере файла tipper .fis - демонстрационной системы нечеткого логического вывода, определяющей размер чаевых в ресторане. Обратим внимание, что правила базы знаний представлены в индексном формате.

Таблица 5.1 - Формат fis - файла (на примере файла tipper.fis)

Строки файла Описание
% $ Revision: 1.1 $ строка комментария
[System] указатель, на начало описания общих параметров системы нечеткого логического вывода
Name='tipper' наименование системы
Type='mamdani' тип системы нечеткого логического вывода
NumInputs=2 количество входных переменных системы
NumOutputs=1 количество выходных переменных системы
NumRules=3 количество правил в базе знаний
AndMethod='min' реализация логической операции И
OrMethod='max' реализация логической операции ИЛИ
ImpMethod='min' реализация операции импликации
AggMethod='max' реализация операции аггреатирования
DefuzzMethod='centroid' метод дефаззификации
[Input1] указатель, на начало описания первой входной переменной
Name='service' наименование первой входной переменной
Range=[0 10] диапазон изменения
NumMFs=3 количество термов
MF1='poor':'gaussmf',[1.5 0] наименование первого терма, тип функции принадлежности и ее параметры
MF2='good':'gaussmf',[1.5 5] наименование второго терма, тип функции принадлежности и ее параметры
MF3='excellent':'gaussmf',[1.5 10] наименование второго терма, тип функции принадлежности и ее параметры
[Input2] указатель, на начало описания второй входной переменной
Name='food' наименование второй входной переменной
Range=[0 10] диапазон изменения
NumMFs=2 количество термов
MF1='rancid':'trapmf',[0 0 1 3] наименование первого терма, тип функции принадлежности и ее параметры
MF2='delicious':'trapmf',[7 9 10 10] наименование второго терма, тип функции принадлежности и ее параметры
[Output1]

указатель, на начало описания первой выходной переменной

Name='tip'

наименование выходной переменной

Range=[0 30]

диапазон изменения

NumMFs=3 количество термов

MF1='cheap':'trimf',[0 5 10]

наименование первого терма, тип функции принадлежности и ее параметры

MF2='average':'trimf',[10 15 20]

наименование второго терма, тип функции принадлежности и ее параметры

MF3='generous':'trimf',[20 25 30]

наименование второго терма, тип функции принадлежности и ее параметры

[Rules]

указатель, на начало описания правил базы знаний

1 1, 1 (1) : 2

2 0, 2 (1) : 1

3 2, 3 (1) : 2

правила базы знаний в индексном формате

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика