Интерактивные модули с графическим пользовательским интерфейсом 4 страница

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

RMVAR
Удаление переменной из системы нечеткого логического вывода

Синтаксис:

fis2 = rmvar (fis, varType, varIndex)
[fis2, errorStr] = rmvar (fis, varType, varIndex)

Описание:

Удаление переменной из системы нечеткого логического вывода. Функция rmmf имеет 3 входных аргумента:

  1. fis – система нечеткого логического вывода;
  2. varType – тип переменной. Допустимые значения: ‘input' – входная переменная; ‘output' – выходная переменная;
  3. varIndex – порядковый номер удаляемой переменной. Порядковые номера входных и выходных переменных независимы.

Функция rmmf автоматически модифицирует базу знаний таким образом, чтобы она соответствовала количеству входных и выходных переменных. Перед удалением переменной необходимо из базы знаний исключить все правила, в которых фигурирует данная переменная. В противном случае появится окно с запросом на подтверждение удаления.

Функция rmmf может иметь 2 выходных аргумента:

  1. fis2 – система нечеткого логического вывода без переменной с порядковым номером varIndex;
  2. errorStr – строка ошибок, возникших во время работы функции.

Пример:

a=readfis(‘tipper’);
b=rmvar(a, ‘input’, 1)

Удаление входной переменной “service” из демонстрационной системы нечеткого логического вывода “Tipper”.

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

SETFIS
Установка свойств системы нечеткого логического вывода

Синтаксис:

fis2 = setfis (fis, fisprop, propvalue)
fis2 = setfis (fis, vartype, varindex, varprop, propvalue)
fis2 = setfis (fis, vartype, varindex, ‘mf’, mfindex, mfprop, propvalue)

Описание:

Позволяет установить свойства системы нечеткого логического вывода. Функция setfis может иметь три, пять или семь входных аргументов:

  1. fis – исходная система нечеткого логического вывода;
  2. fisprop – наименование свойства системы нечеткого логического вывода, значение которого будет изменено. Допустимые наименования свойств:

‘AggMethod’ – реализация операции объединения результирующих нечетких множеств;
‘AndMethod’ – реализация логической операции И;
‘DefuzzMethod’ – метод дефаззификации;
‘ImpMethod’ – реализация импликации;
‘InLabels’ – наименования входных переменных;
‘InMfParams’ – параметры функций принадлежности входных переменных;
‘Name’ – наименование системы нечеткого логического вывода;
‘OrMethod’ – реализация логической операции ИЛИ;
‘OutLabels’ – наименования входных переменных;
‘OutMfParams’ – параметры функций принадлежности выходных переменных;
‘Type’ – тип системы нечеткого логического вывода (Мамдани или Сугэно);
‘RuleList’ – список правил нечеткой базы знаний;

  1. propvalue – новое значение свойства системы нечеткого логического вывода;
  2. vartype – тип переменной, значение свойства которой будет изменено. Допустимые значения: ‘input’ – входная переменная; ‘output’ – выходная переменная;
  3. varindex – порядковый номер переменной, значение свойства которой будет изменено;
  4. varprop – наименование свойства переменной, значение которого будет изменено. Допустимые значения:

‘Name’ – наименование переменной;
‘Range’ – диапазон изменения переменной;
‘NumMfs’ – количество термов;

  1. ‘mf’- константа;
  2. mfindex – порядковый номер терма в терм-множестве, используемого для лингвистической оценки переменной;
  3. mfprop – наименование свойства терма, значение свойства которого будет изменено. Допустимые наименования свойств:

‘Name’ – наименование функции принадлежности (терм);
'Type' – тип функции принадлежности;
'Params' – параметры функции принадлежности.

Пример:

fis = readfis (‘tipper’);
fis = setfis (fis, ‘DefuzzMethod’, ‘mom’)

Установка метода дефаззификации “средний из максимумов” в демонстрационной системе нечеткого логического вывода “Tipper”.

Наименования свойств можно задавать в любом регистре.

Функция setfis возвращает систему нечеткого логического вывода fis2 с новым значением соответствующего свойства.

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

SHOWFIS
Вывод значений свойств системы нечеткого логического вывода

Синтаксис:

showfis (fis)

Описание:

Функция showfis выводит на экран рабочей области значения следующих свойств системы нечеткого логического вывода fis:

Name – наименование системы нечеткого логического вывода;
Type – тип системы нечеткого логического вывода;
Inputs/Outputs – количество входных и выходных переменных;
NumInputMFs – мощности терм-множеств, используемых для лингвистической оценки входных переменных;
NumOutputMFs - мощности терм-множеств, используемых для лингвистической оценки выходных переменных;
NumRules – количество правил в нечеткой базе знаний;
AndMethod - реализация логической операции И;
OrMethod – реализация логической операции ИЛИ;
ImpMethod – реализация импликации;
AggMethod - реализация операции объединения результирующих нечетких множеств;
DefuzzMethod – метод дефаззификации;
InLabels – наименования входных переменных;
OutLabels – наименования входных переменных;
InRange – диапазоны изменения входных переменных;
OutRange – диапазоны изменения выходных переменных;
InMFLabels – терм-множества входных переменных;
OutMFLabels – терм-множества выходных переменных;
InMFTypes – типы функций принадлежности термов входных переменных;
OutMFTypes – типы функций принадлежности термов выходных переменных;
InMFParams – параметры функций принадлежности термов входных переменных;
OutMFParams – параметры функций принадлежности термов выходных переменных;
Rule Antecedent – посылки (“если”-части) правил;
Rule Consequent – следствия (“то”-части) правил;
Rule Weigth – весовые коэффициенты правил;
Rule Connection – логические связки переменных внутри правила.

Пример:

fis = readfis (‘tipper’);
fis = showfis (fis)

Вывод на экран значений свойств демонстрационной системы нечеткого логического вывода “Tipper”.

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

SHOWRULE
Вывод списка правил

Синтаксис:

outStr = showrule (fis, ruleIndex, ruleFormat, lang)

Описание:

Функция showrule возвращает переменную outStr, содержащую список правил базы знаний системы нечеткого логического вывода fis. Если выходной аргумент функции не задан, то список правил выводится на экран рабочей области. Функция showruleможет иметь до четырех входных аргументов:

  1. fis – обязательный аргумент, задающий систему нечеткого логического вывода;
  2. ruleIndex – порядковые номера выводимых правил. Задается в виде вектора натуральных чисел. По умолчанию выводятся все правила, входящие в базу знаний;
  3. ruleFormat – формат вывода правил. Допустимые значения:

‘verbose’ – словесный;
‘symbolic’ – символьный;
‘indexed’ – индексный.
Значение по умолчанию – ‘verbose’;

  1. lang - язык представления правил в формате ‘verbose’. Допустимые значения:

'english' – английский;
'francais' – французский;
'deutsch' – немецкий.
По умолчанию установлен английский язык.

Пример:

fis = readfis (‘tipper’);
showfis (fis)

Вывод на экран списка правил базы знаний демонстрационной системы нечеткого логического вывода “Tipper”.

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

SIGMF
Сигмоидная функция принадлежности

Синтаксис:

y = sigmf (x, params)

Описание:

Сигмоидная функция принадлежности задается формулой , параметры которой геометрически интерпретируются следующим образом:

a – коэффициент крутизны функции принадлежности;
с – координата перегиба функции принадлежности.

Функция sigmf применяется для задания монотоных функций принадлежности. Функция sigmfимеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [a c].

Функция sigmfвозвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = sigmf (x, [–2 4]);
y2 = sigmf (x, [–1 4]);
y3 = sigmf (x, [1 4]);
y4 = sigmf (x, [2 4]);
plot (x, [y1; y2; y3; y4])
title ('sigmf: a=-2,…,2, c=4')
ylim ([0 1.05])
legend (‘a=-2’, ‘a=-1’, ‘a=1’, ‘a=2’)

===================================================================

Построение графиков сигмоидных функций принадлежности с различными коэффициентами крутизны на интервале [0, 10].

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

SMF
S-подобная функция принадлежности

Синтаксис:

y = smf (x)

Описание:

Функция smf задает S-подобную двухпараметрическую функцию принадлежности. Это неубывающая функция принадлежности, принимающая значения от 0 до 1. Параметры функции принадлежности опеределяют интервал, внутри которого функция нелинейно возрастает от 0 до 1.

Функция smfприменяется для представления нечетких множеств типа "очень высокий", т.е. для задания неубывающих функций принадлежности с насыщением. Функция smf имеет два входных аргумента:

  1. x - вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params - вектор параметров функции принадлежности. Порядок задания параметров - [a b], которые определяют интервал [a, b] возрастания функции принадлежности. Если b<=a, то функция принадлежности получается в виде единичной ступеньки, проходящей через точку (a+b)/2.

Функция smf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример.

x = 0: 0.1: 10;

y1 = smf (x, [2 1]);

y2 = smf (x, [2 4]);

y3 = smf (x, [2 7]);

plot (x, [y1; y2; y3])

title (' smf, a=2, b=1,…,7')

ylim ([0 1.05])

legend ('b=1', 'b=4', 'b=7')

===================================================================

Построение графиков s-подобных функций принадлежности функций с параметрами [2 1], [2 4] и [2 7].

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

SUBCLUST
Нахождение центров кластеров данных с использованием субтрактивного алгоритма

Синтаксис:

[centers, sigmas] = subclust (X, radii, xBounds, options)

Описание:

На основе субтрактивного алгоритма вычисляются центры кластеров данных. Основу алгоритма, реализованного функцией subclust, составляют идеи горного метода кластерного анализа, который был предложен Рональдом Ягером (Ronald Yager) и Димитаром Филевым (Dimitar Filev). Особенностью метода является отсутствие необходимости задания количества кластеров до начала работы алгоритма.

Задача нахождения центров кластеров ставится следующим образом.

Дано: – объекты, подлежащие кластеризации, где n – количество объектов. Каждый объект представляет собой точку в p-мерном пространстве признаков ( ). Необходимо найти центры кластеров, т.е. координаты центров скопления объектов, заданных множеством X.

Идея метода заключается в следующем. Объекты рассматриваются как потенциальные центры кластеров. Для каждого объекта рассчитывается значение так называемого потенциала, характеризующего плотность расположения других объектов в его окрестности. Чем гуще соседние объекты расположены к данному объекту, тем больше значение его потенциала. Значение потенциала для объекта рассчитывается по формуле , где - вес j-й координаты. В случае, когда объект задан двумя признаками, графическое изображение распределения потенциала будет представлять собой поверхность, напоминающую горный рельеф. Отсюда и название - горный метод. В качестве центров кластеров выбирают координаты “горных” вершин. Для этого, центром первого кластера назначают объект с наибольшим потенциалом. Затем центр кластера а также близко расположенные к нему объекты исключают из дальнейшего рассмотрения, т.е. из “горного массива” вычленяют наивысшую “гору”. Значения потенциалов оставшихся объектов пересчитывают, и вновь в качестве центра кластера выбирают объект с максимальным значением потенциала. Итерационная процедура выбора центров кластеров продолжается до тех пор, пока не будут исключены все объекты.

Функция subclust может иметь до четырех входных аргументов, первые два из которых обязательны:

  1. X – матрица, представляющая данные, подлежащие кластерному анализу. Каждая строка матрицы соответствует одному объекту (образу);
  2. radii – вектор, определяющий размеры кластеров по каждой координате (длина вектора radii равна p). Значения координат вектора radii должны находится в диапазоне [0, 1] в связи с тем, что во время выполнения функции subclustданные, представленные матрицей X масштабируется на единичный гиперкуб. Обычно, малые значения radii приводят к тому, что функция subclust находит много мелких кластеров. Хорошие результаты кластерного анализа получаются, как правило, когда значения radii находятся в диапазоне [0.2, 0.5]. Весовые коэффициенты из формулы расчета потенциала связаны с radii следующим соотношением . Если аргумент radii задан скаляром, тогда все координаты считаются равноважными;
  3. xBounds – матрица диапазонов изменения входных данных, необходимая для масштабирования данных, заданных матрицей X, на единичный гиперкуб. Каждая строка матрицы задает диапазон изменения данных по одной координате, т.о. размер матрицы – 2 x p. Если аргумент xBounds не задан, тогда диапазоны изменения входных данных рассчитываются функцией subclustпо фактическим значениям матрицы X;
  4. options – вектор параметров кластерного анализа:
    • options(1) – коэффициент подавления (squash factor). Значение options(1)*radii используется для определения соседних к центру кластера объектов. Эти объекты считаются принадлежащими данному кластеру и исключаются из дальнейшего рассмотрения в кластерном анализе. Чем больше значение коэффициента подавления, тем больше соседних объектов будут принадлежать кластеру. Значение коэффициента подавления по умолчанию равно 1.25;
    • options(2) – коэффициент принятия (accept ratio). Используется как критерий назначения объекта центром кластера. Если отношение значений максимального потенциала текущего центра кластера к потенциалу центра первого кластера больше коэффициента принятия, тогда текущий объект рассматривается как центр нового кластера и кластерный анализ продолжается. Чем больше значение коэффициента принятия, тем больше кластеров будет найдено функцией subclust. Значение коэффициента принятия по умолчанию равно 0.5;
    • options(3) – коэффициент отторжения (reject ratio). Используется как критерий исключения объекта из списка потенциальных центров кластеров. Если отношение значений максимального потенциала текущего центра кластера к потенциалу центра первого кластера меньше коэффициента принятия, тогда текущий объект проверяется по коэффициенту отторжения. В случае, когда это отношение больше коэффициента отторжения и рассматриваемый объект расположен далеко от уже найденных центров кластеров, тогда он рассматривается как центр нового кластера. В противном случае, указанный объект исключается из дальнейшего рассмотрения как потенциальный центр кластера. Чем меньше значение коэффициента отторжения, тем больше далеко расположенных друг от друга кластеров может быть найдено. Значение коэффициента отторжения должно быть меньше значения коэффициента принятия. Значение коэффициента отторжения по умолчанию равно 0.15;
    • options(4) – ненулевое значение параметра указывает на то, что промежуточные результаты кластерного анализа будут выведены на экран. По умолчанию установлено нулевое значение.

Функция subclust может иметь до двух выходных аргументов:

  1. centers – матрица центров найденных кластеров. Каждая строка матрицы задает координаты центра одного кластера.
  2. sigmas – вектор радиусов кластеров.

Если функция subclustвызывается без выходных аргументов, тогда координаты центров кластеров выводятся на экран.

Пример:

data=load('clusterdemo.dat');
centers=subclust(data, 0.3)
plot3(data(:,1), data(:,2), data(:,3), 'b.', 'markersize', 3);
hold on
plot3(centers(:,1), centers(:,2), centers(:,3), 'r*', 'markersize', 8);
grid on

Кластерный анализ данных, записанных в демонстрационном файле clusterdemo.dat. Красными звездочками указаны центры найденных кластеров.

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

SUGMAX
Нахождения диапазона изменения выходных переменных системы нечеткого логического вывода типа Сугэно

Синтаксис:

out = sugmax( fis )

Описание:

Функция sugmaxнаходит диапазон изменения выходных переменных системы нечткого логического вывода типа Сугено, заданной аргументом fis. Каждая строка матрицы out соответствует одной выходной переменной. В первом столбце матрицы записываются минимально возможные значения выходных переменных, а во втором – максимально возможные значения.

Пример:

fis = readfis ('juggler');

out= sugmax (fis)

===================================================================

Нахождения диапазона изменения выходной переменной демонстрационной системы нечеткого логического вывода ‘juggler’.

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

TRAPMF
Трапециевидная функция принадлежности

Синтаксис:

y = trapmf (x, params)

Описание:

Функция trapmfзадает функцию принадлежности в форме трапеции. Трапециевидная функция принадлежности задается следующей аналитической формулой .

Параметры трапециевидной функции принадлежности интерпретируются так:

[a, d] – носитель нечеткого множества - пессимистическая оценка значений переменной;
[b, c] – ядро нечеткого множества - оптимистическая оценка значений переменной;

Функция trapmf применяется для задания ассиметричных функций принадлежности переменных, наиболее возможные значения которых принимаются на некотором интервле. Функция trapmfимеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [a b c d]. Параметры функции принадлежности должны удовлетворять условию .

Функция trapmfвозвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = trapmf (x, [0 0 1.5 10]);
y2 = trapmf (x, [0 2 3 10]);
y3 = trapmf (x, [0 4 7 10]);
plot (x, [y1; y2; y3])
title (' trapmf, a=0, d=10')
ylim([0 1.05])
legend (‘b=0, c=1.5’, ‘b=2, c=3’, ‘b=4, c=7’)

===================================================================

Построение графиков трапециевидных функций принадлежности с параметрами [0 0 1.5 10], [0 2 3 10] и [0 4 7 10].

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

TRIMF
Треугольная функция принадлежности

Синтаксис:

y = trimf (x, params)

Описание:

Функция trimfзадает функцию принадлежности в форме треугольника. Эта простая и наиболее часто применяемая функция принадлежности. Треугольная функция принадлежности задается следующей аналитической формулой .

Параметры треугольной функции принадлежности обычно интерпретируются так:

[a, c] – диапазон изменения переменной;
b – наиболее возможное значение переменной.

Функция trimfимеет два входных аргумента:

  1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params – вектор параметров функции принадлежности. Порядок задания параметров – [a b c]. Параметры функции принадлежности должны удовлетворять условию .

Функция trimfвозвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;
y1 = trimf (x, [0 0 10]);
y2 = trimf (x, [0 3 10]);
y3 = trimf (x, [0 7 10]);
plot (x, [y1; y2; y3])
title (' trimf, a=0, b=0…7, c=10')
legend (‘b=0’, ‘b=3’, ‘b=7’)

===================================================================

Построение графиков треугольных функций принадлежности с параметрами [0 0 10], [0 3 10] и [0 7 10]. В оглавление \ К следующему разделу \ К предыдущему разделу

WRITEFIS
Запись системы нечеткого логического вывода на диск

Синтаксис:

writefis (fis, filename, 'dialog')

Описание:

Функция writefis сохраняет систему нечеткого логического вывода на диске. Функция writefisможет иметь до трех входных аргументов:

  1. fis – обязательный аргумент, задающий систему нечеткого логического вывода;
  2. filename – имя файла, в котором будет сохранена система нечеткого логического вывода;
  3. 'dialog' – константа, вызывающая типовое диалоговое окно записи файла на диск. В этом окне в качестве имени файла используется значение аргумента filename. Пользователь может изменить имя файла а также указать папку, в которую будет производиться запись.

При вызове функции writefis с одним аргументом будет открыто типовое диалоговое окно записи файла на диск. Однако, в отличие от вызова функции с тремя аргументами, имя файла по умолчанию в этом окне установлено не будет.

При вызове функции writefis с двумя аргументами диалоговое окно записи файла на диск не появится. Система будет сохранена в текущей папке. Расширение “.fis” будет добавлено к имени файла в случае, если это расширение не было задано аргументом filename.

Пример:

fis = readfis (‘tipper’);
writefis (fis, ‘tipper_copy’)

Запись демонстрационной системы нечеткого логического вывода “Tipper” в файл с именем “tipper_copy.fis”.

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

ZMF
Z-подобная функция принадлежности

Синтаксис:

y = zmf (x, params)

Описание:

Функция zmf задает Z-подобную двухпараметрическую функцию принадлежности. Это невозрастающая функция принадлежности, принимающая значения от 1 до 0. Параметры функции принадлежности опеределяют интервал, внутри которого функция нелинейно убывает от 0 до 1.

Функция zmf применяется для представления нечетких множеств типа "очень низкий", т.е. для задания невозрастающих функций принадлежности с насыщением. Функция zmf имеет два входных аргумента:

  1. x - вектор, для координат которого необходимо рассчитать степени принадлежности;
  2. params - вектор параметров функции принадлежности. Порядок задания параметров - [a b], которые определяют интервал [a, b] убывания функции принадлежности. Если b<=a, то функция принадлежности получается в виде единичной ступеньки, проходящей через точку (a+b)/2.

Функция zmf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример.

x = 0: 0.1: 10;

y1 = zmf (x, [2 1]);

y2 = zmf (x, [2 5]);

y3 = zmf (x, [2 9]);

plot (x, [y1; y2; y3])

title (' zmf, a=2, b=1,…,9')

ylim ([0 1.05])

legend ('b=1', 'b=5', 'b=9')

===================================================================

Построение графиков s-подобных функций принадлежности функций с параметрами [2 1], [2 5] и [2 9].

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

FUZBLOCK
Библиотека блоков для внедрения нечетких контроллеров в Simulink-модули

Синтаксис:

fuzblock

Описание:

Библиотека содержит следующие блоки:

  • Fuzzy Logic Controller – нечеткий контроллер;
  • Fuzzy Logic Controller with Ruleviewer - нечеткий контроллер с выводом окна RuleViewer во время моделирования в пакете Simulink;
  • Membership Functions – бибилиотека функций принадлежностей.

Для включения системы нечеткого логического вывода в Simulink-модуль необходимо выбрать блок Fuzzy Logic Controller или Fuzzy Logic Controller with Ruleviewer, затем сделать двойной щелчок по этому блоку и в появившимся диалоговом окне ввести имя файла или наименование переменной в рабочей области, соответствующим системе нечеткого логического вывода. Если система нечеткого логического вывода имеет несколько входов, тогда в Simulink-модуле эти входы необходимо мультиплексировать вместе до ввода в нечеткий контроллер. Аналогично, если система нечеткого логического вывода имеет несколько выходов, тогда выходные сигналы блока будут представлены одной мультиплексной линией.

Для построения нетиповых нечетких контроллеров, т. е. отличных от блоков Fuzzy Logic Controller и Fuzzy Logic Controller with Ruleviewer. можно использовать блоки, входящие в библиотеку функций принадлежности (Membership Functions):

  • Diff. Sigmoidal MF – разница двух сигмоидных функций принадлежности;
  • Gaussian MF – гауссовская функция принадлежности;
  • Gaussian 2MF – комбинация двух гауссовских функций принадлежности;
  • Generalized Bell MF – обобщенная колокообразная функция принадлежности;
  • Pi-shared MF – пи-подобная функция принадлежности;
  • Probabilistic OR – вероятностная реализация логической операции ИЛИ;
  • Probabilistic Rule Agg – вероятностная реализация операции объединения правил;
  • Prod. Sigmoidal MF – произведение двух сигмоидных функций принадлежности;
  • S-shaped MF – S-подобная функция принадлежности;
  • Sigmoidal MF – сигмоидная функция принадлежности;
  • Trapezoidal MF – трапециевидная функция принадлежности;
  • Triangular MF – треугольная функция принадлежности;
  • Z-shaped MF – Z-подобная функция принадлежности.

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