3.1 PSO 알고리즘
PSO(Particle Swarm Optimization)은 새 무리와 같은 집단의 협동 및 행동양식을 모방한 최적화 방법이다(9). 다수의 개체(particle)들로 반복 계산을 수행하고 이를 통해 나온 해들의 결과를 참고하여 새로운 해를 만들어 낸다. PSO에서 개별 개체들은
particle로 집단은 swarm으로 명칭한다. PSO는 개체수 만큼의 해를 탐색영역에 흩뿌려 놓은 뒤 이를 초기 결과값으로 사용하여 계산을 수행한다.
이후 각 개체는 속도 벡터를 바탕으로 위치를 이동하여 반복적으로 해를 탐색하며 최적의 해를 저장한다. 해결하고자 하는 문제가 n차원일 경우 i번째
개체의 위치 $X_{i}$와 이동 속도 $V_{i}$는 n차원 벡터로 표시되며 아래와 같다.
계산을 반복 할 때마다 각 개체들의 위치와 속도벡터는 변하며 이때 새로운 속도벡터는 기존의 결과물을 바탕으로 계산된다. 새로운 속도벡터는 해당 개체의
원래 속도(관성), 집단 전체 중 최적해, 해당 개체의 최적해를 고려하여 아래와 같이 계산된다.
이때 $w$는 개체의 관성, $d$는 관성의 감쇠비, $C_{1}$은 자기 신뢰 상수, $C_{2}$는 집단 신뢰 상수, $r_{1}$과 $r_{2}$는
램덤변수, $P_{id}$는 개체의 최적값, $P_{gd}$는 집단의 최적값을 나타낸다. 관성과 관성의 감쇠비는 기존의 속도 영향을 제어하기 위해
사용된다. 본 연구에서는 초기 반복시에는 큰 관성을 가지고 탐색한 후 점차 관성을 감쇠비에 따라 지수적으로 감소시켜 기존 속도의 영향을 줄이도록 설계하였다.
속도 벡터가 너무 클 경우 개체가 탐색영역을 벗어나게 될 가능성이 있으므로 속도 벡터는 최소값과 최대값의 범위를 정해주어야 하며 속도 벡터가 범위를
벗어날 경우 최소 혹은 최대값을 속도벡터에 적용한다.
새롭게 계산된 속도 벡터를 바탕으로 개체의 해는 아래 식과 같이 업데이트 되며 반복 과정을 통해 최적의 해를 찾게 된다.
PSO는 최적화 문제의 적용이 단순하며 GA(Ganetic Algorithm) 등에 비해 연산속도가 빠른 장점을 가지고 있다(10)(11). 특히나 전력계통 최적화 문제에 있어 GA 같은 타 알고리즘과 비교 시 수렴성과 수렴속도가 뛰어나 경제급전, 상태추정 등에 널리 사용되고 있다(12)(13).
3.2 PSO 파라미터 설정
관성 $w$는 새로운 속도 벡터에 대한 기존 속도 벡터의 영향을 나타낸다. 이 관성계수를 조절함에 따라서 전역최적해와 국소최적해의 탐색 능력을 조절
할 수 있다(14). 만약 관성이 0이라면 새로운 속도 벡터는 집단의 최적해와 개체의 기존 최적해만을 고려하여 생성되고, 관성이 적용되면 새로운 영역으로의 탐색 가능성이
증가한다. 또한 관성이 크면 클수록 속도 벡터 또한 커지면서 연산을 반복할 때마다 개체가 보다 먼 영역으로 이동하여 탐색한다. 일반적으로 관성을 적용한
PSO의 경우 계산이 반복될수록 관성이 감소하도록 하여 수렴성을 높이며, 선형적이나 지수적으로 감소하도록 설정한다(15). 본 논문에서는 감쇠비를 적용하여 지수적으로 감소하도록 설정하였다.
자기 신뢰 상수 $C_{1}$과 집단 신뢰 상수 $C_{2}$는 개체 자신의 최적값과 집단 전체의 최적값을 향해 이동하도록 하는 가중치를 의미한다.
신뢰상수가 작으면 개체는 최적 해에 도달하지 못하고 방황할 가능성이 있고 신뢰상수가 클 경우 최적해에 빠르게 도달 할 수 있지만 최적해를 지나치게
될 가능성도 있다. $C_{1}$가 0이거나 너무 작을 경우 개체는 집단의 최적해만 고려하고 개체 자신의 최적해는 고려하지 않으며 새로운 탐색영역으로의
이동이 어려워 진다. $C_{2}$가 0이거나 너무 작을 경우에는 집단의 최적해를 고려하지 않기 때문에 집단의 이점을 살리지 못하고 n개의 독립적인
개체가 해를 찾는 것과 같아진다. 기존의 연구결과들을 바탕으로 신뢰상수는 일반적으로 2에서 최적의 값을 가지는 것으로 알려졌다(16). 본 연구에서도 이전 연구결과를 고려하여 신뢰상수를 2로 설정 하였다.
개체수가 크면 최적해를 찾을 가능성이 높아지지만 연산시간이 증가하기 때문에 개체수를 적절히 조절하는 것이 중요하다. 하지만 기존 연구결과에 따르면
PSO에서 개체 수가 일정 이상만 만족시키면 결과에 미치는 영향은 크지 않은 것으로 나타났다(17). 이때 개체수가 50을 넘어서면 결과는 큰 차이 없이 나오며 50미만에서는 개체수가 작아질수록 결과 값이 최적 해에서 멀어진다(15). 따라서 본 연구에서는 개체수를 50으로 고정하여 사용하였다.
속도 벡터의 최대값 제한 또한 PSO의 성능에 영향을 준다. 속도 벡터의 최대값이 클 경우 개체가 국소 최적해쪽에 머무를 가능성은 적으나 최적해에
수렴할 가능성이 줄어든다. 반대로 속도 벡터의 최대값이 작은 경우 국소최적해에 개체가 머무르는 문제가 발생한다. 속도 벡터의 최대값이 큰 경우 PSO의
성능은 관성과 영향이 있으며 앞에서 기술한 바와 같이 본 연구에서는 관성에 감쇄비를 적용하여 점차 감소하도록 설계하였으므로 속도 벡터의 최대값은 크게
설정하였으며, 최대값이 발전기 운전영역의 60%가 되도록 설정하였다. 표 6은 본 논문에서 사용된 PSO 파라이터를 보여준다.
표 6. PSO 파라미터
Table 6. Parameters for PSO
Parameter
|
Value
|
$w$
|
0.99
|
damping ratio
|
0.98
|
$C_{1}$
|
2
|
$C_{2}$
|
2
|
$V_{\max}$
|
0.6
|
population
|
50
|
iteration
|
200
|
3.3 목적함수 및 제약조건
본 연구의 실증단지에는 온수 형태로 생성되는 열에너지가 수요를 초과할 경우 배출할 수 있는 장비가 없다. 따라서 열병합발전기의 온수 발생량 합은 온수
수요의 합을 초과할 수 없다.
위 식에서 $n$은 열병합발전기 수, $m$은 수용가 수, $P_{o}^{h}(i,\:t)$는 시간 $t$에서 $i$번째 발전기의 온수 발생량, $d_{j,\:t}$는
시간 $t$에서 $j$번째 수용가의 온수 수요를 나타낸다. 또한 온수를 전달하는 파이프는 모든 열병합발전기와 모든 수용가를 연결하지 않기 때문에 열병합발전기의
온수 발생량 제약 조건은 개별 열병합발전기마다 다르게 적용되며 온수발생량 제약 행렬 $L$은 아래와 같이 표현된다.
이때 $l(i,\:t)$는 시간 t에서 $i$번째 발전기에 적용되는 온수 발생 제한량을 의미하며 해당 발전기에서 발생하는 온수량은 이 제약조건을 초과
할 수 없다.
열병합발전기와 수용가의 연결 상태를 나타내는 인접행렬 $A$는 아래와 같이 표현된다.
이때 $a_{i,\:j}$는 $i$번째 열병합발전기와 $j$번째 수용가간의 온수 파이프 연결 여부를 나타내며 두 지점이 연결되었을 시 1, 연결이
안되었을 시에는 0이 된다. 온수발생량 제약 행렬 $L$은 인접행렬 $A$와 온수 수요행렬 $D$의 행렬곱으로 계산된다.
열병합발전기의 전기, 온수, 스팀 출력은 최대용량을 초과할 수 없다. 실증에 사용된 열병합 발전기의 최대 연료 투입량은 kW 환산시 655.7kW이며
이때 출력되는 전력은 203kW, 온수는 222kW, 스팀은 128kW로 열병합발전기의 출력량은 이 값을 초과할 수 없다.
본 최적운영 알고리즘에서의 목적함수는 열병합발전기 수익의 극대화이다. 열병합발전기의 이익은 식 (8)을 통해 계산되며 여기에 온수 수요 제약조건을 반영한 열병합발전기 이익은 다음과 같다.
이때 $g_{i,\:t}$는 시간 $t$에서 $i$번째 열병합발전기의 투입 연료량(kW), $b$는 제약조건 패널티 상수, $z_{i,\:t}$는
시간 $t$에서 $i$번째 열병합발전기의 제약위반 변수, $u_{t}$는 시간 $t$에서 전체 열병합발전기의 제약위반 변수이다. $z_{i,\:t}$와
$u_{t}$는 아래와 같이 계산된다.
각 열병합발전기들의 온수 출력 $P_{hw}(g_{i,\:t})$ 이 각 열병합발전기의 온수 발생 제한량 $l(i,\:t)$를 넘어서면 $z_{i,\:t}$는
음수가 되어 열병합발전기의 수입은 $z_{i,\:t}$와 설정된 $b$에 따라 크게 감소하며, 전체 열병합발전기들의 온수 출력 합 이 전체 온수 수요를
넘어서면 $u_{t}$이 음수가 되어 마찬가지로 $u_{t}$와 설정된 $b$에 따라 전체 열병합발전기의 수입이 감소한다. $b$는 PSO 알고리즘에서
제약조건을 벗어난 해의 영역에서 개체가 움직일 경우 패널티를 주어 제약조건 이내의 범위로 들어오도록 유도하기 위해 설정하는 값으로 수익대비 큰 값을
설정한다.