[![github](https://img.shields.io/badge/github-repo-000.svg?logo=github&labelColor=gray&color=blue)](https://github.com/jwieckowski/pysensmcda)
[![Version](https://img.shields.io/pypi/v/pysensmcda)](https://pypi.org/project/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
<!-- [![DOI:10.1016/j.softx.2022.101271](http://img.shields.io/badge/DOI-10.1016/j.softx.2022.101271-0f81c2.svg)](https://doi.org/10.1016/j.softx.2022.101271) -->
<!-- [![License](https://img.shields.io/github/license/nlesc/pyfdm)]() -->
## PySensMCDA
`PySensMCDA` is a comprehensive Python package tailored specifically for Multi-Criteria Decision Analysis (MCDA) sensitivity analysis. MCDA is a powerful tool used in decision-making processes to evaluate alternatives based on multiple conflicting criteria. `PySensMCDA` empowers users to delve deeper into the robustness and reliability of their decision models by exploring the sensitivity of results to variations in input parameters.
In essence, this package offers tools for:
- Decision matrix sensitivity analysis
- Weights sensitivity analysis
- Ranking sensitivity analysis
- Perturbation generation
- Weights generation
- Visualizations of sensitivity analysis
## Installation
The package can be download using pip:
```Bash
pip install pysensmcda
```
## Testing
The modules performance can be verified with `pytest` library
```Bash
pip install pytest
pytest tests
```
<!--
## Citation
If you use `PySensMCDA` in you work, please cite the following [publication](https://scholar.google.pl/):
> Citation
As BibTeX:
```
citation
```
-->
## Modules and functionalities
<br/>
- ### Alternative:
| Name | Reference |
| ----------------------- | :------------: |
| Discrete modification | - |
| Percentage modification | [[14]](#ref14) |
| Range modification | - |
| Alternative removal | [[8]](#ref8) |
<br/>
- ### Criteria:
| Name | Reference |
| ------------------------------------------------ | :------------: |
| Random distribution - weights generation | - |
| Chisquare distribution | - |
| Laplace distribution | - |
| Normal distribution | - |
| Random distribution | - |
| Triangular distribution | - |
| Uniform distribution | - |
| Percentage modification | [[15]](#ref15) |
| Range modification | - |
| Weights scenarios | - |
| Criteria identification | [[6]](#ref6) |
| Criteria removal | [[13]](#ref13) |
<br/>
- ### Probabilistic:
| Name | Reference |
| ------------------------------ | :------------: |
| Monte carlo weights generation | [[10]](#ref10) |
| Perturbed matrix | [[12]](#ref12) |
| Perturbed weights | [[11]](#ref11) |
<br/>
- ### Ranking:
| Name | Reference |
| ------------------ | :----------: |
| Ranking alteration | [[7]](#ref7) |
| Demotion | - |
| Promotion | [[9]](#ref9) |
| Fuzzy ranking | - |
<br/>
- ### Compromise:
| Name | Reference |
| -------------------------------------------- | :----------: |
| Borda | [[3]](#ref3) |
| Improved Borda | [[4]](#ref4) |
| Dominance directed graph | [[2]](#ref2) |
| Half-quadratic compromise | [[5]](#ref5) |
| ICRA - Iterative Compromise Ranking Analysis | [[1]](#ref1) |
| Rank position method | [[3]](#ref3) |
<br/>
- ### Graphs:
| Name |
| -------------------------------- |
| Heatmap |
| Promotion-demotion ranking graph |
| Preference distribution |
| Rankings distribution |
| Values distribution |
| Weights barplot |
## Usage example
- General usage examples see [`examples.ipynb`](./examples/examples.ipynb)
- Graphs submodule usage examples see [`graphs_examples.ipynb`](./examples/graphs_examples.ipynb)
- Literature example analysis see [`literature_example.ipynb`](./examples/literature_example.ipynb)
## Related work
Don't forget to check out these other amazing software packages!
- [Make-Decision.it](http://make-decision.it/): Web application offering users a graphical interface for prototyping structural decision models
- [PyFDM](https://pypi.org/project/pyfdm/): package with Fuzzy Decision Making (PyFDM) methods based on Triangular Fuzzy Numbers (TFN).
- [PyIFDM](https://pypi.org/project/pyifdm/): package to perform Multi-Criteria Decision Analysis in the Intuitionistic Fuzzy environment.
- [PyMCDM](https://pypi.org/project/pymcdm/): Python 3 library for solving multi-criteria decision-making (MCDM) problems.
### References
<a name="ref1">**[1]**</a> Paradowski, B., Kizielewicz, B., Shekhovtsov, A., & Sałabun, W. (2022, September). The Iterative Compromise Ranking Analysis (ICRA)-The New Approach to Make Reliable Decisions. In Special Sessions in the Advances in Information Systems and Technologies Track of the Conference on Computer Science and Intelligence Systems (pp. 151-170). Cham: Springer Nature Switzerland.
<a name="ref2">**[2]**</a> Xiao, J., Xu, Z., & Wang, X. (2023). An improved MULTIMOORA with CRITIC weights based on new equivalent transformation functions of nested probabilistic linguistic term sets. Soft Computing, 1-18.
<a name="ref3">**[3]**</a> Altuntas, S., Dereli, T., & Yilmaz, M. K. (2015). Evaluation of excavator technologies: application of data fusion based MULTIMOORA methods. Journal of Civil Engineering and Management, 21(8), 977-997.
<a name="ref4">**[4]**</a> Wu, X., Liao, H., Xu, Z., Hafezalkotob, A., & Herrera, F. (2018). Probabilistic linguistic MULTIMOORA: A multicriteria decision making method based on the probabilistic linguistic expectation function and the improved Borda rule. IEEE transactions on Fuzzy Systems, 26(6), 3688-3702.
<a name="ref5">**[5]**</a> Mohammadi, M., & Rezaei, J. (2020). Ensemble ranking: Aggregation of rankings produced by different multi-criteria decision-making methods. Omega, 96, 102254.
<a name="ref6">**[6]**</a> Kizielewicz, B., Wątróbski, J., & Sałabun, W. (2020). Identification of relevant criteria set in the MCDA process—Wind farm location case study. Energies, 13(24), 6548.
<a name="ref7">**[7]**</a> Maliene, V., Dixon-Gough, R., & Malys, N. (2018). Dispersion of relative importance values contributes to the ranking uncertainty: Sensitivity analysis of Multiple Criteria Decision-Making methods. Applied Soft Computing, 67, 286-298.
<a name="ref8">**[8]**</a> Nabavi, S. R., Wang, Z., & Rangaiah, G. P. (2023). Sensitivity Analysis of Multi-Criteria Decision-Making Methods for Engineering Applications. Industrial & Engineering Chemistry Research, 62(17), 6707-6722.
<a name="ref9">**[9]**</a> Wolters, W. T. M., & Mareschal, B. (1995). Novel types of sensitivity analysis for additive MCDM methods. European Journal of Operational Research, 81(2), 281-290.
<a name="ref10">**[10]**</a> Baležentis, T., & Streimikiene, D. (2017). Multi-criteria ranking of energy generation scenarios with Monte Carlo simulation. Applied energy, 185, 862-871.
<a name="ref11">**[11]**</a> Zhang, C., Wang, Q., Zeng, S., Baležentis, T., Štreimikienė, D., Ališauskaitė-Šeškienė, I., & Chen, X. (2019). Probabilistic multi-criteria assessment of renewable micro-generation technologies in households. Journal of Cleaner Production, 212, 582-592.
<a name="ref12">**[12]**</a> Barker, K., & Haimes, Y. Y. (2009). Assessing uncertainty in extreme events: Applications to risk-based decision making in interdependent infrastructure sectors. Reliability Engineering & System Safety, 94(4), 819-829.
<a name="ref13">**[13]**</a> Więckowski, J., Kizielewicz, B., Shekhovtsov, A., & Sałabun, W. (2023). How do the criteria affect sustainable supplier evaluation?-A case study using multi-criteria decision analysis methods in a fuzzy environment. Journal of Engineering Management and Systems Engineering, 2(1), 37-52.
<a name="ref14">**[14]**</a> Kolbowicz, M., Nowak, M., & Więckowski, J. (2024). A multi-criteria system for performance assessment and support decision-making based on the example of Premier League top football strikers.
<a name="ref15">**[15]**</a> Triantaphyllou, E., & Sánchez, A. (1997). A sensitivity analysis approach for some deterministic multi‐criteria decision‐making methods. Decision sciences, 28(1), 151-194.
Raw data
{
"_id": null,
"home_page": "https://github.com/jwieckowski/pysensmcda",
"name": "pysensmcda",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Jakub Wi\u0119ckowski <j.wieckowski@il-pib.pl>, Bartosz Paradowski <b.paradowski@il-pib.pl>",
"keywords": "sensitivity analysis,decision-making,python,mcda,robustness",
"author": "Jakub Wi\u0119ckowski, Bartosz Paradowski",
"author_email": "Jakub Wi\u0119ckowski <j.wieckowski@il-pib.pl>, Bartosz Paradowski <b.paradowski@il-pib.pl>",
"download_url": "https://files.pythonhosted.org/packages/bf/6c/30b247208455340593236f17af024cc2bbde79bdafb7448f2d770a18b695/pysensmcda-1.0.1.tar.gz",
"platform": null,
"description": "[![github](https://img.shields.io/badge/github-repo-000.svg?logo=github&labelColor=gray&color=blue)](https://github.com/jwieckowski/pysensmcda)\r\n[![Version](https://img.shields.io/pypi/v/pysensmcda)](https://pypi.org/project/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n<!-- [![DOI:10.1016/j.softx.2022.101271](http://img.shields.io/badge/DOI-10.1016/j.softx.2022.101271-0f81c2.svg)](https://doi.org/10.1016/j.softx.2022.101271) -->\r\n\r\n<!-- [![License](https://img.shields.io/github/license/nlesc/pyfdm)]() -->\r\n\r\n## PySensMCDA\r\n\r\n`PySensMCDA` is a comprehensive Python package tailored specifically for Multi-Criteria Decision Analysis (MCDA) sensitivity analysis. MCDA is a powerful tool used in decision-making processes to evaluate alternatives based on multiple conflicting criteria. `PySensMCDA` empowers users to delve deeper into the robustness and reliability of their decision models by exploring the sensitivity of results to variations in input parameters.\r\n\r\nIn essence, this package offers tools for:\r\n\r\n- Decision matrix sensitivity analysis\r\n- Weights sensitivity analysis\r\n- Ranking sensitivity analysis\r\n- Perturbation generation\r\n- Weights generation\r\n- Visualizations of sensitivity analysis\r\n\r\n## Installation\r\n\r\nThe package can be download using pip:\r\n\r\n```Bash\r\npip install pysensmcda\r\n```\r\n\r\n## Testing\r\n\r\nThe modules performance can be verified with `pytest` library\r\n\r\n```Bash\r\npip install pytest\r\npytest tests\r\n```\r\n\r\n<!--\r\n## Citation\r\n\r\nIf you use `PySensMCDA` in you work, please cite the following [publication](https://scholar.google.pl/):\r\n\r\n> Citation\r\n\r\nAs BibTeX:\r\n\r\n```\r\ncitation\r\n```\r\n-->\r\n\r\n## Modules and functionalities\r\n\r\n<br/>\r\n\r\n- ### Alternative:\r\n\r\n| Name | Reference |\r\n| ----------------------- | :------------: |\r\n| Discrete modification | - |\r\n| Percentage modification | [[14]](#ref14) |\r\n| Range modification | - |\r\n| Alternative removal | [[8]](#ref8) |\r\n\r\n<br/>\r\n\r\n- ### Criteria:\r\n\r\n| Name | Reference |\r\n| ------------------------------------------------ | :------------: |\r\n| Random distribution - weights generation | - |\r\n| Chisquare distribution | - |\r\n| Laplace distribution | - |\r\n| Normal distribution | - |\r\n| Random distribution | - |\r\n| Triangular distribution | - |\r\n| Uniform distribution | - |\r\n| Percentage modification | [[15]](#ref15) |\r\n| Range modification | - |\r\n| Weights scenarios | - |\r\n| Criteria identification | [[6]](#ref6) |\r\n| Criteria removal | [[13]](#ref13) |\r\n\r\n<br/>\r\n\r\n- ### Probabilistic:\r\n\r\n| Name | Reference |\r\n| ------------------------------ | :------------: |\r\n| Monte carlo weights generation | [[10]](#ref10) |\r\n| Perturbed matrix | [[12]](#ref12) |\r\n| Perturbed weights | [[11]](#ref11) |\r\n\r\n<br/>\r\n\r\n- ### Ranking:\r\n\r\n| Name | Reference |\r\n| ------------------ | :----------: |\r\n| Ranking alteration | [[7]](#ref7) |\r\n| Demotion | - |\r\n| Promotion | [[9]](#ref9) |\r\n| Fuzzy ranking | - |\r\n\r\n<br/>\r\n\r\n- ### Compromise:\r\n\r\n| Name | Reference |\r\n| -------------------------------------------- | :----------: |\r\n| Borda | [[3]](#ref3) |\r\n| Improved Borda | [[4]](#ref4) |\r\n| Dominance directed graph | [[2]](#ref2) |\r\n| Half-quadratic compromise | [[5]](#ref5) |\r\n| ICRA - Iterative Compromise Ranking Analysis | [[1]](#ref1) |\r\n| Rank position method | [[3]](#ref3) |\r\n\r\n<br/>\r\n\r\n- ### Graphs:\r\n\r\n| Name |\r\n| -------------------------------- |\r\n| Heatmap |\r\n| Promotion-demotion ranking graph |\r\n| Preference distribution |\r\n| Rankings distribution |\r\n| Values distribution |\r\n| Weights barplot |\r\n\r\n## Usage example\r\n\r\n- General usage examples see [`examples.ipynb`](./examples/examples.ipynb)\r\n- Graphs submodule usage examples see [`graphs_examples.ipynb`](./examples/graphs_examples.ipynb)\r\n- Literature example analysis see [`literature_example.ipynb`](./examples/literature_example.ipynb)\r\n\r\n## Related work\r\n\r\nDon't forget to check out these other amazing software packages!\r\n\r\n- [Make-Decision.it](http://make-decision.it/): Web application offering users a graphical interface for prototyping structural decision models\r\n- [PyFDM](https://pypi.org/project/pyfdm/): package with Fuzzy Decision Making (PyFDM) methods based on Triangular Fuzzy Numbers (TFN).\r\n- [PyIFDM](https://pypi.org/project/pyifdm/): package to perform Multi-Criteria Decision Analysis in the Intuitionistic Fuzzy environment.\r\n- [PyMCDM](https://pypi.org/project/pymcdm/): Python 3 library for solving multi-criteria decision-making (MCDM) problems.\r\n\r\n### References\r\n\r\n<a name=\"ref1\">**[1]**</a> Paradowski, B., Kizielewicz, B., Shekhovtsov, A., & Sa\u0142abun, W. (2022, September). The Iterative Compromise Ranking Analysis (ICRA)-The New Approach to Make Reliable Decisions. In Special Sessions in the Advances in Information Systems and Technologies Track of the Conference on Computer Science and Intelligence Systems (pp. 151-170). Cham: Springer Nature Switzerland.\r\n\r\n<a name=\"ref2\">**[2]**</a> Xiao, J., Xu, Z., & Wang, X. (2023). An improved MULTIMOORA with CRITIC weights based on new equivalent transformation functions of nested probabilistic linguistic term sets. Soft Computing, 1-18.\r\n\r\n<a name=\"ref3\">**[3]**</a> Altuntas, S., Dereli, T., & Yilmaz, M. K. (2015). Evaluation of excavator technologies: application of data fusion based MULTIMOORA methods. Journal of Civil Engineering and Management, 21(8), 977-997.\r\n\r\n<a name=\"ref4\">**[4]**</a> Wu, X., Liao, H., Xu, Z., Hafezalkotob, A., & Herrera, F. (2018). Probabilistic linguistic MULTIMOORA: A multicriteria decision making method based on the probabilistic linguistic expectation function and the improved Borda rule. IEEE transactions on Fuzzy Systems, 26(6), 3688-3702.\r\n\r\n<a name=\"ref5\">**[5]**</a> Mohammadi, M., & Rezaei, J. (2020). Ensemble ranking: Aggregation of rankings produced by different multi-criteria decision-making methods. Omega, 96, 102254.\r\n\r\n<a name=\"ref6\">**[6]**</a> Kizielewicz, B., W\u0105tr\u00f3bski, J., & Sa\u0142abun, W. (2020). Identification of relevant criteria set in the MCDA process\u2014Wind farm location case study. Energies, 13(24), 6548.\r\n\r\n<a name=\"ref7\">**[7]**</a> Maliene, V., Dixon-Gough, R., & Malys, N. (2018). Dispersion of relative importance values contributes to the ranking uncertainty: Sensitivity analysis of Multiple Criteria Decision-Making methods. Applied Soft Computing, 67, 286-298.\r\n\r\n<a name=\"ref8\">**[8]**</a> Nabavi, S. R., Wang, Z., & Rangaiah, G. P. (2023). Sensitivity Analysis of Multi-Criteria Decision-Making Methods for Engineering Applications. Industrial & Engineering Chemistry Research, 62(17), 6707-6722.\r\n\r\n<a name=\"ref9\">**[9]**</a> Wolters, W. T. M., & Mareschal, B. (1995). Novel types of sensitivity analysis for additive MCDM methods. European Journal of Operational Research, 81(2), 281-290.\r\n\r\n<a name=\"ref10\">**[10]**</a> Bale\u017eentis, T., & Streimikiene, D. (2017). Multi-criteria ranking of energy generation scenarios with Monte Carlo simulation. Applied energy, 185, 862-871.\r\n\r\n<a name=\"ref11\">**[11]**</a> Zhang, C., Wang, Q., Zeng, S., Bale\u017eentis, T., \u0160treimikien\u0117, D., Ali\u0161auskait\u0117-\u0160e\u0161kien\u0117, I., & Chen, X. (2019). Probabilistic multi-criteria assessment of renewable micro-generation technologies in households. Journal of Cleaner Production, 212, 582-592.\r\n\r\n<a name=\"ref12\">**[12]**</a> Barker, K., & Haimes, Y. Y. (2009). Assessing uncertainty in extreme events: Applications to risk-based decision making in interdependent infrastructure sectors. Reliability Engineering & System Safety, 94(4), 819-829.\r\n\r\n<a name=\"ref13\">**[13]**</a> Wi\u0119ckowski, J., Kizielewicz, B., Shekhovtsov, A., & Sa\u0142abun, W. (2023). How do the criteria affect sustainable supplier evaluation?-A case study using multi-criteria decision analysis methods in a fuzzy environment. Journal of Engineering Management and Systems Engineering, 2(1), 37-52.\r\n\r\n<a name=\"ref14\">**[14]**</a> Kolbowicz, M., Nowak, M., & Wi\u0119ckowski, J. (2024). A multi-criteria system for performance assessment and support decision-making based on the example of Premier League top football strikers.\r\n\r\n<a name=\"ref15\">**[15]**</a> Triantaphyllou, E., & S\u00e1nchez, A. (1997). A sensitivity analysis approach for some deterministic multi\u2010criteria decision\u2010making methods. Decision sciences, 28(1), 151-194.\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Python Sensitivity Analysis Multi-Criteria Decision Analysis Package",
"version": "1.0.1",
"project_urls": {
"Bug Reports": "https://github.com/jwieckowski/pysensmcda/issues",
"Homepage": "https://github.com/jwieckowski/pysensmcda",
"Source": "https://github.com/jwieckowski/pysensmcda"
},
"split_keywords": [
"sensitivity analysis",
"decision-making",
"python",
"mcda",
"robustness"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bf6c30b247208455340593236f17af024cc2bbde79bdafb7448f2d770a18b695",
"md5": "631ab7346faeb98db543e8d5ddaa8854",
"sha256": "1ee13d71d203ebfa51428e3fbc4669d486657d027d38f1b525db9e7eea647da3"
},
"downloads": -1,
"filename": "pysensmcda-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "631ab7346faeb98db543e8d5ddaa8854",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 49447,
"upload_time": "2024-03-16T06:43:21",
"upload_time_iso_8601": "2024-03-16T06:43:21.017813Z",
"url": "https://files.pythonhosted.org/packages/bf/6c/30b247208455340593236f17af024cc2bbde79bdafb7448f2d770a18b695/pysensmcda-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-16 06:43:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jwieckowski",
"github_project": "pysensmcda",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "joblib",
"specs": [
[
"==",
"1.3.2"
]
]
},
{
"name": "matplotlib",
"specs": [
[
"==",
"3.8.3"
]
]
},
{
"name": "npy_append_array",
"specs": [
[
"==",
"0.9.16"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"1.26.0"
]
]
},
{
"name": "pandas",
"specs": [
[
"==",
"2.2.0"
]
]
},
{
"name": "pymcdm",
"specs": [
[
"==",
"1.2.0"
]
]
},
{
"name": "scipy",
"specs": [
[
"==",
"1.11.3"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"63.2.0"
]
]
},
{
"name": "thread6",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "seaborn",
"specs": [
[
"==",
"0.13.2"
]
]
},
{
"name": "tqdm",
"specs": [
[
"==",
"4.65.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"63.2.0"
]
]
}
],
"lcname": "pysensmcda"
}