两个列表组合
Two lists combination
每个代理都有两个列表。他们显示 1) 他们被谁吸引以及 2) 他们被谁吸引。
我想创建一个新的设置变量,只显示那些同样被彼此吸引的代理人。等吸引是:代理人(自己)的号码在对方代理人的'attracting'列表中,对方代理人的号码在第一个代理人(自己)的'attracting'列表中。到目前为止我的代码:
if attracted != nobody [set attractinglists fput ([self] of attracted) attractinglists]
if attracted != nobody [set attrlists fput ([self] of attracting) attrlists]
set attractinglist [self] of other turtles with [member? myself attrlists]
已编辑以更好地回答下面评论中阐明的问题。
好吧,现在海龟将有一个 运行 列表,其中列出了它们曾经被吸引过的所有海龟。每一刻,海龟都会被其他三只海龟吸引。他们将这些海龟添加到他们的 "attracted-to" 列表中(如果它们不在该列表中)。接下来,海龟检查它们的 "attracted-to" 只海龟是否曾经被它们吸引过——如果是,它们会将那只海龟添加到 "reciprocal-attraction" 列表中(如果它还不存在)。这就是您所追求的吗?
turtles-own [
attracted-to
reciprocal-attraction ;;; the turtles to which this turtle is attracted
]
to setup
ca
create-turtles 10 [
set attracted-to []
set reciprocal-attraction []
]
end
to go
ask turtles [
let temp-attraction sort n-of 3 other turtles
show temp-attraction
foreach temp-attraction [
[x]->
if ( member? x attracted-to = false ) [
set attracted-to lput x attracted-to
]
]
]
ask turtles [
foreach attracted-to [
[x]->
if member? self [attracted-to] of x [
if ( member? x reciprocal-attraction = false ) [
set reciprocal-attraction lput x reciprocal-attraction
]
]
]
]
end
每个代理都有两个列表。他们显示 1) 他们被谁吸引以及 2) 他们被谁吸引。 我想创建一个新的设置变量,只显示那些同样被彼此吸引的代理人。等吸引是:代理人(自己)的号码在对方代理人的'attracting'列表中,对方代理人的号码在第一个代理人(自己)的'attracting'列表中。到目前为止我的代码:
if attracted != nobody [set attractinglists fput ([self] of attracted) attractinglists]
if attracted != nobody [set attrlists fput ([self] of attracting) attrlists]
set attractinglist [self] of other turtles with [member? myself attrlists]
已编辑以更好地回答下面评论中阐明的问题。
好吧,现在海龟将有一个 运行 列表,其中列出了它们曾经被吸引过的所有海龟。每一刻,海龟都会被其他三只海龟吸引。他们将这些海龟添加到他们的 "attracted-to" 列表中(如果它们不在该列表中)。接下来,海龟检查它们的 "attracted-to" 只海龟是否曾经被它们吸引过——如果是,它们会将那只海龟添加到 "reciprocal-attraction" 列表中(如果它还不存在)。这就是您所追求的吗?
turtles-own [
attracted-to
reciprocal-attraction ;;; the turtles to which this turtle is attracted
]
to setup
ca
create-turtles 10 [
set attracted-to []
set reciprocal-attraction []
]
end
to go
ask turtles [
let temp-attraction sort n-of 3 other turtles
show temp-attraction
foreach temp-attraction [
[x]->
if ( member? x attracted-to = false ) [
set attracted-to lput x attracted-to
]
]
]
ask turtles [
foreach attracted-to [
[x]->
if member? self [attracted-to] of x [
if ( member? x reciprocal-attraction = false ) [
set reciprocal-attraction lput x reciprocal-attraction
]
]
]
]
end