我问的是之前在这里回答的一个问题:Is there a way to create impassable barriers in NetLogo?
用户有帮助地建议了一种在NetLogo中生成禁区补丁(即障碍)的方法。但是,正如他提到的那样,如果特工从特定的角度接近,他们仍然会偶尔具有跳过这些障碍的能力。对于我的模型,这是不受欢迎的行为,因为我正在对篱笆和运动进行建模,因此跳过障碍是不现实的。
我试图更改此代码:
ask patches in-radius 1
[if f = 1
[ask myself
[set heading towards min-one-of patches [distance myself] + 180 - random 10 + random 10 ]
]
]
通过将“半径”减小到小于1,希望这样做可以防止代理看到足够远的距离以穿越障碍,但这是行不通的。 “ f = 1”只是一个补丁变量,用于表示哪些补丁是栅栏。
有什么方法可以防止这种行为?
Here is the behavior I want - navigation around barriers
Here is the behavior I don't want - jumping barriers if approached from certain angles
特工遵循的实际移动过程如下:
ask turtles[
let moveset patches in-radius 30 with [f = 0 and n > 0]
pen-down
let target max-one-of moveset [n]
ifelse patch-here != target
[set heading towards target]
[]
ask patches in-radius 1
[if f = 1
[ask myself
[set heading towards min-one-of patches [distance myself] + 180 - random 10 + random 10]
fd 1]