private HashMap<Integer, Set<Integer>> createVesselDepartureChromosome(
     HashMap<Integer, Set<Integer>> installationDepartureChromosome) {
   HashMap<Integer, Set<Integer>> individualVesselDeparturePatterns =
       new HashMap<Integer, Set<Integer>>();
   Set<Integer> daysWithDeparture =
       getDaysWithDeparture(
           installationDepartureChromosome); // get all days that installations require a departure
   for (Vessel vessel :
       problemData
           .getVessels()) { // for each vessel, choose a random vessel pattern that fits with the
                            // installationDepartureChromosome
     Set<Integer> randomVesselDeparturePattern =
         pickRandomVesselDeparturePattern(daysWithDeparture, individualVesselDeparturePatterns);
     if (randomVesselDeparturePattern == null) { // workaround until a smarter heuristic is created
       numberOfPatternRestarts++;
       return createVesselDepartureChromosome(installationDepartureChromosome);
     }
     individualVesselDeparturePatterns.put(vessel.getNumber(), randomVesselDeparturePattern);
   }
   if (isDepotConstraintViolated(individualVesselDeparturePatterns)) {
     numberOfDepotRestarts++;
     return createVesselDepartureChromosome(installationDepartureChromosome);
   }
   return individualVesselDeparturePatterns;
 }