gpt4 book ai didi

NetLogo 高效创建任意度分布的网络

转载 作者:行者123 更新时间:2023-12-01 00:48:01 36 4
gpt4 key购买 nike

这是对 NetLogo Efficient way to create fixed number of links 的后续问题.在专注于避免嵌套的“询问”之后,我现在有了这段代码。它效率更高,但会创建太多链接。显然是逻辑错误,但我看不到。

globals
[ candidates
friends
]

to setup
clear-all
set friends 2
create-turtles 5000
set candidates turtles
make-network
end

to make-network
ask turtles
[ let new-links friends - count my-links
if new-links > 0
[ let chosen n-of min (list new-links count other candidates) other candidates
create-links-with chosen [ hide-link ]
set candidates other candidates
ask chosen [ if my-links = friends [ set candidates other candidates ] ]
]
]
end

最佳答案

不错的解决方案!请注意 other candidates实际上iterates through every agent in the agentset ,所以在有很多代理时它仍然会变慢,但比 your other question 慢因为它没有让这些代理运行代码。它的运行速度给我留下了深刻的印象!

到错误上。在这部分:
if my-links = friends [ set candidates other candidates ]
我想你忘记了 count前面my-links .

该代码仍然可以以小于 friends 的代理结束。 ,因为当它到达时,世界可能已经没有候选人了。不知道你有多少关心这个。您可以清除链接并重试,直到您获得正确的号码。只要friends应该没问题很小。

请注意,您可以通过放置 set candidates other candidates 来加快代码速度。一开始像这样:

set candidates other candidates
if new-links > 0
[ let chosen n-of min (list new-links count candidates) candidates
create-links-with chosen [ hide-link ]
ask chosen [ if my-links = friends [ set candidates other candidates ] ]
]

这样,您就不必计算 other candidates几次。

关于NetLogo 高效创建任意度分布的网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000956/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com