exponenta event banner

evalfis

Оценка нечеткой системы вывода

Описание

пример

output = evalfis(fis,input) оценивает систему нечеткого вывода fis для входных значений в input и возвращает результирующие выходные значения в output.

пример

output = evalfis(fis,input,options) вычисляет систему нечеткого вывода с использованием заданных опций вычисления.

пример

[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(___) возвращает промежуточные результаты процесса нечеткого вывода. Этот синтаксис не поддерживается, если fis является fistree объект.

Примеры

свернуть все

Загрузить FIS.

fis = readfis('tipper');

Оценка FIS при первом вводе 2 и второй вход - 1.

output = evalfis(fis,[2 1])
output = 7.0169

Загрузить FIS.

fis = readfis('tipper');

Укажите входные комбинации для вычисления с помощью массива с одной строкой на входную комбинацию.

input = [2 1;
         4 5;
         7 8];

Вычислите FIS для указанных комбинаций ввода.

output = evalfis(fis,input)
output = 3×1

    7.0169
   14.4585
   20.3414

Каждая строка output - значение выходного сигнала по умолчанию для соответствующей строки input.

Загрузить FIS.

fis = readfis('tipper');

Создание evalfisOptions набор опций, указывающий количество выборок в выходных нечетких наборах.

options = evalfisOptions('NumSamplePoints',50);

Оцените FIS с помощью этого набора опций.

output = evalfis(fis,[2 1],options);

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

fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1);
fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1);

Определите соединение между ними.

con = ["fis1/output1" "fis2/input1"];

Создайте дерево нечетких систем вывода.

tree = fistree([fis1 fis2],con);

Создание evalfisOptions набор опций, указывающий количество выборок в выходных нечетких наборах.

options = evalfisOptions('NumSamplePoints',50);

Оцените fistree с использованием указанной входной комбинации и этого набора опций.

y = evalfis(tree,[0.5 0.2 0.7],options)
y = 0.1553

Загрузить FIS.

fis = readfis('tipper');

Оцените FIS и верните промежуточные результаты вывода.

[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(fis,[2 1]);

Можно изучить промежуточные результаты для понимания или визуализации процесса нечеткого вывода. Например, просмотрите агрегированный выходной нечеткий набор, который является нечетким набором, evalfis defuzzes для поиска выходного значения. Также постройте график значения выходного сигнала по умолчанию.

outputRange = linspace(fis.output.range(1),fis.output.range(2),length(aggregatedOut))'; 
plot(outputRange,aggregatedOut,[output output],[0 1])
xlabel('Tip')
ylabel('Output Membership')
legend('Aggregated output fuzzy set','Defuzzified output')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Aggregated output fuzzy set, Defuzzified output.

Длина aggregatedOutput соответствует количеству точек выборки, используемых для дискретизации выходных нечетких наборов.

Создайте систему нечеткого вывода Mamdani типа 2.

fis = mamfistype2('NumInputs',2,'NumOutputs',1);

Оценка FIS при первом вводе 0.4 и второй вход - 0.72.

output = evalfis(fis,[0.4 0.72])
output = 0.1509

Выходной сигнал FIS типа 2 является четким значением.

При получении промежуточных результатов нечеткого вывода для FIS типа 2 получаются промежуточные результаты, сгенерированные с использованием как верхних, так и нижних значений MF. Например, получить промежуточные нечеткие входные значения.

[output,fuzzifiedInput] = evalfis(fis,[0.5 0.75]);

Просмотр нечетких входных значений.

fuzzifiedInput
fuzzifiedInput = 9×4

         0         0         0         0
    1.0000         0    1.0000         0
         0         0         0         0
         0    0.4000         0    0.2500
    1.0000    0.4000    1.0000    0.2500
         0    0.4000         0    0.2500
         0    0.4000         0    0.2500
    1.0000    0.4000    1.0000    0.2500
         0    0.4000         0    0.2500

Первые два столбца содержат нечеткие значения первого и второго входов на основе верхнего MF для каждого входа. Вторые два столбца содержат нечеткие значения на основе нижнего MF для каждого входа.

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

свернуть все

Вычисляемая система нечеткого вывода, заданная как одна из следующих:

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

evalfis поддерживает значения ввода с двойной точностью или с одной точностью.

Параметры оценки, указанные как evalfisOptions объект.

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

свернуть все

Выходные значения, возвращаемые в виде массива M-by-NY, где NY - количество выходных переменных в fis. evalfis оценивает fis для каждой строки input и возвращает полученные выходные данные по умолчанию в соответствующей строке output.

Нечеткие входные значения, возвращаемые в виде массива.

Когда fis является нечеткой системой вывода типа 1, fuzzifiedIn - массив NR-by-NU, где NR - количество правил в fis. Элемент (i, j) fuzzifiedIn - значение входной функции членства для j-го входа в i-ом правиле.

Когда fis является нечеткой системой вывода типа 2, fuzzifiedIn - массив NR-by- (2 * NU). Первые столбцы NU содержат нечеткие значения верхней функции членства для каждого правила, а последние столбцы NU содержат нечеткие значения нижних функций членства.

Если input задает несколько комбинаций ввода, затем fuzzifiedIn соответствует комбинации в последней строке input.

Дополнительные сведения о нечеткости входных значений см. в разделе Нечеткость входных данных.

Этот выходной аргумент не поддерживается, если fis является fistree объект.

Выходные данные правила, возвращаемые в виде массива. Чтобы получить выходные данные для каждого правила, evalfis применяет силу стрельбы от предшествующего правила к выходной функции членства, используя метод импликации, указанный в fis.

Когда fis является системой Мамдани типа 1, ruleOut - массив NS-by- (NRNY), где NR - количество правил, NY - количество выходов, а NS - количество точек выборки, используемых для оценки диапазонов выходных переменных. Каждый столбец ruleOut содержит выходной нечеткий набор для одного правила. Первые столбцы NR содержат выходные данные правила для первой выходной переменной, следующие столбцы NR соответствуют второй выходной переменной и так далее.

Когда fis является системой Мамдани типа 2, ruleOut - массив NS-by- (2 * NR * NY). Первые столбцы NR * NY содержат выходные данные правила, сгенерированные с помощью верхних функций членства, а последние столбцы NR * NY содержат выходные данные правила, сгенерированные с помощью нижних функций членства.

Когда fis является системой Sugeno типа 1, каждый вывод правила является скалярным значением. В этом случае ruleOut является массивом NR-by-NY. Элемент (j, k) ruleOut является значением k-ой выходной переменной для j-го правила.

Когда fis является системой Sugeno типа 2, ruleOut - массив NR-by- (3 * NY). Первые столбцы NY содержат уровни вывода правил. Следующие столбцы NY содержат соответствующие сильные стороны запуска правила, сгенерированные с помощью верхних функций членства. Последние столбцы NY содержат сильные стороны запуска правила, созданные с помощью нижних функций членства. Например, в системе с тремя выходами колонки 4 и 7 содержат уровни воспламенения для выходных уровней в колонке 1.

Если input задает несколько комбинаций ввода, затем ruleOut соответствует комбинации в последней строке input.

Дополнительные сведения о нечеткой импликации см. в разделе Применение метода импликации.

Этот выходной аргумент не поддерживается, если fis является fistree объект.

Агрегированные выходные данные для каждой выходной переменной, возвращаемые в виде массива.

Массив NS-на-NY или вектор строки длиной NY. Для каждой выходной переменной evalfis объединяет соответствующие выходные данные из всех правил с помощью метода агрегации, указанного в fis.

Для системы Мамдани типа 1 совокупный результат для каждой выходной переменной является нечетким набором. В этом случае aggregatedOut является массивом NS-by-NY, где NY - количество выходов, а NS - количество точек выборки, используемых для оценки диапазонов выходных переменных. Каждый столбец aggregatedOut содержит агрегатный нечеткий набор для одной выходной переменной.

Для системы Мамдани типа 2 совокупный результат для каждой выходной переменной является нечетким набором. В этом случае aggregatedOut является массивом NS-by- (2 * NY). Первые столбцы NY содержат агрегированные выходные данные, сгенерированные с помощью верхних функций членства, а последние столбцы NY содержат агрегированные выходные данные, сгенерированные с помощью нижних функций членства.

Когда fis является системой Sugeno типа 1, совокупный результат для каждой выходной переменной является скалярным значением. В этом случае aggregatedOut - вектор строки длины NY, где элемент k - сумма выходов правила для k-ой выходной переменной.

Когда fis является системой Sugeno типа 2, aggregatedOut - массив NR-by- (3 * NY ).aggregatedOut содержит те же данные, что и ruleOut с сортировкой столбцов по уровням вывода. Например, в системе с тремя выходами, когда выходные уровни в столбце 1 отсортированы, соответствующие уровни воспламенения в столбцах 4 и 7 корректируются соответствующим образом.

Если input задает несколько комбинаций ввода, затем aggregatedOut соответствует комбинации в последней строке input.

Дополнительные сведения о нечетком агрегировании см. в разделе Агрегирование всех выходных данных.

Этот выходной аргумент не поддерживается, если fis является fistree объект.

Сила стрельбы правила, возвращаемая как вектор столбца или массив. Для получения огневой прочности для каждого правила, evalfis оценивает предшествующие правила; то есть он применяет нечеткий оператор к значениям нечетких входов.

Для нечеткой системы типа 1 ruleFiring - вектор столбца длины NR, где NR - число правил, а элемент i - сила стрельбы i-го правила.

Для нечеткой системы типа 2 ruleFiring является массивом NR-by-2. Первый столбец содержит уровни запуска правила, сгенерированные с помощью верхних функций членства, а второй столбец содержит уровни запуска правила, сгенерированные с помощью нижних функций членства.

Если input задает несколько комбинаций ввода, затем ruleFiring соответствует комбинации в последней строке input.

Дополнительные сведения о применении нечеткого оператора см. в разделе Применение нечеткого оператора.

Этот выходной аргумент не поддерживается, если fis является fistree объект.

Альтернативная функциональность

Приложение

Системы нечеткого вывода типа 1 можно оценить с помощью средства просмотра правил в приложении Fuzzy Logic Designer.

Блок симулятора

Системы нечеткого вывода можно оценить с помощью блока контроллера нечеткой логики. Дополнительные сведения о сопоставлении аргументов evalfis блок контроллера нечеткой логики см. в разделе Моделирование систем нечеткого вывода в Simulink.

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

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

В R2018b изменилось поведение

В R2018a изменилось поведение

В R2018a изменилось поведение

В R2018a изменилось поведение

Расширенные возможности

.
Представлен до R2006a