tunefis

Настройте нечеткую систему вывода или дерево нечетких систем вывода

Синтаксис

fisout = tunefis(fisin,paramset,in,out)
fisout = tunefis(fisin,paramset,in,out,options)
fisout = tunefis(fisin,paramset,custcostfcn,options)
[fisout,optoutputs] = tunefis(___)

Описание

пример

fisout = tunefis(fisin,paramset,in,out) настраивает нечеткую систему fisin с помощью параметров, идентифицированных paramset и данными тренировки, заданными in и out.

пример

fisout = tunefis(fisin,paramset,in,out,options) настраивает нечеткую систему с дополнительными опциями из объекта options, созданного с помощью tunefisOptions.

fisout = tunefis(fisin,paramset,custcostfcn,options) настраивает нечеткую систему с помощью custcostfcn, указателя на функцию к пользовательской функции стоимости.

[fisout,optoutputs] = tunefis(___) настраивает нечеткую систему и возвращает дополнительный вывод optoutputs с информацией о настраивающемся алгоритме.

Примеры

свернуть все

Создайте начальную нечеткую систему вывода с помощью 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
   5 	 0.0639961
Step size increases to 0.011000 after epoch 5.
   6 	 0.0626917
   7 	 0.0612787
   8 	 0.0598881
   9 	 0.0585193
Step size increases to 0.012100 after epoch 9.
  10 	 0.0571712

Designated epoch number reached --> ANFIS training completed at epoch 10.

Minimal training RMSE = 0.057171

Создайте начальную нечеткую систему вывода с помощью 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 к ненастраиваемому,

  • позвольте НЕ логику в антецеденте правила 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.

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

свернуть все

Нечеткая система, заданная как mamfis, sugfis или объект fistree. Нечеткая система может быть нечеткой системой вывода или сетью взаимосвязанных нечетких систем вывода. Это создается с помощью mamfis, sugfis, genfis или fistree.

Настройки настраиваемого параметра, заданные как массив входа, вывода и установок параметров правила входа нечеткая система fisin. Чтобы получить эти установки параметров, используйте getTunableSettings с входом нечеткая система fisin. paramset может быть входным параметром, выходным параметром, параметром правила или некоторой комбинацией этих параметров как массив. Содержимое массива зависит, на которых параметрах требуется настроиться.

Введите данные тренировки, заданные как матрица m на n, где m является общим количеством входных наборов данных, и n является количеством входных параметров. Количество наборов данных ввода и вывода должно быть тем же самым.

Выведите данные тренировки, заданные как матрица m на n, где m является общим количеством выходных наборов данных, и n является количеством выходных параметров. Количество наборов данных ввода и вывода должно быть тем же самым.

FIS настраивающиеся опции, заданные как объект tunefisOptions. Можно задать настраивающийся метод алгоритма и другие опции для настраивающего процесса.

Пользовательская функция стоимости, заданная как указатель на функцию. Пользовательская функция стоимости оценивает fisout, чтобы вычислить его стоимость относительно критерия оценки, такого как данные о вводе/выводе. custcostfcn должен принять по крайней мере один входной параметр для fisout и возвращает величину затрат. Можно обеспечить указатель анонимной функции, чтобы присоединить дополнительные данные для расчета стоимости, как описано в этом примере:

function fitness = custcost(cost,trainingData)
  ...
end
custcostfcn = @(fis)custcost(fis,trainingData);

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

свернуть все

Нечеткая система, заданная как mamfis, sugfis или объект fistree. Нечеткая система может быть нечеткой системой вывода или сетью взаимосвязанных нечетких систем вывода. Это создается с помощью mamfis, sugfis, genfis или fistree. fisout является настроенным FIS.

Настройка сводных данных алгоритма, заданных как структура, содержащая следующие поля:

  • tuningOutputs

  • errorMessage

tuningOutputs является структурой с информацией о настраивающемся методе алгоритма, заданном tunefisOptions во входном параметре options. Определенные выходные параметры отличаются для каждого настраивающего алгоритма. Смотрите, что определенное настраивает метод для получения дополнительной информации о его выходных параметрах:

  • 'ga' — генетический алгоритм

  • 'particleswarm' — рой частицы

  • 'patternsearch' — поиск шаблона

  • 'simulannealbnd' — моделируемый алгоритм отжига

  • 'anfis' — адаптивный нейронечеткий

errorMessage является сообщением, сгенерированным при обновлении fisin с новыми значениями параметров.

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

| | | |

Введенный в R2019a