我正在Netlogo中开发一个模型。我的模型中有很多代理商。每个代理商必须拥有无线电范围。当两个代理放置在一个共同的范围区域时,它们可以相互通信并传输一些关键数据。
想象一下,我有100个具有5px范围的代理和200个具有3px范围的代理。我还有一个主要代理人在这个词中移动。此主代理也具有范围(例如7px)。当代理放置在共同的范围区域时,代理可以相互通信。当他们沟通时,他们可以传输他们的一些数据。起初只有主代理有这个关键数据,只有主代理可以传输这些重要数据。但是,在将数据传输到其他代理之后,具有此数据的其他代理也可以传输此数据。重要的条件是共同的范围。
我该怎么做?
谢谢
答案 0 :(得分:3)
您刚刚对您的问题做了一般性陈述。如果您努力实际开始实施某些事情并询问您面临的更具体的困难,您将得到更好的答案。
话虽这么说,我制作了一个或多或少符合你描述的小模型。也许它可能对你有用,作为一个起点,你可以提出单独的(更精确的)跟进问题,如果你有一些。
turtles-own [ scope data ]
to setup
clear-all
; make a big world so agents don't
; bump into one another right away:
resize-world -100 100 -100 100
set-patch-size 3
; create turtles and distribute them around:
crt 100 [ set scope 5 set data "" ]
crt 200 [ set scope 3 set data "" ]
crt 1 [ set scope 7 set data "important data" ]
ask turtles [
set size 3
setxy random-xcor random-ycor
recolor
]
end
to go
ask turtles [ travel ]
ask turtles with [ not empty? data ] [ share-info ]
ask turtles [ recolor ]
end
to travel
; you haven't specified how turtles should move
; so here's a classic "wiggle":
rt random 30
lt random 30
fd 1
end
to share-info
ask other turtles in-radius scope with [ empty? data and distance myself < scope ] [
set data [ data ] of myself
]
end
to recolor
set color ifelse-value empty? data [ grey ] [ red ]
end
修改强>
根据Seth的评论,我的第一个版本可能没有捕捉到常见范围的想法,我添加了and distance myself < scope
。这样,只有能够看到彼此的海龟才能共享信息。
我在要求海龟分享信息时也添加了with [ not empty? data ]
子句,因为没有使用空数据的海龟分享它。