public static void main(String args[])
{
Caltest1 ct=new Caltest1();
Caltest1 ct1=new Caltest1();
Caltest1 ct2=new Caltest1();
Caltest1 ct3=new Caltest1();
//目标层比较矩阵
double Cal[][]={{1,4,3},{0.25,1,2},{0.33333333,0.5,1}};
double Cal1[][]={{1,4,3},{0.25,1,2},{0.33333333,0.5,1}};
//准则层(元素1)比较矩阵
double Cal2[][]={{1,5,2},{0.2,1,0.5},{0.5,2,1}};
double Cal3[][]={{1,5,2},{0.2,1,0.5},{0.5,2,1}};
//准则层(元素2)比较矩阵
double Cal4[][]={{1,0.2,0.5},{5,1,2},{2,0.5,1}};
double Cal5[][]={{1,0.2,0.5},{5,1,2},{2,0.5,1}};
//准则层(元素3)比较矩阵
double Cal6[][]={{1,2,0.25},{0.5,1,0.125},{4,8,1}};
double Cal7[][]={{1,2,0.25},{0.5,1,0.125},{4,8,1}};
ct.setN(3);//矩阵的阶数,共享
int n=ct.getN();
double arr[]=new double[n];//原始比较矩阵的每列和,目标层
double arr1[]=new double[n];//单层权重,目标层
double arr2[]=new double[n];//A*w,目标层
double arr11[]=new double[n];//原始比较矩阵的每列和,准则层(元素一)
double arr1_1[]=new double[n];//单层权重,准则层(元素一)
double arr2_1[]=new double[n];//A*w,准则层(元素一)
double arr22[]=new double[n];//原始比较矩阵的每列和,准则层(元素二)
double arr1_2[]=new double[n];//单层权重,准则层(元素二)
double arr2_2[]=new double[n];//A*w,准则层(元素二)
double arr33[]=new double[n];//原始比较矩阵的每列和,准则层(元素三)
double arr1_3[]=new double[n];//单层权重,准则层(元素三)
double arr2_3[]=new double[n];//A*w,准则层(元素三)
ct.cal=Cal;
ct.cal1=Cal1;
ct1.cal=Cal2;
ct1.cal1=Cal3;
ct2.cal=Cal4;
ct2.cal1=Cal5;
ct3.cal=Cal6;
ct3.cal1=Cal7;
Caltest1.setHm();//各矩阵共享
double CI,nameda,RI,CR;
double CI1,nameda1,CR1;
double CI2,nameda2,CR2;
double CI3,nameda3,CR3;
Double ri=new Double(0);
ri=(Double)ct.hm.get(3);//ct.hm.get(3)返回的是一个对象
RI=ri.doubleValue();//得到RI,共享
//计算目标层相关系数
ct.colvectortoone(arr);
arr1=ct.rowsum(arr1);
nameda=ct.getnamda(arr1, arr2);
System.out.println("最大特征值是 :"+nameda);//打印最大特征值
CI=(nameda-n)/(n-1);
System.out.println("计算的一致性指标CI:"+CI);
System.out.println("查出的平均随机一致性指标RI:"+RI);
CR=CI/RI;
System.out.println("一致性比率CR :"+CR);
if(CR<0.1)
{
System.out.println("比较矩阵不一致程度在容许范围内,可用其特征向量作为权向量");
}
else
{
System.out.println("请重新构造比较矩阵");
}
//计算准则层元素一相关系数
ct1.colvectortoone(arr11);
arr1_1=ct1.rowsum(arr1_1);
nameda1=ct1.getnamda(arr1_1, arr2_1);
System.out.println("最大特征值是 :"+nameda1);//打印最大特征值
CI1=(nameda1-n)/(n-1);
System.out.println("计算的一致性指标CI1 :"+CI1);
System.out.println("查出的平均随机一致性指标RI :"+RI);
CR1=CI1/RI;
System.out.println("一致性比率CR1 :"+CR1);
if(CR1<0.1)
{
System.out.println("比较矩阵不一致程度在容许范围内,可用其特征向量作为权向量");
}
else
{
System.out.println("请重新构造比较矩阵");
}
//计算准则层元素二相关系数
ct2.colvectortoone(arr22);
arr1_2=ct2.rowsum(arr1_2);
nameda2=ct2.getnamda(arr1_2, arr2_2);
System.out.println("最大特征值是 :"+nameda2);//打印最大特征值
CI2=(nameda2-n)/(n-1);
System.out.println("计算的一致性指标CI2 :"+CI2);
System.out.println("查出的平均随机一致性指标RI :"+RI);
CR2=CI2/RI;
System.out.println("一致性比率是CR2 :"+CR2);
if(CR2<0.1)
{
System.out.println("比较矩阵不一致程度在容许范围内,可用其特征向量作为权向量");
}
else
{
System.out.println("请重新构造比较矩阵");
}
//计算准则层元素三相关系数
ct3.colvectortoone(arr33);
arr1_3=ct3.rowsum(arr1_3);
nameda3=ct3.getnamda(arr1_3, arr2_3);
System.out.println("最大特征值是 :"+nameda3);//打印最大特征值
CI3=(nameda3-n)/(n-1);
System.out.println("计算的一致性指标CI3 :"+CI3);
System.out.println("查出的平均随机一致性指标RI :"+RI);
CR3=CI3/RI;
System.out.println("一致性比率CR3 :"+CR3);
if(CR3<0.1)
{
System.out.println("比较矩阵不一致程度在容许范围内,可用其特征向量作为权向量");
}
else
{
System.out.println("请重新构造比较矩阵");
}
//组合权向量的计算
double corvector[][] = new double[3][3];
//构造准则层的权向量矩阵
System.out.println("****************构造准则层的权向量矩阵开始****************");
for(int j=0;j<n;j++)
{
for(int i=0;i<n;i++)
{
if(j==0)
{
corvector[i][j]=arr1_1[i];
}
if(j==1)
{
corvector[i][j]=arr1_2[i];
}
if(j==2)
{
corvector[i][j]=arr1_3[i];
}
}
}
System.out.println("****************构造准则层的权向量矩阵结束****************");
//打印准则层矩阵
System.out.println("****************打印准则层的权向量矩阵开始****************");
for(int j=0;j<n;j++)
{
for(int i=0;i<n;i++)
{
System.out.print(corvector[j][i]+"\t");
}
System.out.println();
}
System.out.println("****************打印准则层的权向量矩阵结束****************");
//打印目标层矩阵
System.out.println("****************打印目标层的权向量矩阵开始****************");
for(int j=0;j<n;j++)
{
System.out.println(arr1[j]);
}
System.out.println("****************打印目标层的权向量矩阵结束****************");
//求组合权重
System.out.println("****************求组合权重开始****************");
double arr3[]=new double[3];//保存组合权重的数据
for(int j=0;j<n;j++)
{
for(int i=0;i<n;i++)
{
arr3[j]+=corvector[j][i]*arr1[i];//得到组合权重
}
}
System.out.println("****************求组合权重结束****************");
//打印组合权重
System.out.println("****************打印组合权重开始****************");
for(int j=0;j<n;j++)
{
System.out.println(arr3[j]);
}
System.out.println("****************打印组合权重结束****************");
}
}
- 浏览: 787877 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
发表评论
-
选股神器
2022-08-20 15:07 204最近闲来无事,突发奇想,将自己的选股思路自动化,计算机化。。 ... -
rpm安装jdk,设置环境变量
2019-05-12 22:49 6331、将jdk的rpm包拷贝到 ... -
java安全编码
2019-01-18 22:31 481软件安全问题,一般 ... -
生产者消费者
2018-07-01 21:33 429package function.thread; i ... -
打印mybatis的执行语句到控制台和文件
2017-12-13 15:11 813log4j.rootLogger=INFO,CONSOLE, ... -
java中类的加载顺序介绍(ClassLoader)
2017-11-14 11:41 8171、ClassNotFoundExcetpion 我们在 ... -
守护线程
2017-11-13 16:40 433对于线程,有个守护的线程的概念。如何理解呢?比如A线程里,n ... -
类加载机制及反射
2017-09-24 08:45 586一、Java类加载机制 ... -
java+selenium2 自动化测试框架
2017-09-15 09:36 1018package web.selenium2; ... -
JMS实例
2017-08-21 15:40 4781. JMS架构 Java 消息服务(Java M ... -
linux设置java环境
2017-08-07 16:47 454linux配置java环境变量(详细) 一. 解压安装jdk ... -
分布式
2017-07-19 12:12 450转载请注明出处:http://blog.csdn.net/l ... -
tomcat+nginx+redis
2017-07-18 16:46 477应用系统的基本架构: -
java调用远程机器的shell脚本
2017-07-14 12:19 1591此程序的目的是执行远程机器上的Shell脚本。 【环境参数 ... -
生产者消费者进阶(带有condition)
2017-05-09 17:56 585package function.thread; ... -
多线程之 CountDownLatch
2017-05-01 13:01 521package function.thread; ... -
判断服务器类型
2017-04-12 10:52 488开发时一般用tomcat,然后在测试环境发布时使用的是web ... -
IE的不同文本浏览模式页面显示
2017-04-11 14:34 541现象描述:最近在遇到的问题就是在在Chrome,火狐页面都正 ... -
java中Filter、Servlet、Listener的学习
2017-03-29 21:52 4551、Filter的功能filter功能,它使用户可以改变一个 ... -
高并发,线程池
2017-03-29 21:52 10971.高并发的内容 Zookee ...
相关推荐
总之,Java层次分析法的实现结合了软件工程与决策科学,是解决复杂问题的有效工具。通过对给定的Java代码进行学习和实践,你可以提升自己的编程能力和决策分析技巧,为未来的项目提供有力的支持。
在本压缩包文件中,包含了一个用Java实现的层次分析法的源代码,用于判断判断矩阵是否符合要求,并计算一致性比率(Consistency Ratio,简称CR)。 在AHP中,首先需要构建层次结构模型,包括目标层、准则层和方案层...
数学建模-层次分析法Java简单代码实现
在本项目中,开发者运用了JAVA编程语言实现了一个基于粒子群优化(Particle Swarm Optimization,PSO)的层次分析法算法。 粒子群优化是一种模仿鸟类群飞行为的全局优化算法,由Eberhart和Kennedy于1995年提出。在...
模糊层次分析法的Matlab实现 模糊层次分析法是一种多目标决策方法,将定量与定性相结合,广泛应用于经济管理、城市规划等多个领域。该方法的主要问题在于判断矩阵的一致性与人类思维的一致性存在差异,为了克服这个...
AHP层次分析法,全称为Analytic Hierarchy Process(分析层次过程),是一种在决策分析中广泛应用的方法,由美国运筹学家Thomas L. Saaty提出。它通过将复杂问题分解为多个层次和子因素,然后利用比较矩阵来确定各...
1、 实现了隶属度计算 2、将熵权法与层次分析法相结合 3、层次分析法分别实现了特征根法、算术平均法、开根法
本压缩包“层次分析法代码和例题数据.7z”可能包含了实现层次分析法的编程代码和相关的例题数据,这对于学习和应用层次分析法非常有帮助。 层次分析法的核心思想是将复杂的问题分解为多个层次,其中包含目标层、...
层次分析法(Analytic Hierarchy Process,简称AHP)是一种多准则决策分析方法,由美国运筹学家Thomas L. Saaty提出。它通过结构化的方法将复杂问题分解为多个层次和子问题,然后通过比较判断矩阵来确定各因素之间的...
在MATLAB中实现层次分析法,主要涉及以下步骤: 1. 建立层次结构:将问题分解为目标层、准则层和方案层,形成层次结构模型。 2. 编制判断矩阵:对每一对准则或方案进行比较,得到偏好关系的判断矩阵。 3. 计算...
层次分析法 数学建模层次分析法 数学建模层次分析法 数学建模层次分析法 数学建模层次分析法 数学建模层次分析法 数学建模层次分析法 数学建模
本书对层次分析法的基本原理进行了深入论述,并对层次分析法的某些分支和扩展方法,例如模糊层次分析法(Fuzzy AHP)、动态层次分析法和反馈系统的排序方法进行了探讨。书中还整理了大量国内外研究成果,内容丰富,...
在本项目中,"层次分析法-使用C#开发的AHP层次分析法计算器工具.zip" 提供了一个用C#编程语言实现的AHP计算器工具。 AHP层次分析法的核心步骤包括: 1. **构建层次结构**:首先,我们需要定义决策问题,并构建一个...
层次分析法,在学习层次分析法以后的一些体会和感悟
APH 层次分析法原理及 C# 实现代码 APH 层次分析法(Analytic Hierarchy Process)是一种多准则决策分析方法,旨在解决复杂的决策问题。该方法由 Thomas L. Saaty 提出,广泛应用于各个领域,包括商业、管理、工程...
层次分析法案例 层次分析法是一种系统分析和评价方法,由美国著名运筹学家萨蒂于1982年提出。该方法综合了人们主观判断,是一种简明、实用的定性分析与定量分析相结合的系统分析与评价方法。目前,该方法在国内已...
数学建模层次分析法的步骤解读,专注于解决数学建模问题,文档免费,欢迎下载,解决问题 数学建模层次分析法的步骤解读,专注于解决数学建模问题,文档免费,欢迎下载,解决问题 数学建模层次分析法的步骤解读,...
层次分析法(Analytic Hierarchy Process,简称AHP)是由T.L.Saaty教授在1970年代提出的一种实用多准则决策方法。该方法能够处理决策中涉及定性与定量因素的复杂问题,通过将问题结构化为有序的递阶层次结构,利用人...