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.
- 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)
- Multimodal possibility distributions (non-convex fuzzy sets) using IntervalUnionArithmetic.jl
- Parameteric distribution constructors
- Documentation and testing
- Fuzzy & Possibility Interest Group (FnPIG) google site (access granted on request)
- Society for Imprecise Probabilities: Theories and Applications website
- ISIPTA21 paper
- ISIPTA21 poster
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
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)