首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NetLogo中同时运行多个程序?

如何在NetLogo中同时运行多个程序?
EN

Stack Overflow用户
提问于 2014-07-02 13:14:32
回答 3查看 472关注 0票数 1

在我的模型中有不同颜色的乌龟,每个乌龟都在不同的规则下运行。我希望控制一只海龟(比方说红海龟)运动的程序与控制不同颜色海龟运动的其他程序同时运行。

EN

回答 3

Stack Overflow用户

发布于 2014-07-04 04:13:32

假设您有两个海龟过程do-reddo-blue,您希望在红海龟和蓝海龟上运行它们。然后你可以只对颜色进行ask turtles [do-something]和condition。假设您不更改颜色:

代码语言:javascript
复制
to do-something  ;; turtle proc
  if (color = red) [do-red]
  if (color = blue) [do-blue]
end

编辑:

这并不能提供真正的并发,但说真的,代理行为真正并发的频率有多高?例如,如果do-red影响其他海龟(红色或蓝色),当turtle 0turtle 1都影响只对单个影响做出反应的turtle 2时,“并发”结果是什么?再举一个例子,如果你希望每只海龟都选择一个空置的补丁来移动,而两个海龟选择相同的补丁,那么谁赢了?这就是为什么update-state解决方案不能解决并发的一般问题。当然,对于一些问题,它仍然是至关重要的。(例如,加利福尼亚州)

票数 1
EN

Stack Overflow用户

发布于 2014-07-05 01:09:21

艾伦的答案是正确的。然而,仅供参考-每只海龟(无论是红色的还是蓝色的)都将按照上述程序依次行动,而不是“同时”行动。默认情况下,这在NetLogo中是不会发生的。

但是,您可以使用一种模拟并发的形式。在用户指南的"ask-concurrent“中有一节详细解释了这个内置函数。

票数 1
EN

Stack Overflow用户

发布于 2015-02-19 03:46:30

我不认为Alan的答案是完整的。在这里,他假设do-red对蓝海龟没有影响。要模拟并发,您需要存储状态并在以后更新它。所有计算都将在给定时间步长内对存储的状态执行。

使用Alan的代码的示例:

代码语言:javascript
复制
to do-something  ;; turtle proc
  if (color = red) [do-red]
  if (color = blue) [do-blue]
  update-turtles-state
end

注意:对于给定的时间步, do-blue不应该以任何方式使用do-red的计算输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24523335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档