注册地址 登录
数学建模社区-数学中国 返回首页

kelanlangzi的个人空间 http://www.madio.net/?249054 [收藏] [复制] [分享] [RSS]

日志

层次分析

已有 536 次阅读2011-4-2 21:49 |

%数学建模
%层次分析
clc
clear
co = [1 3 4;1/3 1 1;1/4 1 1];
cp = [1 2 5 1 1/3 1/8 1 1 3;
    1/2 1 2 3 1 1/3 1 1 3;
    1/5 1/2 1 8 3 1 1/3 1/3 1];
nc = 3;
np = 3;
ocp = cengcifenxi(co,cp,nc,np)

 
function ocp = cengcifenxi(cu,cp,nc,np)
%层次分析程序
%cu 准则层C对目标层O的成对比较矩阵
%cp 所有方案层P对准则层C的成对比较矩阵
%nc 准则层C的个数
%np 方案层P的个数
%%
for i = 1:nc
    pc(1:np,1:np,i) = cp(:,np*(i-1)+1:np*i);
end
%%
ocp = zeros(np+4,nc+1);
%%
[lamatac,wc] = zhenghufanjuzhen_hefa(cu);
ocp(1,1:nc) = wc';
cicr(cu)
for i = 1:nc
    [lamata(i),w(1:np,i)] = zhenghufanjuzhen_hefa(pc(1:np,1:np,i));
    [ci(i),cr(i)] = cicr(pc(:,:,i));
   
    ocp(2:(np+1),i) = w(1:np,i);
    ocp(np+2,i) = lamata(i);
    ocp(np+3,i) = ci(i);
    ocp(np+4,i) = cr(i);
end
%%
for i = 1:np
    ocp(i+1,nc+1) = sum(ocp(1,1:nc).*ocp(i+1,1:nc));
end
%%
ri  = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
ocp(np+4,nc+1) = sum(ocp(1,1:nc).*ocp(np+3,1:nc))/sum(ocp(1,1:nc)*ri(np));
 
 
function [ci,cr] = cicr(a)
%一致性检验CI RI
ri  = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
lamata  = zhenghufanjuzhen_hefa(a)
n = size(a,2);
ci = (lamata - n)/(n-1)
cr = ci/ri(1,n)
if cr < 0.1
    disp('-------------------- CR < 0.1 通过了一致性检验------------------------------')
else
    disp('-------------------- CR > 0.1 没能通过一次性检验 ---------------------------')
end
 
 
function [lamata,w] = zhenghufajuzhen_hefa(a)
%求解正互反矩阵的最大特征值和特征向量的使用算法
n = size(a,2);
for i = 1:n
    for j = 1:n
        aa(i,j) = a(i,j)/sum(a(:,j));
    end
end
aaa = [sum(aa(1,:)),sum(aa(2,:)),sum(aa(3,:))];
for i = 1:n
    w(i) = aaa(i)/sum(aaa);
end
aw = a*w';
lamata = sum(aw'./w)/n;
w = w';

 
运行结果:
lamata =
    3.0092

ci =
    0.0046

cr =
    0.0079
-------------------- CR < 0.1 通过了一致性检验------------------------------
ans =
    0.0046

lamata =
    3.0055

ci =
    0.0028

cr =
    0.0048
-------------------- CR < 0.1 通过了一致性检验------------------------------
lamata =
    3.0015

ci =
  7.7104e-004

cr =
    0.0013
-------------------- CR < 0.1 通过了一致性检验------------------------------
lamata =
     3

ci =
     0

cr =
     0
-------------------- CR < 0.1 通过了一致性检验------------------------------
ocp =
    0.6327    0.1924    0.1749         0
    0.5949    0.0820    0.4286    0.4671
    0.2766    0.2364    0.4286    0.2955
    0.1285    0.6816    0.1429    0.2374
    3.0055    3.0015    3.0000         0
    0.0028    0.0008         0         0
    0.0048    0.0013         0    0.0033
>>
 
 
 

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-25 08:58 , Processed in 0.284524 second(s), 27 queries .

回顶部