exponenta event banner

sugfis

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

Описание

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

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

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

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

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

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

Создание

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

  • sugfis функция.

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

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

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

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метод агрегирования для объединения последующих правил, указанный как "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) = [];

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

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

Постройте график входных функций членства этой системы. 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 с помощью дизайнера нечеткой логики или Neuro-Fuzzy Designer. Затем можно экспортировать систему в рабочую область MATLAB.

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