试图让派系分段安排? NetLogo代码建议

时间:2013-01-23 23:51:28

标签: netlogo

我制作了一个模型,可以在一个圆圈中排列派系(不同颜色的海龟)。

目前他们随机安排,想知道是否有人可以帮助我安排他们,例如,红色占据前90度,蓝色占据下一个90度等(在设置时)。

这是我的代码......

ask patch 0 0
[ ask patches in-radius ( max-pxcor * .9) with [  random-float 100 < density ]
  [ sprout 1
    [ set breed cons
      set shape "circle" 
      set faction random factions
      set heading random 360
      set size 1
    ]
  ]
]

..猜测我将不得不做360 /分数,但不知道如何表达它,如果有人可以帮助我,那将是伟大的。谢谢!

1 个答案:

答案 0 :(得分:1)

与您想要做的最接近的NetLogo原语是in-cone,它报告另一只乌龟的“视锥”中的海龟组。但是你的“馅饼切片”应该只相对于patch 0 0,而不是另一只乌龟!没问题:只需在patch 0 0制作一只临时海龟,用它来获得具有适当角度的海龟in-cone,并杀死你的临时海龟。

以下程序可以“按原样”与您的代码一起使用(只需在创建您的海龟之后从您的setup程序中调用它,就像您之前一样):

to assign-factions
  let angle 360 / factions
  foreach n-values factions [?] [
    ask patch 0 0 [ 
      sprout 1 [
        set heading ? * angle
        ask turtles in-cone max-pxcor angle [ set faction ? + 1 ]
        die
      ]
    ]
  ]
end

代码非常简单,除了可能更隐蔽的n-values。如果您愿意,可以将其替换为while循环,但它实际上只是从0计算到factions

以下是5个派系的结果:

factions