1

我有一个带有任意状态配置的补丁点阵,其初始设置是使用mouse-down原语手动完成的。在运行 BehaviorSpace 时,它​​会从状态的随机配置开始移动任意设置。

我该如何解决?

4

1 回答 1

1

我真的不确定你在问什么,所以这里有两种可能性。

如果您希望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 实验...

...然后事情有点棘手。基本思想是将状态保存到文件中,然后在模型从 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

我意识到上面代码的某些部分可能很难理解(即foreachand的使用map)。如果有您不理解的特定部分,请随时提出后续问题。

于 2016-07-22T16:16:58.370 回答