前言:想要寫出一篇引人入勝的文章?我們特意為您整理了公共場所傳染性疾病擴散模型設計探析范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:傳染病會對人類社會產生重大影響,危害著人類健康。歷史上出現(xiàn)過各種大大小小的傳染疾病的案例,多次給人們生活和國家?guī)韲乐氐挠绊?,諸如SARS病毒、艾滋病等。這使得對傳染病發(fā)病機理、傳染規(guī)律和防治策略研究顯得尤為重要。針對傳染病帶來的一類問題,該模型對病毒的擴散因素及擴散速率進行了分析與模擬。利用動畫形象地表現(xiàn)出病毒擴散的速率,并將病毒擴散因素分離出作為可控變量,通過輸入不同的可控因素變量值,從而觀察出不同因素下病毒擴散的快慢程度?;贘ava的擴散模型設計,展現(xiàn)了整個病毒擴散過程,為找出有效的防控措施提供基礎。
關鍵詞:傳染性疾?。粩U散模型;Java
針對2020年春節(jié)前后突然爆發(fā)病毒肺炎,簡稱“肺炎”,該病毒具有易擴散、難防控、傳播快的特點。爆發(fā)以來,迅速擴散對全球經濟、政治、文化、社會、生態(tài)等造成嚴重的打擊,同時我國迅速采取封閉隔離的有效措施,研究人員致力于病毒研究,研制疫苗,但是人們對病毒擴散模型還是了解不足。本文主要概述病毒擴散模型的設計、實現(xiàn)、測試三個方面,首先通過對病毒擴散調研分析,進行擴散模型進行設計,其次針對設計對程序的具體的算法進行完成,最后對程序產生的測試數(shù)據(jù)進行統(tǒng)計分析。
1病毒擴散模型的設計
經過調研病毒擴散主要由傳染源、人口密度、病發(fā)率、人群流動快慢引起。由于人群流動和移動是不可控,使用標準正態(tài)分布的正負模擬人流動的意愿并通過取得兩次不同的值使人進行小范圍移動,通過輸入的方式對傳染源、發(fā)病率、城市人口的規(guī)模進行模擬:傳染源:初始化病毒感染者會影響人與人之間的傳播速度;發(fā)病率:模擬人的狀態(tài)從潛伏到發(fā)病的概率,發(fā)病才會傳播病毒;城市規(guī)模:不同的城市人口不同人與人傳播不盡相同,也影響著傳播速度。最后通過設置默認的病死率,極低的治愈率和城市區(qū)域進行病毒擴散的模擬。整個擴散模型設計核心主要通過調研參數(shù)手動輸入模擬如大小城市、戴口罩、隔離等不同情況下的產生的概率,判斷人的狀態(tài)進行動畫的渲染,持續(xù)播放病毒擴散的過程。
2病毒擴散模型的實現(xiàn)
2.1病毒擴散模型的基本原理
該擴散模型的實現(xiàn)主要基于JavaGUI中的Swing組件完成,Swing包括了許多基礎的圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。Swing是一種輕量級的組件,可以在所有平臺上采用統(tǒng)一的行為。開發(fā)環(huán)境是純Java環(huán)境,Java的JDK環(huán)境可以為應用程序提供大量的API,給程序開發(fā)者提供了很好的開發(fā)環(huán)境。開發(fā)工具采用的是JetBrains公司研發(fā)的產品IDEA,搭建相關環(huán)境。IDEA開發(fā)工具為開發(fā)者提供了各種智能化設置,支持各類版本工具(git、svn)、Junit等工具。擴散模型的UI界面設計以簡潔易懂為主。主要分為四大部分進行展現(xiàn):病毒擴散演示區(qū),醫(yī)院情況展示區(qū),圖例數(shù)據(jù)顯示區(qū)以及控制因素設置區(qū),如圖1所示。其中最核心的組件是JFrame容器,在JFrame容器中可以放入不同的其他組件,可以是其他容器也可以是各種顯示組件。相關容器可以設置其容器的相關屬性。病毒擴散演示區(qū)是由若干個小圓點組成,每一個小圓點代表城市中的居民,小圓點的移動代表了居民的流動。當兩個小球的距離小于安全距離,就代表著居民處于可能被感染的狀態(tài),都會有一定概率感染病毒,感染率是由初始化手動進行設定的。小圓點處于感染狀態(tài)下,每一次的移動都有一定概率傳染給范圍內的其他人,再通過居民自身的健康屬性來重新設置其小圓點顏色,即小球的狀態(tài)。小球移動的核心算法如圖2所示。醫(yī)院情況展示區(qū)展示了當發(fā)生病毒感染后,醫(yī)院收治患者的情況,主要體現(xiàn)在醫(yī)院是否能夠及時的治療患者,是否能夠容納所有患者。結合圖例數(shù)據(jù)顯示區(qū),可以更加清晰分析出此病毒傳染的嚴重性有多大。圖例數(shù)據(jù)顯示區(qū)展現(xiàn)了經歷的時間、城市的總人口、健康人數(shù)、潛伏期人數(shù)、發(fā)病者人數(shù)、已經隔離人數(shù)、病死人數(shù)以及空余病床和急需病床數(shù)。通過這些數(shù)據(jù)指標能夠更好表現(xiàn)出病毒擴散的速率與傳播范圍。控制因素設置區(qū)主要將病毒擴散的相關因素提取出來,通過針對不同的狀況設置不同參數(shù)因素來觀察病毒擴散過程不同時段的傳播狀況。
2.2病毒擴散的算法過程
1)程序啟動時,首先加載界面UI并初始化相關默認數(shù)據(jù),主要包括動畫演示區(qū)、圖標展示區(qū)、菜單控制區(qū)。2)在輸入基本參數(shù)后,點擊開始按鈕。讀取基本參數(shù),初始城市人口基數(shù)、初始感染人數(shù)與病毒感染率,啟動動畫線程。通過設置的城市的人口基數(shù)隨機渲染人所在的位置點,并隨機在生成的所有人中取出某一個,讓其狀態(tài)為潛伏狀態(tài),如果已經是潛伏狀態(tài)或以上更嚴重的狀態(tài)繼續(xù)取下一個人,循環(huán)直到滿足設置的初始感染人數(shù)。如圖4所示。3)線程啟動后,每0.1秒刷新一次畫面,重新繪制城市中人口感染狀況,并更新圖標顯示區(qū)的數(shù)據(jù)信息。根據(jù)每個點的狀態(tài)不同從而繪制不同顏色的點,并更新點移動的位置。①如果為死亡狀態(tài)則不需要再進行處理;②如果確認為確診狀態(tài),且(世界時刻-確診時刻)大于醫(yī)院響應時間則送入醫(yī)院治療,此時繼續(xù)判斷醫(yī)院床位是否充足,如果不充足報告床位所需數(shù)量;③如果確認為確診狀態(tài)并且死亡時刻為0,隨機產生一個數(shù)值,若此數(shù)值在病死率之間則通過死亡時間方差和死亡平均值取其正態(tài)分布得出死亡時間,否則不會被病死;④如果為確診狀態(tài)或隔離狀態(tài),并且死亡時間到了世界時間,更改狀態(tài)為死亡狀態(tài)并回收床位;⑤如果為隔離狀態(tài),隨機產生一個數(shù)值,如果數(shù)值在治愈率之間則表示患者被治愈,更新狀態(tài)為治愈狀態(tài),否則狀態(tài)不變;⑥如果為潛伏狀態(tài),則通過正態(tài)分布函數(shù)求得潛伏期時長的發(fā)病時間,若此時世界時間-感染時間大于潛伏期則更新狀態(tài)為確診狀態(tài),否則狀態(tài)不變。⑦如果為健康狀態(tài),隨機產生一個數(shù)值并判斷此數(shù)值是否在感染率之間,并且與不健康狀態(tài)人之間的距離是否在一個安全距離內,如果小于安全距離則此人會被感人,否則依然為健康狀態(tài)。具體算法流程如圖4、圖5所示。4)動畫開始與暫停即是線程的喚醒與阻塞,本程序通過布爾類型實現(xiàn)同步鎖達到這一目的:程序開始時,會直接調用阻塞方法,動畫不會被渲染;當點擊開始按鈕,直接喚醒線程并阻止線程調用阻塞方法,開始渲染動畫;當點擊暫停時,會再次調用阻塞方法,停止動畫渲染。通過暫停按鈕來阻塞線程不再更新動畫,從而獲取在不同世界時間時刻此病毒的擴散的情況;通過繼續(xù)按鈕來停止阻塞線程,繼續(xù)觀察病毒的擴散情況。
3病毒擴散模型的測試
針對不同的初始感染人數(shù)與不同感染率在相同城市總人口數(shù),經歷相同時間的情況下做出以下幾組數(shù)據(jù)。如下圖所示。根據(jù)此病毒擴散模型設計進行測試的結果顯示,在不同的感染基數(shù)和不同的感染率的情況下病毒擴散的嚴重性有很大差異,因此對于傳染源的控制以及應對的藥品的研發(fā)是關鍵的要素。若在此模型演示的基礎上對人流流動加以控制,以及對醫(yī)院規(guī)模的擴大,即解決床位的緊張,藥物匱乏等問題。對防疫和病毒的擴散控制又將會得到一定的提升。
4總結
世界上的傳染病不可避免,但是盡人類的努力可以將傳染病做一個很好的防控。公共場所傳染性疾病擴散模型設計通過應用程序簡單易懂,結合動畫更加生動形象地表現(xiàn)出傳染病擴散的過程,在不同場景、不同條件下對比所擴散的程度,為人們預防控制傳染病提供了一定的理論基礎。
作者:趙安馳 朱鎮(zhèn)祥 方忠進 單位:南京信息工程大學應用技術學院