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
标签:线性规划,权重,04,python,df,直觉,import,模糊集,属性 来源: https://blog.csdn.net/weixin_44014836/article/details/117882916