1/11
简介:本文档为《纵横向拉开档次法的MATLAB实现》,可适用于工程科
技领域,主题内容包含globalxystdszxystdxy定义全局变量loadshuju原始数据
xystd=zscore(shuju)数据无量纲处理xystdrow,符等。
globalxystdszxystdxy%定义全局变量
loadshuju%原始数据
xystd=zscore(shuju);%数据无量纲处理
[xystdrow,xystdcol]=size(xystd);
%----------区域知识创造能力评价----------
fortt=1:xystdcol
xystdsz{tt}(:,:)=xystd{tt}(:,1:10);%提取区域知识创造能力指标无量纲值
end
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
fori=1:xycol
w0(1,i)=1/xycol;%优化初始值
end
Aeq=[];beq=[];
lb=zeros(1,xycol);ub=ones(1,xycol);%zeros生成零矩阵;ones生成全1阵。
options=optimt('largescale','off');%优化函数,largescale大规模算法
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);%优化求权
重;fmincon用来求解非线性多元函数最小值。
2/11
wqz1=w./sum(w);%权重归一化
fortt=1:xystdszcol
z{tt}(:,1)=xystd{tt}(:,1:10)*wqz1';%求评价值
pxacz(:,tt)=px(z{tt}(:,1));%对评价值排序
end
clearw0wlbubfaval;
clearglobalxystdsz;
%--------区域知识流动能力评价------------
fortt=1:xystdszcol
xystdsz{tt}(:,:)=xystd{tt}(:,11:16);%提取区域知识流动能力指标无量纲值
end
globalxystdsz;
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
fori=1:xycol
w0(1,i)=1/xycol;%优化w初始值
end
Aeq=[];beq=[];
lb=zeros(1,xycol);ub=ones(1,xycol);
options=optimt('largescale','off');
3/11
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
wqz2=w./sum(w);%权重归一化
fortt=1:xystdszcol
z{tt}(:,2)=xystd{tt}(:,11:16)*wqz2';%求评价值
pxald(:,tt)=px(z{tt}(:,2));%对评价值排序
end
clearw0wlbubfaval;
clearglobalxystdsz;
%-----------企业技术创新能力评价------------
fortt=1:xystdszcol
xystdsz{tt}(:,:)=xystd{tt}(:,17:28);%提取企业技术创新能力指标无量纲值
end
globalxystdsz;
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
fori=1:xycol
w0(1,i)=1/xycol;%优化w初始值
end
Aeq=[];beq=[];
lb=zeros(1,xycol);ub=ones(1,xycol);
4/11
options=optimt('largescale','off');
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
wqz3=w./sum(w);%权重归一化
fortt=1:xystdszcol
z{tt}(:,3)=xystd{tt}(:,17:28)*wqz3';%求评价值
pxaqy(:,tt)=px(z{tt}(:,3));%对评价值排序
end
clearw0wlbubfaval;
clearglobalxystdsz;
%-----------创新环境能力评价--------------
fortt=1:xystdszcol
xystdsz{tt}(:,:)=xystd{tt}(:,29:35);%提取创新环境能力指标无量纲值
end
globalxystdsz;
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
fori=1:xycol
w0(1,i)=1/xycol;%优化w初始值
end
Aeq=[];beq=[];
5/11
lb=zeros(1,xycol);ub=ones(1,xycol);
options=optimt('largescale','off');
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
wqz4=w./sum(w);%权重归一化
fortt=1:xystdszcol
z{tt}(:,4)=xystd{tt}(:,29:35)*wqz4';%求评价值
pxahj(:,tt)=px(z{tt}(:,4));%对评价值排序
end
clearw0wlbubfaval;
clearglobalxystdsz;
%-------------创新经济绩效能力评价--------------
fortt=1:xystdszcol
xystdsz{tt}(:,:)=xystd{tt}(:,36:42);%提取创新绩效能力指标无量纲值
end
globalxystdsz;
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
fori=1:xycol
w0(1,i)=1/xycol;%优化w初始值
end
6/11
Aeq=[];beq=[];
lb=zeros(1,xycol);ub=ones(1,xycol);
options=optimt('largescale','off');
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
wqz5=w./sum(w);%权重归一化
fortt=1:xystdszcol
z{tt}(:,5)=xystd{tt}(:,36:42)*wqz5';%求评价值
pxajx(:,tt)=px(z{tt}(:,5));%对评价值排序
end
%--------求整体综合能力评价排序-----------------
clearw0wlbubfaval;
clearglobalxystdsz;
xystdsz=z;
globalxystdsz;
[xystdszrow,xystdszcol]=size(xystdsz);
[xyrow,xycol]=size(xystdsz{1});
w0=zeros(1,xycol);
Aeq=[];beq=[];
lb=zeros(1,xycol);ub=ones(1,xycol);
options=optimt('largescale','off');
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
7/11
wqz6=w./sum(w);%权重归一化
forkk=1:zcol
z(:,kk)=z{kk}*wqz6';%求评价值
pxazz=px(zz);%对评价值排序
end
%----------zzfxcapcity表示各项能力得分-结果-----------
fori=1:7
forj=1:5
zzfxcapcity{j}(:,i)=z{i}(:,j);
end
end
zzfxcapcity{6}(:,:)=zz;
%----------pxafxcapcity表示各项能力排序结果------------
pxafxcapcity{1}=pxacz;
pxafxcapcity{2}=pxald;
pxafxcapcity{3}=pxaqy;
pxafxcapcity{4}=pxahj;
pxafxcapcity{5}=pxajx;
pxafxcapcity{6}=pxazz;
%-------优化程序YHQU.m
functionxysum=YHQU(w,xystdsz)
8/11
globalxystdsz
[xystdrow,xystdcol]=size(xystdsz);
[xystdrow1,xystdcol1]=size(xystdsz{1});
fori=1:xystdcol
forj=1:xystdrow1
xyvalue(j,i)=xystdsz{i}(j,:)*w';
end
end
xymean=mean(mean(xyvalue));
fori=1:xystdrow1%xystdrow1=30
forj=1:xystdcol%xystdcol=7
xyvar(i,j)=(xyvalue(i,j)-xymean).^2;
end
end
xysum=-sum(sum(xyvar));
%-------排序px..m
functionpxa=px(gyhjg)%px排序.pxa是排序结果,gyhjg是要进行排序的评价
值列向量jga=gyhjg;
[m,n]=size(jga);
forcol=1:n
fori=1:m-1
forj=i+1:m
9/11
ifjga(i,col)
temp=jga(i,col);
jga(i,col)=jga(j,col);
jga(j,col)=temp;
end
end
end
end
forcol=1:n
fori=1:m
forj=1:m
ifgyhjg(i,col)==jga(j,col)
pxa(i,col)=j;
%comtinue
end
end
end
end
%-----约束条件fun.m
function[c,ceq]=fun(w)
ceq=w*w'-1;
10/11
c=[];
%----------改进归一法bzycl.m----------
functionxystd=bzycl(x,y)
%bzycl改进的归一方法,是本系统默认采用的对指标值进行标准化处理的方
法,
%x是逆向指标值矩阵,通过xmax+xmin-x转化为正向指标;y是正向指标值
矩阵;%如果存在负数指标值通过xy-min(xy)进行转化;最后利用列和归一化处
理,考虑待评价数m很大时,xystd值很小,所以乘以m.
%xystd是标准化处理后的指标值
[yrow,ycol]=size(y);
[m1,n1]=size(x{1});%m1表示x的行数,n1表示x的列数,逆向指标个数
[m2,n2]=size(y{1});%n2表示正向指标个数
n=n1+n2;%n表示指标数
ifn1>0
m=m1;%表示待评价对象数
elifn2>0
m=m2;
end
end
fort=1:ycol
ifn2>0
xy{t}(:,1:n2)=y{t};
11/11
end
ifn1>0
xmin=min(x{t});
xmax=max(x{t});
fori=1:n1
forj=1:m
xy{t}(j,n2+1:n1+n2)=xmax(i)+xmin(i)-x{t}(j,i);%对逆向指标进行处理;end
end
end
xyflag=all(xy{t}>=zeros(m,n));%判断是否存在xy(j,i)<0
xymin=min(xy{t});
fori=1:n
ifxyflag(i)==0
forj=1:m
xy{t}(j,i)=xy{t}(j,i)-xymin(i);%对xy(j,i)<0的指标进行平移处理,使所有指标非负
end
end
end
xysum{t}=sum(xy{t});%列求和
xystd{t}=xy{t}./xysum{t}(ones(m,1),:);%进行列和等于11归一化处理
xystd{t}=m*xystd{t};%避免由于待评价对象m很大时,xystd值很小,所以乘以
mend
本文发布于:2022-12-30 14:36:32,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/60383.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |