首页 > 解决方案 > 保存模型运行的结果以用作未来运行的起点

问题描述

目标:我的计划是运行我的模型约 60 个滴答,并使用该运行的结果(即补丁的更改)作为所有未来运行的起点。这背后的想法是,前 60 个刻度模拟了从过去到今天的情况(没有任何政策干预)。然后,从今天开始,我想探索一系列政策方案,所有这些方案都是从相同的基本条件开始的。

问题:您是否知道是否有一种聪明的方法来评估/保存运行结果,以便我可以将它们用作未来运行的起点,或者我是否需要手动评估 60 个滴答后的条件,然后建立一个复制这些条件的替代设置按钮?

标签: netlogo

解决方案


我同意查尔斯的观点,即出口世界和进口世界应该起作用。另一种选择(参见下面的代码)是为前 60 个刻度的替代设置使用固定随机种子,然后更改为特定于运行的随机种子,这也适用于基于 Web 的运行。(我怀疑 export-world 在网络上不起作用。)

这是在飞行中更改随机种子的示例。确保在定义新的随机种子之前保存随机种子,否则一切都将永远相同!加载此代码并多次点击设置和运行按钮,您可以确认它正在工作。

globals [ variable-random-seed   fixed-ticks]
to setup
  clear-all
  set variable-random-seed random 999999999  ;; nine nines works
  random-seed 123456789 ;;  any fixed number to use for low ticks
  set fixed-ticks 10     ;;  or 60 in your case
  print " ----------- fixed ------------- ===== -------- varies by run ----------- "
  reset-ticks
end
to go
  if ticks > 20 [ print "\n" stop ]
  write random 100
  if  ticks = fixed-ticks  [ write "=====" random-seed variable-random-seed ]
  tick
end
 
 Sample output of three runs

------------ 固定 ------------- ===== -------- 因运行而异


66 68 42 59 14 1 34 20 3 15 86 "=====" 1 80 87 54 85 51 37 53 94 69

------------ 固定 ------------- ===== -------- 因运行而异


66 68 42 59 14 1 34 20 3 15 86 "=====" 94 72 60 26 18 90 65 50 65 18

------------ 固定 ------------- ===== -------- 因运行而异


66 68 42 59 14 1 34 20 3 15 86 "=====" 23 93 75 68 17 44 17 30 99 94


推荐阅读