ahp层次分析法matlab代码_(案例)AHP层次决策分析Matlab编码计算

层次聚类分析Matlab编码计算

98b4c0a4b098d4a6bb60eca5359fd41a.gif

7f02958ed7dacf243ef881e003f1fe09.png

01

AHP层次决策分析计算函数

  • 求判断矩阵最大特征根和归一化特征向量:

function [maxEigVal,w] = maxEigValVec(A)%求最大特征值及对应的归一化特征向量%A为判断矩阵%maxEigval:最大特征根;w:归一化特征向量[eigvec,eigval]=eig(A);eigval=diag(eigval);                  %特征向量eigvalmag=imag(eigval);realind=find(eigvalmagrealeigval=eigval(realind);             %实特征根maxEigVal=max(realeigval);            %最大特征值index=find(eigval==maxEigVal);vecinit=eigvec(:,index);               %最大特征值对应的特征向量w=vecinit./sum(vecinit);               %特征向量归一化end
  • 层次单排序的一致性检验:

function [RI,CI]=sglSortExamine(maxEigVal,A)%层次分析法单排序一致性检验%maxEigVal为最大特征值,A为判断矩阵%RI随机一致性指标;CI实际一致性指标n=size(A,1);RIT= [0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51,1.54,1.56,1.58,1.59]; RI=RIT(n);CI=(maxEigVal-n)/(n-1);CR=CI/RI; %一致性比例要求<0.10if CR>=0.10    fprintf('矩阵没通过一致性检验,请重新调整判断矩阵!\n');else    fprintf('一致性比例CR=%f\n',CR);    fprintf('矩阵通过一致性检验\n');endend
  • 求层次总排序权重并进行一致性检验:

function [W,CR]=tolSortVec(uwVec,dwVec,CIVec,RIVec)%   求层次总排序权重并进行一致性检验%   uwVec为上一层因素的总排序权重行向量%   dwVec为下一层因素相对于上一层各因素的层次单排序权重矩阵%   CIVec为一致性指标列向量%   RIVec为随机一致性指标列向量W=dwVec*uwVec; %权重加权成绩求和得出总排序的权重CR=uwVec'*CIVec/(uwVec'*RIVec);  %总排序一致性比例CRfprintf('层次总排序一致性比例CR=%f\n',CR)if CR>=0.10    fprintf('层次总排序没通过一致性检验,请重新调整判断矩阵')else    fprintf('层次总排序通过一致性检验')end

02

AHP层次决策分析主函数

  • 代码:

clear;%总目标A,准则层B:6个元素,对象层C:3个元素,完全层次连接关系%A-B判断矩阵(1个,6*6)A= [1,1,1,4,1,1/2;    1,1,2,4,1,1/2;    1,1/2,1,5,3,1/2;    1/4,1/4,1/5,1,1/3,1/3;    1,1,1/3,3,1,1;    2,2,2,3,3,1];%B-C判断矩阵(6个,3*3)B1 = [1,1/4,1/2;4,1,3;2,1/3,1];B2 = [1,1/4,1/5;4,1,1/2;5,2,1];B3 = [1,3,1/3;1/3,1,1/7;3,7,1];B4 = [1,1/3,5;3,1,7;1/5,1/7,1];B5 = [1,1,7;1,1,7;1/7,1/7,1];B6 = [1,7,9;1/7,1,1;1/9,1,1];%总目标A→准则层B:排序计算与一致性检验[maxEigVal(1),wA]=maxEigValVec(A);fprintf('******总目标A→准则层B******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(1))fprintf('最大特征根对应的特征向量为:\n')wA'[RIA,CIA]=sglSortExamine(maxEigVal(1),A);%准则层B→对象层C:层次单排序计算与一致性检验[maxEigVal(2),wB1]=maxEigValVec(B1);fprintf('\n\n******准则层B1→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(2))fprintf('最大特征根对应的特征向量为:\n')wB1'[RIB1,CIB1]=sglSortExamine(maxEigVal(2),B1);[maxEigVal(3),wB2]=maxEigValVec(B2);fprintf('\n\n******准则层B2→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(3))fprintf('最大特征根对应的特征向量为:\n')wB2'[RIB2,CIB2]=sglSortExamine(maxEigVal(3),B2);[maxEigVal(4),wB3]=maxEigValVec(B3);fprintf('\n\n******准则层B3→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(4))fprintf('最大特征根对应的特征向量为:\n')wB3'[RIB3,CIB3]=sglSortExamine(maxEigVal(4),B3);[maxEigVal(5),wB4]=maxEigValVec(B4);fprintf('\n\n******准则层B4→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(5))fprintf('最大特征根对应的特征向量为:\n')wB4'[RIB4,CIB4]=sglSortExamine(maxEigVal(5),B4);[maxEigVal(6),wB5]=maxEigValVec(B5);fprintf('\n\n******准则层B5→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(6))fprintf('最大特征根对应的特征向量为:\n')wB5'[RIB5,CIB5]=sglSortExamine(maxEigVal(6),B5);[maxEigVal(7),wB6]=maxEigValVec(B6);fprintf('\n\n******准则层B6→对象层C******\n')fprintf('判断矩阵最大特征根为:%f\n',maxEigVal(7))fprintf('最大特征根对应的特征向量为:\n')wB6'[RIB6,CIB6]=sglSortExamine(maxEigVal(7),B6);%准则层B→对象层C:层次总排序计算与一致性检验dw=zeros(3,6);dw(:,1)=wB1;dw(:,2)=wB2;dw(:,3)=wB3;dw(:,4)=wB4;dw(:,5)=wB5;dw(:,6)=wB6;fprintf('\n\n******准则层B→对象层C的权重计算汇总:n******\n')dwfprintf('\n\n******准则层B各元素对总目标A的权重计算汇总:n******\n')wA'CIC=[CIB1;CIB2;CIB3;CIB4;CIB5;CIB6];RIC=[RIB1;RIB2;RIB3;RIB4;RIB5;RIB6];tw=tolSortVec(wA,dw,CIC,RIC)';fprintf('\n\n******对象层C各元素对总目标A的权重计算汇总:n******\n')tw[MAX,CHOICE] = max(wA);        %最佳选择fprintf('\n\n******准则层最佳决策准则为第%g个准则!******\n', CHOICE)[MAX,CHOICE] = max(tw);        %最佳选择fprintf('\n\n******对象层最佳决策对象为第%g个对象!******\n', CHOICE)
  • 结果:

******总目标A→准则层B******判断矩阵最大特征根为:6.617780最大特征根对应的特征向量为:ans =    0.1507    0.1792    0.1886    0.0472    0.1464    0.2879一致性比例CR=0.099642矩阵通过一致性检验******准则层B1→对象层C******判断矩阵最大特征根为:3.018295最大特征根对应的特征向量为:ans =    0.1365    0.6250    0.2385一致性比例CR=0.015771矩阵通过一致性检验******准则层B2→对象层C******判断矩阵最大特征根为:3.024595最大特征根对应的特征向量为:ans =    0.0974    0.3331    0.5695一致性比例CR=0.021203矩阵通过一致性检验******准则层B3→对象层C******判断矩阵最大特征根为:3.007022最大特征根对应的特征向量为:ans =    0.2426    0.0879    0.6694一致性比例CR=0.006053矩阵通过一致性检验******准则层B4→对象层C******判断矩阵最大特征根为:3.064888最大特征根对应的特征向量为:ans =    0.2790    0.6491    0.0719一致性比例CR=0.055938矩阵通过一致性检验******准则层B5→对象层C******判断矩阵最大特征根为:3.000000最大特征根对应的特征向量为:ans =    0.4667    0.4667    0.0667一致性比例CR=-0.000000矩阵通过一致性检验******准则层B6→对象层C******判断矩阵最大特征根为:3.007022最大特征根对应的特征向量为:ans =    0.7986    0.1049    0.0965一致性比例CR=0.006053矩阵通过一致性检验******准则层B→对象层C的权重计算汇总:n******dw =    0.1365    0.0974    0.2426    0.2790    0.4667    0.7986    0.6250    0.3331    0.0879    0.6491    0.4667    0.1049    0.2385    0.5695    0.6694    0.0719    0.0667    0.0965******准则层B各元素对总目标A的权重计算汇总:n******ans =    0.1507    0.1792    0.1886    0.0472    0.1464    0.2879层次总排序一致性比例CR=0.011700层次总排序通过一致性检验******对象层C各元素对总目标A的权重计算汇总:n******tw =    0.3952    0.2996    0.3052******准则层最佳决策准则为第6个准则!************对象层最佳决策对象为第1个对象!******

98b4c0a4b098d4a6bb60eca5359fd41a.gif

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值