文章目录

  • 例题
    • (1)原始矩阵正向化
    • (2)标准化处理
    • (3)计算得分并归一化
  • 代码
  • Reference

例题

题目:评价下表中20条河流的水质情况

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物营养物量介于10-20之间最佳,超过20或低于10均不好。

(1)原始矩阵正向化

1.1 常见的四种指标

原始矩阵正向化就是将所有的指标类型统一转化为极大型指标
1.2 指标转换方法
①极小型指标–>极大型指标

②中间型指标–>极大型指标

其中,当x_i越靠近中间值x_best,转换后数值越大。
③区间型指标–>极大型指标

其中,ab分别为区间的下界和上界。当x_i处于区间范围内时,为其最佳状态。离开区间范围距离越远,转换后得到的数值越小。
1.3 本题中的指标类型与指标类型转化

含氧量 PH值 细菌总数 植物性营养物量
极大型 中间型 极小型 区间型

①PH值:中间型–>极大型

function [posit_x] = Mid2Max(x,best)M = max(abs(x-best));posit_x = 1 - abs(x-best) / M;
end

②细菌总数:极小型–>极大型

function [posit_x] = Min2Max(x)posit_x = max(x)-x;
end

③植物性营养物量:区间型–>极大型

function[posit_x] = Inter2Max(x,a,b)nrow = size(x,1);M = max([a-min(x),max(x)-b]);posit_x = zeros(nrow,1);%[0;0;0;...;0]for i=1:nrowif x(i) < aposit_x(i) = 1-(a-x(i))/M;elseif x(i) > bposit_x(i) = 1-(x(i)-b)/M;elseposit_x(i) = 1;endend
end

正向化后的矩阵X:

(2)标准化处理

目的:消除不同量纲的影响

Z = x ./ repmat(sum(x .*x) .^0.5 ,n,1);
disp('标准化矩阵 z = ')
disp(Z)

(3)计算得分并归一化


性质:①0≤S≤1,S越大越接近于最大值

D_P = sum([(Z - repmat(max(Z),n,1)) .^2],2) .^0.5;
D_N = sum([(Z - repmat(min(Z),n,1)) .^2],2) .^0.5
S = D_N ./ (D_P+D_N);
disp('最后的得分为:')
stand_S = S / sum(S)
[sorted_S index] = sort(stand_S.'descend')

sort(___,direction) 使用上述任何语法返回按 direction 指定的顺序显示的 A 的有序元素。‘ascend’ 表示升序(默认值),‘descend’ 表示降序。
C = max(A) 返回一个数组各不同维中的最大元素。如果A是一个向量,max(A)返回A中的最大元素。如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一行向量包含了每一列的最大元素
结果:

stand_S =
0.0451
0.0478
0.0485
0.0488
0.0431
0.0448
0.0539
0.0510
0.0681
0.0684
0.0702
0.0591
0.0527
0.0192
0.0533
0.0434
0.0466
0.0438
0.0358
0.0565
sorted_S =
0.0702
0.0684
0.0681
0.0591
0.0565
0.0539
0.0533
0.0527
0.0510
0.0488
0.0485
0.0478
0.0466
0.0451
0.0448
0.0438
0.0434
0.0431
0.0358
0.0192
index =
11
10
9
12
20
7
15
13
8
4
3
2
17
1
6
18
16
5
19
14

代码

mytopsis.m

%%  第一步:把数据复制到工作区,并将这个矩阵命名为X
% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X
% (2)在Excel中复制数据,再回到Excel中右键,点击粘贴Excel数据(Ctrl+Shift+V)
% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件
clc,clear;
load data_water_quality.mat
%% 第二步:原始矩阵正向化
[n m] = size(X);
disp(['有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])
Choice = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0:  ']);if Choice == 1Position = input('请输入需要正向化处理的指标所在的列,例如第1 2 3三列需要处理,那么你需要输入[1 2 3]:');disp('输入需要处理列的指标类型(1:极小型, 2:中间型, 3:区间型) ')Type = input('例如:第2列是极小型,第3列是区间型,第6列是中间型,就输入[1,3,2]:  ');for i = 1: size(Position,2)X(:,Position(i)) = myPositivization(X(:,Position(i)),Type(i),Position(i));enddisp('正向化后的矩阵 X =  ')disp(X)
end
%% 第三步:正向化矩阵标准化
Z = X ./ repmat(sum(X .*X) .^0.5,n,1);
disp('标准化矩阵 Z = ')
disp(Z)
%% 第四步:计算得分并归一化
D_P = sum([(Z - repmat(max(Z),n,1)) .^2 ],2) .^0.5;
D_N = sum([(Z - repmat(min(Z),n,1)) .^2 ],2) .^0.5;
S = D_N ./ (D_P+D_N);    % 未归一化的得分
disp('最后的得分为:')
stand_S = S / sum(S)
[sorted_S,index] = sort(stand_S ,'descend')

myPositivization.m

function [posit_x] = myPositivization(x,type,i)if type == 1 %极小型disp(['第' num2str(i) '列是极小型'] )posit_x = Min2Max(x);  disp(['第' num2str(i) '列极小型正向化处理完成'] )disp('##################分界线##################')elseif type == 2 %中间型disp(['第' num2str(i) '列是中间型'] )best = input('请输入x_best: ');posit_x = Mid2Max(x,best);disp(['第' num2str(i) '列中间型正向化处理完成'] )disp('##################分界线##################')elseif type ==3 %区间型disp(['第' num2str(i) '列是区间型'] )a = input('请输入区间的下界a: ');b = input('请输入区间的上界b: '); posit_x = Inter2Max(x,a,b);disp(['第' num2str(i) '列区间型正向化处理完成'] )disp('##################分界线##################')elsedisp('wrong type_number')end
end

Mid2Max.m

function [posit_x] = Mid2Max(x,best)M = max(abs(x-best));posit_x = 1 - abs(x-best) / M;
end

Min2Max.m

function [posit_x] = Min2Max(x)posit_x = max(x) - x;%posit_x = 1 ./ x;    %如果x全部都大于0,也可以这样正向化
end

Inter2Max.m

function [posit_x] = Inter2Max(x,a,b)r_x = size(x,1);  % row of x M = max([a-min(x),max(x)-b]);posit_x = zeros(r_x,1);   %zeros函数用法: zeros(3)  zeros(3,1)  ones(3)% 初始化posit_x全为0  初始化的目的是节省处理时间for i = 1: r_xif x(i) < aposit_x(i) = 1-(a-x(i))/M;elseif x(i) > bposit_x(i) = 1-(x(i)-b)/M;elseposit_x(i) = 1;endend
end

Reference

清风数学建模:
https://www.bilibili.com/video/BV1DW411s7wi

国赛培训——评价模型——TOSIS法相关推荐

  1. 2022年数模国赛冲刺之模型复习2

    组合预测法 前言 一.组合预测法技术 二.预测性能评价方法 2.1 精度指标 2.2 样本外检验和样本内检验 2.3 动态时间弯曲距离评价方法 2.4 二阶预测有效度评价方法 2.5 预测模型的准确性 ...

  2. 计算机检测维修与数据恢复国赛培训线上直播课火热进行中

    红警(中国)维修连锁,已于2020年2月份正式上线"网上教学"模块,利用"互联网+教育"进行直播教学. 学生在线学习 线上 直播课 一.培训目标 通过理论与实战 ...

  3. 评价模型-TOPSIS法

    TOPSIS法亦称理想解法,是一种有效的多指标评价方法. 1.1 方法和原理     首先设置多属性的决策方案集为 D={d11,d2,...,dm} D = { d 1 1 , d 2 , . . ...

  4. 评价模型TOPSIS法的计算--基于Excel

    方法介绍: 上篇文章介绍了熵权法的计算,得到各个指标的权重.接下来讲解TOPSIS法. TOPSIS法是一种逼近理想解排序方法,基本思想是:把综合评价的问题通过列成矩阵,通过矩阵归一确定理想解和负理想 ...

  5. 国赛培训——随机化算法——蒙特卡洛模拟

    文章目录 二:实例代码 rand,randi,unifrnd,randperm normrnd,exprnd plot 数值显示 随机数种子 2.1 圆周率随机模拟计算 2.2 三门问题 2.3 排队 ...

  6. 备战数学建模国赛,快速搞定算法模型!

    全世界只有3.14 % 的人关注了 青少年数学之旅 说到数学建模,大家的第一反应就是国赛.美赛等数学建模比赛,但这只是冰山一角,不过这个反应却也很正常,因为很多小伙伴接触数学建模的契机,大部分还是因为 ...

  7. 2022数学建模国赛备赛阶段性记录(1-1)

    数学建模国赛培训记录,主要使用软件为MATLAB,主要内容为在数学建模竞赛中常用的操作.数学与模型以及部分练习题的解析. 一.常规操作 1.基本运算 MATLAB内四则运算相当于计算机的加减乘除,对应 ...

  8. 【2021年数学建模国赛C题第一问】基于TOPSIS法评价类模型

    根据附件 1,对 402 家供应商的供货特征进行量化分析,建立反映保障企业生产重要性的数学模型,在此基础上确定 50 家最重要的供应商,并在论文中列表给出结果. 一.问题重述 1.1问题背景 1.2需 ...

  9. [刨根问底] 五分钟搞懂组合评价模型—模糊Borda (以2021 年大学生数模国赛C题为例)

    组合评价模型-模糊Borda(Matlab) 我们的征途是星辰大海,而并非烟尘人间. 目录 组合评价模型-模糊Borda(Matlab) 一.模糊Borda法简介 二.模糊Borda法主要步骤 (1) ...

最新文章

  1. 程序、进程、线程区别与联系
  2. 神经张量网络:探索文本实体之间的关系
  3. 开启apache的server-status辅助分析工具
  4. 基础知识漫谈(1): 想到哪儿写到哪儿
  5. Android JNI 报错(signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr )
  6. 信用卡逾期记录已经超过5年,为何还不能申请贷款?
  7. 网络存储(三)之ISCSI搭建的入门
  8. 信号完整性与电源完整性分析_电源完整性,信号完整性,你说哪个更重要一点?...
  9. 关于Bugzilla WebService接口
  10. 如何在Ubuntu中更改用户密码
  11. XCODE GDB这个是老版本xcode,新版的是lldb
  12. 程序员 数学_程序员数学课程
  13. iMX8MM u-boot2021.04移植
  14. MongoVUE破解
  15. 两级缓存框架J2Cache的使用
  16. Tenor 和numpy array 相互转换
  17. ARPG游戏开发知识整理。
  18. 前端与后台(学习自某B站Up主)
  19. [地图]常用的地图结构
  20. 大数据开发之安装mysql

热门文章

  1. ros ekf融合odom imu ov信息
  2. Activity重新创建之recreate
  3. PaddleOCR在文字检测方面上存在问题
  4. 磁盘分区误删及恢复过程
  5. JMM内存可见性问题-工作内存读写主存时机
  6. 论文笔记:Low-Rank Tensor Constrained Multiview Subspace Clustering
  7. python os.urandom 安全_python SystemRandom/os.urandom总是有足够的熵来实现好的cryp吗
  8. linux sftp上传速度慢,华三S5500V2-34S-EI交换机关于SFTP传输慢的问题
  9. 雷蛇公布2019年全年业绩
  10. php声明变量不赋值,PHP中变量无需另外声明,可在赋值时直接创建。