精华内容
下载资源
问答
  • 判断矩阵的一致性保证、权重的求解是层次分析法的主要环节,如何求得元素的权重并确保判断矩阵满足一致性是层次分析法的主要研究方向.采用遗传算法求解判断矩阵排序权值,并运用模糊综合评价法对煤矿系统安全进行综合...
  • 为了提高矿井瓦斯涌出量的预测精度,采用改进层次分析法对指数预测,双曲线预测和灰色预测3种传统预测方法,从稳定性,数据利用和适用时间上来进行加权组合,提出一种基于改进层次分析法的组合预测方法,并对西北某矿区4...
  • 基于改进层次分析法的雷达模拟机综合评价方法研究,宋薇薇,,为了提高雷达管制模拟机综合评价的准确性和有效性,减少评判者的主观差异对评判结果的影响,提出了一种基于改进层次分析法理论的
  • 本文基于对层次分析法在处理多目标决策问题时计算量较大、易出现误差情况提出改进的目的,采用修改标度值和简化判断矩阵的方法,有效地解决了层次分析法在处理多目标决策问题时由于标度值差异太小而容易引起误差...
  • 采用三元标度分析法对传统的层次分析法进行改进,简化了对各影响因素进行权重分析过程,运用模糊数学和隶属度函数相关理论分析所得权重向量,经过推导可以得出煤与瓦斯突出等级综合分析结果,运用二级评判的方法...
  • 综合国内外有关创业机会文献,总结已有创业机会评估方法的不足,并针对传统层次分析法(AHP)在实际应用中存在问题,将改进的层次分析法,即三标度AHP,从定量与定性,主观与客观相结合角度对创业机会进行评估,并...
  • 针对氯乙烯生产单元危险源,结合氯乙烯生产实际,采用改进层次分析法对氯乙烯生产单元安全性影响因素(人员素质、设备设施、综合管理、作业环境及消防)进行了分析,并确定了各因素权重大小,找出了主要影响因素为人员...
  • 采用改进的层次分析法分析道路状况多种因素,得出了当道路发生紧急事故时,符合时效性、安全性、经济性路段权值。然后根据实时交通信息,利用改进的Dijkstra算法,探索了路径权重计算方法,建立了交通网络运行...
  • 针对我国煤矿顶板事故影响因素多、...该煤矿在主观因素上安全投入到位,客观因素安全投入不足,导致顶板事故风险性突变,符合该煤矿实际情况,表明基于改进层次分析法-突变理论的方法能指导煤矿顶板事故风险分析。
  • 文章从分析动力定位系统体系结构...文章针对动力定位系统效能评估工作,采用了改进的层次分析法为评估算法,以某耙吸式挖泥船为研究对象进行评估,最后评估结果与实际运行情况相符,验证了方法的可行性和有效性。
  • 针对露天矿开采程序的优化决策涉及因素多,既有定量因素,又有定性因素,提出一种基于三标度互补判断及隶属度函数的改进模糊层次分析法,详述了主要思路及使用步骤.将该方法应用于露天矿开采程序的改进模糊评判,确定了...
  • 论文研究-从北京师范大学绩效考核看层次分析法的不足及其改进的途径.pdf, 针对北京师范大学绩效考核实践,揭示了层次分析法存在的问题,提出了具体的改进建议,主要是加强...
  • 针对进行输电网规划时难以量化各指标主观权重与客观权重问题,提出了一种将改进层次分析法、基于指标相关性指标权重确定(CRITIC)法和逼近理想解排序法(TOPSIS)相结合输电网规划方案评价方法。该方法首先分别...
  • 论文研究-改进的层次分析法用于矿井安全管理综合评价.pdf, 利用层次分析方法,建立矿井安全管理综合评价模型.提出了新指数标度,结合主观判断与客观判断,对矿井...
  • 根据交、直流微电网特点...同时采用5/5-9/1标度层次分析法确定各评价指标权重,使得确定后权重更加合理且具有更好一致性。对交、直流微电网算例评估结果验证了所提指标体系合理性以及评估方法的有效性。
  • 论文研究-层次分析法中排序权数计算方法.pdf, 本文介绍层次分析法中对于完整及残缺评判矩阵排序权数几种计算方法以及改进措施,并对多层次综合评判作了一些探讨和分析。
  • 采用三标度法改进模糊层次分析算法并将其运用于矿井冲击矿压主控因素分析,得到各影响因素对冲击矿压影响权重。在此基础上,以开滦赵各庄矿为例,验证了该方法的可行性。
  • 为了改进层次分析法主观判断矩阵所引起评价结果准确度不足,借助于粗糙集理论中属性依赖度定义,构造出属性间相对依赖客观判断矩阵,在此基础上将该客观判断矩阵和层次分析法主观判断矩阵相结合,...
  • 针对传统攻击树模型在计算攻击事件发生概率时未考虑各安全属性权值的不足,设计了一种基于层次分析法的攻击树模型。在计算攻击事件发生概率时,首先给每个叶节点赋予不同安全属性;然后根据攻击者意图和系统特征比较...
  • 层次分析在管理和运筹等方向都有广泛应用,这里提供了一些新考虑方法,使得对问题分析更加精确。
  • 基于层次分析法的公平评奖模型,肖斐,缪正平,数学建模这类竞赛的评奖往往难以有具体的评分标准。本文采用改进的层次分析法建立基本模型试制定合理的综合评判方法,尽量减小由
  • 复杂层次分析法在教学质量评估中的应用,张晗,卞佳丽,针对教学质量评估中出现的复杂分析问题,在传统的层次分析法的基础上进行了改进和扩展,形成了复杂层次分析法-CAHP。该方法可运用�
  • 层次分析法两种实现方法

    千次阅读 2011-04-10 15:08:08
    前几天看了看层次分析法,这是一个比较经典算法,一般在评价和数据融合方面应用比较多,网上也有很多针对这个算法改进也是比较多,大多数只是给这个方法加了点模糊运算。其实在现在系统中单用它做评价或是评估...
    前几天看了看层次分析法,这是一个比较经典的算法,一般在评价和数据融合方面应用比较多,网上也有很多针对这个算法改进也是比较多的,大多数只是给这个方法加了点模糊运算。其实在现在的系统中单用它做评价或是评估的话,显得有点单调。但是单单应用它给出指标的权重,然后再融合和评价用用其它算法,如基于神经网络、基于证据理论、基于云模型、基于空间坐标等等算法,这样感觉上就比较完整。
    下面就给出层次分析法的两个实现,其实这个算法主要是实现矩阵的最大特征值和对应的特征向量。高等代数与线性代数中都给出矩阵的特征值和特征向量的定义,但是用定义求对于阶数较高的时候,运算量较大。为此一般采用近视运算。常用的就是和法和幂法。幂法网上已经给出实现了,我就针对幂法的实现改编一下,给出和法的实现。
    1.和法

    import java.math.BigDecimal;
    import java.util.Arrays;

    public class AHPCompute2 {
    /**
    * @param args
    */
    public static void main(String[] args) {
    /** a为N*N矩阵 */
    double[][] a = new double[][] { { 1, 1.8, 2.2, 1 }, { 0.6, 1, 3, 1.7 },
    { 0.4, 0.3, 1, 0.5 }, { 1, 0.5, 2, 1 } };
    int N = a[0].length;
    double[] weight = new double[N];
    AHPCompute2 instance = AHPCompute2.getInstance();
    instance.weight(a, weight, N);
    System.out.println(Arrays.toString(weight));
    }

    // 单例
    private static final AHPCompute2 acw = new AHPCompute2();

    // 平均随机一致性指针
    private double[] RI = { 0.00, 0.00, 0.58, 0.90, 1.12, 1.21, 1.32, 1.41,
    1.45, 1.49 };

    // 随机一致性比率
    private double CR = 0.0;

    // 最大特征值
    private double lamta = 0.0;

    /**
    * 私有构造
    */
    private AHPCompute2() {

    }

    /**
    * 返回单例
    *
    * @return
    */
    public static AHPCompute2 getInstance() {
    return acw;
    }

    /**
    * 计算权重
    *
    * @param a
    * @param weight
    * @param N
    */
    public void weight(double[][] a, double[] weight, int N) {

    double[] w1 = new double[N];
    double[] w2 = new double[N];
    double sum = 0.0;

    //按行求和
    for (int j = 0; j < N; j++) {
    double t = 0.0;
    for (int l = 0; l < N; l++)
    t += a[l][j];
    w1[j] = t;
    }

    //按行归一化,然后按列求和,最后得到特征向量w2
    for (int k = 0; k < N; k++) {
    sum = 0;
    for (int i = 0; i < N; i++) {
    sum = sum + a[k][i] / w1[i];
    }
    w2[k] = sum / N;
    }

    lamta = 0.0;

    //求矩阵和特征向量的积,然后求出特征值
    for (int k = 0; k < N; k++) {
    sum = 0;
    for (int i = 0; i < N; i++) {
    sum = sum + a[k][i] * w2[i];
    }
    w1[k] = sum;
    lamta = lamta + w1[k] / w2[k];
    }

    // 计算矩阵最大特征值lamta,CI,RI
    lamta = lamta / N;

    double CI = (lamta - N) / (N - 1);

    if (RI[N - 1] != 0) {
    CR = CI / RI[N - 1];
    }

    // 四舍五入处理
    lamta = round(lamta, 3);
    CI = round(CI, 3);
    CR = round(CR, 3);

    for (int i = 0; i < N; i++) {
    w1[i] = round(w1[i], 4);
    w2[i] = round(w2[i], 4);
    }
    // 控制台打印输出

    System.out.println("lamta=" + lamta);
    System.out.println("CI=" + CI);
    System.out.println("CR=" + CR);

    // 控制台打印权重
    System.out.println("");

    System.out.println("w1[]=");
    for (int i = 0; i < N; i++) {
    System.out.print(w1[i] + " ");
    }
    System.out.println("");

    System.out.println("w2[]=");
    for (int i = 0; i < N; i++) {
    weight[i] = w2[i];
    System.out.print(weight[i] + " ");
    }
    System.out.println("");
    }

    /**
    * 四舍五入
    *
    * @param v
    * @param scale
    * @return
    */
    public double round(double v, int scale) {
    if (scale < 0) {
    throw new IllegalArgumentException(
    "The scale must be a positive integer or zero");
    }
    BigDecimal b = new BigDecimal(Double.toString(v));
    BigDecimal one = new BigDecimal("1");
    return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
    * 返回随机一致性比率
    *
    * @return
    */
    public double getCR() {
    return CR;
    }
    }




    2.幂法

    public class AHPComputeWeight {
    /**
    * @param args
    */
    public static void main(String[] args) {
    /** a为N*N矩阵 */
    double[][] a = new double[][] { { 1 ,1.8, 2.2, 1 },
    { 0.6, 1, 3, 1.7 },
    { 0.4 ,0.3, 1 ,0.5 }, { 1 ,0.5, 2, 1 }
    };
    int N = a[0].length;
    double[] weight = new double[N];
    AHPComputeWeight instance = AHPComputeWeight.getInstance();
    instance.weight(a, weight, N);
    System.out.println(Arrays.toString(weight));
    }

    // 单例
    private static final AHPComputeWeight acw = new AHPComputeWeight();

    // 平均随机一致性指针
    private double[] RI = { 0.00, 0.00, 0.58, 0.90, 1.12, 1.21, 1.32, 1.41,
    1.45, 1.49 };

    // 随机一致性比率
    private double CR = 0.0;

    // 最大特征值
    private double lamta = 0.0;

    /**
    * 私有构造
    */
    private AHPComputeWeight() {

    }

    /**
    * 返回单例
    *
    * @return
    */
    public static AHPComputeWeight getInstance() {
    return acw;
    }

    /**
    * 计算权重
    *
    * @param a
    * @param weight
    * @param N
    */
    public void weight(double[][] a, double[] weight, int N) {
    // 初始向量Wk
    double[] w0 = new double[N];
    for (int i = 0; i < N; i++) {
    w0[i] = 1.0 / N;
    }

    // 一般向量W(k+1)
    double[] w1 = new double[N];

    // W(k+1)的归一化向量
    double[] w2 = new double[N];

    double sum = 1.0;

    double d = 1.0;

    // 误差
    double delt = 0.00001;

    while (d > delt) {
    d = 0.0;
    sum = 0;

    // 获取向量
    //int index = 0;
    for (int j = 0; j < N; j++) {
    double t = 0.0;
    for (int l = 0; l < N; l++)
    t += a[j][l] * w0[l];
    // w1[j] = a[j][0] * w0[0] + a[j][1] * w0[1] + a[j][2] * w0[2];
    w1[j] = t;
    sum += w1[j];
    }

    // 向量归一化
    for (int k = 0; k < N; k++) {
    w2[k] = w1[k] / sum;

    // 最大差值
    d = Math.max(Math.abs(w2[k] - w0[k]), d);

    // 用于下次迭代使用
    w0[k] = w2[k];
    }
    }

    // 计算矩阵最大特征值lamta,CI,RI
    lamta = 0.0;

    for (int k = 0; k < N; k++) {
    lamta += w1[k] / (N * w0[k]);
    }

    double CI = (lamta - N) / (N - 1);

    if (RI[N - 1] != 0) {
    CR = CI / RI[N - 1];
    }

    // 四舍五入处理
    lamta = round(lamta, 3);
    CI = round(CI, 3);
    CR = round(CR, 3);

    for (int i = 0; i < N; i++) {
    w0[i] = round(w0[i], 4);
    w1[i] = round(w1[i], 4);
    w2[i] = round(w2[i], 4);
    }
    // 控制台打印输出

    System.out.println("lamta=" + lamta);
    System.out.println("CI=" + CI);
    System.out.println("CR=" + CR);

    // 控制台打印权重
    System.out.println("w0[]=");
    for (int i = 0; i < N; i++) {
    System.out.print(w0[i] + " ");
    }
    System.out.println("");

    System.out.println("w1[]=");
    for (int i = 0; i < N; i++) {
    System.out.print(w1[i] + " ");
    }
    System.out.println("");

    System.out.println("w2[]=");
    for (int i = 0; i < N; i++) {
    weight[i] = w2[i];
    System.out.print(w2[i] + " ");
    }
    System.out.println("");
    }

    /**
    * 四舍五入
    *
    * @param v
    * @param scale
    * @return
    */
    public double round(double v, int scale) {
    if (scale < 0) {
    throw new IllegalArgumentException(
    "The scale must be a positive integer or zero");
    }
    BigDecimal b = new BigDecimal(Double.toString(v));
    BigDecimal one = new BigDecimal("1");
    return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
    * 返回随机一致性比率
    *
    * @return
    */
    public double getCR() {
    return CR;
    }
    }


    展开全文
  • 本文提出了基于人机工程学和用户需求的层次分析法(AHP),Kano模型和质量函数展开方法,以改进孟加拉国拖拉机驾驶员拖拉机座椅设计。 已对50名拖拉机驾驶员进行了调查,以确定当前座椅问题。 通过分析数据,...
  • 以某煤矿自燃事故为例,将层次分析法与因果分析法相结合,提出了层次重要度因果分析法。该方法不仅从定性角度分析了煤矿自燃事故引发因素,还定量地给出了各因素重要度,对于分析煤矿事故原因及提出重点改进措施具有...
  • 为进一步提高评估过程中的客观公正性,提出了一种结合正交设计思想的改进层次分析法.该方法将原评价体系中的指标和其下被评价的各个对象作为正交试验设计中的因素及其水平...
  • 随着管道建设大规模开展,管道压覆煤矿采空区工程案例越来越多,煤层顶板稳定性评价在矿产压覆谈判、...结果表明:改进可拓层次分析法作为一种系统、简洁和科学评价方法,是对煤层顶板稳定性评价方法的有益补充和尝试。
  • 自适应本体映射方法针对目前大多数本体映射方法应用于不同映射任务时各种映射策略不能根据本体间...糊层次分析法最优地结合各种策略。实验表明,该方法在保证通用性和稳定性同时,提高了映射结果查全率和查准率。
  • 运用模糊数学方法层次分析法进行改进,确定各指标因素权重,构建合成氨装置安全现状综合评价模型,并运用该模型对某合成氨装置安全现状进行综合评价。结果表明:该评价方法可以有效地对合成氨装置安全现状进行综合...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
关键字:

层次分析法的改进方法