数学建模——TOPSIS模型

前言

本文是笔者在B站的学习收获,B站教程:www.bilibili.com/video/BV1kC...

本文将通过案例详细介绍理想解法(又称TOPSIS法),包括完整建模和编程(matlab编写)过程。

正文

TOPSIS法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近正理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

问题:

研究生院试评估。

为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,下表是所给出的部分数据。

求解:

1.数据预处理

属性值 具有多种类型,包括效益型成本型区间型等。这三种属性,效益型属性越大越好,成本型属性越小越好,区间型属性是在某个区间最佳。

如上表,其中人均专著、科研经费是效益型属性,生师比是区间型属性,预期毕业率是成本型属性。

我们首先将区间型 属性的数据转换效益型数据,方法是:

对应的代码为:

less 复制代码
clc,clear
a=[0.1 5 5000 4.7    0.2 6 6000 5.6    0.4 7 7000 6.7    0.9 10 10000 2.3    1.2 2  400   1.8];
[m,n]=size(a);
x2=@(qujian,lb,ub,x)(1-(qujian(1)-x)./(qujian(1)-lb)).*(x>=lb&x<qujian(1))+...
    (x>=qujian(1)&x<=qujian(2))+(1-(x-qujian(2))./(ub-qujian(2))).*...
     (x>qujian(2)&x<=ub);
qujian=[5,6];lb=2;ub=12;
a(:,2)=x2(qujian,lb,ub,a(:,2));%对属性2进行变换

此时剩下的属性为成本型属性或效益型属性,我们需要进行向量规范化,公式为:

这种方法最大的特点就是:规范化之后,各方案的同一属性值的平方和为1.

对应的代码是:

css 复制代码
for j=1:n
    b(:,j)=a(:,j)/norm(a(:,j));%向量规范化
end

2.设加权向量

这里设加权向量为w=[0.2 0.3 0.4 0.1],得出加权的向量规范化属性矩阵:

ini 复制代码
w=[0.2 0.3 0.4 0.1];
c=b.*repmat(w,m,1);%求加权矩

得出结果:

3.求出正、负理想解

自然语言就是构造最好的结果和最坏的结果,构造方法为:

代码见下:

scss 复制代码
cstar=max(c);%求正理想解
cstar(4)=min(c(:,4))%属性4为成本型
c0=min(c);%求负理想解
c0(4)=max(c(:,4))%属性4为成本型的

4.计算欧式距离

计算各方案到正理想解和负理想解的距离,方法:

代码为:

css 复制代码
for i=1:m
    sstar(i)=norm(c(i,:)-cstar);%求到正理想解的距离
    s0(i)=norm(c(i,:)-c0);%求到负理想解的距离
end

5.计算各方案的排队指标值

即综合评价指数,方法为:

对应的代码是:

ini 复制代码
 f=s0./(sstar+s0);

6.降序排列方案:

bash 复制代码
[sf,ind]=sort(f,'descend')  %求排序结果
% "ascend"时,进行升序排序,为"descend "时,进行降序排序

分析运行结果:

把代码按照顺序放到matlab中运行,得出结果:

"6.降序排列方案"这一步要是暂时省略,可以得出:

其中s'i代表的是到正理想解的距离,s0i代表的是到负理想解的距离,f'i代表的是综合评价指数,这个值越大越好。

然后这一步再回来,得出ind=[4 3 2 1 5] ,所以这五个研究院对应的排名分别是第4个研究院最好,第3个略次之,...,第5个研究院是其中最差的

相关推荐
LNTON羚通36 分钟前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
哭泣的眼泪4082 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
Matlab精灵3 小时前
Matlab函数中的隐马尔可夫模型
开发语言·matlab·统计学习
Microsoft Word3 小时前
c++基础语法
开发语言·c++·算法
天才在此3 小时前
汽车加油行驶问题-动态规划算法(已在洛谷AC)
算法·动态规划
莫叫石榴姐4 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
茶猫_5 小时前
力扣面试题 - 25 二进制数转字符串
c语言·算法·leetcode·职场和发展
肥猪猪爸7 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
readmancynn7 小时前
二分基本实现
数据结构·算法
萝卜兽编程7 小时前
优先级队列
c++·算法