Implemented adaptive algorithm to choose between multiple neighbourhood structures