如何防止代理在NetLogo中“跳过”障碍的能力?

时间:2019-04-24 17:17:42

标签: netlogo agent-based-modeling

我问的是之前在这里回答的一个问题: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]

0 个答案:

没有答案