Настройка системы нечеткого вывода или дерева систем нечеткого вывода
настраивает систему нечеткого вывода с помощью дескриптора функции на пользовательскую функцию затрат, fisout = tunefis(fisin,paramset,custcostfcn)custcostfcn.
настраивает систему нечеткого вывода с дополнительными опциями из объекта fisout = tunefis(___,options)options создан с помощью tunefisOptions.
Создание начальной системы нечеткого вывода с помощью genfis.
x = (0:0.1:10)';
y = sin(2*x)./exp(x/5);
options = genfisOptions('GridPartition');
options.NumMembershipFunctions = 5;
fisin = genfis(x,y,options);Получите настраиваемые настройки входов, выходов и правил системы нечеткого вывода.
[in,out,rule] = getTunableSettings(fisin);
Настройка параметров функции членства с помощью "anfis".
fisout = tunefis(fisin,[in;out],x,y,tunefisOptions("Method","anfis"));
ANFIS info: Number of nodes: 24 Number of linear parameters: 10 Number of nonlinear parameters: 15 Total number of parameters: 25 Number of training data pairs: 101 Number of checking data pairs: 0 Number of fuzzy rules: 5 Start training ANFIS ... 1 0.0694086 2 0.0680259 3 0.066663 4 0.0653198 Step size increases to 0.011000 after epoch 5. 5 0.0639961 6 0.0626917 7 0.0612787 8 0.0598881 Step size increases to 0.012100 after epoch 9. 9 0.0585193 10 0.0571712 Designated epoch number reached. ANFIS training completed at epoch 10. Minimal training RMSE = 0.0571712
Создание начальной системы нечеткого вывода с помощью genfis.
x = (0:0.1:10)';
y = sin(2*x)./exp(x/5);
options = genfisOptions('GridPartition');
options.NumMembershipFunctions = 5;
fisin = genfis(x,y,options); Получите настраиваемые настройки входов, выходов и правил системы нечеткого вывода.
[in,out,rule] = getTunableSettings(fisin);
Настройте только параметр правила. В этом примере используется метод поиска шаблона.
fisout = tunefis(fisin,rule,x,y,tunefisOptions("Method","patternsearch"));
Iter Func-count f(x) MeshSize Method
0 1 0.346649 1
1 19 0.346649 0.5 Refine Mesh
2 37 0.346649 0.25 Refine Mesh
3 55 0.346649 0.125 Refine Mesh
4 73 0.346649 0.0625 Refine Mesh
5 91 0.346649 0.03125 Refine Mesh
6 109 0.346649 0.01562 Refine Mesh
7 127 0.346649 0.007812 Refine Mesh
8 145 0.346649 0.003906 Refine Mesh
9 163 0.346649 0.001953 Refine Mesh
10 181 0.346649 0.0009766 Refine Mesh
11 199 0.346649 0.0004883 Refine Mesh
12 217 0.346649 0.0002441 Refine Mesh
13 235 0.346649 0.0001221 Refine Mesh
14 253 0.346649 6.104e-05 Refine Mesh
15 271 0.346649 3.052e-05 Refine Mesh
16 289 0.346649 1.526e-05 Refine Mesh
17 307 0.346649 7.629e-06 Refine Mesh
18 325 0.346649 3.815e-06 Refine Mesh
19 343 0.346649 1.907e-06 Refine Mesh
20 361 0.346649 9.537e-07 Refine Mesh
Optimization terminated: mesh size less than options.MeshTolerance.
Создание начальной системы нечеткого вывода с помощью genfis.
x = (0:0.1:10)';
y = sin(2*x)./exp(x/5);
options = genfisOptions('GridPartition');
options.NumMembershipFunctions = 5;
fisin = genfis(x,y,options);Получите настраиваемые настройки входов, выходов и правил системы нечеткого вывода.
[in,out,rule] = getTunableSettings(fisin);
Настройки пользовательских параметров можно настроить с помощью setTunable или точечная нотация.
Не настраивайте вход 1.
in(1) = setTunable(in(1),false);
Для вывода 1:
не настраивать функции членства 1 и 2,
не настраивать функцию членства 3,
установите минимальный диапазон параметров функции членства 4 в -2,
и установите максимальный диапазон параметров функции членства 5 в 2.
out(1).MembershipFunctions(1:2) = setTunable(out(1).MembershipFunctions(1:2),false); out(1).MembershipFunctions(3).Parameters.Free = false; out(1).MembershipFunctions(4).Parameters.Minimum = -2; out(1).MembershipFunctions(5).Parameters.Maximum = 2;
Для параметров правила:
не настраивайте правила 1 и 2,
установить начало правила 3 в неперестраиваемое состояние,
разрешить логику NOT в начале правила 4,
и не игнорируйте какие-либо результаты, предусмотренные в правиле 3.
rule(1:2) = setTunable(rule(1:2),false); rule(3).Antecedent.Free = false; rule(4).Antecedent.AllowNot = true; rule(3).Consequent.AllowEmpty = false;
Установите максимальное число итераций равным 20 и настройте систему нечеткого вывода.
opt = tunefisOptions("Method","particleswarm"); opt.MethodOptions.MaxIterations = 20; fisout = tunefis(fisin,[in;out;rule],x,y,opt);
Best Mean Stall
Iteration f-count f(x) f(x) Iterations
0 90 0.3265 1.857 0
1 180 0.3265 4.172 0
2 270 0.3265 3.065 1
3 360 0.3265 3.839 2
4 450 0.3265 3.386 3
5 540 0.3265 3.249 4
6 630 0.3265 3.311 5
7 720 0.3265 2.901 6
8 810 0.3265 2.868 7
9 900 0.3181 2.71 0
10 990 0.3181 2.068 1
11 1080 0.3181 2.692 2
12 1170 0.3165 2.146 0
13 1260 0.3165 1.869 1
14 1350 0.3165 2.364 2
15 1440 0.3165 2.07 0
16 1530 0.3164 1.678 0
17 1620 0.2978 1.592 0
18 1710 0.2977 1.847 0
19 1800 0.2954 1.666 0
20 1890 0.2947 1.608 0
Optimization ended: number of iterations exceeded OPTIONS.MaxIterations.
Чтобы предотвратить подгонку настроенной FIS к данным обучения с помощью k-кратной перекрестной проверки.
Загрузить данные обучения. Этот набор учебных данных имеет один вход и один выход.
load fuzex1trnData.datСоздайте нечеткую систему вывода для данных обучения.
opt = genfisOptions('GridPartition'); opt.NumMembershipFunctions = 4; opt.InputMembershipFunctionType = "gaussmf"; inputData = fuzex1trnData(:,1); outputData = fuzex1trnData(:,2); fis = genfis(inputData,outputData,opt);
Для воспроизводимости задайте начальное число генератора случайных чисел.
rng('default')Настройте параметры настройки FIS. Использовать метод настройки по умолчанию с максимальным значением 30 итерации.
tuningOpt = tunefisOptions; tuningOpt.MethodOptions.MaxGenerations = 30;
Настройте следующие параметры для использования k-кратной перекрестной проверки.
Использовать k-кратное значение 3.
Вычисление скользящего среднего стоимости проверки с использованием окна длины 2.
Остановите каждую итерацию проверки обучения, если средняя стоимость на 5% превышает текущую минимальную стоимость.
tuningOpt.KFoldValue = 3; tuningOpt.ValidationWindowSize = 2; tuningOpt.ValidationTolerance = 0.05;
Получите настройки для настройки параметров функции членства FIS.
[in,out] = getTunableSettings(fis);
Настройте FIS.
[outputFIS,info] = tunefis(fis,[in;out],inputData,outputData,tuningOpt);
Best Mean Stall
Generation Func-count f(x) f(x) Generations
1 400 0.2421 0.5109 0
2 590 0.2292 0.4688 0
3 780 0.2292 0.4443 1
4 970 0.2256 0.4145 0
5 1160 0.2165 0.3957 0
6 1350 0.2165 0.3835 1
7 1540 0.2077 0.3548 0
8 1730 0.2077 0.3435 1
9 1920 0.2012 0.3414 0
10 2110 0.1857 0.316 0
Optimization terminated: validation tolerance exceeded.
Cross validation iteration 1: Minimum validation cost 0.294718 found at training cost 0.207704
Best Mean Stall
Generation Func-count f(x) f(x) Generations
1 400 0.2089 0.3924 0
2 590 0.2059 0.3655 0
Optimization terminated: validation tolerance exceeded.
Cross validation iteration 2: Minimum validation cost 0.306682 found at training cost 0.220498
Best Mean Stall
Generation Func-count f(x) f(x) Generations
1 400 0.2489 0.3936 0
2 590 0.2438 0.3837 0
3 780 0.2438 0.3779 1
4 970 0.2067 0.3476 0
Optimization terminated: validation tolerance exceeded.
Cross validation iteration 3: Minimum validation cost 0.220104 found at training cost 0.255407
Оцените FIS для каждого из входных значений обучения.
outputTuned = evalfis(outputFIS,inputData);
Постройте график вывода настроенной FIS вместе с ожидаемым результатом обучения.
plot([outputData,outputTuned]) legend("Expected Output","Tuned Output","Location","southeast") xlabel("Data Index") ylabel("Output value")

fisin - Система нечеткого выводаmamfis объект | sugfis объект | mamfistype2 объект | sugfistype2 объект | fistree объектСистема нечеткого вывода, заданная как одна из следующих:
mamfis объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
fistree объект - дерево взаимосвязанных нечетких систем вывода
paramset - Настраиваемые параметрыНастраиваемые параметры, заданные как массив параметров ввода, вывода и правил во входном FIS. Чтобы получить эти параметры, используйте getTunableSettings функция со входом fisin.
paramset могут быть параметрами ввода, вывода или правила или любой комбинацией этих параметров.
in - Входные данные обученияВходные обучающие данные, определенные как матрица m-на-n, где m - общее количество входных наборов данных, а n - количество входных данных. Количество входных и выходных наборов данных должно быть одинаковым.
out - Выходные данные обученияВыходные обучающие данные, определенные как матрица m-by-q, где m - общее количество выходных наборов данных, а q - количество выходных данных. Количество входных и выходных наборов данных должно быть одинаковым.
options - Параметры настройки FIStunefisOptions набор опцийПараметры настройки FIS, указанные как tunefisOptions объект. Можно указать метод алгоритма настройки и другие параметры процесса настройки.
custcostfcn - пользовательские функции затратПользовательская функция затрат, заданная как дескриптор функции. Оценка пользовательской функции затрат fisout для расчета его стоимости по критерию оценки, такому как входные/выходные данные. custcostfcn должен принимать хотя бы один входной аргумент для fisout и возвращает значение стоимости. Можно предоставить анонимный дескриптор функции для присоединения дополнительных данных для расчета затрат, как описано в этом примере:
function fitness = custcost(cost,trainingData) ... end custcostfcn = @(fis)custcost(fis,trainingData);
fisout - Система нечеткого выводаmamfis объект | sugfis объект | mamfistype2 объект | sugfistype2 объект | fistree объектСистема нечеткого вывода, заданная как одна из следующих:
mamfis объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
fistree объект - дерево взаимосвязанных нечетких систем вывода
fisout является тем же типом FIS, что и fisin.
summary - Сводка алгоритма настройкиСводка алгоритма настройки, заданная как структура, содержащая следующие поля:
tuningOutputs - Информация о настройке алгоритма
totalFunctionCount - Общее количество оценок функции оптимизации затрат
totalRuntime - Общее время выполнения процесса настройки в секундах
errorMessage - Любое сообщение об ошибке, генерируемое при обновлении fisin с новыми значениями параметров
tuningOutputs - структура, содержащая информацию настройки для алгоритма, указанного в options. Поля в tuningOutputs зависит от заданного алгоритма настройки. При использовании k-кратной перекрестной проверки tuningOutputs представляет собой массив из k структур, каждая из которых содержит информацию настройки для одной итерации обучения-проверки.
При использовании k-кратной проверки totalFunctionCount и totalRuntime оценки общей стоимости функции и общее время выполнения для всех k итераций проверки обучения.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.