previousScoreImprovement = arrangement.makeBestSwapFromUnhappiestGroup() print arrangement print previousScoreImprovement arrangement.score = arrangement.calculateScore() return arrangement #--------------- Run ----------------------------------# # Convert CSV jsonArrangement = csv2json(INPUT_CSV_FILENAME) # uncomment the following two line to run with sample data and comment the line above # with open('grouper/sample_data/class40participants.json') as csvFile: # jsonArrangement = json.dumps(json.load(csvFile)) print jsonArrangement; arrangements = [Arrangement(jsonString = jsonArrangement) for x in range(NUM_ITERATIONS)] for arrangement in arrangements: arrangement.randomizeGroups() results = [] for arrangement in arrangements: results.append(swapUnhappiest(arrangement)) results = sorted(results, key = lambda x: x.score) print results[-3:] # # Save to file for i in range(1, 5): arrangement2csv(results[-i], OUTPUT_FOLDER + OUTPUT_FILENAME + '_' + str(i) + '.csv')
# ------------- Genetic Algorithm. Random Swaps -------------# # for x in range(0, 10): # for arrangement in arrangements: # arrangement.randomizeGroups() # for i in range(0, 40): # tempArrangements = [] # for arrangement in arrangements: # for i in range(5): # arrangement.swapRandomIndividuals() # arrangement.score = arrangement.calculateScore() # tempArrangements.append(copy.deepcopy(arrangement)) # result = sorted(tempArrangements, key=lambda x: x.score) # arrangements = result[-10:] # print arrangements #-------------- Make best swap from unhappiest group -----------# for arrangement in arrangements: arrangement.randomizeGroups() for i in range(0, 10): arrangement.makeBestSwapFromUnhappiestGroup() print arrangement arrangement.score = arrangement.calculateScore() result = sorted(arrangements, key=lambda x: x.score) print result for i in range(1, 4): arrangement2csv(result[-i], 'arrangement_' + str(i) + '.csv')