public void createRandomIndividuals(int numIndividuals, KTH kth) { Map<Integer, Room> rooms = kth.getRooms(); int numRooms = kth.getRooms().size(); for (int i = 0; i < numIndividuals; i++) { // register all available timeslots ArrayList<TimeSlot> availableTimeSlots = new ArrayList<TimeSlot>(); for (int roomId : rooms.keySet()) { for (int d = 0; d < RoomTimeTable.NUM_DAYS; d++) { for (int t = 0; t < RoomTimeTable.NUM_TIMESLOTS; t++) { availableTimeSlots.add(new TimeSlot(roomId, d, t)); } } } TimeTable tt = new TimeTable(numRooms); for (int roomId : rooms.keySet()) { Room room = rooms.get(roomId); RoomTimeTable rtt = new RoomTimeTable(room); tt.putRoomTimeTable(roomId, rtt); } // index variables int rttId = 0; int day = 0; int timeSlot = 0; // assign all event to any randomly selected available timeslot Random rand = new Random(System.currentTimeMillis()); for (Event e : kth.getEvents().values()) { TimeSlot availableTimeSlot = availableTimeSlots.get(rand.nextInt(availableTimeSlots.size())); RoomTimeTable rtt = tt.getRoomTimeTables()[availableTimeSlot.roomId]; rtt.setEvent(availableTimeSlot.day, availableTimeSlot.timeSlot, e.getId()); availableTimeSlots.remove(availableTimeSlot); /* DEBUG System.out.println("=============="); System.out.println("ROOM TIME TABLE ID: " + rtt.getRoom().getName()); System.out.println("Day: " + availableTimeSlot.day + " Timeslot: " + availableTimeSlot.timeSlot + " Event ID: " + e.getId()); */ } individuals.add(tt); availableTimeSlots.clear(); } }