Skip to main content

Multi-Criteria Decision Making using Pythagorean Fuzzy Sets

Project description

pfs-mcdm

Python License: MIT

ORCID

Python implementation of multi-criteria decision-making (MCDM) algorithms using pythagorean fuzzy sets (PFSs).

Implemented Algorithms:

  • Simple Aggregation
  • TOPSIS
  • PROMETHEE

Future Work:

  • Electre
  • COPRAS

For more information about PFSs and the implemented algorithms see:

  • Yager, R.R., & Abbasov, A.M. (2013). Pythagorean Membership Grades, Complex Numbers, and Decision Making. International Journal of Intelligent
    Systems, 28, doi:10.1002/int.21584.
  • Yager, R.R. (2014). Pythagorean Membership Grades in Multicriteria Decision Making. IEEE Transactions on Fuzzy Systems, 22, 958-965,
    doi:10.1109/TFUZZ.2013.2278989.
  • Zhang, X., & Xu, Z. (2014). Extension of TOPSIS to Multiple Criteria Decision Making with Pythagorean Fuzzy Sets. International Journal of
    Intelligent Systems, 29, doi:10.1002/int.21676.
  • Molla, M.U., Giri, B.C., & Biswas, P. (2021). Extended PROMETHEE method with Pythagorean fuzzy sets for medical diagnosis problems. Soft Comput.,
    25, 4503-4512, doi:10.1007/s00500-020-05458-7.
  • Ye, J., & Chen, T. (2022). Pythagorean Fuzzy Sets Combined with the PROMETHEE Method for the Selection of Cotton Woven Fabric. Journal of Natural
    Fibers, doi:10.1080/15440478.2022.2072993.

Installation

The pfs-mcdm package can be installed from PyPI using pip for Python 3.

$ pip install pfs-mcdm

How to use?

The decision matrix can be provided as a 2D array-like of tuples. Each tuple represents a pythagorean fuzzy number $(\mu, \nu)$. The weights of the criteria are provided as an 1D array-like of floats. Weights are normalized to sum to 1. Optionally, the aternatives argument can be used to provide alternatives' names.

The output solution is a pandas DataFrame

from pfs_mcdm import simple_aggregation, topsis, promethee

matrix = [ 
[(0.9, 0.3), (0.7, 0.6), (0.5, 0.8), (0.6, 0.3)],
[(0.4, 0.7), (0.9, 0.2), (0.8, 0.1), (0.5, 0.3)],  
[(0.8, 0.4), (0.7, 0.5), (0.6, 0.2), (0.7, 0.4)], 
[(0.7, 0.2), (0.8, 0.2), (0.8, 0.4), (0.6, 0.6)]] 
  
weights = [0.15, 0.25, 0.35, 0.25]  
  
alternatives = ['UNI AIR', 'Transasia', 'Mandarin', 'Daily Air']

Simple Aggregation:

simple_aggregation_sol = simple_aggregation(matrix, weights, alternatives=alternatives)  

print("MCDM solution using simple aggregation:")  
print(simple_aggregation_sol)
MCDM solution using simple aggregation:
Aggregated Score Rank
UNI AIR (0.635, 0.55) 0.101 4
Transasia (0.69, 0.265) 0.406 1
Mandarin (0.68, 0.355) 0.336 3
Daily Air (0.735, 0.37) 0.403 2

TOPSIS:

topsis_sol = topsis(matrix, weights, alternatives=alternatives)

print("MCDM solution using TOPSIS:")
print(topsis_sol)
MCDM solution using TOPSIS:
D+ D- Revised Closeness Rank
UNI AIR 0.351 0.165 -1.586 4
Transasia 0.175 0.396 0.000 1
Mandarin 0.204 0.359 -0.254 3
Daily Air 0.201 0.316 -0.348 2

PROMETHEE:

The promethee function takes an optional argument preference_func to determine the preference function to be used. Available functions are usual, ushape, vshape, level, and gaussian; default is usual.
  For ushape preference function, an additional argument q can be passed to determine the indifference threshold; default is zero. For vshape and level preference function, additional arguments q and p can be passed to determine the indifference and preference thresholds, respectively; default is zero. For the gaussian preference function, an additional argument s can be passed to determine the Gaussian threshold; default is 0.5.

promethee_sol = promethee(matrix, weights, alternatives=alternatives, preference_func='vshape', q=0.1, p=0.8)  

MCDM solution using PROMETHEE:  
print(promethee_sol)
MCDM solution using PROMETHEE:
Positive Outranking Negative Outranking Net Outranking Rank
UNI AIR 0.094 0.445 -0.351 4
Transasia 0.291 0.158 0.133 1
Mandarin 0.189 0.137 0.051 3
Daily Air 0.250 0.084 0.167 2

License

MIT

Project details


Release history Release notifications | RSS feed

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pfs-mcdm-0.2.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pfs_mcdm-0.2-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file pfs-mcdm-0.2.tar.gz.

File metadata

  • Download URL: pfs-mcdm-0.2.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for pfs-mcdm-0.2.tar.gz
Algorithm Hash digest
SHA256 72b2f6e8488df77228c4661460f68d38a1a838650f804c3a8ec4e9c060692f17
MD5 9603be0639e7b8d1eaade2d0405186e0
BLAKE2b-256 bc80cbce2d1e1facc4aa0649e37dd1f88404350f842a6644c1fff61da4133a7e

See more details on using hashes here.

File details

Details for the file pfs_mcdm-0.2-py3-none-any.whl.

File metadata

  • Download URL: pfs_mcdm-0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for pfs_mcdm-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 296d8d10955ab7d9f0c7e83787cdad95462280694edfa7aa30e95f38b7ac8962
MD5 523078b6f48f22f21164b81ad3152042
BLAKE2b-256 7caa3a5a997826c8522ae12acbcff36004c8fa7b815c38fc68c0b91e4e323866

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page