DEA算法学习系列之三:一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DEA算法学习笔记系列
(三)一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码
目录
1 编写目的 (4)
1.1E XCEL一次只能计算一个DMU (4)
1.2M A TLAB编程一次性计算所有DMU的效率、有效性、调整值 (5)
2 MATLAB求解线性规划 (5)
2.1系统函数说明 (5)
2.1.1 调用格式: (5)
2.1.2 输入参数说明 (5)
2.1.3 返回值说明 (6)
2.2简单例子,用代码求解 (7)
2.2.1 例1 (7)
2.2.2 例2: (8)
2.2.3 例题3(无解的例子) (9)
2.2.4 例4(需要标准化的例子,一个等式的例子) (10)
2.2.5 例5 (11)
2.2.6 例子6:松弛变量为基变量——用等式重解例1 (13)
2.3自定义M A TLAB函数求解线性规划(从EXCEL读数据) (14)
2.3.1 简单版:MyLinprog——读取给定文件中数据,返回计算结果 (14)
3 DEA模型之CCR简介 (16)
3.1CCR理论模型 (16)
4 CCR模型计算过程——一个决策单元的计算过程 (18)
4.1例题说明 (18)
4.2基于理论构建模型——湖南省 (19)
4.3调整形式,以利于线性规划函数求解 (19)
4.4按照自定义函数,构造EXCEL文件 (20)
4.4.1 矩阵A的格式和说明 (20)
4.4.2 价值向量系数矩阵C的格式和说明 (20)
4.4.3 资源限制矩阵b的格式和说明 (21)
4.4.4 X取值条件的限制 (21)
4.5调用自定义函数(M Y L INPROG)求解指定决策单元模型 (22)
4.6计算结果评价 (22)
4.6.1 最优值 (22)
4.6.2 各变量的值 (23)
4.6.3 模型效率分析 (24)
4.7调整方案 (24)
5 计算CCR模型的MATLAB函数——所有决策单元 (25)
5.1程序代码(可直接运行) (25)
5.2存放数据的EXCEL文件格式说明 (27)
5.2.1 第一个:投入产出数据 (27)
5.2.2 第二个数据:价值变量系数矩阵(不需准备) (27)
5.2.3 第三个数据:资源限制矩阵(不需要准备) .................................................................. 28 5.2.4 第四个数据:决策变量的取值范围(不需要准备) ...................................................... 28 5.2.5 范例数据 .............................................................................................................................. 28 5.3 计算所有DMU 的函数 .............................................................................................................. 28 5.3.1 函数输入参数 ...................................................................................................................... 28 5.3.2 返回参数1:每个DMU 效率、规模效益、是否弱有效 ................................................ 28 5.3.3 返回参数2:每个DMU 的所有
值 (29)
5.3.4 返回参数3:增加的松弛变量 ........................................................................................... 29 5.3.5 返回参数4:非DEA 有效DMU 调整后的投入产出矩阵 .............................................. 29 5.3.6 返回参数5:非DEA 有效DMU 各个指标调整值 .......................................................... 29 5.4 返回参数例子 ............................................................................................................................. 29 5.4.1 返回参数1:每个DMU 效率、规模效益、是否弱有效 ................................................ 29 5.4.2 返回参数2:每个DMU 的所有
值 (30)
5.4.3 返回参数3:增加的松弛变量 ........................................................................................... 30 5.4.4 返回参数4:非DEA 有效DMU 调整后的投入产出矩阵 .............................................. 30 5.4.5 返回参数5:非DEA 有效DMU 各个指标调整值 .......................................................... 30 6 补充知识 ............................................................................................................................................ 30 6.1 自定义MA TLAB 函数 .................................................................................................................. 30 6.2 M A TLAB 向量操作 ....................................................................................................................... 32 6.2.1 读取矩阵第一列 .................................................................................................................. 32 6.3 M A TLAB 操作EXCEL 数据 ........................................................................................................... 32 6.3.1 读入excel 数据 .................................................................................................................... 32 6.3.2 写内容到xls ........................................................................................................................ 33 6.4 M A TLAB 的FOR 循环语句............................................................................................................ 35 7 参考资料 .. (35)
λλ
1 编写目的
1.1 Excel 一次只能计算一个DMU
DEA 的CCR 模型,他的对偶模型如下图:
⎪⎪
⎪⎪
⎪⎩⎪⎪⎪⎪⎪

⎧≥=-+++=-+++=++++=++++=++++=++
-
--
无约束θθθθθ
λ
λλλλ
λλλλλλλλλλλλλ
λλλ,004.165921.266204.165922.93009.219620.144410.18120.144760.4929.17920.443000.46120.44320.24980.40131.84940.144431.84964.58145.98084.93656.130684.93608.58366.932..min 2
4
3211
43213
432124
32
114
3
2
1
j
D
s s s s s V
t s 很多人通过EXCEL 提供的一个插件进行计算,如下图所示:
但是,这种方法有以下不足:
(1)每次只能计算一个DMU ,如果有多个DMU ,那么需要人工重复计算过程多次;
(2)通过Excel 计算,只能得到θ,没法得到各个,所以,也无法直接判断是规模效益递增还是递减;
λ
(3)没发直接得到s
s i
i
、+
-
的值,也无法直接判断DMU 是弱DEA 有效,
还是DEA 有效
1.2 Matlab 编程一次性计算所有DMU 的效率、有效性、调整值
文章通过编写Matlab 程序,实现一次性对所有DMU 计算效率θ、有效性(根
据θ以及所有
的汇总值)、调整值(根据s
s i
i
、+
-)。

2 Matlab 求解线性规划
2.1 系统函数说明
2.1.1 调用格式:
[x, fval, exitflag, output, lambda]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) 注意:这个函数求的是最小值
2.1.2 输入参数说明
输入f: 线性规划中的C ,价值系数矩阵,一行n 列的向量
输入A,b:作有等式约束的问题。

若没有不等式约束,则令A=[ ]、b=[ ] 具体参考例子 输入lb ,ub :变量x 的下界和上界 输入x0:初值点
输入options :为指定优化参数进行最小化
Display 显示水平, 选择’off ’ 不显示输出;
选择’iter ’显示每一 步迭代过程的输出; 选择’final ’ 显示最终结果。

MaxFunEvals 函数评价的最大允许次数 Maxiter 最大允许迭代次数
λ
TolX x处的终止容限
2.1.3返回值说明
返回值x:为最优解向量。

返回值fval:返回解x处的目标函数值
exitflag :描述函数计算的退出条件:
若为正值,表示目标函数收敛于解x处;
若为负值,表示目标函数不收敛;
若为零值,表示已经达到函数评价或迭代的最大次数。

1Function converged to a solution x.
0Number of iterations exceeded options.MaxIter.
-2No feasible point was found.
-3Problem is unbounded.
-4NaN value was encountered during execution of the algorithm.
-5Both primal and dual problems are infeasible.
-7Search direction became too small. No further progress could be made.
output 返回优化信息:
output.iterations表示迭代次数;
output.algorithm表示所采用的算法;
outprt.funcCount表示函数评价次数。

lambda 返回x处的拉格朗日乘子。

它有以下属性:
lambda.lower-lambda的下界;
lambda.upper-lambda的上界;
lambda.ineqlin-lambda的线性不等式;
lambda.eqlin-lambda的线性等式。

2.2简单例子,用代码求解
2.2.1例1
max f=-2x1+3x2
s.t x1 + 2x2 ≤8
4x1 ≤16
4x2 ≤12
x1,x2,x3≥0
2.2.1.1 求解过程
(1)先将目标函数转化成最小值问题:min(-f)= -2x1 - 3x2(2)计算代码:
f=[-2 -3]; %%相当于C
A=[1 2;4 0;0 4];
b=[8;16;12];
[x,fval]=linprog(f,A,b)
f=fval*(-1)
2.2.1.2 结果
x =
4.0000
2.0000
fval =
-14.0000
f =
14.0000
2.2.2例2:
minf=5x1-x2+2x3+3x4-8x5
s.t–2x1+x2-x3+x4-3x5≤6
2x1+x2-x3+4x4+x5≤7
0≤xj≤15j=1,2,3,4,5
2.2.2.1 求解过程
f=[5 -1 2 3 -8];
A=[-2 1 -1 1 -3;2 1 -1 4 1];
b=[6;7];
lb=[0 0 0 0 0];
ub=[15 15 15 15 15];
%%注意:这个例题的xj除了大于0之外,还有小于15的条件[x,fval]=linprog(f,A,b,[],[],lb,ub)
2.2.2.2 结果:
x =
0.0000
0.0000
8.0000
0.0000
15.0000
minf =
-104
2.2.3例题3(无解的例子)
min f=5x1+x2+2x3+3x4+x5
s.t–2x1+x2-x3+x4-3x5≤1
2x1+3x2-x3+2x4+x5≤-2
0≤xj≤1j=1,2,3,4,5
程序:
f=[5 1 2 3 1];
A=[-2 1 -1 1 -3;2 3 -1 2 1];
b=[1;-2];
lb=[0 0 0 0 0];
ub=[1 1 1 1 1];
[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub)
运行结果:
Exiting: One or more of the residuals, duality gap, or total relative error
has grown 100000 times greater than its minimum value so far:
the primal appears to be infeasible (and the dual unbounded).
(The dual residual < TolFun=1.00e-008.)
x = 0.0000
0.0000
1.1987
0.0000
0.0000
fval =
2.3975
exitflag =
-1
output =
iterations: 7
cgiterations: 0
algorithm: 'lipsol'
lambda =
ineqlin: [2x1 double]
eqlin: [0x1 double]
upper: [5x1 double]
lower: [5x1 double]
显示的信息表明该问题无可行解。

所给出的是对约束破坏最小的解。

2.2.4例4(需要标准化的例子,一个等式的例子)
建立数学模型:
max f=0.15x1+0.1x2+0.08 x3+0.12 x4
s.t x1-x2- x3- x4≤0
x2+ x3- x4≥0 (需要标准化)
x1+x2+x3+ x4=1 (一个等式的例子)
xj≥0j=1,2,3,4
2.2.4.1 求解过程
(1)将其转换为标准形式:
min z=-0.15x1-0.1x2-0.08 x3-0.12 x4
s.t x1-x2- x3- x4≤0
-x2- x3+ x4≤0 (需要标准化)
x1+x2+x3+ x4=1
xj≥0j=1,2,3,4
(2)代码
f = [-0.15;-0.1;-0.08;-0.12];
A =[1 -1 -1 -1
0 -1 -1 1];
b = [0; 0];
Aeq=[1 1 1 1]; %%注意:等式在这里表示
beq=[1];
lb = zeros(4,1);
[x,fval,exitflag] = linprog(f,A,b,Aeq,beq,lb)
f=-fval
2.2.4.2 结果
x =
0.5000
0.2500
0.0000
0.2500
fval =
-0.1300
exitflag =
1
f =
0.1300
即4个项目的投资百分数分别为50%,25%,0,25%时可使该公司获得最大的收益,其最大收益可到达13%。

过程正常收敛。

2.2.5例5
min f=-3x1+x2+x3
s.t x1 - 2x2 +x3 ≤11
-4x1 +x2 +2x3 ≥3
-2x1 + x2 =1
x1,x2,x3≥0
2.2.5.1 求解过程
(1)将其转换为标准形式:
min f=-3x1+x2+x3
s.t x1 - 2x2 +x3 ≤11
4x1 -x2 -2x3 ≤-3
-2x1 + x2 =1
x1,x2,x3≥0
(2)计算代码:
f=[-3 1 1]; %%相当于C
A=[1 -2 1;4 -1 -2];
b=[11;-3];
Aeq=[-2 0 1]; %%注意:等式在这里表示beq=[1];
[x,fval]=linprog(f,A,b,Aeq,beq)
2.2.5.2 结果
x =
4.0000
1.0000
9.0000
fval =
-2.0000
2.2.6例子6:松弛变量为基变量——用等式重解例1
max f=-2x1+3x2
s.t x1 + 2x2 ≤8
4x1 ≤16
4x2 ≤12
x1,x2,x3≥0
2.2.6.1 求解过程
(1)将其转换为标准形式,限制条件化为等式
min f=-2x1-3x2+0x3+0x4+0x5
s.t x1 + 2x2 +x3=8
4x1 +x4 =16
4x2 +x5 =12
x1,x2,x3≥0
(2)计算代码:
f=[-2 -3 0 0 0]; %%相当于C,包含松弛变量
A=[ ];
b=[ ];
Aeq=[1 2 1 0 0;4 0 0 1 0;0 4 0 0 1];
beq=[8;16;12];
lb = zeros(5,1); %5列1行的0,表示xi大等于0,不加这个条件,结果不一样
[x,fval]=linprog(f,A,b,Aeq,beq,lb)
f=fval*(-1)
2.2.6.2 结果
x =
4.0000
2.0000
0.0000 以下三个是松弛变量,例子1中没有计算出来
0.0000
4.0000
fval =
-14.0000
f =
14.0000
2.3自定义Matlab函数求解线性规划(从excel读数据)2.
3.1简单版:MyLinprog——读取给定文件中数据,返回计算结果
(1)数据格式如下:
(2)函数代码
function [x,fval]=MyLinprog(sDataPath)
% 从Excel读取数据,计算线性规划,返回结果
% 适用于计算最小值;都是等式(不等式要转换为等式)
%--从excel读取数据
[Aeq]=xlsread(sDataPath,'A')
[C]=xlsread(sDataPath,'C')
[beq]=xlsread(sDataPath,'b')
[lb]=xlsread(sDataPath,'x_LowLimit')
[x,fval]=linprog(C,[],[],Aeq,beq,lb)
(3)调用自定义函数,求解例子6的结果
sDataPath='d:\dea\DEA_Data.xlsx'
[a,b]=MyLinprog('d:\dea\DEA_Data.xlsx')
3DEA模型之CCR简介
DEA第一个模型被命名为CCR模型。

从生产函数的角度看,这一模型是用来研究具有多个输入,特别是具有多个输出的“生产部门”同时为“规模有效”与“技术有效”的十分理想且卓有成效的方法。

3.1CCR理论模型
例1:某公司有甲、乙、丙三个企业,为评价这几个企业的生产效率,
收集到反映其投入(固定资产年净值x1、流动资金x2、职工人数x3)和产出(总产值y1、利税总额y2)的有关数据如下表:
分析过程:
对于第一个企业,产出综合值为60u1+12u2,投入综合值4v1+15v2+8v3,其中u1 u2 v1 v2 v3分别为产出与投入的权重系数。

我们定义第一个企业的生产效率为:总产出与总投入的比:
对其线性化过程如下:
v v v t 32181541
++=
v t w u t i i i i ==,μ
v v v u u h 3212
1181541260+++=
124156223212
12≤+++=
v v v u u h 145278243
212
13≤+++=
v v v u u h 1v 8v 15v 4u 12u 60h 3
212
11≤+++=
⎪⎪⎩⎪⎪

⎧=++++≤μ+μ++≤μ+μ++≤μ+μμ+μ=1w 8w 15w 4w 4w 5w 27824w 2w 4w 15622w 8w 15w 41260.t .s 1260h max 3213212132121321212
11
对应的对偶问题如下(转换过程以及含义,参考文档《DEA 算法学系列之二:线性规划对偶问题与经济含义20171005V1.5》):
⎪⎪⎪⎩⎪
⎪⎪⎨⎧≥λ+λ+λ≥λ+λ+λθ≤λ+λ+λθ
≤λ+λ+λθ≤λ+λ+λθ
=12861260
2422608428155415427154.t .s V min 3213
213213
21321D
4 CCR 模型计算过程——一个决策单元的计算过程
4.1 例题说明
例题8:以1997年全部独立核算企业为对象,对安徽、江西、湖南和湖北四省进行生产水平的比较。

投入要素取固定资产净值年平均余额(亿元),流动资金年平均余额及从业人员(万人),产出要素取总产值(亿元)和利税总额(亿元).
4.2 基于理论构建模型——湖南省
⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧θ≥λ=-λ+λ+λ+λ=
-λ+λ+λ+λθ
=+λ+λ+λ+λθ
=+λ+λ+λ+λθ=+λ+λ+λ+λθ
=++
--
-
无约束
,004
.1659s 21.266204.165922.93009.219620.144s 410.18120.144760.4929.17920.443s 000.46120.44320.24980.40131.849s 40.144431.84964.58145.98084.936s 56.130684.93608.58366.932.t .s V min j 2
432114321343212432114321D
4.3 调整形式,以利于线性规划函数求解
⎪⎪
⎪⎪⎪⎩⎪⎪⎪
⎪⎪
⎨⎧≥=-+++=-+++=+-+++=+-+++=+-+++=+
+
-
-
-无约束θθθθθ
λλλλλλλλλλλλλλλλλλλλλ,004.165921.266204.165922.93009.219620.144410.18120.144760.4929.179020.443000.46120.44320.24980.401031.84940.144431.84964.58145.980084.93656.130684.93608.58366.932..min 2432114321343212432114321j
D s s s s s V t s
4.4 按照自定义函数,构造excel 文件
4.4.1 矩阵A 的格式和说明
表达的意思是:
注意:E 这列,对应的系数,因为这里分析的是湖南的,所以用的是湖南的数据;
这个不需要事先找到一个可行基
F 列之后的是原来限制条件中的松弛变量的系数,注意最后两列
4.4.2 价值向量系数矩阵C 的格式和说明
总共11列,表示11个变量,顺序和A 中的顺序要一致
说明:e 这列,对应的价值系数,表达的意思就是:
4.4.3 资源限制矩阵b 的格式和说明
注意对比:
4.4.4 X 取值条件的限制
对应:
说明:其中变量无限制,表示正负无穷大,这里用一个比较大的负数表示下限为无穷大
4.5 调用自定义函数(MyLinprog )求解指定决策单元模型
sDataPath='d:\dea\DEA_Data.xlsx' [x,fval]=MyLinprog('d:\dea\DEA_Data.xlsx')
4.6 计算结果评价
4.6.1 最优值
说明:
最优值的一般含义:在生产可能集T 内,在产出量不变的情况下,尽量将投入量X0按同一比例θ减少.如果投入量X0不能按同一比例θ减少,即线性规划的最优值θ=1,则认为,决策单元j0既为技术有效,也为规模有效。

表示:在生产可能集T 内,在产出量不变的情况下,投入量X 能按同一比例θ减少,那么就可以认为:决策单元j0不为技术有效,或不为规模有效.
9285.0=θ9285.0=θ
4.6.2 各变量的值
意味着:
24
.107,017.88,0,71.1190,8043.09285
.021
3214321
==========+
+
-
--s s
s s s λλλλ
θ
4.6.3 模型效率分析 4.6.3.1 判断规则:
4.6.3.2 湖南的判断结果
因为:,不等于1,说明不是DEA 有效;
4.7 调整方案
在产出不变的情况,减少投入,或者在投入不变的情况下,增加产出
9285.0=
θ
5计算CCR模型的matlab函数——所有决策单元
在一个决策单元的基础上,根据CCR模型的特点,进行了改进,使能够一次性完成所有决策单元的计算。

5.1程序代码(可直接运行)
function
[DMUSita,lambda,S,AAdjusted,ADifferent]=MyDEA_ALL_DMU(sDataPath)
%计算所有DMU的主函数
%1、读取数据,数据要求,每一行表示一个指标,输入指标在上,输出指标在下;每一个列表示一个DMU
[IOData]=xlsread(sDataPath,'Input_Output');
[nParameter,nDMU]=size(IOData);
AData=IOData(:,2:nDMU);
nDMU=nDMU-1;
nInput=size(find(IOData(:,1)==1),1);
DMUSita=[];
lambda=[];
S=[]
AAdjusted=[];
%每一列代表一个决策单元DMU,每一行代表一个变量
for iDMU=1:nDMU
%计算第i个DMU
[x,fval,exitflag]=MyDEA_ONE_DMU(iDMU,AData,nInput,nParameter,nDMU);
%记录效力值
lambda=[lambda x(2:nParameter,:)];
S=[S x(nDMU+2:(nDMU+2)+nParameter-1)];
tempSumlambda=sum(lambda(:,iDMU));
tempSumSita=sum(S(:,iDMU));
DMUSita=[DMUSita [fval;tempSumlambda;tempSumSita;exitflag]];%3行n 列,第一行是sita;%3行n列,第2行是lambda和;第三行是松弛变量和
%调整
Input_Adjusted=AData(1:nInput,iDMU)*fval-x(nDMU+2:nInput+(nDMU+2)-1); Output_Adjusted=AData(nInput+1:nParameter,iDMU)+x(nInput+nDMU+2:nDMU+
nParameter+1);
DMUAdjusted=[Input_Adjusted;Output_Adjusted];
AAdjusted=[AAdjusted DMUAdjusted];
end
ADifferent=AAdjusted-AData;
DMUSita(find(DMUSita<0.000001))=0;
ADifferent(find(abs(ADifferent)<0.000001))=0;
AAdjusted(find(AAdjusted<0.000001))=0;
S(find(S<0.000001))=0;
function
[x,fval,exitflag]=MyDEA_ONE_DMU(iDMU,AData,nInput,nParameter,nDMU)
%准备数据
%A,第一列是sita的系数;中间是lamnda的系数;最后是松弛变量的系数
% 第一列,投入变量系数第i个决策单元投入的相反数,产出变量系数为0
sitaA=[-AData(1:nInput,iDMU);zeros(nParameter-nInput,1)];
tempI=eye(nParameter)
%产出变量的松弛变量系数为-1
for i=nInput+1:nParameter
tempI(:,i)=tempI(:,i)*-1;
end
[Aeq]=[sitaA AData tempI];
[C]=[[1] zeros(1,nDMU) -0.00000001+zeros(1,nParameter)];
% 投入变量b为0;产出变量的b为第i个决策单元投入
beq=[zeros(nInput,1);AData(nInput+1:nParameter,iDMU)];
lb=[-100000 zeros(1,nDMU+nParameter)];
ub=[1 1000000+zeros(1,nDMU+nParameter)];
%ub=[];
x0=[0 zeros(1,nDMU) beq'];
%options = optimset('Display','iter','MaxFunEvals
',1000,'Maxiter',1000)
options = optimset('LargeScale', 'off')
[x,fval,exitflag,output,lambda]=linprog(C,[],[],Aeq,beq,lb,ub,x0,opti ons)
x(find(x<0.0001))=0;%小于一定小的情况认为是0
5.2 存放数据的excel 文件格式说明
5.2.1 第一个:投入产出数据
第一列(A 列)表示变量类型:投入变量为1;产出变量为0;这个版本的程序要求必须是输入指标在上,输出指标在下;
除了第一列外,每一列代表一个决策单元DMU
每一行代表一个变量,从左到右依次是θ(B 列)、(从C 开始,知道最后一列)
工作簿名称必须固定位:Input_Output
5.2.2 第二个数据:价值变量系数矩阵(不需准备)
前面解一个DMU 的程序需要准备的C ,在这里不需要
为了方便编程,第一个变量表示θ,中间表示,最后的表示松弛变量; 这个由程序自动生成,不需要准备
λλ
5.2.3第三个数据:资源限制矩阵(不需要准备)
前面解一个DMU的程序需要准备的A(程序中变量Aeq),在这里不需要5.2.4第四个数据:决策变量的取值范围(不需要准备)
前面解一个DMU的程序需要准备的变量范围,在这里不需要
5.2.5范例数据
截图如下:
5.3计算所有DMU的函数
5.3.1函数输入参数
只要提供一个参数:数据文件存放的路径,形如:
sDataPath='d:\dea\TestExample2.xlsx'
调用格式:
[DMUSita,lambda,S,AAdjusted,ADifferent]=MyDEA_ALL_DMU(sDataPath)
5.3.2返回参数1:每个DMU效率、规模效益、是否弱有效DMUSita:四行n列,每一列表示一个DMU
第一行表示效率θ;
第二行是lambda的合计值,表示规模效益
第三行表示松弛变量和,为0,且第一行等于1,则表示DEA 有效 不为0,且第一行等于1,表示弱DEA 有效
5.3.3 返回参数2:每个DMU 的所有值
Lambda :每一列表示一个DMU ,每一行表示一个,下标依次从1到n
5.3.4 返回参数3:增加的松弛变量
S 每一列表示一个DMU ,每一行表示一个松弛变量,下表依次从1到n ,行数和变量数量一致;
5.3.5 返回参数4:非DEA 有效DMU 调整后的投入产出矩阵
AAdjusted :每一行表示一个指标,每一列表示一个DMU ;
5.3.6 返回参数5:非DEA 有效DMU 各个指标调整值
ADifferent :每一行表示一个指标,每一列表示一个DMU ;
5.4 返回参数例子
5.4.1 返回参数1:每个DMU 效率、规模效益、是否弱有效
DMUSita :四行n 列,每一列表示一个DMU 第一行表示效率θ;
第二行是lambda 的合计值,表示规模效益
第三行表示松弛变量和,为0,且第一行等于1,则表示DEA 有效 不为0,且第一行等于1,表示弱DEA 有效
第四行,0或者1,表示有最优值取得
λ
λ
5.4.2 返回参数2:每个DMU 的所有值
Lambda :每一列表示一个DMU ,每一行表示一个,下标依次从1到n
5.4.3 返回参数3:增加的松弛变量
S 每一列表示一个DMU ,每一行表示一个松弛变量,下表依次从1到n ,行数和变量数量一致;
5.4.4 返回参数4:非DEA 有效DMU 调整后的投入产出矩阵
AAdjusted :每一行表示一个指标,每一列表示一个DMU ;
5.4.5 返回参数5:非DEA 有效DMU 各个指标调整值
ADifferent :每一行表示一个指标,每一列表示一个DMU ;
6 补充知识
6.1 自定义matlab 函数
(1)首先建立M 文件或直接点击(File/New/Function)建立函数文件
λ
λ
(2)函数文件的格式是:
function [输出变量] = 函数名称(输入变量)
% 注释
% 函数体
例如:
function [s] = eg_sum( n )
% calculate the sum of 1..n
s = 0;
for i = 1:n
s = s + i;
end
(3)保存函数文件
一般文件名和函数同名
(4)matlab调用的函数必须要在matlab的搜索路径中设置路径过程如下:
File--setpath
(5)调用函数
控制台Command Window(主界面),输入保存的函数文件名来调用函数,如下所示:
>> clear
>> a = eg_sum(10)
6.2Matlab向量操作
6.2.1读取矩阵第一列
6.3Matlab操作excel数据
6.3.1读入excel数据
(1)一般语句:ranmdta=xlsread('ramdta.xls');
(2)读取第二个sheet中的数据:
[NUM]=xlsread('example',2),
注意:matlab读取excel中的数据是按照sheet在excel中的排放顺序来

(3)读取A3-D7之间的数据
[NUM]=xlsread('example',2,'A3:D7')
(4)[NUM]=xlsread('d:\dea\DEA_Data.xlsx','b') 数据源:
结果:
6.3.2写内容到xls
语法:
xlswrite('f:\result.xls',stats,'sheet1','A2')
具体例子参考:
%将结果保存到excel文件中
sTitle={};
%生成标题
sTitle(1,1)={'最后5天最高价格'};
sTitle(2,1)={''};
sTitle(1:2,2:6)=num2cell(xPrice(:,end-4:end));
sTitle(3,1)={'最后5天最高价格区间'};
sTitle(4,1)={''};
sTitle(3:4,2:6)=num2cell(PriceState(:,end-4:end)); sTitle(5,1)={'区间'};
n=size(GroupInfo,2);
sTitle(6,2:n+1)=GroupInfo;
sTitle(7:7+5-1,1)=num2cell(1:5);
%生成内容
sTitle(7:7+5-1,2:n+1)=num2cell(HighNextNDaysRow); %保存到excel文件中
xlswrite(StockName, sTitle,'Sheet2', 'A1' );
效果图:
6.4Matlab的for循环语句
for num=1:1000
EPS=EPS/2;
if (1+EPS)<=1
EPS=EPS*2
break
end
end
.
7参考资料
[1] 《线性规划模型及matlab程序求解》
https:///view/5e666511964bcf84b9d57b31.html。

相关文档
最新文档