日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Netlogo实现病毒传播对经济的影响分析

發布時間:2023/12/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Netlogo实现病毒传播对经济的影响分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用Netlogo實現病毒傳播對經濟的影響分析

  • 一、基本考慮
  • 二、涉及要素
  • 三、計算思路
  • 四、程序設計
    • (一)界面設計
    • (二)具體代碼
  • 五、結果分析
    • (一)“柵欄”模式
    • (二)“放羊”模式
  • 六、后續改進思路

一、基本考慮

新冠病毒的傳播,已經形成了全球大流行。而針對新冠病毒的防治,各國政府的態度和策略在一開始區別是很大的。有些是舉全國之力、以雷霆萬鈞之勢抗擊疫情,而有些則由于擔憂大規模的隔離和禁足對經濟產生的不良影響,一直猶豫不決。為了更直觀的展示不同策略對經濟可能產生的影響,需要定量化研究新冠疫情下不同策略的具體效果。

針對上面的需求,我們利用netlogo對相關問題進行建模。具體來說,我們考慮兩種策略。一種是當新冠發生后,采取隔離和全員禁足的方式,我們稱之為“柵欄”模式;另一種是不做隔離和禁足,人們還是按照之前的方式進行生活,我們稱之為“放羊”模式。

二、涉及要素

具體在病毒傳播方面,考慮的因素有以下幾點:

  • 1.初始人數:可設置的范圍是0~10000,模擬一個區域、城市或國家的全部人口;
  • 2.初始感染率:這里是一個假設的值,即程序開始運行時,城市中已感染的人數;(我們在這里建設為1%)
  • 3.感染率(無防護措施):這個值用來控制健康人員在沒有任何防護措施下,與感染者接觸后患病的幾率;(我們在這里假設為80%)
  • 4.感染率(有防護措施):這個值用來控制健康人員在沒有任何防護措施下,與感染者接觸后患病的幾率;(我們在這里假設為40%)
  • 5.死亡率:這是每天的死亡人數,占所有的患病人的比率;(我們在這里假設為千分之4)
  • 6.平均癥狀出現時間:這指的是每個感染者從感染開始到出現明顯癥狀的時間;(我們在這里假設為7天)
  • 7.平均治愈時間:這個值指的是每個感染者從進入醫院開始,到治愈出院的時間;(我們在這里假設為20天)

在與經濟相關方面,我們考慮兩個因素:

  • 1.平均每日GDP:這個值指的是正常活動的人,每天創造的GDP價值;(我們在這里假設為2)
  • 2.平均治療花銷:這個值指的是接受治療的人,每天的花費;(我們在這里假設為9)

三、計算思路

在病毒傳播方面,采用簡化的模型,人與人之間的接觸是隨機事件,當感染者與正常人接觸后,根據設定的感染率來判定正常人是否受到感染;感染者在感染超過7天后,被放倒醫院內,醫院里的人員不再互相感染;每天按照死亡率隨機的從感染者中選擇死亡的人員;在醫院治愈的病人,超過20天后認為治愈出院,治愈后的人默認具備免疫能力,不再感染。

在經濟方面,正常活動的人員每天按照設定的“平均每日GDP”產生GDP,并計入全部的GDP中;在醫院救治的人員每天按照“平均治療花銷”消費資金,并計入全部治療花銷中。

在上面假設的“柵欄”模式中,我們的agent在有病患期間都不活動,即不產生任何GDP,在確認沒有病患后繼續活動;而“放羊”模式則是在整個期間人員都不停止活動,因此會一直產生GDP。
我們的目的就是比照在同樣運行半年時間后,“柵欄”模式創造的價值(即總GDP減去總花銷),與“放羊”模式創造的價值兩者到底哪個更高。

四、程序設計

我們的程序使用的是最新的Netlogo 6.1.1,可以從以下地址下載:
http://ccl.northwestern.edu/netlogo/download.shtml
使用netlogo進行開發其實還是很簡單的,軟件本身就給提供了豐富的模型庫示例可以參考,同時社區中還有很多做的很棒的資源。但netlogo語言和我們用的C#、Python都不太一樣,所以如果沒有其他語言基礎的,相對還更好上手一些。關于netlogo的學習,推薦看它官方提供的用戶手冊,個人感覺就很好用了。

(一)界面設計

我們的程序界面如下:

其中左面是我們前面提到的,在程序運行中相關的各種變量。中間是我們agent運行的窗口,右面是兩個統計窗口。
Netlogo的界面搭建還是很簡單的,它提供了成型的控件,選擇好后直接添加即可。這里要注意的是,控件中定義到的變量是可以直接在程序中使用的,所以一定不要用中文,否則后面寫代碼就要出問題了。
以我們其中的一個參數為例:

這是一個滑塊變量,可以在程序中隨時調整取值,看程序也可以看出,這個是當做一個全局變量直接使用的。
再比如下面這個統計框的設置:

這是在程序運行中,對相關變量進行統計的,可以自己定義畫筆,按照程序的步長進行更新,按照什么條件統計哪些數據需要在更新命令中明確說明。

(二)具體代碼

在代碼中需要注意的有以下幾點:

  • 一是程序的運行需要有初始的setup和循環運行的go,這是一般的netlogo程序都包含的兩部分,通過設定響應的按鈕來實現,在代碼中要具體寫程序邏輯;
  • 二是程序中的函數都是以“to 函數名”開始,以“end”來結尾;
  • 三是netlogo中最重要的就是“海龜”和“瓦片”兩個概念,可以簡單理解海龜就是agent,瓦片就是環境;對于這兩個對象在netlogo中的具體相關參數和函數,可以自行查詢手冊;
  • 四是除了系統給定的參數外,我們還可以自行設定參數,例如海龜的相關參數,使用“turtles-own[]”來進行設定,全局變量使用“globals[]”來設定;同時還可以自定義不同的瓦片區域,利用瓦片的坐標范圍來定義即可;
  • 五是在撰寫代碼中,還有一些需要注意的小地方,比如循環turtles時,die后面的不會執行;move-to是把某個turtles移動到指定的某個瓦片區域中;運算符和變量直接一定要用空格;統計選取等帶條件時一定要用關鍵字with等。

具體代碼較長,在這就不貼了,如果需要可以聯系我!

五、結果分析

根據我們程序的運行后,相關結果如下所示:

(一)“柵欄”模式


可以看到,在“柵欄”模式下,總的患病人數大概在250~350之間;GDP的變化在隔離期內是沒有增長的,總的GDP大致在2570000左右,而治療費用的花銷不到整個GDP的10%。

(二)“放羊”模式


在“放羊”模式下,總的患病人數達到了驚人的6000多人,占總人口的60%還多;GDP是一直在增長的,總量在2960000左右,而治療花銷的費用接近GDP總量的50%,也就是說產生的GDP有一半都用在治療上了。
通過上述實驗可以明顯看出,雖然“放羊”模式產生的GDP總量的確略高于“柵欄”模式,但扣除花銷后,產生的社會價值則遠遠低于“柵欄”模式。更不用說“放羊”模式中遠遠高于“柵欄”模式中的死亡人數了,畢竟生命的價值是絕不能用GDP來衡量的。

六、后續改進思路

雖然程序體現出了兩種模式對經濟影響的巨大差別。但其中的模型還有很多需要商榷的地方。
例如 經濟模型的缺失(本程序中其實是沒有經濟模型的,特別是疫情對于不同產業結構、行業特點等經濟影響的仿真),傳播模型的粗陋(本程序中agent采用的是完全隨機游走,這和實際生活中人的活動也是不一致的,這就導致很難模擬出社區傳播這一特性),以及 二次傳播的不合理(我們程序中默認的是治愈后不會再感染,而新冠對已治愈者是存在二次感染的)等等。這些都是后續需要持續改進的地方。

請從我的Github上進行代碼下載https://github.com/samurasun/netlogo

總結

以上是生活随笔為你收集整理的用Netlogo实现病毒传播对经济的影响分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。