An array in Java is an Object, so when you modify its elements, they change for all the references pointing to that array. If you want a local copy, you should clone it. E.g.:
Integer[] origTimetable = bestSoFar.getChromosome();
Integer[] timetable = Arrays.copyOf (origTimetable, origTimeable.length);