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


Example #4
0
#!/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)
Example #5
0
    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."