SUMO라고 들어보았는가?
열렬히 교통공학을 공부하는 학부생이거나 대학원생이라면 한번쯤 들어봤을 이름일 것이다.
SUMO는 Simulation of Urban MObility 라는 미시교통 시뮬레이션이다 [1]. 다른 시뮬레이션과는 다르게 매우 확장성이 높고, 자유로우며, 유연하고, 무엇보다도 공짜라는 점에서 최근 학계에서 많이 사용되고 있는 시뮬레이션이라고 보면 된다. 다른 시뮬레이션으로는 VISSIM, AIMSUN, MITSIM [2] 같은 다양한 것들이 있긴 한데... 사실 내가 SUMO를 주력으로 쓰기 때문에 다른 시뮬레이션은 잘 모른다. 그래서 당분간은 SUMO 얘기만 하게 될 듯 싶다.
아무튼 SUMO가 어느 정도로 자유롭냐면, 젤다의 전설마냥 "이게 될까...?" 싶은 것들이 거진 다 된다고 보면 된다. 원하는 차량을 순간 이동 시키거나, 특정 차량을 지정해서 파라미터를 조정한다든지, 매 초마다 남은 신호 현시를 최적화하고 적절한 전략을 차량들에게 선택적으로 지시한다든지, 시뮬레이션에서 원하는 특정 시각의 상태를 capture하여 저장하고 불러온다든지, 최적화 기법이나 강화학습과 같은 다양한 방법론을 비교하기 위해 실험 환경을 꾸민다던지, ...
그런데 이 SUMO를 다뤄본 사람이라면 알겠지만 굉장히 잘 만들었다고 평가하면서도 굉장히 불친절한 부분들도 많다. 인터넷에 자칫 SUMO라고만 검색하면 일본의 거대한 스모 선수들이 반겨준다. 가장 대표적인 것이 시뮬레이션의 어쩔 수 없는 한계이겠지만 현실과는 사뭇 다른 역학이다.
예를 들어, 직진 및 우회전 겸용 차로의 경우 현실에서는 거의 우회전 전용차로로 쓰이는 반면, 본 시뮬레이션에서는 직진 차량과 섞여 운행되어 우회전 차량에 불필요한 지체가 발생하는 경우가 존재한다. 또 다른 예로는 기본적으로 차량들이 우측 차로를 선호하기 때문에 default 값으로 시뮬레이션을 실행하는 경우 신호 대기 시 같은 역할의 직진 차로임에도 불구하고 우측의 직진 차로에 차량들이 더 많이 대기하는 괴현상을 관측할 수 있다.
이것들이 통제되지 않은 형태로 나타나는지라, 연구자 입장에서는 골머리 아프기도 하다. 예를 들어 SUMO를 이용해 두 실험 방법을 비교하고자 할 때, 생각하는 혹은 원하는 결과가 나오지 않으면 처음에는 코드가 틀린 줄 알고 계속 방법론 구현에 시간과 노력을 투자를 하게 되는데, 알고보니 시뮬레이션의 고질적인 문제여서 생각보다 쉽게 해결하거나(이러면 다행이다), 아예 해결할 수 없는 문제로 발전될 수 있다.
그럼에도 불구하고 SUMO를 비롯한 교통 시뮬레이션이 각광을 받고 있는 이유는, 쉽고 간편하기 때문이다. 복잡한 교통 역학을 모두 analytic하게 풀 수는 없는 노릇이고, 특히 이것은 미시 수준으로 확대될 수록 더 어려워지기 때문에 차량 단위에서 실험을 하고 싶거나 가설을 검증하고 싶다면 어쩔 수 없이 시뮬레이션을 활용하게 된다. 이런 상황에서, 다양한 교통 시뮬레이션의 역할을 이해하고, 어떤 방식으로 구현이 되고, 어떤 장단점이 있는지를 알고 있어야 연구자로서 좀 더 역량을 갖춘 사람이 되지 않을까라는 생각이 든다.
부족한 실력이지만 나도 꽤나 SUMO와 희로애락을 같이 하고 있는 사람이기 때문에... 가끔 본 블로그에 포스팅을 할 예정이다. 나의 얄팍한 지식이 세상에 도움이 되기를 희망한다.
[1] Behrisch, M., Bieker, L., Erdmann, J., & Krajzewicz, D. (2011). SUMO–simulation of urban mobility: an overview. In Proceedings of SIMUL 2011, The Third International Conference on Advances in System Simulation. ThinkMind.
[2] Barceló, J. (2010). Fundamentals of traffic simulation (Vol. 145, p. 439). New York: Springer.
'SUMO 이야기' 카테고리의 다른 글
[SUMO 이야기] #5. SUMO 튜토리얼: 교차로에 신호등 만들기 (0) | 2023.12.15 |
---|---|
[SUMO 이야기] #4. SUMO 튜토리얼: 시뮬레이션 실행하기 (0) | 2023.12.15 |
[SUMO 이야기] #3. SUMO 튜토리얼: 라우트(route) 파일 만들기 (2) | 2023.12.15 |
[SUMO 이야기] #2. SUMO 튜토리얼: 실전 네트워크 구성하기 (0) | 2023.12.14 |
[SUMO 이야기] #1. SUMO 튜토리얼: SUMO 설치 및 Traci를 위한 가상환경 세팅 (VScode) (0) | 2023.12.14 |