Hi! Thanks for your reply!
Regarding the two constraints (insertion of Y after X and preventing X before Y), there are edge cases and our implementation may not be the best:
1) What do we do if we are trying to insert X but Y isn't inserted yet? Should we allow it?
2) Similarly, what do we do if we are trying to insert Y but X isn't inserted yet?
Currently, I allow 2) but disallow 1).
The jobs do not have to be served in the same route. Some driver might do the first pair of tasks and another one do the second.
After some bugfixes regarding time window management and estimation, I currently have this scenario (each task is a pair of pickup/delivery jobs): Tasks A1, A2 (A2 depends on A1), B1, B2 (B2 depends on B1) and C1, C2 (C2 depends on C1)
Regardless of 1) and 2), tasks B1 and B2 always get correctly scheduled.
Depending on what I do in 1) and 2) I get different results. With what I currently have, I only execute tasks B1 and B2. It seems bizarre to me, but:
* JSprit tries to insert A2 and C2 (it fails because of 1) )
* JSprit never tries to insert A1 and C1
Is there any reason for JSprit not even trying a particular task? This isn't the first time I've been faced with this situation
João Ricardo Lourenço