层次分析法算法及matlab和lingo求解一致性

目录

1.确定目标层、准则层和方案层:

2.构造出各层次中的所有判断矩阵[1]P105

3.lingo进行一致性检验[1]P105

参考文献

层次分析法matlab代码三种算法

一、相关函数

方法一:算数平均法

方法二:几何平均法

方法三:特征值法

1.一致性指标CI的计算


层次分析法处理问题类型:决策、评价、分析、预测等

AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因

素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重

要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大

地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把

复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次

结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体

现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避

决策者主观判断的缺点。

PS:在论文中用到层次分析法时一定要引入层次结构图。

整个过程流程图:

基本步骤

(1)建立层次分析结构模型(将有关因素自上而下分层(目标—准则或指标—方案或对象),上层受下层影响,而层内各因素基本上相对独立)

(2)构造成对比较阵(用成对比较法和1~9标度,构造各层对上一层某一准则的重要性进行两两比较,构造判断矩阵)

(3)计算权向量并作一致性检验(计算最大特征根和特征向量)

(4)计算组合权向量(并进行排序)

思维过程:(定性分析与定量分析结合起来)

(1)将决策问题分为3个层次;每层有若干元素,各层元素间的关系用相连的直线表示;

(2)通过相互比较确定各准则对目标的权重,及各方案对每一准则的权重;

将上述两组权重进行综合,确定各方案对目标的权重。

1.确定目标层、准则层和方案层:

  1. 目标层:一个元素,一般是问题的预定目标和理想结果
  2. 准则层:包含为了实现目标所设计的中间环节,可以由若干个层次组成,包括所需考虑的准则和子准则
  3. 方案层:为实现目标可供选择的各种措施和决策方案等

三个问题:

(1)评价的目标是什么/span>

(2)为了达到这个目标有几种可选的方案/span>

(3)评价的准则(指标)是什么/span>

2.构造出各层次中的所有判断矩阵[1]P105

重要程度表格:

标度(定量结果)

含义(定性结果)

1

两个因素相比,具有同样重要性

3

一个因素比另一个因素稍微重要

5

一个因素比另一个因素明显重要

7

一个因素比另一个因素强烈重要

9

一个因素比另一个因素极端重要

2,4,6,8

两相邻判断的中值

倒数

若因素i与因素j的重要性之比为aij,那么因素j与因素i重要性之比为aij=1/aij

如果写作,建议翻看《lingo培训基础教程》第P176~P179

如何科学地设定权重相对权重向量的确定)

对指标的重要性进行两两比较,构造判断矩阵,从而求出权重。矩阵中aij的意义是第i个指标相对于第j个指标的重要程度。

设想把一块大石头Z分成n个小块c1,c2,…,cn,其重量分别为w1,w2,…,wn,则将n块小石头作两两比较,记ci,cj的相对重量为

要注意比较的逻辑关系,如:A<B,B=C,那么C>A

3.一致性检验[1]P105

(1)判断矩阵A对应最大特征值λmax的特征向量W,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。

归一化处理方法:

对正向序列x1,x2,x3…,xn进行变换,

则新序列y1,y2,…,yn∈[0,1]且无量纲,并且显然有

若A的最大特征值λmax对应的特征向量W=[w1,w2,…,wn],则aij=wi/wj,任意i,j=1,2,…,n,即(也为正互反矩阵)

(2)检验过程

①计算一致性指标CI,CI定义如下式所示:

②查找相应的平均随机一致性指标RI。对于n=1,…,9,Saay给出了RI的值,如下表:

不同n值对应的RI值

n

1

2

3

4

5

6

7

8

9

RI

0

0

0.58

0.9

1.12

1.24

1.32

1.41

1.45

注:在实际运用中,n很少超过10,如果指标的个数大于10,则可以考虑建立二级指标体系。

如上表所示,RI值是通过统计计算而得,用随机方法构造1000个样本矩阵:随机从1~9及其倒数中抽取数字构造正互反矩阵,求得最大特征根的平均值λmax’,并定义:

补充:当n的阶数较大也就是指标较多时,

不同n值对应的RI值

n

1

2

3

4

5

6

7

8

9

RI

0

0

0.52

0.89

1.12

1.26

1.36

1.41

1.46

10

11

12

13

14

15

1.49

1.52

1.54

1.56

1.58

1.59

注:在实际运用中,n很少超过10,如果指标的个数大于10,则可以考虑建立二级指标体系。

如上表所示,RI值是通过统计计算而得,用随机方法构造1000个样本矩阵:随机从1~9及其倒数中抽取数字构造正互反矩阵,求得最大特征根的平均值λmax’,并定义:

③计算一致性比例CR,CR定义如下式所示:

当CR<0.1时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵做适当修正。

在判断矩阵具有完全一致性的条件下,我们可以通过解特征值问题 

A*W=λmax*W

例题:lingo求解最大特征根,进行一致性检验[2]P175

注:矩阵的数字不能用分数表示

求解结果

利用lingo软件,求得矩阵A的最大特征值为λmax=4.0145,求得的权重向量为

w=[0.0882,0.1570,0.22720,0.4829]T(转置)        

参考文献

  1. 《matlab数学建模经典实战案例分析》余胜威
  2. 《lingo基础培训教程》李汉龙

层次分析法matlab代码三种算法

一、相关函数

  1. size函数

size(A)函数是用来求矩阵大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数。

如:

A=[1,2,3;4,5,6]

B=[1,2,3,4,5,6]

size(A)

ans=2   3   %表示2行3列

或者[r,c]=size(A)得出r=2,c=3

%将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c

注意区分矩阵和行向量

2.repmat函数

B=repmat(A,m,n),即把A作为B的函数,B由m行×n列个A平铺而成

3.矩阵的运算

在matlab的矩阵运算中,“*”和“/”代表矩阵之间的乘法和除法(A/B=A*inv(B))

两个形状相同的矩阵对应元素之间的乘除法需要用“.*”“./”

矩阵中每个元素和常数相乘或相除两种方法都可以使用

矩阵的加法就是把对应的元素相加,矩阵的减法就是把对应的元素相减

注意:A^2表示A*A,而A.^2表示把矩阵中的元素进行平方

4.求特征值和特征向量

函数eig(A)

两种常见用法:

(1)A=[1,2,3;4,5,6;7,8,9]; E=eig(A)

求A的全部特征值,构成向量E

(2)[V,D]=eig(A)

求A的全部特征值,构成对角矩阵D,并求A的特征向量构成V的列向量

V的每一列都是D中与之相同列的特征值的特征向量

5.输出和输入函数

disp(a)屏幕输出函数,相当于c语言中的printf函数(后面的分 有无都可)

input(a)输入函数

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月12日
下一篇 2022年8月12日

相关推荐