如何在特定地区的NetLogo中隔离海龟
在NetLogo中,是否有可能创建一种围栏区域(畜栏),在这里我可以隔离n只患病的海龟(不是无限的),而正常的海龟无法进入?如何在特定地区的NetLogo中隔离海龟,netlogo,Netlogo,在NetLogo中,是否有可能创建一种围栏区域(畜栏),在这里我可以隔离n只患病的海龟(不是无限的),而正常的海龟无法进入? 如果是,我怎样才能把生病的海龟转移到那里?我怎样才能防止神智正常的海龟到达那里呢?我所做的就是分离出一堆补丁 假设原点位于帧的中心。你的max xcor是30,你的max ycor也是30 把这张地图作为参考 现在说生病的海龟必须在第一象限,健康的海龟必须在第三象限 你想问有病的海龟到脸上右上角。这将是坐标(30,30),然后他们应该检查是否在指定区域。如果没有,继续前
如果是,我怎样才能把生病的海龟转移到那里?我怎样才能防止神智正常的海龟到达那里呢?我所做的就是分离出一堆补丁 假设原点位于帧的中心。你的
max xcor
是30,你的max ycor
也是30
把这张地图作为参考
现在说生病的海龟必须在第一象限,健康的海龟必须在第三象限
你想问有病的海龟到脸上
右上角。这将是坐标(30,30),然后他们应该检查是否在指定区域。如果没有,继续前进。由于您希望它们在第一个象限周围隔离,因此您需要执行一个程序,以使它们在第一个象限内时随机移动
健康的海龟也是如此,让它们面对坐标-30,-30,然后让它们向前走随机数步,然后检查它们是否在指定区域。如果没有,继续前进
- 如何防止病龟进入病龟区
询问每只健康的海龟它们的坐标是什么,如果这些坐标非常接近病龟的区域,让它们面对另一个方向(说随机坐标)
- 如何知道它们是否非常接近病龟
如果
Ifelse [turtles.coordinateX + 5 >= 30 && turtle.coordinateY + 5 >= 30] [true][false] < This means they're close by 5 patches!
Ifelse[turtles.coordinateX+5>=30&&turtle.coordinateY+5>=30][true][false]<这意味着它们距离5个补丁很近!
当然可以在netlogo中重写
这里也有很多帮助 我认为这可能是更简单的方法
First design the quadrants during setup :
ask patches with [ pxcor <= max-pxcor and pxcor > 0 and pycor > 0]
[
set pcolor red
set quadrant 1
]
ask patches with [ pxcor >= min-pxcor and pxcor < 0 and pycor > 0]
[
set pcolor blue
set quadrant 2
]
ask patches with [ pxcor <= max-pxcor and pxcor > 0 and pycor < 0]
[
set pcolor green
set quadrant 3
]
ask patches with [ pxcor >= min-pxcor and pxcor < 0 and pycor < 0]
[
set pcolor yellow
set quadrant 4
]
Now on 'go'
to go
ask turtles with [gender = "Female"] [
let p one-of patches with [quadrant = 1]
move-to p
]
ask turtles with [gender = "Male"] [
let p one-of patches with [quadrant = 4]
move-to p
]
end
在设置过程中首先设计象限:
使用[pxcor 0和pycor>0]询问修补程序
[
设置颜色为红色
设置象限1
]
使用[pxcor>=min pxcor和pxcor<0和pycor>0]询问修补程序
[
设置颜色为蓝色
设置象限2
]
使用[pxcor 0和pycor<0]询问补丁程序
[
将颜色设置为绿色
设置象限3
]
使用[pxcor>=min pxcor和pxcor<0和pycor<0]询问修补程序
[
设置颜色为黄色
设置象限4
]
现在开始“行动”
外带
问海龟[gender=“femal”][
设p为[quadrant=1]的面片之一
转到p
]
问海龟[gender=“Male”][
设p为[quadrant=4]的面片之一
转到p
]
结束
最简单的方法是创建一个补丁集
,并将其贴上医院标签。为此,您需要:
globals [hospital]
to setup
....
set hospital patches with [pxcor < -10 and pycor < -10 ]
...
end
或者您可以跳转到不在医院的随机补丁
:
ask turtles [ move-to one-of patches with [not member? self hospital ]]
这是一个完整的模型,将这些结合在一起:
globals [hospital]
to setup
clear-all
create-turtles 20
set hospital patches with [pxcor < -10 and pycor < -10 ]
ask hospital [set pcolor red]
ask turtles
[ move-to one-of patches with [not member? self hospital]
]
end
globals[医院]
设置
清除所有
创造海龟20
使用[pxcor<-10和pycor<-10]设置医院补丁
询问医院[设置颜色为红色]
问海龟
[使用[非会员?自助医院]移动到其中一个修补程序]
]
结束
这种方法的问题在于程序必须包含大量此类测试。只需命名补丁集
globals [hospital]
to setup
clear-all
create-turtles 20
set hospital patches with [pxcor < -10 and pycor < -10 ]
ask hospital [set pcolor red]
ask turtles
[ move-to one-of patches with [not member? self hospital]
]
end