mamfis

Mamdani нечеткая система вывода

Описание

Используйте объект mamfis представлять нечеткую систему вывода (FIS) Mamdani. Для получения дополнительной информации о системах Mamdani смотрите то, Что Mamdani-тип Нечеткий Вывод?

Как альтернатива системам Mamdani, можно создать Sugeno FIS с помощью объекта sugfis. Для сравнения систем Mamdani и Sugeno смотрите Сравнение Sugeno и Mamdani Systems.

Создание

Чтобы создать объект Mamdani FIS, используйте один из следующих методов:

  • Функция mamfis.

  • Если у вас есть данные тренировки ввода и вывода (inputData и outputData, соответственно), можно использовать функцию genfis с FCM кластеризирующийся метод.

    opt = genfisOptions('FCMClustering','FISType','mamdani');
    fis = genfis(inputData,outputData,opt);
  • Если у вас есть файл .fis для системы Mamdani, можно использовать функцию readfis.

Синтаксис

fis = mamfis
fis = mamfis(Name,Value)

Описание

пример

fis = mamfis создает Mamdani FIS со значениями свойств по умолчанию. Чтобы изменить свойства нечеткой системы, используйте запись через точку.

пример

fis = mamfis(Name,Value) задает конфигурационную информацию FIS или устанавливает аргументы пары "имя-значение" использования свойств объектов. Можно задать несколько пар "имя-значение". Заключите имена в кавычки.

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

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'NumInputs',2 конфигурирует нечеткую систему, чтобы иметь две входных переменные

Количество входных параметров FIS, заданных как пара, разделенная запятой, состоящая из 'NumInputs' и неотрицательного целого числа.

Количество функций принадлежности для каждого входа FIS, заданного как пара, разделенная запятой, состоящая из 'NumInputMFs' и положительного целого числа.

Количество FIS выходные параметры, заданные как пара, разделенная запятой, состоящая из 'NumOutputs' и неотрицательного целого числа.

Количество функций принадлежности для каждого FIS вывод, заданный как пара, разделенная запятой, состоящая из 'NumOutputMFs' и положительного целого числа.

Тип функции принадлежности и для переменных ввода и вывода, заданных как пара, разделенная запятой, состоящая из "MFType" и для любого "trimf" (треугольный MF) или "gaussmf" (Гауссов MF). Для каждой переменной ввода и вывода функции принадлежности равномерно распределены по переменному диапазону приблизительно с 80%-м перекрытием в поддержках MF.

Отметьте для того, чтобы автоматически добавить правила, заданные как пара, разделенная запятой, состоящая из "AddRules" и одно из следующего:

  • "allcombinations" — Если и NumInputs и NumOutputs больше, чем нуль, создают правила с антецедентами, которые содержат все входные комбинации функции принадлежности. Каждое следствие правила содержит все выходные переменные и использует первую функцию принадлежности каждого вывода.

  • 'none' Создайте FIS без любых правил.

Свойства

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

Имя FIS, заданное как строка или вектор символов.

Метод операции И для объединения fuzzified входные значения в нечетком антецеденте правила, заданном как одно из следующего:

  • min Минимум fuzzified входных значений

  • напоминание Продукт fuzzified входных значений

  • Строка или вектор символов — Имя пользовательской функции И в текущей рабочей папке или на пути MATLAB®

  • Указатель на функцию — Пользовательская функция И в текущей рабочей папке или на пути MATLAB

Для получения дополнительной информации об использовании пользовательских функций смотрите Сборку Нечеткие Системы Используя Пользовательские Функции.

Для получения дополнительной информации о нечетких операторах и нечетком процессе вывода, смотрите Нечеткий Процесс Вывода.

Метод операции ИЛИ для объединения fuzzified входные значения в нечетком антецеденте правила, заданном как одно из следующего:

  • Max Максимум fuzzified входных значений.

  • "probor" — Вероятностный OR fuzzified входных значений. Для получения дополнительной информации смотрите probor.

  • Строка или вектор символов — Имя пользовательского OR функционируют в текущей рабочей папке или на пути MATLAB.

  • Указатель на функцию — Пользовательский OR функционирует в текущей рабочей папке или на пути MATLAB.

Для получения дополнительной информации об использовании пользовательских функций смотрите Сборку Нечеткие Системы Используя Пользовательские Функции.

Для получения дополнительной информации о нечетких операторах и нечетком процессе вывода, смотрите Нечеткий Процесс Вывода.

Метод значения для вычисления последовательного нечеткого множества, заданного как одно из следующего:

  • min Обрежьте последовательную функцию принадлежности при предшествующем значении результата.

  • напоминание Масштабируйте последовательную функцию принадлежности предшествующим значением результата.

  • Строка или вектор символов — Имя пользовательского значения функционируют в текущей рабочей папке или на пути MATLAB.

  • Указатель на функцию — Пользовательское значение функционирует в текущей рабочей папке или на пути MATLAB.

Для получения дополнительной информации об использовании пользовательских функций смотрите Сборку Нечеткие Системы Используя Пользовательские Функции.

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

Метод агрегации для объединения следствий правила, заданных как одно из следующего:

  • Max Максимум последовательных нечетких множеств

  • сумма Сумма последовательных нечетких множеств

  • "probor" — Вероятностный OR последовательных нечетких множеств. Для получения дополнительной информации смотрите probor.

  • Строка или вектор символов — Имя пользовательской агрегации функционируют в текущей рабочей папке или на пути MATLAB

  • Указатель на функцию — Пользовательская агрегация функционирует в текущей рабочей папке или на пути MATLAB

Для получения дополнительной информации об использовании пользовательских функций смотрите Сборку Нечеткие Системы Используя Пользовательские Функции.

Для получения дополнительной информации об агрегации и нечетком процессе вывода, смотрите Нечеткий Процесс Вывода.

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

  • центроид Центроид области под выходным нечетким множеством

  • "bisector" — Биссектриса области под выходным нечетким множеством

  • "mom" — Среднее значение значений, для которых выходное нечеткое множество максимально

  • "lom" — Самое большое значение, для которого выходное нечеткое множество максимально

  • "som" — Наименьшее значение, для которого выходное нечеткое множество максимально

  • Строка или вектор символов — Имя пользовательского defuzzification функционируют в текущей рабочей папке или на пути MATLAB

  • Указатель на функцию — Пользовательские defuzzification функционируют в текущей рабочей папке или на пути MATLAB

Для получения дополнительной информации об использовании пользовательских функций смотрите Сборку Нечеткие Системы Используя Пользовательские Функции.

Для получения дополнительной информации о defuzzification и нечетком процессе вывода, смотрите Нечеткий Процесс Вывода.

Входные переменные FIS, заданные как вектор объектов fisvar. Чтобы добавить и удалить входные переменные, используйте addInput и removeInput, соответственно.

Можно также создать вектор объектов fisvar и присвоить его Inputs с помощью записи через точку.

Можно добавить функции принадлежности во входные переменные с помощью функции addMF.

Выходные переменные FIS, заданные как вектор объектов fisvar. Чтобы добавить и удалить выходные переменные, используйте addOutput и removeOutput, соответственно.

Можно также создать вектор объектов fisvar и присвоить его Outputs с помощью записи через точку.

Можно добавить функции принадлежности в выходные переменные с помощью функции addMF.

Входные переменные FIS, заданные как вектор объектов fisrule. Чтобы добавить нечеткие правила, используйте функцию addRule.

Можно также создать вектор объектов fisrule и присвоить его Rules с помощью записи через точку.

Чтобы удалить правило, установите соответствующий элемент вектора правила на []. Например, чтобы удалить десятое правило из списка правил, введите:

fis.Rules(10) = [];

Отметьте для отключения проверок на непротиворечивость, когда значения свойств изменятся, заданный как логическое значение.

По умолчанию, когда вы изменяете значение свойства объекта mamfis, программное обеспечение проверяет, сопоставимо ли новое значение свойства с другими свойствами объектов. Эти проверки могут влиять на производительность, особенно при создании и обновлении нечетких систем в циклах.

Чтобы отключить эти проверки, который приводит к быстрее конструкции FIS, устанавливает DisableSturcturalChecks на true.

Примечание

Отключение структурных проверок может привести к недопустимому объекту mamfis.

Чтобы повторно включить проверки на непротиворечивость, сначала проверьте, что изменения, которые вы внесли в FIS, сопоставимы и производят допустимый объект mamfis. Затем установите DisableSturcturalChecks на false. Если объект mamfis недопустим, перевключение проверок на непротиворечивость генерирует ошибку.

Функции объекта

addInputДобавьте входную переменную в нечеткую систему вывода
removeInputУдалите входную переменную из нечеткой системы вывода
addOutputДобавьте выходную переменную в нечеткую систему вывода
removeOutputУдалите выходную переменную из нечеткой системы вывода
addRuleДобавьте правило в нечеткую систему вывода
addMFДобавьте функцию принадлежности в нечеткую переменную
removeMFУдалите функцию принадлежности от нечеткой переменной
evalfisОцените нечеткую систему вывода
writeFISСохраните нечеткую систему вывода в файл

Примеры

свернуть все

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

fis = mamfis;

Измените системные свойства с помощью записи через точку. Например, сконфигурируйте fis, чтобы использовать центроид defuzzification.

fis.DefuzzificationMethod = "centroid";

Также можно задать одно из большего количества свойств FIS, когда вы создаете нечеткую систему. Например, создайте Mamdani нечеткая система с заданным AND и методами OR.

fis = mamfis("AndMethod","prod","OrMethod","probor");

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

fis = mamfis("NumInputs",3,"NumOutputs",1);

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

Приложение

Можно в интерактивном режиме создать Mamdani FIS с помощью приложения Fuzzy Logic Designer. Можно затем экспортировать систему в рабочее пространство MATLAB.

Введенный в R2018b