如何在netlogo中为多组代理创建区域?
我对Netlogo很陌生,这是我在论坛上的第一篇帖子。 我需要创建在栖息地或区域内移动的动物代理组。领土可以重叠。更确切地说,我需要在不同地区移动的男性特工和在其他地区移动的几组女性特工 这就是我到目前为止所做的。我只为一组女性和一组男性创建了一块领地。那不正是我需要的如何在netlogo中为多组代理创建区域?,netlogo,agents,Netlogo,Agents,我对Netlogo很陌生,这是我在论坛上的第一篇帖子。 我需要创建在栖息地或区域内移动的动物代理组。领土可以重叠。更确切地说,我需要在不同地区移动的男性特工和在其他地区移动的几组女性特工 这就是我到目前为止所做的。我只为一组女性和一组男性创建了一块领地。那不正是我需要的 globals [fragments] breed [preys prey] breed [femaletigers femaletiger] breed [kids kid] breed [maletigers
globals [fragments]
breed [preys prey]
breed [femaletigers femaletiger]
breed [kids kid]
breed [maletigers maletiger]
turtles-own
[
energy
age
gender
territory
]
to setup
clear-all
setup-fragments
;setup-habitats
setup-turtles
reset-ticks
end
to setup-fragments
ask patches[set pcolor 67]
repeat 50
[
ask one-of patches
[
set pcolor brown
repeat 30
[
let a random 360
let b random 5
ask patch-at-heading-and-distance a b
[
ask neighbors [ set pcolor brown]
set pcolor brown
]
]
]
]
end
to setup-turtles
set-default-shape femaletigers "default" ; default shape (dreieck)
create-femaletigers 10
[
set color red
set size 1.5
set energy 100
set age random 20
set gender "female"
set territory patches-in-territory patch 10 6 15
move-to one-of territory with [pcolor = 67 ] ; tigers start in territory but not on fragmented areas
]
set-default-shape maletigers "default" ; default shape (dreieck)
create-maletigers 10
[
set color blue
set size 1.5
set energy random 100
set age random 20
set gender "male"
set territory patches-in-territory patch 40 15 10
move-to one-of territory with [pcolor = 67 ] ; tigers start in territory but not on fragmented areas
]
set-default-shape preys "circle"
create-preys 100
[
move-to one-of patches with [pcolor = 67] ;preys don't start in fragmented areas
set color 114
set size 0.75
]
end
to-report patches-in-territory [Center rd]
let ptr []
ask Center [set ptr patches in-radius 20]
report ptr
end
我感谢你的帮助。
Maria欢迎来到Stack Overflow。在这里发布时,一般来说,将代码限制在证明问题所需的最低限度(请参阅MCVE指南)会更好地为您服务;例如,您可以删除您的
以报告
,猎物
繁殖,等等,以便非常清楚地了解您要解决的问题
我并没有完全按照您的代码进行操作,因为我不确定您的总体目标——相反,我给出了另一个示例,希望能够说明实现您所追求的目标的一种方法。我将展示一个例子,在这个例子中,女性的领地可以重叠,男性的领地不能重叠。使用这些变量和设置:
breed [ femaletigers femaletiger ]
breed [ maletigers maletiger ]
turtles-own [ territory ]
patches-own [ maleclaimed? ]
to setup
ca
ask patches [
set maleclaimed? false
]
create-maletigers 3 [
set shape "triangle"
set size 1.5
move-to one-of patches with [ maleclaimed? = false ]
pd
set territory patches in-radius 5 with [ maleclaimed? = false ]
ask territory [
set maleclaimed? true
]
]
create-femaletigers 3 [
set shape "square"
setxy random-xcor random-ycor
pd
set territory patches in-radius 3
hatch 1 + random 3 [
rt random 360
fd 1
]
]
reset-ticks
end
在设置中,patches own
布尔值表示男性是否已声明补丁-将其设置为false以启动,以便男性可以在设置其区域时检查补丁是否已声明。老虎会像你们一样建立自己的领地,只是雄性不会从另一只雄性中选择领地。雌性建立自己的领地,然后孵化出更多的雌性,它们将分享“母亲”的领地
要在其领土内移动,只需限制海龟,使其只能移动到其领土的一块区域-以下是一种方法:
to go
ask turtles [
let target one-of territory in-radius 1.5
if target != nobody [
face target
fd 1
]
]
tick
end
如果您想确认海龟是否停留在某个区域内,请执行以下操作:
to territory-check
ask turtles [
let col color + 2 + random 3
ask territory [
set pcolor col
]
]
end
再次感谢。当老虎繁衍后代,我希望他们的孩子创造一个新的玩具,而领土不应该重叠时,会发生什么
to move-male
ask maletigers [
let target1 one-of territory in-radius 2
if target1 != nobody [
face target1
fd 1]]
end
to reproduce-tiger
if age >= 48 and any? maletigers-on patch-here and pcolor = 67 [
hatch random 1 + random (5 - 1) [
set gender one-of [ "male" "female" ]
set breed kids
fd random-float 2 ]]
end
to search-territory-male
ask maletigers with [ territory = nobody ] [
if maleclaimed? = false [
set territory patches in-radius 18 with [ maleclaimed? = false ]
ask territory [ set maleclaimed? true ]]]
end
非常感谢你。到目前为止,这帮了大忙。但现在,猛虎组织作为“一个整体”在其领地内四处活动。我需要他们在自己的地盘上随意走动。你是说在你的模型中还是在我的例子中?在我的例子中,
femaleteers
为我独立移动。好吧,这是我的模型中的一个错误,我能够修复它。谢谢。@M.Dkmn很高兴你解决了,干得好!如果这个答案解决了您的问题,请接受它,将问题标记为已结束(点击问题左侧的小复选标记)。谢谢。但是现在一个新的问题出现了。也许你也能帮我做这个。如果一个男性或女性死亡,我怎么能宣布他们的领土为“空”?这样一个新的女性或男性可以占据它。