首页 > 其他分享 >模糊综合评价——MATLAB实现

模糊综合评价——MATLAB实现

时间:2025-01-05 10:32:29浏览次数:3  
标签:end min xiaoyi 模糊 num2str MATLAB max 评价 chengben

本文使用MATLAB实现模糊综合评价,部分代码如下:

相对偏差法:

function [y,F]=xiangduipiancha(A,xiaoyi)
[n,l]=size(A);
A_max=max(A);A_min=min(A);
chengben=1:l;
for i=1:length(xiaoyi)
    a=find(chengben~=xiaoyi(i));
    chengben=chengben(a);
end
u=zeros(1,l);
u(xiaoyi)=A_max(xiaoyi);u(chengben)=A_min(chengben);
R=[];
for i=1:l
    R(:,i)=abs(A(:,i)-u(i))/(A_max(i)-A_min(i));
end
w=quan(A');     
F=(R*w')';     
[x,y]=sort(F);
disp(['各方案的优劣次序排序为',num2str(y),'。'])
disp(['其中第',num2str(y(1)),'种方案最优,其加权平均差为',num2str(x(1))])
end



相对优属度:

function [y,F]=xiangduiyoushudu(A,xiaoyi)
l=size(A,2);
A_max=max(A);A_min=min(A);
chengben=1:l;
for i=1:length(xiaoyi)
    a=find(chengben~=xiaoyi(i));
    chengben=chengben(a);
end
u=zeros(1,l);
u(xiaoyi)=A_max(xiaoyi);u(chengben)=A_min(chengben);
R=[];
%相对优属度法的R计算方法
for i=1:l
    if sum(find(xiaoyi==i))~=0
        R(:,i)=A(:,i)/u(i);
    else
        R(:,i)=u(i)./A(:,i);
    end
end
w=quan(R');   
F=(R*w')';    
[x,y]=sort(F,'descend');
disp(['各方案的优劣次序排序为',num2str(y),'。'])
disp(['其中第',num2str(y(1)),'种方案最优,其加权平均差为',num2str(x(1))])
end

quan函数:

function w=quan(A)
%变异系数法,波动越大(方差越大),得到的权值越大
[n,l]=size(A);
v=[];
for i=1:n
    s=sqrt(sum(((A(i,:)-mean(A(i,:))).^2))/(l-1));
    v(i)=s/abs(mean(A(i,:)));
end
w=v/sum(v);
end

各方案的优劣次序排序为3  1  5  2  4
其中第3种方案最优,其加权平均差为0.90702

标签:end,min,xiaoyi,模糊,num2str,MATLAB,max,评价,chengben
From: https://blog.csdn.net/Li8384/article/details/144846896

相关文章