exponenta event banner

mamfis

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

Описание

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

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

  • Type-1 Система Sugeno с использованием sugfis объект

  • Type-2 система Mamdani с использованием mamfistype2 объект

  • Type-2 Система Sugeno с использованием sugfistype2 объект

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

Создание

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

  • mamfis функция.

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

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

Описание

пример

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

пример

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

  • "probor" - Вероятностное ИЛИ нечетких входных значений. Дополнительные сведения см. в разделе probor.

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

  • Дескриптор функции - пользовательская функция ИЛИ в текущей рабочей папке или на пути MATLAB.

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

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

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

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

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

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

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

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

Дополнительные сведения об импликации и процессе нечеткого вывода см. в разделе Процесс нечеткого вывода.

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

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

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

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

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

По умолчанию при изменении значения свойства 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.

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

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

Приложение

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

Представлен в R2018b