精华内容
下载资源
问答
  • 层次分析法计算过程的程序实现代码package e_5_28;/** author 曾绍涛* time 2009-5-29* function 层次分析法的程序计算*/import java.util.HashMap;class Caltest1{static int n;//矩阵的阶数double cal[][];//...

    做毕设时因为恐惧层次分析法的计算量,所以通过程序实现了.

    层次分析法计算过程的程序化实现代码

    package e_5_28;

    /*

    * author 曾绍涛

    * time 2009-5-29

    * function 层次分析法的程序化计算

    */

    import java.util.HashMap;

    class Caltest1

    {

    static int n;//矩阵的阶数

    double cal[][];//层次比较矩阵,归一化后的

    double cal1[][];//层次比较矩阵

    static HashMap hm=null;//将12阶的成对比较矩阵的平均随机一致性指标值保存在哈希映射表里

    //设置平均随机一致性指标值

    public static void setHm()

    {

    hm=new HashMap();hm.put(1, 0);hm.put(2, 0);

    hm.put(3, 0.58);hm.put(4, 0.89);hm.put(5, 1.12);

    hm.put(6, 1.24);hm.put(7, 1.32);hm.put(8, 1.41);

    hm.put(9, 1.45);hm.put(10, 1.49);hm.put(11, 1.52);

    hm.put(12, 1.54);

    }

    public int getN(){

    return n;

    }

    public void setN(int n){

    this.n = n;

    }

    //原始成对比较矩阵列向量的归一化

    public void colvectortoone(double arr[])//列向量的归一化

    {

    arr=new double[n];

    System.out.println("*****************每列求加和开始*****************");

    for(int j=0;j

    {

    for(int i=0;i

    {

    arr[j]+=cal[i][j];//每列求加和

    }

    }

    System.out.println("*****************每列求加和完毕*****************");

    System.out.println("*****************打印行值和进行验证开始*****************");

    for(int i=0;i

    {

    System.out.println(arr[i]);//打印行值和进行验证

    }

    System.out.println("*****************打印行值和进行验证完毕*****************");

    System.out.println("*****************列向量归一化开始*****************");

    for(int j=0;j

    {

    for(int i=0;i

    {

    cal[i][j]=cal[i][j]/arr[j];//列向量归一化

    }

    }

    System.out.println("*****************列向量归一化完毕*****************");

    System.out.println("*****************打印归一化后的数组开始*****************");

    for(int j=0;j

    {

    for(int i=0;i

    {

    System.out.print(cal[j][i]+"\t");//列向量归一化

    }

    System.out.println();

    }

    System.out.println("*****************打印归一化后的数组结束*****************");

    }

    //得到归一化矩阵各行的行和

    public double [] rowsum(double arr1[])//按行求和,并返回求得的数组

    {

    arr1=new double[n];

    for(int j=0;j

    {

    for(int i=0;i

    {

    arr1[j]+=cal[j][i];//每行求加和

    }

    }

    System.out.println("*****************行和打印验证开始*****************");

    for(int j=0;j

    {

    System.out.println(arr1[j]);

    }

    System.out.println("*****************行和打印验证结束*****************");

    //以下对arr1[]进行归一化

    double sum=0;

    for(int i=0;i

    {

    sum+=arr1[i];

    }

    System.out.println("*****************向量归一化计算开始*****************");

    for(int i=0;i

    {

    arr1[i]=arr1[i]/sum;

    }

    System.out.println("*****************向量归一化计算结束*****************");

    System.out.println("*****************打印权重开始*****************");

    for(int j=0;j

    {

    System.out.println(arr1[j]);

    }

    System.out.println("*****************打印权重结束*****************");

    return arr1;

    }

    //求最大特征值

    public double getnamda(double arr1[],double arr2[])

    {

    arr2=new double[n];

    for(int j=0;j

    {

    for(int i=0;i

    {

    arr2[j]+=cal1[j][i]*arr1[i];//得到A*w

    }

    }

    System.out.println("*****************打印A*w开始*****************");

    for(int i=0;i

    {

    System.out.println(arr2[i]);//打印权重向量

    }

    System.out.println("*****************打印A*w结束*****************");

    double L=0;//5*namda

    for(int i=0;i

    {

    L+=arr2[i]/arr1[i];

    }

    double namda=L/n;

    return namda;

    }

    展开全文
  • 层次分析法

    2021-01-16 10:17:54
    1、评价类问题 ①评价目标 ②可选方案 ③评价准则(由背景材料及网上参考资料结合而来) 2、分析步骤 2.1 画图 分析系统中各因素之间的关系,建立系统的递阶层次结构 ...①将判断矩阵按照列归一化

    1、评价类问题

    ①评价目标
    ②可选方案
    ③评价准则(由背景材料及网上参考资料结合而来)

    2、分析步骤

    2.1 画图

    分析系统中各因素之间的关系,建立系统的递阶层次结构
    在这里插入图片描述
    从上到下一次为目标层、准则层、方案层。

    2.2 构造判断矩阵

    正互反矩阵(判断矩阵)
    ①aij:与指标j相比,i的重要程度。
    ②aij>0且满足aijaji=1
    一致矩阵
    ①aik=aij
    ajk。
    ②各行各列成倍数关系(R(A)=1)
    在这里插入图片描述
    在这里插入图片描述

    2.3 一致性检验

    在这里插入图片描述

    2.4 权重的计算

    2.4.1 算术平均法求权重

    ①将判断矩阵按照列归一化.(每个元素/所在列和)
    ②将归一化的各列相加(按行求和)
    ③将相加后得到的向量中每个元素除n即得权重向量
    数学描述:
    在这里插入图片描述

    2.4.2 几何平均法

    ①将A的元素按照行相乘得到一个新的列向量
    ②将新的向量的每个分量开n次方
    ③对改列向量进行归一化即可得权重向量
    数学描述:
    在这里插入图片描述

    2.4.3 特征值法求权重

    引理:一致矩阵有一个特征值为n,其余全为0。
    在这里插入图片描述
    ①求出矩阵A的最大特征值以及其对应的特征向量。
    ②对求出的特征向量进行归一化即可得权重。

    展开全文
  • 层次分析法 图片来自于:哔哩哔哩 数学建模学习交流 公开课PPT 若想了解更多,可以关注原...计算权重的时候,一定要将矩阵 归一化 ! 一致矩阵可以记为一秩矩阵因为各行各列成比例,因而 rank(A)=1rank(A)=1rank...

    层次分析法


    图片来自于:哔哩哔哩 数学建模学习交流 公开课PPT
    若想了解更多,可以关注原作者,其视频质量极高,免费且通俗易懂,本文仅为个人观看之后所做笔记。


    层次分析法模型:

    1.构建判断矩阵AA
    2.利用判断矩阵计算权重 ω\omega
    在这里插入图片描述
    计算权重的时候,一定要将矩阵 归一化
    在这里插入图片描述
    在这里插入图片描述

    一致矩阵可以记为一秩矩阵因为各行各列成比例,因而 rank(A)=1rank(A)=1,

    在这里插入图片描述
    一致矩阵的最大特征值λmax=n\lambda_{max}=n,非一致矩阵的最大特征值则必然大于nn

    利用这个特点,使用两者最大特征值的差值判断非一致矩阵的不一致程度,也称一致性指标 CICI

    当其足够小的时候,我们认为这个矩阵可以接受~

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    既有算数平均法,自然也有几何平均法特征值法

    一般只使用特征值法,

    在这里插入图片描述

    其实算出特征值和特征向量,基本就大功告成了。

    在这里插入图片描述

    最后一下作图,使用层次分析法的时候,层次结构图将是MCM一大重要加分项。
    在这里插入图片描述

    可以使用office自带的smartArt绘制,或者使用mindmaster思维导图绘制:
    在这里插入图片描述

    展开全文
  • 层次聚类分析Matlab编码计算”01—AHP层次决策分析计算函数求判断矩阵最大特征根和归一化特征向量:function [maxEigVal,w] = maxEigValVec(A)%求最大特征值及对应的归一化特征向量%A为判断矩阵%maxEigval:最大...

    层次聚类分析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

    展开全文
  • 【数模】 层次分析法

    千次阅读 2018-04-26 20:07:48
    层次分析法关于层次分析法详解网上有很多,在此不多赘述,只记录一般过程。1.建立模型目标:想要达到的目的准则:影响目的的因素可供选择物:备选方案2.计算第二层 因素权重 (1)构造判断矩阵 根据以上准则对因素...
  • 数学建模——层次分析法

    千次阅读 2017-04-09 16:17:57
    建立目标层次模型矩阵为A= ■(1&3&5@1/3&1&2@1/5&1/2&1)(综合情况和能力知识仪态的矩阵关系),得到λmax=3.004,相应的特征向量为■(0.9281@0.3288@0.1714)归一化结果为■(0.6498@0.2302@0.1200)。 B1=■(1&1/4&1/3...
  • 层次分析法(评价问题) 一般的层次分析方式 本质:层次分析就是给两两比较的指标进行量化比较实现权重的大小(专家打分) 1.确定评价的标准,目标,可选的方案 层次结构图 目标层:最终目标 准则层:各项指标 方案层:哪些...
  • 针对传统攻击树模型在计算攻击事件发生概率时未考虑各安全属性权值的不足,设计了一种基于层次分析法的攻击树模型。在计算攻击事件发生概率时,首先给每个叶节点赋予不同安全属性;然后根据攻击者意图和系统特征比较...
  • 程序一: %对A矩阵一致性检验 A=[1 3 5 7; 1/3 1 3 5; 1/5 1/3 1 2;1/7 1/5 1/2 1 ] [X,Y]=eig(A) eigenvalue=diag(Y)%特征值 ...lamda=max(eigenvalue)%矩阵最大特征值 ...W=X(:,1)/sum(X(:,1))%归一化特征向量
  • 目录简介层次分析法的缺陷解决办法统一指标类型标准步骤1. 将原始矩阵正向化2. 正向化矩阵标准化3. 计算得分并归一化 简介 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各...
  • 层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案。同时层次分析法也难以处理已经存在评价数据的问题。而TOPSIS法(优劣解距离法)则没有这些问题。 TOPSIS法(优劣解距离法)步骤: 1.原始...
  • 【数学建模】熵权

    2020-09-17 21:03:31
    问题的提出:层次分析法主观性太强 变异程度是方差(变化不大 如何衡量信息量的大小(为什么是方差? 信息熵: 熵权法的步骤 第一步:判断矩阵中是否有负数 第二部:计算概率(感觉有点问题,但大家都这样 第三...
  • 模型2——TOPSIS

    2020-08-13 10:23:59
    目录1.解决问题2.步骤2.1 将原始矩阵正向2.1.1 极...解决层次分析法中已知原始数据评判优劣的方法 2.步骤 2.1 将原始矩阵正向 2.1.1 极小型转极大型 2.1.2 中间型转极大型 2.1.3 区间型转化为极大型 2.2 正向
  • 层次分析法的局限性: 问题和解决方案: 所以最终评分公式为: 指标正向化,得到正向化矩阵: 正向化矩阵标准化,消除量纲: 计算得分并归一化: 步骤: ...
  • 层次分析法的一些局限性 一个小例子 一个很简单的想法 该想法的不合理之处 一个比较好的想法 一个要说明的问题 三点解释 拓展问题:增加指标个数 统一指标类型 标准处理 标准处理的计算公式 如何计算...
  • Tposis法学习笔记适用的范围操作方法第一步 > 将原始矩阵正向第二步>...同为评价类模型的层次分析法不适用于多个决策变量,并且标度比较模糊,在指标为精确的数据时不能反映出数据的特征。 操作方法
  • 层次分析法的局限性:问题和解决方案:所以最终评分公式为:指标正向化,得到正向化矩阵:正向化矩阵标准化,消除量纲:计算得分并归一化:步骤:统一指标类型为极大型指标常见四种指标: 极大型(效益型)指标 极...
  • 文章目录TOPSIS法介绍层次分析法的一些局限性[引出本文]例子:单个指标的一种计算评分方式多个指标的完整处理步骤将原始矩阵正向化正向化矩阵标准化计算得分并归一化(参考例子)扩展-带权重的TOPSIS总结 ...
  • 层次分析法——没有数据 Topsis法结合熵权法——有数据 灰色关联分析——有数据 思路 1.对指标进行正向。(在Topsis法中有讲) 2.对正向后的矩阵进行预处理(在关联分析用于系统评价中有讲),得到矩阵:...
  • 文章目录一、Topsis法(优劣解距离法)二、介绍三、介绍四、步骤 一、Topsis法(优劣解距离法) TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价...由于层次分析法有限制
  • TOPSIS需要准确,还需要分别乘以各指标对应的权重,我们可以使用层次分析法来获取指标的权重,但是层次分析法太过于主观,所以这里我想介绍一下新学的方法——熵权法,来对TOPSIS进行一个权重的附加。 1.熵权法的...
  • 层次分析法最大的缺点就是判断矩阵的确定依赖于专家,如果专家的判断存在主观性的话,会对结果产生很大的影响,而熵权法是一种客观赋权的方法,依据的原理是指标的变异程度越小,所反映的信息量也越少,其对应的权值...
  • 数学建模-多属性决策

    千次阅读 2019-05-07 10:56:32
    WAA 实例 量纲不一致 需要归一化 属性为效益型则 成本型 归一化前决策矩阵 计算属性权重 使用 层次分析法 根据权重算出企业得分 ...
  • 为有效地评估电梯运行状态的安全性,提出一种综合...采用劣化度分析法对指标参数进行归一化,根据隶属度函数得到评估矩阵。以南京市某电梯为例,利用模糊综合评价法,对电梯运行状态进行评估,结果为"一般",与实际情况相符。
  • 数学建模基础学习笔记(乱记)(一)层次分析法(AHP)1、权重打分方案引入二、评价类问题层次分析法一致矩阵一致性检验权重的求解归一化(1)一致矩阵情况(2)判断矩阵情况特征值法求权重(三)总结 (一)层次...
  • 算法学习Task3

    2019-12-12 01:34:27
    层次分析法 递阶层次结构分析 判断矩阵的生成 判断矩阵最大特征值和对应特征向量的证明 1、理想矩阵(满足一致性的正互反矩阵)只有一个非零特征值,先证它的秩为1,然后他只有一个非零特征值,其余特征值均为0,...
  • 2属性权重矩阵,用层次分析法计算属性权重 3加权算术平均算子:归一化后属性值*权重并求和 第四讲 灰色预测模型 通过少量得,不完全得信息做出预测 样本小回造成较大误差使得目标失效,灰色预测模型需要建模信...
  • 对各个属性构造成对比较矩阵计算属性权重(层次分析法)4. 计算每个公司的WAA五、MATLAB代码六、实际案例七、论文案例片段(待完善) 多属性决策模型主要针对数学建模问题中的一些小的子问题进行求解,如果想直接...
  • 首先运用层次分析法确定各级指标的权重,并建立相对于结果的评语集;然后通过调查法得到模糊综合评价矩阵,进而将各级指标的权重值与相对应的评价矩阵进行关系合成,得到各级评价向量;再将各向量做归一化处理得到指标...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
热门标签
关键字:

层次分析法矩阵归一化