public Solution readSolution() throws IOException { patientAdmissionSchedule = new PatientAdmissionSchedule(); patientAdmissionSchedule.setId(0L); readSizes(); readEmptyLine(); readEmptyLine(); readSpecialismList(); readEmptyLine(); readDepartmentListAndDepartmentSpecialismList(); readEmptyLine(); readEquipmentList(); readEmptyLine(); readRoomListAndRoomSpecialismListAndRoomEquipmentList(); readEmptyLine(); readBedList(); readEmptyLine(); generateNightList(); readPatientListAndAdmissionPartListAndRequiredPatientEquipmentListAndPreferredPatientEquipmentList(); readEmptyLine(); readConstantLine("END."); createBedDesignationList(); // TODO not all nights are planned, only the "planning horizon" nights are planned BigInteger possibleSolutionSize = BigInteger.valueOf(patientAdmissionSchedule.getBedList().size()) .pow(patientAdmissionSchedule.getAdmissionPartList().size()); String flooredPossibleSolutionSize = "10^" + (possibleSolutionSize.toString().length() - 1); logger.info( "PatientAdmissionSchedule {} has {} specialisms, {} equipments, {} departments, {} rooms, " + "{} beds, {} nights, {} patients and {} admissions with a search space of {}.", getInputId(), patientAdmissionSchedule.getSpecialismList().size(), patientAdmissionSchedule.getEquipmentList().size(), patientAdmissionSchedule.getDepartmentList().size(), patientAdmissionSchedule.getRoomList().size(), patientAdmissionSchedule.getBedList().size(), patientAdmissionSchedule.getNightList().size(), patientAdmissionSchedule.getPatientList().size(), patientAdmissionSchedule.getAdmissionPartList().size(), flooredPossibleSolutionSize); return patientAdmissionSchedule; }