【问题标题】:Spacing agents in NetLogo based on territory sizeNetLogo 中基于区域大小的间距代理
【发布时间】:2013-12-12 01:09:05
【问题描述】:

我正在尝试在 NetLogo 中开发一个模型,其中动物代理将在每次启动模型时随机分布在空间中。然而,这些动物是领地的。关于如何让动物从一定大小的圆形区域开始,可以在一定程度上与其他动物重叠但不完全重叠的任何建议?下面是我开始编写的代码片段,但坦率地说,我什至不知道从哪里开始。在下面的代码中,动物在初始化时并不知道其他地区。任何帮助将不胜感激。

to setup  
    ask n-of (number-of-animals) TropForst 
    sprout-animals 1
    set territory patches in-radius ((sqrt ((territory-animals * 1000000)/ pi)) / 10)
end

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    这是一种方法: 您可以更改每种动物的中心补丁,并且可以设置您希望它们的领土重叠多少。

    breed [animals animal]
    animals-own [territory]
    to setup  
      clear-all
        create-animals number-of-animals / 2  
        [
          set color red
        set territory pathces-in-territory patch 10 10
          move-to one-of territory 
          ]
    
    
       create-animals number-of-animals / 2  
        [
          set color blue
    
          set territory pathces-in-territory patch 15 15 
          move-to one-of territory 
          ]
    
    
    end
    
    to-report pathces-in-territory [Center ]
      let ptr []
      ask Center [set ptr patches in-radius 5]
      report ptr
    end
    

    你也可以这样做:

    breed [animals animal]
    animals-own [territory]
    to setup  
      clear-all
        create-animals number-of-animals / 2  
        [
          set color red
        set territory pathces-in-territory patch 10 10 5
          move-to one-of territory 
          ]
    
    
       create-animals number-of-animals / 2  
        [
          set color blue
    
          set territory pathces-in-territory patch 15 15 10
          move-to one-of territory 
          ]
    
    
    end
    
    to-report pathces-in-territory [Center rd]
      let ptr []
      ask Center [set ptr patches in-radius rd]
      report ptr
    end
    

    因为我喜欢示例;)这是另一个可以更改每个区域的 pcolor 的示例:

    to-report pathces-in-territory [Center rd c]
      let ptr []
      ask Center [set ptr patches in-radius rd 
        ask  patches in-radius rd [set pcolor c]
        ]
      report ptr
    end
    

    你可以这样调用函数:set territory pathces-in-territory patch 10 6 15 blue *更新

    我应该稍后用 netlogo 检查它

    create-animals number-of-animals  
            [
              set color blue
              move-to one-of patches with [not any? animals-here]
              set territory patches in-radius 5 
    
              ]
    

    如果您希望为每只动物定义领土,您可以检查半径范围内是否没有海龟,例如 5,然后将领土设置为海龟周围的补丁

       create-animals number-of-animals / 2  
        [
    
          move-to one-of patches with [not any? animals in-radius 5]
          set territory pathces-in-territory patch-here 2
          let h who
          ask territory [set pcolor h + 10 ] ; just for visual clarification 
          move-to one-of territory 
          ]
    

    【讨论】:

    • 这太棒了!我仍在试图弄清楚到底发生了什么。但是,如果我没看错的话,一个领土包括多种动物?每只动物是否也有可能拥有独立的领地?对不起,如果这很明显。再次感谢!
    • 我不确定您是否需要一种动物或每个个体的领地,我使用的是每种类型而不是个人的领地,但您也可以更改它
    • 谢谢!所以我会先ask animals 然后分配一个区域?
    • 好的。我会玩一些,看看我是否做对了。再次感谢。
    • 例如,您可以这样做:使用 [not any?半径内的动物 5] 设置领土路径 - 领土补丁 - 此处 2
    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多