mamfis

Система нечеткого вывода Мамдани

Описание

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

В качестве альтернативы системе Мамдани типа 1 можно создать:

  • Type-1 систему Sugeno с помощью a sugfis объект

  • Type-2 систему Мамдани с помощью a mamfistype2 объект

  • Type-2 систему Sugeno с помощью a sugfistype2 объект

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

Создание

Чтобы создать объект 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" (Гауссов МФ). Для каждой входной и выходной переменной функции принадлежности равномерно распределены по области значений переменных с приблизительно 80% перекрытием в поддержках MF.

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

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

  • "none" - Создание FIS без каких-либо правил.

Свойства

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

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

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

  • "min" - Минимум нечетких входных значений

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

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

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

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

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

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

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

  • "probor" - Вероятностный ИЛИ нечетких входных значений. Для получения дополнительной информации см. 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");

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

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