
正文
层次分析法java代码 层次分析法java代码是什么
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
层次分析法有几个步骤
层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的课题。
2. 算法基本原理
例子:
在这里插入图片描述
2.1. 解决问题的思路
层次分析法的基本思路是将所要分析的问题层次化;根据问题的性质和所要达成的总目标,将问题分解为不同的组成因素,并按照这些因素的关联影响及其隶属关系,将因素按不同层次凝聚组合,形成一个多层次分析结构模型;最后,对问题进行优劣比较并排列。
2.2. 层次分析法的步骤
1.建立层次结构模型
将决策的目标、考虑的因素(决策准则)和决策对象按照他们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。
最高层: 决策的目的、要解决的问题。
最低层: 决策时的备选方案。
中间层: 考虑的因素、决策的准则。
对相邻的两层,称高层为目标层,低层为因素层。
层次分析法所要解决的问题是关于最低层对最高层的相对权重的问题,按此相对权重可以对最低层中的各种方案、措施进行排序,从而在不同的方案中做出选择或形成选择方案的原则。
2.构造判断矩阵
层次分析法中构造判断矩阵的方法是一致矩阵法,即:不把所有因素放在一起比较,而是两两相互比较;对此时采用相对尺度,以尽可能减少性质不同因素相互比较的困难,以提高准确度。
判断矩阵 a i j a_{ij} a
ij
的标度方法
标度 含义
1 表示两个因素相比,具有同样重要性
3 表示两个因素相比,一个因素比另一个因素稍微重要
5 表示两个因素相比,一个因素比另一个因素明显重要
7 表示两个因素相比,一个因素比另一个因素强烈重要
9 表示两个因素相比,一个因素比另一个因素极端重要
2,4,6,8 上述两相邻判断的中值
倒数 因素 i i i于 j j j比较的判断 a i j a_{ij} a
ij
,则因素 j j j与 i i i比较的判断 a j i = 1 / a i j a_{ji}=1/a_{ij} a
ji
=1/a
ij
3.层次单排序及其一致性检验
对应于判断矩阵最大特征根 λ m a x \lambda max λmax的特征向量,经归一化(使向量中各元素之和为1)后记为 W W W。 W W W的元素为同一层次元素对于上一层因素某因素相对重要性的排序权值,这一过程称为层次单排序。
定义一致性指标 C I = λ − n n − 1 CI=\frac {\lambda-n}{n-1} CI=
n−1
λ−n
:
C I = 0 CI=0 CI=0,有完全的一致性;
C I CI CI接近于0,有满意的一致性;
C I CI CI越大,不一致越严重。
为了衡量 C I CI CI的大小,引入随机一致性指标 R I RI RI
随机一致性指标 RI
n 1 2 3 4 5 6 7 8 9 10 11
RI 0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51
定义一致性比率: C R = C I R I CR=\frac{CI}{RI} CR=
RI
CI
,一般认为一致性比率 C R 0.1 CR0.1 CR0.1时,认为A的不一致程度在容许范围之内,有满意的一致性,通过一致性检验。可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵A,对 a i j a_{ij} a
ij
加以调整。
示例:
在这里插入图片描述在这里插入图片描述
4.层次总排序及其一致性检验
计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。
这一过程是从最高层次到最低层次依次进行的。
在这里插入图片描述
A层 m m m个因素 A 1 , A 2 , ⋅ ⋅ ⋅ , A m , A_{1},A_{2},···,A_{m}, A
1
,A
2
,⋅⋅⋅,A
m
,对总目标Z的排序为 a 1 , a 2 , ⋅ ⋅ ⋅ , a m a_{1},a_{2},···,a_{m} a
1
,a
2
,⋅⋅⋅,a
m
。
B层 n n n个因素对上层A中因素为 A j A_{j} A
j
的层次单排序为 b 1 j , b 2 j , ⋅ ⋅ ⋅ , b n j ( j = 1 , 2 , 3 , ⋅ ⋅ ⋅ , m ) b_{1j},b_{2j},···,b_{nj}(j=1,2,3,···,m) b
1j
,b
2j
,⋅⋅⋅,b
nj
(j=1,2,3,⋅⋅⋅,m)。
B层的层次总排序(即B层第 i i i个因素对总目标的权值为: ∑ j = 1 m a j b i j \sum_{j=1}^{m}a_{j}b_{ij} ∑
j=1
m
a
j
b
ij
)为:
B 1 : a 1 b 11 + a 2 b 12 + ⋅ ⋅ ⋅ + a m b 1 m , B_{1}:a_{1}b_{11}+a_{2}b_{12}+···+a_{m}b_{1m}, B
1
:a
1
b
11
+a
2
b
12
+⋅⋅⋅+a
m
b
1m
,
B 2 : a 1 b 21 + a 2 b 22 + ⋅ ⋅ ⋅ + a m b 2 m , B_{2}:a_{1}b_{21}+a_{2}b_{22}+···+a_{m}b_{2m}, B
2
:a
1
b
21
+a
2
b
22
+⋅⋅⋅+a
m
b
2m
,
⋅ ⋅ ⋅ ··· ⋅⋅⋅
B n : a 1 b n 1 + a 2 b n 2 + ⋅ ⋅ ⋅ + a m b n m , B_{n}:a_{1}b_{n1}+a_{2}b_{n2}+···+a_{m}b_{nm}, B
n
:a
1
b
n1
+a
2
b
n2
+⋅⋅⋅+a
m
b
nm
,
层次总排序的一致性比率为: C R = a 1 C I 1 + a 2 C I 2 + ⋅ ⋅ ⋅ + a m C I m a 1 R I 1 + a 2 R I 2 + ⋅ ⋅ ⋅ + a m R I m CR=\frac{a_{1}CI_{1}+a_{2}CI_{2}+···+a_{m}CI_{m}}{a_{1}RI_{1}+a_{2}RI_{2}+···+a_{m}RI_{m}} CR=
a
1
RI
1
+a
2
RI
2
+⋅⋅⋅+a
m
RI
m
a
1
CI
1
+a
2
CI
2
+⋅⋅⋅+a
m
CI
m
,当 C R 0.1 CR0.1 CR0.1时,认为层次总排序通过一致性检验。
例子:
在这里插入图片描述在这里插入图片描述
3.算法总结
应用领域:经济计划个管理,能源政策和分配,人才选拔和评价,生产决策,交通运输,科研选题,产业结构,教育,医疗,环境,军事等。
处理问题类型:决策、评价、分析、预测等。
建立层次分析结构模型是关键一步,要有主要决策层参与。
构造成对比较矩阵是数量依据,应由经验丰富、判断力强的专家给出。
4.参考
层次分析法建模——《百度文库》
展开全文
层次分析法(AHP)基础概念整理+步骤总结
层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层,最上面为目标层,最下面为方案层,中间是准则层或指标层。 最顶层是我们的目标,比如说选leader,选工作,选旅游目的地 中间层是判断候选方物或人优劣的因素或标准 选工作时有:发展前途 ,待遇 ,工作环境等 选leader时有:年龄,经验,教育背景,魅力 构造判断矩阵 ...
APP打开
层次分析法(AHP)——matlab代码实现
层次分析法(AHP)的主要思想是根据研究对象的性质将要求达到的目标分解为多个组成因素,并按组成因素间的相互关系,将其层次化,组成一个层次结构模型,然后按层分析,最终获得最高层的重要性权值。层次分析法把一个复杂的无结构问题分解组合成若干部分或若干因素,上一层次对相邻的下一层次的全部或某些元素起支配作用,这样就形成了自上而下的层次结构,通过相关指标之间的两两比较对系统中各指标进...
APP打开
评论(8)
写评论
DLMU_DH218码龄1年
3
想请问一下,最后得到的权重向量怎么用?毕竟每个特征的数据量纲不一样,能结合例2说一下吗,谢谢了5月前
比比吧哔啵码龄1年
回复DLMU_DH218:不是值最大的为最优方案吗
3月前
忘小寒boy码龄2年
2
怎么感觉此文与知乎某篇文章一致4月前
gnv0_码龄1年
请问大神如果不是这样的层次结构怎么设置权重啊4月前
Mr.Bornapart码龄2年
请问大神,大于9个因素的层次分析法你有吗1年前
pyjiango码龄1年
回复Mr.Bornapart:大于9个因素可以聚类吧,分为几个决策层
5月前
Zero xing码龄1年
其中的n取到几是由什么决定的啊?1年前
bk3333码龄4年1
回复Zero xing:矩阵的维度或者因素的个数啊
1年前
数学建模方法——层次分析法(AHP)
0. 层次分析法简介 层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好,到底要报哪个;再比如去市场买菜,到底是买青椒做青椒炒鸡蛋,还是买黄瓜做黄瓜炒鸡蛋;再比如想去出游,到底是去公园A还是公园B。上面提到的这些问题,都是决策,也叫做评价类...
APP打开
层次分析法---python实现
层次分析法(The analytic hierarchy process)简称AHP 在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。...
APP打开
层次分析法(AHP)_玻璃球的博客-CSDN博客
这个过程主观因素占有相当的比重,给用数学方法解决问题带来不便。而层次分析法就是用来有效处理这类问题的实用方法。 层次分析法的基本步骤...
层次分析法(AHP)_Eason的博客-CSDN博客
层次分析法(AHP)问题的提出日常生活中有许多决策问题。决策是指在面临多种方案时需要依据一定的标准选择某一种方案。购物:买钢笔,一般要依据质量、颜色、实用性、...
【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法
层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法
APP打开
层次分析法在matlab上的实现
层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯.塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和...
APP打开
AHP层次分析法详细教程-算法与数据结构文档类资源
层次分析法(AHP)——matlab代码实现 40449 层次分析法(AHP)的主要思想是根据研究对象的性质将要求达到的目标分解为多个组成因素,并按组成因素间的相互关系,将其层次...
层次分析法的基本原理与步骤-专业指导文档类资源
AHP(层次分析法)原理及案例先结合日常生活中的例子深入浅出的讲解了AHP的原理,随后结合案例给出了层次分析法的具体操作实现过程。 层次分析法(AHP)详细步骤 1280041...
python 安装和使用
最近在学习Python,其实之前在学长的撺掇下,电脑上已经下载了anaconda,只是没怎么研究过,对Python的了解也只是局限于print(“hello world”)。现在从头开始学习,希望每天能分享一些感悟。 安装Python(windows 10系统) 1. 先上官网下载Python安装程序,之后运行它。请务必选择复选框Add Python to PATH(如图),这让你能够更轻...
APP打开
C++:实现socket通信(TCP/IP)实例
首先声明,博主之前从来没有写过通信方面的东西,这次之所以写这个是因为项目需要,因此本文主要介绍一个使用C++语言及Socket来实现TCP/IP通信的实例,希望可以帮助入门者。 一、什么是TCP/IP? TCP提供基于IP环境下的数据可靠性传输,事先需要进行三次握手来确保数据传输的可靠性。详细的博主不再赘述,感兴趣的朋友可以去search一下。 二、什么是soc...
APP打开
层次分析法(AHP)_tianhao_lu的博客-CSDN博客
层次分析法(AHP)问题的提出日常生活中有许多决策问题。决策是指在面临多种方案时需要依据一定的标准选择某一种方案。购物:买钢笔...
数学建模之层次分析法(AHP)_Tatiana's SA-CSDN博客
层次分析法(Analytic Hierarchy Process)AHP是对一些较为复杂的,较为模糊的问题作出决策的简易方法,它特别适用于那些难以完全定量分析的问题。它是美国运筹学家T.L....
深度测试 模板测试
1. 深度测试 Depth testing 1.1 深度测试函数 Depth test function 1.2 深度值精度 Depth value precision 1.3 深度缓冲的可视化 1.4 深度冲突 1.4.1 防止深度冲突 2. 模板测试 Stencil testing 2.1 模板函数 Stencil function 2.1.1 函数 glStencilFunc...
相关问答
Q1: 大牛给解释一下这个层次分析法的matlab代码吧
%层次分析法的matlab程序 disp('请输入判断矩阵A(n阶)');% 在屏幕显示这句话 A=input('A=');% 从屏幕接收判断矩阵 [n,n]=size(A);% 计算A的维度层次分析法java代码,这里是方阵层次分析法java代码,这么写不太好 x=ones(n,100);% x为n行100列全1的矩阵 y=ones(n,100);% y同x m=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 kp% 当kp是执行循环体 i=i+1;% i自加1 x(:,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)的绝对值 end a=sum(y(:,i));% y的第i列的和赋予a w=y(:,i)/a;% y的第i列除以a t=m(i);% m的第i个分量赋给t disp('权向量');disp(w);% 显示权向量w disp('最大特征值');disp(t);% 显示最大特征值t %以下是一致性检验 CI=(t-n)/(n-1);% t-维度再除以维度-1的值赋给CI 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 CR0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); else disp('此矩阵的一致性不可以接受!'); end
Q2: java分析代码执行过程,输出结果
static 是静态声明,所以会先执行Employee.id的时候,会先执行static的脚本,就是id 的默认赋值和静态块的执行,即打印那个static_block
所以流程是。赋值id,打印static_block;那上面的代码就是打印static_block 和Main:0
Q3: 谁能帮我把这个java代码分析一下我被绕晕了
//哈哈,感觉这道题真心好啊。不知道楼主是从哪里看到的。
//首先这道题楼主要明白以下两点:
//1:继承时,子类会隐藏父类相同的方法,要调用父类方法就必须使用super关键字。
//2:向上转型时,子类会丢失和父类不同的方法,可以使用父类的不同名的所有方法。
public class PolyDemo09{
public static void main(String[] args){
A a1 = new A();
A a2 = new B();//B类型向上转型丢失与A类不同方法
B b = new B();
C c = new C();
D d = new D();
System.out.println("⑴ " + a1.show(b));//B类的父类是A,所以A and A
System.out.println("⑵ " + a1.show(c)); //C类父类的父类是A,D和他是同级。所以A and A
System.out.println("⑶ " + a1.show(d));//D类方法有,所以不会向上转型,所以A and D
System.out.println("⑷ " + a2.show(b)); /*注意这时候a2的两个方法其实是
public String show(D obj) {
return ("A and D");
}
public String show(A obj) {
return ("B and A");
} B的父类是A,所以B and A
*/
/**/
System.out.println("⑸ " + a2.show(c));//C的父类的父类是A,所以B and A;
System.out.println("⑹ " + a2.show(d)); //D有对应方法,所以A and D
System.out.println("⑺ " + b.show(b)); /*这个就是继承了,继承除了隐藏父类中和子类同名的方法外,在子类中可以直接使用父类的方法。所以B and B
所以就变成了
public String show(D obj) {
return ("A and D");
}
public String show(B obj) {
return ("B and B");
}
public String show(A obj) {
return ("B and A");
*/
System.out.println("⑻ " + b.show(c)); //C 的父类是B,所以B and B
System.out.println("⑼ " + b.show(d));//D有相应方法,所以A and D
}
}
class A {
public String show(D obj) {
return ("A and D");
}
public String show(A obj) {
return ("A and A");
}
}
class B extends A {
public String show(B obj) {
return ("B and B");
}
public String show(A obj) {
return ("B and A");
}
}
class C extends B {
}
class D extends B {
}
Q4: 求用MATLAB编写的层次分析法程序
%层次分析法的matlab程序
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 kp
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));
disp('权向量');disp(w);
disp('最大特征值');disp(t);
2、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);
disp('最大特征值');disp(t);
%以下是一致性检验
扩展资料:
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
参考资料来源:百度百科-MATLAB
层次分析法java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于层次分析法java代码是什么、层次分析法java代码的信息别忘了在本站进行查找喔。







