NetLogo: creation of lattice/grid resources world without using turtles?

梦想的初衷 提交于 2019-12-22 18:24:08

问题


I would like to create a "gridded" world of resources, in specific distance from the central patch and keep distances equal between these patches. Due to calculation demand, I prefer not to use turtles to create this patchy world. I expect to create something like this:

Equally, I would like to define distance between patches as a slider tool. I was wandering to use turtle lattice walk and then turn patches to different color, but is there any way how to do that without turtles ? Thanks for any suggestions !

My not totally working exemple:

  to setup
  clear-all
  ask patches [set pcolor green]
    foreach [5 10 15] [
      repeat 9 [
        make-red-patch ?
      ]
    ]
  reset-ticks
end  

to make-red-patch [dist]
  crt 1 [
    fd dist
    rt 90
    while [pcolor = red] [
      bk dist
      rt 90
      fd 2 * dist
    ]
    set pcolor red
    die
  ]
end

回答1:


I am not exactly sure what you need, first you mentioned you don't want to use turtles and in your own answer you have problem with the patch without a turtle.

There might be another way to approach this question:

to setup
  clear-all
  ask patches with [pxcor mod Grid = 0 and pycor mod Grid = 0] [set pcolor red]
end

And these are examples with different Grid size:




回答2:


After more detailed search I found my answer here: http://netlogo-users.18673.x6.nabble.com/Setting-up-agents-in-a-grid-formation-td4864083.html

They consider to distribute turtles, not patches and then attribute patches turtles' qualities.

Here is the code:

to setup
  clear-all
  create-turtles 1
  [ let $n 0  ; actual number of turtles on this patch
    let $s 0  ; current number of turtles on a side of square pattern - 1
    set heading 0
    ask patch-here [set pcolor red]
    repeat 16   ; number of needed turtles
    [ hatch 1 jump Grid ; make one turtle and move
      set $n $n + 1 ; increment count of curent side
      ask patch-here [set pcolor red]
      if $n > $s  ; if side finished...
      [ 
        right 90 set $n 0 ; turn and reset count
        ask patch-here [set pcolor red]
        ; if headed up or down, increment side count
        if heading mod 180 = 0 [ set $s $s + 1 
          ]
      ]
    ]
   die
  ]
end

which produce:

I still don't know how to deal with 1 patch without turtle (bottom right corner), but this exemple helped me a lot ! :)



来源:https://stackoverflow.com/questions/32213757/netlogo-creation-of-lattice-grid-resources-world-without-using-turtles

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!