Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Applying heuristics to partial solutions provided in input #977

Open
jcoupey opened this issue Aug 29, 2023 · 1 comment
Open

Applying heuristics to partial solutions provided in input #977

jcoupey opened this issue Aug 29, 2023 · 1 comment

Comments

@jcoupey
Copy link
Collaborator

jcoupey commented Aug 29, 2023

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).

@jcoupey
Copy link
Collaborator Author

jcoupey commented Sep 4, 2023

This gets worse when a very simple and very partial solution is submitted, e.g. just a few vehicles with a single job. In the case where not a single local search move is applied, there is no opportunity to run try_job_additions so the local search does not do any further route filling. In particular in this situation we leave available vehicles unused while trivially doable jobs exist for them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant