TOPISIS综合评价算法

LogicAether
• 阅读 1325

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

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

%A为决策矩阵,W为权值矩阵,M为正指标所在的列,N为负指标所在的列

A=xlsread('F:/DATA/q2.xls','N15:U19');
W=[0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125];
[ma,na]=size(A);          %ma为A矩阵的行数,na为A矩阵的列数
 for i=1:na
     B(:,i)=A(:,i)*W(i);  %按列循环得到[加权标准化矩阵]
end
V1=zeros(1,na);            %初始化正理想解和负理想解
V2=zeros(1,na);
BMAX=max(B);               %取加权标准化矩阵每列的最大值和最小值
BMIN=min(B);               
for i=1:na
     %if i<=size(M,2)      %循环得到理想解和负理想解,注意判断,不然会超个数
     V1(i)=BMAX(i);
     V2(i)=BMIN(i);
     %end
     %if i<=size(N,2)
     %V1(N(i))=BMIN(N(i));
     %V2(N(i))=BMAX(N(i));
     %end
end

for i=1:ma              %按行循环求各方案的贴近度
     C1=B(i,:)-V1;
     S1(i)=norm(C1);    %S1,S2分别为离正理想点和负理想点的距离,用二阶范数

     C2=B(i,:)-V2;
     S2(i)=norm(C2);
     T(i)=S2(i)/(S1(i)+S2(i));     %T为贴近度
end
output_args=T

 

 

 


点赞
收藏
评论区
推荐文章
海军 海军
4年前
关于JavaScript 对象的理解
关于JavaScript对象的理解对象理解对象ECMA262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。我们可以把ECMAScript的对象想象成散列表:无非就是一组名值对,其中的值可以是
Wesley13 Wesley13
3年前
java中的方法返回值使用泛型,实现灵活的返回值类型
<divclass"htmledit\_views"<p<br</p<p痛点:&nbsp;&nbsp;&nbsp;使用Mybatis框架的时候,想封装一个底层JDBC控制器,用于提供和Mybatis交互的增删改查接口(公用的接口),但由于公用的查询方法可能是用户自定义的任意一个和表对应的javabean类型,所以要考虑怎么样给调用
Karen110 Karen110
4年前
Python-OpenCV获取图像轮廓的图像处理方法
一、引言在《OpenCV阈值处理函数threshold处理32位彩色图像的案例》介绍了threshold函数,但threshold的图像阈值处理对于某些光照不均的图像,这种全局阈值分割的方法并不能得到好的效果。图像阈值化操作中,我们更关心的是从二值化图像中分离目标区域和背景区域,仅仅通过固定阈值很难达到理想的分割效果。在图片中的灰度是不均匀的,所以通常情
关于数据库分库分表的一点想法
日常开发中,实现数据库的分库分表,在经常使用工具方面,常用的有像shardingsphere、TDDL、Mycat等,然后,根据主键key做数据分布,有两种常用的方案,Hash取模方案和Range范围两种方案,两种路由算法,通过指定的key值进行运算后进行数据路由。两种方案也各有各的优缺点,下面做个梳理。
Stella981 Stella981
3年前
Lua 学习记录
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开赋值语句右边的值会依次赋给左边的变量a,b  1,2赋值语句会先计算右边所有的值然后再执行赋值操作x  1;y  2x, y  y, x变量个数\值的个数按变量个数补足nil变量个数<值的个数多余的值会被忽略a
Wesley13 Wesley13
3年前
CSS基本语法及页面引用
css基本语法及页面引用(1)css基本语法css的定义方法是:选择器{属性:值;属性:值;属性:值;}选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值。代码示例:/css注释ctrlshift"/"/d
Stella981 Stella981
3年前
Javascript获取数组中的最大值和最小值方法汇总
方法一 sort()方法ba从大到小,ab从小到大varmax2arr.sort(function(a,b){   returnba;})\0\;console.log(max2)方法二//最小值Array.prototype.minfunction(){varmin
Stella981 Stella981
3年前
C: exit的值
运行node的process.exit时候发现了以前忽视的一个问题:$nodeprocess.exit(1)$echo$?255我希望exit的值是1,结果成了255。\http://stackoverflow.com/questions/12512177/exi
Wesley13 Wesley13
3年前
Java面试总结(排序算法)
1.冒泡排序算法描述:两两比较,大的放后面2.选择排序算法描述:在m元数组中找到最小值的位置,然后将最小值的位置和第n(n0,1,2,....m1)位的值对调,排序k次则m元数组中前k(k<m)位的值已经排序好,m元数组中前k位的值不需要再进行排序,此时需要排序的元素只有mk个3.插入排序算
Stella981 Stella981
3年前
C#.NET 对HashTable数组进行按值排序
C.NET对HashTable数组进行按值排序  最近做了一个项目,需要对一个2维数组的值进行排序然后再取出对应的Key值。开始是用HashTable做的,不过HashTable中的排序只是对Key进行排序,如果想对值进行排序得用其它办法。下面我就把这种方法说下:一.我们先假设一个二维数组,用HashTab
贾蔷 贾蔷
1星期前
力扣面试17.21题解:接雨水问题的双指针最优解
一、问题描述给定n个非负整数表示每个宽度为1的柱子的高度,计算按此排列的柱子,下雨之后能接多少雨水。二、核心思想本解决方案采用:1.使用左右从两端向中间移动1.维护左右两边的最大值1.根据较小的一边计算当前能接的雨水量1.移动较小值的指针继续计算三、完整代