层次分析法建模 层次分析法(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)机会多(如新单位或单位发展有后劲)等。 问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?
有限差分法求解偏微分方程M A T L A B
南京理工大学 课程考核论文 课程名称:高等数值分析 论文题目:有限差分法求解偏微分方程姓名:罗晨 学号: 115104000545 成绩: 有限差分法求解偏微分方程
一、主要内容 1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程: 22(,)()u u f x t t x αα??-=??其中为常数 具体求解的偏微分方程如下: 22001 (,0)sin()(0,)(1,)00 u u x t x u x x u t u t t π???-=≤≤?????? =??? ==≥??? 2.推导五种差分格式、截断误差并分析其稳定性; 3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析; 4.结论及完成本次实验报告的感想。 二、推导几种差分格式的过程: 有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。 推导差分方程的过程中需要用到的泰勒展开公式如下: ()2 100000000()()()()()()()......()(()) 1!2!! n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+- (2-1) 求解区域的网格划分步长参数如下:
disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); 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>p i=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)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);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]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); end function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准%生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);
%% AHP weight calculation %%data input clc clear all A =[1 3 5 7 9 5;1/3 1 3 9 3 3;1/5 1/3 1 3 3 1/3;1/7 1/9 1/3 1 5 1/3;1/9 1/3 1/3 1/5 1 1/3;1/5 1/3 1 3 3 1]; %%Consistency calculation and weight vector calculation [n,n] = size(A); [v,d] = eig(A); r = d(1,1); CI = (r-n)/(n-1); RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59]; CR = CI/RI(n); if CR<0.10 CR_Result = 'pass'; else CR_Result = 'no pass'; end % % Weight vector calculation w = v(:,1)/sum(v(:,1));
w = w'; % % output disp('The judgment matrix weight vector calculation report:'); disp('coincidence indicator:');disp(num2str(CI)); disp('Consistency ratio:');disp(num2str(CR)); disp(' Consistency test results:');disp(CR_Result); disp('eigenvalue:');disp(num2str(r)); disp('weight vector:');disp(num2str(w));
基于Matlab的层次分析法及其运用浅析 本文通过使用Matlab软件进行编程,在满足同一层次中各指标对所有的下级指标均产生影响的假定条件下,实现了层次分析法的分析运算。本程序允许用户自由设定指标层次结构内的层次数以及各层次内的指标数,通过程序的循环,用户只需输入判断矩阵的部分数据,程序可依据层次分析法的计算流程进行计算并作出判断。本程序可以方便地处理层次分析法下较大的运算量,解决层次分析法的效率问题,提高计算机辅助决策的时效性。 标签:Matlab层次分析法判断矩阵决策 在当前信息化、全球化的大背景下,传统的手工计算已不能满足人们高效率、高准确度的决策需求。因此计算机辅助决策当仁不让地成为了管理决策的新工具、新方法。基于此,本文在充分发挥计算机强大运算功能的基础上,选用美国MathWorks公司的集成数学建模環境Matlab R2009a作为开发平台,使用M语言进行编程,对计算机辅助决策在层次分析法中的运用进行讨论。试图通过程序实现层次分析法在计算机系统上的运用,为管理决策探索出新的道路。 1 层次分析法的计算流程 根据层次分析法的相关理论,层次分析法的基本思想是将复杂的决策问题进行分解,得到若干个下层指标,再对下层指标进行分解,得到若干个再下层指标,如此建立层次结构模型,然后根据结构模型构造判断矩阵,进行单排序,最后,求出各指标对应的权重系数,进行层次总排序。 1.1 构造层次结构模型在进行层次分析法的分析时,最主要的步骤是建立指标的层次结构模型,根据结构模型构造判断矩阵,只有判断矩阵通过了一致性检验后,方可进行分析和计算。其中,结构模型可以设计成三个层次,最高层为目标层,是决策的目的和要解决的问题,中间层为决策需考虑的因素,是决策的准则,最低层则是决策时的备选方案。一般来讲,准则层中各个指标的下级指标数没有限制,但在本文中设计的程序尚且只能在各指标具有相同数量的下级指标的假定下,完成层次分析法的分析,故本文后文选取的案例也满足这一假定。 1.2 建立判断矩阵判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较给判断矩阵的要素赋值时,常采用九级标度法(即用数字1到9及其倒数表示指标间的相对重要程度),具体标度方法如表1所示。 1.3 检验判断矩阵的一致性由于多阶判断的复杂性,往往使得判断矩阵中某些数值具有前后矛盾的可能性,即各判断矩阵并不能保证完全协调一致。当判断矩阵不能保证具有完全一致性时,相应判断矩阵的特征根也将发生变化,于是就可以用判断矩阵特征根的变化来检验判断的一致性程度。在层次分析法中,令判断矩阵最大的特征值为λmax,阶数为n,则判断矩阵的一致性检验的指标记为:
第1章前言 1.1问题背景 在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。诸如粒子扩散或神经细胞的动作电位。也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。热方程及其非线性的推广形式也被应用与影响分析。 在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。 科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。 解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。 1.2问题现状 近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。而且精度上更好。 目前,在欧美各国MATLAB的使用十分普及。在大学的数学、工程和科学系科,MATLAB
层次分析法 1)建立层次结构模型: (2)构造判断矩阵 判断矩阵() ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法): (3)单层排序及一致性检验 1、单层排序 求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量
ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此 权重的大小,便可确定该层因素的排序。
2、一致性检验 取一致性指标max 1 n CI 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 的总 排序权重为 1 n j ij j a b =∑,见下表: 从而确定层的排序。 例: 纯文本文件txt3.txt 中的数据格式如下: 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 1 1/4 1/2
4 1 3 2 1/ 3 1 1 1/4 1/5 4 1 1/2 5 2 1 1 3 1/3 1/3 1 1/7 3 7 1 1 1/3 5 3 1 7 1/5 1/7 1 1 1 7 1 1 7 1/7 1/7 1 1 7 9 1/7 1 1 1/9 1 1 matlab程序: >> fid=fopen('txt3.txt','r'); n1=6;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);
第五次作业(前三题写在作业纸上) 一、用有限差分方法求解一维非定常热传导方程,初始条件和边界条件见说明.pdf 文件,热扩散系数α=const , 22T T t x α??=?? 1. 用Tylaor 展开法推导出FTCS 格式的差分方程 2. 讨论该方程的相容性和稳定性,并说明稳定性要求对求解差分方程的影响。 3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。 4. 编写M 文件求解上述方程,并用适当的文字对程序做出说明。(部分由网络搜索得到,添加,修改后得到。) function rechuandaopde %以下所用数据,除了t 的范围我根据题目要求取到了20000,其余均从pdf 中得来 a=0.00001;%a 的取值 xspan=[0 1];%x 的取值范围 tspan=[0 20000];%t 的取值范围 ngrid=[100 10];%分割的份数,前面的是t 轴的,后面的是x 轴的 f=@(x)0;%初值 g1=@(t)100;%边界条件一 g2=@(t)100;%边界条件二 [T,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid);%计算所调用的函数 [x,t]=meshgrid(x,t); mesh(x,t,T);%画图,并且把坐标轴名称改为x ,t ,T xlabel('x') ylabel('t') zlabel('T') T%输出温度矩阵 dt=tspan(2)/ngrid(1);%t 步长 h3000=3000/dt;
h9000=9000/dt; h15000=15000/dt;%3000,9000,15000下,温度分别在T矩阵的哪些行T3000=T(h3000,:) T9000=T(h9000,:) T15000=T(h15000,:)%输出三个时间下的温度分布 %不再对三个时间下的温度-长度曲线画图,其图像就是三维图的截面 %稳定性讨论,傅里叶级数法 dx=xspan(2)/ngrid(2);%x步长 sta=4*a*dt/(dx^2)*(sin(pi/2))^2; if sta>0,sta<2 fprintf('\n%s\n','有稳定性') else fprintf('\n%s\n','没有稳定性') error end %真实值计算 [xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid); [xe,te]=meshgrid(xe,te); mesh(xe,te,Te);%画图,并且把坐标轴名称改为xe,te,Te xlabel('xe') ylabel('te') zlabel('Te') Te%输出温度矩阵 %误差计算 jmax=1/dx+1;%网格点数 [rms]=wuchajisuan(T,Te,jmax) rms%输出误差
有限差分法的Matlab程序(椭圆型方程) function FD_PDE(fun,gun,a,b,c,d) % 用有限差分法求解矩形域上的Poisson方程 tol=10^(-6); % 误差界 N=1000; % 最大迭代次数 n=20; % x轴方向的网格数 m=20; % y轴方向的网格数 h=(b-a)/n; % x轴方向的步长 l=(d-c)/m; % y轴方向的步长 for i=1:n-1 x(i)=a+i*h; end % 定义网格点坐标 for j=1:m-1 y(j)=c+j*l; end % 定义网格点坐标 u=zeros(n-1,m-1); %对u赋初值 % 下面定义几个参数 r=h^2/l^2; s=2*(1+r); k=1; % 应用Gauss-Seidel法求解差分方程 while k<=N % 对靠近上边界的网格点进行处理 % 对左上角的网格点进行处理 z=(-h^2*fun(x(1),y(m-1))+gun(a,y(m-1))+r*gun(x(1),d)+r*u(1,m-2)+u(2,m-1))/s; norm=abs(z-u(1,m-1)); u(1,m-1)=z; % 对靠近上边界的除第一点和最后点外网格点进行处理 for i=2:n-2 z=(-h^2*fun(x(i),y(m-1))+r*gun(x(i),d)+r*u(i,m-2)+u(i+1,m-1)+u(i-1,m-1))/s; if abs(u(i,m-1)-z)>norm; norm=abs(u(i,m-1)-z); end u(i,m-1)=z; end % 对右上角的网格点进行处理 z=(-h^2*fun(x(n-1),y(m-1))+gun(b,y(m-1))+r*gun(x(n-1),d)+r*u(n-1,m-2)+u(n-2,m-1))/s; if abs(u(n-1,m-1)-z)>norm norm=abs(u(n-1,m-1)-z); end u(n-1,m-1)=z; % 对不靠近上下边界的网格点进行处理 for j=m-2:-1:2 % 对靠近左边界的网格点进行处理
层次分析法程序举例: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); cil=(lamda-6)/5; crl=cil/1.26; w1=v(:,1)/sum(v(:,1)) 挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。该生根据已有信息建立了一个层次结构模型,如下图所示。 程序: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); ci=(lamda-6)/5
cr=ci/1.26 w1=v(:,1)/sum(v(:,1)) B1=[1 1/4 1/2;4 1 3;2 1/3 1]; [v,d]=eig(B1); eigenvalue=diag(d); lamda=max(eigenvalue); cil1=(lamda-3)/2 cr1=cil1/0.52 b1w=v(:,1)/sum(v(:,1)) B2=[1 1/4 1/5;4 1 1/2;5 2 1]; [v,d]=eig(B2); eigenvalue=diag(d); lamda=max(eigenvalue); cil2=(lamda-3)/2 cr2=cil2/0.52 b2w=v(:,1)/sum(v(:,1)) B3=[1 1/2 2; 2 1 3;1/2 1/3 1]; [v,d]=eig(B3); eigenvalue=diag(d);
电磁场与电磁波实验报告 实验项目:_______有限差分法__ ____ 班级:_____ __12电子2 ____ __ 实验日期:__2014年12月23日 姓名:___ _ __陈奋裕 __ __ 学号:___ ___1215106003 _____ 组员姓名:___ _ __ __ __ 组员学号:___ ___ _____ 指导教师:_ ____张海 ______
一、实验目的及要求 1、学习有限差分法的原理与计算步骤; 2、学习用有限差分法解静电场中简单的二维静电场边值问题; 3、学习用Matlab 语言描述电磁场与电磁波中内容,用matlab 求解问题并用图形表示出了,学习matlab 语言在电磁波与电磁场中的编程思路。 二、实验内容 理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识; 实践学习:学习用matlab 语言编写有限差分法计算二维静电场边值问题; 三、实验仪器或软件 电脑(WIN7)、Matlab7.11 四、实验原理 基本思想是把连续的定解区域用有限个离散点构成的网格来代替, 这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。 简单迭代法: 这一方法的求解过程是,先对场域内的节点赋予迭代初值(0),i j ?,这里上标(0)表示0次 (初始)近似值。然后按Laplace 方程 (k 1)(k)(k)(k)(k),1,,11,,11 []4 i j i j i j i j i j ?????+--++=+++(i,j=1,2,…) 进行反复迭代(k=0,1,2,…)。若当第N 次迭代以后,所有的内节点的相邻两次迭代值之间的最大误差不超过允许范围,即 (N)(N-1) ,,max|-| 一、引言 层析分析法是将定量与定性相结合的多目标决策法,是一种使用频率很高的方法,在经济管理、城市规划等许多领域得到了广泛应用。由于其结果受主观思维的影响较大,许多科研工作者对其进行了深入的研究,将模糊理论与层次分析法相结合,提出了模糊层次分析法。为克服层次分析法中判断矩阵的一致性与人类思维的一致性存在的显著差异,文献[1-2]引入了模糊一致矩阵。为解决解的精度及收敛问题,文献[3-4]引入幂法来求排序向量。运用模糊层次分析法研究实际问题时,常采用迭代法来得到精度更高的排序向量,这就要求选择合适的初始值并通过大量的计算,为此,文中利用三种方法计算了初始排序向量,并给出了算法的Matlab程序,最后通过实例说明。 二、模糊层次分析法 为解决AHP种所存在的问题,模糊层次分析法引入模糊一致矩阵,无需再进行一致性检验,同时使用幂法来计算排序向量,可以减少迭代齿数,提高收敛速度,满足计算精度的要求.具体步骤: 1.构造优先关系矩阵 采用0.1~0.9标度[2],建立优先判断矩阵 2.将优先关系矩阵转化为模糊一致矩阵 3.计算排序向量 (1)和行归一法: (2)方根法: (3)利用排序法: (4)利用幂法[5-6]求精度更高的排序向量: 否则,继续迭代。 三、模糊层次分析法的程序实现 给出模糊层次分析法的Matlab程序。 clear; clc; E=input('输入计算精度e:') Max=input('输入最大迭代次数Max:') F=input('输入优先关系矩阵F:'); %计算模糊一致矩阵 N=size(F); r=sum(F'); for i=1:N(1) for j=1:N(2) R(i,j)=(r(i)-r(j))/(2*N(1))+0.5; end end E=R./R'; % 计算初始向量---------- % W=sum(R')./sum(sum(R)); % 和行归一法 %--------------------------------------------------------- for i=1:N(1) S(i)=R(i,1); for j=2:N(2) S(i)=S(i)*R(i,j); end end S=S^(1/N(1)); W = S./sum(S);%方根法%-------------------------------------------------------- % a=input('参数a=?'); %W=sum(R')/(N(1)*a)-1/(2*a)+1/N(1); %排序法 % 利用幂法计算排序向量----V(:,1)=W'/max(abs(W)); %归一化 for i=1:Max V(:,i+1)=E*V(:,i); V(:,i+1)=V(:,i+1)/max(abs(V(:,i+1))); if max(abs(V(:,i+1)-V(:,i)))k=i; A=V(:,i+1)./sum(V(:,i+1)); break Else End End 四、计算实例 信息系统分析与设计作业 层次分析法确定绩效评价权重在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); end s=B(:,1); for j=2:n s=s+B(:,j); end c=sum(s);%计算近似最大特征值λmax w=s./c; d=A*w lam=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.1 disp('没有通过一致性检验'); else disp('通过一致性检验'); end end 3 案例应用 我们拟构建公司员工绩效评价分析权重,完整操作步骤如下: 3.1构建的评价指标体系 我们将影响员工绩效评定的指标因素分为:打卡、业绩、创新、态度与品德。 3.2专家打分,构建两两比较矩阵 A = 1.0000 0.5000 3.0000 4.0000 2.0000 1.0000 5.0000 3.0000 0.3333 0.2000 1.0000 2.0000 0.2500 0.3333 0.5000 1.0000 3.3在MATLAB中运用编写好的程序实现 直接在MATLAB命令窗口中输入 [w,lam,CR]=ccfx(A) 继而直接得出 d = 1.3035 2.0000 0.5145 0.3926 w = 0.3102 0.4691 0.1242 0.0966 lam =4.1687 MATLAB教程网 第八章层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 MATLAB教程网 § 1层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i)建立递阶层次结构模型; (ii)构造出各层次中的所有判断矩阵; (iii)层次单排序及一致性检验; (iv)层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1递阶层次结构的建立与特点 应用AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配 的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1假期旅游有R、F2、F3 3个旅游胜地供你选择,试确定一个最佳地点。在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层0 选择旅游地 >> A= [1 2 5 6 4 7 2 4;1/2 1 2 4 2 7 1 2; 1/5 1/2 1 5 1 5 1/2 2 ; 1/6 1/4 1/5 1 1/3 3 1/2 1/4 ;1/4 1/2 1 3 1 5 1 2;1/7 1/7 1/5 1/3 1/5 1 1/7 1/5;1/2 1 2 2 1 7 1 2;1/4 1/2 1/2 4 1/2 5 1/2 1]; >> d=eig(A) %求全部特征值所组成的向量 >> [V,D]=eig(A) %求特征值及特征向量所组成的矩阵 >> A= [1 2 5 6 4 7 2 4;1/2 1 2 4 2 7 1 2; 1/5 1/2 1 5 1 5 1/2 2 ;1/6 1/4 1/5 1 1/3 3 1/2 1/4 ;1/4 1/2 1 3 1 5 1 2;1/7 1/7 1/5 1/3 1/5 1 1/7 1/5;1/2 1 2 2 1 7 1 2;1/4 1/2 1/2 4 1/2 5 1/2 1]; d=eig(A) %求全部特征值所组成的向量 [V,D]=eig(A) %求特征值及特征向量所组成的矩阵 d = 8.4243 -0.0020 + 1.7077i -0.0020 - 1.7077i -0.1240 + 0.7030i -0.1240 - 0.7030i -0.1103 + 0.3207i -0.1103 - 0.3207i 0.0483 V = Columns 1 through 7 0.7427 0.8569 0.8569 0.7153 0.7153 0.7100 0.7100 0.3893 0.1636 + 0.0231i 0.1636 - 0.0231i 0.1747 - 0.0500i 0.1747 + 0.0500i -0.2144 + 0.4572i -0.2144 - 0.4572i 0.2579 -0.0614 + 0.3195i -0.0614 - 0.3195i -0.0739 - 0.0916i -0.0739 + 0.0916i -0.1506 - 0.0176i -0.1506 + 0.0176i 0.0985 -0.0976 - 0.0879i -0.0976 + 0.0879i 0.0679 + 0.0635i 0.0679 - 0.0635i 0.0183 + 0.0558i 0.0183 - 0.0558i 0.2588 0.0176 + 0.1232i 0.0176 - 0.1232i 0.0227 + 0.3409i 0.0227 - 0.3409i -0.0373 - 0.2293i -0.0373 + 0.2293i 0.0519 0.0080 - 0.0585i 0.0080 + 0.0585i -0.0134 - 0.0662i -0.0134 + 0.0662i -0.0507 - 0.0850i -0.0507 + 0.0850i 0.3352 0.1943 - 0.0809i 0.1943 + 0.0809i -0.4321 + 0.2823i -0.4321 - 0.2823i 0.1131 + 0.3427i 0.1131 - 0.3427i 20. 层次分析法 一、概述 层次分析法(Analytic Hierarchy Process, AHD)是将要决策的问题及其有关因素分解成目标、准则、方案等层次,进而进行定性和定量分析的决策方法。它的特征是合理地将定性与定量决策结合起来,按照思维、心理的规律把决策过程细致化(层次化、数量化)。 层次分析法广泛地应用到处理复杂的决策问题,而决策是基于该方法计算出的权重,所以也常用来确定指标的权重。 层次分析法的基本思路与人们对一个决策问题的思维、判断过程大体上是一样的。例如,选购一台笔记本电脑,假设有三种不同品牌款式的笔记本电脑A、B、C供选择。我们一般会根据价格、外观、重量、用途、功耗、品牌等一些准则去反复比较这个三个候选。首先,会确定这些准则在自己心目中各占多大比重,不同的人这种比重会有很大差异(喜欢玩游戏的人看重硬件性能和散热、预算有限的人看重价格等)。其次,还会就每一个准则将A、B、C进行对比,比如A 最便宜,B次之;C性能最好,B次之;C的品牌最知名等。最后,将这两个层次的比较判断进行综合,在A、B、C中确定一台作为最符合自己需求的电脑。 二、算法步骤 1. 将问题条理化、层次化,建立层次结构模型 1)最高层(目标层)——只有一个元素:决策目标; 2)中间层(准则层)——考虑的因素,决策的准则、子准则; 3)最底层(方案层)——决策时的备选方案、措施。 层次分析法要解决的问题是,求出最底层对最高层的相对权重,以此对最底层的方案、措施进行排序,选择最优方案。 注1:为了避免两两比较判断过于复杂,每层次中各元素所支配的元素一般不要超过9个,否则应划分为若干子层; 注2:层次分析法只考虑相邻两个层次间自上向下的支配作用,认为同一层次的元素间相互独立,若考虑进来需要网络分析法(ANP)。 例如前文提到的选购笔记本电脑的决策模型,可以建立如下的层次结构: 2. 构造判断矩阵(成对比较矩阵) 构造好层次模型后,针对某一层来讲,在比较第i个元素与第j 个元素相对于上一层某个因素的重要性时,使用数量化的相对权重a ij来表示,假设共有n个元素参与比较,则矩阵 第八章 层次分析法 层次分析法(Analytic Hierarchy Process ,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 §1 层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i )建立递阶层次结构模型; (ii )构造出各层次中的所有判断矩阵; (iii )层次单排序及一致性检验; (iv )层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1 递阶层次结构的建立与特点 应用AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i )最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1 假期旅游有1P 、2P 、3P 3个旅游胜地供你选择,试确定一个最佳地点。 在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层O 选择旅游地 准则层C 景色 费用 居住 饮食 旅途 措施层P 1P 2P 3P matlab用层次分析法输入判断矩阵A(n阶)源程序如下:disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); 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>p i=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)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);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]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); end function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准 %生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);模糊层次分析法的Matlab实现
层次分析法计算权重在matlab中的实现
层次分析法的MATLAB实现(20210228092712)
MatLab层次分析法代码
Matlab笔记_层次分析法020
层次分析法及其Matlab实现
matlab用层次分析法输入判断的源程序