LBNL-UCB-STI / beam

The Framework for Modeling Behavior, Energy, Autonomy, and Mobility in Transportation Systems
https://transportation.lbl.gov/beam
Other
145 stars 57 forks source link

Switch from WALK to TELEPORTATION as last-resort mode #3488

Open zneedell opened 2 years ago

zneedell commented 2 years ago

In case people can't otherwise end up with a legitimate mode choice in choosesMode we fall back on WALK as the last resort mode, e.g.

https://github.com/LBNL-UCB-STI/beam/blob/ef651315eb0572a8bed0af3f84c3590e94f697ca/src/main/scala/beam/agentsim/agents/modalbehaviors/ChoosesMode.scala#L346-L347

and

https://github.com/LBNL-UCB-STI/beam/blob/ef651315eb0572a8bed0af3f84c3590e94f697ca/src/main/scala/beam/agentsim/agents/modalbehaviors/ChoosesMode.scala#L1354-L1373

This can lead to problems because in processing the outputs it can be difficult to distinguish between these last resort WALK trips and real WALK trips that were actually chosen by the agent. They can also mess up the rest of the agent's day because these walk trips often take many hours.

These last resort walk trips should be rare and are always a sign that something unrealistic happened in the simulation, so let's consider defining a new EMERGENCY_TELEPORT (or LAST_RESORT_MODE or something like that) mode that can be used in these last resort cases that just moves them to their planned destination and adds a large replanning penalty to the current leg, but lets them continue their day. Then it will be easy in post-processing to identify the number of these trips that happen, their associated distance, and hopefully to fix the underlying problem.

No preference as to whether we base this new mode off of the existing teleportation capability or just make it a faster walk trip that is labeled differently--whatever is easier.

Xuan-1998 commented 2 years ago

@zneedell I'm doing some tests around here to check whether we are seeing any emergency cases at all. My changes as following in choosesMode and corresponding changes in other files regarding modes:

https://github.com/LBNL-UCB-STI/beam/blob/3532259e24a17da4a870e76d64f9234f880a4ee7/src/main/scala/beam/agentsim/agents/modalbehaviors/ChoosesMode.scala#L741-L742 https://github.com/LBNL-UCB-STI/beam/blob/3532259e24a17da4a870e76d64f9234f880a4ee7/src/main/scala/beam/agentsim/agents/modalbehaviors/ChoosesMode.scala#L1275-L1311

But I'm not seeing any error or any outputs of emergency mode using this small sample of sfbay https://github.com/LBNL-UCB-STI/beam/blob/Xuan/sfbay-fixing-walking/test/input/sfbay/gemini/gemini-base-2035-activitysim-da-baseline.conf. So maybe the problem of long walk distance is not caused by the emergency rollback trips. Correct me if I'm wrong.