🔗 Live Demo: https://mouradsidhoumi.github.io/promethee2/
📘 If you understand french, here is a report that I did about this project 🎓.
(⌨️ This is my first JS project, so the code is very bad)
- I just want to know how to use it (express way ⚡).
- I want understand how it works (with an intro to MCDM).
As it says, ~ 𝕿𝖍𝖊 𝖍𝖆𝖗𝖉𝖊𝖘𝖙 ..𝖎𝖘 𝖙𝖔 𝖈𝖍𝖔𝖔𝖘𝖊 ~
Decision support is a set of techniques and methods used during the decision-making process, when confronted to uncertainty, multiple & contradictory goals..
In the old days, it was based on consultant experience, historical analysis, mathematics such as statistical, optimization or probabilistic tools⁽¹⁾. With the development of computing, it progressed and became part of operational research and business intelligence.
Desicion support include many methods each family depend on the approche as the number (big/limited) of decision-makers and alternatives(actions to choose from). Multi criteria desicion support|making|analysis is one of the approches, with limited number of decision-makers & alternatives which is the most common case.
- Action : or alternative, one of the possible solutions for the treated problem, there are several types of actions, among them: real action which is executable, or imaginary action that is made idealist for the study⁽²⁾.
- Criteria : qualitative or quantitative expression that evaluates actions⁽³⁾, it also can be a function, taking its values in a ordered set and representing the decision-maker's preferences according to a certain point of view⁽⁴⁾.
- Objectives : or goals, are what the decision-maker wants to optimize by using decision support, each one can be to maximize, minimize or to maintain in a certain state⁽²⁾.
- Performance Matrix : or evaluation matrix, is a 2-dimensional table "action×criteria" (or the reverse), each intersection represents the evaluation of action i in relation to criteria j.
-
Multi-criteria problem : what has to be done ⁽⁵⁾:
α - Choice : select the smallest possible set of "best actions".
β - Sorting (classification) : assign actions to predefined categories.
γ - Ranking : total or partial ordering of actions according to their relative qualities.
δ - Description (scoring) : describe the actions and their consequences in a formalized way. -
Aggregation of preferences :
A crucial process, which allows to obtain information on the global preference between potential actions⁽⁶⁾. Taking into account two operations:- Multi-criteria aggregation : synthesize n values into a single one.
- Comparison : compare two given performances⁽²⁾.
According to their order, two approaches follow from this, "aggregate then compare" & "compare then aggregate", both generate different results and rise several methods.
What also takes part in the diversity of methods is the type of the multi-criteria aggregation, including: total, partial and local iterative.
Preference Ranking Organization METHode for Enrichment of Evaluations
Family of multi-criteria decision support methods. Characterizing six types of criteria; makes possible to define relations of outranking, indifference and incomparability between actions and to rank them from the best to the least good⁽⁷⁾. The basic elements of these methods were first proposed in 1982 by Professor Jean-Pierre Brans in Brussels⁽⁸⁾. These methods are popular and there are several variants of them (at least five). They have been used successfully in many decision-making contexts around the world. A non-exhaustive list of scientific publications on extensions, applications and discussions related to the PROMETHEE methods has been published⁽⁹⁾.
Give a total order of the potential actions (solves ranking problem γ), using the "compare then aggregate" approach, with partial aggregation.
post-script : PROMETHEE Ⅰ arranges actions to a partial order and accepting incomparability relation⁽¹⁰⁾.
ℹ: Here, to assimilate better and avoid repetition, I'm gona break the sequencing of this reading by bringing the usage of the PROMETHEE Ⅱ demo webapp, with abstraction of how it works under the hood, which we will come back to it after.
❶ - Identify which desision you want to make.
❷ - Define what are the possible actions(alternatives) to choose between, and the criterias that you gona evaluate each action on.
❸ - Dress a table (Actions⨯Criterias) with the collected data, on an Excel file(recommanded), or by filling the table in the website.
(Easy until here, now it time for 🔥)
*If you choosed to fill an Excel file, make sure to have this formating so it can works on the website. The optional part (which we gona discuss in a jiff) is not required on the Excel file because you can fill it in the website, but it is still required for the method to operate.
*If you have qualitative values for a criteria, for example: "exellent, very good, good, bad", turn them into numeric values as "4, 3, 2, 1". And 1/0 for yes/no.
❹ - Give for each criteria a :
- Weigth, aka. coefficient.
- Boolean for maximize (yes|1) or minimize (no|0). An example in a purchase, benefits (as quality) are to maximize, and expenses (as price) are to minimize.
- Prefrence function, if you want to keep it simple while staying realistic, make them all "Linear" (putting number "5" in the Excel file), because it is the general case that includes almost all of prefrence functions.
Now, imagine that there is a score diffrence between two actions on a criteria, that diffrence value can be significant or insignificant depanding on how you see the criteria.
- Indifference threshold, the highest value for that diffrence so it still insignificant (negligible), meaning that they are as same.
- Prefrence threshold, the minimum value for that diffrence where the superior action is definitely better over the other one (just on that particular criteria, which does not imply that it is the final action decision).
The prefrence threshold have to be superior or equal to the indifference threshold, one or both can also be zero.
❺ - That's it, now you can execute the method directly or after importing the Excel file and revising the data.
Allows to personalize the prefrence of an action over an other according their diffrence on the criteria.
d : diffrence.
𝑷 = f(d) : prefrence (function).
q : indifference threshold.
p : prefrence threshold.
For d the diffrence between actions pair (A𝒊, A𝒋) (not the reverse) on an criteria, if:
- d ≤ 0 or d < q ⇔ P = 0 : action 𝒊 is indifferent to action 𝒋.
- q < d << p ⇔ P ≈ 0 : A𝒊 is weakly preferred over A𝒋.
- q << d < p ⇔ P ≈ 1 : A𝒊 is strongly preferred over A𝒋.
- p < d ⇔ P = 1 : A𝒊 is absolutely(or strictly) preferred over A𝒋. ⁽¹⁰⁾
Here are the 6 types:⁽¹¹⁾(you can determine d and 𝑷 from the graphs)
🚧 In the demo website, the gaussian type will be added soon.
After having all data (covered in how to use it) here is how it works:
Step 0 (optionnal): Normalize the action⨯criteria evaluations and criterias weights, making the values concise, between 0 & 1 (with the consideration of the criteria if it is to maximize or minimize, which reverse values in the second case).
⁽¹³⁾
Step 1: In a new matrix, calculate for every action ordered pair, the diffrence between each of their criterias evaluations.
Step 2: Apply prefrence function on diffrences values according to each criteria pref. func, here we get a matrix that is called prefrence degrees.
Step 3: Sum for every action ordered pair: the respectives prefrence degrees, each one multiplied by its weight criteria (if you didn't do step 0 then devide each result on sum of weights). Here we get prefrence indexes .
= 0 ⇔ action 𝒊 is indifferent to action 𝒋 for all criterias.
= 1 ⇔ action 𝒊 is absolutely preferred over action 𝒋 for all criterias.⁽¹⁴⁾
Step 4:
- Sum each action ordered pairs that starts with the same action. Here we get for every action a positive outranking flow. The positive flow of action 𝒊 : represents the superiority of action 𝒊 over the n-1 other actions.
- Sum each action ordered pairs that ends with the same action. Here we get for every action a negative outranking flow. The negative flow of action 𝒊 : represents the weakness of action 𝒊 over the n-1 other actions⁽¹⁵⁾.
- (optionnal: devide each flow on the number of actions - 1)
Step 5: For every action subtract their negative flow from positive flow, we get the net flows.
Step 6 Sort the net flows from biggest to smallest. Here we get the final ranking with PROMETHEE II method!🎉👏
🎦 If you still don't get it here is a Ytb video to get done with it: https://youtu.be/dPQgOX45I_I 🍿🎞
Soon 🚧🏗🛠