Currently when a partial solution is provided in input (using vehicles.steps) in solving mode, then we bypass all the heuristic process altogether to initialize the solution with the manual one, if valid. Then as usual it is up to the local search process to try improving that initial solution and put in as much as possible of the jobs unassigned so far.
In particular, this means that instead of doing several parallelized local search, we only apply the local search to that one solution.
This is not ideal in the situation where the provided solution is quite partial, say with only a fraction of initial jobs assigned. The way missing jobs are further assigned by the local search narrows down to a single search path and we miss the diversity of exploration offered by applying multiple heuristic tunings to get multiple initial solutions as we usually do.
Now that we have #837, we could instead:
- set the manual solution as a common starting point;
- apply all heuristics tunings as usual (meaning we fill up the common initial solution in different ways);
- run all local searches on the various resulting initial solutions as usual.
If the partial solution is nearly full, we may end up with almost all initial solutions being identical, but that would not be a problem since we now filter out identical initial solutions before firing the local searches (see #750 and linked stuff).
Currently when a partial solution is provided in input (using
vehicles.steps) in solving mode, then we bypass all the heuristic process altogether to initialize the solution with the manual one, if valid. Then as usual it is up to the local search process to try improving that initial solution and put in as much as possible of the jobs unassigned so far.In particular, this means that instead of doing several parallelized local search, we only apply the local search to that one solution.
This is not ideal in the situation where the provided solution is quite partial, say with only a fraction of initial jobs assigned. The way missing jobs are further assigned by the local search narrows down to a single search path and we miss the diversity of exploration offered by applying multiple heuristic tunings to get multiple initial solutions as we usually do.
Now that we have #837, we could instead:
If the partial solution is nearly full, we may end up with almost all initial solutions being identical, but that would not be a problem since we now filter out identical initial solutions before firing the local searches (see #750 and linked stuff).