数据包络分析(DEA)——CCR模型

2023-09-17 21:04:52

写在前面:
博主本人大学期间参加数学建模竞赛十多余次,获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路,故将数学建模常用数学模型算法汇聚于此专栏,希望能够对要参加数学建模比赛的同学们有所帮助。


1. 模型原理

1.1 模型介绍

  数据包络分析是以“相对效率”概念为基础,根据多指标投入和多指标产出对相同类型的单位进行相对有效性或效益评价的一种系统分析方法。
  DEA特别适用于具有多输入多输出的复杂系统,这主要体现在以下几点:
  (1)DEA以决策单位各输人/输出的权重为变量,从最有利于决策单元的角度进行评价,从而避免了确定各指标在优先意义下的权重。
  (2)假定每个输人都关联到一个或者多个输出,而且输入/输出之间确实存在某种关系,使用DEA方法则不必确定这种关系的显示表达式。
  DEA最突出的优点是无须任何权重假设,每一个输入/输出的权重不是根据评价者的主观认定,而是由决策单元的实际数据求得的最优权重。因此,DEA方法排除了很多主观因素,具有很强的客观性。

1.2 数据包络分析的CCR模型

DMUm个投入q个产出
1 x 11 , ⋯   , x 1 m x_{11}, \cdots, x_{1 m} x11,,x1m y 11 , ⋯   , y 1 q y_{11}, \cdots, y_{1 q} y11,,y1q
⋮ \vdots ⋮ \vdots ⋮ \vdots
n x n 1 , ⋯   , x n m x_{n1}, \cdots, x_{n m} xn1,,xnm y n 1 , ⋯   , y n q y_{n1}, \cdots, y_{n q} yn1,,ynq

  设有n个决策单元(DMC),每个决策单元都有 m 种投入和 q 种产出,设 x i j ( i = 1 , ⋯   , n ; j = 1 , ⋯   , m ) x_{i j}(i=1, \cdots, n ; j=1, \cdots, m) xij(i=1,,n;j=1,,m)表示第i个决策单元的第i种投入量, y i j ( i = 1 , ⋯   , n ; r = 1 , ⋯   , q ) y_{i j}(i=1, \cdots, n ; r=1, \cdots, q) yij(i=1,,n;r=1,,q)表示第 j 个决策单元的第 r 种产出量; v j ( j = 1 , ⋯   , m ) v_{j}(j=1, \cdots, m) vj(j=1,,m)表示第i 种投入的权值, u r ( r = 1 , ⋯   , q ) u_{r}(r=1, \cdots, q) ur(r=1,,q)表示第 r 种产出的权值;向量 X i , Y i ( i = 1 , ⋯   , n ) X_{i}, Y_{i}(i=1, \cdots, n) Xi,Yi(i=1,,n)分别表示决策单元j的输入和输出向量,则 X i = ( x i 1 , ⋯   , x i m ) X_{i}=\left(x_{i 1}, \cdots, x_{i m}\right) Xi=(xi1,,xim) Y i = ( y i 1 , ⋯   , y i q ) Y_{i}=\left(y_{i 1}, \cdots, y_{i q}\right) Yi=(yi1,,yiq)
  决策单元 i 的评价效率指数可以使用产出和投入的比例衡量,则第 k 个决策单元的产出投入比为 h k = u 1 y k 1 + u 2 y k 2 + ⋯ + u q y k r v 1 x k 1 + v 2 x k 2 + ⋯ + v m x k j = u r Y k T v j X k T h_{k}=\frac{u_{1} y_{k 1}+u_{2} y_{k 2}+\cdots+u_{q} y_{k r}}{v_{1} x_{k 1}+v_{2} x_{k 2}+\cdots+v_{m} x_{k j}}=\frac{ u_{r} Y_{k}^{T}}{ v_{j} X_{k}^{T}} hk=v1xk1+v2xk2++vmxkju1yk1+u2yk2++uqykr=vjXkTurYkT

1.2.1 投入导向的CCR模型

  投入导向的CCR模型,是在给定投入的条件下最大化产出。评价决策单元k效率的数学模型为
max ⁡ u Y k T v X k T \max \frac{u Y_{k}^{T}}{v X_{k}^{T}} maxvXkTuYkT s . t . { u r Y k T v j X k T ⩽ 1 v j ⩾ 0 , u r ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , q s.t.\left\{\begin{array}{c}\frac{u_{r} Y_{k}^{T}}{v_{j} X_{k}^{T}} \leqslant 1 \\ v_{j} \geqslant 0, u_{r} \geqslant 0, j=1, \cdots, m ; r=1, \cdots, q\end{array}\right. s.t.{vjXkTurYkT1vj0,ur0,j=1,,m;r=1,,q
  由于该形式是非线性规划,因此将其转化为线性规划形式为
max ⁡ u r Y k T \max u_{r} Y_{k}^{T} maxurYkT s . t . { u r Y k T − v j X k T ⩽ 0 v j X k T = 1 v j ⩾ 0 , u r ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , q s.t. \left\{\begin{array}{c}u_{r} Y_{k}^{T}-v_{j} X_{k}^{T} \leqslant 0 \\ v_{j} X_{k}^{T}=1 \\ v_{j} \geqslant 0, u_{r} \geqslant 0, j=1, \cdots, m ; r=1, \cdots, q\end{array}\right. s.t. urYkTvjXkT0vjXkT=1vj0,ur0,j=1,,m;r=1,,q

  由于对偶模型的决策变量中包含效率值,因此将上述模型转化为对偶形式为:
min ⁡ θ \min \theta minθ s . t . { ∑ i = 1 n λ i x i j ⩽ θ x i j ∑ i = 1 n λ i y i r ⩽ y k r λ i ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , q s.t. \left\{\begin{array}{c}\sum_{i=1}^{n} \lambda_{i} x_{i j} \leqslant \theta x_{i j} \\ \sum_{i=1}^{n} \lambda_{i} y_{i r} \leqslant y_{k r} \\ \lambda_{i} \geqslant 0, j=1, \cdots, m ; r=1, \cdots, q\end{array}\right. s.t. i=1nλixijθxiji=1nλiyirykrλi0,j=1,,m;r=1,,q 其中, k = 1 , ⋯   , n k=1, \cdots, n k=1,,n
  在对偶规划中, λ \lambda λ表示DMU的线性组合系数,参数 θ \theta θ即为效率值,其范围在0到1之间。

1.2.2 产出导向的CCR模型

产出导向的CCR模型,是在给定产出条件下最小化投入,其最终的对偶模型如下:
max ⁡ ϕ \max \phi maxϕ s . t . { ∑ i = 1 n λ i x i j ⩽ x i j ∑ i = 1 n λ i y i r ⩾ ϕ y k r λ i ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , q s.t.\left\{\begin{array}{c}\sum_{i=1}^{n} \lambda_{i} x_{i j} \leqslant x_{i j} \\ \sum_{i=1}^{n} \lambda_{i} y_{i r} \geqslant \phi y_{k r} \\ \lambda_{i} \geqslant 0, j=1, \cdots, m ; r=1, \cdots, q\end{array}\right. s.t. i=1nλixijxiji=1nλiyirϕykrλi0,j=1,,m;r=1,,q 其中, k = 1 , ⋯   , n k=1, \cdots, n k=1,,n

2. 案例分析

  (多指标评价问题) 某市教委需要对六所重点中学进行评价,其相应的指标如表所示。表中的生均投入和非低收入家庭百分比是输入指标,生均写作得分和生均科技得分是输出指标。请根据这些指标,评价哪些学校是相对有效的。
在这里插入图片描述
  该案例中,决策单元数量为6,投入指标数和产出指标数均为2。
根据投入导向的CCR对偶模型,利用Matlab编程求解得到6个最优目标值分别为:

1,0.9096,0.9635,0.9143,1,1

根据产出导向的CCR对偶模型,利用Matlab编程求解得到6个最优目标值也是:

1,0.9096,0.9635,0.9143,1,1

可见决策单元1,5,6的投入产出最有效率,均为1,因此学校A,E,F是DEA有效的。
投入导向的CCR模型Matlab程序如下:

clc,clear
X=[89.39 86.25 108.13 106.38 62.4 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];
n=size(X,2)     % 决策单元数
m=size(X,1)     % 投入指标数
q=size(Y,1)     % 产出指标数
%投入导向的CCR模型
w = [];
for i = 1:n
    f = [zeros(1,n) 1];   % 定义目标函数
    Aeq = [];             % 没有等式约束
    beq = [];
    LB = zeros(n+1,1);    % 指定下界
    UB = [];
    A = [X -X(:,i);-Y zeros(q,1)];         % 设定不等式约束
    b = [zeros(m,1);-Y(:,i)];
    w(:,i) = linprog(f,A,b,Aeq,beq,LB,UB); % 模型求解
end    
CCR_IN = w(n+1,:)'             % 结果输出

产出导向的CCR模型Matlab程序如下:

clc,clear
X=[89.39 86.25 108.13 106.38 62.4 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];
n=size(X,2)     % 决策单元数
m=size(X,1)     % 投入指标数
q=size(Y,1)     % 产出指标数
%产出导向的CCR模型
w = [];
for i = 1:n
    f = [zeros(1,n) -1];   % 定义目标函数
    Aeq = [];             % 没有等式约束
    beq = [];
    LB = zeros(n+1,1);    % 指定下界
    UB = [];
    A = [X zeros(m,1);-Y Y(:,i)];         % 设定不等式约束
    b = [X(:,i)' zeros(1,q)]';
    w(:,i) = linprog(f,A,b,Aeq,beq,LB,UB); % 模型求解
end    
CCR_OUT = 1./w(n+1,:)'             % 结果输出
更多推荐

Java笔记:JVM参数调优

1.堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在WindowsServer2003系统,3.5G物理内存,JDK5.0下测试,最大可设置为147

学内核之二十一:系统调用栈结构分析

目录一构建分析环境二栈的位置三栈开头8字节四寄存器环境五R4和R5六如何确定系统调用的具体函数一构建分析环境为了分析方便,做了如下测试环境:内核实现一个简单的创建字符设备的驱动应用层实现一个c程序,操作为打开内核创建的字符设备文件内核在处理open设备文件的接口中,将指针设置为空,并在该空指针上赋值。这样,就触发内核的

JVM内存模型及JAVA程序运行原理

目录平台JVM简介内存结构方法区堆一个对象的内存分配流程栈局部变量表操作栈动态连接方法返回地址程序计数器Metaspace元空间本地方法栈直接内存CodeCacheJAVA程序在JVM内是如何执行的平台Java是一种可以跨平台的编程语言。Java可以跨平台得益于JVM(java虚拟机)。我们把CPU处理器与操作系统的整

springboot大学生体质测试管理系统springboot009

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路,向着优秀程序员前行!🍅更多优质项目👇🏻👇🏻可点击下方获取🍅文章底部或评论区获取🍅Java项目精品实

flask要点与坑

简介Flask是一个用Python编写的Web应用程序框架,该框架简单易用、模块化、灵活性高。该笔记主要记录Flask的关键要点和容易踩坑的地方Flask日志配置Flask中的自带logger模块(也是python自带的模块),通过简单配置可以实现将日志记录到日志文件中(记录关键日志有助于以后分析问题);更详细的log

领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用CSDN平台,自主完成项目设计升级,提升自身的硬实力。专栏订阅:项目大全提升自身的硬实力[专栏详细介绍:项目设计

Golang goroutine MPG模式浅析

协程是通过使用关键字go调用(或执行)一个函数或者方法来实现的(也可以是匿名函数)。Go语言在语言层面上支持了并发,goroutine是Go语言提供的一种用户态线程,有时我们也称之为协程。所谓的协程,某种程度上也可以叫做轻量线程,它不由os而由应用程序创建和管理,因此使用开销较低(一般为4K)。我们可以创建很多的gor

【无公网IP内网穿透】Windows搭建Web站点

什么是cpolar?cpolar是一个非常强大的内网穿透工具,开发调试的必备利器。它可以将本地内网服务器的HTTP、HTTPS、TCP协议端口映射为公网地址端口,使得公网用户可以轻松访问您的内网服务器,无需部署至公网服务器。支持永久免费使用,无需公网IP,也无需设置路由器。概述本次教程中,我们将实现在windows上搭

第十九章、【Linux】开机流程、模块管理与Loader

19.1.1开机流程一览以个人计算机架设的Linux主机为例,当你按下电源按键后计算机硬件会主动的读取BIOS或UEFIBIOS来载入硬件信息及进行硬件系统的自我测试,之后系统会主动的去读取第一个可开机的设备(由BIOS设置的),此时就可以读入开机管理程序了。开机管理程序可以指定使用哪个核心文件来开机,并实际载入核心到

【Java系列】深入解析 Lambda表达式

序言你只管努力,其他交给时间,时间会证明一切。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流1基础介绍1.1概念介绍JavaLambda表达式是Java8中最重要的新特性之一。它们是

MySQL常见面试题(三)

😀前言在当今数据驱动的时代,数据库管理成为企业和组织的核心组件。其中,数据库的性能优化是确保信息可以快速、准确地检索的关键要素。这通常通过正确实现和管理数据库索引来实现。索引不仅可以大大提高数据库的查询性能,还可以帮助维持数据的完整性和一致性。本文将深入探讨MySQL数据库中的不同类型的索引,包括其特点和实现方式。我

热文推荐