首页 > 解决方案 > 我怎样才能在 Netlogo 中推迟一个动作?

问题描述

我正在尝试对补丁进行建模(代表环境)。当它的资源耗尽时,它们会以一个滴答的延迟(滴答+ 1)重新生成。我怎样才能做到这一点?

这个想法是这样的:

if resources-amount = 0 
(tick + 1) ask patches [set resources-amount (resource-amount + 1 )]

标签: delaynetlogopatch

解决方案


您可以添加一个 patch-own 变量regrow-time。它将自动初始化为 0。如果补丁丢失了所有资源(在此滴答期间),您可以将 设置为regrow-time您想要的滴答数,例如 4 滴答后:

  ask patches 
  [
    loose-resource
    if resources-amount = 0 and regrow-time = 0
    [
      set regrow-time ticks + 4
    ]
  ]

然后你可以询问来的补丁,regrow-time让他们获得资源并将计时器重置为0,以便程序最终可以重新开始。

  ask patches with [regrow-time = ticks]
  [
    gain-resource
    set regrow-time 0
  ]

推荐阅读