def do_greedy_initial_solutions(students, all_projects, annealer, project_id_mappings, config, verbose=False): ''' Creates the feasible projects, and iterates 1000 (default number) of greedy solutions, randomizing the order in which students get their "first pick." Returns the solution with the lowest initial energy. Result is usually very good. ''' configParser = ConfigParser.ConfigParser() configFilePath = config.encode('string-escape') configParser.read(configFilePath) # Declaring valid values for all fields. capacity = configParser.getint('valid_values', 'capacity') capacity_w = configParser.getint('valid_values', 'capacity_w') feasible_projects = util.create_feasible_projects(students, all_projects, verbose) util.input_checks(students, feasible_projects, capacity, capacity_w, project_id_mappings, sorted=False) match_all = configParser.getboolean('valid_values', 'match_all') sol = greedy_solutions_and_goodness(students, feasible_projects, match_all) print[p.ID for p in sol] return sol
def do_greedy_initial_solutions(students, all_projects, annealer, project_id_mappings, config, verbose = False): ''' Creates the feasible projects, and iterates 1000 (default number) of greedy solutions, randomizing the order in which students get their "first pick." Returns the solution with the lowest initial energy. Result is usually very good. ''' configParser = ConfigParser.ConfigParser() configFilePath = config.encode('string-escape') configParser.read(configFilePath) # Declaring valid values for all fields. capacity = configParser.getint('valid_values', 'capacity') capacity_w = configParser.getint('valid_values', 'capacity_w') feasible_projects = util.create_feasible_projects(students, all_projects, verbose) util.input_checks(students, feasible_projects, capacity, capacity_w, project_id_mappings, sorted = False) match_all= configParser.getboolean('valid_values', 'match_all') sol = greedy_solutions_and_goodness(students, feasible_projects, match_all) print [p.ID for p in sol]
capacity_w = configParser.getint('valid_values', 'capacity_w') temp = configParser.getint('valid_values', 'temperature') iters = configParser.getint('valid_values', 'iterations') team_size = capacity # Creating the annealer with our energy and move functions. if mode == "cc": annealer = Annealer(pg.energy, pg.move) elif mode == "co": annealer = Annealer(pg.energy_co, pg.move_co) else: raise FieldError("Unknown algorithm mode") all_projects = util.generate_all_projects(config) students = util.create_students_from_input(input_file, config) feasibles = util.create_feasible_projects(students, all_projects) sol = test.do_greedy_initial_solutions(students, all_projects, annealer, project_id_mappings, config) use_file = False use_diversity = False if (set_output_file): test.manual_schedule(use_file, students, sol, feasibles, annealer, use_diversity, input_file, temp, iters, output_file) else: test.manual_schedule(use_file, students, sol, feasibles, annealer, use_diversity, input_file, temp, iters) string = "Program completed in " + str((time.time() - start_time)/60) string += " minutes." print string
#!/usr/bin/env python import util import initial_solution import numpy as np import copy if (__name__ == "__main__"): students = util.create_students_from_input('students.csv') print len(students) feasibles = util.create_feasible_projects(students, util.generate_all_projects()) min_rank = float("inf") min_sol = None def calculate_avg_rank(solution, verbose = False): avgs = [] cnt = 0 for p in solution: cnt += len(p.students) if (verbose): print str(p.ID) + ":" + str([s.ID for s in p.students]) print "Ranks:", rankings = [s.get_ranking(p.ID) for s in p.students] if (verbose): print rankings avg_rank = np.mean(rankings) if (verbose): print "Average rank: " + str(avg_rank) avgs.append(avg_rank) if (len(avgs)==0): raise ValueError('Tried to average slice of length 0.') overall_average_rank = np.mean(avgs)
capacity_w = configParser.getint('valid_values', 'capacity_w') temp = configParser.getint('valid_values', 'temperature') iters = configParser.getint('valid_values', 'iterations') team_size = capacity # Creating the annealer with our energy and move functions. if mode == "cc": annealer = Annealer(pg.energy, pg.move) elif mode == "co": annealer = Annealer(pg.energy_co, pg.move_co) else: raise FieldError("Unknown algorithm mode") all_projects = util.generate_all_projects(config) students = util.create_students_from_input(input_file, config) feasibles = util.create_feasible_projects(students, all_projects) sol = test.do_greedy_initial_solutions(students, all_projects, annealer, project_id_mappings, config) use_file = False use_diversity = False if (set_output_file): test.manual_schedule(use_file, students, sol, feasibles, annealer, use_diversity, input_file, temp, iters, output_file) else: test.manual_schedule(use_file, students, sol, feasibles, annealer, use_diversity, input_file, temp, iters) string = "Program completed in " + str((time.time() - start_time) / 60) string += " minutes."