综合评价方法MATLAB实现_书_代码_笔记

书PDF,代码在下面的地址,回复查看。

此处为隐藏内容,请评论后查看隐藏内容,谢谢!


下面是自己的笔记



第一章 绪论
    常用综合评价法
        层次分析法
        模糊综合评价法
        可拓综合评价法
        数据包络分析
        人工神经网络评价法
        TOPSIS法(逼近于理想解的排序法)
        熵权法
    matlab一些语法
        A=0:200:1000;       递增数列: 
            %A = 0 200 400 600 800 1000
        type/edit+函数名    查看函数作用
        help +              +号的解释
        doc+函数名          文档
        sqrt(4)             开方
        clear+变量名        清除变量
        clc                 清除命令窗口
        whos                工作区中变量信息
        
第七章 层次分析法及MATLAB实现
    将各个指标分成几个层次,在每个层次内设定权重。
    然后通过一系列计算,最终得到每个指标对应最终目标的权重,拿该权重来进行目标值的计算
    最好不要用,因为权重是自己编的
    7.1 建模步骤    
        (1)构建递阶层次结构
        (2)建立判断矩阵
        (3)一致性检验
            RI表
            阶数  1   2   3     4     5     6     7     8     9     10
            RI    0   0   0.58  0.9   1.12  1.24  1.32  1.41  1.45  1.49
        (4)层次单排序
        (5)层次总排序
        (6)做出决策 
    7.2 例
        (1)构建递阶层次结构
            A 
            B1 B2 B3
            c1 c2 c3 c4 c5
        (2)建立判断矩阵
            判断矩阵 P248
        (3)一致性检验
        >>A=[1,1/2.5,2.2;2.5,1,3.1;1/2.2,1/3.1,1];
        >>eig(A)%计算最大特征根
            %得到最大特征跟3.0366
            %计算CI=(3.0366-3)/(3-1)=0.0183  上下的3都为阶数
            %查表,得阶数为3时,RI=0.58
            %计算CR=CI/RI=0.0182/0.58=0.0316
            %0.0316<0.1,说明A具有不错的一致性
        >>B1=[1,3.3,2.1,4.5,3.2;1/3.3,1,1/2.2,1/3.4,1/2.6;1/2.1,2.2,1,1.1,2.3;1/4.5,3.4,1/1.1,1,2.5;1/3.2,2.6,1/2.3,1/2.5,1]
        >>eig(B1)
            %计算最大特征根,得5.3004
            %查表,得阶数为5时,RI=1.12            
            %计算CI=(5.3004-5)/(5-1)=0.0751
            %计算CR=CI/RI=0.0751/1.12=0.0671
            %0.0671<0.1,说明A具有不错的一致性
        >>B2=[1,3.1,3.3,2.1,2.5;1/3.1,1,2,2.3,2.1;1/3.3,1/2,1,1/2.8,1/1.9;1/2.1,1/2.3,2.8,1,2.1;1/2.5,1/2.1,1.9,1/2.1,1]
        >>eig(B2)    
            %计算最大特征根,得5.2575
            %查表,得阶数为5时,RI=1.12            
            %计算CI=(5.2575-5)/(5-1)=0.0644
            %计算CR=CI/RI=0.0644/1.12=0.0575
            %0.0575<0.1,说明A具有不错的一致性    
        (4)层次单排序
            >>[V,D]=eig(A); %计算最大特征根
            >>V=V(:,1);     %取最大特征向量
            >>W=V/sum(V)    %归一化取权重
            
            >>[V,D]=eig(B1); %计算最大特征根
            >>V=V(:,1);     %取最大特征向量
            >>W=V/sum(V)    %归一化取权重            
            
            >>[V,D]=eig(B2); %计算最大特征根
            >>V=V(:,1);     %取最大特征向量
            >>W=V/sum(V)    %归一化取权重
            
        (5)层次总排序
            >>b=[0.2766,0.5712,0.1522];
            >>CI=[0.0751,0.0365,0.0644];
            >>RI=ones(1,3)*1.12;
            >>CR=sum(b.*CI)/sum(b.*RI)
                %0.495<0.1,说明层次总排序具有不错的一致性  
            >>C=[0.4317,0.1729,0.3893;0.0739,0.0683,0.2258;0.194,0.4078,0.0842;0.1874,0.1122,0.181;0.133,0.2388,0.1197];
            >>Cj=C*b'   %得到层次总排序权重
 
        (6)做出决策   
第八章 模糊综合评价法及MATLAB实现
    和层次分析法类似,需要自己确定大量的权重。不建议用。
    8.1 建模步骤    
        (1)确定评价因素集
        (2)确定评语集或评价等级集
        (3)建立评价矩阵
        (4)确定权向量 
        (5)进行模糊合成
        (6)做出决策     
    8.2 多层次模糊综合评价例
        (1)确定评价因素集
            A
            B1      B2          B3
            C1C2C3  C4C5C6C7    C8C9C10
            
            U1=[C1,C2,C3],U2=[C4,C5,C6,C7],U3=[C8,C9,C10]
            U=[B1,B2,B3]
        (2)确定规划等级集     
            V=[很好,较好,一般,较差,差]
        (3)单因素评价    
            C1被评价为很好的测度为0.1,被评价为较好的测度为0.4......
            C2...
            ...
            C10
        (4)建立评价矩阵    
            R1=[0.1,0.4,0.3,0.1,0.1;0.2,0.5,0.2,0.1,0;...]
            R2=[]...
            R3=[]...
        (5)确定权向量 
            C1,C2,C3相对于B1的权重分别为0.5635,0.3040,0.1325(手动给)
            C4...
            C8...
            B1,B2,B3相对于A的权重为0.4802,0.3086,0.2112...
            汇总
            W1=[0.5635,0.3040,0.1325],W2=...,W3=...,W=[0.4802,0.3086,0.2112]
        (6)进行模糊合成        
            S1=W1*R1,S2=W2*R2,S3=W3*R3
            R=[S1,S2,S3]
            S=W*R
第九章 可拓综合评价法及MATLAB实现
需要设定标准的取值范围和权重。不建议使用。
    9.1 建模步骤    
        (1)确定经典域
        (2)确定节域
        (3)确定待评价物元
        (4)确定评价指标的权重
        (5)确定关联度
        (6)确定待评事物的类别和级别变量特征值
    9.2 例
        数据及评价标准见P273
        
        区域   总磷     总氮  高锰酸盐 透明度 叶绿素
        入湖区 0.126    1.86  5.16     1.95   3.70
        养殖区
        开阔区
        保护区
        全湖
        营养等级    总磷        总氮        高锰酸盐   透明度     叶绿素
        极贫营养    (0,0.005]   (0,0.07]    (0,1.4]    (8.25, ]   (0,0.25] 
        贫营养
        中营养
        轻富营养
        重富营养
        
        (1)确定经典域
            五个评价类别(极贫营养,贫营养,中营养,轻富营养,重富营养)分别标记为N1,N2,N3,N4,N5,五个指标(总磷,总氮,高锰酸盐,透明度,叶绿素)标记为c1,c2,c3,c4,c5
            将指标值全部替换为区间。
        (2)确定节域
            上下界
        (3)确定待评价物元
            五个区域用Rd1,Rd2..写出物元
        (4)确定评价指标的权重
            0.156,0.295,0.297,0.241,0.011
        (5)确定关联度
        (6)确定待评事物的类别和级别变量特征值
第十章 数据包络分析法及MATLAB实现
评价决策单元的输入输出。
好。
    10.1 C2R模型
    10.2 C2GS2模型
    10.3 例子
        评价科研(R&D)投入产出效率评价
        输入:每万人中科学家数量(人/万人),经费投入强度(R&D/GDP)
        输出:论文数,专利数,技术合同数,高技术产品比重,高技术企业比重
        
        数据:
        指标  1996    1997    1998    1999    2000    2001    2002    2003
        j    1       2       3       4       5       6       7       8
        X1   15.11   15.42   13.11   13.57   15.96   16.94   19.34   20.89
        X2   0.41    0.38    0.45    0.53    0.85    0.97    1.03    1.21
        Y1   1879    2452    1994    2819    2862    3636    4445    5550
        Y2   2578    2962    3787    6143    6432    6158    7595    9829
        Y3   23.8    28.4    33.1    41.7    45.0    52.9    59.49   76.52  
        Y4   9.22    13.39   17.21   17.77   20.91   24.88   31.48   38.63
        Y5   7.68    8.73    9.35    10.47   11.60   12.16   13.22   16.72
        
    10.4 MATLAB解C2R
        10.4.1 代码
        
%将原始数据按照规定格式输入到data_dea.xls中
%将数据文件data_dea.xls存放到MATLAB的当前工作目录下
%清空内存变量与工作空间,以防干扰
clear;clc;
disp('请在弹出的Excel文件data_dea.xls中,选择各决策单元的投入数据')
tmp_input=xlsread('data_dea.xls',-1);
disp('请在弹出的Excel文件data_dea.xls中,选择各决策单元的产出数据')
tmp_output=xlsread('data_dea.xls',-1);
[m,n]=size(tmp_input);[s,n]=size(tmp_output);mA=m+s;nA=n+mA+1;mb=mA;A=zeros(mA,nA);
A(1:m,1:n)=tmp_input;A(m+1:mA,1:n)=tmp_output;A(1:m,n+1:n+m)=eye(m);
A(m+1:mA,n+1+m:nA-1)=-eye(s);F=[zeros(n,1);-(1e-6)*ones(mA,1);1];
lb=zeros(nA,1);b=zeros(mb,1);outputx=zeros(nA,n);outputfval=zeros(1,n);
for i=1:n
   A(1:m,nA)=-A(1:m,i); b(m+1:mb,1)=A(m+1:mA,i); 
   [x,fval]=linprog(F,[],[],A,b,lb);outputx(1:nA,i)=x;outputfval(1,i)=fval;
end
   xlswrite('output.xls','lamda值',1,'A1');xlswrite('output.xls',outputx(1:n,:),1,'A2');k1=n+3;
   string_1=['A',num2str(k1)];xlswrite('output.xls','松弛变量值',1,string_1);
   string_2=['A',num2str(n+4)];xlswrite('output.xls',outputx(n+1:n+m,:),1,string_2);
   string_3=['A',num2str(n+m+5)];xlswrite('output.xls','剩余变量值',1,string_3);
   string_4=['A',num2str(n+m+6)];xlswrite('output.xls',outputx(n+m+1:nA-1,:),1,string_4);
   string_5=['A',num2str(n+m+s+7)];xlswrite('output.xls','theta值',1,string_5);
   string_6=['A',num2str(n+m+s+8)];xlswrite('output.xls',outputx(nA,:),1,string_6);
   string_7=['A',num2str(n+m+s+10)];xlswrite('output.xls','目标函数值',1,string_7);
   string_8=['A',num2str(n+m+s+11)];xlswrite('output.xls',outputfval,1,string_8);
        10.4.2 结果分析
            1997.1998.1999.2003年theta值为1,且剩余变量与松弛变量都为0(excel改完格式后),说明这四年DEA有效
            其余年份,可通过组合将投入降低至原投入theta比例而产出不变
            
    10.5 MATLAB解C2GS2
        10.5.1 代码           
%从Excel文件中读取决策单元的投入产出数据
%将原始数据按照规定格式输入到data_dea.xls中
%将数据文件data_dea.xls存放到MATLAB的当前工作目录下
%清空内存变量与工作空间,以防干扰
clear;clc;
disp('请在弹出的Excel文件data_dea.xls中,选择各决策单元的投入数据')tmp_input=xlsread('data_dea.xls',-1);
disp('请在弹出的Excel文件data_dea.xls中,选择各决策单元的产出数据')tmp_output=xlsread('data_dea.xls',-1);
[m,n]=size(tmp_input);[s,n]=size(tmp_output);mA=m+s;nA=n+mA+1;mb=mA;A=zeros(mA,nA);
A(1:m,1:n)=tmp_input;A(m+1:mA,1:n)=tmp_output;A(1:m,n+1:n+m)=eye(m);A(m+1:mA,n+1+m:nA-1)=-eye(s);
F=[zeros(n,1);-(1e-6)*ones(mA,1);1];lb=zeros(nA,1);b=zeros(mA,1);
outputx=zeros(nA,n);outputfval=zeros(1,n);
for i=1:n
A(1:m,nA)=-A(1:m,i); 
A(mA+1,:)=[ones(1,n),zeros(1,mA+1)];
b(m+1:mA,1)=A(m+1:mA,i); 
b(mA+1,1)=1;
[x,fval]=linprog(F,[],[],A,b,lb);
outputx(1:nA,i)=x;
outputfval(1,i)=fval;
end
xlswrite('output.xls','lamda值',1,'A1');xlswrite('output.xls',outputx(1:n,:),1,'A2');
k1=n+3;string_1=['A',num2str(k1)];xlswrite('output.xls','松弛变量值',1,string_1);
string_2=['A',num2str(n+4)];xlswrite('output.xls',outputx(n+1:n+m,:),1,string_2);
string_3=['A',num2str(n+m+5)];xlswrite('output.xls','剩余变量值',1,string_3);
string_4=['A',num2str(n+m+6)];xlswrite('output.xls',outputx(n+m+1:nA-1,:),1,string_4);
string_5=['A',num2str(n+m+s+7)];xlswrite('output.xls','theta值',1,string_5);
string_6=['A',num2str(n+m+s+8)];xlswrite('output.xls',outputx(nA,:),1,string_6);
string_7=['A',num2str(n+m+s+10)];xlswrite('output.xls','目标函数值',1,string_7);
string_8=['A',num2str(n+m+s+11)];xlswrite('output.xls',outputfval,1,string_8);
        10.5.2 结果分析
        
            C2R模型output的lamda值,可以求出每年的总lamda值与总theta值
            规模收益值计算公式:总lamda/总theta值
技术效率值:C2GS2模型的theta值
投入冗余率:C2GS2的松弛变量值除以相对应的输入值
产出不足率:C2GS2的剩余变量值除以相对应的输入值
规模收益值大于1,表示规模收益递减;小于1,表示规模收益递增
技术效率值等于1,说明技术效率达到最优
投入冗余率与产出不足率都为0,说明投入与产出匹配。
投入冗余率不为0,说明投入没有得到充分利用
产出不足率不为0,说明产出不足
    10.6 改进C2R模型
避免多个决策单元同时有效
代码在文件夹中
第十一章 TOPSIS法及MATLAB实现
需要给指标权重。
11.1 建模步骤   
        (1)形成决策矩阵
        (2)无量纲化决策矩阵
        (3)构建加权决策矩阵
        (4)计算正负理想解
        (5)计算欧式距离
        (6)计算相对贴进度
11.2 MATLAB实现
代码在文件中
第一次选择,选择指示值。若指标为越大越优,则指示值应设为1.越小越优,指示值设为0
第二次选择,选择指标值。
第三次选择,选择权重。
结果中,yita为理想解的贴进度
prop为归一化后的数据,即分配的权重
第十二章 熵权法及MATLAB实现
指标权重由信息的熵值提供。
信息差异较大,所计算出的熵值也大。信息差异较小,所计算出的熵值也小。
此处得到的权重可用于TOPSIS与可拓综合评价中
可以与其它方法混合使用。
11.1 建模步骤   
        (1)形成决策矩阵
        (2)标准化决策矩阵
        (3)计算特征比重
        (4)计算熵值
        (5)计算差异系数
        (6)熵值确定
11.2 MATLAB实现
代码在文件中
第一次选择,选择指示值。若指标为越大越优,则指示值应设为1.越小越优,指示值设为0
计算完成后,命令行窗口输入'E',显示熵值。输入'W',显示熵权。
第十三章 人工神经网络评价法及MATLAB实现
11.1 例子



打赏

1条评论

访客  2018-08-10 16:52:50 回复该留言
不错

发布评论