示例#1
0
def mate(c1, c2):
    #note take care to prevent alliasing issues
    c = Coordinator()
    c.generateSlots()
    c.generateCourses()
    c.generateProfs()
    c.assignRequests()
    c.generateStudentGroups()
    c.generateCourseClasses()
    c.appendSTGtoCC()
    c.setHardBlocks()

    for i in range(len(c1.courseClasses)):
        #we need to manage the professor and stg manually
        randomInt = random.randint(0, 1)
        if (randomInt == 0):
            currCourseClass = c1.courseClasses[i]
        else:
            currCourseClass = c2.courseClasses[i]

        #from courseclass get stg, get prof, get slot and update values
        courseName = currCourseClass.course.name
        req = currCourseClass.req
        duration = currCourseClass.duration

        day = currCourseClass.day
        startTime = currCourseClass.startTime
        endTime = currCourseClass.endTime

        profNameList = [p.name for p in currCourseClass.professors]
        #copying courseClasses attributes no alliasing
        c.courseClasses[i].course = c.getCourse(courseName)
        c.courseClasses[i].req = req
        c.courseClasses[i].duration = duration
        c.courseClasses[i].day = day
        c.courseClasses[i].startTime = startTime
        c.courseClasses[i].endTime = endTime

        for name in profNameList:
            c.courseClasses[i].professors.append(c.getProf(name))

        for prof in c.courseClasses[i].professors:
            prof.courseClasses.append(c.courseClasses[i])

        for slot in currCourseClass.slots:
            index = slot.index
            c.slots[index].counter += 1
            c.courseClasses[i].slots.append(c.slots[index])
            for stg in c.courseClasses[i].studentGroups:
                stg.slots.append(c.slots[index])

            for prof in c.courseClasses[i].professors:
                prof.slots.append(c.slots[index])

    return c