FLAGR is a high performance, modular, open source library for rank aggregation problems. It implements baseline and recent state-of-the-art aggregation algorithms that accept ranked preference lists and generate a single consensus list of elements.
The core project is developed in C++. The source code is available on GitHub and can be compiled as a standard application, or as a shared library. In the second case, the library file can be linked or loaded by other programs in other languages. PyFLAGR is an example of such application. In brief, FLAGR:
- employs efficient data structures and algorithms that ensure high performance,
- is cross-platform supporting Windows, MacOS and Linux,
- is modular, allowing third-party programmers to easily implement their methods within the core library,
- is open-source.
The current version of FLAGR is 1.0.18. It includes implementations of the following algorithms:
- CombSUM linear combination with 5 different score/rank normalization techniques: Rank, Borda, Simple Borda, Score, and Z-Score (Renda, et al., 2003).
- CombMNZ linear combination with 5 different score/rank normalization techniques: Rank, Borda, Simple Borda, Score, and Z-Score (Renda, et al., 2003).
- Borda Count (equivalent to CombSUM with Borda normalization, (Renda, et al., 2003)).
- Condorcet Winners.
- Copeland Winners.
- Outranking Approach of Farah and Vanderpooten, 2007.
- Distance-based iterative unsupervised algorithm of Akritidis et al., 2022 (all the above methods can be used as the starting non-weighted aggregator).
- Robust Rank Aggregation in two variants: the first one employs the Stuart p-value correction, whereas the other one does not.
- Kemeny optimal aggregation (brute force implementation, not applicable to large, or many input preference lists).
- Markov Chains (MC) methods of Dwork et al., 2001 and DeConde et al., 2006.
- Weighted agglomerative aggregation method of Chatterjee et al., 2018.
- Preference relation unsupervised algorithm of Desarkar et al., 2016.
These methods are also supported by PyFLAGR.
