层次分析法实现代码(MATLAB)
层次分析法判断矩阵求权值以及一致性检验程序
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;end本matlab程序用于层次分析法中计算判断矩阵给出的权值已经进行一致性检验。
其中A为判断矩阵,不同的标度和评定A将不同。
m为A的维数RI为判断矩阵的平均随机一致性指标:根据m的不同值不同。
当CR<0.1时符合一致性检验,判断矩阵构造合理。
下面是层次分析法的简介,以及判断矩阵构造方法。
一.层次分析法的含义层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.Saaty)正式提出。
它是一种定性和定量相结合的、系统化、层次化的分析方法。
由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。
它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。
二.层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。
(1)层次分析法的原理层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。
这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,以及各子目标对上一层目标而言重要程度的相对量度。
层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。
使用Matlab程序实现层次分析法(AHP)的简捷算法
使用Matlab程序实现层次分析法(AHP)的简捷算法作者:于晶来源:《科技风》2016年第16期摘要:层次分析法简便易懂,可操作性和实用性强,但是构造判断矩阵往往不容易,计算判断矩阵的特征值特别繁琐且易出错,得到的一致性检验不易调整,这些都给使用层次分析法带来困难,以往使用办公软件电子表格(Excel)的方法计算单层次排序和总层次排序,这种方法使得计算和一致性检验变得容易,文本使用Matlab程序使得计算变得更容易,也使得层次分析法在多个领域得到推广和应用。
关键词:层次分析法;Excel;matlab1 层次分析法(AHP法)的原理和解决思路层次分析法是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。
它的原理是模拟人的决策过程,具有思路清晰、方法简便、适用面广、系统性强等特点。
是解决多目标、多准则、多层次复杂问题决策或者大型工程风险分析的有力工具。
层次分析法解决问题的思路就是用下一次因素的相对排序求得上一次因素的相对排序。
按照因素之间的相互影响和隶属关系将各层次因素聚类组合,形成一个递进有序的层次结构模型。
2 层次分析法的应用难点2.1合适的判断矩阵构造不易模型确定后,按照模型层次结构和模型的各因素的相对重要性,综合专家群体咨询意见,采用标度法[ 1 ],从数字1/9一9中选取恰当值,构造各层的判断矩阵,并使之尽量符合一致性检验,这一步成为问题的关键。
但实际上系统越复杂,判定矩阵的阶数就会越高,计算就会越困难。
2.2计算量大,步骤繁琐层次分析法首先要求的就是判断矩阵的最大特征值?姿max,及其正规化的特征向量w,向量w的分量wi是相应因素的单层次权值,这部分计算理论上基于线性代数知识,不用计算机也可以将其计算出来。
但实际上,当矩阵的阶数高于4阶时,人工计算就变得相当困难且易出错,如使用计算机计算,就容易得多,常用的方法有Basic语言,电子表格Excel等方法。
但计算量都有待改进。
(完整版)层次分析法及matlab程序
层次分析法建模层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论。
吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。
传统的常用的研究自然科学和社会科学的方法有:机理分析方法:利用经典的数学工具分析观察的因果关系;统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、社会现象)现象的规律。
基本内容:(1)多目标决策问题举例AHP建模方法(2)AHP建模方法基本步骤(3)AHP建模方法基本算法(3)AHP建模方法理论算法应用的若干问题。
参考书:1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社2、程理民等,运筹学模型与方法教程,(第10章),清华大学出版社3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社一、问题举例:A.大学毕业生就业选择问题获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。
就毕业生来说选择单位的标准和要求是多方面的,例如:①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长);②工作收入较好(待遇好);③生活环境好(大城市、气候等工作条件等);④单位名声好(声誉-Reputation);⑤工作环境好(人际关系和谐等)⑥发展晋升(promote, promotion)机会多(如新单位或单位发展有后劲)等。
问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?工作选择贡献收入发展声誉工作环境生活环境B.假期旅游地点选择暑假有3个旅游胜地可供选择。
基于MATLAB的AHP实现
目录中英文摘要 (2)1.层次分析法 (3)1.1 概述 (3)1.2 AHP的基本原理和步骤[6] (3)1.2.1 递阶层次结构原理 (3)1.2.2 标度原理 (4)1.2.3 排序原理 (4)1.3 AHP的层次总排序及其一致性检验 (6)1.3.1 层次总排序 (6)1.3.2 AHP的一致性检验 (7)2.MATLAB的基本内容 (7)MATLAB矩阵 (8)MATLAB矩阵的建立 (8)矩阵的特征值与特征向量 (8)2.2 MATLAB的M文件 (9)3.基于MATLAB的AHP实现 (10)3.1 AHP的MATLAB的计算流程框图 (10)3.2 平均随机一致性指标的MATLAB实现 (10)3.3 AHP各环节的MATLAB实现 (12)3.3.1 特征向量及其归一化的MATLAB实现 (12)3.3.2 一致性检验及单排序的MATLAB实现 (13)3.3.3 一致性检验及总排序的MATLAB实现 (14)选择最优排序 (15)4.基于MATLAB的AHP应用 (16)4.1 挑选合适工作问题 (16)5.结束语 (26)参考文献 (27)致谢 (28)基于MATLAB的AHP实现摘要:在实际统计分析工作中,常会遇到多指标的综合评价和多目标决策的问题。
许多人利用层次分析法将复杂的问题分解为假设干层次和假设干因素,在各因素之间进行简单的比较和计算,就可以得出不同方案的权重,为最正确方案的选择提供依据且使问题简单化。
但是,受计算条件的限制,不能及时给出结果,从而影响现场决策。
MATLAB是当今最优秀的科技应用软件之一,利用MA TLAB对层次分析法的判断、分析和计算过程进行处理后,为决策者提供方便友好的对话界面。
只要决策者在MATLAB软件中输入自己的层次结构方案和两两比照的判断矩阵后能迅速得出相应的结果,为解决实际问题提供一个快捷的方法。
从而提高人们的决策效率,同时也为科技工作者使用层次分析法提供一种新思路。
Matlab求解层次分析法程序代码【求解步骤+代码】
层次分析法1)建立层次结构模型:(2)构造判断矩阵判断矩阵()ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法):(3)单层排序及一致性检验1、单层排序求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此权重的大小,便可确定该层因素的排序。
2、一致性检验取一致性指标max 1nCI n λ-=-,(n 为A 的阶数)令CR RI=,若0.1CR <,则认为A 具有一致性。
否则,需要对A 进行调整,直到具有满意的一致性为止。
(4)层次总排序及一致性检验假定准则层12,,,n C C C 排序完成,其权重分别为12,,,n a a a ,方案层P 包含m 个方案:12,,,m P P P 。
其相对于上一层的()1,2,,j C j n =对方案层P 中的m 个方案进行单层排序,其排序权重记为12,,,j j mj b b b ()1,2,,j n =,则方案层P 中第i 个方案Pi 的总排序权重为1nj ijj a b=∑,见下表:从而确定层的排序。
例:纯文本文件txt3.txt 中的数据格式如下:1 1 1 4 1 1/2 1 1 2 4 1 1/2 1 1/2 1 53 1/2 1/4 1/4 1/5 1 1/3 1/3 1 1 1/3 3 1 12 2 23 3 11 1/4 1/24 1 32 1/3 11 1/4 1/54 1 1/25 2 11 3 1/31/3 1 1/73 7 11 1/3 53 1 71/5 1/7 11 1 71 1 71/7 1/7 11 7 91/7 1 11/9 1 1matlab程序:>> fid=fopen('txt3.txt','r');n1=6;n2=3;a=[];for i=1:n1tmp=str2num(fgetl(fid));a=[a;tmp]; %读准则层判断矩阵endfor i=1:n1str1=char(['b',int2str(i),'=[];']);str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1);for j=1:n2tmp=str2num(fgetl(fid));eval(str2); %读方案层的判断矩阵endendri=[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);endcr1, ts=w1*w0, cr=cr1*w0层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法实例与步骤结合一个具体例子,说明层次分析法的基本步骤和要点。
层次分析法报告
=eig()函数其判断矩阵的特征值,利用 lamda=max(diag(y)) 求矩阵的最 大特征根,并进行一致性检验。在第一个案例当中,判断矩阵 B1、B2、B3、 C1、C2、C3、C4、C 5、C6 均为 2 维方阵,绝对符合一致性检验,所以在程序中 为节省空间,不对其进行一致性检验。最后求出方案层的总权重并输出。
if CR<0.10
disp(’C 矩阵的一致性可以接受!’);
1/3 2 1 1 3 3 5 3 5 5 5 2 4 1/2 1/3 1 4 1/2 1 6 3 3 1 1/3 1/4 1/3 1/4 1 2 1/2 2 2 1/2
1/3 1/2 1/3 1/5 2 1 1 2 1 3 1
1/2 1 1/3 1/5 1 2 1/2 1 2 2 1/2 1/2 1/4 1/6 1/5 1/6 1/2 1 1/2 1 1/2 2 1/2 1/5 1/4 1/5 1/3 1/2 1/3 1/2 2 1 1 1/2 1/5 1/4 1/5 1/3 2 1 2 1/2 1 1 ]; 准则层与方案层: A1=[ 1 5 1/3;1/5 1 1/7;3 7 1 ];A2=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A3=[1 1/3 3;3 1 5; 1/3 1/5 1 ];A4=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A5= [1 1/2 3;2 1 5; 1/3 1/5 1];A6= [1 1/3 3;3 1 5;1/3 1/5 1]; A7=[1 1/3 3;3 1 5;1/3 1/5 1]; A8=[1 1/3 3;3 1 5;1/3 1/5 1]; A9=[1 1/2 1/3;2 1 1/2;3 2 1]; A10=[1 2 1/3;1/2 1 1/5;3 5 1]; A11=[1 1/3 3;3 1 5;1/3 1/5 1]; 实现层次分析法的 MATLAB 程序如下: C=[1 4 1/3 1/3 1/2 1 3 2 2 2 2 ; 1/4 1 1/2 1/2 1/4 3 2 1 4 5 5 ;
MATLAB层次分析法
C11
C1
0
桥梁 D1
隧道 D2
渡船 D3
(1)过河效益层次结构
例3 横渡江 河、海峡方 案的抉择
经济代价 B1
过河的代价 A
社会代价 B2
环境代价 B3
投 操 冲冲 交 居 汽 对 对
入 作 击击 通 民 车 水 生
资 维 渡生 拥 搬 排 的 态
金 护 船活 挤 迁 放 污 的
C1 C2 业 方 C5 C6 物 染 破
关
献
入
展
誉
系
对外 贸易
位 置
供选择的岗位
例3 横渡江 河、海峡方 案的抉择
经济效益 B1
过河的效益 A
社会效益 B2
节 收岸 当 建安 交 自
省 入间 地 筑全 往 豪
时 C2 商 商 就 可 沟 感
间
业 业 业 靠 通 C8
C1
C3 C4 C5 C6 C7
环境效益 B3
舒进 美
适出 化
C9
方 便
Ci : C j aij
A
(aij )nn , aij
0,
a ji
1 aij
选 择
1 1/ 2 4 3 3
2
1
7
5
5
A~成对比较阵
旅 A 1/ 4 1/ 7
游 地
1/ 3
1/ 5
1/ 3 1/ 5
1 2
1/ 2 1
1/ 3
1
A是正互反阵
3 1 1
要由A确定C1,…, Cn对O的权向量
2
n
min
wi ( i1,,n ) i1
n j1 ln aij
ln wi wj
层次分析法判断矩阵
层次分析法判断矩阵层次分析法判断矩阵程序先确定判断矩阵;然后用以下程序就好了:%层次分析法的matlab程序%%%%diertimoxingyiclc,cleardisp(输入判断矩阵);% 在屏幕显示这句话A=input(A=);% 从屏幕接收判断矩阵[n,n]=size(A);% 计算A的维度,这里是方阵,这么写不太好x=ones(n,100);% x为n行100列全1的矩阵y=ones(n,100);% y同xm=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 自加1x(:,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)的绝对值enda=sum(y(:,i));% y的第i列的和赋予aw=y(:,i)/a;% y的第i 列除以at=m(i);% m的第i个分量赋给tdisp(权向量:);disp(w);% 显示权向量wdisp(最大特征值:);disp(t);% 显示最大特征值t %以下是一致性检验CI=(t-n)/(n-1);% t-维度再除以维度-1的值赋给CIRI=[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摘要在定性问题的决策中,AHP是一种优秀的方法,其基础是对评价对象的两两比较,并用比较结果构造判断矩阵,而这些都依赖于决策者选用的偏好关系。
matlab常用算法大全(数学建模)
本文总结了matlab常用的几个算法,希望对数学建模有帮助。
利用matlab编程FFD算法完成装箱问题:设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。
建立box_main.mfunction[box_count,b]=box_main(v) vmax=100;sort(v,'descend');n=length(v);b=zeros(1,n);for i=1:nb(i)=vmax;endbox_count=1;for i=1:nfor j=1:box_countif v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);break;else%不可放入时continue;endendif j==box_countbox_count=box_count+1;endendbox_count=box_count-1;end主程序为:v=[60 45 35 20 20 20];[box_count,b]=box_main(v)结果:box_count =3 b =5 15 80 100 100 100所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。
“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。
层次分析法建模举例
其中:maxN为单注封顶金额;minN为单注保底 金额;Qij为第 i 种方案得第 j 等奖的单项奖比例; M为当期销售总额;n为低项奖总额; Q为总奖金 比例。
三、层次分析
3.1层次分析模型分为四层:
目标层:即决策目标,在本问题中取彩票的销售规则 及其相应的奖金设置方案的合理性作为决策目标。 中间层:作为目标层的衡量准则,我们取彩票的高项 奖金,低项固定奖金,和中奖面三方面来衡量目标层。 指标层:其中包括高项奖金的3个评价标准(即一, 二,三等奖)和低项固定奖金的4个评价指标(即四, 五,六,七等奖),而位于中间层的中奖面衡量准则 可以单独作为目标层的一个评价指标(即中奖面)。 方案层: 需进行评估的各种分配方案
一、 问题的提出与概率计算
已给的29种方案分为两种类型 1、“传统型”采用“10选6+1”方案: 投注者从0~9十个号码中任选6个基本号码(可 重复),从0~4中选一个特别号码,构成一注 。根 据单注号码与中奖号码相符的个数多少及顺序确定 中奖等级;
表1: “传统型” 中奖办法
中 奖 等 级 10 选 6+1(6+1/10) 基本号码 特别号码 选7中
Roots: 多项式的零点可用命令roots求的。
例: >> r=roots(p) 得到 r= 0.2500 + 1.5612i 0.2500 - 1.5612i -1.0000 所有零点由一个列向量给出。
Poly: 由零点可得原始多项式的各系数,但可能相差一 个常数倍。 例: >> poly(r)
如“33选7”的方案:投注者从01~33个号码 中任选7个组成一注(不可重复),根据单注号 码与中奖号码相符的个数多少确定相应的中奖等 级,不考虑号码顺序。
一些简单的算法MATLAB代码
层次分析法:%层次分析法的matlab程序disp('请输入判断矩阵A(n阶)');A=input('A=');%判断矩阵[n,n]=size(A);%n阶x=ones(n,100);y=ones(n,100);m=zeros(1,100);m(1)=max(x(:,1));y(:,1)=x(:,1);x(:,2)=A*y(:,1);m(2)=max(x(:,2));y(:,2)=x(:,2)/m(2);p=0.0001;i=2;k=abs(m(2)-m(1));while k>pi=i+1;x(:,i)=A*y(:,i-1);m(i)=max(x(:,i));y(:,i)=x(:,i)/m(i);k=abs(m(i)-m(i-1));enda=sum(y(:,i));w=y(:,i)/a;t=m(i);disp('权向量');disp(w);disp('最大特征值');disp(t);%以下是一致性检验CI=(t-n)/(n-1);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 来选CR=CI/RI(n);%判断是否通过一致性检验if CR<0.10disp('此矩阵的一致性可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR);elsedisp('此矩阵的一致性不可以接受!');end主成分分析:function [lambda,T,fai]=MSA2(A)%lambda特征根,T特征向量,fai贡献率%求标准化后的协差矩阵,再求特征根和特征向量%标准化处理[p,n]=size(A);%p行n列,列为几种for j=1:nmju(j)=mean(A(:,j));sigma(j)=sqrt(cov(A(:,j)));endfor i=1:pfor j=1:nY(i,j)=(A(i,j)-mju(j))/sigma(j);endendsigmaY=cov(Y);%求X标准化的协差矩阵的特征根和特征向量[T,lambda]=eig(sigmaY);disp('特征根(由小到大):');disp(lambda);disp('特征向量:');disp(T);%方差贡献率;Xsum=sum(sum(lambda,2),1);for i=1:nfai(i)=lambda(i,i)/Xsum;enddisp('方差贡献率:');disp(fai);u=T(:,n);B=[];h=length(A(:,1));for k=1:nm1=mean(A(:,k));t=(A(:,k)-m1).^2;m2=sqrt(sum(t))/(h-1);B=[B,(A(:,k)-m1)./m2];endy=B*u;x1=1:1:length(y);plot(x1,y);xlabel('时间/小时')ylabel('综合指标')title('综合指标-时间曲线')灰色关联度:clear all;close all;clcx(1,:)=[1039641,1114569,1146388,1265890,1322341,1482145,1548594,1634719,1798300,19050 93,2084144,2367708,2551127];x(2,:)=[7093233,7935809,9018225,10757812,13182254,14943581,17283905,20458811,2372580 7,23871200,28440693,33237887,35726276];x(3,:)=[5692742,6629760,7653689,8974042,10927201,13012704,15602473,18946588,22365641, 25099237,28966850,34584984,39742655];%比较序列m=3;%几行n=13;%几列x0=[2143000,2497000,2944000,3259000,4101000,4651000,5437000,6301000,7072000,8031000 ,10257000,11910000,13923000]%参考序列avg=zeros(1,n);for i=1:mfor j=1:navg(j)=avg(j)+x(i,j);%均值序列endendfor i=1:nx0(i)=x0(i)/avg(i);%参考序列均值化endfor j=1:mfor i=1:ndelta(j,i)=abs(x(j,i)-x0(i));%求序列差endendmax=delta(1,1);for j=1:mfor i=1:nif delta(j,i);max=delta(j,i);%求两级差endendendmin=0;for j=1:mxgd(j)=0;for i=1:nglxs(j,i)=0.5*max/(0.5*max+delta(j,i));%关联系数与相关度xgd(j)=xgd(j)+glxs(j,i);endxgd(j)=xgd(j)/n;enddisp('关联系数:');disp(glxs);disp('相关度');disp(xgd);Fl oyd算法function [D,R]=floyd(A)%用floyd算法实现求任意两点之间的最短路程。
(完整版)层次分析法计算权重在matlab中的实现
信息系统分析与设计作业层次分析法确定绩效评价权重在matlab中的实现小组成员:孙高茹、王靖、李春梅、郭荣1 程序简要概述编写程序一步实现评价指标特征值lam、特征向量w以及一致性比率CR的求解。
具体的操作步骤是:首先构造评价指标,用专家评定法对指标两两打分,构建比较矩阵,继而运用编写程序实现层次分析法在MATLAB中的应用。
通过编写MATLAB程序一步实现问题求解,可以简化权重计算方法与步骤,减少工作量,从而提高人力资源管理中绩效考核的科学化电算化。
2 程序在matlab中实现的具体步骤function [w,lam,CR] = ccfx(A)%A为成对比较矩阵,返回值w为近似特征向量% lam为近似最大特征值λmax,CR为一致性比率n=length(A(:,1));a=sum(A);B=A %用B代替A做计算for j=1:n %将A的列向量归一化B(:,j)=B(:,j)./a(j);ends=B(:,1);for j=2:ns=s+B(:,j);endc=sum(s);%计算近似最大特征值λmaxw=s./c;d=A*wlam=1/n*sum((d./w));CI=(lam-n)/(n-1);%一致性指标RI=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51];%RI为随机一致性指标CR=CI/RI(n);%求一致性比率if CR>0.1disp('没有通过一致性检验');else disp('通过一致性检验');endend3 案例应用我们拟构建公司员工绩效评价分析权重,完整操作步骤如下:3.1构建的评价指标体系我们将影响员工绩效评定的指标因素分为:打卡、业绩、创新、态度与品德。
3.2专家打分,构建两两比较矩阵A =1.0000 0.5000 3.0000 4.00002.0000 1.0000 5.00003.00000.3333 0.2000 1.0000 2.00000.2500 0.3333 0.5000 1.00003.3在MATLAB中运用编写好的程序实现直接在MATLAB命令窗口中输入[w,lam,CR]=ccfx(A)继而直接得出d =1.30352.00000.51450.3926w =0.31020.46910.12420.0966lam =4.1687CR =0.0625,通过一致性检验3.4解读程序结果根据程序求解中得出的特征向量,可以得出打卡、业绩、创新以及态度品德在员工绩效评价中所占的权重分别为:0.3102、0.4691、0.1242、0.0966。
基于Matlab的层次分析法及其运用浅析
度 )具体标度 方法如表 1所示。 ,
表 1 T..a t LS ay教授 的 1 9标度方法 -
底层 指 标 相 对 于 准 则 层 的 权 重 系数 , 而 有助 于 选 择 最 优 方案 , 序 从 程 流程如图 1 所示 , 其中的平行 四边形表示输入数据 , 菱形表示判断 , 根据 判 断结 果 的不 同 出现 2个 分 支 。 程 序 中 , 于 生成 判 断矩 阵 的部 分 程 序 如 下 : 用
表 2 平均 随机一致性指标 ,
在当前信息化 、 全球化 的大背景下 , 传统的手工计 算已不能满足 素, 因此在判断矩 阵不能通过一致性检 验时, 需要对 各指标问相互重 人们高效 率、 高准确度 的决策需求。 因此计算机辅助决策当仁不让地 要性程度重新进行赋值 , 直至其通过矩阵一致性检验。 其最大特征值 成为 了管理决策 的新工具、 方法。基于 此, 新 本文在充分发挥计算机 对应 的特征 向量 即为该指标相对于上一级指标的重要性排序。 强大运算功能的基础上 ,选用美国 Mah rs公司的集成数学建 tWok
基于 Malb的层次分析 法及 其运 用浅析 t a
郭 东硕 程 正敏 彭茜 ( 西南大学 经济管理学院)
满足同一层 次中各指标对 所有的下级指标均产生影响 的假定条件下 ,实现 了层次分析法的分析运算。 本程序允许 用户自由设定指标层次结构内的层次数以及各层次 内的指标数 , 通过程序的循环 , 用户只需输入 判断矩 阵的部 分数据 , 程序可依据层 次分析 法的计算流程 进行计算并作 出判断。 本程序可以方便地处理层 次分析法下较 大的运算量 , 解决层次分析法的效率问题 , 提高计算机辅助决策的时效性。 关键词 : t b层 次分析法 判断矩阵 决策 Mal a
层次分析法判断矩阵求权值和一致性查验程序
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;end本matlab程序用于层次分析法中计算判断矩阵给出的权值已经进行一致性查验。
其中A为判断矩阵,不同的标度和评定A将不同。
m为A的维数RI为判断矩阵的平均随机一致性指标:按照m的不同值不同。
当CR<时符合一致性查验,判断矩阵构造合理。
下面是层次分析法的简介,和判断矩阵构造方式。
一.层次分析法的含义层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家()正式提出。
它是一种定性和定量相结合的、系统化、层次化的分析方式。
由于它在处置复杂的问题上的实用性和有效性,专门快活着界范围取得重视。
它的应用已遍及经济和、能源政策和分派、行为科学、军事指挥、运输、农业、教育、人材、医疗和环境等领域。
二.层次分析法的大体思路与人对一个复杂的决策问题的思维、判断进程大体上是一样的。
(1)层次分析法的原理层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方式递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。
这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,和各子目标对上一层目标而言重要程度的相对量度。
层次分析法比较适合于具有分层交织评价指标的目标系统,而且目标值又难于定量描述的决策问题。
其用法是构造判断矩阵,求出其最大特征值。