mamfis

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

Описание

Используйте a mamfis объект представлять тип 1 нечеткая система вывода (FIS) Mamdani.

Как альтернатива типу 1 система Mamdani, можно создать a:

  • Тип 1 Система Sugeno с помощью a sugfis объект

  • Тип 2 Система Mamdani с помощью a mamfistype2 объект

  • Тип 2 Система Sugeno с помощью a sugfistype2 объект

Для получения дополнительной информации о различных типах нечетких систем вывода смотрите Mamdani и Sugeno Fuzzy Inference Systems и Тип 2 Нечеткие Системы Вывода.

Создание

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

  • mamfis функция.

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

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

Описание

пример

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

пример

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

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

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

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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 входных значений

  • "prod" — Продукт fuzzified входных значений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно также создать вектор из fisvar объекты и присвоение это к Inputs использование записи через точку.

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

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

Можно также создать вектор из fisvar объекты и присвоение это к Outputs использование записи через точку.

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

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

Можно также создать вектор из fisrule объекты и присвоение это к Rules использование записи через точку.

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

fis.Rules(10) = [];

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

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

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

Примечание

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

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

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

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

Примеры

свернуть все

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

fis = mamfis;

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

fis.DefuzzificationMethod = "centroid";

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

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

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

fis = mamfis("NumInputs",3,"NumOutputs",1)
fis = 
  mamfis with properties:

                       Name: "fis"
                  AndMethod: "min"
                   OrMethod: "max"
          ImplicationMethod: "min"
          AggregationMethod: "max"
      DefuzzificationMethod: "centroid"
                     Inputs: [1x3 fisvar]
                    Outputs: [1x1 fisvar]
                      Rules: [1x27 fisrule]
    DisableStructuralChecks: 0

	See 'getTunableSettings' method for parameter optimization.

По умолчанию программное обеспечение создает правило для каждой возможной входной комбинации.

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

Приложение

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

Введенный в R2018b