코로나 바이러스의 확산 시뮬레이션
바이러스 확산 시뮬레이션
코로나 바이러스의 수렴시기를 예측하기 위해 감염이 확대되는 모습을 시뮬레이션하는 프로그램을 MATLAB에서 만들어 보았습니다. 소스 코드 을 게시하고 있습니다. 아래에 표시된 애니메이션 gif는 실행 예이며 각 그림의 의미는 다음과 같습니다.
・왼쪽의 그림:파랑이 미감염으로, 황색이 회복(항체 획득 완료)
・중앙의 그림:황색이 보균자, 파랑이 그 이외
・우측의 그림:보균자의 수(보균자가 지나치게 늘어나면, 의료 현장이 펑크의 우려 있음)
시뮬레이션 개요
첫째, 이 시뮬레이션의 시간 단위는 일입니다. 즉, 1 단계로 하루가 경과합니다. 다음으로, 300×300의 격자를 생각해, 각 격자점에서 사람을 나타냅니다. 각 사람은 상하 좌우와 대각선 사람 (총 8 명)과 접촉합니다. 보균자와 접촉하는 사람은 일정한 확률로 접촉한 보균자로부터 바이러스가 옮겨 감염합니다. 보균자는 규정된 일수가 경과하면 회복합니다. 회복된 사람은 항체를 획득하고 다시 감염하지 않습니다. 각 파라미터는 다음과 같이 설정했습니다.
・감염 확률:3%(1일당 3%의 확률로, 접촉한 보균자로부터 감염)
・회복까지의 경과일수:10일
구현 방법
이 시뮬레이션을 구현하는 방법을 설명합니다. 우선, 각 격자점(사람)의 상태를 나타내기 위해서, 300×300의 배열(9만 인분)을 이용합니다. 배열은 정수를 저장하고 값이 0이면 그 사람은 감염되지 않았음을 나타냅니다. 감염되면 이 값을 1로 합니다. 감염 후 1일 경과할 때마다 이 값을 1씩 늘립니다. 다만, 10(회복까지의 경과일수)이 되면, 그 이상은 늘리지 않습니다. 그리고 값이 10이면 그 사람은 회복하고 항체를 획득한 사람임을 나타냅니다. 한편, 값이 1 이상 9 이하인 경우는 보균자이며, 접촉하는 미감염자에게 감염 확률에 따라 바이러스를 옮깁니다. 이 배열은 한 번에 모든 값을 업데이트합니다.
보충(경계 조건)
모두가 감염되지 않으면 아무도 감염되지 않습니다. 그래서 중앙에 한 사람 감염자를 배치합니다. 이 사람은 회복하지 않기로 결정합니다. 또, 격자의 최외주의 사람은 감염하지 않기로 합니다. 그러면 프로그램이 간단해집니다(번병이라는 테크닉이군요).
소감
이 시뮬레이션은 모든 사람이 8 명과 접촉한다고 가정하며 감염 확률과 경과 일수도 좋은 가치입니다. 이 때문에 어느 정도 현실적인지는 불분명합니다. 그러나이 시뮬레이션이 보여주는 것 중 하나는 감염이 확대되는 조건에서 바이러스 확산의 수렴에 연간 시간이 필요할 수 있다는 것입니다. 그렇다고 해서 이 소동이 수렴하기 위해서는 좀 더 시간이 걸릴지도 모릅니다. 혹은, 어느 기상 조건하에서, 바이러스가 단번에 불활성화하는 것도 생각할 수 있습니다만.
이식
MATLAB에서 구현했기 때문에 움직일 수있는 사람이 제한됩니다. 접촉자수 등의 파라미터를 바꾼 거동의 분석을 해 주었으면 한다고 생각하고 있어 이를 위해 Python이나 Julia에 이식해 주시면 기쁩니다. GPU를 사용하여 고속으로 계산할 수 있으므로 GPU 프로그래밍 연습도 될 것입니다.
Reference
이 문제에 관하여(코로나 바이러스의 확산 시뮬레이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/higo/items/2918fe4e897f4d409ed4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
첫째, 이 시뮬레이션의 시간 단위는 일입니다. 즉, 1 단계로 하루가 경과합니다. 다음으로, 300×300의 격자를 생각해, 각 격자점에서 사람을 나타냅니다. 각 사람은 상하 좌우와 대각선 사람 (총 8 명)과 접촉합니다. 보균자와 접촉하는 사람은 일정한 확률로 접촉한 보균자로부터 바이러스가 옮겨 감염합니다. 보균자는 규정된 일수가 경과하면 회복합니다. 회복된 사람은 항체를 획득하고 다시 감염하지 않습니다. 각 파라미터는 다음과 같이 설정했습니다.
・감염 확률:3%(1일당 3%의 확률로, 접촉한 보균자로부터 감염)
・회복까지의 경과일수:10일
구현 방법
이 시뮬레이션을 구현하는 방법을 설명합니다. 우선, 각 격자점(사람)의 상태를 나타내기 위해서, 300×300의 배열(9만 인분)을 이용합니다. 배열은 정수를 저장하고 값이 0이면 그 사람은 감염되지 않았음을 나타냅니다. 감염되면 이 값을 1로 합니다. 감염 후 1일 경과할 때마다 이 값을 1씩 늘립니다. 다만, 10(회복까지의 경과일수)이 되면, 그 이상은 늘리지 않습니다. 그리고 값이 10이면 그 사람은 회복하고 항체를 획득한 사람임을 나타냅니다. 한편, 값이 1 이상 9 이하인 경우는 보균자이며, 접촉하는 미감염자에게 감염 확률에 따라 바이러스를 옮깁니다. 이 배열은 한 번에 모든 값을 업데이트합니다.
보충(경계 조건)
모두가 감염되지 않으면 아무도 감염되지 않습니다. 그래서 중앙에 한 사람 감염자를 배치합니다. 이 사람은 회복하지 않기로 결정합니다. 또, 격자의 최외주의 사람은 감염하지 않기로 합니다. 그러면 프로그램이 간단해집니다(번병이라는 테크닉이군요).
소감
이 시뮬레이션은 모든 사람이 8 명과 접촉한다고 가정하며 감염 확률과 경과 일수도 좋은 가치입니다. 이 때문에 어느 정도 현실적인지는 불분명합니다. 그러나이 시뮬레이션이 보여주는 것 중 하나는 감염이 확대되는 조건에서 바이러스 확산의 수렴에 연간 시간이 필요할 수 있다는 것입니다. 그렇다고 해서 이 소동이 수렴하기 위해서는 좀 더 시간이 걸릴지도 모릅니다. 혹은, 어느 기상 조건하에서, 바이러스가 단번에 불활성화하는 것도 생각할 수 있습니다만.
이식
MATLAB에서 구현했기 때문에 움직일 수있는 사람이 제한됩니다. 접촉자수 등의 파라미터를 바꾼 거동의 분석을 해 주었으면 한다고 생각하고 있어 이를 위해 Python이나 Julia에 이식해 주시면 기쁩니다. GPU를 사용하여 고속으로 계산할 수 있으므로 GPU 프로그래밍 연습도 될 것입니다.
Reference
이 문제에 관하여(코로나 바이러스의 확산 시뮬레이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/higo/items/2918fe4e897f4d409ed4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
모두가 감염되지 않으면 아무도 감염되지 않습니다. 그래서 중앙에 한 사람 감염자를 배치합니다. 이 사람은 회복하지 않기로 결정합니다. 또, 격자의 최외주의 사람은 감염하지 않기로 합니다. 그러면 프로그램이 간단해집니다(번병이라는 테크닉이군요).
소감
이 시뮬레이션은 모든 사람이 8 명과 접촉한다고 가정하며 감염 확률과 경과 일수도 좋은 가치입니다. 이 때문에 어느 정도 현실적인지는 불분명합니다. 그러나이 시뮬레이션이 보여주는 것 중 하나는 감염이 확대되는 조건에서 바이러스 확산의 수렴에 연간 시간이 필요할 수 있다는 것입니다. 그렇다고 해서 이 소동이 수렴하기 위해서는 좀 더 시간이 걸릴지도 모릅니다. 혹은, 어느 기상 조건하에서, 바이러스가 단번에 불활성화하는 것도 생각할 수 있습니다만.
이식
MATLAB에서 구현했기 때문에 움직일 수있는 사람이 제한됩니다. 접촉자수 등의 파라미터를 바꾼 거동의 분석을 해 주었으면 한다고 생각하고 있어 이를 위해 Python이나 Julia에 이식해 주시면 기쁩니다. GPU를 사용하여 고속으로 계산할 수 있으므로 GPU 프로그래밍 연습도 될 것입니다.
Reference
이 문제에 관하여(코로나 바이러스의 확산 시뮬레이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/higo/items/2918fe4e897f4d409ed4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MATLAB에서 구현했기 때문에 움직일 수있는 사람이 제한됩니다. 접촉자수 등의 파라미터를 바꾼 거동의 분석을 해 주었으면 한다고 생각하고 있어 이를 위해 Python이나 Julia에 이식해 주시면 기쁩니다. GPU를 사용하여 고속으로 계산할 수 있으므로 GPU 프로그래밍 연습도 될 것입니다.
Reference
이 문제에 관하여(코로나 바이러스의 확산 시뮬레이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/higo/items/2918fe4e897f4d409ed4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)