如何在特定地区的NetLogo中隔离海龟

如何在特定地区的NetLogo中隔离海龟,netlogo,Netlogo,在NetLogo中,是否有可能创建一种围栏区域(畜栏),在这里我可以隔离n只患病的海龟(不是无限的),而正常的海龟无法进入? 如果是,我怎样才能把生病的海龟转移到那里?我怎样才能防止神智正常的海龟到达那里呢?我所做的就是分离出一堆补丁 假设原点位于帧的中心。你的max xcor是30,你的max ycor也是30 把这张地图作为参考 现在说生病的海龟必须在第一象限,健康的海龟必须在第三象限 你想问有病的海龟到脸上右上角。这将是坐标(30,30),然后他们应该检查是否在指定区域。如果没有,继续前

在NetLogo中,是否有可能创建一种围栏区域(畜栏),在这里我可以隔离n只患病的海龟(不是无限的),而正常的海龟无法进入?
如果是,我怎样才能把生病的海龟转移到那里?我怎样才能防止神智正常的海龟到达那里呢?

我所做的就是分离出一堆补丁

假设原点位于帧的中心。你的
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