2CoBel is a library for Belief Function Theory (BFT) in 2D (and 1D) continuos spaces. Please cite the referring paper if you use the library in your project:
@inproceedings{pellicano18ijar, author = {Pellican{`o}, Nicola and Le H{'e}garat-Mascle, Sylvie and Aldea, Emanuel }, title = "2CoBel: A scalable belief function representation for 2D discernment frames", journal = "International Journal of Approximate Reasoning", volume = "103", pages = "320 - 342", year = "2018" }
- Python 2.7(for plotting)
- Eigen
The already resolved dependencies are Clipper and a modified version of matplotlib-cpp.
- UnidimensionalFocalElement (see demos/unidimensional_demo.cpp)
- Clipper2DFocalElement (see demos/clipper_demo.cpp)
- EigenMat2DFocalElement
- BoxSet2DFocalElement
- CompositeFocalElement (for cross product spaces)
A discernment frame is built as a rectangular focal element, by specifiying its vertexes.
std::vector<Geometry::Point2D> dfp;
dfp.emplace_back(0, 0);
dfp.emplace_back(100, 0);
dfp.emplace_back(100, 100);
dfp.emplace_back(0, 100); //counterclockwise
Geometry::ClipperPolygon dfpoly(dfp);
std::unique_ptr<FocalElement> df(new Clipper2DFocalElement(dfpoly));
All the BBAs are built (see the code for reference)
buildEvidence(*df);
Creation of BBA D as the disjunctive combination between BBAs A and B.
Evidence evD = evA->disjunctive_rule(*evB);
BBAs C and D.
Discounting of BBA C.
evC->discount(0.1);
Conjunctive combination of BBA C and D.
Evidence ev_final = evC->conjunctive_rule(evD);
BetP maximization
std::unique_ptr<FocalElement> argmaxBetP = ev_final.maxBetP_withMaximalIntersections();