Skip to content

Julia package for performing rigorous arithmetic of Imprecise Probabilities with fuzzy numbers

License

Notifications You must be signed in to change notification settings

AnderGray/PossibilisticArithmetic.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PossibilisticArithmetic.jl

Build Status

Possibility Theory: fuzzy set theory applied to bounding sets of probability measures (Imprecise Probabilities). This package gives a rigorous arithmetic between fuzzy numbers. Outer approximations and arithmetic between fuzzy sets are based on IntervalArithmetic.jl.

In development. Package can currently:

  • Get interval bounds on probabilities
  • Construct robust outer approximations of membership functions with different step sizes
  • Construct fuzzy numbers with a real or interval core
  • Perform dependent arithmeric (using copulas) between fuzzy numbers
    • Levelwise arithmetic (standard fuzzy arithmetic)
    • Arithmetic with a precise copula defined (sigma convolutions)
    • Arithmetic with a copula's bound defined (tau convolutions)
  • Unary operators: -, sin, cos, tan, exp, log
  • Interacts with ProbabilityBoundsAnalysis.jl and IntervalArithmetic.jl
  • Conversions between fuzzy numbers, p-boxes, and more general random sets
  • Plot fuzzy numbers (requires PyPlot)

Soon:

  • Multimodal possibility distributions (non-convex fuzzy sets) using IntervalUnionArithmetic.jl
  • Parameteric distribution constructors
  • Documentation and testing

Resources

Installation

PossibilisticArithmtic.jl is a registered Julia package, and can be installed using the Julia package manager:

julia> ]
(v1.0) pkg> add PossibilisticArithmetic
julia> using PossibilisticArithmetic

or for the latest version:

julia> ]
(v1.0) pkg> add https://github.com/AnderGray/PossibilisticArithmetic.jl#master
julia> using PossibilisticArithmetic

Use

julia> a = Fuzzy(0, 1, 2)
Fuzzy: 	 ~ ( Range=[0, 2], Core=1.0 )

julia> a = Fuzzy(0, 1, 2, steps = 200) # Give number of steps, default = 200
Fuzzy: 	 ~ ( Range=[0, 2], Core=1.0 )

julia> cut(a,0.2)       # get an Alpha-cut, returns an interval
[0.195979, 1.80403]

julia> b = Fuzzy(0, 1, 1.5, 2)
Fuzzy: 	 ~ ( Range=[0, 2], Core=[1, 1.5] )

julia> c = a * b
Fuzzy: 	 ~ ( Range=[0, 4], Core=[1, 1.5] )

julia> mass(c, interval(3, 4) )   # Bound probability measure in some set
[0, 0.351759]

julia> mass(c, 3, 4)   # Same as above
[0, 0.351759]

julia> c(3, 4)         # Can also query object directly
[0, 0.351759]

julia> plot(a)
julia> plot(b)
julia> plot(c)

Fuzzy with real core Fuzzy with interval core Levelwise fuzzy product

About

Julia package for performing rigorous arithmetic of Imprecise Probabilities with fuzzy numbers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages