using System;
using System.Collections.Generic;
using System.Text;

namespace AHP
{
    public static class Formulas
    {
        //经验RI数组
        public static double[] RI = new double[15] { 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 };

//对比较矩阵进行归一化,返回特征向量W
        public static double[] normalize(double[][] matrix)
        {
            int row = matrix.Length;
            int column = matrix[0].Length;
           
            double[] Sum_column = new double[column];
            for (int i = 0; i < column; i++)
            {
                Sum_column[i] = 0;
                for (int j = 0; j < row; j++)
                {
                    Sum_column[i] += matrix[j][i];
                }
            }

//进行归一化,计算特征向量W
            double[] w = new double[row];
            for (int i = 0; i < row; i++)
            {
                w[i] = 0;
                for (int j = 0; j < column; j++)
                {
                    w[i] += matrix[i][j] / Sum_column[j];
                }
                w[i] /= row;
            }

return w;
        }

//进行一致性校验
        public static checkResult checkCR(double[][] matrix)
        {
            checkResult res = new checkResult();

int row = matrix.Length;
            int column = matrix[0].Length;

res.w = Formulas.normalize(matrix);

//计算AW
            double[] aw = new double[row];
            for (int i = 0; i < row; i++)
            {
                aw[i] = 0;
                for (int j = 0; j < column; j++)
                {
                    aw[i] += matrix[i][j] * res.w[j];
                }
            }

res.body = matrix;

//求和
            double sum = 0;
            for (int i = 0; i < row; i++)
            {
                sum += aw[i] / res.w[i];
            }

//最大特征根
            res.r = sum / column;

//一致性指标
            res.CI = (res.r - column) / (column - 1);

//当前节点的检验系数
            res.CR = res.CI / Formulas.RI[column - 1];

if (res.CR < 0.1)
            {
                res.success = true;
            }

return res;
        }

//将类似1/3格式的字符串转为数字
        public static double CalculationFormula(string formula)
        {
            if (formula.IndexOf('/') > 0)
            {
                string[] kt = formula.Split('/');
                return Double.Parse(kt[0]) / Double.Parse(kt[1]);
            }
            return Double.Parse(formula);
        }

//代码结束
    }
}

C# AHP层次分析法:一致性校验相关推荐

  1. 用AHP层次分析法挑选最佳结婚对象

    为了使文章读起来比较有趣,假设屏幕前的你现在中了彩票头奖,奖金5亿RMB.于是你彻底解放不用再写代码啦,天天开辆法拉利到处玩,来给你介绍对象的媒人踏破家门.经过初赛.复赛.泳装.晚装.才艺展示之后,仍 ...

  2. AHP层次分析法(Analytic Hierarchy Process)——个人学习笔记

    目录 一.相关知识与例子 二.代码实现 一.相关知识与例子 层次分析法是数学建模过程中最基础的模型之一,主要应用于评价问题.层次分析法是对一些较为复杂.较为模糊的问题作出决策的简易方法,其适用于那些难 ...

  3. AHP层次分析法分析流程

    AHP层次分析法分析流程: 一.案例背景 当前有一项研究,想要构建公司绩效评价指标体系,将一级指标分为4个,分别是:服务质量.管理水平.运行成本.安全生产,现在想要确定4个指标的权重. AHP层次分析 ...

  4. 数学建模之AHP层次分析法

    一.定义 层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标.准则.方案等层次,在此基础之上进行定性和定量分析的决策方法.该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国 ...

  5. Matlab基于SEIRD模型,NSIR预测模型,AHP层次分析法新冠肺炎预测与评估分析

    全文链接:http://tecdat.cn/?p=32175 分析师:Jiahui Zhao 新型冠状病毒肺炎COVID-19 给中国乃至全世界都带来了深重的灾难,对世界经济也造成了不可逆的影响(点击 ...

  6. AHP层次分析法matlab实现

    AHP层次分析法的步骤和matlab实现方法 AHP (Analytic Hierarchy Process)层次分析法是美国运筹学家T. L. Saaty教授于二十世纪70年代提出的一种实用的多方案 ...

  7. AHP层次分析法与python代码讲解(处理论文、建模)

    目录 AHP是啥 题目  ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重  方法1:算术平均法求权重 一般步骤  表达式解释 代码实现 方法2:几何平均法求权重 一 ...

  8. 【AHP层次分析法python部分实现】

    提示:仅用到AHP层次分析法的部分功能因此只完成了python的部分实现 目录 前言 一.AHP是什么? 层次分析法的特点: 层次分析法的原理: 二.使用步骤 参考视频 前言 提示:这里可以添加本文要 ...

  9. MATLAB AHP AHP层次分析法code 自写代码 完美运行。 权重设计

    MATLAB AHP AHP层次分析法code 自写代码 完美运行. 权重设计 ID:5150612144581085YouthOG

  10. AHP层次分析法在水利中的实践技术应用

    原文:AHP层次分析法在水利中的实践技术应用 内容简述: 1.认识 AHP,掌握 AHP 的基本原理,优缺点及建模的步骤.以手算案例的方式,熟 悉层次分析法的计算过程,为后期学习软件夯实理论基础. 2 ...

最新文章

  1. 把时间当作朋友(第一版)笔记
  2. 常考题 | IoU 计算
  3. 脑电实验注意事项及实验过程中伪迹识别
  4. JVM源码—教你傻瓜式编译openjdk7
  5. stanford course
  6. vue2.0中的:is和is的区别
  7. postgresql 安装使用
  8. SAP License:系统退货处理流程
  9. InfluxDB Cli中查询结果中time格式显示设置
  10. AC日记——Roma and Poker codeforces 803e
  11. 第四:搜索算法应用 - 四皇后问题
  12. STM32H7+LAN8720A之ETH与LWIP配置问题(End)
  13. SWOT分析》思维导图,帮助你做好企业优势劣势分析图
  14. 概率论与数理统计公式整理
  15. 怎么更换电脑的默认浏览器?
  16. 一些CS领域、互联网领域的名词解释,作为知识补充
  17. 领导喜欢员工的15种素质
  18. My future of programming
  19. 我的世界服务器显示弹幕,我的世界直播弹幕模组
  20. 图吧为什么叫图拉丁_如何评价百度贴吧「图拉丁吧」?

热门文章

  1. 常用的音频处理库介绍
  2. 顶尖、顶级、权威期刊目录
  3. 软件开发都需要哪些岗位参与?
  4. 《SteamVR2.2.0快速入门》(Yanlz+Unity+XR+OpenVR+OpenXR+SteamVR+Valve+Vive+Oculus+Quickstart+HMD+立钻哥哥++ok++)
  5. matlab中非线性误差分析方法,matlab计算方法实验指导误差分析
  6. hbuilderx为什么打不开_windows系统,HBuilderX无法启动、点击无反应、或启动报错的解决方案...
  7. php codeigniter ext,PHP CodeIgniter框架源码解析
  8. 计算机一级用写在简历里面吗,写简历要小心,简历填写最忌讳的是什么,你知道吗?...
  9. Lua脚本做游戏外挂
  10. 20160218.CCPP体系详解(0028天)