三、MATLAB之评价算法

序言

科研中常用的算法有优化算法、预测算法和评价算法。

  • 优化算法
    1. 模拟退火算法
    2. 遗传算法
    3. 群算法 ...
  • 预测算法
    1. 神经网络
    2. 灰色预测
    3. 拟合...
  • 评价算法
    1. 加权平均
    2. 模糊综合评价...

本篇结合买西瓜问题,简要谈谈模糊综合评价和层次分析法。

买瓜

去买西瓜,既要保熟,又要色泽艳丽、新鲜、甜、形状好看,买个瓜竟要考虑这么多因素!然而这么多因素在你心中所占的分量是各不相同的,为了量化各个评价指标在你心中的所占的具体分量这里就需要层次分析法。同时为了避免被卖瓜者坑,买到生瓜蛋子,你请了100个亲戚朋友,从色泽、形状、新鲜度、甜度四个方面都来给瓜打分,最终得到下表:

色泽 形状 新鲜度 甜度 总评
满意 70 30 60 10
一般 20 50 35 50
不满意 10 20 5 40
合计 100 100 100 100

由上表可知,对于同一个西瓜的色泽、形状、新鲜度、甜度七大姑八大姨众说纷纭,褒贬不一,比如针对色泽这个指标有70个人满意,20人认为一般还有10人不满意。对于色泽、形状、新鲜度、甜度满意的人数分别为70,30,60,10那么满意总评该怎么填呢,这里就需要模糊综合评价?是(70+30+60+10)/400=42.5%吗,这是最简单的平均综合评价,当然还可以根据层次分析得到的色泽、形状、新鲜度、甜度在心中的权重加权平均。

层次分析法

背景知识不再赘述,这里给出代码,在主函数总调用[w,CR]=AHB(判断矩阵)即可,w就是C1-Cn各个要素的权重。
AHB.m

点击查看代码
 function [w,CR] = AHB(A)
 RI = [ 0.00 0.00 0.58 0.90 1.12 1.24 1.32 1.41 1.45];
 n = size(A,1);
 [V, D] = eig(A);
 [lamda, i] = max(diag(D));
 CI = (lamda-n) / (n-1);
 CR = CI / RI(n); % CR必须小于0.1才满足一致性检验
 if CR<0.1
 disp('满足一致性检验')
 else
 disp('不满足一致性检验')
 end
 W = V(:,i); w = W/sum(W);
 
%******************** test data *********************
% A = [1/1 2/1 5/1 3/1 % 判断矩阵
%    1/2 1/1 3/1 1/2
%      1/5 1/3 1/1 1/4
%     1/3 2/1 4/1 1/1];
  
%  B = [1/1 2/1 5/1 3/1 % 判断矩阵
%     1/2 1/1 3/1 1/2
%     1/4 1/3 1/1 1/4
%     3 2/1 2 1/1];
%*****************************************************
 
posted @ 2021-10-09 21:23  王若虚  阅读(340)  评论(0)    收藏  举报