Search Unity

연구원, 엔지니어, 문제 해결 전문가를 비롯해 다양한 분야의 정책 담당자들이 지난 수십 년간 컴퓨터 시뮬레이션을 활용하고 있으며, 전염병 연구 분야에서도 시뮬레이션이 활용되고 있습니다. Unity Simulation은 클라우드에서 다양한 규모로 실시간 시뮬레이션을 실행할 수 있어 복잡하고 불확실한 대규모 시스템을 전체론적 관점에서 연구할 수 있게 해줍니다. 유니티는 간소화된 데모 프로젝트를 만들어 가상의 마트에서 코로나바이러스 확산을 시뮬레이션하고, 매장의 방침이 바이러스 노출률에 미치는 영향을 조사해 보았습니다. 이 프로젝트의 전체 소스 코드는 누구나 활용할 수 있도록 GitHub에 업로드해 두었습니다.

고지 사항: 이 포스트에서 다루는 프로젝트(관련된 모든 정보와 데이터를 포함)는 “있는 그대로,” 또한 “사용 가능한 상태로” 제공됩니다. 프로젝트 사용과 관련된 책임은 전적으로 사용자에게 있으며, 유니티 테크놀로지스와 그 계열사는 프로젝트나 프로젝트의 사용과 관련된 어떠한 내용도 대표하거나 보증하지 않습니다. 자세한 내용은 라이선스 약관을 참조하십시오.

 

위의 내용에 더해, 이 포스트는 역학자나 전문 의료인이 작성한 글이 아님을 강조합니다. 이 프로젝트의 어떠한 부분도 의학적, 또는 전문적 지침이나 권고 사항이 아니며, 그렇게 이해해서도 안 됩니다. 이 프로젝트는 간소화된 규칙을 바탕으로 한 개념적 모델에 불과하며, 과학적으로 증명된 내용은 없습니다. 신종 코로나바이러스와 관련한 지침이나 권고 사항, 확산 방식, 감염을 막기 위한 조치, 그 외 보건과 관련된 모든 사항은 전문 의료진과 상의하십시오.

여기를 클릭하여 마트 시뮬레이션을 확인하세요

시뮬레이션과 코로나바이러스

연구원, 엔지니어, 문제 해결 전문가를 비롯해 다양한 분야의 정책 담당자들이 지난 수십 년간 컴퓨터 시뮬레이션을 활용해 왔습니다. 시뮬레이션은 복잡하고 불확실한 조건에서 어떤 일이 일어날지 예측하는 데 주요한 솔루션입니다. 전염병 연구에서도 큰 역할을 했으며, 흑사병, HIV/AIDS 등의 질병 연구에 적용되기도 했습니다. 시뮬레이션 프로세스에서 첫 번째 단계는 연구원이 현장에서 관련 데이터를 수집하는 것입니다. 그런 다음 수집한 데이터를 활용해 가설을 세우고 추론에 기반한 정보를 넣은 수학적 모델을 개발합니다. 이 수학적 모델을 시뮬레이션 툴에 탑재해 인구 밀도 노출 인수 등 다양한 입력 파라미터로부터 바이러스 확산도와 같은 관심 항목을 계산합니다. 그러면 시뮬레이션을 통해 거시적인 관점에서 관찰하고 가설 연구 결과를 얻을 수 있으며, 이 결과를 가지고 전문가들은 실제 상황을 개념적으로 파악한 내용을 활용해 어려운 정책을 설명합니다.

신종 코로나바이러스가 전 세계로 확산되는 가운데, 여러 정부에서는 팬데믹의 심각성을 억제하기 위해 과감한 조치를 취했습니다. 한편, 권위 있는 연구 기관에서는 정부의 정책을 알리기 위해 정밀한 과학 시뮬레이션을 개발하고 있습니다. 뉴욕 타임스의 한 기사에서는 IDM(질병 모델 연구소)이라는 민간 기관의 예측 시뮬레이션이 이러한 정책을 알리는 데 활용되고 있다고 주목했습니다. 최근에는 여러 개념 지향 시뮬레이션이 고안되어 신종 코로나바이러스가 어떻게 진행되는지, 또한 확산을 막기 위해 개인이 취할 수 있는 조치는 무엇인지에 대한 정보를 시각화하여 대중이 이해하도록 제공하고 있습니다. 그중 몇 가지 흥미로운 예를 소개합니다.

  • 워싱턴 포스트에서 발표한 “사회적 거리 두기”의 영향을 보여주는 개념적 시뮬레이션
  • 정밀한 유체 시뮬레이션을 통해 자전거를 타거나 조깅을 하는 중 바이러스 확산 가능성을 보여주는 뢰번 가톨릭 대학교와 에인트호번 공과대학의 공동 연구
  • 정밀한 유체 시뮬레이션을 통해 마트 안에서 기침했을 때 바이러스가 어떻게 확산되는지 보여주는 핀란드의 연구 결과

Unity 공간 환경 시뮬레이션

연구 기관과 기업에서는 공간 환경을 효율적으로 시뮬레이션하기 위해 Unity를 사용합니다. Unity는 인터랙티브 모드로 실시간 시뮬레이션을 지원하며 오프라인 모드에서 실시간으로 진행하는 시뮬레이션보다 더욱 빠른 프레임으로 시뮬레이션할 수 있습니다. Unity에서 실제 환경을 반영한 프로젝트를 개발하고 시뮬레이션용으로 파라미터화한 다음, 클라우드에서 다양한 시뮬레이션 시나리오를 실행하면 복잡한 시스템을 전체적으로 파악하고 주요 정책이나 결정된 디자인을 설명할 수 있습니다. 몇 가지 용어를 설명하면 다음과 같습니다.

  • Unity에서 환경이란 정해진 공간과 거기 포함된 모든 오브젝트를 3D 공간에 반영한 것입니다. 이러한 오브젝트는 지정된 위치에 고정될 수도 있고, 프로그래밍한 규칙, 물리 모델, 머신러닝 알고리즘에 따라 움직이거나 변경될 수도 있습니다. 환경의 오브젝트는 간소화할 수도, 시각적으로 세밀하게 표현할 수도 있습니다.
  • 파라미터는 Unity 환경에서 식별할 수 있는 부분으로, 시뮬레이션마다 변경될 수 있습니다. Unity는 C# 기반의 프레임워크로 확장성이 뛰어납니다. 따라서 파라미터는 단일 오브젝트가 움직이는 속도를 변경하는 것처럼 아주 간단할 수도 있고, 군중의 행동을 처리하는 로직처럼 복잡할 수도 있습니다.
  • 시나리오는 시뮬레이션 과정에 걸쳐 환경에서 실행되는 파라미터 설정의 조합입니다. 일반적으로 각 시나리오에 대해 시뮬레이션을 실행하지만, 클라우드에서 이루어지는 시뮬레이션 일괄 작업에는 여러 시나리오가 포함될 수 있습니다.

마트에서 장을 보는 고객들 사이에서 일어나는 신종 코로나바이러스 확산의 예를 통해 이러한 개념을 자세히 살펴보겠습니다. 이 사례에서 시뮬레이션의 환경은 매장의 공간, 매장에 있는 건강한 고객과 감염된 고객, 바이러스 전파 규칙 등을 반영할 것입니다. 파라미터에는 수용할 수 있는 고객의 수나 운용 중인 계산대 등 매장의 규칙이 포함될 수 있습니다. 파라미터 값을 어떻게 조합하느냐에 따라 다양한 시나리오가 만들어질 것입니다. 각 시나리오를 시뮬레이션하면 동적 시스템에 따라 새로운 행동이 발생하며, 매장의 규칙이 바이러스에 노출되는 사람의 수에 어떤 영향을 미치는지 파악할 수 있게 됩니다. 이런 시뮬레이션을 통해 바이러스 노출률에 영향을 주는 변수를 이해할 수 있으므로, 매장 측에서는 방침과 절차를 개발해 이와 유사한 환경에서 바이러스의 확산을 감소시킬 수 있습니다.

시뮬레이션이 어떻게 표현되는지 알아보고, Unity 사용자 커뮤니티와 질병 모델 연구 커뮤니티에 코로나바이러스 확산 모델을 만들 새로운 방법에 대해 소개하고자 유니티에서는 간소화된 데모 프로젝트를 만들었습니다. 이 프로젝트를 진행하는 동안 IDM에서 많은 조언을 얻었고, 제공받은 코로나바이러스 전파와 관련된 기존 과학 모델은 유니티의 비전을 알리는 데 큰 도움이 되었습니다.

 

확인하기

 

Unity는 시스템 모델링에도 효과적인데, 다른 시뮬레이션 툴보다 더 긴 시간에 걸쳐 시스템을 효율적으로 시뮬레이션할 수 있기 때문입니다. 따라서 기침을 할 때 단 1초 사이에 벌어지는 단시간의 바이러스 확산 현상을 유체 역학 시뮬레이터로 몇 시간에 걸쳐 계산하고 시뮬레이션하는 대신, Unity는 간소화된 확산 행동 규칙을 사용해 50명의 사람이 10분 동안 환경을 돌아다니는 상황을 시뮬레이션할 수 있습니다. 시뮬레이션 시간을 길게 잡으면 보다 거시적인 확산 추세를 알 수 있습니다. 클라우드 일괄 시뮬레이션 기능을 활용하면 실시간보다 빠르게 계산할 수 있으며, 수십만 건 단위의 시뮬레이션을 단 몇시간 만에 일괄적으로 실행할 수도 있습니다.

전체 파라미터 공간의 클라우드 시뮬레이션

유니티에서는 시뮬레이션을 제작한 다음 여러 값을 적용한 파라미터별 표본을 만들고, 10,000건의 시뮬레이션 인스턴스를 사용해 클라우드에서 일괄 시뮬레이션 작업을 진행했습니다. 표본화한 파라미터의 모든 조합을 시뮬레이션하는 데에는 단 3시간밖에 걸리지 않았습니다. 파라미터 값의 모든 조합은 무작위성을 감안하여 시뮬레이션을 다섯 번씩 거쳤으며, 결과값의 평균을 구했습니다. 일괄 작업으로 실행한 시뮬레이션마다 건강한 고객과 바이러스에 노출된 고객의 수가 담긴 결과 파일이 만들어졌습니다. 스프레드시트에서 데이터를 후처리하고 노출된 고객 수를 총 고객 수로 나눠서 노출률을 쉽게 계산할 수 있었습니다.

요약

시뮬레이션의 결과 데이터를 사용해 매장의 방침에 따른 노출률을 개략적으로 확인할 수 있었습니다. 아래는 수용할 수 있는 고객 수에 따른 운용 중인 계산대 수의 관계를 나타낸 그래프입니다. 계산대가 하나만 운용 중일 때에는 노출률이 매우 높았으며, 특히 매장이 30~40명의 고객으로 붐빌 경우에는 계산대 근처에 정체가 발생해 더욱 심각했습니다. 계산대를 하나 더 운용할 때 접촉률이 가장 크게 감소했습니다. 매장에 20명의 고객이 있을 경우에는 계산대를 더 늘려도 효과가 평이했으나, 30~40명의 고객이 있을 때에는 최대 5대의 계산대를 운영하는 것이 노출률을 낮추는 데 도움이 되었습니다.

프로젝트 활용

이 시뮬레이션 사례는 작은 시작점일 뿐입니다. 바이러스 전파의 수학적 모델에 사용한 파라미터는 결과에 큰 영향을 미치며, 실제 데이터를 활용해 얼마든지 더 정밀하게 개발할 수 있습니다. GitHub에서 소스 코드를 포함해 프로젝트를 다운로드하여 테스트해보시기 바랍니다. Unity Simulation 및 Unity Remote Config를 기반으로 만들어진 Unity Game Simulation 베타의 무료 버전을 사용하면 여기에 소개된 데모를 실행할 수 있습니다. 또한 화이트페이퍼에서 더 많은 정보를 확인하세요.

테스트 결과를 공유해 주세요

이 프로젝트를 더 자세히 알아보고 직접 테스트해본 후 소셜 미디어에 #UnitySimulation 해시태그와 함께 결과를 공유해 주세요. 또한 프로젝트와 관련된 아이디어가 있으면 언제든 simulation@unity3d.com으로 보내 주시기 바랍니다.

4 replies on “Unity Simulation을 이용한 코로나바이러스 확산 시뮬레이션”

Hi Jelmer, we’re making this project, including its full source code, available via GitHub for anyone to experiment with. You can run the demo we’ve described here using the free tier of the Unity Game Simulation beta, which leverages Unity Simulation and Unity Remote Config under the hood.

GitHub: https://github.com/Unity-Technologies/unitysimulation-coronavirus-example
Unity Game Simulation beta link: https://unity.com/products/game-simulation

Are you interested in giving it a try?

Thanks,
James Fort (Unity Simulation Product Manager)

Comments are closed.