Сгенерируйте системный объект нечеткого вывода из данных
возвращает систему нечеткого вывода (FIS) Sugeno с одним выходом, используя сеточный разбиение заданных входных и выходных данных.fis
= genfis(inputData
,outputData
)
возвращает FIS, сгенерированный с использованием заданных входных/выходных данных и fis
= genfis(inputData
,outputData
,options
)options
. Можно сгенерировать нечеткие системы с помощью разделения сетки, вычитающей кластеризации или нечеткой кластеризации с-средств (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')
Чтобы создать FIS типа 2 из входных/выходных данных, необходимо сначала создать FIS типа 1 с помощью 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 в FIS типа 2.
fisT2 = convertToType2(fisT1);
Поскольку начальный FIS типа 1 является системой Sugeno, только входные MF преобразуются в MF типа 2.
inputData
- Входные данныеВходные данные, заданные как N столбец, где N - количество входов FIS.
inputData
и outputData
должно иметь одинаковое число строк.
outputData
- Выходные данныеВыходные данные, заданные как M столбец, где M - количество выходов FIS.
При использовании сетчатого разбиения, outputData
должен иметь один столбец. Если для секционирования сетки задано несколько столбцов, genfis
использует первый столбец в качестве выходных данных.
inputData
и outputData
должно иметь одинаковое число строк.
options
- Опции генерации FISgenfisOptions
набор опцийОпции генерации FIS, заданные как genfisOptions
набор опций. Если вы не задаете options
, genfis
использует набор опций разделения сетки по умолчанию.
Можно сгенерировать нечеткие системы с помощью одного из следующих методов, которые можно задать при создании набора опций:
Разделение сетки - Сгенерируйте функции принадлежности входа путем равномерного разбиения входа переменных областей значений и создайте однократно выводимую систему Sugeno fuzzy. Основа нечеткого правила содержит одно правило для каждой комбинации функций принадлежности входа.
options = genfisOptions('GridPartition');
Вычитающая кластеризация - Сгенерируйте нечеткую систему Sugeno с помощью функций принадлежности и правил, выведенных из кластеров данных, найденных с помощью вычитающей кластеризации входных и выходных данных. Для получения дополнительной информации о вычитании кластеризации см. subclust
.
options = genfisOptions('SubtractiveClustering');
Кластеризация FCM - Сгенерируйте нечеткую систему с помощью функции принадлежности и правил, полученных из кластеров данных, найденных с помощью кластеризации FCM входных и выходных данных. Для получения дополнительной информации о кластеризации FCM см. fcm
.
options = genfisOptions('FCMClustering');
fis
- Система нечеткого выводаmamfis
| объекта sugfis
объектСистема нечеткого вывода, возвращенная как a mamfis
или sugfis
объект. Свойства fis
зависят от типа используемой кластеризации и соответствующих options
.
Тип кластеризации | Нечеткий тип системы | Входные функции членства | Нечеткие правила | Выходы членства |
---|---|---|---|---|
Разделение сетки на разделы | Sugeno | Каждый переменный вход имеет равномерно распределенную функцию входа принадлежности. Укажите количество функций членства, использующих options.NumMembershipFunctions . Укажите тип функции принадлежности с помощью options.InputMembershipFunctionType . | Одно правило для каждой комбинации функций членства в входе. Последствие каждого правила соответствует отдельной функции выхода принадлежности. | Один выход для каждого нечеткого правила. Укажите тип функции принадлежности с помощью options.OutputMembershipFunctionType . |
Вычитание кластеризации | Sugeno | Каждая входная переменная имеет одну 'gaussmf' входная функция для каждого нечеткого кластера. | Одно правило для каждого нечеткого кластера | Каждая выходная переменная имеет одну 'linear' выходная функция принадлежности для каждого нечеткого кластера. |
Кластеризация FCM | Мамдани или Сугено | Каждая входная переменная имеет одну 'gaussmf' входная функция для каждого нечеткого кластера. | Одно правило для каждого нечеткого кластера | Каждый переменный выход имеет одну функцию выхода принадлежности для каждого нечеткого кластера. Тип функции принадлежности 'gaussmf' для систем и 'linear' Mamdani для систем Sugeno. |
Если fis
является системой Sugeno с одним выходом, можно настроить параметры функции принадлежности с помощью anfis
функция.
Генерация FIS типа 2 не поддерживается genfis
. Вместо этого сгенерируйте FIS типа 1 и преобразуйте его с помощью convertToType2
функция.
Предупреждает, начиная с R2019b
Поддержка представления систем нечеткого вывода в качестве структур будет удалена в следующем релизе. Использовать mamfis
и sugfis
вместо этого объекты. Существуют различия между этими представлениями, которые требуют обновления вашего кода. Эти различия включают:
Имена свойства объектов, которые отличаются от соответствующих полей структуры.
Объекты хранят текстовые данные как строки, а не как векторы символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые приняли или вернули системы нечеткого вывода, поскольку структуры теперь принимают и возвращают либо mamfis
или sugfis
объекты.
Чтобы преобразовать существующие структуры системы нечеткого вывода в объекты, используйте convertfis
функция.
anfis
| fcm
| genfisOptions
| subclust
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.