A easy to use Multi-Criteria Decision-Making (MCDM) toolkit which propose implementations for Electre, Promethee and much more.
Project description
Quick installation
Anaconda setup
conda create --name EasyMCDM python=3.6 -y
conda activate EasyMCDM
More information on managing environments with Anaconda can be found in the conda cheat sheet.
Install via PyPI
Once you have created your Python environment (Python 3.6+) you can simply type:
pip install EasyMCDM
Install with GitHub
Once you have created your Python environment (Python 3.6+) you can simply type:
git clone https://github.com/qanastek/EasyMCDM.git
cd EasyMCDM
pip install -r requirements.txt
pip install --editable .
Any modification made to the EasyMCDM
package will be automatically interpreted as we installed it with the --editable
flag.
Try It
Promethee :
from EasyMCDM.models.Promethee import Promethee
data = pd.read_csv('tests/data/donnees.csv', header=None).to_numpy()
# or
data = {
"alfa_156": [23817.0, 201.0, 8.0, 39.6, 6.0, 378.0, 31.2],
"audi_a4": [25771.0, 195.0, 5.7, 35.8, 7.0, 440.0, 33.0],
"cit_xantia": [25496.0, 195.0, 7.9, 37.0, 2.0, 480.0, 34.0]
}
weights = [0.14,0.14,0.14,0.14,0.14,0.14,0.14]
prefs = ["min","max","min","min","min","max","min"]
p = Promethee(data=data, verbose=False)
res = p.solve(weights=weights, prefs=prefs)
print(res)
Electre Iv / Is :
from EasyMCDM.models.Electre import Electre
data = {
"A1" : [80, 90, 600, 5.4, 8, 5],
"A2" : [65, 58, 200, 9.7, 1, 1],
"A3" : [83, 60, 400, 7.2, 4, 7],
"A4" : [40, 80, 1000, 7.5, 7, 10],
"A5" : [52, 72, 600, 2.0, 3, 8],
"A6" : [94, 96, 700, 3.6, 5, 6],
}
weights = [0.1, 0.2, 0.2, 0.1, 0.2, 0.2]
prefs = ["min", "max", "min", "min", "min", "max"]
vetoes = [45, 29, 550, 6, 4.5, 4.5]
indifference_threshold = 0.6
preference_thresholds = [20, 10, 200, 4, 2, 2] # or None for Electre Iv
e = Electre(data=data, verbose=False)
results = e.solve(weights, prefs, vetoes, indifference_threshold, preference_thresholds)
Pareto :
from EasyMCDM.models.Pareto import Pareto
data = pd.read_csv('tests/data/donnees.csv', header=None).to_numpy()
# or
data = {
"alfa_156": [23817.0, 201.0, 8.0, 39.6, 6.0, 378.0, 31.2],
"audi_a4": [25771.0, 195.0, 5.7, 35.8, 7.0, 440.0, 33.0],
"cit_xantia": [25496.0, 195.0, 7.9, 37.0, 2.0, 480.0, 34.0]
}
p = Pareto(data=data, verbose=False)
res = p.solve(indexes=[0,1,6], prefs=["min","max","min"])
print(res)
Data in tests/data/donnees.csv
:
alfa_156,23817,201,8,39.6,6,378,31.2
audi_a4,25771,195,5.7,35.8,7,440,33
cit_xantia,25496,195,7.9,37,2,480,34
List of methods available
Build PyPi package
Build: python setup.py sdist bdist_wheel
Upload: twine upload dist/*
Citation
If you want to cite the tool you can use this:
@misc{EasyMCDM,
title={EasyMCDM},
author={Yanis Labrak, Quentin Raymondaud, Philippe Turcotte},
publisher={GitHub},
journal={GitHub repository},
howpublished={\url{https://github.com/qanastek/EasyMCDM}},
year={2022}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.