学习资源声明:【大师兄数学建模】第3讲 模糊综合评价上机篇_哔哩哔哩_bilibili
本篇主要是代码干货以及实操过程图,供大家学习和参考。
模糊综合评价理论篇的链接在这里哦:数学建模 2 模糊综合评价-CSDN博客
先引入昨天的题目:
废话不多说,直接上代码🔥:(代码里面都有详细注释哦)
eval_mat=[0.8,0.15,0.05,0,0;
0.2,0.6,0.1,0.1,0;
0.5,0.4,0.1,0,0;
0.1,0.3,0.5,0.05,0.05;
0.3,0.5,0.15,0.05,0;
0.2,0.2,0.4,0.1,0.1;
0.4,0.4,0.1,0.1,0;
0.1,0.3,0.3,0.2,0.1;
0.3,0.2,0.2,0.2,0.1;
0.1,0.3,0.5,0.1,0;
0.2,0.3,0.3,0.1,0.1;
0.2,0.3,0.35,0.15,0;
0.1,0.3,0.4,0.1,0.1;
0.1,0.4,0.3,0.1,0.1;
0.3,0.4,0.2,0.1,0;
0.1,0.4,0.3,0.1,0.1;
0.2,0.3,0.4,0.1,0;
0.4,0.3,0.2,0.1,0 ];
disp('Eval Matrix:');
disp(eval_mat);
% 获取矩阵eval_mat的行数和列数,存储在变量m和n中。
[m,n]=size(eval_mat);
% 设置分隔点,这些点将矩阵分割成多个子块,用于后续的计算。
% 注意,分隔点的索引是从0开始的,而不是从1开始。
separation_points=[0,4,9,14];
% 获取二级指标权重矩阵w_mat,这是一个嵌套的cell数组,每个元素是一个权重向量。
% 每个权重向量代表了对应二级指标的权重分布。
w_mat={[0.2,0.3,0.3,0.2], % 第一个二级指标的权重
[0.3,0.2,0.1,0.2,0.2], % 第二个二级指标的权重
[0.1,0.2,0.3,0.2,0.2], % 第三个二级指标的权重
[0.3,0.2,0.2,0.3]}; % 第四个二级指标的权重
% 获取一级指标权重向量w_vec,这个向量包含了所有一级指标的权重。
w_vec=[0.4,0.3,0.2,0.1];
% 将矩阵的最后一行索引添加到分隔点数组中。
separation_points(end+1)=m;
% 初始化一个空的cell数组eval_mat_second,用于存储计算后的二级评价向量。
eval_mat_second=[];
% 循环遍历每个分隔点区间,计算每个二级指标的评价向量。
for i=1:length(separation_points)-1
% 使用对应的二级指标权重与eval_mat的相应子块相乘,得到该二级指标的评价向量。
% 并将结果追加到eval_mat_second中。
eval_mat_second=[eval_mat_second;w_mat{i}*eval_mat(separation_points(i)+1:separation_points(i+1),:)];
end
% 显示计算得到的一级评价向量。
disp('The first-level evaluation vectors are:');
disp(eval_mat_second);
eval_vec=w_vec*eval_mat_second;
disp('The ultimate evaluation vector is:');
disp(eval_vec);
输出结果如下:
模糊综合评价的上机操作并不复杂,即简单的矩阵计算。
(求一个小小的赞)
希望和大家一同成长和进步!下一篇内容是熵权法。