python实现《直觉模糊集决策与对策分析方法》04基于权重的线性规划方法

这是李登峰老师《直觉模糊集决策与对策分析方法》第三章权重与属性值均为直觉模糊集合的多属性线性规划方法。基本思想是对权重进行线性规划求出最优权重,然后矩阵加权求出方案的相对贴进度。
决策的基本步骤为:
将给定的决策矩阵和权重向量分别用区间值形式表达;
对权重构造线性规划,确定最优解;
矩阵加权,计算方案的最优综合评价值;
计算方案的相对贴进度确定排序。
对于给出的算例进行独立重复实验。代码关键步骤有注释。
中间的线性规划用lingo代码实现了结果。

'''
求解属性值和权重值均为直觉模糊集合的多属性线性规划方法。
主要思想是吧直觉模糊集合转化为区间值进行权重的区间求解。
'''
from scipy import optimize as op
import pandas as pd#bikor算法实现
import  numpy as  np
np.set_printoptions(suppress=True)
w=[0.25,0.45,0.3]
def getdef(n):#获取矩阵
    return pd.read_excel('D:\study\\test\data\\t13.xlsx',sheet_name=n)
def getmatirx(df):
    df.iloc[:, [i % 2 == 1 for i in range(len(df.columns))]] = 1 - df.iloc[:,
                                                                   [i % 2 == 1 for i in range(len(df.columns))]]
    return df
def getliner(df):
    pass
'''
lingo语言
max =0.35*x1+0.47*x2+0.15*x3;
x1<=0.75;
-x1<=-0.25;
x2<=0.6;
-x2<=-0.35;
x3<+0.35;
-x3<=-0.3;
x1+x2+x3=1;
'''
def ranks(df):
    d1 = df.iloc[:, ::2]
    d2 = df.iloc[:, 1::2]
    df1=d1.T.reset_index(drop=True).T
    df2= d2.T.reset_index(drop=True).T
    print(df1)
    print(df2)
    gl=np.dot(df1,w)
    gu=np.dot(df2,w)
    print(gl)
    print(gu)
    g=gu/(1+gu-gl)
    return g
if __name__ == '__main__':
    df =getdef(0)
    print(df)
    df1=getmatirx(df)
    print(df1)
    print(ranks(df1))

在这里插入图片描述

github仓库在https://github.com/rivendelltom/decision-making-study

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值