我需要将netlogo海龟排成一排

问题描述 投票:0回答:1

在 netlogo 中,我需要将一组海龟在给定的补丁行上排成一行

我想到的是

 (foreach sort-by [ [ t1 t2 ] -> [skill] of t1 > [skill] of t2 ] row-turtles (range length row-turtles) [ [t c] ->
      ask t [ setxy (min list c max-pxcor) (25 - ladder-rank) ]

(它只是将剩余的海龟堆放在最后)

有更好的方法吗?

netlogo
1个回答
1
投票

我可能会尝试模仿简单经济模型,以最简单(无双关语)的方式解决您的问题:只需将每只乌龟的

xcor
作为他们的技能即可。它会不太精确,但当你稍后阅读它时也是一个更好的代码:

to go
  ...
  ask turtles [ set xcor skill ]
  tick
end

当然,您可能需要标准化技能变量的比例以匹配世界的

min-pxcor
max-pxcor
或更改世界的维度。简单经济模型做到了后者。它不是使用以 (0,0) 为中心的标准 33x33 网格,而是使用以 (0,0) 为左下角的 500x80 网格。然而,如果您不想改变世界维度并且让技能最低的乌龟始终位于左边缘,那么标准化变量应该相当简单。

您还可以添加一些抖动以确保海龟不会重叠:

ask turtles [ 
  set xcor skill + random-float 1 - random-float 1 
]

这是简单经济模型本身的链接:

http://www.netlogoweb.org/launch#http://ccl.northwestern.edu/netlogo/models/models/IABM%20Textbook/chapter%202/Simple%20Economy.nlogo


另一种方法:

如果您想要海龟之间距离相等的漂亮连续线,您还可以使用

foreach
基元创建一个简单的
sort-on
循环:

to go
  ...
  let x min-pxcor
  foreach (sort-on [skill] turtles) [ t -> 
    ask t [
      set xcor x
      set x (x + 1)
    ]
  ]
  tick
end
`
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.