python实现VIKOR算法

第一个决策算法,之首会继续修改,先贴上自己做的简单算法实现。
数据来自《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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值