genfis

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

Описание

пример

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')

Чтобы создать тип 2 FIS из данных о вводе/выводе, необходимо сначала создать тип 1 FIS использование genfis.

Загрузите обучающие данные и сгенерируйте FIS использование отнимающей кластеризации.

load clusterdemo.dat
inputData = clusterdemo(:,1:2);
outputData = clusterdemo(:,3);
opt = genfisOptions('SubtractiveClustering',...
                    'ClusterInfluenceRange',[0.5 0.25 0.3]);
fisT1 = genfis(inputData,outputData,opt);
fisT1.Outputs
ans = 
  fisvar with properties:

                   Name: "out1"
                  Range: [-0.1274 1.1458]
    MembershipFunctions: [1x3 fismf]

Преобразуйте сгенерированный FIS в тип 2 FIS.

fisT2 = convertToType2(fisT1);

Начиная с начального типа 1 FIS является системой Sugeno, только вход MFs преобразован в MFS типа 2.

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

свернуть все

Входные данные, заданные как 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 функция.

При генерации типа 2 FIS не поддержан genfis. Вместо этого генерация типа 1 FIS и преобразует его с помощью convertToType2 функция.

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

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

Предупреждает запуск в R2019b

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

| | |

Введенный в R2017a