API
Frame
Frame.dst(atoms)
Frame.dsmt(atoms)
Frame.hybrid(atoms, empty=(), exclusive=False)
Useful methods:
frame.symbols()
frame.symbols("A B")
frame.atom("A")
frame.proposition("A & (B | C)")
frame.mass({ ... })
frame.elements()
frame.region_count
Proposition
Propositions are immutable and hashable.
A | B
A & B
str(A | B)
(A & B).is_empty
(A | B).cardinality
(A & B).union_atoms()
| means union/disjunction. & means intersection/conjunction.
MassFunction
Create:
m = frame.mass({A: 0.4, B: 0.2, A | B: 0.4})
Inspect:
m.items()
m.focal()
m.to_dict()
m.total_mass
m.conflict
Measures:
m.mass(A)
m.belief(A)
m.plausibility(A)
m.commonality(A)
Fusion:
m1.conjunctive(m2)
m1.dsmc(m2)
m1.smets(m2)
m1.dempster(m2)
m1.yager(m2)
m1.dubois_prade(m2)
m1.dsmh(m2)
m1.pcr5(m2)
m1.pcr6(m2, m3)
Decision support:
m.pignistic()
m.pignistic_regions()
m.decision()
Errors
InvalidMassError: mass values are negative or do not sum to one.TotalConflictError: Dempster normalization is undefined because conflict is one.ValueError: propositions belong to different frames or expression parsing fails.