sugfis

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

Описание

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

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

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

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

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

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

Создание

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

  • sugfis функция.

  • Если у вас есть входные/выходные данные, можно использовать genfis функция.

  • Если у вас есть .fis файл для системы Sugeno, вы можете использовать readfis функция.

  • Преобразуйте существующий Mamdani FIS в Sugeno FIS используя convertToSugeno.

Описание

пример

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

пример

fis = sugfis(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.

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Импликационный метод для вычисления последующего нечеткого множества, заданный как "prod". Системы Sugeno всегда используют "prod" метод implication, который масштабирует последующую функцию принадлежности на предшествующее значение результата.

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

Метод агрегации для объединения последствий правил, заданный как "sum". Системы Sugeno всегда используют "sum" метод агрегации, который является суммой последующих нечетких множеств.

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

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

  • "wtaver" - Средневзвешенное значение всех выходов правил

  • "wtsum" - Взвешенная сумма всех выходов правил

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

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

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

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

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

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

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

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

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

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

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

fis.Rules(10) = [];

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

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

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

Примечание

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

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

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

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

Примеры

свернуть все

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

fis = sugfis;

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

fis.DefuzzificationMethod = "wtsum";

Кроме того, можно задать одно из нескольких свойств FIS при создании нечеткой системы. Для примера создайте нечеткую систему Sugeno с заданными методами AND и OR.

fis = sugfis("AndMethod","min","OrMethod","max");

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

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

                       Name: "fis"
                  AndMethod: "prod"
                   OrMethod: "probor"
          ImplicationMethod: "prod"
          AggregationMethod: "sum"
      DefuzzificationMethod: "wtaver"
                     Inputs: [1x3 fisvar]
                    Outputs: [1x1 fisvar]
                      Rules: [1x27 fisrule]
    DisableStructuralChecks: 0

	See 'getTunableSettings' method for parameter optimization.

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

Загрузка FIS Sugeno из файла.

fis = readfis('sugeno1');

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

fis.Outputs(1).MembershipFunctions(1)
ans = 
  fismf with properties:

          Type: "linear"
    Parameters: [-1 -1]
          Name: "line1"

Просмотрите свойства второй функции членства.

fis.Outputs(1).MembershipFunctions(2)
ans = 
  fismf with properties:

          Type: "linear"
    Parameters: [1 -1]
          Name: "line2"

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

fis.Rules
ans = 
  1x2 fisrule array with properties:

    Description
    Antecedent
    Consequent
    Weight
    Connection

  Details:
                    Description           
         _________________________________

    1    "input==low => output=line1 (1)" 
    2    "input==high => output=line2 (1)"

Постройте график входа функций членства в этой системе. The low функция принадлежности обычно относится к входным значениям меньше нуля, в то время как high относится к значениям, больше нуля.

plotmf(fis,'input',1)

Figure contains an axes. The axes contains 4 objects of type line, text.

Постройте график поверхности выхода для этой FIS.

gensurf(fis)

Figure contains an axes. The axes contains an object of type line.

Общий выход нечеткой системы плавно переключается с линии, называемой line1 на линию, вызываемый line2.

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

Приложение

Вы можете в интерактивном режиме создать Sugeno FIS с помощью Fuzzy Logic Designer или Neuro-Fuzzy Designer приложений. Затем можно экспортировать систему в рабочее пространство MATLAB.

Введенный в R2018b