def cost(): # minimize this result = 0 for droppedClass in droppedClasses: result += droppedClass.getSize() for room in rooms: for key,Class in room.getClasses().items(): overflow = (Class.getSize() - room.getSize()) * (Class.getLength() + 1) result += max(0, overflow) # add the number of students that don't fit, if any return result '''
def numConflicts(): # meaningful objective function result = 0 for droppedClass in droppedClasses: result += droppedClass.getSize() for room in rooms: for key,Class in room.getClasses().items(): overflow = (Class.getSize() - room.getSize()) * Class.getLength() result += max(0, overflow) # add the number of students that don't fit, if any return result #pre class cost '''
swap((slotOrder1[slotIndex], roomOrder1[roomIndex]), (slotOrder2[slotIndex], roomOrder2[roomIndex])) else: currentCost = newCost # take it if(currentCost < currentMin): currentMin = currentCost currentMinVector = copy.deepcopy(schedule) ''' # modify temp temp *= tempLoss # heartbeat # print(schedule) # printSchedule(rooms) print(currentCost, " : ", temp) t1 = time.time() printSchedule(rooms) print(currentCost) print("num conflicts: " + str(numConflicts())) print("num dropped classes: " + str(len(droppedClasses))) print("time: " + str(t1-t0)) for Class in droppedClasses: print(str(Class.getSize()) + " : " + str(Class.getLength())) print("Lowest value reached (for debugging/testing):") print(currentMin) print("DONE!")