im钱包安卓版下载
数字资产服务平台

im钱包安卓版下载是全球著名的数字资产交易平台之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的币币和衍生品交易服务。

tp钱包安卓版最新下载|topsis分析

时间:2024-03-16 11:12:52

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木​程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用​将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all

clc

%% 导入数据

% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

% (2)双击进入X,输入或拷贝数据到X

% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件

% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。

load data_water_quality.mat

%% 数据预处理_正向化

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2)%对每一列进行正向化处理

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 返回值返回正向化之后的指标

end

disp('正向化后的矩阵 X = ')

disp(X)

end

%% 数据预处理_标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

%% 指标权重赋值

disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")

Judge = input('请输入是否需要增加权重: ');

if Judge == 1

disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);

weigh = input(['请输入输入' num2str(m) '个权重: ']);

if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。

else

weigh = input('你输入的有误,请重新输入权重行向量: ');

end

else

weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m

end

%% 计算与最大值的距离和最小值的距离,并算出得分

D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量

D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)% 归一化的得分

[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置

plot(sorted_S,'r-o')

xmin=1;xmax = size(sorted_S,1);

ymin = 0;ymax = max(sorted_S)+min(sorted_S);

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

grid on

xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签

title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值(中间的那个值): ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论​赞同 318​​14 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录1111111

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木​程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用​将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all

clc

%% 导入数据

% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

% (2)双击进入X,输入或拷贝数据到X

% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件

% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。

load data_water_quality.mat

%% 数据预处理_正向化

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2)%对每一列进行正向化处理

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 返回值返回正向化之后的指标

end

disp('正向化后的矩阵 X = ')

disp(X)

end

%% 数据预处理_标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

%% 指标权重赋值

disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")

Judge = input('请输入是否需要增加权重: ');

if Judge == 1

disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);

weigh = input(['请输入输入' num2str(m) '个权重: ']);

if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。

else

weigh = input('你输入的有误,请重新输入权重行向量: ');

end

else

weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m

end

%% 计算与最大值的距离和最小值的距离,并算出得分

D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量

D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)% 归一化的得分

[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置

plot(sorted_S,'r-o')

xmin=1;xmax = size(sorted_S,1);

ymin = 0;ymax = max(sorted_S)+min(sorted_S);

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

grid on

xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签

title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值(中间的那个值): ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论​赞同 318​​14 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录1111111

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木​程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用​将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all

clc

%% 导入数据

% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

% (2)双击进入X,输入或拷贝数据到X

% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件

% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。

load data_water_quality.mat

%% 数据预处理_正向化

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2)%对每一列进行正向化处理

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 返回值返回正向化之后的指标

end

disp('正向化后的矩阵 X = ')

disp(X)

end

%% 数据预处理_标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

%% 指标权重赋值

disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")

Judge = input('请输入是否需要增加权重: ');

if Judge == 1

disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);

weigh = input(['请输入输入' num2str(m) '个权重: ']);

if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。

else

weigh = input('你输入的有误,请重新输入权重行向量: ');

end

else

weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m

end

%% 计算与最大值的距离和最小值的距离,并算出得分

D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量

D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)% 归一化的得分

[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置

plot(sorted_S,'r-o')

xmin=1;xmax = size(sorted_S,1);

ymin = 0;ymax = max(sorted_S)+min(sorted_S);

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

grid on

xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签

title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值(中间的那个值): ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论​赞同 318​​14 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录1111111

什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎

什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册法学什么叫做"基于熵权的 TOPSIS 综合评价法”?关注者10被浏览117,571关注问题​写回答​邀请回答​好问题​添加评论​分享​6 个回答默认排序疯狂绅士​SAISM-夹逼对抗解释结构模型——扯蛋的表现形式​ 关注你这里有三个概念。只要记得topsis是什么就行!一、综合评价综合评价(Comprehensive Evaluation,CE),也叫综合评价方法或多指标综合评价方法,是指使用比较系统的、规范的方法对于多个指标、多个单位同时进行评价的方法。它不只是一种方法,而是一个方法系统,是指对多指标进行综合的一系列有效方法的总称。综合评价方法在现实中应用范围很广。综合评价是针对研究的对象,建立一个进行测评的指标体系,利用一定的方法或模型,对搜集的资料进行分析,对被评价的事物作出定量化的总体判断。综合评价的三大关键技术:其一,指标选择;其二,权数的确定;其三,方法的适宜。二、求权重的方法求权重的方法如下:求权重方法有客观法与主观法。熵权法是用的最广的客观法。三、topsis方法TOPSIS方法说明流程图中纵向的过程即为TOPSIS方法的流程。TOPSIS简介。  TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。该方法又被称为“双基点法”TOPSIS重要基本概念与原理 “正理想解”和“负理想解”是TOPSIS法的最基本的概念。  离正理想点(最好的解、最佳点、最优解、最大极值点)的距离越远,效果最差,即为负向指标。因为其数值越大越差,数值越小越牛逼。  离负理想点(最差的解、最差点、最劣解、最差极值点)的距离越远,效果最好,即为正向指标。因为其数值越小越牛逼,数值越大越差。 贴近度、相似度是TOPSIS法的另外一个重要概念。  越贴近正理想点,即数值越大,效果最大,即为正向指标。  越贴近负理想点,即数值越大,效果最差,即为为向指标。可以把熵权法只是topsis的一部分topsis就是一种综合评价方法。发布于 2022-10-07 18:53​赞同 44​​添加评论​分享​收藏​喜欢收起​SPSSAU​已认证账号​ 关注举个例子进行说明。一、分析前准备1.研究背景TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。例如:当前有一个项目进行招标,共有4个承包商,分别是A,B,C,D厂。由于招标需要考虑多个因素,各个方案指标的优劣程度也并不统一。为了保证评价过程中的客观、公正性。因此,考虑通过熵权TOPSIS法,对各个方案进行综合评价,从而选出最优方案。2.数据格式熵权TOPSIS法用于研究指标与理想解的接近度情况。1个指标占用1列数据。1个研究对象为1行,但研究对象在分析时并不需要使用,SPSSAU默认会从上到下依次编号。二、SPSSAU操作(1)登录账号后进入SPSSAU页面,点击右上角“上传数据”,将处理好的数据进行“点击上传文件”上传即可。(2)拖拽分析项在“综合评价”模块中选择“熵权topsis”方法,将分析项拖拽到右侧分析框中,点击“开始分析”即可。三、SPSSAU数据处理1.数据正向化/逆向化处理如果数据中有逆向指标(数字越大反而越不好的意思),此时需要使用‘SPSSAU数据处理->生成变量’的‘逆向化’功能处理。让数据变成正向指标(即数字越大越好的意思)。‘逆向化’的数据计算公式为:(Max-X)/(Max-Min),明显可以看出,针对逆向指标进行‘逆向化’处理后,数据就会变成正向指标。【SPSSAU】数据无量纲化处理 | 数据分析常见问题解答2.数据标准化处理针对数据进行标准化处理,目的在于解决量纲化问题。常见的标准化处理方法有:‘归一化’,‘区间化’,‘均值化’等。(1)‘归一化’将所有数据压缩在0到1之间;(2)‘区间化‘将所有数据压缩在自己设定的区间;(3)‘均值化’= 当前值 / 平均值。补充说明:一般而言,如果数据全部都大于0,建议使用‘均值化’;如果数据中有负数或者0,建议做‘区间化’让数据限定在一个区间(SPSSAU默认1~2之间);当然也可以考虑‘归一化’,让数据全部介于0~1之间。具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。(如果数据进行了正/逆向化处理就不需要再进行标准化处理。)四、SPSSAU分析背景:当前有6个国家经济技术开发区,分别在政务系统的4个指标上的评分值。数字越大表示指标越优。当前希望利用熵权TOPSIS法评价出6个开发区的政务系统排名情况。原始数据如下:本案例数据中包括4个政务系统的评价指标,而且全部都是正向指标,因此不需要进行正向化或者逆向化处理。以及接着数据标准化解决量纲问题上,本例子使用‘均值化’处理方法。操作为SPSSAU数据处理->生成变量:完成数据‘均值化’处理后,直接开始进行‘熵值TOPSIS法’分析,操作如下图:1.熵值法计算权重结果汇总上表格展示出4个政务系统指标的权重值,明显可以看出指标3的权重更大。但权重大小仅仅是过程值,熵值TOPSIS分析重心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。2.TOPSIS评价计算结果分析结果来源于SPSSAU从上表可知,利用熵权法后加权生成的数据(算法自动完成)进行TOPSIS分析,针对4个指标(MC_政务系统指标1, MC_政务系统指标2, MC_政务系统指标3, MC_政务系统指标4),进行TOPSIS评价,同时评价对象为6个(样本量数量即为评价对象数量);TOPSIS法首先找出评价指标的正负理想解值(A+和A-),接着计算出各评价对象分别与正负理想解的距离值D+和D-。根据D+和D-值,最终计算得出各评价对象与最优方案的接近程度(C值),并可针对C值进行排序。最终从上表可知:评价对象4,即开发区4,它的相对接近度C值最高为0.9995,因而说明开发区4在政务系统上的表现最优;其次是开发区3,相对接近度C起来0.8141。开发区1的政务系统表现最差。3.正负理想解4.描述统计分析数据完整并无缺失等,可通过上表格查看各分析项的平均值或标准差值等。从上表格可以看出四个分析项的样本量均为6,平均值均为1。五、其他说明1.如果分析数据中有负数或者0值如何办?如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’(该值为某列数据最小值的绝对值+0.01),以便让数据全部都大于0,因而满足算法要求。2. 面板数据如何进行熵值TOPSIS法?熵值TOPSIS法的原理是先进行熵值法,然后再进行TOPSIS法。无论是面板或者非面板数据,均可正常进行熵值TOPSIS法研究,并不需要特别处理。(当然面板数据进行分析时,也可以先筛选出不同的年份,重复进行多次均可)。六、总结熵权TOPSIS法分别涉及熵权法和TOPSIS法;熵权法计算各评价指标的权重值,然后利用权重值乘原始数据,得到newdata。系统利用newdata进行TOPSIS法进行计算,最终得到各评价对象的接近程序C值,用于判断和衡量评价对象的优劣排序等。【SPSSAU】熵权topsis法案例解读【SPSSAU】熵值法的各类应用【SPSSAU】熵值法操作及应用 | 数据分析常见问题解答今天的分享就到这里啦,更多干货请前往SPSSAU官网查看:发布于 2023-10-12 10:20​赞同 10​​添加评论​分享​收藏​喜欢

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木​程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用​将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all

clc

%% 导入数据

% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

% (2)双击进入X,输入或拷贝数据到X

% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件

% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。

load data_water_quality.mat

%% 数据预处理_正向化

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2)%对每一列进行正向化处理

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 返回值返回正向化之后的指标

end

disp('正向化后的矩阵 X = ')

disp(X)

end

%% 数据预处理_标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

%% 指标权重赋值

disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")

Judge = input('请输入是否需要增加权重: ');

if Judge == 1

disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);

weigh = input(['请输入输入' num2str(m) '个权重: ']);

if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。

else

weigh = input('你输入的有误,请重新输入权重行向量: ');

end

else

weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m

end

%% 计算与最大值的距离和最小值的距离,并算出得分

D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量

D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)% 归一化的得分

[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置

plot(sorted_S,'r-o')

xmin=1;xmax = size(sorted_S,1);

ymin = 0;ymax = max(sorted_S)+min(sorted_S);

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

grid on

xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签

title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值(中间的那个值): ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论​赞同 318​​14 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录1111111

综合评价之TOPSIS模型 - 知乎

综合评价之TOPSIS模型 - 知乎首发于机器学习养成记切换模式写文章登录/注册综合评价之TOPSIS模型文武算法工程师一枚原文:综合评价之TOPSIS模型导读:在之前的文章里我们介绍了综合评价中的熵权法(未看请戳 综合评价之熵权法),可以帮助我们在实际应用中解决如何客观确定指标权重的问题。今天继续来介绍另一种客观综合评价方法——TOPSIS模型,并且TOPSIS可以与熵权法组合使用。1、TOPSIS基本概念TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )模型中文叫做“逼近理想解排序方法”,是根据评价对象与理想化目标的接近程度进行排序的方法,是一种距离综合评价方法。基本思路是通过假定正、负理想解,测算各样本与正、负理想解的距离,得到其与理想方案的相对贴近度(即距离正理想解越近同时距离负理想解越远),进行各评价对象的优劣排序。具体步骤及概念如下:step 1: 指标同向化、标准化并得到权重。这部分与熵权法结合,通过熵权法得到权重,避免主观因素影响,得到权重向量W及标准化矩阵P。具体内容可参照综合评价之熵权法,这里不再赘述。step 2 : 得到加权后的规范化矩阵Z。Z由P与W相乘后得到。step 3 : 确定正、负理想解。正理想解指各指标都达到样本中最好的值,负理想解指各指标都为样本中最差的值。step 4 : 计算各样本距离正、负理想解的距离。step 5 : 计算各评价对象与最优方案的贴近程度。正其中的取值范围为[0,1],越接近1表明样本评分越好。2、Python实现这里使用综合评价之熵权法中的测试数据作为演示。数据中共有4个变量,2036条样本,下面就开始用基于熵权法的TOPSIS计算样本得分。‍import pandas as pd

import numpy as np

#逆向指标标准化

def normalization1(data):

_range = np.max(data) - np.min(data)

return (data - np.min(data)) / _range

#正向指标标准化

def normalization2(data):

_range = np.max(data) - np.min(data)

return (np.max(data) - data) / _range

#熵权法计算权重

def entropyWeight(data):

P = np.array(data)

# 计算熵值

E = np.nansum(-P * np.log(P) / np.log(len(data)), axis=0)

# 计算权系数

return (1 - E) / (1 - E).sum()

def topsis(data, weight=None):

# 权重

weight = entropyWeight(data) if weight is None else np.array(weight)

# 最优最劣方案

Z = pd.DataFrame([(data*weight.T).min(), (data*weight.T).max()], index=['负理想解', '正理想解'])

#Z = pd.DataFrame([data.min(), data.max()], index=['负理想解', '正理想解'])

# 距离

Result = data.copy()

#Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 * weight).sum(axis=1))

#Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 * weight).sum(axis=1))

Result['正理想解'] = np.sqrt(((weight*data - Z.loc['正理想解']) ** 2 ).sum(axis=1))

Result['负理想解'] = np.sqrt(((weight*data - Z.loc['负理想解']) ** 2 ).sum(axis=1))

# 综合得分指数

Result['综合得分指数'] = Result['负理想解'] / (Result['负理想解'] + Result['正理想解'])

Result['排序'] = Result.rank(ascending=False)['综合得分指数']

return Result, Z, weight

if __name__=='__main__':

data = pd.read_csv('testdata.csv',sep = ',',encoding='gbk',header=None)

data1 = data.copy()

data1[0] = normalization1(data1[0])

data1[1] = normalization1(data1[1])

data1[2] = normalization1(data1[2])

data1[3] = normalization1(data1[3])

[result,z1,weight] = topsis(data1)最终得到的评分结果(部分)、正负理想解和权重如下:往期推荐:XGBoost(二):R语言实现疫情下,你还好吗R语言爬虫与文本分析图片相似度识别:pHash算法编辑于 2021-03-28 20:40大数据分析算法数学模型​赞同 84​​6 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录机器学习养

综合评价之TOPSIS模型 - 知乎

综合评价之TOPSIS模型 - 知乎首发于机器学习养成记切换模式写文章登录/注册综合评价之TOPSIS模型文武算法工程师一枚原文:综合评价之TOPSIS模型导读:在之前的文章里我们介绍了综合评价中的熵权法(未看请戳 综合评价之熵权法),可以帮助我们在实际应用中解决如何客观确定指标权重的问题。今天继续来介绍另一种客观综合评价方法——TOPSIS模型,并且TOPSIS可以与熵权法组合使用。1、TOPSIS基本概念TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )模型中文叫做“逼近理想解排序方法”,是根据评价对象与理想化目标的接近程度进行排序的方法,是一种距离综合评价方法。基本思路是通过假定正、负理想解,测算各样本与正、负理想解的距离,得到其与理想方案的相对贴近度(即距离正理想解越近同时距离负理想解越远),进行各评价对象的优劣排序。具体步骤及概念如下:step 1: 指标同向化、标准化并得到权重。这部分与熵权法结合,通过熵权法得到权重,避免主观因素影响,得到权重向量W及标准化矩阵P。具体内容可参照综合评价之熵权法,这里不再赘述。step 2 : 得到加权后的规范化矩阵Z。Z由P与W相乘后得到。step 3 : 确定正、负理想解。正理想解指各指标都达到样本中最好的值,负理想解指各指标都为样本中最差的值。step 4 : 计算各样本距离正、负理想解的距离。step 5 : 计算各评价对象与最优方案的贴近程度。正其中的取值范围为[0,1],越接近1表明样本评分越好。2、Python实现这里使用综合评价之熵权法中的测试数据作为演示。数据中共有4个变量,2036条样本,下面就开始用基于熵权法的TOPSIS计算样本得分。‍import pandas as pd

import numpy as np

#逆向指标标准化

def normalization1(data):

_range = np.max(data) - np.min(data)

return (data - np.min(data)) / _range

#正向指标标准化

def normalization2(data):

_range = np.max(data) - np.min(data)

return (np.max(data) - data) / _range

#熵权法计算权重

def entropyWeight(data):

P = np.array(data)

# 计算熵值

E = np.nansum(-P * np.log(P) / np.log(len(data)), axis=0)

# 计算权系数

return (1 - E) / (1 - E).sum()

def topsis(data, weight=None):

# 权重

weight = entropyWeight(data) if weight is None else np.array(weight)

# 最优最劣方案

Z = pd.DataFrame([(data*weight.T).min(), (data*weight.T).max()], index=['负理想解', '正理想解'])

#Z = pd.DataFrame([data.min(), data.max()], index=['负理想解', '正理想解'])

# 距离

Result = data.copy()

#Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 * weight).sum(axis=1))

#Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 * weight).sum(axis=1))

Result['正理想解'] = np.sqrt(((weight*data - Z.loc['正理想解']) ** 2 ).sum(axis=1))

Result['负理想解'] = np.sqrt(((weight*data - Z.loc['负理想解']) ** 2 ).sum(axis=1))

# 综合得分指数

Result['综合得分指数'] = Result['负理想解'] / (Result['负理想解'] + Result['正理想解'])

Result['排序'] = Result.rank(ascending=False)['综合得分指数']

return Result, Z, weight

if __name__=='__main__':

data = pd.read_csv('testdata.csv',sep = ',',encoding='gbk',header=None)

data1 = data.copy()

data1[0] = normalization1(data1[0])

data1[1] = normalization1(data1[1])

data1[2] = normalization1(data1[2])

data1[3] = normalization1(data1[3])

[result,z1,weight] = topsis(data1)最终得到的评分结果(部分)、正负理想解和权重如下:往期推荐:XGBoost(二):R语言实现疫情下,你还好吗R语言爬虫与文本分析图片相似度识别:pHash算法编辑于 2021-03-28 20:40大数据分析算法数学模型​赞同 84​​6 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录机器学习养

数学建模笔记——评价类模型之TOPSIS - 知乎

数学建模笔记——评价类模型之TOPSIS - 知乎首发于数学建模笔记切换模式写文章登录/注册数学建模笔记——评价类模型之TOPSIS小白​好的,今天继续研究评价类模型的相关算法。实不相瞒,虽然我才写到第二个算法,但是已经听了几十节课了,清风老师的课程确实蛮不错的,实用性比较强。相关的模型、算法基本上越往后越难,所以珍惜现在比较容易理解的评价类模型吧hhh。在这里要说明一下,小白本白只是一个即将大三的本科生,目前比较容易理解的模型我还能写得完整一些。之后很多模型会涉及较为复杂的数学推导,我可能很难完整地从原理去描述了,只能着重于实际应用方面。请各位谅解啦。ok,我们继续学习评价类模型算法。(注:以下案例均来自我所听的网课)回顾上一篇文章我们介绍了一个简单又实用的评价打分方法——层次分析法。同时我们也提到了,层次分析法有一些缺陷之处。首先就是主观性较强,层次分析法往往是专家用来打分的方法,但建模比赛中没有专家,判断矩阵只能我们自己填;其次,当指标或者方案层数量较多时,我们两两比较得出的判断矩阵和一致矩阵可能会出现较大的差异(想一想你的心理预期,有多符合那个乘法关系),判断矩阵的填写也会比较麻烦(例如要问C_{20}^2次问题);再者,层次分析法往往用于没有相关数据的问题,我们的打分也是按照判断矩阵给出的,如果已经有了数据,再主观打分就不太合适了。看看这个题目给出A—T二十条河流的水质指标及具体数据,请建立合适的模型,给这些河流的水质从高到低排排序。嗯,现在再用层次分析法,是不是就不太合适了……TOPSIS算法TOPSIS算法是解决上述问题的一个比较合适的算法,其全称是Technique\ for\ Order\ Preference\ by\ Similarity\ to\ an\ Ideal\ Solution,通俗的翻译则是“优劣解距离法”。这个翻译可以说是指向了此算法的本质,我们接下来慢慢谈。我们依然从一个简单的问题入手。小明同学考上南大之后,不知不觉就迎来了第一次高数考试,他及其舍友的分数如下。现在我们要根据他们的成绩,给他们进行打分,要求分数可以合理地表达其成绩的高低。hhh可能会有人觉得这个问题比较奇怪,成绩本身就可以作为所谓的分数了,实在不行我们还有GPA,怎么还要打分?因为这只是一个例子,事实上在许多实际问题中,我们只有数据,例如上面水质问题的含氧量,PH值,并没有这样一个分数。再者,实际问题中有很多的指标,其量纲经常不同,但我们需要通过这些数据得出一个综合的分数。因此我们很有必要对数据进行一定的处理,同时找到一个综合打分的方法。所以我们有一个很直接的想法,就是对分数进行归一化处理,例如清风的最后得分就是\frac {99}{89+60+74+99} = 0.307。嗯,这个想法很合理。即一个人的成绩占总成绩的比重,就可以作为这个人在总体中的得分。但是注意了,这里只有一个指标,所以我们可以直接用这个得分作为排序标准。如果还有一些指标,同样进行类似的操作,实际上就相当于我们对数据进行了处理,消去了量纲的影响罢了。结果就是,一番操作过后,留给我们的仍然是一个得分表格,只不过里面是已经被处理过的数据,但还是没能给出排名。这里提出一个小问题,我们把PH值作为衡量水质的一个标准,其范围是0~14,PH=7时最好,所以PH=7时相关指标得分应该最高。这时候就不能像成绩那样,直接求和算比重了吧,那应该怎么处理呢?ok,我们继续。上述的操作只是对数据进行了处理,我们还是需要一个打分的标准。有同学就会想到,赋权,然后打分。这就回到了我们层次分析法的内容。还是那些问题,主观性比较强,指标太多时操作起来不准确且麻烦,对数据的利用不充分等等。这里就可以引入TOPSIS的想法了。事实上我们的目的是对方案给出一个排序,只要数据有了,我们就可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解(我感觉最劣解和理想不搭,就直接用最劣解称呼吧)。而TOPSIS的想法就是,我们通过一定的计算,评价系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。这么说可能不是很清楚,举个例子。如果我们只有一个指标,例如上图中的成绩,那么理想最优解就是99分,注意,不是满分100分,理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据。不然如果是GDP这种上不封顶的指标,理想最优取值岂不是正无穷了……同理,该系统中的最劣解是60。那如果有两个指标呢?例如我们引入一个“与他人争吵的次数”,用来衡量情商,给出相应的数据表格。按照我们的一般想法,与他人争吵的次数应该是越小越好,所以我们可以用向量表达这个系统中的理想最优解,也就是[99,0],取清风的成绩和小王的争吵次数,最劣解就是[60,3],取小王的成绩和清风的争吵次数。现在我们知道了如何取得理想最优解和最劣解,那如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS用下面一个表达式进行衡量:\frac {某一方案 - 最劣解}{理想最优解 - 最劣解}。可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。相信到这里大家对于TOPSIS的基本思想已经差不多理解了,之后就是实际操作的问题了。我们都知道,“方案 - 最劣解”这种东西只是方便理解,确实也是我编出来的,实际中方案根本不能做差。所以我们只能用数据来求出这么一个距离。对于某一个指标的数据,我们可以用\frac {x-min}{max-min}来衡量综合距离。如果只有成绩这一个指标,其计算很简单,例如清风的得分就是\frac {99-60}{99-60}=1,其余人的成绩可以依次给出。对于“争吵次数”这个指标,清风的得分可以是\frac {3-3}{0-3}=0,虽然也能计算,但其分母是个负值,还是不太习惯。那如果对于PH值,7是最优解,0和14哪一个看成最劣解用于计算呢?亦或者如果某个指标处在10~20之间最佳,那最优解最劣解又如何衡量呢?这便是我们遇到的问题。除此之外,由于数据的量纲不同,在实际的计算过程中也会出现这样或者那样的问题,因此我们也有必要对于原数据进行相关的处理。首先,我们解决第一个问题,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。我们可以把指标分为四类,如下表所示。 所谓的正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。对于极小型指标,例如费用,争吵次数,我们可以用\hat x_i=max-x_i将其转化为极大型,如果所有元素都为正数,也可以使用\hat x_i= \frac {1}{x_i}。示例如下。对于中间型指标,如果其最佳数值是x_{best},我们可以取M=max\{|x_i - x_{best}|\},之后按照\hat x_i = 1 - \frac {x_i - x_{best}}{M},示例如下。对于区间型指标,如果其最佳区间是[a,b],我们取M=max\{a-min\{x_i\},max\{x_i\}-b\},之后按照进行转化,示例如下。至此,我们已经将所有的数据都转化为极大型数据了,可以很好地使用\frac {x-min}{max-min}来进行打分。但是为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是\frac {X-EX}{\sqrt {DX}},不过这里我们不采用。我们记标准化后的矩阵为Z,其中z_{ij}=\frac {x_{ij}}{\sqrt {\sum_{i=1}^n {x_{ij}}^2}},也就是\frac {每一个元素}{\sqrt {其所在列的元素的平方和}}。现在我们已经对数据进行了相应的处理,可以计算每一个方案的的得分了,也就是所谓的距离。由于我们一个方案具有多个指标,因此我们可以用向量z_i来表达第i个方案。假设有n个待评价的方案,m个指标,此时z_i=[z_{i1},z_{i2},...,z_{im}]。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。(实在是打不好这个样子……) 之后我们就可以从中取出理想最优解和最劣解了,经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即z^+\ =\ [z_1^+,z_2^+,...,z_m^+]=\\ \ [max\{z_{11},z_{21},...,z_{n1}\},max\{z_{12},z_{22},...,z_{n2}\},...,max\{z_{1m},z_{2m},...,z_{nm}\}]。 同理,取每一列中最小的数计算理想最劣解向量,z^-\ =\ [z_1^-,z_2^-,...,z_m^-]=\\\ [min\{z_{11},z_{21},...,z_{n1}\},min\{z_{12},z_{22},...,z_{n2}\},...,min\{z_{1m},z_{2m},...,z_{nm}\}]。(z^+就是z_{max},z^-就是z_{min})现在我们可以计算得分了,之前我们的计算公式是\frac {z_i-z_{min}}{z_{max}-z_{min}} \ 也就是\ \frac {z_i-z_{min}}{(z_{max}-z_i)+(z_i-z_{min})},嗯,我们变形成了·\frac {z与z_{min}的距离}{z与z_{max}的距离\ +\ z与z_{min}的距离}。为什么要这样变形呢?因为大家都是这么用的……好吧,其实我们接下来是使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的。我个人认为这样变形更有利于说明问题,即我们衡量的得分是考虑到某个方案距离最优解和最劣解的一个综合距离。不然的话,所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。那应该还是采用综合衡量的方式会好一点儿吧,你觉得呢?嗯,我就默认大家都同意这个说法了。我们继续计算得分,对于第i个方案z_i,我们计算它与最优解的距离d_i^+\ =\ \sqrt {\sum_{j=1}^m (z_j^+\ - z_{ij})^2 },与最劣解的距离为d_i^-\ =\ \sqrt {\sum_{j=1}^m (z_j^-\ - z_{ij})^2 }。我们记此方案的得分为S_i,则S_i = \frac {d_i^-}{d_i^+\ +d_i^- },也可以理解为我们上文一直在说的综合距离。很明显,0 \le S_i \le 1,且d_i^+越小,也就是该方案与最优解的距离越小时,S_i越大;d_i^-越小,也就是该方案与最劣解的距离越小时,S_i越小。这种计算方式同时考虑了该方案与最优解和最劣解的距离。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案好一点儿哪个方案次一点儿了。还可以按照这个得分再进行一次归一化,不过我觉得没什么必要了。嗯,基本部分讲完啦。总结总结一下。使用TOPSIS算法的一个先决条件就是要有数据,最好全部是定量数据,如果是定性数据或者定序数据,但能够分别优劣,也可以按照定量数据来处理。之后就开始操作: a.将原始数据矩阵正向化。 也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。b.将正向化后的矩阵标准化。 也就是通过标准化,消除量纲的影响。c.计算得分并排序 。公式就是S_i = \frac {d_i^-}{d_i^+\ +d_i^- }。这次好像还没有给一个完整的解题过程,嗯,我就把PPT里的小案例放在这里供大家参考。 这是原始数据矩阵 我们对其进行正向化 我们再对其进行标准化 最后计算得分给出排名 嗯,这个例子告诉我们,成绩很重要,但是情商更重要hhh。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价hhh。其实我们可以看到TOPSIS的一个特点,即它使用理想最优解和最劣解作为评判方案的依据时,实际上就是在方案的系统内部进行评价,这样的评价手段也可以更好的表达出系统中方案与方案之间的差距,也比较充分地利用了数据所包含的信息。(我随便编的,别信)拓展TOPSIS是不是又简单又实用呢?其实我们还可以进行一点点儿的拓展,不想打字了,看下图。我们可以看到,在计算距离时,我们其实默认每个指标的权重是相同的,但实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。如图。带上了权重之后,不同的指标发挥的影响就不一样了,带权重的评价也往往是实际生活中很常见的一种评价方式。那在建模中如何确定权重呢?如果是日常生活向的评价,我们可以使用层次分析法,结合常识给出。如果是比较专业的评价指标,我们可以查询资料,看看别人怎么研究的。还有一种方法叫熵权法,也是这套课程的内容,不过限于篇幅,就留到之后再提吧。局限性TOPSIS法有什么局限性呢?其实也是有的,例如没有数据你就行不通了吧hhh。不过在实际建模中,倒也不必考虑太多的局限性,知道每个模型的适用条件就好了。到时候见招拆招,增删查改,尽力而为就好了。一个没有参加过比赛的小白说这些是不是有点儿不妥……不管了,反正就是碰到什么题用对应的模型,实在不行就试着综合综合,总能有个结果的hhh嗯,就这样,拜拜~作业我把PPT里的题目也放在这里,应该没问题。哔哩哔哩上有作业讲解的。 (如果文章有什么错误欢迎指出毕竟我就是个沙雕的小白orz)这两天知乎给我推送了一些数学建模相关的问答,其中一个是数学建模相关书籍。我把高赞回答推荐的书的电子版找了一下,如果需要的话,在微信公众号“我是陈小白”后台回复“数学建模书籍”即可。编辑于 2020-07-19 08:08数学建模​赞同 686​​52 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录数学建模笔记一边学习一

TOPSIS法_百度百科

IS法_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心TOPSIS法播报讨论上传视频C.L.Hwang和K.Yoon于1981年提出的方法收藏查看我的收藏0有用+10TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。中文名TOPSIS法外文名Technique for Order Preference by Similarity to an Ideal Solution提出人C.L.Hwang和K.Yoon提出时间1981年目录1简介2原理3涵义简介播报编辑TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性即可。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。原理播报编辑其基本原理,是通过检测评价对象与最优解、最劣解的距离来进行排序,若评价对象最靠近最优解同时又最远离最劣解,则为最好;否则不为最优。其中最优解的各指标值都达到各评价指标的最优值。最劣解的各指标值都达到各评价指标的最差值。涵义播报编辑TOPSIS法其中“理想解”和“负理想解”是TOPSIS法的两个基本概念。所谓理想解是一设想的最优的解(方案),它的各个属性值都达到各备选方案中的最好的值;而负理想解是一设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。方案排序的规则是把各备选方案与理想解和负理想解做比较,若其中有一个方案最接近理想解,而同时又远离负理想解,则该方案是备选方案中最好的方案。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

TOPSIS法 - MBA智库百科

TOPSIS法 - MBA智库百科

全球专业中文经管百科,由121,994位网友共同编写而成,共计435,718个条目

查看

条目讨论编辑 收藏

简体中文繁体中文

工具箱▼

链入页面

链出更改

上传文件 特殊页面 可打印版

永久链接

TOPSIS法

用手机看条目

扫一扫,手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

TOPSIS法(Technique for Order Preferenceby Similarity to Ideal Solution,)逼近理想解排序法、理想点法

目录

1 TOPSIS法概述

2 TOPSIS法的基本原理

3 TOPSIS法的数学模型[1]

4 参考文献

[编辑]TOPSIS法概述

  TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。理想化目标(Ideal Solution)有两个,一个是肯定的理想目标(positive ideal solution)或称最优目标,一个是否定的理想目标(negative ideal solution)或称最劣目标,评价最好的对象应该是与最优目标的距离最近,而与最劣目标最远,距离的计算可采用明考斯基距离,常用的欧几里德几何距离是明考斯基距离的特殊情况。

  TOPSIS法是一种理想目标相似性的顺序选优技术,在多目标决策分析中是一种非常有效的方法。它通过归一化后的数据规范化矩阵,找出多个目标中最优目标和最劣目标(分别用理想解和反理想解表示) ,分别计算各评价目标与理想解和反理想解的距离,获得各目标与理想解的贴近度,按理想解贴近度的大小排序,以此作为评价目标优劣的依据。贴近度取值在0~1 之间,该值愈接近1,表示相应的评价目标越接近最优水平;反之,该值愈接近0,表示评价目标越接近最劣水平。该方法已经在土地利用规划、物料选择评估、项目投资、医疗卫生等众多领域得到成功的应用,明显提高了多目标决策分析的科学性、准确性和可操作性。

[编辑]TOPSIS法的基本原理

  其基本原理,是通过检测评价对象与最优解、最劣解的距离来进行排序,若评价对象最靠近最优解同时又最远离最劣解,则为最好;否则为最差。其中最优解的各指标值都达到各评价指标的最优值。最劣解的各指标值都达到各评价指标的最差值。

  TOPSIS法中“理想解”和“负理想解”是TOPSIS法的两个基本概念。所谓理想解是一设想的最优的解(方案),它的各个属性值都达到各备选方案中的最好的值;而负理想解是一设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。方案排序的规则是把各备选方案与理想解和负理想解做比较,若其中有一个方案最接近理想解,而同时又远离负理想解,则该方案是备选方案中最好的方案。

[编辑]TOPSIS法的数学模型[1]

  遇到多目标最优化问题时,通常有m 个评价目标 每个目标有n 评价指标。首先邀请相关专家对评价指标(包括定性指标和定量指标) 进行打分,然后将打分结果表示成数学矩阵形式,建立下列特征矩阵:

  

  。

  计算规范化矩阵

  对特征矩阵进行规范化处理,得到规格化向量rij ,建立关于规格化向量rij的规范化矩阵

  

  。

  构造权重规范化矩阵

  通过计算权重规格化值vij,建立关于权重规范

化值vij 的权重规范化矩阵

  。

  其中,wj是第j 个指标的权重。在基于ASP的动态联盟制造资源评估模型中,采用的权重确定方法有Delphi法、对数最小二乘法、层次分析法、熵等。

  确定理想解和反理想解

  根据权重规格化值vij来确定理想解A * 和反理想解A − :

   。

  。

  其中,J1是收益性指标集, 表示在第i个指标上的最优值; J2是损耗性指标集, 表示在第i个指标上的最劣值。收益性指标越大,对评估结果越有利;损耗性指标越小,对评估结果越有利。反之,则对评估结果不利。

  计算距离尺度

  计算距离尺度,即计算每个目标到理想解和反理想解的距离,距离尺度可以通过n维欧几里得距离来计算。目标到理想解A * 的距离为S * ,到反理想解A − 的距离为S − :

  

  

  。

  其中,与分别为第j个目标到最优目标及最劣目标的距离, vij是第i个目标第j个评价指标的权重规格化值。S * 为各评价目标与最优目标的接近程度, S * 值越小,评价目标距离理想目标越近,方案越优。

  计算理想解的贴近度C *

  。

  式中,。当时, Ai = A − ,表示该目标为最劣目标;当时, Ai = A * , 表示该目标为最优目标。在实际的多目标决策中, 最优目标和最劣目标存在的可能性很小。

  根据理想解的贴近度C * 大小进行排序

  根据C * 的值按从小到大的顺序对各评价目标进行排列。排序结果贴近度C * 值越大,该目标越优,C * 值最大的为最优评标目标。

[编辑]参考文献

↑ 李浩、罗国富、谢庆生.基于应用服务提供商的动态联盟制造资源评估模型研究

来自"https://wiki.mbalib.com/wiki/TOPSIS%E6%B3%95"

打开MBA智库App, 阅读完整内容

打开App

本条目对我有帮助202

MBA智库APP

扫一扫,下载MBA智库APP

分享到:

温馨提示

复制该内容请前往MBA智库App

立即前往App

  如果您认为本条目还有待完善,需要补充新内容或修改错误内容,请编辑条目或投诉举报。

本条目相关文档

 TOPSIS法的港口物流 2页 基于TOPSIS法的客户价值评价模型 2页 基于改进TOPSIS法的企业技术选择 5页 基于属性测度的客观权TOPSIS法及应用 7页 基于TOPSIS法的辽宁省经济水平评价 2页 基于改进AHP法与TOPSIS法的第三方物流服务商选择 3页 基于改进AHP法与TOPSIS法的第三方物流服务商选择 3页 TOPSIS法在招投标评价体系中的应用 5页 TOPSIS法在招投标评价体系中的应用 5页 基于改进的TOPSIS法城乡差异度分析 4页 更多相关文档

本条目相关课程

本条目由以下用户参与贡献

Cabbage,Zfj3000,Caijing,施伟富,HEHE林,泡芙小姐,董晴晴,otf125. 页面分类: 统计方法 | 硬评价方法

评论(共5条)提示:评论内容为网友针对条目"TOPSIS法"展开的讨论,与本站观点立场无关。

222.168.41.* 在 2010年5月21日 20:07 发表

错了!

回复评论

发表评论请文明上网,理性发言并遵守有关规定。

147.8.88.* 在 2012年3月6日 11:00 发表

不对,r是怎么计算也没写

回复评论

发表评论请文明上网,理性发言并遵守有关规定。

HEHE林 (Talk | 贡献) 在 2012年3月6日 14:08 发表

147.8.88.* 在 2012年3月6日 11:00 发表

不对,r是怎么计算也没写

已添加r的计算公式,希望对您会有帮助!~

回复评论

发表评论请文明上网,理性发言并遵守有关规定。

218.22.13.* 在 2012年11月12日 21:37 发表

贴近度公式有误吧,S*和S-的位置反了。

S*值越小,评价目标距离理想目标越近,方案越优的,如果按目前这个公式,S*=0时C*=0,成了最差方案了。

回复评论

发表评论请文明上网,理性发言并遵守有关规定。

HEHE林 (Talk | 贡献) 在 2012年11月13日 11:01 发表

218.22.13.* 在 2012年11月12日 21:37 发表

贴近度公式有误吧,S*和S-的位置反了。

S*值越小,评价目标距离理想目标越近,方案越优的,如果按目前这个公式,S*=0时C*=0,成了最差方案了。

原文附有参考文献,您可以做下对比,希望对您有帮助!

回复评论

发表评论请文明上网,理性发言并遵守有关规定。

发表评论请文明上网,理性发言并遵守有关规定。

首页

文档

百科

课堂

商学院

资讯

知识点

国际MBA

商城

企业服务

问答

首页

专题

管理

营销

经济

金融

人力资源

咨询

财务

品牌

证券

物流

贸易

商学院

法律

人物

分类索引

 

百科VIP

百科VIP会员权益

无广告阅读

免验证复制

开通/续费百科VIP

登录

消息

昵称未设置

百科VIP

未开通

收藏夹

账号安全中心

我的页面

我的贡献

我的讨论页

我的设置

退出登录

打开APP

导航

最新资讯

最新评论

最新推荐

热门推荐

编辑实验

使用帮助

创建条目

随便看看

本周推荐

最多推荐

翻异别勘新质生产力第一性原理智能卡费曼学习法合成物包装印刷敞口头寸数字经济宗庆后

奶头乐理论蘑菇管理定律猴子管理法则情绪ABC理论垃圾人定律100个最流行的管理词汇破窗效应INFPSWOT分析模型21天效应

以上内容根据网友推荐自动排序生成

下载APP

此页面最后修订:11:35,2018年7月31日.

智库首页 -

百科首页 -

关于百科 -

客户端 -

人才招聘 -

广告合作 -

权利通知 -

联系我们 -

免责声明

- 友情链接

©2024 MBAlib.com, All rights reserved.

闽公网安备 35020302032707号

意见反馈

问题分类

类型

反馈内容

添加图片(选填)0/9

联系方式

取消

提交

提交成功

反馈结果请前往 MBA智库App 查看 (我的 > 帮助与反馈 > 我的反馈)

知道了

大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)_哔哩哔哩_bilibili

大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)_哔哩哔哩_bilibili 首页番剧直播游戏中心会员购漫画赛事投稿大白话讲解TOPSIS法(内附TOPSIS法模板和实现方法)

3.3万

16

2021-04-28 00:24:24

未经作者授权,禁止转载26486643197【小白快速上手数据分析】之TOPSIS法

傻瓜式实现+小白也看得懂的实现讲解(内附TOPSIS法模板)

MPai微信公众号:万灵数据

MPai交流群:715829047(发送想要mpai扩展的模型,按反馈意见优先开发部分新模型。)

MPai数据科学平台官网:www.mpaidata.com知识分享官知识科学科普综合评价topsis

小白大腿与数据科学

发消息

人大硕士,擅长数学建模,数据分析咨询,合作交流微信:willingdata

关注 8502

桌面AI伙伴,陪你High翻天!

接下来播放

自动连播多指标综合评价的基本思路与步骤(新手必看!!!)大鸭进京赶烤

7.2万

99

综合评价专题三:TOPSIS法登天小志

1.3万

4

3-TOPSIS法烧鸡嘟嘟嘟

855

0

TOPSIS法模型Matlab代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

2779

5

TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

4436

7

【小白学统计】综合评价之熵权TOPSIS法,原理+数据处理+案例分析,熵权TOPSIS法进行综合评价小白在学统计

1166

0

一个不太成熟的介绍(1)——如何运用Excel表格进行熵权TOPSIS法的运算心仓马龙的yy

2.6万

22

EXCEL TOPSIS法 相对贴近度(综合得分)计算及排序lanjingling2019

1588

0

TOPSIS理想解法(3)案例分析耿大哥讲算法

953

0

毕业论文数据分析 spssau TOPSIS法计算权重硕博论文指导

3249

0

EXCEL 熵权-TOPSIS法 计算权重及综合得分lanjingling2019

5014

0

TOPSIS和熵权法牛毛b站

2.2万

20

熵权-TOPSIS模型的MATLAB操作,超靠谱,超干货。韭霖后博士生

4.1万

14

DEA方法归类、三阶段DEA、TOPSIS- DEA法论文分析小鱼没水不会游

6356

14

TOPSIS理想解法(1)TOPSIS的基本原理与操作步骤耿大哥讲算法

1687

1

只要十分钟保证学会系列6-用EXCEL操作TOPSIS综合评价算法与灰关联分析(GRA)法--30--

4018

1

熵权topsis的计算步骤、论文不同的做法分析和计算软件分享Matthew学长

3.5万

0

一个不太成熟的介绍(3)——如何运用Excel表格进行熵权TOPSIS法的运算心仓马龙的yy

1.5万

14

【SPSSAU】TOPSIS法计算权重 | 数据分析常见问题解答SPSSAU官方账号

6667

1

小白快速上手熵权Topsis(原理+实战)spsspro

5.4万

48

展开

小窗

客服

顶部

赛事库 课堂 2021

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现_topsis在matlab中的实现-CSDN博客

>

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现_topsis在matlab中的实现-CSDN博客

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

kaixin_啊啊

已于 2023-06-19 10:42:15 修改

阅读量7.4k

收藏

98

点赞数

67

分类专栏:

数学建模

文章标签:

数学建模

matlab

算法

topsis

于 2023-06-11 03:02:22 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/m0_73879806/article/details/131149255

版权

数学建模

专栏收录该内容

4 篇文章

1 订阅

订阅专栏

文章目录

TOPSIS简介方法和原理数学定义数学语言描述现实案例

正负理想解定义实例

量纲

TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C=(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列方案的优劣次序

实战应用例题解答步骤**数据的预处理****属性值线性规划归一化**

MATLAB代码(建议对照上方 “TOPSIS法的算法步骤” 查看)

完整代码

TOPSIS简介

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

方法和原理

数学定义

数学语言描述

设多属性决策方案集为D={d1,d2,…,dm},衡量方案优劣的属性变量为x1,…,xn,,这时方案集D中的每个方案di( i= 1,…,m )的n个属性值构成的向量是[Ai1,…,Ain],它作为n维空间中的一个点,能唯一地表征方案di。

现实案例

例如评价经济的发展水平 d1代表山东,d2代表江苏,d3代表北京……就是一共有m个待评价方案。 x1是绿化面积,x2是人均GDP,x3是经济总量……共有n个属性值。 其中能够展现山东的经济发展水平有绿化面积、人均GDP、经济总量等n个指标。而Ai1就是山东绿化的总面积、Ai2为山东GDP总量……

正负理想解

定义

正理想解C是一个方案集D中并不存在的虚拟的最佳方案,它的每个属性值都是决策矩阵中该属性的最好值;而负理想解C0则是虚拟的最差方案,它的每个属性值都是决策矩阵中该属性的最差值。在n维空间中,将方案集D中的各备选方案di与正理想解C和负理想解C0的距离进行比较,既靠近正理想解又远离负理想解的方案就是方案集D中的最佳方案;并可以据此排定方案集D中各备选方案的优先序。

实例

评价表中哪五个研究生院更好,可以虚构一个最好的研究生院标准,该虚构的研究生院的数据全为最优值,例如: 虚构研究生院6,其中它的人均专著x61为1.2,生师比x62为5(生师比为学生和老师的比值,它的值必须保持适度,适当的生师比可以促进老师和学生良好的互动,该值过高过低都不好),科研经费x63为10000,预期毕业率x64为1.8。此时,研究生院6就是正理想解C*,同理构建虚拟的最差方案负理想解C0。

–x1x2x3x4C*(正理想解)1.25100001.8C0(负理想解)0.1104006.7

量纲

确定好正负理想解后,就可以以此来判断判断不同研究生院的优劣。下面开始描述每个研究生院与正负理想解的距离。 那么距离应该怎么算呢?当量纲不同时,方案不同数据的波动会很大,因此在计算距离时首先要排除量纲的影响,进行非量纲化。

非量纲化定义 多属性决策与评估的困难之一是属性间的不可公度性,即在属性值表中的每一列数具有不同的单位(量纲)。即使对同一属性,采用不同的计量单位,表中的数值也就不同。在用各种多属性决策方法进行分析评价时,需要排除量纲的选用对决策或评估结果的影响,这就是非量纲化。

TOPSIS法的算法步骤

1.用向量规范化的方法求得规范决策矩阵

设多属性决策问题的决策矩阵A=(aij )m*n,规范化决策矩阵B=(bij)m*n,其中

2.构成加权规范阵C=(cij)m*n

设由决策人给定各属性的权重向量为 w=[w1,w2,…,wn] , 则 cij = wj*bij 其中 i=1,2,…,m, j =1,2,…,n.

在评价过程中,每项评价标准占比不同,让重要的指标影响大一点,不重要的指标影响小一点。 类似于成绩的计算,比较重要的语数英总分数高一些,其他副科的总分数低一些。

3.确定正负理想解的距离

理想解属性大致可以分为效益型、成本型和区间型三种,其中 正理想解:

效益最大值和成本最小值,当属性为区间型的时候要判断在哪个区间最佳。

负理想解:

效益最小值和成本最大值

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

备选方案di到正理想解的距离为:

备选方案di到负理想解的距离为:

可类比两点间距离公式,该距离为n维空间内的距离

5.计算各方案的综合评价指数

计算综合评价指数公式的分子为方案到负理想解的距离,分母为为方案到负理想解的距离与方案到正理想解的距离之和,所以综合评价指数越大越好。

6.排列方案的优劣次序

按综合评价指数由大到小排列方案的优劣次序即可

实战应用

例题

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

解答步骤

数据的预处理

数据的预处理又称属性值的规范化

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

判断每个属性的数据是越大越好还是越小越好,当属性为区间型的时候判断在哪个区间最佳。 判断完成以后将它们进行规范化处理。

数据规范化处理的作用

1.属性值有多种类型,上述三种属性放在同一个表中不便于直接从数值大小判断方案的优劣,因此需要对数据进行预处理,使得表中任一属性下性能越优的方案变换后的属性值越大。

2.非量纲化,多属性决策与评估的困难之一是属性间的不可公度性,即在属性值表中的每一列数具有不同的单位(量纲)。即使对同一属性,采用不同的计量单位,表中的数值也就不同。在用各种多属性决策方法进行分析评价时,需要排除量纲的选用对决策或评估结果的影响,这就是非量纲化。

3.归一化,属性值表中不同指标的属性值的数值人小差别很大,为了直观,更为了便于采用各种多属性决策与评估方法进行评价,需要把属性值表中的数值归一化,即把表中数值均变换到[0,1]区间上。

即将上述三种属性全部转化为效益型,这个数值分布在[0,1]区间上,该值越大越好。

属性值线性规划归一化

为了使每个属性变换后的最优值为1且最差值为0,可以进行标准0-1变换。

**1.对效益型属性xj,令

当aij为最小值时,bij为0,当aij为最大值时,bij为1。**

2.对成本型属性xj, 计算公式可套用效益型的公式,在求正负理想解的时候记得要颠倒一下。

**3.对区间型属性xj,设给定的最优属性区间为[

a

j

0

a^0_j

aj0​,

a

j

a^*_j

aj∗​],

a

j

a^,_j

aj,​为无 法容忍下限,

a

j

a^”_j

aj”​为无法容忍上限,则

例如例题中的生师比,它最好的区间应为[5,6],最差应不低于2,高于12,当该属性值在最有区间时为1,当超过或等于能容忍上下限时为0。**

MATLAB代码(建议对照上方 “TOPSIS法的算法步骤” 查看)

注:以下并非C语言

clc,clear

% 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);

%这行代码的作用是获取矩阵a的维度信息,其中m表示a的行数,n表示a的列数。其中,size函数返回的是一个含有两个元素的向量,第一个元素表示矩阵的行数,第二个元素表示矩阵的列数。因此,在这个代码中,m和n就被赋值为了矩阵a的行数和列数。在后续的代码中,可以使用这两个变量来控制循环等操作。

% @是用于定义函数句柄的操作符。函数句柄既是一种变量,可以用于传参和赋值;也是可以当做函数名一样使用,该步骤类似于C语言中的构造函数。

x2=@(qujian,lb,ub,x)(1-(qujian(1)-x)./(qujian(1)-lb)).*(x>=lb&x

(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));

%该函数可以实现将区间型属性转换为效益型属性的,实现下图所示公式

注:如果 (x>=qujian(1)&x<=qujian(2)) 成立,结果为真,值为1;如果 x 的值没有出现在上述区间,结果为假,值为0。

加权处理

for j=1:n

b(:,j)=a(:,j)/norm(a(:,j));%向量规范化

end

实现该式:

%设权向量为w=[0.2,0.3,0.4,0.1]

w=[0.2 0.3 0.4 0.1];

c=b.*repmat(w,m,1);%求出加权规范阵

至此步骤2完成,得出加权的向量规范化属性矩阵

正负理想解

cstar=max(c);%求正理想解

cstar(4)=min(c(:,4))%属性4为成本型,与效益型相反

c0=min(c);%求负理想解

c0(4)=max(c(:,4))%属性4为成本型,与效益型相反

for i=1:m

sstar(i)=norm(c(i,:)-cstar);%求到正理想解的距离

s0(i)=norm(c(i,:)-c0);%求到负理想解的距离

end

按顺序依次实现 求到正理想解的距离:

求到负理想解的距离:

f=s0./(sstar+s0);

[sf,ind]=sort(f,'descend') %求排序结果

% "ascend"时,进行升序排序,为"descend "时,进行降序排序

计算各方案的综合评价指数:

得出结果 各方案的从优到劣的次序为4,3,2,1,5

完整代码

clc,clear

% 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

(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进行变换

for j=1:n

b(:,j)=a(:,j)/norm(a(:,j));%向量规范化

end

w=[0.2 0.3 0.4 0.1];

c=b.*repmat(w,m,1);%求加权矩阵

cstar=max(c);%求正理想解

cstar(4)=min(c(:,4))%属性4为成本型

c0=min(c);%求负理想解

c0(4)=max(c(:,4))%属性4为成本型的

for i=1:m

sstar(i)=norm(c(i,:)-cstar);%求到正理想解的距离

s0(i)=norm(c(i,:)-c0);%求到负理想解的距离

end

f=s0./(sstar+s0);

[sf,ind]=sort(f,'descend') %求排序结果

% "ascend"时,进行升序排序,为"descend "时,进行降序排序

负理想解

c0(4)=max(c(:,4))%属性4为成本型的

for i=1:m

sstar(i)=norm(c(i,:)-cstar);%求到正理想解的距离

s0(i)=norm(c(i,:)-c0);%求到负理想解的距离

end

f=s0./(sstar+s0);

[sf,ind]=sort(f,'descend') %求排序结果

% "ascend"时,进行升序排序,为"descend "时,进行降序排序

关注博主即可阅读全文

优惠劵

kaixin_啊啊

关注

关注

67

点赞

98

收藏

觉得还不错?

一键收藏

打赏

知道了

97

评论

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

TOPSI客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。例题:为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,表1是所给出的部分数据。

复制链接

扫一扫

专栏目录

论文研究-基于仿真技术的连锁零售企业配送中心布局决策模型.pdf

09-20

论文研究-基于仿真技术的连锁零售企业配送中心布局决策模型.pdf,

 合理的配送中心布局可以大大降低企业的物流营运成本和提高物流系统的运营效率.从零售业连锁经营和配送中心 本质特征分析入手,将连锁零售企业的配送中心布局决策问题界定为以设施成本、物流成本和快速反应能力等多重子目标达到最优的多目标多配送中心选址问题.在对影响配送中心选址布局的因素进行定性分析和定量分析的基础上,运用蒙特卡罗静态仿真进行成本分析和Arena动态仿真进行响应时间分析相结合的方法构建了多目标多配送中心布局决策分析模型,并采用AHP和TOPSIS相结合的综合评价方法分析相关指标和数据来确定最优方案. 最后,以一家大型连锁超市作为研究算例, 以珠三角地区作为布局分析区域,构建实物模型以验证决策模型的科学性和有效性.

TOPSIS模型

12-08

TOPSIS模型引进了理想解与负理想解的概念,是一种理想目标相似性的顺序选优技术根据理想解的贴近度C*大小进行排序C*值最大的为最优评标目标。

97 条评论

您还未登录,请先

登录

后发表或查看评论

如何用matlaab把csv转为mat文件_数学建模竞赛学习笔记:用TOPSIS模型进行综合评价

weixin_39653448的博客

11-12

1449

笔记整理来自清风老师的数学建模课程(可以在B站里搜索到,头条无法放站外链接,我就不放了):TOPSIS教程目录1. 层次分析法的局限性(主观求权重方法)2. TOPSIS法引入2.1 一个指标的情况2.2 2个指标的情况2.2.1 指标正向化2.2.2 指标标准化处理 2.2.3 计算得分2.2.4 实例计算3. TOPSIS简介4. TOPSIS法步骤4.1 将原始矩阵正向化(可以在Excel中...

TOPSIS法Matlab代码

qq_64408956的博客

12-15

428

Topsis法Matlab实现

数学建模之TOPSIS模型(含matlab代码)

lingdangbell的博客

07-20

1120

数学建模之TOPSIS模型,内含代码和讲解,可自行修改。笔记来自b站建模老哥

【数据分析】Matlab实现熵权TOPSIS

qq_59747472的博客

09-19

2448

TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。

TOPSIS法详细原理+MATLAB代码

weixin_62616638的博客

12-05

1228

❑ TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法是一种多属性决策方法,通过比较备选解与理想解之间的距离来确定最佳的排序顺序。正理想解是在每个属性上都达到最佳值的解,而负理想解则是在每个属性上都达到最差值的解。❑ 为了确定备选解与理想解的距离,首先计算每个备选解与理想解之间的欧式距离或其他合适的距离度量。然后,计算备选解与理想解之间的正标准化距离和负标准化距离。

TOPSIS法 —— matlab

PY洋洋

01-30

1万+

1.TOPSIS法介绍

2. 计算步骤

(1)数据标准化

(2)得到加权后的矩阵

(3)确定正理想解和负理想解

(4)计算各方案到正(负)理想解的距离

(5)计算综合评价值

3.实例研究

3.1 读取数据

3.2 数据标准化

3.3 得到信息熵

3.4 计算权重并计算权重数据

3.5得到最大值和最小值距离

3.6 计算得分

总代码

MATLAB 之 优劣解距离法(TOPSIS )

每天进步一点点!

11-23

6736

TOPSIS 总结

TOPSIS法(熵权法)(模型+MATLAB代码)

热门推荐

m0_62504956的博客

12-27

1万+

标准化处理:为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。(2)计算第j项指标下第i个样本所占的比重,并将其看作相对熵计算中用到的概率。(3)计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。信息效用值的定义:dj=1-ej 信息效用值越大,其对应的信息就越多。(1)判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间。当然:层次分析法的主观性太强了,更推荐大家使用。TOPSIS法是一种常用的。带权重的TOPSIS:使用。信息熵越大对应的信息量越小。

TOPSIS法——Matlab实操

weixin_62490408的博客

07-14

3955

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

对一个被评价的系统 f(x1, x2, …, xn)而言,假设理想解为(x1*, x2*, …, xn*)。定义第i种备选方案与理想解之间的距离如下:

Di=g(Xi, X*)

这里所指的距离通常是指欧式距离。需要指出的是:正理想解是一个并不存在的虚拟的

Topsis法(matlab)

qq_46053880的博客

01-29

3153

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录前言一、Topsis是什么?二、使用步骤1.引入库2.读入数据总结

前言

充分利用原始数据的信息

解决层次分析法的局限:

1.评价的决策层不能太多,

2.数据已知时,利用数据是评价更加准确

提示:以下是本篇文章正文内容,下面案例可供参考

一、Topsis是什么?

优劣解距离法

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下(示例):

import nu

数学建模国赛获奖论文分类整理:优劣解距离法topsis

05-21

数学建模国赛获奖论文整理,使用优劣解距离法topsis做的论文集合,可以系统的学习优劣解距离法topsis在数学建模中的应用,非常有用。

MATLAB---成对判断矩阵检验一致性和求权重

03-20

MATLAB---成对判断矩阵检验一致性和求权重,整理而来的

改进TOPSIS的多时刻融合直觉模糊威胁评估

01-12

针对防空作战中的目标威胁评估问题,提出一种新的多时刻融合直觉模糊数排序模型.首先,根据目标威胁属性的主、客观权重得到综合权重;然后,通过逼近理想解排序法衡量直觉模糊数信息量的大小,利用直觉模糊熵表征直觉模糊数信息的可靠性,并结合决策者的风险偏好构建基于信息量和不确定性的直觉模糊数排序模型,得出单时刻的目标威胁排序;最后,利用泊松分布逆形式构建时间序列权重,从而融合多个时刻的决策信息,得出最终的目标威胁排序.仿真结果表明,所提出的算法综合了多时刻的决策信息,并可根据决策者的风险偏好进行调整,灵活性强、可靠性高.

MATLAB实现TOPSIS法(优劣解距离法)【数学建模、科学计算算法】.zip

04-14

MATLAB实现各类算法,适用于数学建模、科学计算、科研数据分析等场景。 项目代码可直接编译运行~

MATLAB实现基于熵权法对Topsis模型的修正【数学建模、科学计算算法】.zip

04-14

MATLAB实现各类算法,适用于数学建模、科学计算、科研数据分析等场景。 项目代码可直接编译运行~

数学建模MATLAB代码Topsis算法综合评价代码

最新发布

03-10

数学建模MATLAB代码Topsis算法综合评价代码本资源系百度网盘分享地址

数学建模matlab常用算法代码整理集合.rar

11-01

K-means算法代码,RBF神经网络做回归预测代码,SVM分类器代码,Topsis算法综合评价代码,层次分析法代码,插值与拟合代码,多目标规划matlab程序实现,二次指数平滑及其时间序列预测代码,规划模型代码,灰色关联...

数学建模topsis法matlab代码

05-12

TOPSIS法是一种多属性决策分析方法,可以用来评价多个决策方案的相对优劣。Matlab中可以使用以下代码实现:

假设有4个决策方案,每个方案有3个评价指标,存储在一个4行3列的矩阵X中。

```matlab

X = [3 2 6;

5 4 8;

7 5 9;

4 6 7];

```

首先需要将所有指标标准化,使得它们的取值范围相同。可以使用以下代码实现:

```matlab

[n,m] = size(X); % n为方案数,m为指标数

X1 = X./sqrt(sum(X.^2)); % 指标标准化

```

接下来,需要确定每个指标的权重。可以使用主观赋权法或客观赋权法来确定权重。这里假设已经确定了指标权重,存储在一个1行3列的矩阵W中。

```matlab

W = [0.3 0.4 0.3]; % 指标权重

```

然后计算加权规范化矩阵,即将指标标准化后乘以指标权重,得到每个方案的加权规范化得分。

```matlab

X2 = X1.*W; % 加权规范化矩阵

```

接下来需要确定正负理想解。正理想解是指在每个指标上取值最大的方案,负理想解是指在每个指标上取值最小的方案。可以使用以下代码实现:

```matlab

Z = [max(X2); min(X2)]; % 正负理想解

```

然后计算每个方案到正负理想解的距离,可以使用欧氏距离或曼哈顿距离。这里使用欧氏距离。

```matlab

D = sqrt(sum((X2-Z(:,1)').^2,2)) ./ (sqrt(sum((X2-Z(:,1)').^2,2)) + sqrt(sum((X2-Z(:,2)').^2,2))); % 距离值

```

最后按照距离值的大小排序,得到每个方案的相对优劣程度。

```matlab

[~,rank] = sort(D,'descend'); % 相对优劣程度排序

```

rank中的第一个元素即为最优方案的编号。

完整的代码如下:

```matlab

X = [3 2 6;

5 4 8;

7 5 9;

4 6 7];

[n,m] = size(X);

X1 = X./sqrt(sum(X.^2)); % 指标标准化

W = [0.3 0.4 0.3]; % 指标权重

X2 = X1.*W; % 加权规范化矩阵

Z = [max(X2); min(X2)]; % 正负理想解

D = sqrt(sum((X2-Z(:,1)').^2,2)) ./ (sqrt(sum((X2-Z(:,1)').^2,2)) + sqrt(sum((X2-Z(:,2)').^2,2))); % 距离值

[~,rank] = sort(D,'descend'); % 相对优劣程度排序

```

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

kaixin_啊啊

CSDN认证博客专家

CSDN认证企业博客

码龄1年

高校学生

118

原创

669

周排名

3231

总排名

13万+

访问

等级

7192

积分

4928

粉丝

2558

获赞

2686

评论

2333

收藏

私信

关注

热门文章

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

7423

无公网IP,SSH远程连接Linux CentOS服务器【内网穿透】

4486

【内网穿透】Linux本地搭建GitLab服务器

4226

Apple Vision Pro:空间计算的未来已来,你准备好了吗?

3371

笔记本选购指南

3219

分类专栏

商业合作

7篇

cpolar

56篇

教程

2篇

学习

13篇

离散数学

6篇

IDEA

2篇

数学建模

4篇

软件下载

1篇

算法

4篇

试题

2篇

C++

3篇

杂谈

10篇

信息管理系统

10篇

SQL

1篇

【初识MySQL】

2篇

Java

1篇

PTA

9篇

C语言基础

2篇

ChatGPT

OJ刷题之旅

4篇

最新评论

Linux系统使用Docker部署DashDot结合内网穿透实现公网监控本地服务

小羊失眠啦.:

文章干货满满!作者在阐述每个知识点时,都力求详尽且清晰,使得读者可以轻松理解并掌握。此外,文章中还引用了一些具有代表性的代码片段,这些代码既展示了编程的魅力,也使得读者能够更好地理解相关概念和技巧

Linux系统使用Docker部署DashDot结合内网穿透实现公网监控本地服务

哈哥撩编程:

感谢博主分享的优质内容,帮助编程小伙伴少走弯路~

如何使用群晖NAS结合cpolar内网穿透实现公网访问本地Office文件

哈哥撩编程:

感谢博主分享的优质内容,帮助编程小伙伴少走弯路~

Linux系统使用Docker部署DashDot结合内网穿透实现公网监控本地服务

杭电码农-NEO:

内容丰富图文并茂,认真看完收获很大。思路清晰细节满满,支持大佬优质好文。

Linux系统使用Docker部署DashDot结合内网穿透实现公网监控本地服务

盼小辉丶:

优质好文,收藏起来慢慢学习~

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

Linux系统使用Docker部署DashDot结合内网穿透实现公网监控本地服务

从零搭建Vue项目

如何使用群晖NAS结合cpolar内网穿透实现公网访问本地Office文件

2024年26篇

2023年100篇

目录

目录

分类专栏

商业合作

7篇

cpolar

56篇

教程

2篇

学习

13篇

离散数学

6篇

IDEA

2篇

数学建模

4篇

软件下载

1篇

算法

4篇

试题

2篇

C++

3篇

杂谈

10篇

信息管理系统

10篇

SQL

1篇

【初识MySQL】

2篇

Java

1篇

PTA

9篇

C语言基础

2篇

ChatGPT

OJ刷题之旅

4篇

目录

评论 97

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

kaixin_啊啊

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

TOPSIS法(小白必看&文章包含详细源代码及注释)_topsis法样本容量的合理性-CSDN博客

>

TOPSIS法(小白必看&文章包含详细源代码及注释)_topsis法样本容量的合理性-CSDN博客

TOPSIS法(小白必看&文章包含详细源代码及注释)

最新推荐文章于 2022-10-05 16:55:03 发布

Zkaisen

最新推荐文章于 2022-10-05 16:55:03 发布

阅读量1.1w

收藏

201

点赞数

28

分类专栏:

数学建模

文章标签:

数学建模

matlab

算法

经验分享

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/fencecat/article/details/112302810

版权

数学建模

专栏收录该内容

7 篇文章

7 订阅

订阅专栏

时间 2020年5月4日 组别 数学建模 姓名 Zkaisen                                                                           本     周     完     成     工     作     总     结 这一周我主要学习了TOPSIS法即优劣解距离向量法。 1.AHP的局限性 前两周主要学习了层次分析法,层次分析法存在这样一些局限性: (1)层次分析法主观性很强,我们建模过程中判断矩阵都是自己手动填写的。 (2)层次分析法方案层不能太多,太多的话,构建的判断矩阵很可能不能通过一致性检验。而且随机一致性指标RI表中n也只给到了15。 (3)层次分析法是根据成对比较法和1~9尺度表构建判断矩阵得到数据的,对于一些有已知数据题目,层次分析法是不能很好利用原始数据的。 2.TOPSIS优点 针对AHP的上述局限性,学习TOPSIS可以弥补层次分析法的一些缺点: (1)优劣解距离法可以充分利用原始数据信息,且其结果能充分反应各评价方案与最优方案的接近程度。 (2)对样本容量没有严格限制,数据计算简单易行,无需数据检验。(topsis法适用于两个以上) 3.Topsis法简介 1981年,C.L.Hwang和K.Yoon首次提出了Topsis,全称Technique for Order Preference by Similarity to an Ideal Solution,可翻译为逼近理想解排序法,国内常称为优劣解距离法。它是一种常用的综合评价方法。 4.Topsis的基本过程 (1)原始矩阵正向化,得到正向化矩阵 a.指标类型   指标类型一般分为四种,极大型指标、极小型指标、中间型指标、  区间型指标。   极大型指标越大越好,极小型指标越小越好,中间型指标越接近中    间值越好,区间型指标落在区间内最好。 b.正向化的公式 正向化就是将原始数据指标都转化为极大型指标。 极小型——极大型:  当指标值中没有“0”时也可用公式: 中间型——极大型:(其中mid为中间值) 区间型——极大型:                                   注:M为距离区间最远的距离,即          当x在区间内时,正向化后的值为1; 当x小于区间下限a时,; 当x大于区间上限b时,; (2)对正向化矩阵标准化 标准化公式:                                 (3)计算得分并归一化 a.构造评分公式:           评分公式变形:           Topsis的思想:最优解即最大值,最劣解即最小值。 b.计算D+与D-:           定义最大值:Z+向量用于存放标准化矩阵中每一列的最大值           定义最小值:Z-向量用于存放标准化矩阵中每一列的最小值           定义第i个(i=1,2,...,n)个评价对象与最大值的距离:等于第i行每一个元素与其所在列的最大值的差的平方和的0.5次方 定义第i个(i=1,2,...,n)个评价对象与最大值的距离:等于第i行每一个元素与其所在列的最小值的差的平方和的0.5次方          c.计算未归一化的得分记为G                                       d.对得分进行归一化                               5.问题思考 (1)为什么要进行正向化? (2)为什么要进行标准化,标准化是为了消除量纲的影响,那么可不可以用下面的公式来实现?                               (2)构造评分公式的含义,背后的思想 6.代码思路及实现    (1)通过软件Matlab实现 a.先根据每一步的公式理清思路 b.根据分析,使用for循环实现较为可行 (学习编程软件中for循环相关操作) c.根据步骤分块实现不同的功能 d.代码编写过程中尽量使每一步结果都输出,这样当结果与预期 不符时方便纠错。并且可输入简单的数值对代码进行检验,查找错 误所在之处,进而修改完善。 e .找相关数据进行结果检验,验证结果的准确性。 (2)通过软件SPSS实现 a.论文中有可通过SPSS实现标准化,导入数据,进行相应操作后,标准化结果却与MATLAB中的结果不同。学习SPSS标准化,有两种不同的标准化方式,即z-score标准化和离差标准化。 b.默认的是z-score标准化。其公式不同于我们步骤中的公式。它是基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。 步骤如下: 首先求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;进行标准化处理:zij=(xij-xi)/si,其中zij为标准化后的值;xij为实际值。 最后将逆指标前的正负号对调。 z-score标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。 c.我们MATLAB中使用的公式是SPSS中标准化的规范化方法,也叫离差标准化,是对原始数据的线性变换,使结果映射到[0,1]区间。 可以通过SPSS的语法编辑窗口来编写代码实现TOPSIS(需要学习并掌握SPSS的基础语法才能实现代码的功能实现) (3)MATLAB代码简单思路                   遇    到   的   问   题 所遇到的问题: 1.没有理解在论文6.2.2中先用算术平均数计算对应的平均值? 后来懂了,他是通过VISSIM软件汇总数据,取平均值的.  2.表4中处理后的数据是同趋化后的数据吧,可是我通过代码求出的数据却和论文中的不同,本以为是标准化方法不同的原因,可是我用SPSS进行标准化后的数据进行得分计算,结果仍然不一样。   3.虽然通过论文学习了Matlab相关知识,但实现不了学习的论文中的内容. 论文中的数据都是自己通过统计得到的。 总结: 1.不懂的地方多思考,多百度 2.遇到问题,多尝试,用不同的方法来测试验证结果 3.学习优秀论文要注重学其方法,不必拘泥于一些具体实现上 (因为具体的功能实现可能需要具体的环境)                         备     注   Matlab代码 % TOPSIS法 % % 导入数据 % clear;clc;close all;%清屏,clc清空命令窗口,clear清空工作区,clos all清除图形 % 点击工作区右键,新建并为矩阵命名为X % 把数据复制到工作区 % 在excel中复制数据,在回到Excel中右键,点击粘贴excel中的数据(ctrl+shift+V) % 关掉这个窗口,右键另存,保存为mat文件 % (下次就不用复制粘贴了,只需要使用load命令即可加载数据) %  load data_kaifangqian.mat [r,c]=size(X) Max_total=max(X)%每一列数据的最大值,它是一个行向量 Min_total=min(X)%每一列数据的最小值,它是一个列向量 B=zeros(1,c);%定义一个0矩阵用来存放指标类型 disp('请输入指标类型,0表示极大型,1表示极小型,2表示中间型,3表示区间型') for j=1:c     %通过for循环依次从键盘输入指标类型对应的数字       B(j)=input('please  enter a type:'); end disp(B)     %% %%指标正向化 C=zeros(1,c) A=zeros(r,c)%这里我用A矩阵存放正向化后的数据 for j=1:c     if B(j)==0%无需正向化             for i=1:r             A(i,j)=X(i,j);%直接将原数值赋值给矩阵A             end     elseif B(j)==1%该列数据为极小型,需要正向化             for i=1:r                 A(i,j)=Max_total(j)-X(i,j);             end     elseif B(j)==2%中间型指标,需要正向化         mid=input('中间值mid:')%中间值也就是公式中的x(best)             for i=1:r                 C(i)=abs(X(i,j)-mid);%abs函数是绝对值函数             end              Max_mid=max(C);%用Max_mid来存放离中间值最远的值,也就是公式中的M             for i=1:r                 A(i,j)=1-C(i)./Max_mid;%代入公式计算正向化后的指标数值,并赋值给矩阵A                       end                   elseif B(j)==3%指标类型是区间型指标的情况                      a=input('请输入区间下限:')%区间下限,公式中的a             b=input('请输入区间上限:')%区间上限,公式中的b             e=(a-Min_total(j));%求出离区间下限最远的距离并赋值给e             d=(Max_total(j)-b);%求出离区间上限最远的距离并赋值给d             M=max(e,d);%比较e和d的值,并把最大值赋值给M             for  i=1:r                 if (X(i,j)>=a)&&(X(i,j)<=b) %如果指标刚好在区间内,那么正向化后的值为1                     A(i,j)=1;                                       elseif X(i,j)b%如果xi大于b,用公式计算正向化后的数值并赋值给矩阵A                     A(i,j)=1-(X(i,j)-b)./M ;                  end             end      end end %%   %标准化 %方法一结合上节课层次分析法,通过repmat函数,sum函数和乘方运算来实现 Z=A./repmat(sum(A.*A).^0.5,r,1); disp(Z); %方法二通过for循环来实现 for i=1:r     for j=1:c         D=sum(A.*A).^0.5 ;% A.*A就是矩阵A的每一个元素平方,sum求和得到的是一个行向量,存放矩阵中每一列元素的和         Z=A./repmat(D,r,1);         %repmat函数表示将A复制m*n块,及把A作为的元素,Z由m*n个A平铺而成。     end end disp(Z)   %% % % 求得分并进行归一化 S=zeros(r,1);%存放最终的归一化后的得分 G=zeros(r,1);%存放未归一化的得分 DP=zeros(r,1);%存放D+ DN=zeros(r,1);%存放D- E=zeros(r,c); F=zeros(r,c); Max_Z=max(Z);%存放标准化后每一列的最大值 Min_Z=min(Z);%存放标准化后每一列的最小值 for i=1:r     for j=1:c          E(i,j)=(Max_Z(j)-Z(i,j)).*(Max_Z(j)-Z(i,j));%就是求解D+公式中分母中根号下面的内容          F(i,j)=(Min_Z(j)-Z(i,j)).*(Min_Z(j)-Z(i,j));%就是求解D-公式中分母中根号下面的内容      end      DP(i)=sum(E(i,:)).^0.5;%第i个(i=1,2,...,n)个评价对象与最大值的距离。这里用到了E(i,:),就是取第i行的所有数据      DN(i)=sum(F(i,:)).^0.5;%第i个(i=1,2,...,n)个评价对象与最小值的距离        G(i)=DN(i)/(DP(i)+DN(i)); end  disp(DN)  disp(DP)  disp(G)   %%对得分进行归一化   for i=1:r     S(i)=G(i)/sum(sum(G)); end disp(S) %%

优惠劵

Zkaisen

关注

关注

28

点赞

201

收藏

觉得还不错?

一键收藏

打赏

知道了

5

评论

TOPSIS法(小白必看&文章包含详细源代码及注释)

时间 2020年5月4日 组别 数学建模 姓名 Zkaisen ...

复制链接

扫一扫

专栏目录

TOPSIS熵值法R代码和灰色关联度Matlab程序.rar_topsis代码R程序_灰色关联 熵权_熵值法_熵权法TOPSIS

07-15

TOPSIS-熵权法R代码,可用来进行综合评价

TOPSIS(优劣解距离法)

最新发布

weixin_72151610的博客

01-09

379

比较对象大于两个,比较指标多,许多指标不存在所谓的最大值最小值(x-min)/(max-min)清风学习同学评分例子:排名越小越好,但是评分越大越好,所以要对排名进行修正。1.将极小型转换成极大型指标(例如:费用、坏品率、污染程度)不同指标的单位不同,不好一起衡量,需要对已经正向化的矩阵进行。统一指标类型:将所有指标转化为极大型【指标正向化】不合理之处:只要排名不变,评分就不变,相关性不强。2.中间型指标(越接近某个特定值越好)例如:PH。层次分析法的劣势:决策层不能太多,指标已知。极大型指标:越大越好。

5 条评论

您还未登录,请先

登录

后发表或查看评论

topsis加入了权重的代码_TOPSIS优劣距离法_

10-02

TOPSIS加了权重的代码,可在MATLAB中实现,亲测可用

第二讲 综合评价分析—TOPSIS法

qq_63767210的博客

07-25

1万+

综合评价分析—TOPSIS法步骤详解

如何用matlaab把csv转为mat文件_数学建模竞赛学习笔记:用TOPSIS模型进行综合评价

weixin_39653448的博客

11-12

1449

笔记整理来自清风老师的数学建模课程(可以在B站里搜索到,头条无法放站外链接,我就不放了):TOPSIS教程目录1. 层次分析法的局限性(主观求权重方法)2. TOPSIS法引入2.1 一个指标的情况2.2 2个指标的情况2.2.1 指标正向化2.2.2 指标标准化处理 2.2.3 计算得分2.2.4 实例计算3. TOPSIS简介4. TOPSIS法步骤4.1 将原始矩阵正向化(可以在Excel中...

Topsis算法综合评价代码_matlab源码.rar

12-12

Topsis算法综合评价代码_matlab源码.rar

【数学建模】2 TOPSIS优劣解距离法

BetterBench的博客

11-09

3049

目录1 简介2 引入的目的3 简单例子引入Topsis法3.1 问题-单个指标(1)解决的思路(最简单的)(2)改进思路(3)解释构造评分公式3.2 拓展问题-增加指标个数(1)问题(2)指标正向化(3)标准化处理(4)计算每个对象的综合得分4 算法步骤4.1 第一步-将原始矩阵正向化4.2 第二步-正向化矩阵标准化7 源码和数据下载

1 简介

Topsis法(Technique for Order Preference by Similarity to Ideal solution)可翻译为逼近理想解排序

清风数学建模学习笔记——TOPSIS法(优劣解距离法)

秀岩的博客

01-08

4万+

优劣解距离法

  TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

  TOPSIS 法是一种常用的 综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。

...

数学建模-TOPSIS法

qq_60678226的博客

06-10

1万+

TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。...

评价模型:TOPSIS法(理想解法)

m0_64087341的博客

10-05

4032

数学建模之TOPSIS(理想解法)

Topsis法代码.zip_topsis matlab_topsis代码_topsis法_决策_理想解

07-14

TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多...

结合熵权法的topsis方法的代码.zip

09-13

结合熵权法的topsis方法的代码,由于本身函数较多,还有一些数据作为例题所以没有办法单独放在网页上,只能通过压缩包下载

TOPSIS熵值法R代码.R

04-06

topsis评价类算法+熵权法确定权重,r语言代码,可以直接代入数据进行运行,简单方便,私人编写的。

MATLAB函数调用

热门推荐

fencecat的博客

01-07

5万+

数学建模

matlab自定义函数

时间

2020年5月10日

学习Matlab自定义函数使用,并结合所学函数简单修改了一下上周的代码实现了Topsis法。

1.Matlab语句构成的程序文件称为M文件,以m作为文件的扩展名,分为函数文件和程序文件。

程序文件即脚本文件,无function;

函数文件有function,且在第一行或者第一个不是注释的行

2.两个文件运行函数:函数定义文件和函数调用文件(函数可在脚本文件或命令窗口直接调用),两文件必须放在同一目录下,函数文件名必须与函数名相...

层次分析法详细讲解(小白必看&电脑查看)

fencecat的博客

01-06

2万+

时间

2020年4月15日

组别

数学建模

姓名

Zkaisen

...

TOPSIS法评价25条河流水质

fencecat的博客

01-07

5449

实验名称 25条流域水质情况评价

实验题目

已知:25条流域水质量各指标的数据,其中含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10-20之间最佳,超过20或低于10均不好。根据上面四个指标评价下表25条河流的水质情况。

河流

含氧量(ppm)

PH值

细菌总数(个/mL)

...

层次分析法(小白必看&手机查看)

fencecat的博客

01-07

4392

数学建模

层次分析法

时间

2020年4月15日

本周我主要学习了层次分析法(AHP)的基本原理及其在企业资金分配方案、太阳镜产品质量评价等案例中的应用,并学习使用visio绘制所需图形以及了解maltab基础语法知识,并编程实现了一些功能。

01层次分析法概述

层次分析法是对定性问题进行定量分析的一种简便灵活而又实用的多准则决策方法。层次分析法是建模比赛中最基础的模型之一,其主要用于解决评价类问题。

02二层次分析法的特点

AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干...

熵权topsis法代码

07-27

抱歉,我无法提供完整的熵权TOPSIS法代码。但是,我可以解释一下熵权TOPSIS法的原理和步骤。

熵权TOPSIS法是一种多指标决策方法,它结合了熵权法和TOPSIS法。下面是熵权TOPSIS法的步骤:

1. 收集决策指标的数据:首先,需要收集各个指标的数据,这些数据可以是定量的或定性的。

2. 计算指标的权重:使用熵权法来计算每个指标的权重。熵权法是一种基于信息熵的方法,它可以根据指标的变异性来确定权重。

3. 标准化数据:对每个指标的数据进行标准化处理,使得它们具有相同的量纲和范围。常见的标准化方法包括线性标准化和范围标准化。

4. 构建决策矩阵:将标准化后的数据组成一个决策矩阵,其中每一行代表一个评价对象,每一列代表一个指标。

5. 计算正向化矩阵:根据极小型指标转化为极大型指标的公式,计算正向化矩阵。这个矩阵用于将所有指标都转化为越大越好的形式。

6. 计算距离矩阵:使用欧氏距离或其他距离度量方法,计算每个评价对象与理想解的距离。

7. 计算接近度指数:根据距离矩阵,计算每个评价对象的接近度指数。接近度指数越大,表示评价对象越接近理想解。

8. 排序和选择最优解:根据接近度指数,对评价对象进行排序,选择接近度指数最高的评价对象作为最优解。

这是熵权TOPSIS法的基本步骤。具体的代码实现可能会因编程语言和具体问题而有所不同。如果您需要具体的代码实现,建议参考相关的学术文献或使用特定的软件工具来实现。

#### 引用[.reference_title]

- *1* [2 评价类算法:TOPSIS法笔记(附Python代码)](https://blog.csdn.net/weixin_43937790/article/details/125901879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

- *2* *3* [TOPSIS法(熵权法)(模型+MATLAB代码)](https://blog.csdn.net/m0_62504956/article/details/128461414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

[ .reference_list ]

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

Zkaisen

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

128

原创

8031

周排名

8233

总排名

35万+

访问

等级

3141

积分

948

粉丝

1231

获赞

77

评论

2966

收藏

私信

关注

热门文章

MATLAB函数调用

54974

层次分析法详细讲解(小白必看&电脑查看)

22302

DOSBOX与DEBUG的使用方法及命令

16306

入门学习MNIST手写数字识别

13109

基于LSTM算法的股票预测

13062

分类专栏

安全与运维

53篇

跟着小迪学安全

6篇

学习中遇到的问题

13篇

力扣刷题

3篇

自学笔记

4篇

图像识别

18篇

汇编语言

9篇

计算机体系结构

4篇

程序猿必备技能

2篇

斯坦福大学吴恩达教授Machine Learning课程

2篇

文献管理与信息分析

5篇

数学建模

7篇

软件安全

6篇

最新评论

ModuleNotFoundError: No module named ‘kerastuner‘

weixin_54370994:

你好,我import kerastuner出错,想问一下你的tensorflow,keras和python版本分别是什么呀

网络协议与攻击模拟_17HTTPS 协议

程序边界:

龙年拜年啦!愿你在龙年的舞台上,如同巨龙般展翅高飞,迎接更多的挑战和机遇。祝你龙年大吉,事业有成,家庭幸福,身体健康,万事如意!

网络协议与攻击模拟_17HTTPS 协议

征途黯然.:

The expertise in 网络协议与攻击模拟17HTTPS协议 is admirable, and the article is highly valuable.

网络协议与攻击模拟_17HTTPS 协议

CSDN-Ada助手:

恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618073514。

网络协议与攻击模拟_17HTTPS 协议

CSDN-Ada助手:

恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618073604。

大家在看

Tomcat源码解析(四):StandardServer和StandardService

1897

三个表联合查询的场景分析-场景1:a表关联了b表和c表

752

Redis 线程模型

405

H5 色彩流动炫酷引导页源码

【人体动作生成-综述】Human Motion Generation: A Survey

859

最新文章

Linux操作系统-06-进程与服务管理

Linux操作系统-07-Linux安装应用

Linux操作系统-05-文件查找与归档压缩

2024年32篇

2023年29篇

2022年44篇

2021年19篇

2020年4篇

目录

目录

分类专栏

安全与运维

53篇

跟着小迪学安全

6篇

学习中遇到的问题

13篇

力扣刷题

3篇

自学笔记

4篇

图像识别

18篇

汇编语言

9篇

计算机体系结构

4篇

程序猿必备技能

2篇

斯坦福大学吴恩达教授Machine Learning课程

2篇

文献管理与信息分析

5篇

数学建模

7篇

软件安全

6篇

目录

评论 5

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

Zkaisen

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎

什么叫做"基于熵权的 TOPSIS 综合评价法”? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册法学什么叫做"基于熵权的 TOPSIS 综合评价法”?关注者10被浏览117,571关注问题​写回答​邀请回答​好问题​添加评论​分享​6 个回答默认排序疯狂绅士​SAISM-夹逼对抗解释结构模型——扯蛋的表现形式​ 关注你这里有三个概念。只要记得topsis是什么就行!一、综合评价综合评价(Comprehensive Evaluation,CE),也叫综合评价方法或多指标综合评价方法,是指使用比较系统的、规范的方法对于多个指标、多个单位同时进行评价的方法。它不只是一种方法,而是一个方法系统,是指对多指标进行综合的一系列有效方法的总称。综合评价方法在现实中应用范围很广。综合评价是针对研究的对象,建立一个进行测评的指标体系,利用一定的方法或模型,对搜集的资料进行分析,对被评价的事物作出定量化的总体判断。综合评价的三大关键技术:其一,指标选择;其二,权数的确定;其三,方法的适宜。二、求权重的方法求权重的方法如下:求权重方法有客观法与主观法。熵权法是用的最广的客观法。三、topsis方法TOPSIS方法说明流程图中纵向的过程即为TOPSIS方法的流程。TOPSIS简介。  TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。该方法又被称为“双基点法”TOPSIS重要基本概念与原理 “正理想解”和“负理想解”是TOPSIS法的最基本的概念。  离正理想点(最好的解、最佳点、最优解、最大极值点)的距离越远,效果最差,即为负向指标。因为其数值越大越差,数值越小越牛逼。  离负理想点(最差的解、最差点、最劣解、最差极值点)的距离越远,效果最好,即为正向指标。因为其数值越小越牛逼,数值越大越差。 贴近度、相似度是TOPSIS法的另外一个重要概念。  越贴近正理想点,即数值越大,效果最大,即为正向指标。  越贴近负理想点,即数值越大,效果最差,即为为向指标。可以把熵权法只是topsis的一部分topsis就是一种综合评价方法。发布于 2022-10-07 18:53​赞同 44​​添加评论​分享​收藏​喜欢收起​SPSSAU​已认证账号​ 关注举个例子进行说明。一、分析前准备1.研究背景TOPSIS法用于研究评价对象与‘理想解’的距离情况,结合‘理想解’(正理想解和负理想解),计算得到最终接近程度C值。熵权TOPSIS法核心在于TOPSIS,但在计算数据时,首先会利用熵值(熵权法)计算得到各评价指标的权重,并且将评价指标数据与权重相乘,得到新的数据,利用新数据进行TOPSIS法研究。通俗地讲,熵权TOPSIS法是先使用熵权法得到新数据newdata(数据成熵权法计算得到的权重),然后利用新数据newdata进行TOPSIS法研究。例如:当前有一个项目进行招标,共有4个承包商,分别是A,B,C,D厂。由于招标需要考虑多个因素,各个方案指标的优劣程度也并不统一。为了保证评价过程中的客观、公正性。因此,考虑通过熵权TOPSIS法,对各个方案进行综合评价,从而选出最优方案。2.数据格式熵权TOPSIS法用于研究指标与理想解的接近度情况。1个指标占用1列数据。1个研究对象为1行,但研究对象在分析时并不需要使用,SPSSAU默认会从上到下依次编号。二、SPSSAU操作(1)登录账号后进入SPSSAU页面,点击右上角“上传数据”,将处理好的数据进行“点击上传文件”上传即可。(2)拖拽分析项在“综合评价”模块中选择“熵权topsis”方法,将分析项拖拽到右侧分析框中,点击“开始分析”即可。三、SPSSAU数据处理1.数据正向化/逆向化处理如果数据中有逆向指标(数字越大反而越不好的意思),此时需要使用‘SPSSAU数据处理->生成变量’的‘逆向化’功能处理。让数据变成正向指标(即数字越大越好的意思)。‘逆向化’的数据计算公式为:(Max-X)/(Max-Min),明显可以看出,针对逆向指标进行‘逆向化’处理后,数据就会变成正向指标。【SPSSAU】数据无量纲化处理 | 数据分析常见问题解答2.数据标准化处理针对数据进行标准化处理,目的在于解决量纲化问题。常见的标准化处理方法有:‘归一化’,‘区间化’,‘均值化’等。(1)‘归一化’将所有数据压缩在0到1之间;(2)‘区间化‘将所有数据压缩在自己设定的区间;(3)‘均值化’= 当前值 / 平均值。补充说明:一般而言,如果数据全部都大于0,建议使用‘均值化’;如果数据中有负数或者0,建议做‘区间化’让数据限定在一个区间(SPSSAU默认1~2之间);当然也可以考虑‘归一化’,让数据全部介于0~1之间。具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。(如果数据进行了正/逆向化处理就不需要再进行标准化处理。)四、SPSSAU分析背景:当前有6个国家经济技术开发区,分别在政务系统的4个指标上的评分值。数字越大表示指标越优。当前希望利用熵权TOPSIS法评价出6个开发区的政务系统排名情况。原始数据如下:本案例数据中包括4个政务系统的评价指标,而且全部都是正向指标,因此不需要进行正向化或者逆向化处理。以及接着数据标准化解决量纲问题上,本例子使用‘均值化’处理方法。操作为SPSSAU数据处理->生成变量:完成数据‘均值化’处理后,直接开始进行‘熵值TOPSIS法’分析,操作如下图:1.熵值法计算权重结果汇总上表格展示出4个政务系统指标的权重值,明显可以看出指标3的权重更大。但权重大小仅仅是过程值,熵值TOPSIS分析重心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。2.TOPSIS评价计算结果分析结果来源于SPSSAU从上表可知,利用熵权法后加权生成的数据(算法自动完成)进行TOPSIS分析,针对4个指标(MC_政务系统指标1, MC_政务系统指标2, MC_政务系统指标3, MC_政务系统指标4),进行TOPSIS评价,同时评价对象为6个(样本量数量即为评价对象数量);TOPSIS法首先找出评价指标的正负理想解值(A+和A-),接着计算出各评价对象分别与正负理想解的距离值D+和D-。根据D+和D-值,最终计算得出各评价对象与最优方案的接近程度(C值),并可针对C值进行排序。最终从上表可知:评价对象4,即开发区4,它的相对接近度C值最高为0.9995,因而说明开发区4在政务系统上的表现最优;其次是开发区3,相对接近度C起来0.8141。开发区1的政务系统表现最差。3.正负理想解4.描述统计分析数据完整并无缺失等,可通过上表格查看各分析项的平均值或标准差值等。从上表格可以看出四个分析项的样本量均为6,平均值均为1。五、其他说明1.如果分析数据中有负数或者0值如何办?如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’(该值为某列数据最小值的绝对值+0.01),以便让数据全部都大于0,因而满足算法要求。2. 面板数据如何进行熵值TOPSIS法?熵值TOPSIS法的原理是先进行熵值法,然后再进行TOPSIS法。无论是面板或者非面板数据,均可正常进行熵值TOPSIS法研究,并不需要特别处理。(当然面板数据进行分析时,也可以先筛选出不同的年份,重复进行多次均可)。六、总结熵权TOPSIS法分别涉及熵权法和TOPSIS法;熵权法计算各评价指标的权重值,然后利用权重值乘原始数据,得到newdata。系统利用newdata进行TOPSIS法进行计算,最终得到各评价对象的接近程序C值,用于判断和衡量评价对象的优劣排序等。【SPSSAU】熵权topsis法案例解读【SPSSAU】熵值法的各类应用【SPSSAU】熵值法操作及应用 | 数据分析常见问题解答今天的分享就到这里啦,更多干货请前往SPSSAU官网查看:发布于 2023-10-12 10:20​赞同 10​​添加评论​分享​收藏​喜欢

TOPSIS法——利用原始数据进行综合评价_topsis综合评价法步骤-CSDN博客

>

TOPSIS法——利用原始数据进行综合评价_topsis综合评价法步骤-CSDN博客

TOPSIS法——利用原始数据进行综合评价

最新推荐文章于 2022-12-31 10:10:45 发布

Sup星月★然

最新推荐文章于 2022-12-31 10:10:45 发布

阅读量9k

收藏

78

点赞数

10

分类专栏:

数学建模

文章标签:

线性代数

矩阵

数据分析

算法

数学建模

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/m0_57861784/article/details/122421229

版权

数学建模

专栏收录该内容

8 篇文章

13 订阅

订阅专栏

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。TOPSIS法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能准确地反映各评价方案之间的差距。

举个栗子:

姓名成绩小明89小王60小张74小周90

    请你为这四名同学成绩进行评分,该评分能合理的描述他们成绩的高低。

    一个很简单的想法:

姓名成绩排名修正后评分小明89230.3小王60410.1小张74320.2小周90140.4

我们会发现,可以任意修改他们的成绩,只要保证排名不变,那么评分就不会变,显然该评价方式不够合理!

一个比较好的想法:

构造计算评分的公式: (x - min) / (max - min)

姓名成绩未归一化的评分归一化评分小明89(89 - 60) / (90 - 60) = 0.970.97 / 2.44 = 0.3975小王60(60 - 60) / (90 - 60) = 00 / 2.44 = 0小张74(74 - 60) / (90 - 60) = 0.470.47 / 2.44 = 0.1926小周90(90 - 60) / (90 - 60) = 11 / 2.44 = 0.4098

思考:卷面最高成绩是100,最低成绩是0,为什么不直接用  (x - 0) / (100- 0) 呢 ?

原因: (1)比较的对象一般要远大于两个; (2)比较的指标也往往不只是一个方面的,例如成绩、工时数、课外竞赛得分等;(3)有很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP增速。 因此,我们构造计算评分的公式为: (x - min) / (max - min).

拓展:我们现增加一个指标,请为他们进行综合评分。

姓名成绩违纪次数小明892小王600小张741小周903

        成绩是越高越好,我们称这样的指标为极大型指标(效益性指标)。违纪次数越少越好,我们称这样的指标为极小型指标(成本型指标)。         那么这里我们需要将极小型指标违纪次数转化为极大型指标。

姓名成绩违纪次数正向化后违纪情况小明8921小王6003小张7412小周9030指标类型极大型极小型极大型

第一步:统一指标类型将所有的指标转化为极大型称为指标正向化(最常用).

第二步:标准化处理 成绩的单位是分,而违纪次数单位是次,单位量纲不同,因此需进行处理。为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。

标准化处理的计算公式

 第三步:计算得分并归一化

姓名成绩正向化后的违纪次数小明0.54370.2673小王0.36650.8018小张0.45200.5345小周0.60480指标类型极大型极大型

        当只有一个指标的时候,构造计算评分的公式为:

(x - min) / (max - min)         变形得:(x - min) / (max - x)+(x - min) 即:x与最小值距离 / x与最大值距离+x与最小值距离

        那多个指标时呢?

其实我们可以类比只有一个指标计算得分的方法!

        这里我们可得到:         最大值 [0.6048, 0.8018],最小值 [0.3665, 0]          计算可得:

        通过该方法,我们可以计算得出每个同学的成绩综合评分,然后对最终评分进行归一化处理,由此我们可得到每个人的最终排名。

        注意:要区别开归一化和标准化。归一化的计算步骤也可以消去量纲的影响,但更多时候,我们进行归一化的目的是为了让我们的结果更容易解释,或者说让我们对结果有一个更加清晰直观的印象。例如将得分归一化后可限制在0—1这个区间,对于区间内的每一个得分,我们很容易的得到其所处的比例位置。

        所以说,TOPSIS法也被称为优劣解距离法。

总结         TOPSIS法的基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

拓展 最常见的四种指标:

指标名称指标特点example极大型(效益性)指标越大(多)越好成绩、GDP增速、利润极小型(成本型)指标越小(少)越好费用、次品率、污染程度中间型指标越接近某个值越好水质评估时的pH值区间型指标落在某个区间最好体温、水中植物性营养物量

注意:正向化的公式不唯一,也可以结合自己的数据进行适当的修改。

(1)极小型指标 ----> 极大型指标:max - x  (如果所有元素均为正数,也可用 1/x ) (2)中间型指标 ----> 极大型指标:

(3)区间型指标 ----> 极大型指标:

         此外,在本例中我们没有考虑各项指标权值的影响,默认了各项指标的权重都为1.          我们可用以下方法加入权重:        我们也可以先对标准化矩阵中的每个元素计算权重,然后直接用带权重的标准化矩阵来计算得 分,这样得到的结果和上面在计算距离时引入权重得到的结果是几乎相同的。

         那权重怎么来呢?可以用我们之前讲的层次分析法求得。当然,层次分析法的主观性太强了,更推荐大家使用熵权法来进行客观赋值。

优惠劵

Sup星月★然

关注

关注

10

点赞

78

收藏

觉得还不错?

一键收藏

知道了

0

评论

TOPSIS法——利用原始数据进行综合评价

数学建模中TOPSIS法也被称为优劣解距离法,本文详细讲解了该方法的原理与应用,在评价类问题中,当有原始数据时用TOPSIS法进行综合评价非常合适,避免了层次分析法主观性太强的影响。

复制链接

扫一扫

专栏目录

Topsis综合评价法代码及其数据

07-22

Topsis综合评价法代码及其数据

综合评价与决策方法(一)——TOPSIS法的原理

weixin_45813658的博客

08-20

2万+

综合评价与决策方法综述理想解法

参与评论

您还未登录,请先

登录

后发表或查看评论

综合评价方法课件-TOPSIS法及模糊评价法的理解和比较

03-17

研究生授课辅导课件,应用作业。TOPSIS法及模糊评价法的理解和比较。

TOPSIS评价法

weixin_62546664的博客

12-31

797

TOPSIS评价法

TOPSIS法(优劣距离法)

yying_guc的博客

07-04

9218

数学建模中TOPSIS方法步骤讲解~

数学建模-Topsis综合评价(评价模型)

会思想的苇草i的博客

07-30

1万+

Topsis综合评价方法是一种常用的数学建模工具,用于多个指标下的决策评价和排序。本文将介绍Topsis方法的基本原理和应用,包括构建评价指标矩阵、计算正负理想解、计算综合评价值等步骤。我们还将通过实例演示如何利用Topsis方法解决实际问题,比如企业选址、产品选择等方面的应用。希望本文能够帮助读者理解Topsis综合评价方法在数学建模中的重要性,掌握其应用技巧,提高评价和决策分析能力。

评价模型-TOPSIS法

热门推荐

qq_39742734的博客

08-25

3万+

TOPSIS法亦称理想解法,是一种有效的多指标评价方法。

1.1 方法和原理

    首先设置多属性的决策方案集为D={d11,d2,...,dm}D={d11,d2,...,dm}D=\left\{d1_1,d_2,...,d_m\right\} ,衡量方案属性优劣的变量为x1,···,xn,x1,···,xn,x_1,···,x_n, 方案D种每个方案的nnn 个属性值构成的向量为[ai1...

topsis法_TOPSIS评价法的原理及Python实现

weixin_39831991的博客

12-07

1395

1.该方法的目的:由于指标类型有很多,极大型、极小型、中间型、区间型……为了使得各类指标之间可相互比较,于是将各类型的指标均进行正向化处理,即都转化为极大型指标。然后,再对正向化后的各指标分别进行标准化处理。根据评分公式,计算各个候选人(或备选方案)的得分,该得分考虑了多个指标的影响,最后再对得分进行归一化处理,按照得分排序即可知道最佳候选人(或最佳方案)。至此,是TOPSIS所能做的一切……TO...

数学建模(一)——Topsis法(优劣解距离法)

m0_53272354的博客

07-31

857

TOPSIS 法(优劣解距离法)是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。

TOPSIS法

weixin_53283563的博客

06-29

281

综合评价与决策方法--TOPSIS

Topsis方法对数据综合评价

weixin_43275631的博客

09-21

3624

Topsis方法对数据综合评价

数学建模-TOPSIS(优劣解距离法)

曹同学的博客

05-08

2843

TOPSIS(Technique for Order Preference by Similarity to an Ideal Solution)

优劣解距离法

TOPSIS是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距

其基本过程为 先将原始数据矩阵统一指定类型(正向化处理),然后可以得到正向化的矩阵,再对正向化矩阵进行标准化处理以消除各指标 部分对于整体的影响,并找到有限方案中的最有方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案之间的距离,并获得各

综合评价与决策方法一:优劣解距离法(TOPSIS法)

weixin_53972936的博客

02-11

1万+

1.TOPSIS方法简介

前文所讲的层次分析法和熵权法主要用来确定每个指标在每个方案中所占权重,在得到权重后与每个指标对应的值求积再求和就能得到每个方案的综合评分,因此也可以用来进行评价。但是其也有各自的局限性,例如层次分析法主观性太强并且方案层不能太多,否则很难通过一致性检验,而熵权法就只适用于计算权重,其所得评价结果也具有一定局限性。

而TOPSIS是一种综合评价方法,可以弥补层次分析法的一些缺点:

(1)优劣解距离法可以充分利用原始数据信息,且其结果能充分反应各...

SPSSAU综合评价方法汇总

m0_37228052的博客

06-30

6525

综合评价是对某事物进行多指标综合评价的过程,是一种科学研究和科学决策的过程。一般应当包括指标体系设计、收集资料、整理资料和统计分析几个阶段。

简单从分析角度来讲,综合评价方法步骤主要包括:确定指标体系、指标数据处理(无量纲化等)、确定指标权重、计算综合评价结果及综合排名。

上图中总结了5种综合评价方法,大致可分为两类:

其中TOPSIS法、熵值TOPSIS法、秩和比RSR法、灰色关联法均是使用小样本数据对多个指标进行综合评价,为每个评价对象计算综合得分,找出最优方案。

模糊综合评价则是以模糊数学

【2.2】 数学建模之TOPSIS(优劣解距离模型)|极小型、中间型、区间型指标的正向化的方法|各种指标正向化的MATLAB代码讲解

weixin_45615071的博客

04-27

1万+

数学建模之TOPSIS(优劣解距离模型)|极小型、中间型、区间型指标的正向化的方法|各种指标正向化的MATLAB代码讲解

Topsis算法(优劣解距离法)——综合评价方法

jiekeheiguanglan的博客

06-11

3291

TOPSIS 法综合评价方法

归一化(标准化)

qq_49785839的博客

04-10

7679

归一化常见有三种方式:

(1)线性归一化

将数据归一化到一个范围 最大值y,和最小值x,即 [x,y] ,一般是 [0,1].

y=(x-min)/(max-min)

推导过程可以用一元方程y=ax+b进行推导:

0 = min *a+b

1=max*a+b

===>a=1/(max-min) ; b = -min/(max - min)

===>y=(x-min)/(max-min)

pytorch中transforms中ToTensor就是将数据转成tensor后进行 [0,1] 的标

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

m0_46271335的博客

04-01

1万+

方法介绍:

上篇文章介绍了熵权法的计算,得到各个指标的权重。接下来讲解TOPSIS法。

TOPSIS法是一种逼近理想解排序方法,基本思想是:把综合评价的问题通过列成矩阵,通过矩阵归一确定理想解和负理想解,然后通过计算每一个被评价对象与理想解和负理想解之间的差距,再比较与理想解的接近程度,从而出综合评价排名。

计算步骤:

实例分析

某省的数据如下:

1.对数据进行归一化处理:

2.使用上篇文...

TOPSIS综合评价模型

weixin_43829548的博客

05-01

6078

TOPSIS方法

逼近理想解排序法,简称为优劣解距离法是一种常用的综合评价方法。

优点:充分利用原始数据信息,结果能精确地反映各评价方案之间的差距;数据分布和样本含量无严格限制,计算简单易行。

基本过程

正向化处理:正向化矩阵

标准化处理:标准化矩阵

计算最优和最劣方案

计算各评价和最优劣的距离

归一化评分

指标

成绩越高(大)越好,这样指标称为极大型指标(效益型指标);

退款金额越少越好,这样...

综合评价——TOPSIS法 C++代码

最新发布

05-20

以下是使用C++实现TOPSIS法的代码: ``` #include #include using namespace std; const int MAXN = 100; const int MAXM = 100; double a[MAXN][MAXM], b[MAXM]; double w[MAXM], maxn[MAXM], minn[MAXM]; ...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

Sup星月★然

CSDN认证博客专家

CSDN认证企业博客

码龄3年

暂无认证

36

原创

103万+

周排名

5万+

总排名

7万+

访问

等级

467

积分

62

粉丝

110

获赞

1

评论

433

收藏

私信

关注

热门文章

层次分析法——确定指标权重、解决评价类问题

20863

数据可视化——用Excel巧妙绘制图表及在论文中的排版技巧

9826

TOPSIS法——利用原始数据进行综合评价

9013

模糊综合评价法——解决评价指标模糊、难以量化的问题

8326

模糊综合评价在实际问题中的应用(案例)

7551

分类专栏

Linux

1篇

数据库

1篇

Java学习

14篇

debug

2篇

Python学习

3篇

前端

6篇

JavaAPI

2篇

数学建模

8篇

最新评论

模糊综合评价在实际问题中的应用(案例)

Dufengjiao:

如何用代码实现

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

Linux 查看系统类型和版本(内核版本 | 发行版本)

Java时间类型 | 类型转换 及 java.util.Date与java.time.LocalDateTime区别

Neo4j CQL语法

2023年27篇

2022年9篇

目录

目录

分类专栏

Linux

1篇

数据库

1篇

Java学习

14篇

debug

2篇

Python学习

3篇

前端

6篇

JavaAPI

2篇

数学建模

8篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

TOPSIS法_百度百科

IS法_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心TOPSIS法播报讨论上传视频C.L.Hwang和K.Yoon于1981年提出的方法收藏查看我的收藏0有用+10TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。中文名TOPSIS法外文名Technique for Order Preference by Similarity to an Ideal Solution提出人C.L.Hwang和K.Yoon提出时间1981年目录1简介2原理3涵义简介播报编辑TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性即可。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。原理播报编辑其基本原理,是通过检测评价对象与最优解、最劣解的距离来进行排序,若评价对象最靠近最优解同时又最远离最劣解,则为最好;否则不为最优。其中最优解的各指标值都达到各评价指标的最优值。最劣解的各指标值都达到各评价指标的最差值。涵义播报编辑TOPSIS法其中“理想解”和“负理想解”是TOPSIS法的两个基本概念。所谓理想解是一设想的最优的解(方案),它的各个属性值都达到各备选方案中的最好的值;而负理想解是一设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。方案排序的规则是把各备选方案与理想解和负理想解做比较,若其中有一个方案最接近理想解,而同时又远离负理想解,则该方案是备选方案中最好的方案。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000