Open namdre opened 2 years ago
One might be tempted to put this into the driverstate device since it also features changing actionStep length based on awareness, however:
Thus action-skipping might be introduced on another level (executeMove, finalizeSpeed ?)
any suggestions @Domsall
First of all, you are probably refering to the publication "The Intelligent Driver Model with stochasticity – New insights into traffic flow oscillations" from Treiber and Kesting?!
The EIDM already includes variable actionStep lengths (I think you already know this). But I think I need to explain the way it works and why I added the calculation to finalizeSpeed(), before I suggest anything:
When I started to work with SUMO back in 2017, the driverstate device did not exist yet. As I was new to SUMO and C++, I did not join the discussions and knew nothing about the ongoing parallel work. Therefore, I directly added the calculations to my model. The driverstate is actually implemented a lot better (modular framework/device for all cf-models) than what I did, although the error/perception functionality should somewhat be similar. I unfortunately did not have time to refactor my model code to include the driverstate device. I was too busy seperating the model from the rest of the code enhancements, which were pushed in different tickets.
However, from what I understand, there is one main difference: ActionPoints of the driverstate skip the whole CF/LC/junction calculation (planMoveInternal/patchSpeed/finalizeSpeed/setApproachingForAllLinks). That is great for speeding-up the simulation, but also makes it impossible to calculate a would if acceleration. Adding the (variable) action-step-length to the EIDM (with the correct storage of the underlying variables) was actually the hardest part of the model implementation.
The reasons: (also why to put the actionPoint update in finalizeSpeed()):
So my suggestions or suggested steps all together:
To add a new cfmodel-independent mechanism for introducing driving error, define a new parameter x:
Each time a vehicle would compute new speed/acceleration (actionStep) it skips this action step with probability x and instead continues with the prior acceleration.
This is to model "distraction" rather than errors in estimation/actuation.