Example #1
0
def startAlgo():
    print("Initializing and reading from db")
    Coordinator.initalizeStatic()
    print("Algorithm starts")
    start = time.time()
    lss = geneticScheduler(500,
                           100,
                           5,
                           mutateProb=0.8,
                           elitismOffset=5,
                           mutateRate=0.015)
    print([f.fitnessValue for f in lss])
    elasped = time.time() - start
    print("time taken = {}s".format(elasped))
    answer = sorted(lss, key=lambda coord: coord.fitnessValue)[0]
    # if answer.fitnessValue > 1: raise Exception("Hard Constraints not Satisfied")
    #key into database
    #deletes all previous data
    models.CourseClass.query.delete()

    for cc in answer.courseClasses:
        stgString = cc.studentGroups[0].name
        profString = cc.professors[0].name

        for i in range(1, len(cc.studentGroups)):
            stgString += ",{}".format(cc.studentGroups[i].name)

        for j in range(1, len(cc.studentGroups)):
            profString += ",{}".format(cc.professors[j].name)

        day = cc.day
        startTime = cc.startTime
        endTime = cc.endTime
        roomName = cc.slots[0].room.name
        courseName = cc.course.name
        courseClassDb = models.CourseClass(course=courseName,
                                           studentGroups=stgString,
                                           professors=profString,
                                           day=day,
                                           startTime=startTime,
                                           endTime=endTime,
                                           room=roomName)
        db.session.add(courseClassDb)

    #adding soft constraints
    for prof in answer.professors:
        name = prof.name

        currProf = models.Professor.query.filter(
            models.Professor.name == name).first()
        currProf.satisfied = prof.satisfied

    db.session.commit()