Coder Social home page Coder Social logo

fuzzy.jl's Introduction

Fuzzy

=============

Mamdani and Sugeno type Fuzzy Inference System in julia. This code is based in Lepisma.

CI

Install

pkg> add Fuzzy

QuickStart

julia> using Fuzzy

Mamdani FIS

  • Create input, output membership functions and rules
julia> input_a = Dict("small" => TriangularMF(1, 2, 3), "large" => TriangularMF(4, 5, 6))
julia> input_b = Dict("small" => TriangularMF(1, 2, 3))

julia> inputs = [input_a, input_b]
julia> output = Dict("small" => TriangularMF(1, 2, 3))

julia> rule = Rule(["large", "small"], "small")
julia> rules = [rule]
  • Create FIS
julia> fis = FISMamdani(inputs, output, rules)
  • Find output
julia> in_vals = [4.7, 2.3]
julia> eval_fis(fis, in_vals)

Sugeno FIS

  • Create input membership functions and rules with consequence coefficients
julia> input_a = Dict("small" => TriangularMF(1, 2, 3), "large" => TriangularMF(5, 6, 7))
julia> input_b = Dict("small" => TriangularMF(1, 2, 3))

julia> inputs = [input_a, input_b]

julia> rule1 = Rule(["large", "small"], [1.0, 1.0, 1.0])
julia> rule2 = Rule(["small", "small"], [0.0, 0.0, 5.0])
julia> rules = [rule]
  • Create FIS
julia> fis = FISSugeno(inputs, rules)
  • Find output
julia> in_vals = [2.3, 1.2]
julia> eval_fis(fis, in_vals)

Features

  • FIS

    • Mamdani
    • Sugeno
  • Membership functions

    • Triangular
    • Gaussian
    • Bell
    • Trapezoidal
    • Sigmoid
  • Defuzzification

    • Mean of Maximum
    • Weighted Average (default)
    • Centroid (coming soon)
  • T-Norm

    • Minimum (MIN)
    • Algebraic product (A-PROD)
    • Bounded difference (B-DIF)
    • Drastic product (D-PROD)
    • Einstein product (E-PROD)
    • Hamacher product (H-PROD)
  • S-Norm

    • Maximum (MAX)
    • Algebraic sum (A-SUM)
    • Bounded sum (B-SUM)
    • Drastic sum (D-SUM)
    • Einstein sum (E-SUM)
    • Hamacher sum (H-SUM)

Prepare to plot your Fuzzy sets

  • Create points to use in plot packages using the chart_prepare
julia> input_a = Dict("small" => TriangularMF(1, 2, 3), "large" => TriangularMF(5, 6, 7));
julia> x = range(0, 8, length = 100);
julia> data = chart_prepare(input_a, x)
julia> using Plots
julia> plot(x, data["values"], label = data["names"])

License

MIT

fuzzy.jl's People

Contributors

phelipe avatar sov-trotter avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.