With this PR we can now identify when to use AllDifferent as a neighbourhood, as long as all variables have the same domain.
As of now, "the same domain" is defined to be the same upper and lower bound.
This PR also introduces a neighbourhood combinator which is used during the search. It will delegate to all the neighbourhoods in the model and when moving, selects a random neighbourhood to perform a random move with.
With this PR we can now identify when to use AllDifferent as a neighbourhood, as long as all variables have the same domain.
As of now, "the same domain" is defined to be the same upper and lower bound.
This PR also introduces a neighbourhood combinator which is used during the search. It will delegate to all the neighbourhoods in the model and when moving, selects a random neighbourhood to perform a random move with.