• 层次分析法


    简称AHP,基础模型之一。

    主要用于解决评价类问题(例如:选择那种方案最好、哪位运动员或者员工表现更优秀)。

    评价类问题可以用打分解决,打分即填充下面这张表格

     同颜色和为1,表示 针对某一因素所占权重

    评价类问题(确定评价指标、形成评价体系)

    ①评价目标是什么?

    ②为了达到这个目的有哪几种可选方案

    ③评价准则或指标是什么?(根据什么评价好坏)

    一般评价指标可以根据 背景材料、常识、网上搜集到的参考资料 进行结合

    虫部落---快搜(一个搜索网站): 

    虫部落快搜 - 搜索快人一步快搜!虫部落全网独家首发出品!为你聚合Google,百度,必应等国内外综合搜索和学术,资源,专业领域知识等垂直搜索。精准搜索,便捷交互!是你的网络搜索第一站!https://search.chongbuluo.com/分而治之的填权重,两个两个指标进行比较,最终根据比较结果推算权重

     

     

    一致性检验:

    原理:检验我们构造的判断矩阵和一致矩阵是否有太大的差别 

    一致性检验通过后,怎样计算出权重?

    无论用那一列计算结果都是一样的,因为一致矩阵各列成比例(判断矩阵有可能不一致)所以如果是判断矩阵要算所有列的归一化处理结果。之后,选择方法的出权重

    方法一:算术平均求权重(可放在论文中)

     方法二:几何平均法

    方法三:特征值法求权重(使用最多)

    在比赛中最好使用三种算法都做一遍,然后在论文中加上下面这段话:

     最后将权重填入表格,计算得分。

    计算时可以使用Excel表格计算,计算时想通过拖动来计算,需要锁定公式中的指标权重(比如要锁定B3,直接在公式中这么写:$B$3,即可)

    总结(层次分析法步骤):

    2.对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(即判断矩阵)

     3.由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)

    CR>0.1时,往一致矩阵上调整(按照一致矩阵各行成倍数关系)

    4.计算各层元素对系统目标的合成权重,并进行排序


    代码实现(MATLAB):

    1. clear;clc
    2. disp('请输入判断矩阵A: ')
    3. A = input('判断矩阵A=') % 输入判断矩阵
    4. %% 求权重
    5. % 方法1:算术平均法求权重
    6. %第一步:将判断矩阵按列归一化(每个元素除以其所在列的和)
    7. Sum_A = sum(A,1) %矩阵按列求和形成一行向量
    8. n = size(A,1) %方阵的行(列)数
    9. SUM_A = repmat(Sum_A,n,1) %repeat matrix的缩写,维度1表列,即将Sum_A重复n行
    10. Stand_A = A ./ SUM_A %方阵每个元素除以各列和
    11. %第二步: 将归一化的各列相加(按行求和)
    12. sum(Stand_A,2)
    13. %第三步: 将相加后得的向量中每个元素除以n即可得权重向量
    14. disp('算术平均法求权重的结果为:');
    15. disp(sum(Stand_A,2) / n)
    16. % 方法2:几何平均法求权重
    17. % 第一步:将A的元素按照行相乘得到一个新的列向量
    18. Prduct_A = prod(A,2) % prod函数和sum函数类似,分别用于乘和加,dim=2表维度是行
    19. % 第二步:将新的向量的每个分量开n次方
    20. Prduct_n_A = Prduct_A .^ (1/n)
    21. % 第三步:对该列向量进行归一化即可得到权重向量
    22. disp('几何平均法求权重的结果为:');
    23. disp(Prduct_n_A ./ sum(Prduct_n_A)) % 将这个列向量中的每一个元素除以这一个向量的和即可
    24. % 方法3:特征值法求权重
    25. %第一步:求出矩阵A的最大特征值以及其对应的特征向量
    26. [V,D] = eig(A) %V是特征向量, D是由特征值构成的对角矩阵
    27. Max_eig = max(D(:))
    28. [r,c] = find(D == Max_eig , 1) % 寻D中首个与最大特征值相等的元素的位置记录其行和列。
    29. % 第二步:对求出的特征向量进行归一化即可得到我们的权重
    30. disp('特征值法求权重的结果为:');
    31. disp( V(:,c) ./ sum(V(:,c)) )
    32. %% 计算一致性比例CR
    33. CI = (Max_eig - n) / (n-1);
    34. 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];%注:RI最多n=15
    35. CR=CI/RI(n);
    36. disp('一致性指标CI=');disp(CI);
    37. disp('一致性比例CR=');disp(CR);
    38. if CR<0.10
    39. disp('因为CR < 0.10,所以该判断矩阵A的一致性可以接受!');
    40. else
    41. disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
    42. end

  • 相关阅读:
    基于Java+SpringBoot+Mybatis+Vue+ElementUi的校园闲置物品交易
    修改this.$notify通知的样式
    百度SEO优化技巧大全(轻松掌握优化技巧)
    go自定义端口监听停用-------解决端口被占用的问题
    Could not resolve all files for configuration ‘:app:debugRuntimeClasspath‘
    程序员进阶之路,该怎么走?
    leetcode283移动零
    MySQL数据的ONLINE DDL操作测试
    C语言 拼接字符串
    U盘提示格式化怎么搞定?本文有5种方法(内含教程)
  • 原文地址:https://blog.csdn.net/qq_54809548/article/details/125488006