이제 본격적으로, 분산형 에너지시스템 도입의 경제적 안 도출을 위한 수학적 최적화 문제 구성을 알아보기로 한다.

대상 시스템 개요

이 글에서 설명할 예시 문제는, 일반용 (계시별) 요금제를 적용받는 건물에 100 kWh급 배터리가 설치되어 있을 경우, 평일 내 24시간 동안 각 시간별 배터리의 최적 충/방전 스케줄을 도출하는 문제이다. 최적이라 함은, 24시간 동안의 전기요금의 합을 최소화함을 의미한다.

system_batt 배터리를 포함하는 건물 전기 공급 시스템 도식도.

직관적으로 생각하면, 비용 최소화를 위해서는 요금이 상대적으로 낮은 경부하 시간대에 배터리를 가능한 많이 충전하고, 요금이 상대적으로 높은 최대부하 시간에 배터리를 완전히 방전해야 할 것이다.

해당 에너지 시스템에서 만족되어야 할 조건들은 다음과 같다.

1) 매 시간별 에너지 부하는, 계통으로부터의 전력 유입(수전)에 배터리로 충전되는 전력을 뺀 값 또는 배터리에서 방전되어 나오는 전력을 더한 값과 일치해야 한다.

2) 배터리에 충전되는 에너지의 양은 배터리 용량을 초과할 수 없다. 이를테면 배터리의 실질 용량이 100 kWh일 경우, 실질적으로 충전되어 있는 에너지의 양은 0~100 kWh 사이여야 한다.

3) 1시간 동안 배터리에 최대로 충전되거나 배터리로부터 최대로 방전될 수 있는 에너지 양에는 상한이 있다. 이를테면 c-rate라는 지표가 0.5인 경우 1시간 동안 충전 또는 방전될 수 있는 양의 상한은 100 kWh x 0.5 = 50 kWh이다. 이 경우 방전된 배터리를 완전히 충전하는 데 걸리는 시간은 c-rate의 역수인 2시간이다. (마치 양동이에 물을 채우더라도 순식간에 꽉 채울 수 있는 게 아니라 호스 지름 및 수압에 따라 꽉 채우는 데 일정 시간이 걸리는 것과 같다.)

4) 현재 시간의 배터리 내에 충전된 에너지의 양은, 직전 시간의 배터리 내 에너지 양에, 현재 계통에서 배터리로 흘러들어가는 충전에너지에 충전효율을 곱한 양을 더하거나, 배터리로부터 부하로 최종 전달되는 방전에너지를 방전효율로 나눈 값과 같아야 한다. (배터리단에서 방전된 에너지에 방전효율을 곱하면 부하로 최종 전달되는 에너지와 같다는 식의 양 변을 방전효율로 나눈 것)


시스템 제약조건 수식화

각 조건들을 선형 등식 및 부등식으로 표현해보자.

시간을 $t$라 하고 (이 경우 하루는 24시간이므로 $t=1,2,\cdots,24$이고, $t=1$은 0시~1시, $t=6$은 5시~6시 를 의미한다), 시간 $t$에서 계통(grid)으로부터의 전력 유입을 $p_{\text{grid}}[t]$ 라 하자. 마찬가지로 건물의 전기 부하(load)를 $p_{\text{load}}[t]$, 배터리 충전(charge)을 위해 배터리로 유입되는 전력을 $p_{\text{ch}}[t]$, 배터리에서 방전(discharge)되어 부하에 전달되는 전력을 $p_{\text{disch}}[t]$, 배터리 안에 저장되어 있는 에너지 양을 $e_{\text{batt}}[t]$라 하자. 배터리의 충/방전 효율은 90%라 하자.

이 때 제약조건들의 식은 아래와 같다.

1) $ p_{\text{load}}[t] = p_{\text{grid}}[t] - p_{\text{ch}}[t] + p_{\text{disch}}[t] \quad \forall t$

수요-공급 밸런스를 의미한다. 좌변은 전기 부하, 우변은 부하에 공급되는 전력이다.

배터리가 충전될 경우 계통으로부터의 전력 중 일부를 제해야 하므로 $p_{\text{ch}}[t]$ 앞에 마이너스가 붙고, 배터리가 방전될 경우 계통으로부터의 전력에 더해져 부하를 충족하므로 $p_{\text{disch}}[t]$ 앞에 플러스가 붙었다.

2) $ 0 \leq e_{\text{batt}}[t] \leq 100 \quad \forall t$

배터리에 저장되는 에너지는 배터리 용량을 초과할 수 없음을 의미한다.

3) $ 0 \leq p_{\text{ch}}[t] \leq 50, \quad 0 \leq p_{\text{disch}}[t] \leq 50 \quad \forall t$

배터리로 충전되는 에너지 또는 방전되어 나오는 에너지에는 c-rate로 결정되는 상한이 있음을 의미한다.

4) $ e_{\text{batt}}[t] = e_{\text{batt}}[t-1] + 0.9 p_{\text{ch}}[t] - p_{\text{disch}}[t]/0.9 \quad \forall t$

충전/방전에 따른 배터리 내 에너지의 ‘시간적 변동’을 의미한다. 우변의 $t-1$에 주의할 것.

여기서는 충전될 경우 배터리 내 에너지가 증가하므로 $p_{\text{ch}}[t]$ 앞에 플러스가 붙고, 방전될 경우 배터리 내 에너지가 감소하므로 $p_{\text{disch}}[t]$ 앞에 마이너스가 붙었다. 배터리로 들어가는 에너지 중 충전효율만큼의 에너지만이 실제 배터리에 저장되므로, $p_{\text{ch}}[t]$에 $\mu$가 곱해진다. 마찬가지로 배터리에서 나오는 에너지 중 방전효율만큼의 에너지만이 실제 부하에 공급되므로, $p_{\text{disch}}[t]$에 $\mu$의 역수가 곱해진다.

$t=1$일 경우 $t-1$은 0인데, $e_{\text{batt}}[0]$ 은 무엇일까? $e_{\text{batt}}[0]$는 해당 24시간 기간 직전에 배터리 안에 저장되어 있던 에너지 값, 일종의 initial point로써 따로 정의해야 한다. 여기서는 0이라고 하자. 이 경우 추가 제약조건으로 $ e_{\text{batt}}[0] = 0$을 둔다.


비용을 목적함수로 표현

위 제약 하에 24시간 동안의 전기요금의 합을 최소화해야 하므로, 24시간 동안의 전기 요금의 합을 나타내는 식이 하나 있어야 한다. 한국전력의 전기요금표를 보면, ‘기본 요금’과 ‘전력량 요금’은 아래와 같다.

eleccosttable eleccosttime 한국전력 전기요금표 (일반용). 시간대별로 전기요금이 다름.

기본요금은 수전 설비 규모에 따른 계약전력 혹은 1년 중 최대 전력 수요에 좌우되는데, 이번 포스팅에서는 하루 24시간만을 다루므로 전력량 요금의 최소화만 고려한다.

전력량 요금이 시간대별로 다름에 주목하라. 이를테면 여름에 대해, 경부하 (off-peak load) 시간/ 중간부하 (mid-load) 시간/ 최대부하 (peak-load) 시간의 집합은 각각 아래와 같다.

$T_{\text{off}} = \lbrace 1,2,…,8, 23, 24 \rbrace $

$T_{\text{mid}} = \lbrace 9, 10, 11, 13, 19, 20, 21, 22 \rbrace $

$T_{\text{peak}} = \lbrace 12, 14, 15, 16, 17, 18 \rbrace $

전력량 요금에 더해, 추가로 붙는 기후환경요금/ 연료비조정요금/ 부가가치세/ 전력산업기반기금도 고려해야 한다 (아래 그림 참고).

coststructure 전력량요금에 기후환경요금/ 연료비조정요금/ 부가가치세/ 전력산업기반기금이 추가됨.

전력량 요금에 기후환경요금 9원/kWh와 연료비조정요금 5원/kWh를 더하고, 그렇게 도출한 값에 1.137을 곱하면, 부가가치세와 전력산업기반기금까지 포함해 최종적으로 청구되는 금액을 얻는다.

(엄밀히는 부가가치세에는 원 단위 반올림을, 전력산업기반기금에는 십원 단위 버림을 적용해야 한다. 다만 여기서는 선형계획 문제의 설명이 목적이므로 너무 자세한 부분은 생략한다. 어차피 경제성에 대한 판단이 바뀔 정도로 큰 차이도 아니다.)

그러면, 가장 보편적인 일반용 요금제인 일반(을) 고압A 선택II에 대해, 여름 평일 24시간 동안의 전력량 요금의 합은 아래와 같다.

$ 1.137 \times \lbrace 101.3 \sum_{ t \in T_{\text{off}} } p_{\text{grid}}[t] + 154.2 \sum_{ t \in T_{\text{mid}} } p_{\text{grid}}[t] + 236.3 \sum_{ t \in T_{\text{peak}} } p_{\text{grid}}[t] \rbrace $

이는 변수들의 함수이자 최소화 대상(목적함수)이다.

최적 스케줄링 문제는, 앞서 수식화한 제약조건들을 만족하면서 동시에 목적함수를 최소화하는 $p_{\text{grid}}[t], p_{\text{ch}}[t], p_{\text{disch}}[t], e_{\text{batt}}[t]$ 의 $t=1,2,\cdots,24$ 의 값들을 구하는 문제이다. (엄밀히는 $e_{\text{batt}}[0]$도 최적화 문제의 변수다. 다만, $e_{\text{batt}}[0]$는 제약조건에 의해 특정 값으로 고정된다.)

다음 포스팅에서는 이 문제를 Python으로 코딩하고 푸는 법을 설명한다.


(선형계획법 시리즈의 지식들은, 필자가 2012년부터 (주)블루이코노미전략연구원 (대표: 오시덕 박사)과 함께 선형계획법 기반으로 신재생 및 열병합 에너지 시스템 경제성분석/ 최적 에너지시스템 도출 Tool 개발/ 에너지 정책 효과 분석 관련 프로젝트들을 여러 건 수행하며 축적한 ‘기본 지식’에 해당하는 부분임을 밝힌다.)