2017-04-24 110 views
0

我正在模拟一条与双车道道路合并的单车道道路,所有道路都沿相同方向行驶。未合并的汽车(汽车1)检查半径为2的汽车是否需要更换到左侧车道,如果他们这样做,汽车会检查左侧车道以确定它是否安全。Netlogo汽车合并

ask cars1[ 
    if (not any? turtles-at -2 4) and (not any? turtles-at -1 4) 
    and (not any? turtles-at 0 4) and (not any? turtles-at 1 4) 
    and (not any? turtles-at 2 4) and (not any? turtles-at 3 4) 
    and (any? merging-cars in-radius 3) 
    [ set ycor 2]] 

我试图让如果不是在最近的车道cars1切换到左侧车道安全合并汽车停下来。

ask merging-cars[ 
    loop[ 
    if[any? cars1 in-radius 2] 
    [stop] 
    ]] 

这是不工作的代码。我还没有想出一种方法来让合并的汽车在不安全的情况下停下来,并在安全的时候停下来。

谢谢

+0

有没有看过模型库中的“Traffic 2 Lanes”模型?它可以作为合并行为的一个例子 - 模型中的汽车不会发生碰撞,但是只有在他们试图进入的车道中有空间时才会改变车道。 –

+0

是的,我已经看过它,它在我的模拟的某些部分中有很多帮助,但是在这种情况下它并没有帮助。我需要合并汽车检查是否安全,如果不合适,他们需要停下来等到合并安全。 – Emory

+1

没错。你可以编辑你的问题,包括一个可重复的例子(如在[MCVE准则](http://stackoverflow.com/help/mcve))?有几种方法可以满足您的需求,但如果没有看到更多细节和上下文,则很难提出最佳选择。 –

回答

0

为了让您在正确的方向看看没有?相关文件,并记下您可以将其中的角度来检查,以及向左或向右的命令,如:

not any? turtles-on patch-right-and-ahead 60 2 

这话说....检查的60度角向右在这只乌龟前面有2个补丁。