精华内容
下载资源
问答
  • 讲解了如何利用Matlab求解层次分析法中判断矩阵的权向量,并进行一致性判断。
  • C#.net层次分析法中的判断矩阵构建,包括一致性检验,封装类后,调用很方便 C#.net层次分析法中的判断矩阵构建,包括一致性检验,封装类后,调用很方便
  • 构造判断矩阵的讲解(层次分析法)讲解判断矩阵和层次分析的关系。以及MATLAB的一些应用。
  • /** * 层次分析法 * @param $indexScore ---> 专家每项指标所打的评分 * @return $guiyi ---> 各指标的权重 */ public static function AHP($indexScore) { $arr_A = [];//矩阵A $n = count($indexScore); if ($n...

    private static $_RI = array(

    '1' => 0,

    '2' => 0,

    '3' => 0.51,

    '4' => 0.89,

    '5' => 1.12,

    '6' => 1.25,

    '7' => 1.35,

    '8' => 1.42,

    '9' => 1.46,

    '10' => 1.49,

    '11' => 1.52,

    '12' => 1.54

    );

    /**

    * 层次分析法

    * @param $indexScore ---> 专家对每项指标所打的评分

    * @return $guiyi ---> 各指标的权重

    */

    public static function AHP($indexScore)

    {

    $arr_A = [];//矩阵A

    $n = count($indexScore);

    if ($n <= 1) {

    return false;

    }

    foreach ($indexScore as $key => $val) {

    $arr_A[$key] = [];

    foreach ($indexScore as $v) {

    $arr_A[$key][] = $val / $v;

    }

    }

    $weight = [];

    foreach ($arr_A as $val) {

    $product = 1;

    foreach ($val as $v) {

    $product *= $v;

    }

    $weight[] = pow($product, 1 / $n);

    }

    $sum = array_sum($weight);

    $guiyi = [];//特征向量 ---> 指标权重

    if ($sum) {

    foreach ($weight as $val) {

    $guiyi[] = $val / $sum;

    }

    }

    //$eigenvalue ---> 最大特征根

    $eigenvalue = static::getEigenvalue($arr_A, $guiyi);

    $_RI = static::$_RI[$n];

    $_CI = ($eigenvalue - $n) / ($n - 1);

    $_CR = $_CI / $_RI;

    if ($_CR < 0.1) {

    return $guiyi;

    } else {

    return '打分不合理';

    }

    }

    /*求最大的特征值*/

    public static function getEigenvalue($data1, $data2)

    {

    $eigenvalue = [];

    foreach ($data1 as $key => $val) {

    $sum = 0;

    foreach ($val as $k => $v) {

    $sum += $v * $data2[$k];

    }

    $eigenvalue[] = $sum;

    }

    return array_sum($eigenvalue);

    }

    展开全文
  • 一、层次分析法原理 层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因子/准则的权重,进一步选择最优方案。该方法仍...
  • 层次分析法matlab源程序,用于一致性检验,特征值、特征向量计算
  • 本文对层次分析法判断矩阵不一致性的形成机理进行了探讨, 分析了构成判断误差及影响判断矩阵不满足一致性的两个重要因素:背景偏差(判断准则重心转移)和工具误差;...
  • 层次分析法 方案层判断矩阵阶数不同解决方案

    千次阅读 多人点赞 2020-07-21 10:58:11
      一个经典的层次分析法的结构图如下:   准则层的每个指标均与措施层的每个指标都具有联系和比重。在措施层的维度较多时,可能出现的情况是 准则层判断矩阵 费用 饮食 旅途 费用 1 3 5 饮食 1/3 1...

      一个经典的层次分析法的结构图如下:
    在这里插入图片描述

      准则层的每个指标均与措施层的每个指标都具有联系和比重。在措施层的维度较多时,可能出现的情况是
    在这里插入图片描述
    准则层判断矩阵

    费用饮食旅途
    费用135
    饮食1/311
    旅途1/511

    方案层判断矩阵分别为

    P1P2P3
    P111/31/3
    P2311
    P3311
    P4P5
    P411/5
    P551
    P6P7P8
    P6131
    P71/311
    P8111

      上面的情况是最极端的情况(措施层的指标仅与决策层的一个指标相关),而本文针对任何形式的方案层判断矩阵阶数不同。
      经典的层次分析法的代码假定方案层判断矩阵阶数相同,所以需要进行一定的修正。在了解代码的运算方式后发现,各个矩阵的计算是独立的,所以对其中一个矩阵进行加阶数(多余的位置全部加1),这样的处理并不影响其他矩阵的运算结果。
      使用的文档temp.txt的数据是

    1 3 5 
    1/3 1 1
    1/5 1 1 
    1 1/3 1/3
    3 1 1
    3 1 1
    1 5 1
    1/5 1 1
    1 1 1
    1 3 1 
    1/3 1 1
    1 1 1
    
    

    MATLAB代码块

    clc,clear
    fid=fopen('temp.txt','r');
    n1=3;n2=3;
    a=[];
    for i=1:n1
    tmp=str2num(fgetl(fid));
    a=[a;tmp]; %读准则层判断矩阵
    end
    for i=1:n1
    str1=char(['b',int2str(i),'=[];']);
    str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);
    eval(str1);
    for j=1:n2
    tmp=str2num(fgetl(fid));
    eval(str2); %读方案层的判断矩阵
    end
    end
    ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
    [x,y]=eig(a);
    lamda=max(diag(y));
    num=find(diag(y)==lamda);
    w0=x(:,num)/sum(x(:,num));
    cr0=(lamda-n1)/(n1-1)/ri(n1)
    for i=1:n1
    [x,y]=eig(eval(char(['b',int2str(i)])));
    lamda=max(diag(y));
    num=find(diag(y)==lamda);
    w1(:,i)=x(:,num)/sum(x(:,num));
    cr1(i)=(lamda-n2)/(n2-1)/ri(n2);
    end
    cr1, ts=w1*w0, cr=cr1*w0
    

      对于之前略过的二阶矩阵,可以最后单独求解。
      使用的文档temp_2.txt的数据是

    1 5 
    1/5 1
    

    MATLAB代码

    clc,clear
    fid=fopen('temp_2.txt','r');
    n1=2;n2=3;
    a=[];
    for i=1:n1
    tmp=str2num(fgetl(fid));
    a=[a;tmp]; %读准则层判断矩阵
    end
    ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
    [x,y]=eig(a);
    lamda=max(diag(y));
    num=find(diag(y)==lamda);
    w0=x(:,num)/sum(x(:,num));
    cr0=(lamda-n1)/(n1-1)/ri(n1)
    cr0
    

      简而言之,删改后的代码块可以仅计算一个矩阵对应的CR值、权重。

    展开全文
  • 然后用以下程序就好了:%层次分析法的matlab程序 %%%%diertimoxingyiclc,cleardisp('输入判断矩阵');% 在屏幕显示这句话A=input('A=');% 从屏幕接收判断矩阵[n,n]=size(A);% 计算A的维度,这里是方阵,这么写不太好x...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    先确定判断矩阵;

    然后用以下程序就好了:

    %层次分析法的matlab程序 %%%%diertimoxingyi

    clc,clear

    disp('输入判断矩阵');% 在屏幕显示这句话

    A=input('A=');% 从屏幕接收判断矩阵

    [n,n]=size(A);% 计算A的维度,这里是方阵,这么写不太好

    x=ones(n,100);% x为n行100列全1的矩阵

    y=ones(n,100);% y同x

    m=zeros(1,100);% m为1行100列全0的向量

    m(1)=max(x(:,1));% x第一列中最大的值赋给m的第一个分量

    y(:,1)=x(:,1);% x的第一列赋予y的第一列

    x(:,2)=A*y(:,1);% x的第二列为矩阵A*y(:,1)

    m(2)=max(x(:,2));% x第二列中最大的值赋给m的第二个分量

    y(:,2)=x(:,2)/m(2);% x的第二列除以m(2)后赋给y的第二列

    p=0.0001;i=2;k=abs(m(2)-m(1));% 初始化p,i,k为m(2)-m(1)的绝对值

    while k>p% 当k>p是执行循环体

    i=i+1;% i自加1

    x(:,i)=A*y(:,i-1);% x的第i列等于A*y的第i-1列

    m(i)=max(x(:,i));% m的第i个分量等于x第i列中最大的值

    y(:,i)=x(:,i)/m(i);% y的第i列等于x的第i列除以m的第i个分量

    k=abs(m(i)-m(i-1));% k等于m(i)-m(i-1)的绝对值

    end

    a=sum(y(:,i));% y的第i列的和赋予a

    w=y(:,i)/a;% y的第i列除以a

    t=m(i);% m的第i个分量赋给t

    disp('权向量:');disp(w);% 显示权向量w

    disp('最大特征值:');disp(t);% 显示最大特征值t

    %以下是一致性检验

    CI=(t-n)/(n-1);% t-维度再除以维度-1的值赋给CI

    RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];% 计算的标准

    CR=CI/RI(n);% 计算一致性

    if CR<0.10

    disp('此矩阵的一致性可以接受!');

    disp('CI=');disp(CI);

    disp('CR=');disp(CR);

    else

    disp('此矩阵的一致性不可以接受!');

    end

    展开全文
  • 层次分析法(AHP)

    千次阅读 2021-03-16 17:12:26
    1.问题的提出 日常生活中有很多的决策问题。...面临各种各样的方案,要进行比较、判断、评价、直至最后的决策。这个过程中都是一些 主观的因素,这些因素可能由于个人情况的不同,有相应不同的比重,所以这样主

    1.问题的提出

    日常生活中有很多的决策问题。决策是指在面临多种方案时需要依据一定的标准选择某一种方案。日常生活中有许多决策的问题。比如:

    • 买钢笔,一般要依据质量、颜色、实用性、价格、外形等方面的因素选择某一支钢笔。
    • 假期旅游,是去风光秀丽的苏州,还是去迷人的北戴河,或者是去山水甲天下的桂林,那一般会依据景色、费用、食宿条件、旅途等因素来算着去哪个地方。

    面临各种各样的方案,要进行比较、判断、评价、直至最后的决策。这个过程中都是一些 主观的因素,这些因素可能由于个人情况的不同,有相应不同的比重,所以这样主观因素给数学方法的解决带来了很多的不便。

    2.AHP

    简单介绍一下什么是AHP?

    层次分析法,简称AHP,它是一种 运筹学理论 。是指将与决策总是有关的元素分解目标、准则、方案 等层次,在此基础之上进行定性和定量分析的决策方法。

    “该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究”根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种 层次权重决策分析方法。”

    层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合的、系统的、层次化的分析方法。这种方法的特点就是在对复杂决策问题的本质、影响因素及其内在关系等进行深入研究的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。是对难以完全定量的复杂系统做出决策的模型和方法

    层次分析法的原理,层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终 使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定

    所以,AHP理论本质是通过把一个复杂的问题拆解为多个目标或准则,并且通过定性量化的方式为每个目标进行赋权的一个过程。

    简单来说AHP就是拆解加赋权,下面详细讲一下过程。
    层次分析法的步骤,运用层次分析法构造系统模型时,大体可以分为以下四个步骤:

    • 建立层次结构模型;
    • 构造判断(成对比较)矩阵;
    • 层次单排序及其一致性检验;
    • 层次总排序及其一致性检验;

    3.层次分析法的基本步骤

    将决策的目标、考虑的因素(决策准则)和决策对象按他们之间的相互关系分成最高层、中间层和最低层,绘制层次结构图。

    1.最高层(目标层):决策的目的、要解决的问题;
    2.中间层(准则层或指标层):考虑的因素、决策的准则;
    3.最低层(方案层):决策时的备选方案;

    3.1 建立层次结构模型

    在这里插入图片描述

    3.2 构造判断矩阵

    什么是判断矩阵?

    判断矩阵就是以参与指标计算的所有ferture组成的一个方阵,并且给出两两“比较量化值”。举例如下:

    对于A和B两个因子,1表示:A和B一样重要;3表示:A比B重要一些;5表示:A比B重要;7表示:A比B重要的多;9表示:A比B极其重要,具体标准如下图所示:

    因素i比因素j量化值
    同等重要1
    稍微重要3
    较强重要5
    强烈重要7
    极端重要9
    l两相邻判断的中间值2,4,6,8

    这其实就是一个典型的小组投票的过程,通过在方阵行列元素的两两比较,最终可以生成一个判断矩阵。比如对于有 A,B,C,D四个feature(分别代表钱,人员,时间,其它) 的判断矩阵如下图所示:

    ABCD
    A1.002.005.004.00
    B0.501.001.671.33
    C0.200.601.000.80
    D0.250.751.251.00

    3.3 层次单排序及一致性检验

    所谓一致性校验是指在进行投票的时候的公平性和一致性。
    比如你认为A比B重要,B比C重要,但是从最后的结果来看是C比A重要,这样即为不一致。
    一致性校验是通过计算校验系数来实现的,通常用CR来表示,小于0.1即表示一致性校验通过。

    CR包含一致性指标(CI)和随机一致性指标(RI)两部分,CR=CI/RI。

    CI和RI是一个固定值,与矩阵的阶数有关。
    一致性校验是通过计算校验系数来实现的,通常用CR来表示,小于0.1即表示一致性校验通过。

    1.模拟
    用EXCEL来进行计算(这里用三个参数来模拟
    在这里插入图片描述
    构建判断矩阵A(正交矩阵),用aij表示第i个因素相对于第j个因素的比较结果:

    在这里插入图片描述
    2.计算权重:
    将矩阵A的各行向量进行几何平均(方根法),然后进行归一化,即得到各评价指标权重和特征向量W:

    在这里插入图片描述

    3.一致性检验:

    在这里插入图片描述
    这里的n是指矩阵的维度

    • CI = 0,有完全的一致性;
    • CI 接近于0,有满意的一致性;
    • CI越大,不一致越严重;
      为了衡量 CI的大小,引入随机一致性指标 RI。方法为随机构造500个成对比较矩阵

    定义一致性比率:
    [公式]
    RI系数如下表格

    矩阵阶数34567891011
    RI0.51490.89311.11851.24941.34501.42001.46461.491.51

    一般,当一致性比率CR < 0.1 时,认为A的不一致程度在容许的范围之内,有满意的一致性,通过一致性检验,可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵A,对 其 加以调整。

    4.计算公式
    各列键入公式:

    按行相乘:F3=PRODUCT(C3:E3),下拉至F5。

    开n次方:G3=POWER(F3,1/3),下拉至G5;G6=SUM(G3:G5)。

    权重wi:H3=G3/G$6,下拉至H5。

    AWi:I3=C3H$3+D3H$4+E3*H$5,下拉至I5。

    AWi/wi:J3=I3/H3,下拉至J5;J6=AVERAGE(J3:J5)。

    CI:K3=(J6-3)/2。

    CR:L3=K3/0.5149

    5.进行计算

    在这里插入图片描述
    6.结束
    通过进行小组投票和自动计算,最终CR的值为0.03706,因此一致性检验通过

    权重Wi列即为每个feature的权重,因此最终我们可以得出该指标的计算公式为:

    target = A * 0.1047 + B * 0.6369 + c * 0.2582

    完美解决!

    4.总结

    大家这里或许会有个疑问:

    采用AHP的方法进行赋权,小组投票阶段是主观判断重要性的,所以是不是会带来误差?

    会,一定会。

    不过 策略一定是建立在业务之上的,撇开业务谈策略都是伪策略。

    采用AHP模型进行多因子赋权,

    需要对该业务有足够的了解,更需要对该target下的多个feature有 足够的了解 ,哪个对于target的贡献度是最大的。

    比如对于一个商品,什么样的商品是用户喜欢的?用户喜欢的商品有哪些feature?每个feature对于用户喜欢的贡献程度是什么样的?这些都是需要业务经验参与的。

    如果说科学的方法都有一个前提假设,那么AHP也有一个前提,就是 先了解业务,再谈策略

    以上,希望能帮助到大家。
    在这里插入图片描述

    本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!

    1.计算机网络----三次握手四次挥手
    2.梦想成真-----项目自我介绍
    3.你们要的设计模式来了
    4.震惊!来看《这份程序员面试手册》!!!
    5.一字一句教你面试“个人简介”
    6.接近30场面试分享
    7.你们要的免费书来了

    展开全文
  • 数学建模方法——层次分析法(AHP)

    万次阅读 多人点赞 2019-12-04 17:10:33
    0. 层次分析法简介 层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好...
  • 层次分析法.zip

    2019-08-07 11:20:35
    层次分析法matlab程序,很全,有判断矩阵构成、一致性检验,直接输入矩阵A,就可得到权重系数,很实用!
  • 第一讲:层次分析法 模型介绍 评价类问题可用打分解决 根据权重表格计算得分 一个小小的总结 一道引出层次分析法的例题 还记得这张权重表格吗? 直接问权重的弊端 分而治之的思想 层次分析...
  • 基于AHP层次分析法和模糊比较矩阵的绩效评估法.PDF
  • 基于AHP层次分析法和模糊比较矩阵的绩效评估法1.PDF
  • 数学建模:层次分析法实例以及代码

    万次阅读 多人点赞 2020-11-22 22:06:09
    构造判断矩阵成对比较阵)并赋值4.层次单排序(计算权向量)与检验(一致性检验)计算权向量一致性检验5.层次总排序(组合权向量)与检验(一致性检验)6.结果分析7.层次分析法的优缺点层次分析法的代码实现...
  • 层次分析法(AHP):一种层次权重决策分析方法,日常生活中比如:冰箱品牌的选购(考虑到价格,性能,售后等因素);旅游景点的选择(交通,居住环境,饮食等)。 解题步骤: (1).建立层次结构模型 (2).构造判断...
  • 模糊综合评价-----层次分析法AHP
  • 数学建模之层次分析法及其应用

    千次阅读 多人点赞 2020-07-28 23:57:16
    层次分析法在数学建模中是非常常见的,其原理、应用场景及实例本文里都有。希望能数学建模爱好者、挑战者提供一些帮助。如有不清楚或错误的地方还望指出。
  • 《java求矩阵的特征值和特征向量(ahp层次分析法计算权重)(附源代码)》由会员分享,可在线阅读,更多相关《java求矩阵的特征值和特征向量(ahp层次分析法计算权重)(附源代码)(5页珍藏版)》请在金锄头文库上搜索。...
  • 层次分析法

    2021-10-23 15:45:08
    层次分析法适用于评价类问题,可用于多个目标或者方案中选取最优目标或方案。通过引入多个判断标准,每一个标准都分配不同的权重和分数,最后相乘根据结果选取最优目标或方案。 二.步骤 1.三个问题(选取判断标准...
  • 压缩包内包含三个文件适合使用层次分析法一切应用 1、层次分析法的教学PPT 2、层次分析法的源程序 3、层次分析法成对比较矩阵
  • 为了改进由层次分析法中的主观判断矩阵所引起的评价结果准确度的不足,借助于粗糙集理论中的属性依赖度定义,构造出属性间相对依赖的客观判断矩阵,在此基础上将该客观判断矩阵层次分析法中的主观判断矩阵相结合,...
  • 备 注 我主要针对企业资金分配用层次分析法进行了实际操作,太阳镜产品质量评价中的层次分析是比较特殊的,它的方案层是准则层的子项,准则层的每个影响因素都各自应有相应的方案层影响因素。 报告中的矩阵图用...
  • 层次分析法判断矩阵求权值以及一致性检验程序function [w,CR]=mycom(A,m,RI)[x,lumda]=eig(A);r=abs(sum(lumda));n=find(r==max(r));max_lumda_A=lumda(n,n);max_x_A=x(:,n);w=A/sum(A);CR=(max_lumda_A-m)/(m-1)/RI...
  • 层次分析法(AHP)详细步骤

    万次阅读 多人点赞 2019-01-07 13:01:10
    构造判断矩阵 层次分析法中构造判断矩阵的方法是一致矩阵法,即:不把所有因素放在一起比较,而是两两相互比较此时采用相对尺度,以尽可能减少性质不同因素相互比较的困难,以提高准确度。 判断矩阵 aija_{ij}...
  • 利用层次分析法进行风险识别的基本思路是:把复杂的风险问题分解为各个组成因素,将这些因素按支配关系分组形成有序的递阶层次结构,通过两两比较判断的方式确定每一层次中各因素相对于上一层或最高层总目标的相对...
  • 层次分析法例题

    2021-04-26 16:06:55
    1、某物流企业需要采购一台设备,在采购设备时需要从功能、价格与可维护性三个角度进行评价,考虑应用层次分析法对3个不同品牌的设备进行综合分析评价和排序,从中选出能实现物流规划总目标的最优设备,其层次结构如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,711
精华内容 8,684
关键字:

层次分析法的成对比较矩阵

友情链接: 自动上网程序.zip