Документация Engee

Системы вывода

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

struct MamdaniFuzzySystem{And<:FuzzyLogic.AbstractAnd, Or<:FuzzyLogic.AbstractOr, Impl<:FuzzyLogic.AbstractImplication, Aggr<:FuzzyLogic.AbstractAggregator, Defuzz<:FuzzyLogic.AbstractDefuzzifier, R<:FuzzyLogic.AbstractRule} <: FuzzyLogic.AbstractFuzzySystem

Структура данных, представляющая систему нечеткого вывода Мамдани 1-го типа. Ее можно создать с помощью макроса @mamfis. Ее можно вызвать как функцию для оценки системы при заданных входных данных. Входные данные должны быть заданы как именованные аргументы.

  • name::Symbol: имя системы.

  • inputs::Dictionaries.Dictionary{Symbol, FuzzyLogic.Variable}: входные переменные и соответствующая область.

  • outputs::Dictionaries.Dictionary{Symbol, FuzzyLogic.Variable}: выходные переменные и соответствующая область.

  • rules::Vector{R} where R<:FuzzyLogic.AbstractRule: правила вывода.

  • and::FuzzyLogic.AbstractAnd: метод, используемый для вычисления конъюнкции в правилах (по умолчанию MinAnd).

  • or::FuzzyLogic.AbstractOr: метод, используемый для вычисления дизъюнкции в правилах (по умолчанию MaxOr).

  • implication::FuzzyLogic.AbstractImplication: метод, используемый для вычисления импликации в правилах (по умолчанию MinImplication).

  • aggregator::FuzzyLogic.AbstractAggregator: метод, используемый для агрегирования нечетких выводов (по умолчанию MaxAggregator).

  • defuzzifier::FuzzyLogic.AbstractDefuzzifier: метод, используемый для приведения результата к четкости (по умолчанию CentroidDefuzzifier).

Расширенная справка

Пример

fis = @mamfis function tipper(service, food)::tip
    service := begin
      domain = 0:10
      poor = GaussianMF(0.0, 1.5)
      good = GaussianMF(5.0, 1.5)
      excellent = GaussianMF(10.0, 1.5)
    end

    food := begin
      domain = 0:10
      rancid = TrapezoidalMF(-2, 0, 1, 3)
      delicious = TrapezoidalMF(7, 9, 10, 12)
    end

    tip := begin
      domain = 0:30
      cheap = TriangularMF(0, 5, 10)
      average = TriangularMF(10, 15, 20)
      generous = TriangularMF(20, 25, 30)
    end

    service == poor || food == rancid --> tip == cheap
    service == good --> tip == average
    service == excellent || food == delicious --> tip == generous
end

fis(service=1, food=2)

# Вывод

1-element Dictionaries.Dictionary{Symbol, Float64}
 :tip │ 5.558585929783786

Система вывода Сугено

struct SugenoFuzzySystem{And<:FuzzyLogic.AbstractAnd, Or<:FuzzyLogic.AbstractOr, R<:FuzzyLogic.AbstractRule} <: FuzzyLogic.AbstractFuzzySystem

Структура данных, представляющая систему нечеткого вывода Сугено 1-го типа. Ее можно создать с помощью макроса @sugfis. Ее можно вызвать как функцию для оценки системы при заданных входных данных. Входные данные должны быть заданы как именованные аргументы.

  • name::Symbol: имя системы.

  • inputs::Dictionaries.Dictionary{Symbol, FuzzyLogic.Variable}: входные переменные и соответствующая область.

  • outputs::Dictionaries.Dictionary{Symbol, FuzzyLogic.Variable}: выходные переменные и соответствующая область.

  • rules::Vector{R} where R<:FuzzyLogic.AbstractRule: правила вывода.

  • and::FuzzyLogic.AbstractAnd: метод, используемый для вычисления конъюнкции в правилах (по умолчанию MinAnd).

  • or::FuzzyLogic.AbstractOr: метод, используемый для вычисления дизъюнкции в правилах (по умолчанию MaxOr).

struct ConstantSugenoOutput{T<:Real} <: FuzzyLogic.AbstractSugenoOutputFunction

Представляет постоянный вывод в системах вывода Сугено.

  • c::Real: значение постоянного вывода.

struct LinearSugenoOutput{T} <: FuzzyLogic.AbstractSugenoOutputFunction

Представляет выходную переменную, которая имеет полиномиальное отношение первого порядка к входным данным. Используется для систем вывода Сугено.

  • coeffs::Dictionaries.Dictionary{Symbol}: коэффициенты, связанные с каждой входной переменной.

  • offset::Any: смещение вывода.

Общие функции

set(fis::FuzzyLogic.AbstractFuzzySystem; kwargs...) -> Any

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

Входные данные

  • fis::AbstractFuzzySystem — входная нечеткая система

Именованные аргументы

  • kwargs... — новые параметры системы вывода, подлежащие настройке