JMcDM
A package for Multiple-criteria decision making techniques in Julia
Installation
Please type
julia> ]
(@v1.5) pkg> add JMcDM
or
julia> using Pkg
julia> Pkg.add("JMcDM")
in Julia REPL.
Documentation
Please check out the reference manual here.
Implemented methods
MCDM Tools
- TOPSIS (Technique for Order Preference by Similarity to Ideal Solutions)
- ELECTRE (Elemination and Choice Translating Reality)
- DEMATEL (The Decision Making Trial and Evaluation Laboratory)
- MOORA (Multi-Objective Optimization By Ratio Analysis)
- VIKOR (VlseKriterijumska Optimizcija I Kaompromisno Resenje in Serbian)
- AHP (Analytic Hierarchy Process)
- DEA (Data Envelopment Analysis)
- GRA (Grey Relational Analysis)
- Non-dominated Sorting
- SAW (Simple Additive Weighting) (aka WSM)
- ARAS (Additive Ratio Assessment)
- WPM (Weighted Product Model)
- WASPAS (Weighted Aggregated Sum Product ASsessment)
- EDAS (Evaluation based on Distance from Average Solution)
- MARCOS (Measurement Alternatives and Ranking according to COmpromise Solution)
- MABAC (Multi-Attributive Border Approximation area Comparison)
- MAIRCA (Multi Attributive Ideal-Real Comparative Analysis)
- COPRAS (COmplex PRoportional ASsessment)
- PROMETHEE (Preference Ranking Organization METHod for Enrichment of Evaluations)
- CoCoSo (Combined Compromise Solution)
- CRITIC (CRiteria Importance Through Intercriteria Correlation)
- Entropy
- CODAS (COmbinative Distance-based ASsessment)
SCDM Tools
- minimax
- maximin
- minimin
- maximax
- Savage
- Hurwicz
- MLE
- Laplace
- Expected Regret
Game
- Game solver for zero sum games
Unimplemented methods
-
UTA
-
MAUT
-
STEM
-
PAPRIKA
-
ANP (Analytical Network Process)
-
Goal Programming
-
MACBETH
-
COMET
-
will be updated soon.
Example
julia> using JMcDM, DataFrames
julia> df = DataFrame(
:age => [6.0, 4, 12],
:size => [140.0, 90, 140],
:price => [150000.0, 100000, 75000],
:distance => [950.0, 1500, 550],
:population => [1500.0, 2000, 1100]);
julia> df
3×5 DataFrame
Row │ age size price distance population
│ Float64 Float64 Float64 Float64 Float64
─────┼──────────────────────────────────────────────────
1 │ 6.0 140.0 150000.0 950.0 1500.0
2 │ 4.0 90.0 100000.0 1500.0 2000.0
3 │ 12.0 140.0 75000.0 550.0 1100.0
julia> w = [0.35, 0.15, 0.25, 0.20, 0.05];
julia> fns = makeminmax([minimum, maximum, minimum, minimum, maximum]);
julia> result = topsis(df, w, fns);
julia> result.scores
3-element Array{Float64,1}:
0.5854753145549456
0.6517997936899308
0.41850223305822903
julia> result.bestIndex
2
Community guidelines
Do you want to contribute?
- Please create an Issue first. In this issue, please specify the idea.
- Let the community discuss the new contribution.
If the community decision is yes, please
- Fork the repository
- Send a pull request.
Please read the issue Welcome to newcomers! for implementation details.
Welcome!