我有一种乌龟,拥有另一种乌龟。 我需要做类似的事情:
set my-turtle-set breed1 "owned by" breed2 with [some-attribute = 1]
所以如果他们是品种2的乌龟所拥有的某些特征,我需要在品种龟中放入一只乌龟。
也许这是一种误解:
我已经拥有了品种1的品种2:
breed2-own [my-owner]
我可以正确地将我的品种龟放入我的品种2龟中。
问题是我需要隐藏吗?一些品种1乌龟基于谁谁使他们。 更新到示例(我删除my-turtle-set以便更清楚):
ask breed1 ("owned by" breed2 with [some-attribute = 1]) [set hidden? true]
所以海龟已经正确拥有另一个品种,我不知道,鉴于品种1 tutle,如何称呼它的ower。 因此我需要“拥有”这样的东西。
我拥有属于树(网络)的品种2。在每一步我设置属性叶?叶子真的。
现在每个品种2拥有一个品种1,而且我需要设置隐藏的每一个转折点?假脚趾不是由叶子开,而是设置隐藏?属于由叶子拥有的品种1
答案 0 :(得分:1)
如果breed2
是拥有的品种,那么这一行:
breed2-own [my-owner]
没有意义;措辞意味着关系朝着另一个方向发展。我猜你的意思是:
breed2-own [owned]
然后解决问题的一种方法是:
ask breed1 [
set hidden? any? breed2 with [owned = myself]
]
如果模型中的代理数量相当少,这应该没问题。
如果你有很多代理,那么你可能会遇到速度问题,因为在上面的代码中,每个breed1
都会通过所有breed2
代理进行自己的独立搜索。
解决这个问题的两种可能方法:
owned
变量,并使用链接表示拥有的关系。答案 1 :(得分:0)
如何给所有者品种一个turtles-own
变量来存储包含它拥有的海龟的龟集?您还可以在每个breed1
中存储对所有者的引用,如果这样可以使使用此信息的代码更简单。
breed1-own [my-owner]
breed2-own [my-owned]
...
ask breed2 with [some-attribute = 1]
[set my-owned my-turtle-set
ask my-turtle-set [set my-owner myself]
此处myself
指的是来自外部breed2
的{{1}}海龟。 (如果您使用ask
,则会引用内部self
中的breed1
乌龟。)
(除非你需要两种引用,否则不要使用这两种引用,因为让ask
和breed1
相互引用意味着当你的代码更改了一种类型的引用时,它必须改变另一种相应的参考文献。)