산출방향 CCR 승수모형
None

by SungYong


Posted on Aug. 3, 2017, 3:41 p.m.



지난번 포스팅한 투입방향 CCR 모델에 이은 산출방향 CCR 모형에 대해 이야기해보고자 한다. 투입방향 CCR 모델과 달리 산출방향 CCR 승수모형은 효율성의 역수가 비효율성이라고 정의한 뒤, 총괄산출이 1이라는 제약조건을 걸어놓고 그 비효율성을 계산하는 방법이다.

$$\begin{array}{c} Minimize\,{I_k} = \sum\limits_{i = 1}^m {{x_{ik}}{v_{ik}}} \\ s.t.\,\sum\limits_{r = 1}^s {{y_{rk}}{u_{rk}}} = 1\\ \sum\limits_{i = 1}^m {{x_{ij}}{v_{ik}}} - \sum\limits_{r = 1}^s {{y_{rj}}{u_{rk}}} \ge 0\, & \left( {j = 1,2, \cdots ,m} \right)\\ {v_{ik}} \ge \varepsilon \,\left( {,i = 1,2, \cdots ,m} \right)\\ {u_{rk}} \ge \varepsilon \,\left( {,r = 1,2, \cdots ,s} \right) \end{array}$$

투입방향 CCR 모델의 학교별 효율성 계산 예제를 적용시켜보자. 마찬가지로 $k=1$이면, 첫번째 제약조건은

$$\begin{array}{c} \sum\limits_{r = 1}^s {{y_{r1}}{u_{r1}}} = 1\\ {y_{11}}{u_{11}} + {y_{21}}{u_{21}} = 1\\ 25.2 \cdot {u_{11}} + 223 \cdot {u_{21}} = 1\\ {u_{21}} = \frac{{1 - 25.2{u_{11}}}}{{223}} \end{array}$$

이 된다.

위 식에서 $u_{11}$의 범위 제약이 하나 더 생긴다.

$$\begin{array}{c} {u_{21}} = \frac{{1 - 25.2{u_{11}}}}{{223}} \ge 0\\ 0 \le {u_{11}} \le \frac{1}{{25.2}} \end{array}$$

그리고 부등식으로 되어 있는 제약조건을 다시 쓰면 지난 포스팅에서 익숙한 식으로 표현할 수 있다.

$$\begin{array}{c} \sum\limits_{i = 1}^m {{x_{ij}}{v_{i1}}} - \sum\limits_{r = 1}^s {{y_{r1}}{u_{r1}}} \ge 0\\ \sum\limits_{r = 1}^s {{y_{r1}}{u_{r1}}} - \sum\limits_{i = 1}^m {{x_{ij}}{v_{i1}}} \le 0 \end{array}$$

$k=1$이라는걸 고려해서 실제 숫자로 정리하면, 지난번 포스팅과 첫번째 식을 제외하고는 동일한 식이 된다.

$$\begin{array}{*{20}{l}} {\sum\limits_{r = 1}^s {{y_{r1}}{u_{r1}}} - \sum\limits_{i = 1}^m {{x_{ij}}{v_{i1}}} \le 0}\\ {1 - 8.939 \cdot {v_{11}} - 64.3 \cdot {v_{21}} \le 0}\\ {28.2 \cdot {u_{11}} + 287 \cdot {u_{21}} - 8.625 \cdot {v_{11}} - 99.0 \cdot {v_{21}} \le 0}\\ {29.4 \cdot {u_{11}} + 317 \cdot {u_{21}} - 10.813 \cdot {v_{11}} - 99.6 \cdot {v_{21}} \le 0}\\ {26.4 \cdot {u_{11}} + 291 \cdot {u_{21}} - 10.638 \cdot {v_{11}} - 96.0 \cdot {v_{21}} \le 0}\\ {27.2 \cdot {u_{11}} + 295 \cdot {u_{21}} - 6.240 \cdot {v_{11}} - 96.2 \cdot {v_{21}} \le 0}\\ {25.5 \cdot {u_{11}} + 222 \cdot {u_{21}} - 4.719 \cdot {v_{11}} - 79.9 \cdot {v_{21}} \le 0} \end{array}$$

$u_{21}$을 $u_{11}$로 정리하면,

$$\begin{array}{c} 1 - 8.939 \cdot {v_{11}} - 64.3 \cdot {v_{21}} \le 0\\ 28.2 \cdot {u_{11}} + 287 \cdot \frac{{1 - 25.2{u_{11}}}}{{223}} - 8.625 \cdot {v_{11}} - 99.0 \cdot {v_{21}} \le 0\\ 29.4 \cdot {u_{11}} + 317 \cdot \frac{{1 - 25.2{u_{11}}}}{{223}} - 10.813 \cdot {v_{11}} - 99.6 \cdot {v_{21}} \le 0\\ 26.4 \cdot {u_{11}} + 291 \cdot \frac{{1 - 25.2{u_{11}}}}{{223}} - 10.638 \cdot {v_{11}} - 96.0 \cdot {v_{21}} \le 0\\ 27.2 \cdot {u_{11}} + 295 \cdot \frac{{1 - 25.2{u_{11}}}}{{223}} - 6.240 \cdot {v_{11}} - 96.2 \cdot {v_{21}} \le 0\\ 25.5 \cdot {u_{11}} + 222 \cdot \frac{{1 - 25.2{u_{11}}}}{{223}} - 4.719 \cdot {v_{11}} - 79.9 \cdot {v_{21}} \le 0 \end{array}$$

과 같다. 한번 더 정리하면

$$\begin{array}{c} - 8.939 \cdot {v_{11}} - 64.3 \cdot {v_{21}} \le - 1\\ \left( {28.2 - 287 \cdot \frac{{25.2}}{{223}}} \right) \cdot {u_{11}} - 8.625 \cdot {v_{11}} - 99.0 \cdot {v_{21}} \le - \frac{{287}}{{223}}\\ \left( {29.4 - 317 \cdot \frac{{25.2}}{{223}}} \right) \cdot {u_{11}} - 10.813 \cdot {v_{11}} - 99.6 \cdot {v_{21}} \le - \frac{{317}}{{223}}\\ \left( {26.4 - 291 \cdot \frac{{25.2}}{{223}}} \right) \cdot {u_{11}} - 10.638 \cdot {v_{11}} - 96.0 \cdot {v_{21}} \le - \frac{{291}}{{223}}\\ \left( {27.2 - 295 \cdot \frac{{25.2}}{{223}}} \right) \cdot {u_{11}} - 6.240 \cdot {v_{11}} - 96.2 \cdot {v_{21}} \le - \frac{{295}}{{223}}\\ \left( {25.5 - 222 \cdot \frac{{25.2}}{{223}}} \right) \cdot {u_{11}} - 4.719 \cdot {v_{11}} - 79.9 \cdot {v_{21}} \le - \frac{{222}}{{223}} \end{array}$$

이 된다.

행렬식으로 정리하면 아래와 같다.

$$\left[ {\begin{array}{*{20}{c}} 0&{ - 8.939}&{ - 64.3}\\ {28.2 - 287 \cdot \frac{{25.2}}{{223}}}&{ - 8.625}&{ - 99.0}\\ {29.4 - 317 \cdot \frac{{25.2}}{{223}}}&{ - 10.813}&{ - 99.6}\\ {26.4 - 291 \cdot \frac{{25.2}}{{223}}}&{ - 10.638}&{ - 96.0}\\ {27.2 - 295 \cdot \frac{{25.2}}{{223}}}&{ - 6.240}&{ - 96.2}\\ {25.5 - 222 \cdot \frac{{25.2}}{{223}}}&{ - 4.719}&{ - 79.9} \end{array}} \right]\left\{ {\begin{array}{*{20}{c}} {{u_{11}}}\\ {{v_{11}}}\\ {{v_{12}}} \end{array}} \right\} \le \left\{ {\begin{array}{*{20}{c}} { - 1}\\ { - \frac{{287}}{{223}}}\\ { - \frac{{317}}{{223}}}\\ { - \frac{{291}}{{223}}}\\ { - \frac{{295}}{{223}}}\\ { - \frac{{222}}{{223}}} \end{array}} \right\}$$

Python 으로 풀기

from scipy.optimize import linprog

print('--------------------')
c = [0, 8.939, 64.3]
A = [
        [0, -8.939, -64.3],
        [28.2-287*25.2/223, -8.625, -99.0],
        [29.4-317*25.2/223, -10.813, -99.6],
        [26.4-291*25.2/223, -10.638, -96.0],
        [27.2-295*25.2/223, -6.240, -96.2],
        [25.5-222*25.2/223, -4.719, -79.9]
     ]


b = [-1, -287/223, -317/223, -291/223, -295/223, -222/223]

ep = 0
u1_bnds = (ep, 1/25.2)
v1_bnds = (ep, None)
v2_bnds = (ep, None)

res = linprog(c, A, b, bounds=(u1_bnds, v1_bnds, v2_bnds), options={"disp": True})
print(res)
print('Efficiency:--------')
print(1/res['fun'])

위 코드를 실행하면,

Optimization terminated successfully.
         Current function value: 1.000000    
        Iterations: 6
     fun: 1.0
 message: 'Optimization terminated successfully.'
     nit: 6
   slack: array([ 0.02412047,  0.1249714 ,  0.11313865,  0.18696697,  0.        ,
        0.        ,  0.        ])
  status: 0
 success: True
       x: array([ 0.01556207,  0.03767109,  0.01031506])
Efficiency:--------
1.0

효율성은 $1.0$으로 나왔고, $u_{11}=0.01556207$, $v_{11}=0.03767109$, $v_{12}=0.01031506$이라는 결과가 나왔다.

5개의 DMU를 더 계산해야 하므로, 앞선 방법처럼 일반화를 하자.

from scipy.optimize import linprog

x1 = [8.939, 8.625, 10.813, 10.638, 6.24, 4.719]
x2 = [64.3, 99, 99.6, 96, 96.2, 79.9]
y1 = [25.2, 28.2, 29.4, 26.4, 27.2, 25.5]
y2 = [223, 287, 317, 291, 295, 222]

n = len(x1)
k = 4

c = [0, x1[k], x2[k]]

A = []
for i in range(n):
    if i == k:
        A.append([0, -x1[i], -x2[i]])
    else:
        A.append([y1[i]-y2[i]*y1[k]/y2[k], -x1[i], -x2[i]])


b = []
for i in range(n):
    if i == k:
        b.append(-1)
    else:
        b.append(-y2[i]/y2[k])
        
ep = 0
u1_bnds = (ep, 1/25.2)
v1_bnds = (ep, None)
v2_bnds = (ep, None)

res = linprog(c, A, b, bounds=(u1_bnds, v1_bnds, v2_bnds), options={"disp": True})
print(res)
print(1/res['fun'])

k=1, k=2 같은 방식으로 계산해보면, 고길곤 교수님 표 3.6과 같은 효율성 값을 얻을 수 있다. 그러나 가중치 계수는 다소 상이한 결과가 도출된다. 이는 최적화 문제가 유일해가 아니기 때문에 발생하는 문제인 것 같다.


아직 댓글이 없습니다. 첫번째로 댓글을 남겨보세요.


Blog Search

Blog Categories

Side Widget Well

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore, perspiciatis adipisci accusamus laudantium odit aliquam repellat tempore quos aspernatur vero.