-
2020-04-04 00:01:54
AHP算法MATLAB代码
使用方法(详情请看这个视频的2P)
数学建模算法之层次分析法详解
代码如下
(1)构造判断矩阵A
(2)将下文代码复制粘贴到Matlab中即可例如:
A=[1 3 5;0.33 1 3;0.2 0.33,1] disp('请输入准则层判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); [V,D]=eig(A);%求得特征向量和特征值 %求出最大特征值和它所对应的特征向量 tempNum=D(1,1); pos=1; for h=1:n if D(h,h)>tempNum tempNum=D(h,h); pos=h; end end w=abs(V(:,pos)); w=w/sum(w); t=D(pos,pos); disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');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 1.60 1.61 1.615 1.62 1.63]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); else disp('此矩阵的一致性验证失败,请重新进行评分!'); end disp('请输入方案层各因素对准则层各因素权重的成对比较阵'); for i=1:n disp('请输入第');disp(i);disp('个准则层因素的判断矩阵B');disp(i);
更多相关内容 -
AHP_ahp_matlab计算AHP_AHPMATLAB_
2021-09-30 15:57:50AHP计算主观权重matlab实现 -
ahpmatlab代码-code-of-matlab-ahp:matp-ahp代码
2021-05-28 04:14:08ahp matlab 代码 code-of-matlab 基于matlab实现的关于AHP的代码。 对应的数据来自网上CSDN。 -
ahpmatlab代码-CSE470:CSE470
2021-05-28 04:13:52ahp matlab代码CSE470 CSE470是模糊逻辑入门课程,由先生在2018年Spring学期期间由孟加拉国达卡市北南大学提供。 作为课程的一部分,我们(我和我的同班同学)必须实施基于模糊逻辑理论的项目。 我们的项目是中学... -
AHP matlab
2014-08-31 22:01:38层次分析法(Analytic Hierarchy Process,简称AHP)是美国运筹学家、匹兹堡大学T. L. Saaty教授在20世纪70年代初期提出的, AHP是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。 -
AHP matlab程序
2018-09-20 15:57:01A为评分矩阵,只需要替换掉就行了,然后运行一下权重就出来了,亲测可用 -
AHP.rar_AHP MATLAB_AHP评估_层次分析matlab_层次分析评估_评估
2022-07-13 21:24:09AHP评估,层次分析法分析不同的权重,matlab代码 -
fousei.zip_genetic ahp matlab_遗传 ahp
2022-07-13 20:48:47用MATLAB编写的遗传算法路径规划,实现串口的数据采集,AHP层次分析法计算判断矩阵的最大特征值。 -
AHP,MATLAB代码实现
2019-01-19 16:58:27AHP(层次分析法)的MATLAB代码实现,应用时只需要修改评判矩阵 -
层次分析法.rar_AHP MATLAB_matlab_层次分析_层次分析法
2022-07-14 06:05:38通过使用matlab,对层次分析法进行求解,从而进一步确定权重,更快的解决问题。 -
new_AHP.rar_AX7_ahp matlab 改进_new AHP_new_AHP_模糊评价
2022-07-14 02:12:32运用一种新的AHP评价方法对分层指标进行评级,新颖之处在于利用了三角模糊数的概念改进评价。 -
DEA,AHP,TOPSIS.rar_AHP MATLAB_DEA_matlab_topsis模型_数模DEA
2022-07-15 07:36:28数学建模,层次分析模型(AHP)、DEA、TOPSIS及其MATLAB实现 -
AHP.rar_AHP MATLAB_层次分析_层次分析法_经济数学建模
2022-07-14 21:06:29利用层次分析法来解决数学或经济学中的问题,里面有AHP程序以及相应的AHP建模的讲解说明 -
ahpcalc.rar_AHP MATLAB_matlab 层次分析_层次_层次分析_层次分析法、
2022-07-15 02:46:09对层次分析法的基本功能进行了描述,有利于初学者掌握层次分析法的过程 -
AHPMATLAB.rar_matlab例程_Others_
2021-08-12 00:13:49AHP法代码,可以自动检验一致性,开发环境为matlab -
FuzzyAHP.zip_AHP MATLAB_Fuzzy Weight_FuzzyAHP_fuzzy_模糊层次
2022-07-14 18:59:03计算模糊层次分析权重,主要基于MATLAB算法的程序,可运行 -
ahpmatlab代码-MathModel:数学模型课程中的三个项目
2021-05-28 04:13:59matlab代码这是我的数学模型课程的资料库,我在本课程中完成了三个项目。 首先,我们建立一个模型来解决有关选择会议主办城市的时间滞后的问题 已经应用了AHP方法和其他一些距离计算方法。 其次,我们使用华为收集的... -
层次分析法程序 - 副本.zip_AHP MATLAB_away3kc_matlab_层次分析法
2022-07-13 23:04:04层次分析法MATLAB的实现,程序是全自动的,粘贴进MATLAB编辑器即可运行,根据提示录入值进行计算。 -
saiyui_v77.zip_genetic ahp matlab_genetic pwm_整流器无功
2022-07-14 03:15:09遗传算法无功优化,AHP层次分析法计算判断矩阵的最大特征值,pwm整流器的建模仿真。 -
层次分析法AHP_MATLAB代码.zip
2020-04-02 20:06:32分总目标层、准则层、方案层进行层次分析,最后给出各个方案的抉择权重。可以根据具体问题改变判定矩阵对具体问题进行具体分析。 -
ahpmatlab代码-TCrelay-Morris-Lecar-model:我们研究了带有多个扩展的Morris-Lecar模型中的尖峰序列
2021-05-28 04:14:17ahp matlab代码关于 我们研究了带有多个扩展的Morris-Lecar模型中的尖峰序列中尖峰时序的可靠性。 注入了叠加在直流电流上的冻结高斯噪声电流。 神经元以尖峰序列作为响应,这种尖峰序列显示了试验之间的变异性。 ... -
ahp_matlab_源码
2021-10-04 01:20:02AHP 层次分析法(Analytic Hierarchy Process,简称AHP)是将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。 -
ahpmatlab代码-motoneuron-matlab:该存储库包含具有活动树突的三个运动神经元模型的源代码
2021-05-28 04:14:13matlab代码运动神经元 该存储库包含具有活动树突的三个运动神经元模型的源代码。 描述 实验结果指出,脊髓运动神经元的树状树不是被动的电阻-电容网络。 取而代之的是,沿着树状树存在电压门控离子电导,这解释了... -
ahpmatlab代码-other_matlab_code:包括AHP,liquid_holdup_calculatioin,粗麻布矩阵等
2021-05-28 04:14:03ahp matlab代码other_matlab_code 包括AHP,deeplearning_course_files,liquid_holdup_calculatioin等 -
AHP MATLAB
2011-12-22 22:21:18MATLAB实现AHP -
层次分析法AHP的matlab实现.m
2021-08-10 09:43:58层次分析法的代码实现,可以直接运行,不用更改代码路径相关的内容,直接输入判断矩阵就可以了 -
AHP MATLAB 程序 源码
2010-06-16 22:39:54在MATLAB中编写的AHP实现程序,比较简单,可实现两层权重的计算 -
利用Matlab实现AHP模型
2021-07-06 15:09:41一次性检验最后四、个人体会五、附页(AHPMatlab代码) 前言 闲来无事,写一下文章为生活加点料。本文简述了本人对于传统、简单的评价类模型之一的层次分析法(AHP)模型的理解和看法。利用高考生综合各个因素选择...
前言
闲来无事,写一下文章为生活加点料。本文简述了本人对于传统、简单的评价类模型之一的层次分析法(AHP)模型的理解和看法。利用高考生综合各个因素选择高校的例子,结合Matlab实现AHP模型,当然,利用Python也是同样的可行。(文章中出现的高校信息是本人学习过程中模拟的数据,毫无实际意义,仅为学习所用。)
以下是本篇文章正文内容,下面案例可供参考
一、用途
可用来评价、分析以及选择有多个影响因素的多个决策、目标或者方案等。从而选出“最优解”。如下:
图片出自《层次分析法在太阳镜产品质量评价中的应用》。二、基本思路
下面将按着流程图的各个步骤对AHP进行剖析。
三、具体步骤
1.得到关系矩阵(判断矩阵)
即先确定各个指标(影响因素自身)的判断矩阵和各个影响因素与各个目标(方案、决策等)的判断矩阵。
- 各个指标(影响因素自身)的判断矩阵
- 各个影响因素与各个目标(方案、决策等)的判断矩阵。
2.求得指标自身的权重
求得权重的方法主要有3种:算术平均法、几何平均法以及特征值法。(出处不同叫法可能会有所差异)
-
算术平均法
即具体公式如下所示:
-
几何平均法
即具体公式如下所示:
-
特征值法
对所求的最大特征值所对应的特征向量即是未归一化的权重向量,对该特征向量进行归一化处理,即可得各个指标的权重。
相对于三种方法,我本人较为喜欢用第三种方法,因为Matlab已经提供了现有的函数来求得矩阵的特征向量与特征值。(如:eig(A) function)
但出于结果的稳健性,可以利用三种方法分别求出权重,再加以求平均即可。eg:
3.一次性检验
一次性检验,是为了说明你所使用的判断矩阵以及得到的权重是否合理、科学。为了保证结果的正确性,应该在每一个判断矩阵进行一次性检验。
具体方法如下:- 计算一次性指标CI
其中式中的 λ 为判断矩阵的特征值。 - 查表得到一致性指标RI
3) 计算得到一致性比例CR
如果CR<0.10,则该判断矩阵的一致性是可以接受的。否则,这说明判断矩阵数据不合理,得需要修改。
eg:
最后
总结各组权重信息,计算出各个目标(决策、或者方案等)的最后得分,从而得出“最优解”:
四、个人体会
虽然说AHP是一种经典的、相对科学的决策、评判算法,但是不免还存在这许多的不足:
例如:
填写判断矩阵时过于主观(一般判断矩阵的填写都是向专家咨询),从而导致所得结果很大程度会受决策者的主观影响。
此次就是会发现层次分析法并没有引用过多的数据,我认为这也是它的一大弊病,缺乏数据的支持。但是不免也是一种经典的算法,学习一下也无妨。多学无害。
那…那那怎么才能解决AHP的这些不足呢?笔者在这里想到了结合AHP或者熵权法的TOPSIS算法,我们下次再聊叭!!!=3=五、附页(AHPMatlab代码)
A=input('A='); [n,m] = size(A); Sum_A = sum(A); SUM_A = repmat(Sum_A,n,1); Stand_A = A ./ SUM_A; disp('算术平均法求权重的结果为:'); disp(sum(Stand_A,2)./n) Prduct_A = prod(A,2); Prduct_n_A = Prduct_A .^ (1/n); disp('几何平均法求权重的结果为:'); disp(Prduct_n_A ./ sum(Prduct_n_A)) [V,D] = eig(A); Max_eig = max(max(D)); [r,c]=find(D == Max_eig , 1); disp('特征值法求权重的结果为:'); disp( V(:,c) ./ sum(V(:,c)) ) CI = (Max_eig - n) / (n-1); RI=[0 0.0001 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 % 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数 CR=CI/RI(n); disp('一致性指标CI=');disp(CI); disp('一致性比例CR=');disp(CR); if CR<0.10 disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!'); else disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!'); end
- 各个指标(影响因素自身)的判断矩阵
-
层次分析法AHP matlab
2021-03-31 09:11:20%层次分析法(AHP) 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...%层次分析法(AHP) 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('权重为:'); disp(w); %一致性检验 CI = (t-n)/(n-1); RI = [0 0 0.52 0.89 1.12 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 [Q]=AHP(B) % %Q为权值,B为对比矩阵 % %导入判别矩阵B % [n,m]=size(B); % %判别矩阵具有完全一致性 % for i=1:n % for j=1:n % if B(i,j)*B(j,i)~=1 % fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%d\n',i,j,B(i,j),B(j,i)) % end % end % end % %求特征值特征向量,找到最大特征值对应的特征向量 % [V,D]=eig(B); % tz=max(D); % tzz=max(tz); % c1=find(D(1,:)==max(tz)); % tzx=V(:,c1);%特征向量 % %权 % quan=zeros(n,1); % for i=1:n % quan(i,1)=tzx(i,1)/sum(tzx); % end % Q=quan; % %一致性检验 % CI=(tzz-n)/(n-1); % RI=[0,0,0.58,0.9,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(1,n); % if CR>=0.1 % fprintf('没有通过一致性检验\n'); % else % fprintf('通过一致性检验\n'); % end % end
-
层次分析法(AHP)MATLAB实现
2019-01-17 19:40:15层次分析法MATLAB源代码,可直接进行使用,注释简单易懂