Notas de estudio de modelado matemático (28) Categoría de evaluación: modelo TOPSIS

El método Topsis, el nombre completo de Técnica para la preferencia de orden por similitud con una solución ideal, a menudo se traduce como el método a distancia de superioridad o solución inferior en chino. Este método puede evaluar y clasificar a las personas en función de los datos existentes. El método de clasificación de acuerdo con la cercanía de un número limitado de objetos de evaluación al objeto idealizado es evaluar las ventajas y desventajas relativas entre los objetos existentes.
Inserte la descripción de la imagen aquí
Presente un ejemplo práctico para comprender:
Ejemplo: La siguiente tabla muestra los parámetros físicos de 5 estudiantes. Utilice el método TOPSIS para hacer una evaluación integral de la condición física de los estudiantes.
Inserte la descripción de la imagen aquí
Tenga en cuenta que las direcciones de los cuatro indicadores anteriores no son las lo mismo, y es
Inserte la descripción de la imagen aquí
necesario medir diferentes indicadores Positivo:
1. Indicadores muy pequeños
Inserte la descripción de la imagen aquí
2. Indicadores intermedios
Inserte la descripción de la imagen aquí
3. Indicadores de intervalo
Inserte la descripción de la imagen aquí
Debido a que las dimensiones de las diferentes características son diferentes, los indicadores deben estandarizarse más adelante

Determinación del mejor y peor conjunto de planes:

1. Por un lado, observe si el factor de decisión en sí tiene un valor límite, que debe cumplir con la importancia práctica

2. Si no hay o es difícil de encontrar, encuentre los valores MAX y MIN en todos los conjuntos de evaluación

Cálculo de la distancia:
1. Fórmula de la distancia positiva:
Inserte la descripción de la imagen aquí
2. Fórmula de la distancia negativa:
Inserte la descripción de la imagen aquí
3. Valor del índice de evaluación:
Inserte la descripción de la imagen aquí
Tome Xiaoming como ejemplo para calcular el valor del índice de evaluación:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
mayor expansión:
el cálculo en el ejemplo anterior asume que la importancia de los factores de evaluación es el mismo, que a menudo no es el caso en la práctica, y existen diferencias en el grado de importancia entre varios factores. ¿Cómo establecer la importancia de cada factor?
Inserte la descripción de la imagen aquí
El peso se determina por AHP o método de entropía
(la tercera parte de esta columna introdujo el método de entropía de EXCEL)

matlab: método de entropía combinado con TOPSIS


%基于熵权法对于TOPSIS的修正
clear;clc;
load X.mat;
%获取行数列数
r = size(X,1);
c = size(X,2);
%首先,把我们的原始指标矩阵正向化
%第二列中间型--->极大型
middle = input("请输入最佳的中间值:");
M = max(abs(X(:,2)-middle));
for i=1:r
      X(i,2) = 1-abs(X(i,2)-middle)/M;
end
%第三列极小型--->极大型
max_value = max(X(:,3)); 
X(:,3) = abs(X(:,3)-max_value);
%第四列区间型--->极大型
a = input("请输入区间的下界:");
b = input("请输入区间的下界:");
M = max(a-min(X(:,4)),max(X(:,4))-b);
for i=1:r
       if (X(i,4)<a)
            X(i,4) = 1-(a-X(i,4))/M;
       elseif (X(i,4)<=b&&X(i,4)>=a)
           X(i,4) = 1;
       else
           X(i,4) = 1-(X(i,4)-b)/M;
       end
end
disp("正向化后的矩阵为:");
disp(X);
%然后对正向化后的矩阵进行熵权法赋权重
tempX = X;   %代替X进行计算的辅助变量,避免X受到影响而发生改变
%测试:tempX = [1,2,3;-1,0,-6;5,-3,2];
%标准化矩阵,消除负数项,并且把数值控制在0-1区间
min = min(tempX);
max = max(tempX);
min = repmat(min,size(tempX,1),1);
max = repmat(max,size(tempX,1),1);
tempX = (tempX-min)./(max-min);
%求出矩阵的概率矩阵,即能取到该值的概率
sumX = repmat(sum(tempX),size(tempX,1),1);
pX = tempX./sumX;
%求出信息熵矩阵,信息熵越大,能获得的信息就越少
temp = pX.*mylog(pX);
n = size(tempX,1);
sum1 = sum(temp);
eX =  sum1.*(-1/log(n));
%求出信息效用值
dX = 1-eX;
%求出每个指标的熵权
wX = dX./(sum(dX));
%打印输出
disp("每个指标依次的熵权为:");
disp(wX);

Método de entropía:

    function [W] = Entropy_Method(Z)
    % 计算有n个样本,m个指标的样本所对应的的熵权
    % 输入
    % Z : n*m的矩阵(要经过正向化和标准化处理,且元素中不存在负数)
    % 输出
    % W:熵权,m*1的行向量
     
    %% 计算熵权
        [n,m] = size(Z);
        D = zeros(1,m);  % 初始化保存信息效用值的行向量
        for i = 1:m
            x = Z(:,i);  % 取出第i列的指标
            p = x / sum(x);
            % 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以这里我们自己定义一个函数
            e = -sum(p .* mylog(p)) / log(n); % 计算信息熵
            D(i) = 1- e; % 计算信息效用值
        end
        W = D ./ sum(D);  % 将信息效用值归一化,得到权重    
    end

Supongo que te gusta

Origin blog.csdn.net/qq1198768105/article/details/113652262
Recomendado
Clasificación