成对的乌龟一起移动 netlogo
paired turtles moving together netlogo
我正在创建一个模型,我有 100 只海龟,我让它们合作。然后我希望他们保持伙伴关系并转移到我随机制作的 50 个黄色补丁中的任何一个,每个补丁只有一对。我该怎么做?
补丁的设置代码是:
to setup
clear-all
ask patches [ set pcolor 3 ]
ask n-of 50 patches [ set pcolor yellow ]
.
.
.
reset-ticks
end
伙伴关系代码是:
to find-partners
let singles turtles with [partner = nobody]
if not any? singles [ stop ]
ask singles
[ lt random 50
rt random 50
fd 1 ]
ask turtles
[
if (partner = nobody) and (any? other turtles-here with [partner = nobody])
[ set partner one-of other turtles-here with [partner = nobody]
ask partner [
set partner myself
]]]
end
一种方法是给补丁一个 patches-own
变量,例如 "occupied?",在 setup
过程中设置为 "FALSE"。为简单起见,使用像 "nested?" 这样的 turtles-own
这样它们就可以知道它们是否在它们的 "nest-site." 然后当海龟配对时,它们都可以声明一个未被占用的补丁作为它们的 "nest-site,"将其设置为已占用,然后前往该补丁。
鉴于以下变量已在您的 setup
中正确设置:
turtles-own [partner nested? nest-site ]
patches-own [occupied?]
您可以按原样保留您的 find-partners
程序和找巢程序。例如:
to find-nest
ask turtles with [ partner != nobody and nested? = false ] [
if nest-site = nobody [
set nest-site min-one-of (patches with [pcolor = yellow and occupied? = false]) [distance myself ]
ask partner [
set nest-site [nest-site] of myself
]
ask nest-site [
set occupied? true
]
]
face nest-site
fd 1
if patch-here = nest-site [
move-to nest-site
set nested? true
]
]
end
此代码中的海龟已经配对了 select 最近的未被占用的黄色斑块,选择它作为它们的巢穴,然后在接下来的刻度中走向它。 Here 是整个简单版。
我正在创建一个模型,我有 100 只海龟,我让它们合作。然后我希望他们保持伙伴关系并转移到我随机制作的 50 个黄色补丁中的任何一个,每个补丁只有一对。我该怎么做?
补丁的设置代码是:
to setup
clear-all
ask patches [ set pcolor 3 ]
ask n-of 50 patches [ set pcolor yellow ]
.
.
.
reset-ticks
end
伙伴关系代码是:
to find-partners
let singles turtles with [partner = nobody]
if not any? singles [ stop ]
ask singles
[ lt random 50
rt random 50
fd 1 ]
ask turtles
[
if (partner = nobody) and (any? other turtles-here with [partner = nobody])
[ set partner one-of other turtles-here with [partner = nobody]
ask partner [
set partner myself
]]]
end
一种方法是给补丁一个 patches-own
变量,例如 "occupied?",在 setup
过程中设置为 "FALSE"。为简单起见,使用像 "nested?" 这样的 turtles-own
这样它们就可以知道它们是否在它们的 "nest-site." 然后当海龟配对时,它们都可以声明一个未被占用的补丁作为它们的 "nest-site,"将其设置为已占用,然后前往该补丁。
鉴于以下变量已在您的 setup
中正确设置:
turtles-own [partner nested? nest-site ]
patches-own [occupied?]
您可以按原样保留您的 find-partners
程序和找巢程序。例如:
to find-nest
ask turtles with [ partner != nobody and nested? = false ] [
if nest-site = nobody [
set nest-site min-one-of (patches with [pcolor = yellow and occupied? = false]) [distance myself ]
ask partner [
set nest-site [nest-site] of myself
]
ask nest-site [
set occupied? true
]
]
face nest-site
fd 1
if patch-here = nest-site [
move-to nest-site
set nested? true
]
]
end
此代码中的海龟已经配对了 select 最近的未被占用的黄色斑块,选择它作为它们的巢穴,然后在接下来的刻度中走向它。 Here 是整个简单版。