完整版纵横向拉开档次法的MATLAB实现.docx
- 文档编号:23627328
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:10
- 大小:16.07KB
完整版纵横向拉开档次法的MATLAB实现.docx
《完整版纵横向拉开档次法的MATLAB实现.docx》由会员分享,可在线阅读,更多相关《完整版纵横向拉开档次法的MATLAB实现.docx(10页珍藏版)》请在冰豆网上搜索。
完整版纵横向拉开档次法的MATLAB实现
简介:
本文档为《纵横向拉开档次法的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=optimset('largescale','off');%优化函数,largescale大规模算法
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);%优化求权重;fmincon用来求解非线性多元函数最小值。
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=optimset('largescale','off');
[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);
options=optimset('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=[];
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);%权重归一化
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
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);%权重归一化
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=optimset('largescale','off');
[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options);
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)
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
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; 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;%表示待评价对象数 elseifn2>0 m=m2; end end fort=1: ycol ifn2>0 xy{t}(: 1: n2)=y{t}; 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 纵横 拉开 档次 MATLAB 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)