NetLogo,HubNet和分配Who-numbers

时间:2014-02-11 13:02:20

标签: uniqueidentifier netlogo hubnet

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

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

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

1 个答案:

答案 0 :(得分:1)

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

或者,如果您决定不使用哪些数字,那么您需要一个新的海龟变量,比如你称之为id。制作新龟时,请set id count turtles - 1。当乌龟死亡时,您需要重新分配新的身份证号码,这样就不会有任何空白。确切地说,您使用的是哪种方案?您是否需要在乌龟的旧号码与其新号码之间存在任何特定关系?我可以想到几种可能的不同方法。这是一个按编号按升序分配ID编号的编号:

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

P.S。但我不得不怀疑,所有这些编号真的有必要吗?在普通的NetLogo模型中,几乎从不需要使用谁来代替任何数字。这几乎总是一种简单的方式。为什么你觉得你需要在这个模型中使用编号?也许你确实需要它,但我至少有点怀疑。