`
zengshaotao
  • 浏览: 787825 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

层次分析法java实现

    博客分类:
  • java
 
阅读更多

做毕设时因为恐惧层次分析法的计算量,所以通过程序实现了.

层次分析法计算过程的程序化实现代码
package e_5_28;
/*
 * author 曾绍涛
 * time 2009-5-29
 * function 层次分析法的程序化计算
 */
import java.util.HashMap;
class Caltest1
{
 static int n;//矩阵的阶数
 double cal[][];//层次比较矩阵,归一化后的
 double cal1[][];//层次比较矩阵
 static HashMap hm=null;//将12阶的成对比较矩阵的平均随机一致性指标值保存在哈希映射表里
 //设置平均随机一致性指标值
 public static void setHm()
 {
  hm=new HashMap();hm.put(1, 0);hm.put(2, 0);
  hm.put(3, 0.58);hm.put(4, 0.89);hm.put(5, 1.12);
  hm.put(6, 1.24);hm.put(7, 1.32);hm.put(8, 1.41);
  hm.put(9, 1.45);hm.put(10, 1.49);hm.put(11, 1.52);
  hm.put(12, 1.54);
 }
 public int getN(){
  return n;
 }
 public void setN(int n){
  this.n = n;
 }
 //原始成对比较矩阵列向量的归一化
public void colvectortoone(double arr[])//列向量的归一化
 {
  arr=new double[n];
  System.out.println("*****************每列求加和开始*****************");
  for(int j=0;j<n;j++)
  {
   for(int i=0;i<n;i++)
   {
    arr[j]+=cal[i][j];//每列求加和
   }
  }
  System.out.println("*****************每列求加和完毕*****************");
  System.out.println("*****************打印行值和进行验证开始*****************");
  for(int i=0;i<n;i++)
  {
   System.out.println(arr[i]);//打印行值和进行验证
  }
  System.out.println("*****************打印行值和进行验证完毕*****************");
  System.out.println("*****************列向量归一化开始*****************");
  for(int j=0;j<n;j++)
  {
   for(int i=0;i<n;i++)
   {
    cal[i][j]=cal[i][j]/arr[j];//列向量归一化
   }
  }
  System.out.println("*****************列向量归一化完毕*****************");
  System.out.println("*****************打印归一化后的数组开始*****************");
  for(int j=0;j<n;j++)//打印归一化后的数组
  {
   for(int i=0;i<n;i++)
   {
    System.out.print(cal[j][i]+"\t");//列向量归一化
   }
   System.out.println();
  }
  System.out.println("*****************打印归一化后的数组结束*****************");
 }
 //得到归一化矩阵各行的行和
 public double [] rowsum(double arr1[])//按行求和,并返回求得的数组
 {
  arr1=new double[n];
  for(int j=0;j<n;j++)
  {
   for(int i=0;i<n;i++)
   {
    arr1[j]+=cal[j][i];//每行求加和
   }
  }
  System.out.println("*****************行和打印验证开始*****************");
  for(int j=0;j<n;j++)
  {
   System.out.println(arr1[j]);
  }
  System.out.println("*****************行和打印验证结束*****************");
  //以下对arr1[]进行归一化
  double sum=0;
  
  for(int i=0;i<n;i++)
  {
   sum+=arr1[i];
  }
  System.out.println("*****************向量归一化计算开始*****************");
  for(int i=0;i<n;i++)//得到权重
  {
   arr1[i]=arr1[i]/sum;
  }
  System.out.println("*****************向量归一化计算结束*****************");
  System.out.println("*****************打印权重开始*****************");
  for(int j=0;j<n;j++)
  {
   System.out.println(arr1[j]);
  }
  System.out.println("*****************打印权重结束*****************");
  return arr1;
 }
 //求最大特征值
 public double getnamda(double arr1[],double arr2[])
 {
  arr2=new double[n];
  for(int j=0;j<n;j++)
  {
   for(int i=0;i<n;i++)
   {
    arr2[j]+=cal1[j][i]*arr1[i];//得到A*w
   }
  }
  System.out.println("*****************打印A*w开始*****************");
  for(int i=0;i<n;i++)
  {
   System.out.println(arr2[i]);//打印权重向量
  }
  System.out.println("*****************打印A*w结束*****************");
  double L=0;//5*namda
  for(int i=0;i<n;i++)
  {
   L+=arr2[i]/arr1[i];
  }
  double namda=L/n;
  return namda;
 }

分享到:
评论

相关推荐

    层次分析法源代码

    在本压缩包文件中,包含了一个用Java实现的层次分析法的源代码,用于判断判断矩阵是否符合要求,并计算一致性比率(Consistency Ratio,简称CR)。 在AHP中,首先需要构建层次结构模型,包括目标层、准则层和方案层...

    数学建模-层次分析法Java实现

    数学建模-层次分析法Java简单代码实现

    java 层次分析法

    总之,Java层次分析法的实现结合了软件工程与决策科学,是解决复杂问题的有效工具。通过对给定的Java代码进行学习和实践,你可以提升自己的编程能力和决策分析技巧,为未来的项目提供有力的支持。

    层次分析法-使用JAVA开发的基于粒子群的层次分析法算法.zip

    在本项目中,开发者运用了JAVA编程语言实现了一个基于粒子群优化(Particle Swarm Optimization,PSO)的层次分析法算法。 粒子群优化是一种模仿鸟类群飞行为的全局优化算法,由Eberhart和Kennedy于1995年提出。在...

    AHP层次分析法计算权重、特征值、特征向量

    《AHP层次分析法计算权重、特征值、特征向量》 在数据分析和决策支持领域,层次分析法(Analytic Hierarchy Process,简称AHP)是一种广泛应用的多准则决策分析方法,由萨蒂教授提出。它通过将复杂问题分解为多层次...

    层次分析法,一致性检验(代码完整,数据齐全)

    在本压缩包中,包含了一个完整的MATLAB实现,以及相关的文档,可以帮助用户理解和应用层次分析法。 MATLAB是一种强大的数学计算和数据分析环境,适合进行各种科学计算任务,包括编程和算法开发。在这个案例中,`...

    AHP.zip_AHP java code_ahp_ahp java_ahp层次分析java_层次分析法

    AHP.zip文件包含了一个使用Java语言实现的层次分析法源代码,名为"AHP.war",这是一个Web应用程序的归档文件(Web ARchive)。WAR文件通常用于部署Java Web应用,它包含了所有必要的类、资源文件、配置文件以及Web...

    (完整word版)java求矩阵的特征值和特征向量(AHP层次分析法计算权重)(附源代码).pdf

    本文提供了一个使用 Java 实现 AHP 层次分析法计算权重的示例代码,帮助读者了解如何使用 Java 计算矩阵的特征值和特征向量,以及 AHP 层次分析法计算权重。 Knowledge Points: * 矩阵特征值和特征向量的概念 * ...

    层次分析法原理&代码实现.zip

    "层次分析法原理&代码实现.pdf"可能包含如何使用Java等编程语言实现AHP的具体步骤,例如: 1. 数据结构设计:创建类或结构来表示层次结构、判断矩阵、权重等信息。 2. 判断矩阵生成:编写函数读取用户输入或已有...

    层次聚类算法java数据挖掘算法源码

    层次聚类算法java数据挖掘算法源码 数据挖掘算法是根据数据创建数据挖掘模型的一组试探法和计算。 为了创建模型,算法将首先分析您提供的数据,并查找特定类型的模式和趋势。概念描述算法使用此分析的结果来定义用于...

    层次分析法中计算权重的代码.zip

    层次分析法(Analytic Hierarchy Process,AHP)是一种决策分析方法,由Thomas L. Saaty教授提出,用于处理复杂、多目标的问题。在AHP中,问题被分解成多个层次,包括目标、准则和方案等,通过比较矩阵计算各元素间...

    (完整word版)java求矩阵的特征值和特征向量(AHP层次分析法计算权重)(附源代码).docx

    本资源是一个Java实现的矩阵特征值和特征向量计算程序,使用AHP层次分析法计算权重。该程序可以计算矩阵的特征值和特征向量,并将结果输出。 知识点: 1. 矩阵的特征值和特征向量:矩阵的特征值和特征向量是线性...

    java求矩阵的特征值和特征向量AHP层次分析法计算权重附源代码.docx

    ### Java求矩阵的特征值和特征向量:AHP层次分析法计算权重 #### 一、引言 在计算机科学领域,特别是在数据处理与决策支持系统中,特征值与特征向量是线性代数中的核心概念之一。它们在解决各种问题时发挥着重要...

    层次分析法算法文档借鉴.pdf

    层次分析法的实现包括数据准备、矩阵构建、权重计算、一致性检验等步骤。首先,明确问题的层次结构,然后构建比较矩阵,接着计算权重和进行一致性检验。如果一致性检验不满足要求,需要修改比较矩阵,直至满足一致性...

    HCL.rar_Cluster Java Code_层次分析_层次聚类_聚类 java

    1. **层次分析**:层次分析法(Analytic Hierarchy Process, AHP)是决策分析的一个工具,通常用于复杂、多因素的决策问题。虽然标题提到了“层次分析”,但在描述中并未明确提及它与聚类的关系。如果这里的“层次...

    java实现二叉树最佳方法

    总之,Java实现二叉树的最佳方法依赖于对二叉树性质的深入理解以及对Java语言特性的熟练应用。递归构建和遍历是实现二叉树的两个核心方面,它们共同构建了复杂二叉树算法的基石。在实际应用中,还需要考虑树结构的...

    java求矩阵的特征值和特征向量

    本文将详细介绍如何使用Java编写程序来求解矩阵的特征值和特征向量,并通过AHP(Analytic Hierarchy Process,层次分析法)来计算权重。 #### 特征值与特征向量的基本概念 在数学中,对于一个方阵\( A \),如果...

    编译原理实验二语法分析java代码JavaCC

    本次实验的目的主要是加深对递归下降分析法的理解。 按照MiniC语言的语法规则检查词法分析输出的记号流是否符合这些规则,并根据这些规则所体现出的语言中的各种语法结构的层次性。把规则写入到JavaCC的 .jjt文件中...

    层次分析法matlab源程序.rar

    行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成...

Global site tag (gtag.js) - Google Analytics