산출방향 CCR 승수모형
None

by saintdragon2


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

Side Widget Well

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