Esempio n. 1
0
    def createRandomInstance(self, nBuildings, nRooms, nCourses):
        # create random buildings
        for building in range(nBuildings):
            tmp = Building()
            tmp.xCoord = self.random.nextDouble() * self.MAX_X_COORD
            tmp.yCoord = self.random.nextDouble() * self.MAX_Y_COORD
            print("x: {} y: {}".format(tmp.xCoord, tmp.yCoord))
            self.buildings.append(tmp)

        # create random rooms
        for room in range(nRooms):
            tmp = Room()
            bld = int(self.random.nextDouble() * nBuildings)
            print("bld: {}".format(bld))
            tmp.b = self.buildings[int(self.random.nextDouble() * nBuildings)]
            tmp.capacity = (int(self.random.nextDouble() * 70)) + 30
            self.rooms.append(tmp)

        # create random courses
        print(nCourses)
        for course in range(nCourses):
            tmp = Course()
            tmp.enrolledStudents = (int(self.random.nextDouble() * 70)) + 30
            tmp.preferredLocation = self.buildings[int(
                self.random.nextDouble() * nBuildings)]
            tmp.value = self.random.nextDouble() * 100
            tmp.timeSlotValues = [0] * self.NUM_TIME_SLOTS

            # debug
            # print("Num time slots: {}".format(self.NUM_TIME_SLOTS))
            # print(tmp.timeSlotValues)

            for j in range(self.NUM_TIME_SLOTS):
                if (self.random.nextDouble() < float(0.3)):
                    tmp.timeSlotValues[j] = 0
                else:
                    tmp.timeSlotValues[j] = int(self.random.nextDouble() * 10)
            self.courses.append(tmp)

        print("Courses timeslotvalues and real value:")
        for idx, course in enumerate(self.courses):
            print("idx {}: {} -> {}".format(idx, course.timeSlotValues,
                                            course.value))