def compute_distances_from_guardians(experiment_id): guardians = ['identity', 'uniformity', 'antagonism', 'stratification'] # guardians = ['antagonism'] for guardian in guardians: model = obj.Experiment(experiment_id) election_model = guardian election_2_id = 'guess' el.generate_elections(experiment_id, election_model=election_model, election_id=election_2_id, num_voters=100, num_candidates=10, special=0) # election_2 = obj.Election(experiment_id, election_2_id) scores = [] for i in range(model.num_elections): election_1_id = 'core_' + str(i) election_1 = obj.Election(experiment_id, election_1_id) election_2 = obj.Election(experiment_id, election_2_id) score = metr.get_distance(election_1, election_2, distance_name='positionwise', metric_name='emd') scores.append(score) print(election_1_id, round(score, 4)) path = os.path.join(os.getcwd(), "experiments", experiment_id, "controllers", "distances", guardian + '.txt') file_scores = open(path, 'w') for i in range(model.num_elections): file_scores.write(str(scores[i]) + "\n") file_scores.close()
def compute_distance_from_ant(experiment_id): model = obj.Experiment(experiment_id) num_elections = 1 x = 'x' scores = [] for i in range(model.num_elections): election_1_id = 'core_' + str(i) election_1 = obj.Election(experiment_id, election_1_id) election_model = 'antagonism' x = 50 election_2_id = 'guess' el.generate_elections(experiment_id, election_model=election_model, election_id=election_2_id, num_elections=num_elections, num_voters=model.num_voters, num_candidates=model.num_candidates, special=x) election_2 = obj.Election(experiment_id, election_2_id) score = metr.get_distance_from_unid(election_1, election_2) scores.append(score) print(election_1_id, round(score, 2)) path = os.path.join(os.getcwd(), "experiments", experiment_id, "controllers", "advanced", "ant.txt") file_scores = open(path, 'w') for i in range(model.num_elections): file_scores.write(str(scores[i]) + "\n") file_scores.close()
def compute_levels(experiment_id, election_model='identity'): model = obj.Experiment(experiment_id) # model_id = 'identity' num_voters = 100 num_candidates = 10 x = 'x' scores = [] for i in range(model.num_elections): election_1_id = 'core_' + str(i) election_2_id = 'guess' el.generate_elections(experiment_id, election_model=election_model, election_id=election_2_id, num_candidates=num_candidates, num_voters=num_voters, special=0) elections_ids = [election_1_id, election_2_id] score = metr.get_distance(experiment_id, elections_ids) print(election_1_id, score) scores.append(score) path = os.path.join(os.getcwd(), "experiments", experiment_id, "controllers", "advanced", "levels.txt") file_scores = open(path, 'w') for i in range(model.num_elections): file_scores.write(str(scores[i]) + "\n") file_scores.close()
def triangle_test(experiment_id): num_voters = 100 num_candidates = 10 num_elections = 1 elections_type = 'antagonism' # print(method, x) distance_name = "positionwise" metric_type = "emd" # COMPUTE ALL 'GUESS' ELECTIONS for T1 in range(100): x = T1 elections_id_a = "guess_" + str(T1) el.generate_elections(experiment_id, election_model=elections_type, election_id=elections_id_a, num_elections=num_elections, num_candidates=num_candidates, num_voters=num_voters, special=x) # COMPUTE ALL DISTANCES for T1 in range(100): elections_id_a = "guess_" + str(T1) elections_id_b = "core_" + str(0) elections_ids = [elections_id_a, elections_id_b] distances_1 = metr.get_distance(experiment_id, distance_name, elections_ids, metric_type)[0] distances_1 = round(distances_1, 2) elections_id_a = "guess_" + str(T1) elections_id_b = "core_" + str(1) elections_ids = [elections_id_a, elections_id_b] distances_2 = metr.get_distance(experiment_id, distance_name, elections_ids, metric_type)[0] distances_2 = round(distances_2, 2) total = round(distances_1 + distances_2, 2) print(distances_1, distances_2, total)