Hi, everyone. I am really new to Graphhopper Jsprit and would like to get to know how the algorithm and its implementation works in general so that I have correct knowledge to base my problems and implement them correspondingly.

Particularly, I am interested in when StateUpdater and ActivityVisitor are called when we are running the algorithm. Currently, I am trying to understand what is going on under the hood by logging the outputs from Constraint and ActivityVisitor, but I get confused and can’t get the process flow.

I would like to ask - could someone outline the general process flow when we run the algorithm. To be more concrete, I would like to know:

- If StateManager is always the same for the whole time algorithms runs? (I got this question, since sometimes when I try to get some specific state from StateManager, it returns null).
- When running the algorithm, what is the order in which the Constraint checker and ActivityVisitor are called? My guess is that whenever some route Constraint checking is finished, ActivityVisitor is called.
- How in general StateManager, StateUpdater, ActivityVisitor and Constraint are correlated? (It is very broad question, but maybe you have some tips for me to get started).

I have been looking for beginner friendly threads, but couldn’t find one.