第一个决策算法,之首会继续修改,先贴上自己做的简单算法实现。
数据来自《VIKOR 法在城市供水方案优选中的应用》这篇论文。
step1,m个方案有n个指标的决策矩阵,按照下式转化为标准化决策矩阵。
step2,确定正理想解负理想解。
srep3,获得权重向量。
step4,确定最大群体效益值S 和最小个体遗憾值R,以及各方案的利益比率值Q.
pandas 完整代码代码实现如下,9.18优化版
import pandas as pd#bikor算法实现
import numpy as np
import IFS
import MATRIX_NOR
import myIO
def ranks(df,w,v=0.2):#排名方法
lower=(df.max() - df) / (df.max() - df.min())
s= np.sum(lower*w,axis=1)
r= np.max(lower*w,axis=1)
q= lambda s,r: v* (s - s.min()) / (s.max() - s.min()) +\
(1 - v) * (r - r.min()) / (r.max() - r.min())
return s,r,q(s,r)
if __name__ == '__main__':#主函数
url = 'D:\study\\test\data\\t1.xlsx'
list=[1,2,3,4,5,8]
w = [0.106, 0.126, 0.030, 0.023, 0.112, 0.127, 0.143,
0.090, 0.122, 0.122]
df=myIO.getdef(url,0)
print(df)
df = MATRIX_NOR.maxmin(df,list)
print(df)
s ,r, q= ranks(df,w)
print('计算结果q\n',s,r,q )
github仓库在https://github.com/rivendelltom/decision-making-study