1

所以在我目前的 HubNet 应用程序中,海龟被组织成各种图形结构。两个客户端是否能看到对方取决于图中对应的海龟是否相连。

我目前基于海龟编号构建图表,因此假设如果在任何给定点有 n 个海龟,这些海龟的编号从 0 到 n-1。我希望这可能会导致问题,例如,如果客户端连接,然后断开然后重新连接,因为这(如果我没记错的话)会给该客户端一个新的 who-number(并且旧号码不会被重用)。所以我想知道是否有办法确保海龟按照我想要的方式编号?

删除所有人然后重置谁的号码将是一个(坏的)解决方案。您能否通过提出更好的解决方案或如何实施糟糕的解决方案来帮助我?

4

1 回答 1

1

如果你想使用 who 号码,你需要隐藏海龟而不是杀死它们。如果这让事情变得尴尬,因为你发现自己需要参考 eg turtles with [not hidden?],然后考虑制作两个品种,称它们为activesinactives或类似的东西,然后在隐藏乌龟时这样做hide-turtle set breed inactives。然后,您总是可以将活动海龟集称为actives。当有人加入模拟时,如果有的话,给他们一只不活动的乌龟,让它去做show-turtle set breed actives

或者,如果您决定不使用 who 号码,您将需要一个新的 turtle 变量,比如说您调用它id。当你制作一只新乌龟时,做set id count turtles - 1。当乌龟死了,你需要重新分配新的身份证号码,这样就不会再有空隙了。你使用什么方案真的很重要吗?你需要在乌龟的旧号码和它的新号码之间有任何特殊的关系吗?我可以想到几种可能的不同方法。这是一个按 who 编号升序分配 id 编号的方法:

let whos sort [who] of turtles
ask turtles [ set id position who whos ]

PS但我不得不怀疑,所有这些编号真的有必要吗?在普通的 NetLogo 模型中,几乎不需要使用 who 号码来处理任何事情。几乎总是有更简单的方法。为什么你觉得你需要在这个模型中使用编号?也许你确实需要它,但我至少有点怀疑。

于 2014-02-12T04:12:22.290 回答