《纵横向拉开档次法的matlab实现》由会员分享,可在线阅读,更多相关《纵横向拉开档次法的matlab实现(6页珍藏版)》请在金锄头文库上搜索。
1、clear all global xystdsz xystd x y %定义全局变量 load data.mat %原始数据 xystd=bzycl(x,y); %数据无量纲处理 xystdrow,xystdcol=size(xystd); %-区域知识创造能力评价- for tt=1:xystdcol xystdsztt(:,:)=xystdtt(:,1:10); %提取区域知识创造能力指标无量纲值 end xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size(xystdsz1); w0=zeros(1,xycol); for i=1:x
2、ycolw0(1,i)=1/xycol; % 优化初始值 end Aeq=; beq=; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset(largescale,off); w,faval=fmincon(YHQU,w0,Aeq,beq,lb,ub,fun,options ); %优化求权重 wqz1=w./sum(w); %权重归一化 for tt=1:xystdszcolztt(:,1)=xystdtt(:,1:10)*wqz1; % 求评价值pxacz(:,tt)=px(ztt(:,1) ; % 对评价值排序 end clear
3、w0 w lb ub faval ; clear global xystdsz; %-区域知识流动能力评价- for tt=1:xystdszcol xystdsztt(:,:)=xystdtt(:,11:16); %提取区域知识流动能力指标无量纲值 end global xystdsz; xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size(xystdsz1); w0=zeros(1,xycol); for i=1:xycolw0(1,i)=1/xycol; % 优化 w 初始值 end Aeq=; beq=; lb=zeros(1,xy
4、col);ub=ones(1,xycol); options =optimset(largescale,off); w,faval=fmincon(YHQU,w0,Aeq,beq,lb,ub,fun,options ); wqz2=w./sum(w); %权重归一化 for tt=1:xystdszcolztt(:,2)=xystdtt(:,11:16)*wqz2; % 求评价值pxald(:,tt)=px(ztt(:,2) ; % 对评价值排序 end clear w0 w lb ub faval ; clear global xystdsz; %-企业技术创新能力评价- for tt=1:
5、xystdszcol xystdsztt(:,:)=xystdtt(:,17:28); %提取企业技术创新能力指标无量纲值 end global xystdsz; xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size(xystdsz1); w0=zeros(1,xycol); for i=1:xycolw0(1,i)=1/xycol; % 优化 w 初始值 end Aeq=;beq=; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset(largescale,off); w,faval
6、=fmincon(YHQU,w0,Aeq,beq,lb,ub,fun,options ); wqz3=w./sum(w); %权重归一化 for tt=1:xystdszcolztt(:,3)=xystdtt(:,17:28)*wqz3; % 求评价值pxaqy(:,tt)=px(ztt(:,3) ; % 对评价值排序 end clear w0 w lb ub faval ; clear global xystdsz; %-创新环境能力评价- for tt=1:xystdszcol xystdsztt(:,:)=xystdtt(:,29:35); %提取创新环境能力指标无量纲值 end glo
7、bal xystdsz; xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size(xystdsz1); w0=zeros(1,xycol); for i=1:xycolw0(1,i)=1/xycol; % 优化 w 初始值 end Aeq=; beq=; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset(largescale,off); w,faval=fmincon(YHQU,w0,Aeq,beq,lb,ub,fun,options ); wqz4=w./sum(w); %权重归一化
8、 for tt=1:xystdszcolztt(:,4)=xystdtt(:,29:35)*wqz4; % 求评价值pxahj(:,tt)=px(ztt(:,4) ; % 对评价值排序 end clear w0 w lb ub faval ; clear global xystdsz; %-创新经济绩效能力评价- for tt=1:xystdszcol xystdsztt(:,:)=xystdtt(:,36:42); %提取创新绩效能力指标无量纲值 end global xystdsz; xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size
9、(xystdsz1); w0=zeros(1,xycol); for i=1:xycolw0(1,i)=1/xycol; % 优化 w 初始值 end Aeq=;beq=; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset(largescale,off);w,faval=fmincon(YHQU,w0,Aeq,beq,lb,ub,fun,options ); wqz5=w./sum(w); %权重归一化 for tt=1:xystdszcolztt(:,5)=xystdtt(:,36:42)*wqz5; % 求评价值pxajx(:,tt
10、)=px(ztt(:,5) ; % 对评价值排序 end % -求整体综合能力评价排序- clear w0 w lb ub faval ; clear global xystdsz; xystdsz=z; global xystdsz; xystdszrow,xystdszcol=size(xystdsz); xyrow,xycol=size(xystdsz 1); w0=zeros(1,xycol); Aeq=;beq=; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset(largescale,off); w,faval=fminco
11、n(YHQU,w0,Aeq,beq,lb,ub,fun,options ); wqz6=w./sum(w); %权重归一化 for kk=1:zcolz(:,kk)=zkk*wqz6; % 求评价值pxazz=px(zz) ; % 对评价值排序 end %- zzfxcapcity 表示各项能力得分-结果- for i=1:7for j=1:5zzfxcapcityj(:,i)=zi(:,j); end end zzfxcapcity6(:,:)=zz; %- pxafxcapcity 表示各项能力排序结果- pxafxcapcity1=pxacz; pxafxcapcity2=pxald;
12、pxafxcapcity3=pxaqy; pxafxcapcity4=pxahj; pxafxcapcity5=pxajx; pxafxcapcity6=pxazz;%-优化程序 YHQU.m function xysum=YHQU(w,xystdsz) global xystdsz xystdrow,xystdcol=size(xystdsz); xystdrow1,xystdcol1=size(xystdsz1); for i=1:xystdcolfor j=1:xystdrow1xyvalue(j,i)=xystdszi(j,:)*w;end end xymean=mean(mean(x
13、yvalue); for i=1:xystdrow1 %xystdrow1=30for j=1:xystdcol %xystdcol=7xyvar(i,j)=(xyvalue(i,j)-xymean).2;end end xysum=-sum(sum(xyvar); %-排序 px.m function pxa=px(gyhjg) % px 排序.pxa 是排序结果,gyhjg 是要进行排序的评价值列向量 jga=gyhjg; m,n=size(jga); for col=1:nfor i=1:m-1for j=i+1:mif jga(i,col)0m=m1; %表示待评价对象数 else i
14、f n20m=m2;end end for t=1:ycol if n20xyt(:,1:n2)=yt; end if n10xmin=min(xt);xmax=max(xt);for i=1:n1for j=1:mxyt(j,n2+1:n1+n2)=xmax(i)+xmin(i)-xt(j,i); %对逆向指标进行处理;endend end xyflag=all(xyt=zeros(m,n); %判断是否存在 xy(j,i)0xymin=min(xyt); for i=1:nif xyflag(i)=0for j=1:mxyt(j,i)=xyt(j,i)-xymin(i); %对 xy(j,i)0 的指标进行平移处理,使所有指 标非负endend end xysumt=sum(xyt); %列求和 xystdt=xyt./xysumt(ones(m,1),:); %进行列和等于 11 归一化处理 xystdt=m*xystdt; %避免由于待评价对象 m 很