public static Tour crossoverDouble(Tour parent1, Tour parent2) {

        Tour child = new Tour();
        int[] mrk = new int[4];
      mrk[0] = (int) (r.nextInt(parent1.tourSize()));
      mrk[1] = (int) (r.nextInt(parent1.tourSize()));
      mrk[2] = (int) (r.nextInt(parent1.tourSize()));
      mrk[3] = (int) (r.nextInt(parent1.tourSize()));
      sort(mrk);
      
        for (int i = 0; i < child.tourSize(); i++) {

            if ((i > mrk[0] && i < mrk[1]) || (i > mrk[2] && i < mrk[3])) {
                child.setCity(i, parent1.getCity(i));
            } 
        }
        for (int i = 0; i < parent2.tourSize(); i++) {
            if (!child.containsCity(parent2.getCity(i))) {
                for (int ii = 0; ii < child.tourSize(); ii++) {
                    if (child.getCity(ii) == null) {
                        child.setCity(ii, parent2.getCity(i));
                        break;
                    }
                }
            }
        }
        return child;
    }