Unity を検索

コロナウイルスの拡散をシミュレーションする新しい方法を探る

取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

コンピューターシミュレーションは、感染症の研究を含む多くの分野で、研究者、エンジニア、問題解決に取り組む人たち、あるいは政策立案者によって何十年にもわたって使用されてきました。Unity Simulation は、大規模で複雑で不確実なシステムを全体的に研究するために、クラウド上でスケールアップできる特殊なリアルタイムシミュレーションを可能にします。架空の食料品店でのコロナウイルスの蔓延をシミュレーションするためのシンプルなデモプロジェクトを構築し、店舗の方針が暴露率に与える影響を調査しました。このプロジェクトの完全なソースコードを GitHub で公開し、誰でも拡張できるようにしました。

免責事項:この記事で言及されているプロジェクト(関連するすべての情報とデータを含む)は、「現状のまま」かつ「提供可能な範囲」で提供されます。Unity Technologies とその関連会社は、プロジェクトまたはその使用に関して、いかなる種類の表明や保証も行いません。詳しくは、ライセンスの各条項をご覧ください。

前述の内容の一般性を制限することなく、私たちは疫学の専門家や医師ではないということを強調させていただきます。このプロジェクトのいかなる内容も、医学的またはその他のガイダンスやアドバイスとして受け取れるものではありませんし、受け取られるべきものでもありません。これは単純化されたルールに基づく概念モデルです。また、科学的検証を経たものでもありません。新型コロナウイルス、感染の広がり方、感染を避けるための手順、その他健康関連のガイダンスやアドバイスについては、適切な医療専門家にご相談ください。

ここをクリックすると、食料品店のシミュレーション(WebGL)をお試しいただけます

シミュレーションとコロナウイルス

コンピューターシミュレーションは、感染症の研究を含む多くの分野で、研究者、エンジニア、問題解決に取り組む人たち、あるいは政策立案者によって何十年にもわたって使用されてきました。複雑で不確実な条件の下で何が起こるかを予測するという問題に対する基本的な解決策です。シミュレーションは感染症の研究において大きな役割を果たしており、腺ペストから HIV・エイズまで、様々な病気に適用されています。研究者はまず、現場から関連するデータを収集することからプロセスを開始します。そして、そのデータを用いて、理論的かつヒューリスティックな情報に基づいた数理モデルを開発します。次に、この数理モデルをシミュレーションツールに組み込み、人口密度、暴露因子などの様々な入力パラメーターからウイルスの拡散などの結果を計算します。最終的には、シミュレーションにより、大局的な観察や What-If 型の研究が可能となり、現実世界の状況を概念的に理解し、専門家が困難な政策決定を行う際に情報を提供することができるようになります。

新型コロナウイルスの世界中な流行を受けて、各国政府がパンデミックの深刻度を抑えるための抜本的な対策を講じています。一方、主要な研究機関では、政府の政策に情報を提供するために、厳密な科学的シミュレーションを開発しています。ニューヨーク・タイムズ紙の記事では、民間機関である疾病モデリング研究所(The Institute for Disease Modeling; IDM)が政策に役立てるために作成している予測の一部が紹介されています。また、最近デザインされた複数の概念的な方面を指向したシミュレーションは、新型コロナウイルスがどのように広がり、またどのような行動を取ればその拡散を抑えることができるかをビジュアライズし、一般の読者にもわかりやすく情報を伝えています。以下に挙げるものは、私たちが見つけた興味深い事例の一部です。

  • ワシントン・ポスト紙が発表した「社会的距離」の影響を示す概念的シミュレーション
  • 詳細な流体シミュレーションを用いて、自転車やランニングの状況下での広がりの可能性を示す、ルーヴェン・カトリック大学とアイントホーフェン工科大学の共同研究
  • 詳細な流体シミュレーションを用いて、食料品店で咳がどのように広がるかを示すフィンランドの研究

Unity で空間環境をシミュレート

研究者や企業は、空間環境を効率的にシミュレーションするために Unity を使用しています。Unity はインタラクティブモードでのリアルタイムシミュレーションを可能にし、オフラインモードではリアルタイムよりもさらに高速にフレームをシミュレーションすることができます。実世界の環境を表すプロジェクトを Unity で開発し、シミュレーションのためにそれらのプロジェクトをパラメーター化し、多くのシミュレーションされたシナリオをクラウドで実行することで、複雑なシステムを全体的に理解し、重要な政策や設計の意思決定に情報を提供することができます。まず、用語をいくつか定義しましょう。

  • Unity の環境とは、定義された空間とそれに含まれるすべてのオブジェクトの 3D 空間表現です。これらのオブジェクトは位置が固定されている場合もあれば、プログラムされたルール、物理モデル、または機械学習アルゴリズムに従って移動したり変化したりする場合もあります。環境内のオブジェクトは、単純化されている場合もあれば、視覚的に非常に作り込まれたものである場合もあります。
  • パラメーターとは、Unity 環境の特定の側面のことで、シミュレーション間で変更することができます。Unity は C# をベースにした非常に拡張性の高いフレームワークであるため、パラメーターは、単一のオブジェクトの動きの速度を変更するような非常に単純なものから、群集の動作を処理するロジックのように複雑なものまで、さまざまなものがあります。
  • シナリオとは、シミュレーションの過程で環境内で実行されるパラメーター設定の組み合わせです。各シミュレーションは通常、1 つのシナリオに対応します。クラウド内のシミュレーションのバッチジョブは多数のシナリオで構成することもできます。

関連しうるユースケースを通してこれらの定義について確認しましょう。食料品店の買い物客によるシステム内での新型コロナウイルスの拡散を例にとります。このようなシミュレーションの環境とは「店舗の空間的表現」「健康な人と感染した人が混在する買い物客の集団」および「ウイルス感染のルール」となります。パラメーターには、買い物客の許容数や開いているレジの数など、店舗のルールが含まれます。これらのパラメーター値の各組み合わせが、個別のシナリオを構成します。各シナリオがシミュレートされると、動的システムの出現行動が再現され、店舗のルールがどのようにしてウイルスにさらされる個人の数を増やしたり減らしたりするかが明らかになります。このようなシミュレーションを行うことで、曝露率に影響を与える変数についての有益な知見を得ることができ、店舗の経営者は、そのような環境での病気の蔓延を減らすための方針や手順を策定することができるようになります。

私たちのチームは、このようなシミュレーションがどのようなものになるかを説明し、Unity のユーザーコミュニティや疾患モデリングのコミュニティがコロナウイルスの拡散をモデル化する新しい方法について考えるきっかけになるように、簡略化されたデモプロジェクトを作成しました。IDM は、このプロジェクトの開発の間、私たちのチームを指導してくれ、私たちのビジョンにとって有益な情報となる、コロナウイルスの伝播に関する既存の科学的モデルをいくつか紹介してくれました。

 

デモを見てみる

 

Unity がシステムモデリングに適しているのは、他のタイプのシミュレーションツールに比べて、より長い時間スケールで効率的にシステムをシミュレーションできるからです。つまり、流体力学シミュレーターで何時間もの計算を使って 1 秒間にウイルスが蔓延する短い咳のイベントをシミュレーションする代わりに、Unity では、単純化された拡散ダイナミクスを使って 10 分で環境内を移動する 50 人の集団をシミュレーションすることができます。より長い時間をシミュレーションすることで、より大規模な拡散の傾向が明らかになります。バッチクラウドシミュレーション機能を活用することで、シミュレーションをリアルタイムよりも高速に計算し、数万から数十万のシナリオを数時間のうちにバッチで実行することができます。

パラメーター空間全体のクラウドシミュレーション

シミュレーションを構築した後、各パラメーターを複数の値でサンプリングし、10,000 個のシミュレーションインスタンスを使用してクラウド上でバッチシミュレーションジョブを実行して、サンプリングしたパラメーター値のすべての組み合わせをテストしました。このテストにかかった時間はわずか 3 時間です。各パラメーター値の組み合わせは、ランダム性と出力の平均化を考慮して、5 回シミュレートしました。このバッチジョブが実行されるたびに、健康な買い物客の数とウイルスに曝露した買い物客の数を含む結果ファイルが作成されました。そして、スプレッドシートでデータを後処理することで、ウイルスに曝露した買い物客の数を買い物客の総数で割った値として曝露率を簡単に計算することができました。

まとめ

すべてのシミュレーションの実行から得られた出力データを使用して、店舗の方針決定の関数として、曝露率に関する概略をまとめることができました。下の図は、買い物客の許容数をいろいろな値に変えて、開いているレジの数と曝露率との関係を示したものです。レジが 1 つしか開いていない場合、特に店内に 30 人または 40 人の買い物客がいる場合はレジ待ちの行列が出来てしまうことから、曝露率は非常に高くなります。また、開いているレジを 1 つから 2 つにしたときの曝露率の下げ幅が最も大きくなりました。店舗の買い物客が 20 人の場合、それ以上レジを開けても曝露率を抑える効果は半減してしまいますが、店舗の買い物客が 30 人または 40 人の場合は、開いているレジを 5 つに増やしてもなお、曝露率を下げる効果が見られました。

このプロジェクトを独自に拡張する

このシミュレーションはあくまでも出発点に過ぎません。ウイルス伝播の数学モデルに使用しているパラメーターは結果に大きな影響を与えるため、実際のデータを使って厳密に決定される必要があります。私たちはこのプロジェクトを、ソースコードを含めて GitHub で公開し、誰でも実験できるようにしています。ここで紹介したデモは、Unity Game Simulation ベータ版の無料版を使って実行することができます(Unity Game Simulation は Unity SimulationUnity Remote Config を基盤としています)。ホワイトペーパーでは、その他にも多くの情報リソースを提供しています。

つながり続けよう

この記事をお読みになり、プロジェクトに関心を持たれた方は、ぜひこのプロジェクトをご覧になり、独自に拡張してみてください。そして、何か試されたらハッシュタグ「#UnitySimulation」をつけて、ソーシャルメディアでその結果をシェアしてください。また、プロジェクトのアイデアがあれば、simulation@unity3d.com まで直接お問い合わせください。

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック