理论内容来自https://wenku.baidu.com/view/193063449a89680203d8ce2f0066f5335b81671d.html百度文库中的课本知识。
主函数代码
BW=[0.5 0.3 0.2];
BWU=[];
u=[95 85 75];
um=[100 100 100];
BWU_LE=length(BWU);
if BWU_LE==0 %用于判断是否是用户自定义最大权限,如果没有则按照下面的方式计算
for i=1:length(BW)
BWU(i)=BW(i)./(min(BW)+max(BW));
end
end
weight=VariableWeight(BW,BWU,u,um);
score=sum(weight.*u)
公式代码
function Weight = VariableWeight(BW,BWU,u,um) %BW表示基础权重 BWU表示各因素权重上界
y0=[]; %对应课本上的λ0(i)
y1=[]; %对应课本上的λ*(i),*在下面
y2=[]; %对应课本上的λ*(i),*在上面
Y=[]; %对应课本上的λi(u)
for i=1:length(BW)
y0(i)= BWU(i).*(sum(BW)-BW(i))./(1-BWU(i));
y1(i)=sum(BW)-BW(i);
end
for j=1:length(BW)
y2(j)=sum(y0)-y0(j);
K(j)=1-1./(log((y0(j).*(y2(j)+BW(j)))./(sum(y0).*BW(j))));
Y(j)=(y2(j).*y0(j))./(sum(y0).*exp(1./(1-K(j)).*(u/um).^(1-K(j))));
end
Weight=Y./sum(Y);
end