genfis

Сгенерируйте нечеткий системный объект вывода от данных

Синтаксис

fis = genfis(inputData,outputData)
fis = genfis(inputData,outputData,options)

Описание

пример

fis = genfis(inputData,outputData) возвращает нечеткую систему вывода (FIS) Sugeno одно вывода с помощью раздела сетки данных входных и выходных данных.

пример

fis = genfis(inputData,outputData,options) возвращается FIS сгенерировал использование заданных данных о вводе/выводе и options. Можно сгенерировать нечеткие системы с помощью разделения сетки, отнимающей кластеризации или кластеризации нечетких c-средних-значений (FCM).

Примеры

свернуть все

Задайте данные тренировки.

inputData = [rand(10,1) 10*rand(10,1)-5];
outputData = rand(10,1);

Сгенерируйте нечеткую систему вывода.

fis = genfis(inputData,outputData);

Сгенерированная система, fis, создается с помощью разделения сетки с опциями по умолчанию.

Задайте данные тренировки.

inputData = [rand(10,1) 10*rand(10,1)-5];
outputData = rand(10,1);

Создайте набор опции genfisOptions по умолчанию для разделения сетки.

opt = genfisOptions('GridPartition');

Задайте следующие входные функции принадлежности для сгенерированного FIS:

  • 3 Гауссовы функции принадлежности для первой входной переменной

  • 5 треугольные функции принадлежности для второй входной переменной

opt.NumMembershipFunctions = [3 5];
opt.InputMembershipFunctionType = ["gaussmf" "trimf"];

Сгенерируйте FIS.

fis = genfis(inputData,outputData,opt);

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

[x,mf] = plotmf(fis,'input',1);
subplot(2,1,1)
plot(x,mf)
xlabel('input 1 (gaussmf)')
[x,mf] = plotmf(fis,'input',2);
subplot(2,1,2)
plot(x,mf)
xlabel('input 2 (trimf)')

Получите данные тренировки ввода и вывода.

load clusterdemo.dat
inputData = clusterdemo(:,1:2);
outputData = clusterdemo(:,3);

Создайте набор опции genfisOptions и задайте область значений влияния за каждую размерность данных. Задайте 0.5 и 0.25 как область значений влияния за первые и вторые входные переменные. Задайте 0.3 как область значений влияния за выходные данные.

opt = genfisOptions('SubtractiveClustering',...
                    'ClusterInfluenceRange',[0.5 0.25 0.3]);

Сгенерируйте FIS.

fis = genfis(inputData,outputData,opt);

Сгенерированный FIS содержит одно правило для каждого кластера.

showrule(fis)
ans = 3x83 char array
    '1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1) (1)'
    '2. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2) (1)'
    '3. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3) (1)'

Получите входные и выходные данные.

load clusterdemo.dat
inputData = clusterdemo(:,1:2);
outputData = clusterdemo(:,3);

Создайте набор опции genfisOptions для Кластеризации FCM, задав тип Mamdani FIS.

opt = genfisOptions('FCMClustering','FISType','mamdani');

Задайте количество кластеров.

opt.NumClusters = 3;

Подавите отображение информации об итерации к Командному окну.

opt.Verbose = 0;

Сгенерируйте FIS.

fis = genfis(inputData,outputData,opt);

Сгенерированный FIS содержит одно правило для каждого кластера.

showrule(fis)
ans = 3x83 char array
    '1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1) (1)'
    '2. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2) (1)'
    '3. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3) (1)'

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

[x,mf] = plotmf(fis,'input',1);
subplot(3,1,1)
plot(x,mf)
xlabel('Membership Functions for Input 1')
[x,mf] = plotmf(fis,'input',2);
subplot(3,1,2)
plot(x,mf)
xlabel('Membership Functions for Input 2')
[x,mf] = plotmf(fis,'output',1);
subplot(3,1,3)
plot(x,mf)
xlabel('Membership Functions for Output')

Входные параметры

свернуть все

Входные данные, заданные как N - массив столбца, где N является количеством входных параметров FIS.

inputData и outputData должны иметь одинаковое число строк.

Выходные данные, заданные как M - массив столбца, где M является количеством FIS выходные параметры.

При использовании разделения сетки outputData должен иметь один столбец. Если вы задаете больше чем один столбец для разделения сетки, genfis использует первый столбец в качестве выходных данных.

inputData и outputData должны иметь одинаковое число строк.

Установлены опции генерации FIS, заданные как опция genfisOptions. Если вы не задаете options, genfis использует сетку по умолчанию, делящую набор опции.

Можно сгенерировать нечеткие системы с помощью одного из следующих методов, которые вы задаете, когда вы создаете набор опции:

  • Разделение сетки — функции принадлежности входа Generate путем универсального разделения областей значений входной переменной, и создают Sugeno одно вывода нечеткая система. Нечеткая основа правила содержит одно правило для каждой входной комбинации функции принадлежности.

    options = genfisOptions('GridPartition');
  • Отнимающая кластеризация — Генерирует Sugeno нечеткая система с помощью функций принадлежности и правил, выведенных от кластеров данных, найденных с помощью отнимающей кластеризации входных и выходных данных. Для получения дополнительной информации об отнимающей кластеризации смотрите subclust.

    options = genfisOptions('SubtractiveClustering');
  • FCM, Кластеризирующиеся — Генерируют нечеткую систему с помощью функции принадлежности и правил, выведенных от кластеров данных, найденных с помощью кластеризации FCM входных и выходных данных. Для получения дополнительной информации о кластеризации FCM смотрите fcm.

    options = genfisOptions('FCMClustering');

Выходные аргументы

свернуть все

Нечеткая система вывода, возвращенная как объект mamfis или sugfis. Свойства fis зависят от типа кластеризации используемого и соответствующий options.

Кластеризация типаНечеткий системный типВведите функции принадлежностиНечеткие правилаВыведите функции принадлежности
Разделение сеткиSugenoКаждая входная переменная равномерно распределила входную функцию принадлежности. Задайте количество функций принадлежности с помощью options.NumMembershipFunctions. Задайте тип функции принадлежности с помощью options.InputMembershipFunctionType.Одно правило для каждой входной комбинации функции принадлежности. Следствие каждого правила соответствует различной выходной функции принадлежности.Одна выходная функция принадлежности для каждого нечеткого правила. Задайте тип функции принадлежности с помощью options.OutputMembershipFunctionType.
Отнимающая кластеризацияSugenoКаждая входная переменная имеет одну функцию принадлежности входа 'gaussmf' для каждого нечеткого кластера.Одно правило для каждого нечеткого кластераКаждая выходная переменная имеет один 'linear' функция принадлежности вывода для каждого нечеткого кластера.
Кластеризация FCMMamdani или SugenoКаждая входная переменная имеет одну функцию принадлежности входа 'gaussmf' для каждого нечеткого кластера.Одно правило для каждого нечеткого кластераКаждая выходная переменная имеет тот выходная функция принадлежности для каждого нечеткого кластера. Типом функции принадлежности является 'gaussmf' для систем Mamdani и 'linear' для систем Sugeno.

Если fis является системой Sugeno одно вывода, можно настроить параметры функции принадлежности с помощью команды anfis.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2018b

Смотрите также

| | |

Введенный в R2017a