多优先级决策算法的Python实现
mcdm的Python项目详细描述
麦当劳
多准则决策算法的Python实现
安装
可以使用Python 3的pip从PyPI安装mcdm
包:
$ pip3 install mcdm
或者,您可以从其GitHub存储库安装mcdm
包的最新版本:
您可以使用以下命令执行mcdm
包的所有测试:
$ python3 -m unittest discover mcdm
特点
下表包括mcdm
包支持的评分、权重、相关性和规范化方法。在
评分方法
Short Name | Full Name | References |
---|---|---|
SAW | Simple Additive Weighting | [1], [4] |
MEW | Multiplicative Exponential Weighting | [4] |
TOPSIS | Technique for Order Preference by Similarity to Ideal Solution | [1] |
mTOPSIS | Modified Technique for Order Preference by Similarity to Ideal Solution | [5] |
加权方法
^{tb2}$相关方法
^{3}$归一化方法
Short Name | Full Name | References |
---|---|---|
Linear1 | Linear Normalization (1) | [1], [6] |
Linear2 | Linear Normalization (2) | [1], [6] |
Linear3 | Linear Normalization (3) | [1], [6] |
Vector | Vector Normalization | [1], [6] |
使用
导入mcdm
包后,可以使用内置的help
函数查看其内容:
>>> import mcdm
>>> help(mcdm)
可以类似地查看其子包的内容,例如:
>>> help(mcdm.weighting)
mcdm
包可以通过其rank
函数计算备选方案的排名,这些方案作为array_like
对象提供。
默认情况下,rank
函数使用SAW评分法,即MW加权法,并假设决策矩阵包含具有标准化收益标准的未命名备选方案:
>>> x_matrix = [
... [0.00, 1.00],
... [0.25, 0.75],
... [0.50, 0.50],
... [0.75, 0.25],
... [1.00, 0.00],
... ]
>>> mcdm.rank(x_matrix)
[('a1', 0.5), ('a2', 0.5), ('a3', 0.5), ('a4', 0.5), ('a5', 0.5)]
您可以选择使用新的评分方法,而不更改其余的默认选择,如下所示:
>>> x_matrix = [
... [0.00, 1.00],
... [0.25, 0.75],
... [0.50, 0.50],
... [0.75, 0.25],
... [1.00, 0.00],
... ]
>>> mcdm.rank(x_matrix, s_method="MEW")
[('a3', 0.5000000000000001), ('a2', 0.4330127018922193), ('a4', 0.4330127018922193), ('a1', 0.0), ('a5', 0.0)]
或者,您也可以使用TOPSIS评分方法和预定义的权重,如下所示:
>>> x_matrix = [
... [0.00, 1.00],
... [0.25, 0.75],
... [0.50, 0.50],
... [0.75, 0.25],
... [1.00, 0.00],
... ]
>>> mcdm.rank(x_matrix, w_vector=[0.7, 0.3], s_method="TOPSIS")
[('a5', 0.7), ('a4', 0.6504133360970108), ('a3', 0.5), ('a2', 0.3495866639029891), ('a1', 0.3)]
您也可以使用TOPSIS评分法,并将效益和成本标准结合起来,如下所示:
>>> x_matrix = [
... [0.00, 1.00],
... [0.25, 0.75],
... [0.50, 0.50],
... [0.75, 0.25],
... [1.00, 0.00],
... ]
>>> mcdm.rank(x_matrix, is_benefit_x=[True, False], s_method="TOPSIS")
[('a5', 1.0), ('a4', 0.75), ('a3', 0.5), ('a2', 0.25000000000000006), ('a1', 0.0)]
或者,您也可以使用TOPSIS评分法、SD加权法和向量归一化法,并将其命名为以下备选方案:
>>> x_matrix = [
... [4, 5, 10],
... [3, 10, 6],
... [3, 20, 2],
... [2, 15, 5],
... ]
>>> alt_names = ["A", "B", "C", "D"]
>>> mcdm.rank(x_matrix, alt_names=alt_names, n_method="Vector", w_method="SD", s_method="TOPSIS")
[('A', 0.5623140105790617), ('D', 0.472563994792934), ('C', 0.4474283120076966), ('B', 0.43874437587505694)]
类似地,您可以使用SAW评分法、临界加权法和Linear2规范化方法,并将其命名为以下选项:
>>> x_matrix = [
... [4, 5, 10],
... [3, 10, 6],
... [3, 20, 2],
... [2, 15, 5],
... ]
>>> alt_names = ["A", "B", "C", "D"]
>>> mcdm.rank(x_matrix, alt_names=alt_names, n_method="Linear2", w_method="CRITIC", s_method="SAW")
[('C', 0.5864039798997854), ('A', 0.5363555775174913), ('B', 0.42272592958624855), ('D', 0.41815995516110754)]
此外,您还可以使用mTOPSIS评分方法、EM加权方法和Linear3标准化方法以及命名的备选方案,如下所示:
>>> x_matrix = [
... [4, 5, 10],
... [3, 10, 6],
... [3, 20, 2],
... [2, 15, 5],
... ]
>>> alt_names = ["A", "B", "C", "D"]
>>> mcdm.rank(x_matrix, alt_names=alt_names, n_method="Linear3", w_method="EM", s_method="mTOPSIS")
[('A', 0.5671982017516887), ('D', 0.4737709007480381), ('B', 0.44023602515388915), ('C', 0.43979056725587967)]
此外,您还可以使用新评分法、VIC加权法和Linear1标准化方法以及命名备选方案,如下所示:
>>> x_matrix = [
... [4, 5, 10],
... [3, 10, 6],
... [3, 20, 2],
... [2, 15, 5],
... ]
>>> alt_names = ["A", "B", "C", "D"]
>>> mcdm.rank(x_matrix, alt_names=alt_names, n_method="Linear1", w_method="VIC", s_method="MEW")
[('A', 0.596199006150288), ('B', 0.5926510141687035), ('D', 0.5816528401371021), ('C', 0.507066254464828)]
最后,您可以使用mcdm
包的load
函数从文本文件(例如,example09.tsv文件)加载一个决策矩阵,然后使用新的评分方法和VIC加权方法计算其备选方案的排名,如下所示:
>>> x_matrix, alt_names = mcdm.load("./mcdm/tests/data/example09.tsv", delimiter="\t", skiprows=1, labeled_rows=True)
>>> mcdm.rank(x_matrix, alt_names=alt_names, w_method="VIC", s_method="MEW")
[('COORD.PRoPHET', 0.47540101629920883), ('DF.PRoPHET', 0.4720540449389032), ('CnR.LTS', 0.38076976314696165), ('SimBetTS.L8', 0.3800058193419937), ('SimBetTS.L16', 0.3799920328578032), ('CnR.DestEnc', 0.37944808013507936), ('LSF-SnW.L16', 0.37739981242275067), ('DF.DestEnc', 0.3737879965369727), ('COORD.DestEnc', 0.3735362169300779), ('SimBetTS.L4', 0.372439515643607), ('LSF-SnW.L8', 0.3689450285406012), ('DF.LTS', 0.36604297140966213), ('COORD.LTS', 0.36532018876831296), ('LSF-SnW.L4', 0.34498575401083065), ('CnF.PRoPHET', 0.344899433667112), ('CnF.DestEnc', 0.34080904510687654), ('CnF.LTS', 0.33682425293123014), ('SnF.L8', 0.3338134560941729), ('SnF.L4', 0.3310799577048607), ('CnR.PRoPHET', 0.3283706628162786), ('SnF.L2', 0.3282710142810222), ('SnF.L16', 0.325965295985982), ('SimBetTS.L2', 0.3198197170434966), ('LSF-SnW.L2', 0.28336307866897725), ('CnR.Enc', 0.25388909503755097), ('DF.Enc', 0.19642752820544426), ('COORD.Enc', 0.18527125018989776), ('Epidemic', 0.17618218317052287), ('Direct', 0.14463684900589485), ('EBR.L16', 0.14427544773753895), ('SnW.L16', 0.14419569083973272), ('EBR.L2', 0.139576851541699), ('SnW.L2', 0.1393465080643217), ('SnW.L8', 0.13728835719879856), ('EBR.L8', 0.13728300706136987), ('EBR.L4', 0.13654721879934206), ('SnW.L4', 0.1364251455180083), ('CnF.Enc', 0.11713353969310777)]
参考文献
[1]C.-L.Hwang和K.Yoon,多属性决策。经济学和数学系统的讲稿。柏林海德堡施普林格出版社,1981年,第186卷,ISBN:9783540105589。在
J.L.Rodgers和W.A.Nicewander,《十三种看待相关系数的方法》,《美国统计学家》第42卷第1期,第59-66页,1988年。DOI:10.2307/2685263。在
《多准则问题中目标权重的确定:批评方法》,第22卷,第7期,第763-770页,1995年。DOI:10.1016/0305-0548(94)00059-H。在
《多属性决策:选择方法的模拟比较》,S.H.Zanakis,A.Solomon,N.Wishart,和S.Dublish,“多属性决策:选择方法的模拟比较”,欧洲运筹学杂志,第107卷,第3期,第507-529页,1998年。DOI:10.1016/S0377-2217(97)00147-1。在
《利用改进的TOPSIS与客观权重进行公司间比较》,第27卷,第10期,第963-9732000页。DOI:10.1016/S0305-0548(99)00069-6。在
[a11}H.-S.Shih,H.-J.Shyur,E.S.Lee,“群体决策的TOPSIS扩展”,《数学与计算机建模》,第45卷,第7-8期,第801-8132007页。DOI:10.1016/j.mcm.2006.03.023。在
斯泽克利,M、 L.Rizzo和N.K.Bakirov,“通过距离相关性测量和检验相关性”,《统计学年鉴》,第35卷,第6期,第2769-2794页,2007年。DOI:10.1214/009053607000000505。在
[8]G.J.Székely和M.L.Rizzo,“布朗距离协方差,应用统计学年鉴,第3卷,第4期,第1236-12652009页。DOI:10.1214/09-AOAS312。在
[9]D.-G.Akestoridis and E.Papapetrou,“机会网络中路由协议评估框架”,计算机通信,第145卷,第14-28页,2019年。DOI:10.1016/j.comcom.2019.06.003。在
许可证
版权所有(c)2020 Dimitrios Georgios Akestoridis
这个项目是根据麻省理工学院的许可条款授权的。在
- 项目
标签: