參考請求
方程在哪裡?增長的限制,Meadows 等人,2004
我對 2004 年最新的 World3-03 模型特別感興趣。我只是想知道是否有人知道他們實際上是如何得出他們的模型或他們的任何預測的?我找不到他們模型的任何數學描述?這本書引起了轟動,但當我沒有找到任何與模型相關的方程時,我自然會感到緊張。多謝你們!
不直接回答Model3-03,是原Model3的演進。較新的版本可在此處獲得:aru.figshare.com/articles/software/World3-03_Edited/11341697(不是 Python)。我認為 .mdl 是一個舊的 simulink (matlab) 文件,但如果您只想查看方程式,您可以查看 excel 文件(用於校準模型的歷史參數),然後在文本編輯器中載入 .mdl 文件或 vs 程式碼/崇高。
不像有一個解釋方程式的好文件那麼整潔,但我想是可行的。
如果您(或某人)想嘗試 Python 版本,以下內容可能會加快進度,尤其是在您不太熟悉 Python 的情況下。
from pyworld3 import World3 import matplotlib.pyplot as plt from pyworld3 import World3 from pyworld3.utils import plot_world_variables
選擇時間限制和步驟:
- year_min:模擬的開始年份,預設為 1900。
- year_max:模擬的結束年份,預設為 2100。
- dt:模擬的時間步長,預設為 1。
- pyear:新政策的實施日期,預設為1975年。
- iphst : 健康服務時間新政策的實施日期,預設為 1940
- 詳細:bool,可選列印資訊以進行調試。預設為假
world3 = World3(year_min = 2000,year_max = 2200, dt=1, pyear = 1975, iphst = 1960, verbose = False )
設置所有初始值:請參閱每個扇區的文件中的詳細資訊(此處註釋了一些選定的詳細資訊)。
world3.init_world3_constants(p1i=92e7, # for example initial [persons]. The default is 65e7 p2i=70e7, p3i=19e7, p4i=6e7, dcfsn=3, # desired completed family size normal. The default is 4. fcest=4000, hsid=20, ieat=3, len=42, # life expectancy normal. default is 28 lpd=20, mtfn=12, pet=4000, rlt=30, sad=20, zpgt=4000, ici=2.1e11, sci=1.44e11, iet=4000, iopcd=400,lfpf=0.75, lufdt=2, icor1=3, icor2=3, scor1=1, scor2=1, alic1=14, alic2=14, alsc1=20, alsc2=20, fioac1=0.43, fioac2=0.43, ali=0.9e9, pali=2.3e9, lfh=0.7, palt=3.2e9, pl=0.1, alai1=2, alai2=2, io70=7.9e11, lyf1=1, lyf2=1, sd=0.07, uili=8.2e6, alln=6000, uildt=10, lferti=600, ilf=600, fspd=2, sfpc=230, ppoli=2.5e7, ppol70=1.36e8, ahl70=1.5, amti=1, imti=10, imef=0.1, fipm=0.001, frpm=0.02, ppgf1=1, ppgf2=1, ppgf21=1, pptd1=20, pptd2=20, nri=1e12, nruf1=1, nruf2=1)
初始化變數並使用現有的 Json 文件(無使用預設值)
world3.init_world3_variables() # initialize all variables. world3.set_world3_table_functions(json_file=None) # get tables from a json file (None uses default).
延遲 fct 有兩種選擇:euler" 或 “odeint”。預設為 “euler”。
world3.set_world3_delay_functions(method='euler') # initialize delay functions.
執行模型
world3.run_world3()
隨心所欲地繪製細節
plot_world_variables(world3.time, [world3.nrfr, world3.iopc, world3.fpc, world3.pop, world3.ppolx], ["NRFR", "IOPC", "FPC", "POP", "PPOLX"], [[0, 1], [0, 1e3], [0, 1e3], [0, 16e9], [0, 32]], # img_background="./img/fig7-7.png", figsize=(12, 8), title="World3 Akdemy run")
輸出:
如果您覆蓋原始 Model3 結果,您可以看到它實際上是相同的。
- 我的(可以說是隨機的)修改的參數
您還可以提取單個扇區:
plot_world_variables(world3.time, [world3.ly, world3.al, world3.fpc, world3.lmf, world3.pop], ["LY", "AL", "FPC", "LMF", "POP"], [[0, 4e3], [0, 4e9], [0, 8e2], [0, 1.6], [0, 16e9]], #img_background="./img/fig7-9.png", figsize=(12, 8), title="World3 standard run - Agriculture sector")