Available via license: CC BY 4.0
Content may be subject to copyright.
ProMCDA: A Python package for Probabilistic
Multi-Criteria Decision Analysis
Flaminia Catalli 1* and Matteo Spada 2*
1wetransform GmbH, Germany 2Zurich University of Applied Sciences, School of Engineering, INE
Institute of Sustainable Development, Switzerland *These authors contributed equally.
DOI: 10.21105/joss.06190
Software
•Review
•Repository
•Archive
Editor: Gabriela Alessio Robles
Reviewers:
•@limengbinggz
•@B3J4y
•@paulrougieux
Submitted: 28 November 2023
Published: 16 January 2025
License
Authors of papers retain copyright
and release the work under a
Creative Commons Attribution 4.0
International License (CC BY 4.0).
Summary
Multi-Criteria Decision Analysis (MCDA) is a formal process used to assist decision-makers in
structuring complex decision problems and providing recommendations based on a compre-
hensive evaluation of alternatives. This evaluation is conducted by selecting relevant criteria
and subcriteria, which are then aggregated according to the preferences of the decision-makers
to produce a ranking or classication of the alternatives (Bouyssou et al., 2006;Roy, 1996).
A wide range of MCDA methods are available in the literature for integrating information
to classify alternatives into preference classes or rank them from best to worst (Cinelli et
al., 2022). Among these, composite indicators (CIs) are commonly used synthetic measures
for ranking and benchmarking alternatives across complex concepts (Greco et al., 2019).
Examples of CI applications include environmental quality assessment (Oţoiu & Grădinaru,
2018), resilience of energy supply (Gasser et al., 2020), sustainability (Volkart et al., 2016),
and global competitiveness (Klaus Schwab, 2018).
However, the nal ranking of alternatives in MCDA can be inuenced by various factors such as
uncertainty in the criteria, the choice of weights assigned to them, and the selection of methods
for normalization and aggregation to construct CIs (Cinelli et al., 2020;Langhans et al.,
2014). To address these challenges, the
ProMCDA
Python module has been developed to allow
decision-makers to explore the sensitivity and robustness of CI results in a user-friendly manner.
This tool facilitates sensitivity analysis related to the choice of normalization and aggregation
methods and accounts for uncertainty in criteria and weights, providing a systematic approach
to understanding the impact of these factors on decision outcomes.
Statement of need
Several MCDA tools are available in the literature. For example, the Python library
pymcdm
(Kizielewicz et al., 2023) provides a broad collection of dierent MCDA methods, including
those commonly used to construct CIs. The
pyDecision
library (Pereira et al., 2024) oers
a large collection of MCDA methods and allows users to compare outcomes of dierent
methods interactively, thanks to integration with ChatGPT. In R, the package
COINr
enables
users to develop CIs with all standard operations, including criteria selection, data treatment,
normalization, aggregation, and sensitivity analysis (Becker et al., 2022). Other packages,
such as
compind
, focus specically on weighting and aggregation (Fusco et al., 2018), while
MATLAB tools like CIAO (Lindén et al., 2021) oer specialized capabilities for parts of CI
development.
The Python module
Decisi-o-Rama
(Chacon-Hurtado & Scholten, 2021) focuses on imple-
menting Multi-Attribute Utility Theory (MAUT) to normalize criteria, considering a hierarchical
criteria structure and uncertain criteria, and aggregate the results using dierent aggregation
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.1
methods. Additionally, the web-based MCDA Index Tool supports sensitivity analysis based on
various combinations of normalization functions and aggregation methods.
While these tools provide valuable functionalities,
ProMCDA
dierentiates itself by adopting a
fully probabilistic approach to perform MCDA for CIs, providing sensitivity and robustness
analysis of the ranking results. The sensitivity of the MCDA scores arises from the use of
various combinations of normalization/aggregation functions (Cinelli et al., 2020) that can be
used in the evaluation process. Meanwhile, uncertainty stems from the variability associated
with the criteria values (Stewart & Durbach, 2016) or the randomness that may be associated
with their weights (Lahdelma et al., 1998).
ProMCDA
is unique in combining all these dierent
sources of variability and providing a systematic analysis.
The tool is designed for use by both researchers and practitioners in operations research. Its
approach oers a broad range of potential applications, including sustainability, healthcare, and
risk assessment, among others.
ProMCDA
has been developed as a core methodology for the
development of a decision support system for forest management (FutureForest). However, the
tool is versatile and can be used in any other domain involving multi-criteria decision-making.
Overview
ProMCDA
is a Python module that allows users to construct CIs while considering uncertainties
associated with criteria, weights, and the choice of normalization and aggregation methods.
The module’s evaluation process is divided into two main steps:
•Data Normalization: Ensuring all data values are on the same scale.
•Data Aggregation: Estimating a single composite indicator from all criteria.
ProMCDA
receives all necessary input information via a conguration le in JSON format (for
more details, see the README). The alternatives are represented as rows in an input matrix
(CSV le format), with criteria values in columns. The tool oers the exibility to conduct
sensitivity analysis by comparing the dierent scores associated with alternatives using various
combinations of normalization and aggregation functions.
ProMCDA
currently implements four
normalization and four aggregation functions, as described in Table 1 and Table 2, respectively.
However, the user can run
ProMCDA
with a specic pair of normalization and aggregation
functions, thus switching o the sensitivity analysis.
The user can bypass both the sensitivity and robustness analysis when running ProMCDA.
Sensitivity analysis:
ProMCDA
provides a default sensitivity analysis based on the predened
normalization and aggregation pairs. However, users can specify the pair of functions they
want to use and switch this analysis o.
Robustness analysis:
ProMCDA
also allows for robustness analysis by introducing randomness to
either the weights or the criteria in order to make the results as transparent as possible and
avoid a lack of distinction between the eect of one or the other. Randomly sampling the
weights or the criteria values is done using a Monte Carlo method.
The randomness in the weights can be applied to one weight at a time or to all weights
simultaneously. In both cases, by default, the weights are sampled from a uniform distribution
[0-1]. If the user decides to analyse the robustness of the criteria, they have to provide the
parameters dening the marginal distribution (i.e., a probability density function, pdf) that
best describes the criteria rather than the criteria values. This means that if a pdf described
by 2 parameters characterizes a criterion, two columns should be allocated in the input CSV
le for it. In ProMCDA 4 dierent pdfs describing the criteria uncertainty are considered:
•uniform, which is described by 2 parameters, i.e., minimum and maximum
•normal, which is described by 2 parameters, i.e., mean and standard deviation
•
lognormal, which is described by 2 parameters, i.e., log(mean) and log(standard deviation)
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.2
Table 1: Normalization functions used in ProMCDA.
Tables
Table 1: Normalizaon funcons.
Normalizaon methods
Formula
Descripon
Comments
Linear
scale
Min-max = −min()
max()−min()
It applies a linear
transformaon to
rescale the data in a
specified range
(typically 0-1).
Most common normalizaon method used.
The order and proximity of the data points
are maintained. Outliers can have a
significant impact on the transformaon.
Loss of informaon: it compresses the range
of the original data.
Standardizaon
(z-score) = −=
�
=
�
It applies a linear
transformaon with
mean of 0 and
standard deviaon
of 1.
The order and proximity of the data points
are maintained. The standardized data is not
bounded. High values have a great impact on
the result, which is desirable if the wish is to
reward exceponal behaviour. It preserves
the shape and distribuon of the original
data. Loss of informaon: none.
Rao
scale Tar ge t =
max ()
It normalizes the
upper limit to 1.
The order and proximity of the data points
are maintained. No fixed range. Sensive to
outliers. It can be useful when the maximum
value is of parcular interest or importance
in the analysis. Loss of informaon: it can
reduce the relave differences between
values, potenally compressing the data.
Ordinal Rank =()
The data points are
ranked based on
their relave values.
The order and proximity of the data points
are maintained. It does not impose a fixed
range on the transformed data. It eliminates
magnitude differences. It can be useful when
the exact values are not important, but
rather the relave posions or comparisons
between values. Robust to outliers.
Legend
: the normalized value of indicator i for alternave a.
: the value of indicator i for alternave a.
=
�the average value of indicator i across all alternaves.
=
�: the standard deviaon of indicator i across all alternaves.
(): the minimum value of indicator i across all alternaves.
(): the maximum value of indicator i across all alternaves.
•Poisson, which is described by 1 parameter, i.e., the rate.
Once the pdf for each criterion is selected and the input parameters are in place in the input
CSV le,
ProMCDA
randomly samples n-values of each criterion per alternative from the given
pdf and assesses the score and ranking of the alternatives by considering robustness at the
criteria level. The number of samples is dened in the conguration le by the user.
Once the pdfs for each criterion are selected and the input parameters are in the input CSV
le,
ProMCDA
randomly samples n-values of each criterion per alternative from the given pdf to
evaluate the alternatives’ scores and rankings, taking into account robustness at the criteria
level.
Finally, in all possible cases (i.e., a simple MCDA, MCDA with sensitivity analysis for the
dierent normalization/aggregation functions used, MCDA with robustness investigation related
either to randomness on the weights or on the indicators),
ProMCDA
will output a CSV le with
the scores/average scores and their plots. For a quick overview of the functionality of
ProMCDA
,
refer to Table 3. For more details, refer to the README.
Acknowledgements
Flaminia Catalli was supported by the Future Forest II project funded by the Bundesministerium
für Umwelt, Naturschutz, nukleare Sicherheit und Verbraucherschutz (Germany) grant Nr.
67KI21002A. The authors would like to thank Kapil Agnihotri for thorough code revisions,
Thorsten Reitz, and the whole Future Forest II team for productive discussions on a problem
for which we have found a robust and transparent solution over time.
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.3
Table 2: Aggregation functions used in ProMCDA. The sum of the weights is normalized to 1.
Table 2: Aggregaon funcons. As reference see Langhans et al. [2014]. The sum of the weights is considered normalized to
1.
Aggregaon methods
Formula
Level of compensaon
Comments
Addive
(weighted arithmec
mean) =
Full
Most common aggregaon method
used. It is a linear combinaon. It
amplifies the effect of the higher
values. Commonly used in
situaons where variables are
considered equally important.
Geometric
(weighted geometric
mean) =
Paral
The indicators values should be
larger than 0. It is a non-linear
combinaon.
The impact of each
variable's value is not proporonal
to its magnitude, and the relave
contribuon of each variable
depends on the other variables
involved. It amplifies t he impact of
variables with small values. The
method is commonly used in
situaons where the interacon or
joint effect of variables is of interest.
Harmonic =
Paral
(less than Geometric)
The indicators values should strictly
be larger than 0. It is a non-linear
combinaon.
The impact of each
value is not proporonal to its
magnitude, and the relave
contribuon of each variable
depends on the other variables
involved. Insensivity to extreme
values. It is primarily used in
situaons where smaller values are
considered more important or
when dealing with raos or rates.
Minimum =(,,...,) None
The worst performing indicator
equals the final score. Suitable if the
DM is interested in an assessment
driven by the worst performing
indicator.
Legend
: the composite score for alternave a.
: the number of indicators.
: the weight of indicator i.
: the normalized value of indicator i for alternave a.
Table 3: Overview on the functionalities of ProMCDA.
Table 3: ProMCDA usages.
Possible usages of ProMCDA
Specificaons
Notes
Simple MCDA
No sensivity nor robustness
analysis is performed.
The specific pair normalizaon /
aggregaon to be used for the evaluaon
of the alternaves.
For a fully controlled MCDA.
Sensivity analysis
Focus is on the role of the
normalizaon and aggregaon
funcons.
All normalizaon and aggregaon pairs
are u sed for the evaluaon of the
alternaves.
Each pair normalizaon/aggregaon will produce
different scores for every alternave.
The sensivity analysis can be associated with the
robustness analysis due to the weights or the indicators.
Robustness analysis of one
weight at me
Focus is on the role of one indicator
and its relave weight at me.
One single weight at me is sampled
from the uniform distribuon [0,1].
This run can help invesgate the importance of each
indicator for the final scores. Average results are reported
a number-of-indicator mes.
This ro bustness analysis cannot be used together with
the robustness analysis associated with the indicators.
Robustness analysis of all
weights
Focus is on the role of the weights.
All weights are sampled from the uniform
distribuon [0,1].
This run can help understanding the overall impact of the
uncertainty due to the weights.
This ro bustness analysis cannot be used together with
the robustness analysis associated with the indicators.
Robustness analysis of the
indicators
Focus is on the role of the
uncertainty of the indicators.
All indicators, whose values are
distributed as a non-exact pdf, are
randomly sampled. ProMCDA needs N-
values for each indicator per alternave
to build N random input-matrices.
This run let the user analyse the impact of the uncertainty
on the indicators for the final scores.
This ro bustness analysis cannot be used together with
the robustness analysis associated to the weights.
References
Becker, W., Caperna, G., Sorbo, M. D., Norlén, H., Papadimitriou, E., & Saisana, M. (2022).
COINr: An R package for developing composite indicators. Journal of Open Source
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.4
Software,7(78), 4567. https://doi.org/10.21105/joss.04567
Bouyssou, D., Marchant, T., Pirlot, M., Tsoukiàs, A., & Vincke, P. (Eds.). (2006). Problem
formulation and structuring: The decision aiding process. In Evaluation and Decision
Models with Multiple Criteria: Stepping Stones for the Analyst (pp. 19–65). Springer US.
https://doi.org/10.1007/0-387-31099-1_2
Chacon-Hurtado, J. C., & Scholten, L. (2021). Decisi-o-rama: An open-source Python library
for multi-attribute value/utility decision analysis. Environmental Modelling & Software,
135, 104890. https://doi.org/10.1016/j.envsoft.2020.104890
Cinelli, M., Burgherr, P., Kadziński, M., & Słowiński, R. (2022). Proper and improper uses
of MCDA methods in energy systems analysis. Decision Support Systems,163, 113848.
https://doi.org/10.1016/j.dss.2022.113848
Cinelli, M., Spada, M., Kim, W., Zhang, Y., & Burgherr, P. (2020). MCDA Index Tool: An
interactive software to develop indices and rankings. Environment Systems and Decisions.
https://doi.org/10.1007/s10669-020-09784-x
Fusco, E., Vidoli, F., & Sahoo, B. K. (2018). Spatial heterogeneity in composite indicator: A
methodological proposal. Omega,77, 1–14. https://doi.org/10.1016/j.omega.2017.04.007
Gasser, P., Suter, J., Cinelli, M., Spada, M., Burgherr, P., Hirschberg, S., Kadziński, M., &
Stojadinovic, B. (2020). Comprehensive resilience assessment of electricity supply security
for 140 countries. Ecological Indicators,110.https://doi.org/10.1016/j.ecolind.2019.
105731
Greco, S., Ishizaka, A., Tasiou, M., & Torrisi, G. (2019). On the methodological framework of
composite indices: A review of the issues of weighting, aggregation, and robustness. Social
Indicators Research,141(1), 61–94. https://doi.org/10.1007/s11205-017-1832-9
Kizielewicz, B., Shekhovtsov, A., & Sałabun, W. (2023). Pymcdm—the universal library for
solving multi-criteria decision-making problems. SoftwareX,22, 101368. https://doi.org/
10.1016/j.softx.2023.101368
Klaus Schwab. (2018). The global competitiveness report 2018. ISBN: 978-92-95044-76-0
Lahdelma, R., Hokkanen, J., & Salminen, P. (1998). SMAA - Stochastic multiobjective
acceptability analysis. European Journal of Operational Research,106(1), 137–143. https:
//doi.org/10.1016/S0377-2217(97)00163-X
Langhans, S. D., Reichert, P., & Schuwirth, N. (2014). The method matters: A guide
for indicator aggregation in ecological assessments. Ecological Indicators,45, 494–507.
https://doi.org/10.1016/j.ecolind.2014.05.014
Lindén, D., Cinelli, M., Spada, M., Becker, W., Gasser, P., & Burgherr, P. (2021). A framework
based on statistical analysis and stakeholders’ preferences to inform weighting in composite
indicators. Environmental Modelling & Software.https://doi.org/10.1016/j.envsoft.2021.
105208
Oţoiu, A., & Grădinaru, G. (2018). Proposing a composite environmental index to account for
the actual state and changes in environmental dimensions, as a critique to EPI. Ecological
Indicators,93, 1209–1221. https://doi.org/10.1016/j.ecolind.2018.06.009
Pereira, V., Basilio, M. P., & Santos, C. H. T. (2024). Enhancing decision analysis with a
large language model: pyDecision a comprehensive library of MCDA methods in python.
ArXiv.https://doi.org/10.48550/arXiv.2404.06370
Roy, B. (1996). Decision aiding: Major actors and the role of models. In B. Roy (Ed.),
Multicriteria Methodology for Decision Aiding (pp. 7–17). Springer US. https://doi.org/
10.1007/978-1-4757-2500-1_2
Stewart, T. J., & Durbach, I. (2016). Dealing with uncertainties in MCDA. In S. Greco, M.
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.5
Ehrgott, & J. R. Figueira (Eds.), Multiple Criteria Decision Analysis: State of the Art Surveys
(pp. 467–496). Springer New York. https://doi.org/10.1007/978-1-4939-3094-4_12
Volkart, K., Bauer, C., Burgherr, P., Hirschberg, S., Schenler, W., & Spada, M. (2016).
Interdisciplinary assessment of renewable, nuclear and fossil power generation with and
without carbon capture and storage in view of the new Swiss energy policy. International
Journal of Greenhouse Gas Control,54, 1–14. https://doi.org/10.1016/j.ijggc.2016.08.023
Catalli, & Spada. (2025). ProMCDA: A Python package for Probabilistic Multi-Criteria Decision Analysis. Journal of Open Source Software,
10(105), 6190. https://doi.org/10.21105/joss.06190.6