We ran into a situation that should be fairly common so I hope that someone has a solution floating around that we can easily implement or re-use.
The model consists of two areas joined by a narrow corridor. The corridor is only wide enough for a single AGV path. AGVs need to move in both directions (left-to-right and right-to-left) through the corridor. All AGVs going in a single direction can follow one another based on the default accumulation rule, but AGVs going in the opposite direction have to wait at the entry point until the corridor is clear.
I have attached a small demo model to illustrate the situation. If you run it, then as expected the AGVs collide:
time: 58.794802 exception: TaskExecuter4 has run into TaskExecuter2 on an accumulating path. This is not allowed.
We would appreciate any ideas on the simplest way to implement this. In reality we use Process Flow to control the travelling, so this model may be slightly more realistic.