NetLogo在特定条件下继续搜索

NetLogo在特定条件下继续搜索,netlogo,Netlogo,我在模拟雌性动物从它们母亲的领地上散开,寻找它们自己的领地。基本上,她们需要找到其他女性领地未占用的区域。补丁有一个变量owner fem,用于识别它属于哪个女性。理想情况下,我想要女性: 移动到补丁 在该斑块周围的某个半径范围内搜索任何其他区域,并在该半径范围内搜索是否有其他女性的区域 移动到另一个修补程序以再次启动搜索过程。下面是到目前为止我所拥有的,但我认为我没有正确地使用radius中的 我不确定最好的方法是告诉雌性继续搜索,直到满足条件。任何帮助都将不胜感激 to female-dis

我在模拟雌性动物从它们母亲的领地上散开,寻找它们自己的领地。基本上,她们需要找到其他女性领地未占用的区域。补丁有一个变量
owner fem
,用于识别它属于哪个女性。理想情况下,我想要女性:

  • 移动到补丁

  • 在该斑块周围的某个半径范围内搜索任何其他区域,并在该半径范围内搜索是否有其他女性的区域

  • 移动到另一个修补程序以再次启动搜索过程。下面是到目前为止我所拥有的,但我认为我没有正确地使用radius中的

  • 我不确定最好的方法是告诉雌性继续搜索,直到满足条件。任何帮助都将不胜感激

    to female-disperse
      move-to one-of patches with [owner-fem = nobody]
      if [owner-fem] of patches in-radius 3 != nobody
        [
          move-to one-of patches with [owner-fem = nobody]
        ]
    end
    
    如果您想在“一次性”中使用它,您可以让他们直接移动到合适的补丁:

    to female-disperse
      move-to one-of patches with [
        not any? patches in-radius 3 with [owner-fem != nobody]
      ]
    end
    
    请注意,
    patches
    包括海龟所在的补丁,因此不需要单独的
    移动到[owner fem=nobody]的补丁之一

    我不知道你的模型需要什么,但如果我是你,我可能会试着让它们慢慢散开。下面是另一个版本,您可以从
    go
    过程(或任何其他“永远”运行的过程)调用该版本:


    在这个版本中,所有不在自己拥有的补丁上的雌性都会移动到相邻的补丁之一。然后检查新补丁是否合适。如果是,他们就成为它的主人。如果不是,他们现在就到此为止:他们将在下一次迭代中继续搜索
    go
    。你不必这样做;它可能只是沿着这些线松散的东西。

    这正是我所需要的。谢谢
    to female-disperse
      ask females with [owner-fem != self ] [
        move-to one-of neighbors ; or however you want them to move
        if not any? patches in-radius 3 with [owner-fem != nobody] [
          set owner-fem self
        ]
      ]
    end