pyDecision
Introduction
A python library with the following MCDA methods: AHP (Analytic Hierarchy Process); Fuzzy AHP; ARAS (Additive Ratio ASsessment); Fuzzy ARAS; Borda; BWM (Best-Worst Method); CILOS (Criterion Impact LOSs); CoCoSo (COmbined COmpromise SOlution); CODAS (Combinative Distance-based Assessment); Copeland; COPRAS (Complex PRoportional Assessment); Fuzzy COPRAS; CRADIS (Compromise Ranking of Alternatives from Distance to Ideal Solution); CRITIC (CRiteria Importance Through Intercriteria Correlation); DEMATEL (DEcision MAking Trial and Evaluation Laboratory); Fuzzy DEMATEL; EDAS (Evaluation based on Distance from Average Solution); Fuzzy EDAS; Entropy; ELECTRE (I, I_s, I_v, II, III, IV, Tri-B); GRA (Grey Relational Analysis); IDOCRIW (Integrated Determination of Objective CRIteria Weights); MABAC (Multi-Attributive Border Approximation area Comparison); MACBETH (Measuring Attractiveness by a Categorical Based Evaluation TecHnique); MAIRCA (Multi-Attributive Ideal-Real Comparative Analysis); MARCOS (Measurement of Alternatives and Ranking according to COmpromise Solution); MAUT (Multi-attribute Utility Theory); MEREC (MEthod based on the Removal Effects of Criteria); MOORA (Multi-Objective Optimization on the basis of Ratio Analysis); Fuzzy MOORA; MOOSRA (Multi-Objective Optimisation on the Basis of Simple Ratio Analysis); MULTIMOORA (Multi-Objective Optimization on the basis of Ratio Analisys Multiplicative Form); OCRA (Operational Competitiveness RAting); Fuzzy OCRA ; ORESTE (Organisation Rangement Et SynThesE de donnees relationnelles); PROMETHEE (I, II, III, IV, V, VI, Gaia); Regime; ROV (Range Of Value); SAW (Simple Additive Weighting); SMART (Simple Multi-Attribute Rating Technique); SPOTIS (Stable Preference Ordering Towards Ideal Solution), TODIM (TOmada de Decisao Interativa e Multicriterio - Interactive and Multicriteria Decision Making); PIV (Proximity Indexed Value); PSI (Preference Selection Index); TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution); Fuzzy TOPSIS; VIKOR (VIseKriterijumska Optimizacija I Kompromisno Resenje); Fuzzy VIKOR; WINGS (Weighted Influence Non-linear Gauge System); WSM (Weighted Sum Model); WPM (Weighted Product Model); WASPAS (Weighted Aggregates Sum Product Assessment).
pyDecision offers an array of features including the comparison of ranking alternatives and comparison of criterion weights from various methods. The library is also fully integrated with chatGPT, elevating result interpretation through AI. Additionally, pyDecision provides the flexibility to import results from custom methods or those not yet implemented in the library for swift comparison.
Usage
- Install
pip install pyDecision
- Import
# Import AHP
from pyDecision.algorithm import ahp_method
# Parameters
weight_derivation = 'geometric' # 'mean' or 'geometric'
# Dataset
dataset = np.array([
#g1 g2 g3 g4 g5 g6 g7
[1 , 1/3, 1/5, 1 , 1/4, 1/2, 3 ], #g1
[3 , 1 , 1/2, 2 , 1/3, 3 , 3 ], #g2
[5 , 2 , 1 , 4 , 5 , 6 , 5 ], #g3
[1 , 1/2, 1/4, 1 , 1/4, 1 , 2 ], #g4
[4 , 3 , 1/5, 4 , 1 , 3 , 2 ], #g5
[2 , 1/3, 1/6, 1 , 1/3, 1 , 1/3], #g6
[1/3, 1/3, 1/5, 1/2, 1/2, 3 , 1 ] #g7
])
# Call AHP Function
weights, rc = ahp_method(dataset, wd = weight_derivation)
# Weigths
for i in range(0, weights.shape[0]):
print('w(g'+str(i+1)+'): ', round(weights[i], 3))
# Consistency Ratio
print('RC: ' + str(round(rc, 2)))
if (rc > 0.10):
print('The solution is inconsistent, the pairwise comparisons must be reviewed')
else:
print('The solution is consistent')
- Try it in Colab:
- AHP ( Colab Demo ) ( Paper )
- Fuzzy AHP ( Colab Demo ) ( Paper )
- ARAS ( Colab Demo ) ( Paper )
- Fuzzy ARAS ( Colab Demo ) ( Paper )
- Borda ( Colab Demo ) ( Paper )
- BWM ( Colab Demo ) ( Paper )
- CILOS ( Colab Demo ) ( Paper )
- CoCoSo ( Colab Demo ) ( Paper )
- CODAS ( Colab Demo ) ( Paper )
- Copeland ( Colab Demo ) ( Paper )
- COPRAS ( Colab Demo ) ( Paper )
- Fuzzy COPRAS ( Colab Demo ) ( Paper )
- CRADIS ( Colab Demo ) ( Paper )
- CRITIC ( Colab Demo ) ( Paper )
- DEMATEL ( Colab Demo ) ( Paper )
- Fuzzy DEMATEL ( Colab Demo ) ( Paper )
- EDAS ( Colab Demo ) ( Paper )
- Fuzzy EDAS ( Colab Demo ) ( Paper )
- Entropy ( Colab Demo ) ( Paper )
- ELECTRE I ( Colab Demo ) ( Paper )
- ELECTRE I_s ( Colab Demo ) ( Paper )
- ELECTRE I_v ( Colab Demo ) ( Paper )
- ELECTRE II ( Colab Demo ) ( Paper )
- ELECTRE III ( Colab Demo ) ( Paper )
- ELECTRE IV ( Colab Demo ) ( Paper )
- ELECTRE Tri-B ( Colab Demo ) ( Paper )
- GRA ( Colab Demo ) ( Paper )
- IDOCRIW ( Colab Demo ) ( Paper )
- MABAC ( Colab Demo ) ( Paper )
- MACBETH ( Colab Demo ) ( Paper )
- MAIRCA ( Colab Demo ) ( Paper )
- MARCOS ( Colab Demo ) ( Paper )
- MAUT ( Colab Demo ) ( Paper )
- MEREC ( Colab Demo ) ( Paper )
- MOORA ( Colab Demo ) ( Paper )
- Fuzzy MOORA ( Colab Demo ) ( Paper )
- MOOSRA ( Colab Demo ) ( Paper )
- MULTIMOORA ( Colab Demo ) ( Paper )
- OCRA ( Colab Demo ) ( Paper )
- Fuzzy OCRA ( Colab Demo ) ( Paper )
- ORESTE ( Colab Demo ) ( Paper )
- PROMETHEE I ( Colab Demo ) ( Paper )
- PROMETHEE II ( Colab Demo ) ( Paper )
- PROMETHEE III ( Colab Demo ) ( Paper )
- PROMETHEE IV ( Colab Demo ) ( Paper )
- PROMETHEE V ( Colab Demo ) ( Paper )
- PROMETHEE VI ( Colab Demo ) ( Paper )
- PROMETHEE Gaia ( Colab Demo ) ( Paper )
- PIV ( Colab Demo ) ( Paper )
- PSI ( Colab Demo ) ( Paper )
- Regime ( Colab Demo ) ( Paper )
- ROV ( Colab Demo ) ( Paper )
- SAW ( Colab Demo ) ( Paper )
- SMART ( Colab Demo ) ( Paper )
- SPOTIS ( Colab Demo ) ( Paper )
- TODIM ( Colab Demo ) ( Paper )
- TOPSIS ( Colab Demo ) ( Paper )
- Fuzzy TOPSIS ( Colab Demo ) ( Paper )
- VIKOR ( Colab Demo ) ( Paper )
- Fuzzy VIKOR ( Colab Demo ) ( Paper )
- WINGS ( Colab Demo ) ( Paper )
- WSM, WPM, WASPAS ( Colab Demo ) ( Paper )
- Compare Methods:
- Compare Ranks & Ask chatGPT ( Colab Demo )
- Compare Fuzzy Ranks & Ask chatGPT ( Colab Demo )
- Compare Weigths & Ask chatGPT ( Colab Demo )
- Advanced MCDA Methods:
- 3MOAHP - Inconsistency Reduction Technique for AHP and Fuzzy-AHP Methods
- pyMissingAHP - A Method to Infer AHP Missing Pairwise Comparisons
- ELECTRE-Tree - Algorithm to infer the ELECTRE Tri-B method parameters
- Ranking-Trees - Algorithm to infer the ELECTRE II, III, IV and PROMETHEE I, II, III, IV method parameters
Acknowledgement
This section is dedicated to all the people that helped to improve or correct the code. Thank you very much!
- Sabir Mohammedi Taieb (23.JANUARY.2023) - https://sabir97.github.io/ - Université Abdelhamid Ibn Badis Mostaganem (Algeria)