2024.5.5
问题三的代码:
function [s,w,a,b,c,sort_w,index]=shang3(x,y,ind)
%实现用熵值法求各指标(列)的权重及各数据行的得分
%x为原始数据矩阵, 一行代表一个样本, 每列对应一个指标
%ind指示向量,指示各列正向指标还是负向指标,1表示正向指标,2表示负向指标
%s返回各行(样本)得分,w返回各列权重
[n,m]=size(x); % n个样本, m个指标
%%数据的归一化处理
for i=1:m
if ind(i)==1 %正向指标归一化
X(:,i)=guiyi(x(:,i),1,0.002,0.996); %若归一化到[0,1], 0会出问题
else %负向指标归一化
X(:,i)=guiyi(x(:,i),2,0.002,0.996);
end
end
%%计算第j个指标下,第i个样本占该指标的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
end
%%计算第j个指标的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e; %计算信息熵冗余度
w=d./sum(d); %求权值w
s=100*w*X'; %求综合得分
a=sum(s);
b=100*w*X'/a;
c=100*w*X'*50/a;
[sort_w,index]=sort(w,'descend');
d=[4,1.5,1.5,1,2.5];
e=[32,10,10,2,20];
allp=10;
p=[];
su=[];
su2=[];
su3=[];
xxx=[];
for k=1:3
A=['第',num2str(k),'组全体科技成果的分数:'];
su(k)=0;
su3(k)=0;
xx=[];
xxx(k)=0;
for i=(k-1)*5+1:(k-1)*5+5
B=['第',num2str(k),'组的第',num2str(i-(k-1)*5),'人的年度个人成果分数:'];
su2(i)=0;
xx(i)=y(i,1);
xxx(k)=(xxx(k)+xx(i));
for j=1:m
su(k)=(su(k)+x(i,j)*w(j));
su2(i)=(su2(i)+x(i,j)*w(j));
end
B=[B,num2str(su2(i))];
B=[B,' '];
disp(B);
end
A=[A,num2str(su(k))];
disp(A);
D=['第',num2str(k),'组的团队总绩效:'];
for i=(k-1)*5+1:(k-1)*5+5
C=['第',num2str(k),'组的第',num2str(i-(k-1)*5),'人的个人年度总绩效:'];
p(i)=xx(i)/e(i-(k-1)*5)*d(i-(k-1)*5)+su2(i)/su(k)*allp;
su3(k)=(su3(k)+p(i));
C=[C,num2str(p(i))];
C=[C,' '];
disp(C);
end
D=[D,num2str(su3(k))];
D=[D,' '];
disp(D);
disp(' ');
end
dp=[2.3,2,2.1,37.4,2.2];
alls=0;
E=['最优团队绩效情况下个人经费绩效分数:'];
for i=1:5
alls=(alls+dp(i)/e(i)*d(i)+su2(i)/su(1)*allp);
E=[E,num2str(dp(i)/e(i)*d(i))];
E=[E,' '];
disp(alls);
end
disp(E);
ind=[1 1 1 1 1 1 1 1 1]; [s,w,a,b,c,sort_w,index]=shang3(B3,B1,ind)

浙公网安备 33010602011771号