Package: pfs-mcdm
pfs-mcdmPython implementation of multi-criteria decision-making (MCDM) algorithms using pythagorean fuzzy sets (PFSs).Implemented Algorithms:Simple AggregationTOPSISPROMETHEEFuture Work:ElectreCOPRASFor 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 IntelligentSystems, 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 ofIntelligent 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 NaturalFibers, doi:10.1080/15440478.2022.2072993.InstallationThepfs-mcdmpackage can be installed from PyPI using pip for Python 3.$ pip install pfs-mcdmHow 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, theaternativesargument can be used to provide alternatives' names.The output solution is a pandasDataFramefrom 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:AggregatedScoreRankUNI AIR(0.635, 0.55)0.1014Transasia(0.69, 0.265)0.4061Mandarin(0.68, 0.355)0.3363Daily Air(0.735, 0.37)0.4032TOPSIS:topsis_sol = topsis(matrix, weights, alternatives=alternatives)

print("MCDM solution using TOPSIS:")
print(topsis_sol)MCDM solution using TOPSIS:D+D-Revised ClosenessRankUNI AIR0.3510.165-1.5864Transasia0.1750.3960.0001Mandarin0.2040.359-0.2543Daily Air0.2010.316-0.3482PROMETHEE:Theprometheefunction takes an optional argumentpreference_functo determine the preference function to be used. Available functions areusual,ushape,vshape,level, andgaussian; default isusual.Forushapepreference function, an additional argumentqcan be passed to determine the indifference threshold; default is zero. Forvshapeandlevelpreference function, additional argumentsqandpcan be passed to determine the indifference and preference thresholds, respectively; default is zero. For thegaussianpreference function, an additional argumentscan 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 OutrankingNegative OutrankingNet OutrankingRankUNI AIR0.0940.445-0.3514Transasia0.2910.1580.1331Mandarin0.1890.1370.0513Daily Air0.2500.0840.1672LicenseMIT