2022年五一数学建模竞赛C题

一、熵权法加TOPSIS

为了防止我的遗忘,把代码放这里供大家参考

% 第一列为可靠性,第二列为故障率
Q_2 = [];

% 对故障率进行正向化
MAX = max(Q_2);
Q_2_M = Q_2(:,1); 
for i = 1:length(Q_2)
    Q_2_M(i,2) = abs(MAX(2)-Q_2(i,2)); 
end

% 标准化处理
MIN = min(Q_2_M);
MAX = max(Q_2_M);
Q_2_MIAX = [];
for i = 1:length(Q_2)
    Q_2_MIAX(i,1) = (Q_2_M(i,1)-MIN(1))/(MAX(1) - MIN(1));
    Q_2_MIAX(i,2) = (Q_2_M(i,2)-MIN(2))/(MAX(2) - MIN(2));
end

% 熵权法
Z = Q_2_MIAX;
[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,所以要判断
    n = length(p);   % 向量的长度
    lnp = zeros(n,1);   % 初始化最后的结果
    for j = 1:n   % 开始循环
        if p(j) == 0   % 如果第i个元素为0
            lnp(j) = 0;  % 那么返回的第i个结果也为0
        else
            lnp(j) = log(p(j));
        end
    end
    %到这里结束
    e = -sum(p .* lnp) / log(n); % 计算信息熵
    D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D);  % 将信息效用值归一化,得到权重
W

% TOPSIS
D_min = min(Q_2_MIAX);
D_max = max(Q_2_MIAX);

zonghedefen = 1:13;  %生成记录点
for i = 1:13
    %利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合
    D_jia = sqrt(W(1)*(Q_2_MIAX(i,1)-D_max(1))^2+W(2)*(Q_2_MIAX(i,2)-D_max(2))^2);
    D_jian = sqrt(W(1)*(Q_2_MIAX(i,1)-D_min(1))^2+W(2)*(Q_2_MIAX(i,2)-D_min(2))^2);
    zonghedefen(i) = D_jian/(D_jia+D_jian);
end

zonghedefen = zonghedefen'

权重值的效果好像不太好,不管了,反正出出来了,哈哈哈哈哈~~~

二、sigmoid与arccot

队长让我出这种图
在这里插入图片描述
为了完成任务,找函数图像
找到sigmoidarccot差不多
sigmoid
在这里插入图片描述

在这里插入图片描述
因此,只需要稍作修改即可。
关于怀疑那个,决定用cos函数,周期拉长,峰值调低即可
Matlab代码如下

x=linspace(-10.0,10.0);%定义自变量的取值
y=1./(1+exp(-0.6*(x - 1.5)));%sigmoid函数 函数里一定要用点除‘./’,因为是矩阵运算,所以要把纬度保持一致。
plot(x,y)%绘制图形
xlabel('x')%添加横轴名称
ylabel('y')%添加纵轴名称
legend('sigmoid')%添加曲线标记符
title('sigmoid')%给图像添加标题
hold on

x=linspace(-10.0,10.0);%定义自变量的取值
y=1-(1./(1.0+exp(-0.7*(x + 1.5))));%sigmoid函数 函数里一定要用点除‘./’,因为是矩阵运算,所以要把纬度保持一致。
plot(x,y)%绘制图形
xlabel('x')%添加横轴名称
ylabel('y')%添加纵轴名称
legend('sigmoid')%添加曲线标记符
title('sigmoid')%给图像添加标题
hold on

x=linspace(-10.0,10.0);%定义自变量的取值
y = (1/3).*cos((1/5)*x);
plot(x,y)%绘制图形
hold off

加上一点修改
在这里插入图片描述

反正看上去效果还不错哈,哈哈哈,队长也很满意~~~~

注意:如果你的Word发生吃字现象,那么insert被你无意中按了一下,再按下去就好了

猜你喜欢

转载自blog.csdn.net/m0_52592798/article/details/124563474