我有一个带有任意状态配置的补丁点阵,其初始设置是使用mouse-down
原语手动完成的。在运行 BehaviorSpace 时,它会从状态的随机配置开始移动任意设置。
我该如何解决?
我有一个带有任意状态配置的补丁点阵,其初始设置是使用mouse-down
原语手动完成的。在运行 BehaviorSpace 时,它会从状态的随机配置开始移动任意设置。
我该如何解决?
我真的不确定你在问什么,所以这里有两种可能性。
to setup
clear-all
if behaviorspace-run-number != 0 [ ; if BehaviorSpace is running
ask patches [
; use whatever random state you want...
set pcolor one-of [ black white ]
]
]
reset-ticks
end
另一个选项是使用 BehaviorSpace 对话框的“设置命令”:
...然后事情有点棘手。基本思想是将状态保存到文件中,然后在模型从 BehaviorSpace 运行时加载该文件并初始化状态。
在下面的示例中,我使用csv
扩展名.
请记住,pcolor
表示补丁的状态只是为了举例;它可以是任何其他类型的状态。
extensions [ csv ]
to setup
clear-all
if behaviorspace-run-number != 0 [
(foreach (sort patches) (first csv:from-file "patch-states.csv") [
ask ?1 [ set pcolor ?2 ]
])
]
reset-ticks
end
to draw ; call this from a "forever" button
if mouse-down? [
ask patch mouse-xcor mouse-ycor [ set pcolor white ]
]
end
to save ; call this from a regular button
let patch-states map [ [ pcolor ] of ? ] sort patches
(csv:to-file "patch-states.csv" (list patch-states))
end
我意识到上面代码的某些部分可能很难理解(即foreach
and的使用map
)。如果有您不理解的特定部分,请随时提出后续问题。