gpt4 book ai didi

hyperlink - NETLOGO:制作具有精确链接数的网络

转载 作者:行者123 更新时间:2023-12-02 01:32:15 25 4
gpt4 key购买 nike

我需要在代理将与链接连接时进行网络连接,并且我希望它能够使每个代理发出确切数量(可变)的链接。比方说,我想要从每个代理到另一个代理的 3 个链接。不多也不少。我试图使用此代码:

let num-links (links * number) / 2 
while [count links < num-links ]
[
ask one-of turtles
[
let choice (min-one-of (other turtles with [not link-neighbor? myself])
[distance myself])
if choice != nobody [ create-link-with choice ]
]
]

其中“数字”是节点数,“链接”是我想从每个代理中获得的链接数-但不幸的是,这段代码有效,因此“链接”实际上只是节点的平均度数。因此,如果我想要 3 个链接,我可以获得所有代理(除了两个),其中包含 3 个链接,但其中一个只有 1 个链接,另外 5 个(平均为 3 个)。有什么办法怎么做。

有没有办法做到这一点,以便每个“链接”实际上是两个有向链接,一个从节点出发,另一个到节点?

还有最后一个问题。我想给这个链接一个变量,但我需要这样做,以便来自每个代理的这些变量的总和正好是 100(以百分比表示)。

有什么帮助吗?非常感谢。

最佳答案

以下是我为小型网络创建固定度网络的方法(易于理解)

to make-legal
create-turtles 100 [setxy random-xcor random-ycor]
let target-degree 5
while [ min [ count my-links ] of turtles < target-degree ]
[ ask links [die]
makeNW-Lattice target-degree
]
end

to makeNW-Lattice [DD]
ask turtles
[ let needed DD - count my-links
if needed > 0
[ let candidates other turtles with [ count my-links < DD ]
create-links-with n-of min (list needed count candidates) candidates
]
]
end

NetLogo Efficient way to create fixed number of links为更大的网络提供更有效的方法。

请针对不同的问题提出不同的问题

更新 确保所有节点都有所需的度数,以回应评论

基于以下代码,基本生成器做了一个 legal网络的时间略低于 50%。因此,我只是将原始代码放入 while 循环中,如果不合法则重新生成。对于较大的网络,这不是一个好的解决方案,但它是一个合理的黑客。
to setup
let mins (list 0 0 0 0 0 0)
repeat 100
[ ask turtles [die]
ask links [die]
makeNW-lattice
let this-min min [ count my-links ] of turtles
set mins replace-item this-min mins (item this-min mins + 1)
]
print mins
end

关于hyperlink - NETLOGO:制作具有精确链接数的网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33467861/

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