Оценка нечеткой системы вывода
[ возвращает промежуточные результаты процесса нечеткого вывода. Этот синтаксис не поддерживается, если 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')

Длина 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 для каждого входа.
fis - Система нечеткого выводаmamfis объект | sugfis объект | mamfistype2 объект | sugfistype2 объект | fistree объектВычисляемая система нечеткого вывода, заданная как одна из следующих:
mamfis объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
fistree объект - дерево взаимосвязанных нечетких систем вывода
Однородная структура, созданная с помощью getFISCodeGenerationData. Пример см. в разделе Создание кода для нечеткой системы с помощью кодера MATLAB.
input - Входные значенияВходные значения, указанные как массив M-by-NU, где NU - количество входных переменных в fis и M - количество входных комбинаций для вычисления.
evalfis поддерживает значения ввода с двойной точностью или с одной точностью.
options - Варианты оценкиevalfisOptions объектПараметры оценки, указанные как evalfisOptions объект.
fuzzifiedIn - Нечеткие входные значенияНечеткие входные значения, возвращаемые в виде массива.
Когда 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 объект.
ruleOut - Выходные данные правилаВыходные данные правила, возвращаемые в виде массива. Чтобы получить выходные данные для каждого правила, 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 объект.
aggregatedOut - Агрегированные выходные данныеАгрегированные выходные данные для каждой выходной переменной, возвращаемые в виде массива.
Массив 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 объект.
ruleFiring - Сила стрельбы правилаСила стрельбы правила, возвращаемая как вектор столбца или массив. Для получения огневой прочности для каждого правила, evalfis оценивает предшествующие правила; то есть он применяет нечеткий оператор к значениям нечетких входов.
Для нечеткой системы типа 1 ruleFiring - вектор столбца длины NR, где NR - число правил, а элемент i - сила стрельбы i-го правила.
Для нечеткой системы типа 2 ruleFiring является массивом NR-by-2. Первый столбец содержит уровни запуска правила, сгенерированные с помощью верхних функций членства, а второй столбец содержит уровни запуска правила, сгенерированные с помощью нижних функций членства.
Если input задает несколько комбинаций ввода, затем ruleFiring соответствует комбинации в последней строке input.
Дополнительные сведения о применении нечеткого оператора см. в разделе Применение нечеткого оператора.
Этот выходной аргумент не поддерживается, если fis является fistree объект.
Системы нечеткого вывода типа 1 можно оценить с помощью средства просмотра правил в приложении Fuzzy Logic Designer.
Системы нечеткого вывода можно оценить с помощью блока контроллера нечеткой логики. Дополнительные сведения о сопоставлении аргументов evalfis блок контроллера нечеткой логики см. в разделе Моделирование систем нечеткого вывода в Simulink.
evalfis изменен порядок входных аргументовВ R2018b изменилось поведение
Порядок входных аргументов для evalfis изменилось, что требует обновления кода.
Ранее для оценки нечеткой системы вывода fis, вы указали значения входных переменных, input, в качестве первого входного аргумента. Например:
output = evalfis(input,fis); output = evalfis(input,fis,options);
Обновите код, чтобы указать систему нечеткого вывода в качестве первого входного аргумента. Например:
output = evalfis(fis,input); output = evalfis(fis,input,options);
evalfisOptions объектВ R2018a изменилось поведение
Чтобы указать количество точек выборки для выходных нечетких наборов, вы теперь мы evalfisOptions , который требует обновления кода.
Ранее, чтобы указать количество точек выборки, numPts, для использования при оценке выходных нечетких наборов системы нечеткого вывода fis, вы использовали входной аргумент. Например:
output = evalfis(input,fis,numPts);
Обновите код, чтобы указать количество точек образца с помощью evalfisOptions объект. Например:
opt = evalfisOptions('NumSamplePoints',numPts);
output = evalfis(input,fis,opt);evalfis поведение диагностического сообщения изменилосьВ R2018a изменилось поведение
Поведение диагностического сообщения evalfis изменилась функция. Ранее, evalfis функция имела следующее поведение для диагностических состояний.
| Диагностическое состояние | Предыдущее поведение |
|---|---|
| Входные значения вне заданных диапазонов переменных | Предупреждение MATLAB ® |
| Нет правил, инициируемых для данного выхода при текущих входных значениях | Сообщение окна команд MATLAB |
| Пустые выходные нечеткие наборы | Сообщение окна команд MATLAB |
Начиная с R2018a, эти диагностические состояния по умолчанию отображаются как предупреждения MATLAB. Можно изменить это поведение, указав соответствующие опции в evalfisOptions объект.
Чтобы отключить предупреждающие сообщения по умолчанию, обновите код, чтобы использовать evalfisOptions и укажите параметры диагностического сообщения. Например, отключите сообщение о пустом выходном нечетком наборе.
opt = evalfisOptions('EmptyOutputFuzzySetMessage',"none"); output = evalfis(input,fis,opt);
В R2018a изменилось поведение
При оценке системы Сугено с использованием следующего синтаксиса промежуточные результаты нечеткого вывода теперь аналогичны промежуточным результатам для систем Мамдани.
[output,fuzzifiedInputs,ruleOutputs,aggregatedOutput] = evalfis(input,fis);
Для системы Sugeno:
ruleOutputs теперь возвращает массив, который содержит скалярное выходное значение для каждого правила; то есть произведение силы стрельбы правила и уровня вывода правила.
aggregatedOutput теперь возвращает сумму всех выходных значений правила для каждой выходной переменной.
Ранее для нечеткой системы Sugeno:
ruleOutputs вернул массив, содержащий уровень вывода для каждого правила.
aggregatedOutput вернул массив, в котором содержалась сила стрельбы для каждого правила.
Начиная с R2018a, если код возвращает промежуточные результаты нечеткого вывода при оценке системы Sugeno с помощью evalfis, измените код, чтобы использовать новый ruleOutputs и aggregatedOutput результаты.
Примечания и ограничения по использованию:
Все evalfis для генерации кода поддерживаются синтаксисы. Однако mamfis, sugfis, и fistree объекты не поддерживаются. Использовать evalfis для создания кода необходимо преобразовать объекты FIS в однородные структуры с помощью getFISCodeGenerationData.
В отличие от блока контроллера нечеткой логики, evalfis не поддерживает данные с фиксированной точкой для моделирования или генерации кода.
При оценке системы нечеткого вывода в Simulink ® рекомендуется не использоватьevalfis или evalfisOptions в функциональном блоке MATLAB. Вместо этого оцените систему нечеткого вывода с помощью блока контроллера нечеткой логики.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.