Matlab学习系列30.-理想解法(TOPSIS)法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

30.理想解法(TOPSIS)法一、基本原理TOPSIS法是一种综合评价方法,其基本原理是:(1)将n个评价指标看成n条坐标轴,由此可以构造出一个n维空间,则每个待评价的对象依照其各项指标的数据就对应n维空间中一个坐标点;(2)针对各项指标从所有待评价对象中选出该指标的最优值(理想解,对应最优坐标点)和最差值(负理想解,对应最差坐标点),依次求出各个待评价对象的坐标点分别到最优坐标点和最差坐标点的距离*d和0d(3)构造评价参考值00*dfdd则f值越大代表评价结果越优。二、算法步骤1.构造决策矩阵()ijmnAa,每一列是一个评价指标,每一行是一条待评价样本;为去掉量纲效应,做规范化处理得到()ijmnBb,其中21,1,,,1,,mijijijibaaimjn注:该规范化法处理后,各评价样本的同一评价指标值的平方和为1,适合TOPSIS法中计算欧氏距离的场合。2.根据每个评价指标对评价结果的贡献程度的不同,指定不同的权重:1[,,]n,将B的第j列乘以其权重jw,得到加权规范矩阵()ijmnCc3.确定正理想解*C和负理想解0C***00011[,,],[,,]nnCccCcc其中,*max,minijijijicjccj若第评价指标是正向指标(值越大越好),若第评价指标是负向指标(值越小越好),1,,jn0min,maxijijijicjccj若第评价指标是正向指标(值越大越好),若第评价指标是负向指标(值越小越好),1,,jn4.计算每个待评价样本到正理想解和负理想解的距离*id和0id**21(),1,,niijjjdccim0021(),1,,niijjjdccim5.计算每个待评价样本的评价参考值00*,1,,iiiidfimdd再将if从大到小排列,得到各评价样本的优劣结果。三、数据规范化处理1.为什么需要数据规范化?原始样本数据的不同变量列的数据,可能:(1)不具有一致性:有的是越大越好,有的是越小越好,有的是在某区间最佳;(2)量纲不同:由于计量单位不同,不同列的数值大小差异可能很大;(3)极差不同:最大值最小值之差不同,不具有可比性。上述三个问题可能会导致计算结果不正确、计算时间增加、计算结果无法收敛等。所以,在代入模型前,一般需要对原始数据做标准化(归一化)处理。注:若原始数据接近规范,则不需要做归一化;应该将样本数据和测试数据放在一起归一化,例如,神经网络训练的时候,应该考虑极值情况,以极值作分母,这样可能效果更好一点。2.数据规范化方法(1)同向性变换设x为样本数据,若x第j列是正向指标(值越大越好),则x(:,j)=x(:,j)/max(x(:,j))变换后,最优值是1,最差值不一定是0;若x第j列是负向指标(值越小越好),则x(:,j)=1-x(:,j)/max(x(:,j))变换后,最优值不一定是0,最差值是0.(2)极差归一化对原始数据做线性变换,使结果落到区间[0,1].若x是正向指标(值越大越好),则y=(x-Min)/(Max-Min)若x是负向指标(值越小越好),则y=(Max-x)/(Max-Min)注:该方法有一个缺陷就是当有新数据加入时,可能导致Max和Min的变化,需要重新计算一次Max和Min。functiony=guiyi(x,type,ymin,ymax)%自编函数实现正向或负向指标归一化到区间[ymin,ymax],返回归一化后的数据矩阵%x为原始数据矩阵,一行代表一个样本,每列对应一个指标%type设定正向指标1,负向指标2[n,m]=size(x);y=zeros(n,m);xmin=min(x);xmax=max(x);switchtypecase1forj=1:my(:,j)=(ymax-ymin)*(x(:,j)-xmin(j))/(xmax(j)-xmin(j))+ymin;endcase2forj=1:my(:,j)=(ymax-ymin)*(xmax(j)-x(:,j))/(xmax(j)-xmin(j))+ymin;endend或者使用Matlab自带函数mapminmax()实现极差归一化与反归一化,基本格式为:[Y,PS]=mapminmax(X,Ymin,Ymax);%PS记录该变换过程mapminmax('apply',Z,PS);%对矩阵Z实施PS变换过程mapminmax('reverse',Y,PS);%从Y变换回X注意,X为行向量,默认归一化到[-1,1].(3)区间型数据的变换设数据取值在区间[b,c]是最优的,最差下限为a,最差上限为d,则,1,,0,xaaxbbabxcydxcxddcxaxd或functiony=qujian(x,a,b,lb,ub)%自编函数实现区间型数据规范化(梯形隶属度函数),x为数据向量%[a,b]为最优区间,lb为最差下限,ub为最差上限n=length(x);fori=1:nifx(i)=lb&x(i)ay(i)=(x(i)-lb)/(a-lb);elseifx(i)=a&x(i)=by(i)=1;elseifx(i)b&x(i)uby(i)=(ub-x(i))/(ub-b);elsey(i)=0;endend注:Matlab2010b,2011a,b版本mapminmax()函数有bug.(4)向量规范化正向指标和负向指标都可以做向量规范化变换:x(:,j)=x(:,j)/norm(x(:,j))变换后,无法从值的大小上分辨变量值的优劣,但是同一变量数据的平方和为1,适合用于计算到某理想值的欧氏距离。(5)Z标准化实际问题中,不同变量的单位往往不同,为了消除变量的量纲效应,使每个变量都具有相同的表现力,数据分析中常对数据进行标准化处理,处理后的数据符合标准正态分布,即均值为0,标准差为1:iixys其中,μ为样本均值,s为样本标准差。Matlab用zscore()函数实现数据的标准化,基本格式为:[Z,mu,sigma]=zscore(X,flag,dim)其中,X为数据矩阵;默认flag=0分母用样本标准差(除以n-1),flag=1用标准差(除以n);默认dim=1按列,dim=2按行;mu和sigma返回数据的均值和标准差。四、Matlab实现例1研究生院评估。现有5个研究生院,选取4个评价指标:人均专著、生师比、科研经费、逾期毕业率。数据如下表:用TOPSIS法进行综合评价,对5个研究生院进行排名。datas=xlsread('Graduate.xlsx');A=datas(:,2:end);%决策矩阵[m,n]=size(A);A(:,2)=qujian(A(:,2),5,6,2,12);%对生师比指标做区间变换[5,6]最优,最差下界2,最差上界12forj=1:nB(:,j)=A(:,j)/norm(A(:,j));%规范化处理endw=[0.20.30.40.1];%各指标的权重向量C=B.*repmat(w,m,1);%加权规范矩阵Cstar=max(C);%按列取最大值,求正理想解Cstar(4)=min(C(:,4));%第4个指标是负向指标(值越小越好)C0=min(C);%按列取最小值,求负理想解Cstar(4)=max(C(:,4));%第4个指标是负向指标(值越大越差)fori=1:mSstar(i)=norm(C(i,:)-Cstar);%求各样本到正理想解的距离S0(i)=norm(C(i,:)-C0);%求各样本到负理想解的距离endf=S0./(S0+Sstar);%求评价参考值[sf,ind]=sort(f,'descend')%求各研究生院的排名运行结果:sf=0.68660.64350.58650.52820.3026ind=43215这5所研究生院的从好到差的排名依次是,4,3,2,1,5.第4所研究生院最好,其评价参考值(评分)为0.6866.

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功