赞
踩
使用Lingo计算的通用程序:
model: sets: level/1..3/:p,z,goal;!p是优先因子,目标级别,z是中间变量,表示每一级目标的偏差和; !goal需要每一轮输入,表示目标约束的最优偏差; variable/1..2/:x; h_con_num/1..1/:b;!硬约束不等式右边的向量; s_con_num/1..4/:g,dplus,dminus;!g是软约束等式右边的向量,dplus和dminus是偏差变量; h_con(h_con_num,variable):a;!硬约束的系数矩阵; s_con(S_Con_Num,variable):c;!软约束的系数矩阵; obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus;!偏差变量的权重,双斜杠中间的数字是坐标位置,例如1 1表示下标为[1][1]位置的权重,没有1 2则是因为dplus(2)和dminus(2)不在第一级目标中,不需要对应的权重; endsets data: ctr=?;!表示进行第几级目标计算; goal=? ? 0;!输入值很大表示对应的约束不起作用,每计算一轮,对应的更新最优偏差; b=12; g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; wplus=0 1 3 1; wminus=1 1 3 0; enddata min = @sum(level:p*z); p(ctr)=1;!ctr为输入的目标级别,为1则表示做第一级目标计算; @for(level(i)|i#ne#ctr:p(i)=0);!表示其他级别的优先级P记为0,不做运算; @for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)*dminus(j)));!z(i)为第i级目标约束偏差; @for(h_con_num(i):@sum(variable(j):a(i,j)*x(j))<b(i));!硬约束; @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));!软约束; @for(level(i)|i #lt# @size(level):@bnd(0,z(i),goal(i)));!bnd函数表示替换约束条件,0<=z(i)<=goal(i),对应最优偏差是否起作用; end
CCR模型判断方法:
CCR模型的Lingo实现
model: sets: dmu/1..6/:s,t,p; !决策单元; inw/1..2/:w; !输入权重,即\omega; outw/1..2/:u; !输出权重,即\miu; inv(inw,dmu):x; !输入变量,投入指标; outv(outw,dmu):y; !输入变量,产出指标; endsets data: ctr=?; x=89.39 86.25 108.13 106.38 62.40 47.19 64.3 99 99.6 96 96.2 79.9; y=25.2 28.2 29.4 26.4 27.2 25.2 223 287 317 291 295 222; enddata max=@sum(dmu:p*t); !即某决策单元的效率; p(ctr)=1; @for(dmu(i)|i#ne#ctr:p(i)=0); @for(dmu(j): s(j)=@sum(inw(i):w(i)*x(i,j)); t(j)=@sum(outw(i):u(i)*y(i,j)); s(j)>t(j)); @sum(dmu:p*s)=1; end
DEA相关参考资料:
1、Matlab:数据包络分析 (DEA)> 入门教程——详细解释DEA理论、CCR和BCC两种模型,含Matlab代码
2、数据包络分析(DEA)详解——DEA原理、两种模型介绍、Matlab&Python实现
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。