simsab-ufcg / Promethee2

Implementation of Promethee with optimization
MIT License
12 stars 7 forks source link

PrometheeOptimization

An implementation of Promethee 2 based on the "PROMETHEE is not quadratic: An O(qnlog(n)) algorithm" paper by Toon Calders and Dimitri Van Assch.

Building/Running

Build

To build our project just run make command in the root directory.

Run

You can use main.py to manager all your Promethee runs. First, must be specified Promethee version, Fast Promethee is our more stable and fast version, -fp is his flag. To use Umbu version -um must be used and to Vanilla version -van.

Fast Promethee and Umbu use tiff input format, while Vanilla uses txt input format.

Input format

Tiff Format

You must process each criterion separated and finally merge everyone. Umbu and Fast Promethee share some flags to must be used, like as:

python main.py -fp AEMMF.tif 0.5 -type=linear 1 -size=2048 -proc=4

Umbu has one optional flag:

Vanilla supports:

Usual => usual Quasi (U-shape) => quasi Linear (V-shape) => linear Level => level Linear with Indifference => linearWithIndifference Gaussian => gaussian

For the optimized version, we support the Linear shape (as the proposed method is restricted to Linear functions). Note that, however, our implementation only supports linear comparison, one can use the parameter p = 0 and linear comparison will behave usual comparison.

Umbu and Fast Promethee only support linear and linearWithIndifference functions.

Out of Zone of Study

You can use Not-a-Number instead of value of alternative, this alternatives will not be considered. This can be useful if you need run Promethee to calculate a subregion of Tiff file.

References

PROMETHEE is not quadratic: An O(qnlog(n)) algorithm
A Preference Ranking Organisation Method: The PROMETHEE Method for Multiple Criteria Decision-Making