netlogo - 保存模型运行的结果以用作未来运行的起点
问题描述
目标:我的计划是运行我的模型约 60 个滴答,并使用该运行的结果(即补丁的更改)作为所有未来运行的起点。这背后的想法是,前 60 个刻度模拟了从过去到今天的情况(没有任何政策干预)。然后,从今天开始,我想探索一系列政策方案,所有这些方案都是从相同的基本条件开始的。
问题:您是否知道是否有一种聪明的方法来评估/保存运行结果,以便我可以将它们用作未来运行的起点,或者我是否需要手动评估 60 个滴答后的条件,然后建立一个复制这些条件的替代设置按钮?
解决方案
我同意查尔斯的观点,即出口世界和进口世界应该起作用。另一种选择(参见下面的代码)是为前 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
推荐阅读
- macros - SAS 选项值到宏变量
- amazon-s3 - 将文件从 s3 下载到服务器 - Coldfusion8
- android - 构建apk时进程意外退出错误显示
- int - InfluxDB 中整数和浮点数据类型所需的空间
- postgresql - 锁定 PostgreSQL 表中的所有行
- c++ - 关于类模板和函数模板的SFINAE问题
- python-3.x - 创建 AWS lambda 函数以根据低 CPUUtilisation 关闭实例
- python - 生成所有可能的整数区间
- kubernetes - Kubernetes 集群上的 Helm 安装或升级版本失败:服务器找不到请求的资源或升级失败:没有部署的版本
- node.js - 获取节点js express中数组元素的位置