TOPSIS算法及代码

news/2024/7/3 0:28:32

TOPSIS的全称是“逼近于理想值的排序方法”

根据多项指标、对多个方案进行比较选择的分析方法,这种方法的中心思想在于首先确定各项指标的正理想值和负理想值,所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准。

优点:

能充分反映各方案之间的差距,客观真实的反应实际情况,具有真实,直观,可靠的优点,而且对其样本资料无特殊要求。TOPSIS能够集中反映总体情况,能综合分析评价,具有普遍适用性。

应用:

评价卫生质量,计划免疫工作质量,医疗质量;评价专业课程的设置,顾客满意程度,软件项目风险评价,房地产投资选址;评价企业经济效益,城市间宏观经济效益,地区科技竞争力,各地区农村小康社会等等

----------------------------------------------------------------------------------------------------------------------------------

TOPSIS算法步骤

1、用向量规范化的方法求得规范决策矩阵。设多属性决策问题的决策矩阵,规范化决策矩阵,其中

(i=1,2...,m   j=1,2...,n)

2、构成加权规范矩阵,设由决策人给定的各属性的权重向量,,则(i=1,2...,m   j=1,2...,n)

3、确定正理想解(正理想解的第j个属性)和负理想解(负理想解的第j个属性)

则:正理想解( j=1,2...,n)

负理想解( j=1,2...,n)

4、计算各方案到正理想解与负理想解的距离。

到正理想解的距离为(i=1,2...m)

到负理想解的距离为(i=1,2...m)

5、计算各方案的排队指标值(即综合评价指数)

(i=1,2...,m )

6、按由大到小排列方案的优劣次序。

----------------------------------------------------------------------------------------------------------------------------------

MATLAB程序

有‘%’的地方可灵活变换数值

a=[1 2 3;4 5 6;7 8 9];%【】
c=sqrt(sum(a.*a));
for i=1:3%【[ma,na]=size(A);          %ma为A矩阵的行数,na为A矩阵的列数】
for j=1:3%【】
d(i,j)=a(i,j)/c(j)%【d为规范化决策矩阵】
end
end
w=[1 2 3];%【】
for i=1:3%【】
for j=1:3%【】
c(i,j)=d(i,j)*w(j)%【c为加权矩阵】
end
end
cmax=max(c);
cmin=min(c);
for i=1:3%【】
c1=c(i,:)-cmax
s1(i)=norm(c1)
c2=c(i,:)-cmin
s2(i)=norm(c2)
T(i)=s2(i)/(s1(i)+s2(i))
end

 

 

 


http://lihuaxi.xjx100.cn/news/252672.html

相关文章

Spring Boot thymeleaf模版支持,css,js等静态文件添加

Thymeleaf引入 Thymeleaf是一个Java模板引擎开发库&#xff0c;可以处理和生成HTML、XML、JavaScript、CSS和文本&#xff0c;在Web和非Web环境下都可以正常工作。 1.添加依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>…

CSS布局之-水平垂直居中

对一个元素水平垂直居中&#xff0c;在我们的工作中是会经常遇到的&#xff0c;也是CSS布局中很重要的一部分&#xff0c;本文就来讲讲CSS水平垂直居中的一些方法。另外&#xff0c;文中的css都是用less书写的&#xff0c;如果看不懂less&#xff0c;可以把我给的demo链接打开&…

【Spring】编程式事务的应用场景理解

前言 我们经常在使用Spring全家桶开发JavaEE项目的时候&#xff0c;一想到事务就会习惯性的使用声明式注解Transactional,由Spring框架帮你做AOP实现事务的回滚&#xff0c;但是声明式事务恰恰比较方便&#xff0c;所以有些场景下并不好用&#xff0c;接下来我来举一个例子&am…

【青少年编程(第26周)】一下子多了很多事!

2021年08月15日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第二十六次直播活动。我们直播活动的主要内容如下&#xff1a; 首先&#xff0c;我们奖励了上周测试超过60分的小朋友。 其次&#xff0c;介绍了Datawhale青少年组队学习活动的规划&#x…

ranlib

ranlib 产生archive文件的索引 The index lists each symbol defined by a member of an archive that is a relocatable object file.

【MATLAB】数组运算

&#xff08;这里这列举笔者不熟悉的&#xff0c;容易忘的数组运算&#xff09; 1、数组的转置 >> a[1 2 3 4 5 6 7]a 1 2 3 4 5 6 7>> bab 1234567 2、对数组的赋值 >> a([1 4])[0 0]a 0 2 3 0 5 6 73、注…

“Git 是我用过最笨重的软件”!喷完 C++ 喷 Git,这位 Azure CTO 到底何许人也?...

作者 | 辛晓亮出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 几天前呼吁停用 C 改换 Rust 的微软 Azure CTO 这次又在推特上疯狂吐槽 Git&#xff0c;Mark Russinovich 称&#xff1a;“Git 是我使用过的所有软件中界面最不直观、最笨重的&#xff0c;它让我抓狂…

connect() failed (111: Connection refused) while connecting to upstream, cli

php-fpm没有运行 执行如下命令查看是否启动了php-fpm&#xff0c;如果没有则启动你的php-fpm即可 netstat -ant | grep 9000没有运行为空&#xff0c;有运行显示 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 启动方法 sudo /usr/loca…