The result of the rank aggregation process is an aggregate list that is stored in a MergedList object. MergedList contains a collection of MergedItems, typically sorted in decreasing score order. The score is assigned by a rank aggregation method.
Regarding the evaluation, the generated aggregate list is fed to the evaluate() function of an Evaluator. The results are written in a CSV file according to this document.
Implementation files
The MergedList class is defined in the src/MergedList.h header file; its member functions are implemented in src/MergedList.cpp. The implementations of the supported rank aggregation methods are stored in the ram directory. More specifically:
src/ram/Agglomerative.cppimplements the Agglomerative Aggregation method of Chatterjee et al., 2018.src/ram/CombMNZ.cppimplements the CombMNZ linear combination methods as they are described in the paper of Renda et al., 2003.src/ram/CombSUM.cppimplements the CombSUM linear combination methods (including Borda Count) as they are described in the paper of Renda et al., 2003.src/ram/CondorcetWinners.cppimplements one of the oldest approaches to rank aggregation, the Condorcet criterion method.src/ram/CopelandWinners.cppimplements the method of Copeland Winners which is a variant of the Condorcet Winners method.src/ram/CustomMethods.cppcontains two sample functions which facilitate the integration of custom rank aggregation methods.src/ram/DIBRA.cppimplements the Iterative Distance-Based Weighted method of Akritidis et al., 2022.src/ram/KemenyOptimal.cppcontains the brute force implementation of Kemeny optimal aggregation.src/ram/MC.cppimplements the four Markov Chains method of Dwork et al., 2001 and the MCT method of DeConde et al., 2006.src/ram/OutrankingApproach.cppimplements the Outranking Approach of Farah and Vanderpooten, 2007.src/ram/PrefRel.cppimplements the Preference Relations Weighted method of Desarkar et al., 2016.src/ram/RobustRA.cppimplements the Robust Rank Aggregation method (RRA) of Kolde et al., 2012.
For more details, please visit the Publications page, or follow the links in the Introduction page. A guide on how custom rank aggregation implementations can be integrated to FLAGR is given here.
Technical Details
The elements of MergedList are organized in two ways. More specifically:
- A hash table (
hash_tablemember variable) with linked lists as chains (for collision resolution) is employed to support fast fusion of the individualInputLists. The contents of this hash table areMergedItemobjects; the search keys are the unique identifiers of the associatedInputItems(MergedIteminherits the members ofInputItem). - A typical array of
MergedItempointers (item_listmember variable) that is used to sort the objects in decreasing score order.
The following interactive block diagram depicts the functionality of the MergedList class inside the entire architecture of FLAGR.
