程序員硬核勸告:現(xiàn)在還不是出門的時(shí)候
乾明 十三 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
憋瘋了?在家宅不下去了?想出去透透氣了?
千萬(wàn)別!
雖然你對(duì)疫情已經(jīng)麻木了,覺(jué)得沒(méi)什么大礙了。
但現(xiàn)實(shí)并非如此,抗疫戰(zhàn)斗仍在繼續(xù),還沒(méi)有達(dá)到鐘南山等專家所說(shuō)的爆發(fā)期。
如果大家現(xiàn)在要是出門,真的是在疫情防控添亂!
不信?看看這個(gè)播放量達(dá)到數(shù)百萬(wàn)的仿真程序吧,它告訴我們:
如果現(xiàn)在出門逛,迎接我們的,就是疫情越來(lái)越難控制的局面。
計(jì)算機(jī)仿真程序的設(shè)定
由于是一個(gè)仿真任務(wù),所以采用的是面向?qū)ο蟮恼Z(yǔ)言——Java。
數(shù)學(xué)模型方面,則是自然界中常見(jiàn)的正態(tài)分布?(高斯分布)。
這里的人群和人的流動(dòng)意向就按照正態(tài)分布來(lái)模擬,而病毒的傳播率則是一個(gè)固定的參數(shù)。
這是一個(gè)較為簡(jiǎn)單的模型,但并不影響對(duì)傳播及控制要素的分析。
先來(lái)介紹一下用來(lái)控制傳播各個(gè)環(huán)節(jié)的常量。
初始感染數(shù)量,設(shè)置為50人:
publicstaticintORIGINAL_COUNT=50;
病毒傳播率,設(shè)置為0.8:
publicstaticfloatBROAD_RATE=0.8f;
病毒潛伏時(shí)間,設(shè)置為0(若為140則代表14天):
publicstaticfloatSHADOW_TIME=0;
醫(yī)院收治響應(yīng)時(shí)間,設(shè)置為10(同上),表示從確診到安置隔離的時(shí)間:
publicstaticintHOSPITAL_RECEIVE_TIME=10;
醫(yī)院床位,疫情剛開(kāi)始的時(shí)候由于醫(yī)院沒(méi)有隔離區(qū),設(shè)置為0:
publicstaticintBED_COUNT=0;
流動(dòng)意向平均值,設(shè)置為0.99,表示人們可以隨意流動(dòng):
publicstaticfloatu=0.99f;
現(xiàn)在忍不住要出門?會(huì)有大麻煩!
那么,先按照上述的參數(shù),也就是初始感染人數(shù)為50,醫(yī)院床位為0,流動(dòng)意向?yàn)?.99,傳播的情況就是:
病情就會(huì)慢慢傳播開(kāi)來(lái),這時(shí)候醫(yī)院就需要建立隔離區(qū),將醫(yī)院床位參數(shù)改為100,即:
publicstaticintBED_COUNT=100;
若是此時(shí),人們控制自己不隨意流動(dòng),那么疫情將會(huì)迅速被控制,甚至被消滅。
其中,下圖右側(cè)中的紅色點(diǎn)點(diǎn)代表被收治的感染者。
但疫情開(kāi)始的時(shí)候,人們肯定控制不住自己的流動(dòng),所以將該參數(shù)值調(diào)回0.99,即:
publicstaticfloatu=0.99f;
此時(shí),讓我們看下疫情擴(kuò)散情況。
醫(yī)院隔離區(qū)的床位會(huì)被馬上占滿,疫情也會(huì)將不受控制。
而此時(shí)的做法就是擴(kuò)大醫(yī)院的隔離區(qū),增加床位。
將醫(yī)院床位參數(shù)調(diào)至1000,即:
publicstaticintBED_COUNT=1000;
此時(shí)疫情也能很快被控制,這也就是我們?yōu)槭裁匆ɡ咨裆胶突鹕裆结t(yī)院。
但這時(shí),也需要考慮一下醫(yī)院接收響應(yīng)的因素,也就是一個(gè)患者從確診到被安置隔離的時(shí)間。
若是這個(gè)時(shí)間過(guò)長(zhǎng),疫情也會(huì)變得比較糟糕,我們將醫(yī)院收治響應(yīng)時(shí)間設(shè)置為100,即:
publicstaticintHOSPITAL_RECEIVE_TIME=100;
不過(guò)幸運(yùn)的是,國(guó)家現(xiàn)在在全力以赴,響應(yīng)時(shí)間足夠應(yīng)付本次疫情,而且會(huì)越來(lái)越快。
然而,還需要考慮一個(gè)非常重要的因素——新冠狀病毒潛伏期長(zhǎng)達(dá)14天!
之前的潛伏時(shí)間參數(shù)都設(shè)置為了0,現(xiàn)在設(shè)置為140(程序中為14天),即:
publicstaticfloatSHADOW_TIME=140;
此時(shí)讓我們看下疫情傳播情況。
一開(kāi)始的時(shí)候,由于潛伏期的關(guān)系,很難再人群中發(fā)現(xiàn)患者并進(jìn)行隔離。
等潛伏期一過(guò),就會(huì)出現(xiàn)前一陣子的那般爆發(fā)性的增長(zhǎng)。而此時(shí),醫(yī)院隔離區(qū)的床位也會(huì)被占滿。
一旦醫(yī)院資源被耗盡,那么疫情的傳播情況就會(huì)變得像一開(kāi)始那般糟糕。
但是!此處劃重點(diǎn)!!
若是人們能夠控制流動(dòng)意向,又會(huì)怎樣呢?
我們把流動(dòng)意向平均值這個(gè)參數(shù)調(diào)為-0.99,即:
publicstaticfloatu=-0.99f;
這個(gè)過(guò)程也反映了目前醫(yī)務(wù)工作人員與病毒斗爭(zhēng)的艱難過(guò)程,雖然時(shí)間較長(zhǎng),但最終疫情得到了很好的控制。
從這個(gè)實(shí)驗(yàn)過(guò)程,我們可以發(fā)現(xiàn),人群流動(dòng)意向這個(gè)參數(shù)貫穿始終,基本上起了主導(dǎo)作用。
雖然目前確診效率、醫(yī)院收治時(shí)間都在加快,但目前我們正處于潛伏期階段,也就是圖中哪些許多黃色的點(diǎn)點(diǎn),而這也是最危險(xiǎn)的時(shí)刻!
“傲慢才是生存的最大障礙”
這一程序,來(lái)自B站的UP主Ele實(shí)驗(yàn)室。他在自己作品的開(kāi)頭,也提到了自己為什么要做個(gè)系統(tǒng),他身邊的人已經(jīng)快按奈不住心情了:
前幾天北京下雪后,竟然有家長(zhǎng)帶著孩子出門打雪仗
家族群里有個(gè)別親戚蠢蠢欲動(dòng),開(kāi)始吆五喝六,準(zhǔn)備聚餐了
還有一個(gè)遠(yuǎn)方的親戚,要出門去參加婚禮了
可現(xiàn)在還不是出門的時(shí)候,疫情仍舊處于爆發(fā)期。他說(shuō),雖然花費(fèi)了很多功夫進(jìn)行了勸說(shuō),但效果如何,仍舊不得而知。
作為一名程序員,他決定做點(diǎn)什么。
于是就有了現(xiàn)在這個(gè)連夜打造的計(jì)算機(jī)仿真程序,希望能夠更直觀地讓大家感受下呆在家里的重要性。
他也呼吁大家,不要抱有僥幸心理。
尤其是最近幾天,立春已至,各地天氣都在轉(zhuǎn)好,往往會(huì)給人一種疫情沒(méi)什么大礙的錯(cuò)覺(jué)。
可放松警惕的時(shí)候往往是最危險(xiǎn)的時(shí)候,國(guó)家防控措施進(jìn)入常態(tài)化,最后對(duì)疫情產(chǎn)生主導(dǎo)作用的,其實(shí)還是我們每個(gè)人。
在視頻的結(jié)尾,他引用了《三體》中的一句話,再次提醒大家:
“無(wú)知和弱小不是生存的最大障礙,傲慢才是?!?/p>
文章的最后,再次感謝“Ele實(shí)驗(yàn)室”提供的授權(quán)支持。打造這一系統(tǒng)的代碼,他也已經(jīng)在GitHub上開(kāi)源了,鏈接如下:
https://github.com/KikiLetGo/VirusBroadcast/tree/master/src
希望大家能夠多點(diǎn)耐心,身體健康最重要。等疫情過(guò)去,再撒歡兒玩~