(完整版)纵横向拉开档次法的MATLAB实现

合集下载

Matlab求解层次分析法程序代码【求解步骤+代码】

Matlab求解层次分析法程序代码【求解步骤+代码】

层次分析法1)建立层次结构模型:(2)构造判断矩阵判断矩阵()ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法):(3)单层排序及一致性检验1、单层排序求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此权重的大小,便可确定该层因素的排序。

2、一致性检验取一致性指标max 1nCI n λ-=-,(n 为A 的阶数)令CR RI=,若0.1CR <,则认为A 具有一致性。

否则,需要对A 进行调整,直到具有满意的一致性为止。

(4)层次总排序及一致性检验假定准则层12,,,n C C C 排序完成,其权重分别为12,,,n a a a ,方案层P 包含m 个方案:12,,,m P P P 。

其相对于上一层的()1,2,,j C j n =对方案层P 中的m 个方案进行单层排序,其排序权重记为12,,,j j mj b b b ()1,2,,j n =,则方案层P 中第i 个方案Pi 的总排序权重为1nj ijj a b=∑,见下表:从而确定层的排序。

例:纯文本文件txt3.txt 中的数据格式如下:1 1 1 4 1 1/2 1 1 2 4 1 1/2 1 1/2 1 53 1/2 1/4 1/4 1/5 1 1/3 1/3 1 1 1/3 3 1 1 2 2 2 3 3 1 1 1/4 1/24 1 32 1/3 11 1/4 1/54 1 1/25 2 11 3 1/31/3 1 1/73 7 11 1/3 53 1 71/5 1/7 11 1 71 1 71/7 1/7 11 7 91/7 1 11/9 1 1matlab程序:>> fid=fopen('txt3.txt','r');n1=6;n2=3;a=[];for i=1:n1tmp=str2num(fgetl(fid));a=[a;tmp]; %读准则层判断矩阵endfor i=1:n1str1=char(['b',int2str(i),'=[];']);str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1);for j=1:n2tmp=str2num(fgetl(fid));eval(str2); %读方案层的判断矩阵endendri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标[x,y]=eig(a);lamda=max(diag(y));num=find(diag(y)==lamda);w0=x(:,num)/sum(x(:,num));cr0=(lamda-n1)/(n1-1)/ri(n1)for i=1:n1[x,y]=eig(eval(char(['b',int2str(i)])));lamda=max(diag(y));num=find(diag(y)==lamda);w1(:,i)=x(:,num)/sum(x(:,num));cr1(i)=(lamda-n2)/(n2-1)/ri(n2);endcr1, ts=w1*w0, cr=cr1*w0层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法层次分析法实例与步骤结合一个具体例子,说明层次分析法的基本步骤和要点。

Matlab技术进阶指南

Matlab技术进阶指南

Matlab技术进阶指南引言:Matlab是一种强大且广泛使用的数学软件,被广泛应用于科学研究、工程设计、数据分析和机器学习等领域。

对于初学者来说,掌握基本的Matlab语法和功能可能并不太难,但要将其应用于实际问题并发挥出最大的威力,就需要进一步深入理解和掌握Matlab的高级技术。

本文将为读者提供一份Matlab技术进阶指南,帮助读者进一步利用Matlab解决实际问题。

一、函数句柄的应用Matlab中函数句柄是一种允许程序员使用函数作为变量的机制。

通过理解并灵活应用函数句柄,可以实现更加优雅和高效的Matlab编程。

例如,在一些算法中需要传递函数作为参数,这时可以使用函数句柄来实现。

此外,还可以通过函数句柄实现动态函数调用,提高程序的灵活性和可扩展性。

二、向量化操作在Matlab中,向量化操作可以大大提高程序的计算效率。

相比于使用循环遍历每个元素,向量化操作通过对整个向量或矩阵进行操作,减少了循环的次数,从而大幅提高了计算速度。

向量化操作可以通过Matlab提供的一些函数来实现,如sum、mean、dot等,同时也可以通过使用Matlab中的矩阵运算符来实现。

三、面向对象编程Matlab不仅可以通过脚本文件实现简单的程序,还可以使用面向对象编程(OOP)的方式进行程序设计。

面向对象编程将程序中的数据和操作封装到对象中,使得程序的结构更加清晰、易于理解和维护。

Matlab提供了面向对象的编程机制,包括类、对象、方法和属性等,通过灵活使用这些特性,可以实现更加模块化和可扩展的程序。

四、并行计算随着计算机的发展,多核处理器成为现代计算机的常见配置。

为了充分利用多核处理器的计算能力,Matlab提供了并行计算功能,支持多线程和分布式计算。

通过并行计算,可以加速计算过程,提高程序的性能。

Matlab的并行计算功能可以通过Parallel Computing Toolbox来实现,通过合理地利用并行计算,可以大幅减少程序的运行时间。

基于纵横向拉开档次法的电子商务在线信誉评价模型

基于纵横向拉开档次法的电子商务在线信誉评价模型

S2
x 21 (t1)x 22 (t1)⋯x 2m (t1)
从几何角度来看,n 个被评价对象可以看成是由 m 个


评价指标构成的 n 维评价空间中的 n 个点;寻求 n 个被
Sn
x n1 (t1)x n2 (t1)⋯x nm (t1)
评价对象的评价值就相当于把这 n 个点向某一维空间
m
y = ∑w j x j = w T x
(1)
j=1


x n1 (t 2 )x n2 (t 2 )⋯x nm (t 2 ) ⋯ x N1 (t N )x N2 (t N )⋯x Nm (t N )
综合评价,表示为:
y(t k )= f [w1 (t k ), w 2 (t k ), ⋯, w m (t k ); x i1 (t k ), x i2 (t k ), ⋯, x im (t k )],
[⋮] ú, k = 1, 2, ⋯, N
ú
x nm (t k )û
(9)
若限定 w T w = 1 ,当取得 w 为矩阵 H 的最大特征值
λ max (H) 所 对 应 的 特 征 向 量 时 ,σ 2 取 最 大 值 ,且 有
电子商务环境下的在线信誉问题,采用拉开档次法从理
max
w T Hw = λ max (H)。当 H k > 0(k = 1, 2, ⋯, N) 时,
weight can make the difference bigger between the evaluated sides as much as possible in vertical and horizontal directions,and
can dynamically reflect the credibility of sellers,so that the reputation value changes with time.

matlab 拟合阶梯函数

matlab 拟合阶梯函数

一、简介Matlab是工程领域最常用的计算软件之一,它具有强大的数据处理和分析功能,适用于各种科学和工程计算。

在Matlab中,拟合阶梯函数是一项常见的数据处理任务,它可以用于拟合具有阶梯状特征的数据,如市场需求预测、生产进度预测等领域。

二、拟合阶梯函数的原理在Matlab中,拟合阶梯函数的原理主要基于最小二乘法。

最小二乘法是一种数学优化方法,用于确定模型参数以最小化观测数据与模型预测值之间的误差平方和。

对于阶梯函数而言,最小二乘法可以帮助我们确定阶梯的位置、幅度和宽度,从而更好地拟合实际数据。

三、拟合阶梯函数的步骤拟合阶梯函数的步骤主要包括数据导入、模型建立和拟合参数求解。

具体步骤如下:1. 数据导入需要将待拟合的数据导入Matlab环境中。

这可以通过readtable或csvread等函数实现,将数据以矩阵或表格的形式加载到Matlab中。

2. 模型建立接下来,需要建立阶梯函数的拟合模型。

在Matlab中,阶梯函数可以用step函数表示,其一般形式为y = stepfun(x, t),其中x为自变量,t为阶梯的位置。

3. 拟合参数求解利用Matlab中的拟合函数(如lsqcurvefit)对阶梯函数模型进行拟合,求解阶梯位置、幅度和宽度等参数。

四、拟合阶梯函数的应用拟合阶梯函数在实际应用中具有广泛的应用价值。

以市场需求预测为例,可以利用历史销售数据拟合阶梯函数,从而预测未来市场需求的变化趋势。

在生产进度预测、人口增长预测等领域,拟合阶梯函数也能够提供有价值的预测和分析结果。

五、案例分析下面以一个简单的案例来展示如何在Matlab中拟合阶梯函数。

假设有如下数据需要拟合:x = [1, 2, 3, 4, 5, 6, 7];y = [0, 0, 1, 1, 2, 2, 3];导入数据到Matlab中:data = table(x', y', 'VariableNames', {'x', 'y'});建立阶梯函数模型:model = (p, x) p(1) * stepfun(x, 2) + p(2) * stepfun(x, 4); 利用lsqcurvefit函数对模型进行拟合,求解参数:p0 = [1, 1];params = lsqcurvefit(model, p0, data.x, data.y);绘制拟合结果:x_fit = 1:0.1:7;y_fit = model(params, x_fit);plot(data.x, data.y, 'o', x_fit, y_fit, '-');通过以上案例可以看出,利用Matlab拟合阶梯函数可以得到较好的拟合效果,为实际数据分析和预测提供了有力的工具支持。

一种体现发展趋势的动态综合评价方法

一种体现发展趋势的动态综合评价方法

一种体现发展趋势的动态综合评价方法易平涛;周义;郭亚军;李伟伟【摘要】Aiming to consider the development trend of the evaluation index in dynamic comprehensive evalua-tion,the paper constructs a dynamic comprehensive evaluation model of development tendency considering the in-fluences of the evaluation index development tendency,index weights and time weights.The development factor is defined to denote the development trend of the evaluation index.On the basis of scatter degree,the attribute weights are obtained via the method to the minimize the sum of squares of deviations.Additionally,the time weights are determined by the model of time function which implies laying more stress on the present information than on the past.Finally,the model is applied to evaluate the degree of the macro economic development of west-ern China.%针对动态综合评价中没有考虑被评价对象指标的发展趋势的问题,综合考虑评价指标的发展趋势、指标权重和时间权重的影响,构建了一种体现发展趋势的动态综合评价模型。

纵横向拉开档次法的MATLAB实现

纵横向拉开档次法的MATLAB实现

简介:本文档为《纵横向拉开档次法的MATLAB实现》,可适用于工程科技领域,主题内容包含globalxystdszxystdxy定义全局变量loadshuju原始数据xystd=zscore(shuju)数据无量纲处理xystdrow,符等。

global xystdsz xystd x y %定义全局变量load shuju %原始数据xystd= zscore (shuju); %数据无量纲处理[xystdrow,xystdcol]=size(xystd);%----------区域知识创造能力评价----------for tt=1:xystdcolxystdsz{tt}(:,:)=xystd{tt}(:,1:10); %提取区域知识创造能力指标无量纲值end[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化初始值endAeq=[]; 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); %权重归一化for tt=1:xystdszcolz{tt}(:,1)=xystd{tt}(:,1:10)*wqz1'; % 求评价值pxacz(:,tt)=px(z{tt}(:,1)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%--------区域知识流动能力评价------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,11:16); %提取区域知识流动能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[]; beq=[];lb=zeros(1,xycol);ub=ones(1,xycol);options =optimset('largescale','off');[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );for tt=1:xystdszcolz{tt}(:,2)=xystd{tt}(:,11:16)*wqz2'; % 求评价值pxald(:,tt)=px(z{tt}(:,2)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-----------企业技术创新能力评价------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,17:28); %提取企业技术创新能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[];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); %权重归一化for tt=1:xystdszcolz{tt}(:,3)=xystd{tt}(:,17:28)*wqz3'; % 求评价值pxaqy(:,tt)=px(z{tt}(:,3)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-----------创新环境能力评价--------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,29:35); %提取创新环境能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[]; beq=[];lb=zeros(1,xycol);ub=ones(1,xycol);options =optimset('largescale','off');[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );for tt=1:xystdszcolz{tt}(:,4)=xystd{tt}(:,29:35)*wqz4'; % 求评价值pxahj(:,tt)=px(z{tt}(:,4)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-------------创新经济绩效能力评价--------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,36:42); %提取创新绩效能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[];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:xystdszcolz{tt}(:,5)=xystd{tt}(:,36:42)*wqz5'; % 求评价值pxajx(:,tt)=px(z{tt}(:,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]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );wqz6=w./sum(w); %权重归一化for kk=1:zcolz(:,kk)=z{kk}*wqz6'; % 求评价值pxazz=px(zz) ; % 对评价值排序end%---------- zzfxcapcity表示各项能力得分-结果-----------for i=1:7for j=1:5zzfxcapcity{j}(:,i)=z{i}(:,j);endendzzfxcapcity{6}(:,:)=zz;%---------- pxafxcapcity表示各项能力排序结果------------pxafxcapcity{1}=pxacz;pxafxcapcity{2}=pxald;pxafxcapcity{3}=pxaqy;pxafxcapcity{4}=pxahj;pxafxcapcity{5}=pxajx;pxafxcapcity{6}=pxazz;%-------优化程序YHQU.mfunction xysum=YHQU(w,xystdsz)global xystdsz[xystdrow,xystdcol]=size(xystdsz);[xystdrow1,xystdcol1]=size(xystdsz{1});for i=1:xystdcolfor j=1:xystdrow1xyvalue(j,i)=xystdsz{i}(j,:)*w';endendxymean=mean(mean(xyvalue));for i=1:xystdrow1 %xystdrow1=30for j=1:xystdcol %xystdcol=7xyvar(i,j)=(xyvalue(i,j)-xymean).^2;endendxysum=-sum(sum(xyvar));%-------排序px..mfunction 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)<jga(j,col)temp=jga(i,col);jga(i,col)=jga(j,col);jga(j,col)=temp;endendendfor col=1:nfor i=1:mfor j=1:mif gyhjg(i,col)==jga(j,col)pxa(i,col)=j;% comtinueendendendend%-----约束条件fun.mfunction [c,ceq]=fun(w)ceq=w*w'-1;c=[];%----------改进归一法bzycl.m----------function xystd=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表示指标数if n1>0m=m1; %表示待评价对象数else if n2>0m=m2;endendfor t=1:ycolif n2>0xy{t}(:,1:n2)=y{t};endif n1>0xmin=min(x{t});xmax=max(x{t});for i=1:n1for j=1:mxy{t}(j,n2+1:n1+n2)=xmax(i)+xmin(i)-x{t}(j,i); %对逆向指标进行处理;endendxyflag=all(xy{t}>=zeros(m,n)); %判断是否存在xy(j,i)<0xymin=min(xy{t});for i=1:nif xyflag(i)==0for j=1:mxy{t}(j,i)=xy{t}(j,i)-xymin(i); %对xy(j,i)<0的指标进行平移处理,使所有指标非负endendendxysum{t}=sum(xy{t}); %列求和xystd{t}=xy{t}./xysum{t}(ones(m,1),:); %进行列和等于11归一化处理xystd{t}=m*xystd{t}; %避免由于待评价对象m很大时,xystd值很小,所以乘以m end。

Matlab命令汇总完整版全集详解珍藏版-含附录-按字母排列

Matlab命令汇总完整版全集详解珍藏版-含附录-按字母排列
b 蓝色 + 点为加号形 < 向左箭头
m 红紫色 o 空心圆形 p 五角星形
c 蓝紫色 * 星号 h 六角星形
sin( ) 正弦(变量为弧度)
Cot( ) 余切(变量为弧度)
sind( ) 正弦(变量为度数)
Cotd( ) 余切(变量为度数)
asin( ) 反正弦(返回弧度)
acot( ) 反余切(返回弧度)
Asind( ) 反正弦(返回度数)
inv 矩阵的逆
det 矩阵的行列式值
trace 矩阵对角元素的和
norm 矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest 估计矩阵的最大范数矢量
五、图像绘制:
1、基本绘图函数
plot 绘制二维线性图形和两个坐标轴
plot3 绘制三维线性图形和两个坐标轴
fplot 在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)
loglog 绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx 绘制半对数坐标图形
diag() 根据向量创建对角矩阵,即以向量的元素为对角元素
magic() 创建魔方矩阵
rand() 创建随机矩阵,服从均匀分布
randn() 创建随机矩阵,服从正态分布
randperm() 创建随机行向量
horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
Esc Ctrl+U 清除一行
Del Ctrl+D 清除光标所在的字符
Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾

matlab三边测量算法横纵坐标图解=

matlab三边测量算法横纵坐标图解=
x1 x2 y1 y2 z1 z 2 arccos( ) 2 R
球面短程线计算公式
L R
①输入经纬度数据和地球半径; ②转换两城市的经纬度为地心直角坐标数据; ③提取两个点的向径坐标; ④计算向径间的夹角和短程线长度并输出计算结果。
10/22
按顺序录入程序文件(文件名:distance.m)
16/22
————程序设计中的流程控制————
例2.14 3n + 1 问题. 对任一自然数n,按如下法则进行运算:若n为偶数, 则将n除2;若n为奇数,则将n乘3加1。将运算结果按 上面法则继续运算, 重复若干次后结果最终是1.
n=input(‘input n=’); %输入数据 while n~=1 r=rem(n,2); %求n/2的余数 if r = =0 n=n/2 %第一种操作 else n=3*n+1 %第二种操作 end end n=5 16, 8, 4, 2, 1
7/22
例2.3直线平行于Z轴沿x-y平面上的四边形移动,形 成四边形柱面。利用矩阵方法绘制四边形柱面.
设四边形顶点为(-1, -1), (1, -1), (1, 1), (-1, 1).由于四边 形是封闭的图形,将第五个点设为第一个点。设柱面 高为1,创建Z坐标矩阵
0 0 0 0 0 Z 1 1 1 1 1
R=6400; S0=4*pi*R*R; d=10000; S=2*pi*R*R*d/(R+d); S/S0*100
6/22
M文件分为命令文件和函数文件两种
命令文件——MATLAB命令的有序集合。 文件执行——对文件中命令进行批处理,即从第一 条命令开始按顺序执行,直到最后一条命令。如果 中间某条命令出错,则中断并输出错误信息 ①在编辑窗口中编写; ②保存并对文件命名; ③命令窗口键入文件 名运行; ④观察运行结果; · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简介:本文档为《纵横向拉开档次法的MATLAB实现》,可适用于工程科技领域,主题内容包含globalxystdszxystdxy定义全局变量loadshuju原始数据xystd=zscore(shuju)数据无量纲处理xystdrow,符等。

global xystdsz xystd x y %定义全局变量load shuju %原始数据xystd= zscore (shuju); %数据无量纲处理[xystdrow,xystdcol]=size(xystd);%----------区域知识创造能力评价----------for tt=1:xystdcolxystdsz{tt}(:,:)=xystd{tt}(:,1:10); %提取区域知识创造能力指标无量纲值end[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化初始值endAeq=[]; 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); %权重归一化for tt=1:xystdszcolz{tt}(:,1)=xystd{tt}(:,1:10)*wqz1'; % 求评价值pxacz(:,tt)=px(z{tt}(:,1)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%--------区域知识流动能力评价------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,11:16); %提取区域知识流动能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[]; beq=[];lb=zeros(1,xycol);ub=ones(1,xycol);options =optimset('largescale','off');[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );for tt=1:xystdszcolz{tt}(:,2)=xystd{tt}(:,11:16)*wqz2'; % 求评价值pxald(:,tt)=px(z{tt}(:,2)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-----------企业技术创新能力评价------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,17:28); %提取企业技术创新能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[];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); %权重归一化for tt=1:xystdszcolz{tt}(:,3)=xystd{tt}(:,17:28)*wqz3'; % 求评价值pxaqy(:,tt)=px(z{tt}(:,3)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-----------创新环境能力评价--------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,29:35); %提取创新环境能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[]; beq=[];lb=zeros(1,xycol);ub=ones(1,xycol);options =optimset('largescale','off');[w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );for tt=1:xystdszcolz{tt}(:,4)=xystd{tt}(:,29:35)*wqz4'; % 求评价值pxahj(:,tt)=px(z{tt}(:,4)) ; % 对评价值排序endclear w0 w lb ub faval ;clear global xystdsz;%-------------创新经济绩效能力评价--------------for tt=1:xystdszcolxystdsz{tt}(:,:)=xystd{tt}(:,36:42); %提取创新绩效能力指标无量纲值endglobal xystdsz;[xystdszrow,xystdszcol]=size(xystdsz);[xyrow,xycol]=size(xystdsz{1});w0=zeros(1,xycol);for i=1:xycolw0(1,i)=1/xycol; % 优化w初始值endAeq=[];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:xystdszcolz{tt}(:,5)=xystd{tt}(:,36:42)*wqz5'; % 求评价值pxajx(:,tt)=px(z{tt}(:,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]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );wqz6=w./sum(w); %权重归一化for kk=1:zcolz(:,kk)=z{kk}*wqz6'; % 求评价值pxazz=px(zz) ; % 对评价值排序end%---------- zzfxcapcity表示各项能力得分-结果-----------for i=1:7for j=1:5zzfxcapcity{j}(:,i)=z{i}(:,j);endendzzfxcapcity{6}(:,:)=zz;%---------- pxafxcapcity表示各项能力排序结果------------pxafxcapcity{1}=pxacz;pxafxcapcity{2}=pxald;pxafxcapcity{3}=pxaqy;pxafxcapcity{4}=pxahj;pxafxcapcity{5}=pxajx;pxafxcapcity{6}=pxazz;%-------优化程序YHQU.mfunction xysum=YHQU(w,xystdsz)global xystdsz[xystdrow,xystdcol]=size(xystdsz);[xystdrow1,xystdcol1]=size(xystdsz{1});for i=1:xystdcolfor j=1:xystdrow1xyvalue(j,i)=xystdsz{i}(j,:)*w';endendxymean=mean(mean(xyvalue));for i=1:xystdrow1 %xystdrow1=30for j=1:xystdcol %xystdcol=7xyvar(i,j)=(xyvalue(i,j)-xymean).^2;endendxysum=-sum(sum(xyvar));%-------排序px..mfunction 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)<jga(j,col)temp=jga(i,col);jga(i,col)=jga(j,col);jga(j,col)=temp;endendendfor col=1:nfor i=1:mfor j=1:mif gyhjg(i,col)==jga(j,col)pxa(i,col)=j;% comtinueendendendend%-----约束条件fun.mfunction [c,ceq]=fun(w)ceq=w*w'-1;c=[];%----------改进归一法bzycl.m----------function xystd=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表示指标数if n1>0m=m1; %表示待评价对象数else if n2>0m=m2;endendfor t=1:ycolif n2>0xy{t}(:,1:n2)=y{t};endif n1>0xmin=min(x{t});xmax=max(x{t});for i=1:n1for j=1:mxy{t}(j,n2+1:n1+n2)=xmax(i)+xmin(i)-x{t}(j,i); %对逆向指标进行处理;endendxyflag=all(xy{t}>=zeros(m,n)); %判断是否存在xy(j,i)<0xymin=min(xy{t});for i=1:nif xyflag(i)==0for j=1:mxy{t}(j,i)=xy{t}(j,i)-xymin(i); %对xy(j,i)<0的指标进行平移处理,使所有指标非负endendendxysum{t}=sum(xy{t}); %列求和xystd{t}=xy{t}./xysum{t}(ones(m,1),:); %进行列和等于11归一化处理xystd{t}=m*xystd{t}; %避免由于待评价对象m很大时,xystd值很小,所以乘以m end。

相关文档
最新文档