gpt4 book ai didi

netlogo - 如何使用 NetLogo 发送参数?

转载 作者:行者123 更新时间:2023-12-05 02:18:03 26 4
gpt4 key购买 nike

我对 NetLogo 很陌生,这就是我被困在这里数周的原因。

我想做的是让代理人以 4 人一组的方式组成 2 个团队。

我的计划是让一个函数保存 4 个海龟 ID,

to assign-groupmates [a1 a2 a3 a4]

并将他们分配到团队 1

assign-groupmates [a1 a2 a3 a4] =team1[]
if team1 > 4
assign-groupmates [a1 a2 a3 a4] =team2[]

我所做的是:

    to assign-groupmates [ f g h i]
let A who random f
let B who random g
let C who random h
let D who random i

ifelse f != g, g != h, h != i, i != g
[ set group-id 1
separate
align
cohere ]
[assign-groupmates [W X Y Z]
set group-id 2]
end

如何找到 turtles-id 以及如何通过参数发送它们?我使用的 turtles-id 是随机的。

谢谢。

最佳答案

有许多不同的方法可以完成您想要的,但让我从一条一般性建议开始:

不要使用 who 如果可以避免的话。

它们有一些合法用途,但很少见。它们很容易出错,它们会导致难看的代码,而且它们往往会让您以错误的方式思考您要解决的问题。

NetLogo 允许您存储对代理的直接引用,例如:

ask turtles [ set friend one-of other turtles ]

一般情况下,请改用它。

但是,在您的情况下,您可能不应该存储对代理的单独引用。由于您正在处理代理组,因此您应该使用代理集。

这里有一个建议:创建一个名为groups 的全局代理集列表。除此之外,让每个代理存储对构成其组的代理集的引用。这是实现此目的的一种方法:

globals [ groups ]
turtles-own [ my-group ]

to setup
clear-all

let number-of-groups 2
let turtles-per-group 4
create-turtles turtles-per-group * number-of-groups

set groups [] ; empty list
repeat number-of-groups [
let new-group n-of turtles-per-group turtles with [
not is-agentset? my-group
]
ask new-group [ set my-group new-group ]
set groups lput new-group groups
]

print (word "First group: " sort first groups)
print (word "Second group: " sort last groups)
; each turtle can easily access other members of its group:
ask turtles [ show sort other my-group ]

end

这段代码的优点是非常灵活。如果您想要超过两组,或每组超过四只海龟,这是一个非常容易的改变。

另一条一般性建议:如果您发现自己使用了多个变量,例如 a1a2a3 等,您是可能做错了什么。您应该改用列表和/或代理集。

关于netlogo - 如何使用 NetLogo 发送参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240262/

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