Add a perturbation step to the VNS engine #305
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "vns-perturbations"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The previous version of the VNS algorithm was focused on the local optimizations (swap and shift) but did not implement any perturbation.
In this PR, we are introducing a perturbation of variable size (1 to 3 guests randomly swapped to other tables) to visit other neighborhoods where the local optimum may be better than the best solution so far. Some values are hard-coded, and the engine probably needs some refactor to use a list of perturbations instead of knowing about
Table::WheelSwap
. Nevertheless, the benchmark rake task already shows significant benefits in using the perturbation local optimization VS not using it.