前言:
网上关于灰色关联分析模型的文章不多、代码甚少,并且基本全是用MATLAB写的,而我对MATLAB又不是很熟悉(除了建模基本用不到),因此使用C++写了一下,行列数M和N可以自己手动修改,每项不同条件的权重也可以手动修改,很方便。

相关公式与理解:
(1)确定比较对象(评价对象)和参考数列(评价标准)。设评价对象有m个,评价指标有n个,参考数列为
比较数列为

(2)确定各指标值对应的权重。可用层次分析法等确定个指标对应的权重集W,Wk代表第k个评价指标对应的权重。

灰色关联系数:

分子为:两级最小差+rho*两级最大差。
概念:https://baike.baidu.com/item/%E5%85%B3%E8%81%94%E7%B3%BB%E6%95%B0/5571964?fr=aladdin

代码:(VS2017测试无误)

#include<iostream>
#include<cmath>
#define M 6   //此处可进行行列数的修改
#define N 7
using namespace std;
int main()
{//maxtrix of M Ndouble chushi[M][N];double biaozhunhua[M][N];cout << "input the matrix:\n";for (int i = 0;i < M;i++)for (int j = 0;j < N;j++)cin >> chushi[i][j];for (int i = 0;i < M;i++){double Max = -1.0, Min = 10000;for (int j = 0;j < N;j++){if (chushi[i][j] > Max) Max = chushi[i][j];    //得到每行的最大值和最小值作为上下界if (chushi[i][j] < Min) Min = chushi[i][j];}double jizhun = Max - Min;for (int j = 0;j < N;j++)biaozhunhua[i][j] = (chushi[i][j] - Min + 0.001) / (jizhun + 0.001);    //得到标准化矩阵,+0.01是为了防止除以0的情况}cout << endl;//下面进行两级最小差与两级最大差的计算//double liangji_max = -1, liangji_min = 10000;    //初始化double temp_max = -1, temp_min = 10000;  //存放每行的一级最大值和一级最小值for (int i = 0;i < M;i++){//两两比较得出每行的一级最大值与一级最小值double liangji_max = -1, liangji_min = 10000; //初始化for (int j = 0;j < N;j++){for (int k = 0;k < N;k++) {if (k == j) continue;double t = fabs(biaozhunhua[i][j] - biaozhunhua[i][k]);if (t > liangji_max) liangji_max = t;if (t < liangji_min) liangji_min = t;}}//赋值记录temp_max = liangji_max;if(liangji_min)temp_min = liangji_min;}//cout << temp_max << ' ' << temp_min << endl;//上面已经计算得出两级最大值和两级最小值double rho = 0.5;double fenzi = temp_min + rho * temp_max;double guanlianxishu[M][N];//下面依次计算每组数据的关联系数for(int i = 0;i < M;i++){for (int j = 0;j < N;j++){double t = fabs(biaozhunhua[i][j] - 1.0);double fenmu = t + rho * temp_max;guanlianxishu[i][j] = fenzi / fenmu;}}double weight[M] = { 0.29782,0.18947,0.24612,0.34625,0.1667,0.25383 };    //权重double guanliandu[N];   //最终关联度for (int i = 0;i < N;i++)  //对于每一列,计算其关联度{double sum = 0;for (int j = 0;j < M;j++)sum += weight[j] * guanlianxishu[j][i];guanliandu[i] = sum;}cout << "1到7号飞机对应的最终关联度分别为:\n";for (int i = 0;i < N;i++) cout << guanliandu[i] << ' ';cout << endl;system("pause");return 0;
}

灰色关联分析模型(C++代码)相关推荐

  1. 灰色关联分析_灰色关联分析模型研究综述

    灰色关联分析模型研究小结 1 引言 灰色关联分析是灰色系统理论中十分活跃的一个分支, 其基本思想是根据序列曲线几何形状来判断不同序列之间的联系是否紧密. 基本思路是通过线性插值的方法将系统因素的离散行 ...

  2. 【数学建模】灰色关联(Matlab代码实现)

    目录 1 灰色关联理论 2 算例及Matlab代码实现 2.1 算例1 2.2 算例2   2.3 算例3 2.4 算例4  3 写在最后 1 灰色关联理论 灰色关联分析l是由邓聚龙教授于1982年提 ...

  3. 【数学建模】灰色关联分析 + Matlab代码实现

    文章目录 一.学习内容: 二.学习时间: 三.学习产出: 3.1 灰色关联分析基本思想 3.2 运用灰色关联分析的基本步骤 3.3 灰色关联分析代码实现(Matlab) 3.3.1 应用一:分析产业对 ...

  4. 数学建模之灰色关联实例含代码

    参考书籍<数学建模算法与应用> 一,预备 (1)无量纲化处理技术 二,灰色关联的步骤 通过对某健将级女子铅球运动员的跟踪调查,获得其 1982 年至 1986 年每年好成绩及16 项专项素 ...

  5. matlab灰色关联代码,灰色关联分析matlab代码

    灰色关联分析 function output=grayrela(x0) %参考因子与比较因子共同存储在一个矩阵x0中,参考因子位于第一列 %斜率序列 for i=2:length(x0(:,1)) x ...

  6. (数学建模)6.1灰色系统理论与灰色关联分析模型

    参考物至关重要,参考数列也表示的是一个理想状态 将指标统一在同一量纲内,如:0-10,0-1,... 首先第一个老师各个项目的计算, 再取这个老师各个项目的平均值, 不同的多个老师通过比较平均值取优如 ...

  7. 数学建模—灰色关联分析

    1.灰色关联分析概述 对于多因素共同决定的抽象系统,人们往往希望知道,哪些是主要因素,哪些是次要因素:哪些因素对系统的发展影响较大,哪些因素对系统的影响较小.从而需要对系统进行分析. 数理统计中常用的 ...

  8. matlab灰色关联逻辑分析模型,灰色理论灰色预测模型和灰色关联度分析matlab通用代码...

    %该程序用于灰色关联分析,其中原始数据的第一行为参考序列,1至15行为正相关序列,16至17为负相关序列 clc,clear load x.txt %把原始数据存放在纯文本文件x.txt 中 %如果全 ...

  9. 关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

    灰色系统理论由我国著名学者邓聚龙教授于1982提出.灰色关联分析是灰色系统理论的一个分支,应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法. 一.灰色关 ...

最新文章

  1. Sql — CTE公用表表达式和With用法总结
  2. jax-rs jax-ws_信守承诺:针对JAX-RS API的基于合同的测试
  3. 流利的接口不利于维护
  4. C++ Programmer's Cookbook C++基础和C++高级
  5. Go Concurrency Patterns: Timing out, moving on
  6. linux m25p80 dts,OpenWrt添加开发板RT5350-EVB,并成功设置pppoe
  7. 多生产者_【并发那些事】生产者消费者问题
  8. 【监控笔记】【2.2】扩展事件——死锁监控
  9. 50. PHP 页面静态化(3)
  10. docker tag 镜像id_手摸手带你 Docker 从入门到实践
  11. http请求POST和GET调用接口以及反射动态调用Webservices类
  12. 【php导出excel,大量导出,文本格式】
  13. 如何批量将 Word 文档转为 Svg 格式
  14. vue+element+springboot前后端分离项目整合pageoffice实现在线编辑Word和Excel跟签章等
  15. STM32单片机课程自学知识点整理 - 指南版
  16. php工作表,工作表的标签在工作表的什么地方
  17. oracle数据库还原指令,oracle中备份和还原数据库的命令汇总
  18. 毕业设计——基于STM32的家庭健康监测系统
  19. java在regedit找不到_Windows找不到文件regedit打不开注册表的解决办法
  20. Blurring the Lines between Blockchains and Database Systems: the Case of Hyperledger Fabric

热门文章

  1. SAP SD V/LD标准定价报表配置
  2. 加分项——C语言实现Linux的pwd命令
  3. 用TableView实现聊天对话框
  4. 华为matebook电脑屏幕亮度动态变化的解决办法
  5. ES6-ES11笔记(1)
  6. Python 身体质量指数BMI
  7. 美团点评高级1234面:算法+HashMap+Zookeeper+线程+Redis+kafka
  8. php 微商城 开源,一款基于ThinkPHP3.2开发的微信O2O开源微商城系统_微信开源微商城WEMALL...
  9. 伯克利开源 Confluo 替代 Kafka;ofo:现场退押与线上无异
  10. debian10安装docker