brunch

You can make anything
by writing

C.S.Lewis

by 휘드라 Sep 09. 2018

건축공학과 휴리스틱 알고리즘

건축공학에서 쓰일 수 있는 여러 알고리즘에 대한 고찰 - 1

알고리즘

알고리즘을 한마디로 표현하자면, '특정 문제를 해결하기 위한 논리적인 과정이라고 말할 수 있습니다. 수학과 컴퓨터과학이라는 테두리 안에 국한되지 않고 모든 만물에 적용될 수 있는 단어이기도 합니다. 요즘 IT기업에서도 알고리즘을 바탕으로 하는 해결 능력을 중요시 여기기 때문에 많은 취업 준비생들을 괴롭히기도 합니다.


건축공학에서도 특정 문제에 대한 수많은 알고리즘이 응용되어 더 멋지고 효율적인 해결책을 만들어내기도 합니다. 이번 글에서는 과거와 현재의 건축공학 연구에서 많이 사용되었던 휴리스틱 알고리즘을 살펴보고, 다음 글에서는 현재 트렌드를 반영한 딥러닝 기반의 알고리즘 적용 사례를 소개해보려고 합니다.


참고 : 저는 알고리즘 문제 사이트에서 문제를 해결하는 것을 별로 좋아하지 않습니다. 여기서 제가 소개하는 알고리즘들은 ACM대회에서 나올 법한 복잡한 문제를 해결하는 알고리즘과는 거리가 있습니다. 물론 여기서 나온 알고리즘들을 설계한 선구자들은 천재일 것입니다.


휴리스틱 알고리즘

주로 휴리스틱 알고리즘은 일상생활이나 자연에서 나타나는 현상을 모티브로 하여 발명이 되는 알고리즘입니다. 예를 들면 개미가 군집을 이루는 과정이나, 화성학에서 화음이 맞춰지는 것에 영감을 받아 만들어진 멋진 휴리스틱 알고리즘들이 있습니다. 이중 유전자 알고리즘(Genetic Algorithm)은 가장 널리 알려진 휴리스틱 알고리즘입니다. 미국의 과학자인 John Holland가 1975년에 발간한 Adaptation in Natural and Artificial Systems라는 저서에 처음으로 소개가 되었습니다. 자연에서 나타나는 현상을 컴퓨터 세계에 접목하여 문제를 해결하는 이론을 담은 내용이었습니다. 이를 시작으로 다양한 휴리스틱 알고리즘이 발명되는 계기가 됩니다. 본 글에서는 유전자 알고리즘을 위주로 설명을 이어가도록 하겠습니다.


일반적으로 자연세계에서의 생물체는 유전자는 결합(crossover)을 통해서 진화를 하게 됩니다. 결합을 진행하는 도중에 돌연변이(mutation)가 나타남으로써 더 우월한 유전자가 생성됩니다. 하지만 반대로 열등한 유전자가 나타날 수도 있지요. 유전자 알고리즘은 이런 유전자 세계의 프로세스를 바탕으로 만들어진 알고리즘입니다. 해결하기 어려운 현상(objective function)에 대하여 확률 모형에 기반한 다양한 집단(population) 만들어내고, 이를 조합과 변이를 통해서 근사한 답(fitness)을 얻어가는 것입니다. 컴퓨터 세계에 기반한 알고리즘이기 때문에 유전자는 0과 1로 구성되어 있고, 근사한 답이 얻어질수록 유전자는 세대를 거듭하게 됩니다. 아래는 유전자 알고리즘의 의사코드 입니다.


set_parameters

initialize_population();

while max_iter or best_fitness do

    fitness_calculation()

    crossover()

    mutation()

    generation += 1

end while


return best_fitness


휴리스틱 알고리즘은 해결하기 어려운 복잡한 수식이나 문제에 대해서 유사하고 근사한 해답을 찾기 위한 방법이지 딱 맞아떨어지는 정확한 해답을 찾기 위한 방법이 아닙니다. 이 때문에 휴리스틱 알고리즘에서 나타나는 부작용은 국부해(local mimium)에 빠지는 현상이 나타날 수 있습니다. 세대가 거듭하면서 좋은 방향으로 해를 찾아가면 다행이겠지만, 반대로 열등한 세대로의 진화가 계속된다면 제대로 된 해답을 찾을 수 없을 것입니다. 그렇기 때문에 이를 잘 해결할 수 있도록 영향을 주는 요소들을 잘 설정하는 것이 필요합니다. 딥러닝에서는 하이퍼 파라미터라고 하지요. 유전자 알고리즘에서는 number of population, muataion rate, crossover rate 등이 있습니다.

참고로 파이썬의 유명한 유전자 알고리즘 라이브러리인 DEAP의 레파지토리 주소는 다음과 같습니다. https://github.com/DEAP/deap


사례

그럼 건축공학에서는 앞서 설명한 유전자 알고리즘이 어떻게 응용되어 사용될까요? 아래의 사례를 통해서 알아보도록 하겠습니다.


아파트 리모델링의 최적화


아파트(공동주택)의 리모델링을 최적화 하기 위한 간단한 사례를 들어보도록 하겠습니다.

아파트는 노후화가 진행됨에 따라 대부분의 세대주는 리모델링을 하게 됩니다. 이때 세대주는 최저 가격으로 최고의 성능을 이끌어 낼 수 있는 방안을 생각하게 될 것입니다. 물론 이 예제에서는 아파트의 급탕이나 공조시스템(HVAC)과 같이 코어를 이루는 요소들은 제외하고, 개인이 진행할 수 있는 패시브(단열재, 창호, 조명) 요소를 교체한다고 가정합니다. 


다양한 단열재와 창호 그리고 조명등에 대한 교체를 진행한다고 가정하였을 때, 가격과 성능은 천차만별이기 때문에 비교가 필요합니다. 이때 의사결정자 입장에서는 전문가가 아니기 때문에 비교에 어려움이 생길 가능성이 농후합니다. 이 때문에 시뮬레이션을 통해 다양한 시나리오를 비교해 보고, 최적안을 뽑아낼 수 있다면 의사결정자에게 큰 도움이 될 것입니다. 다음의 두 과정을 통해서 리모델링의 최적화를 진행할 수 있습니다.


1. 유전자 알고리즘을 이용한 유사 모델 생성

앞서 말씀드린 과정을 진행하기 위해서는 현재 아파트의 유사 모델을 만들어 비교하는 모델링이 필요합니다. 흔히 잘된 모델링이라고 하는 경우는 실제 건물과 유사한 건물을 말하는 것이겠지요. 이를 위해서 유전자 알고리즘이 사용됩니다. 실제 시뮬레이션 모델을 유전자 알고리즘에 적용하여 가장 유사한 모델링을 만들어 낼 수 있습니다. 유사성을 판별하기 위하여 많은 방법이 있지만, 주로 RMSE(Root Mean Square Error)를 목적함수로 구성하게 됩니다.  


실제 건물과 가장 유사한 모델을 만드는 과정은 중요하다


2. 다목적 함수를 이용한 최적화

유사 모델이 생성되었다면, 다양한 요소들에 대한 최적화가 진행됩니다. 여기서 말하는 다양한 요소는 단열재나 창호의 성능(두께, 열관류율 등)과 예산이 될 수 있습니다. 성능은 최고, 예산은 최저가 된다면 그야말로 최고의 시나리오가 되겠지요. 다양한 요소가 존재하기 때문에 방금 전과 같이 하나의 목적에 대한 최적화가 아닌, 다목적 최적화가 필요합니다. 그래서 다목적 함수(multi-objective function)를 구성을 하여야 하는데, 주로 유클리드 거리법에 의한 함수 식을 만들게 됩니다. 하지만 다목적 최적화는 특성상 풍선효과(trade-off)가 나타날 수밖에 없습니다. 어느 한 부분이 좋아지면, 다른 부분은 반대로 나빠지는 것이 세상의 이치기도 합니다. 이를 잘 제어하는 것이 다목적 최적화 제어의 관건입니다. 이제 유전자 알고리즘에 기반한 다양한 대안들을 생성할 수 있고, 의사결정자는 대안들의 비교를 통해서 쉽게 최적안을 도출해낼 수 있을 것입니다.


다목적 최적화의 결과를 그래프로 표현하였을 때 좌측하단에 위치한 대안이 최적의 대안이라고 볼 수 있다.
맺음말

휴리스틱 알고리즘은 건축공학뿐만 아니라 너무나 다양한 분야에서 활용되어 왔으며, 역사 또한 오래되었기 때문에 이를 활용한 수많은 연구들이 존재합니다. 특히, 제가 대학원 생활 동안 많은 연구에 활용했던 알고리즘이기 때문에 많은 애정을 가지고 있기도 합니다. 하지만, GPU의 발전으로 인하여 인공신경망에 기반한 연구가 쏟아져 나오고 있기 때문에 연구 트렌드가 옮겨가는 것 같아 슬프기도 합니다. (지극히 개인적인 생각입니다)

유전자 알고리즘에 대해서 오랜만에 리뷰하는 시간을 가질 수 있어서 뜻깊은 시간이었습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari