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

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

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 выполняет дефузификацию, чтобы найти выход значение. Кроме того, постройте график дефузифицированного выходного значения.

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 type-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 для каждого входа. Вторые два столбца содержат нечеткие значения на основе нижнего МФ для каждого входа.

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

свернуть все

Система нечеткого вывода, которая будет оценена, задается как одно из следующего:

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

Для получения дополнительной информации о нечеткости входных значений смотрите Fuzzify Inputs.

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

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

Когда fis является системой Мамдани типа 1, ruleOut - NS массив NR (NY 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 -by - NY массив или вектор-строка с NY длины. Для каждой выходной переменной,evalfis объединяет соответствующие выходы из всех правил с помощью метода агрегации, заданного в fis.

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

Для системы Мамдани типа 2 совокупный результат для каждой выходной переменной является нечетким множеством. В этом случае aggregatedOut is как 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.

Для получения дополнительной информации о применении нечеткого оператора смотрите Apply Fuzzy Operator.

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

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

Приложение

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

Блок Simulink

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

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

расширить все

Поведение изменено в R2018b

Поведение изменено в R2018a

Поведение изменено в R2018a

Поведение изменено в R2018a

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

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