diff --git a/experiments/compare_high_multiplicity.py b/experiments/compare_high_multiplicity.py new file mode 100644 index 0000000..a17765b --- /dev/null +++ b/experiments/compare_high_multiplicity.py @@ -0,0 +1,224 @@ +""" +Compare the performance of a high_multiplicity_fair_allocation + +Programmer: Naor Ladani & Elor Israeli +Since: 2024-06 +""" +import experiments_csv +from pandas import read_csv +import matplotlib.pyplot as plt +from fairpyx import divide, AgentBundleValueMatrix, Instance +import fairpyx.algorithms.high_multiplicity_fair_allocation as high +import fairpyx.algorithms.improved_high_multiplicity as imp +from typing import * +import numpy as np +from eefpy import Objective, EnvyNotion +from eefpy import solve as solve + +max_value = 1000 +normalized_sum_of_values = 100 +TIME_LIMIT = 60 + +algorithms_plot = [ + "high_multiplicity_fair_allocation", + "solve", + "improved_high_multiplicity_fair_allocation", +] +# Define the specific algorithm you want to check +algorithms = [ + high.high_multiplicity_fair_allocation, + solve, + imp.improved_high_multiplicity_fair_allocation, +] + + +######### EXPERIMENT WITH UNIFORMLY-RANDOM DATA ########## + + +def evaluate_algorithm_on_instance(algorithm, instance): + + if algorithm is solve: + agent_valuations = [[int(instance.agent_item_value(agent, item)) for item in instance.items] for agent in + instance.agents] + print(f' agent valuations: {agent_valuations}') + items = [instance.item_capacity(item) for item in instance.items] + + alloc = solve(num_agents=instance.num_of_agents + , num_types=instance.num_of_items + , agent_utils=agent_valuations, + items=items, + envy=EnvyNotion.EF, obj=Objective.NONE) + allocation = {} + for i, agent in enumerate(instance.agents): + allocation[agent] = [] + for j, item in enumerate(instance.items): + if alloc == []: + allocation[agent] = [] + else: + for sum in range(alloc[i][j]): + allocation[agent].append(item) + + else: + allocation = divide(algorithm, instance) + matrix = AgentBundleValueMatrix(instance, allocation) + matrix.use_normalized_values() + return { + "utilitarian_value": matrix.utilitarian_value(), + "egalitarian_value": matrix.egalitarian_value(), + + } + + +def course_allocation_with_random_instance_uniform( + num_of_agents: int, num_of_items: int, + value_noise_ratio: float, + algorithm: Callable, + random_seed: int): + agent_capacity_bounds = [1000, 1000] + item_capacity_bounds = [2, 10] + np.random.seed(random_seed) + instance = Instance.random_uniform( + num_of_agents=num_of_agents, num_of_items=num_of_items, + normalized_sum_of_values=normalized_sum_of_values, + agent_capacity_bounds=agent_capacity_bounds, + item_capacity_bounds=item_capacity_bounds, + item_base_value_bounds=[1, max_value], + item_subjective_ratio_bounds=[1 - value_noise_ratio, 1 + value_noise_ratio] + ) + return evaluate_algorithm_on_instance(algorithm, instance) + + +def run_uniform_experiment(): + # Run on uniformly-random data: + experiment = experiments_csv.Experiment("results/", "high_multi.csv", backup_folder="results/backup/") + input_ranges = { + "num_of_agents": [2, 3, 4, 5], + "num_of_items": [2, 3, 5, 6], + "value_noise_ratio": [0, 0.2, 0.5, 0.8, 1], + "algorithm": algorithms, + "random_seed": range(2), + } + experiment.run_with_time_limit(course_allocation_with_random_instance_uniform, input_ranges, time_limit=TIME_LIMIT) + + +######### EXPERIMENT WITH DATA SAMPLED FROM naor input DATA ########## + + +import json + +filename = "data/naor_input.json" +with open(filename, "r", encoding="utf-8") as file: + naor_input = json.load(file) + + +def course_allocation_with_random_instance_sample( + max_total_agent_capacity: int, + algorithm: Callable, + random_seed: int, ): + np.random.seed(random_seed) + + (agent_capacities, item_capacities, valuations) = \ + (naor_input["agent_capacities"], naor_input["item_capacities"], naor_input["valuations"]) + instance = Instance.random_sample( + max_num_of_agents=max_total_agent_capacity, + max_total_agent_capacity=max_total_agent_capacity, + prototype_agent_conflicts=[], + prototype_agent_capacities=agent_capacities, + prototype_valuations=valuations, + item_capacities=item_capacities, + item_conflicts=[]) + + return evaluate_algorithm_on_instance(algorithm, instance) + + +def run_naor_experiment(): + # Run on Ariel sample data:z + experiment = experiments_csv.Experiment("results/", "course_allocation_naor.csv", backup_folder="results/backup/") + input_ranges = { + "max_total_agent_capacity": [12], # in reality: 1115 + "algorithm": algorithms, + "random_seed": range(2), + } + experiment.run_with_time_limit(course_allocation_with_random_instance_sample, input_ranges, time_limit=TIME_LIMIT) + + +def create_plot_naor_experiment(): + csv_file = 'results/course_allocation_naor.csv' + data = read_csv(csv_file) + + print(data.head()) + algorithms_for_plot = data['algorithm'].unique() + + fig, axes = plt.subplots(1, 3, figsize=(21, 6)) + + for algorithm_p in algorithms_for_plot: + df_algo = data[data['algorithm'] == algorithm_p] + axes[0].plot(df_algo['utilitarian_value'], marker='o', linestyle='-', label=algorithm_p) + axes[1].plot(df_algo['egalitarian_value'], marker='o', linestyle='-', label=algorithm_p) + axes[2].plot(df_algo['runtime'], marker='o', linestyle='-', label=algorithm_p) + + axes[0].set_title('Utilitarian Value Comparison') + axes[0].set_xlabel('') + axes[0].set_ylabel('Utilitarian Value') + axes[0].legend() + + axes[1].set_title('Egalitarian Value Comparison') + axes[1].set_xlabel('') + axes[1].set_ylabel('Egalitarian Value') + axes[1].legend() + + axes[2].set_title('runtime Comparison') + axes[2].set_xlabel('') + axes[2].set_ylabel('runtime') + axes[2].legend() + + plt.tight_layout() + plt.savefig('results/naor_and_elor_plot.png') + + +def create_plot_uniform(): + csv_file = 'results/high_multi.csv' + data = read_csv(csv_file) + + print(data.head()) + algorithms_for_plot = data['algorithm'].unique() + + fig, axes = plt.subplots(1, 3, figsize=(21, 6)) + + for algorithm_p in algorithms_for_plot: + df_algo = data[data['algorithm'] == algorithm_p] + axes[0].plot(df_algo['utilitarian_value'], marker='o', linestyle='-', label=algorithm_p) + axes[1].plot(df_algo['egalitarian_value'], marker='o', linestyle='-', label=algorithm_p) + axes[2].plot(df_algo['runtime'], marker='o', linestyle='-', label=algorithm_p) + + axes[0].set_title('Utilitarian Value Comparison') + axes[0].set_xlabel('') + axes[0].set_ylabel('Utilitarian Value') + axes[0].legend() + + axes[1].set_title('Egalitarian Value Comparison') + axes[1].set_xlabel('') + axes[1].set_ylabel('Egalitarian Value') + axes[1].legend() + + axes[2].set_title('runtime Comparison') + axes[2].set_xlabel('') + axes[2].set_ylabel('runtime') + axes[2].legend() + + plt.tight_layout() + + plt.savefig('results/high_multiplicity_uniforn_plot.png') + + +######### MAIN PROGRAM ########## + + +if __name__ == "__main__": + import logging + + experiments_csv.logger.setLevel(logging.DEBUG) + # run_naor_experiment() + # create_plot_naor_experiment() + # run_uniform_experiment() + create_plot_uniform() diff --git a/experiments/data/naor_input.json b/experiments/data/naor_input.json new file mode 100644 index 0000000..62d7be5 --- /dev/null +++ b/experiments/data/naor_input.json @@ -0,0 +1,10 @@ +{ + "agent_capacities": {"s1": 23, "s2": 23, "s3": 23, "s4": 23}, + "item_capacities": {"c1": 5, "c2": 6, "c3": 2, "c4": 3, "c5": 5, "c6": 2}, + "valuations": { + "s1": {"c1": 152, "c2": 86, "c3": 262, "c4": 68, "c5": 263, "c6": 169}, + "s2": {"c1": 124, "c2": 70, "c3": 98, "c4": 244, "c5": 329, "c6": 135}, + "s3": {"c1": 170, "c2": 235, "c3": 295, "c4": 91, "c5": 91, "c6": 118}, + "s4": {"c1": 158, "c2": 56, "c3": 134, "c4": 255, "c5": 192, "c6": 205} + } + } \ No newline at end of file diff --git a/experiments/requirements.txt b/experiments/requirements.txt new file mode 100644 index 0000000..caba321 --- /dev/null +++ b/experiments/requirements.txt @@ -0,0 +1,20 @@ +numpy>=1.21.3,<2.0.0 +scipy>=1.6.1 +networkz~=1.0.6 +cvxpy_base>=1.1.17 +prtpy +# cmake +# matplotlib +# repackage +# pytest +# cvxpy_leximin>=0.4.4 +# prtpy>=0.7.0 +# more_itertools +# scs +experiments_csv +cvxpy~=1.5.1 +setuptools~=67.4.0 +matplotlib~=3.9.0 +pandas~=2.2.2 +pytest~=8.2.2 +eefpy~=0.1.5 \ No newline at end of file diff --git a/experiments/results/course_allocation_naor.csv b/experiments/results/course_allocation_naor.csv new file mode 100644 index 0000000..a7dd3ce --- /dev/null +++ b/experiments/results/course_allocation_naor.csv @@ -0,0 +1,7 @@ +max_total_agent_capacity,algorithm,random_seed,utilitarian_value,egalitarian_value,runtime +12,high_multiplicity_fair_allocation,0,103.02000000000001,92.30000000000001,29.27266180400011 +12,high_multiplicity_fair_allocation,1,0.0,0,968.108752568 +12,solve,0,104.24000000000001,94.0,1.5066105169998991 +12,solve,1,0.0,0,178.2857671109996 +12,improved_high_multiplicity_fair_allocation,0,103.02000000000001,92.30000000000001,27.41918799999985 +12,improved_high_multiplicity_fair_allocation,1,0.0,0,922.6537668400006 diff --git a/experiments/results/course_allocation_uniform.csv b/experiments/results/course_allocation_uniform.csv index 74b4fa9..8793783 100644 --- a/experiments/results/course_allocation_uniform.csv +++ b/experiments/results/course_allocation_uniform.csv @@ -30,572 +30,632 @@ num_of_agents,num_of_items,value_noise_ratio,algorithm,random_seed,utilitarian_v 100,25,0.0,bidirectional_round_robin,3,93.74586228792089,85.55555555555556,6.637168141592923,0.7139291516783931,0,0.0,100,100,100,0.0206667999736964 100,25,0.0,bidirectional_round_robin,4,82.79161297429428,71.71532846715328,11.909262759924388,1.7230923942839866,0,0.0,100,100,100,0.0195185000193305 100,25,0.0,almost_egalitarian_without_donation,0,92.5488749427493,82.86384976525821,16.43192488262912,2.031246697595084,0,0.0,96,99,100,3.7152397999889217 -100,25,0.0,almost_egalitarian_without_donation,1,96.5278851344518,90.10695187165776,6.702412868632706,0.9422087746266041,0,0.0,99,100,100,3.5959623000235297 -100,25,0.0,almost_egalitarian_without_donation,2,88.31085259438129,77.43362831858407,12.679425837320565,3.5421932969350185,0,0.0,96,99,100,3.600851600000169 +100,25,0.0,almost_egalitarian_without_donation,1,96.5278851344518,90.10695187165776,6.702412868632706,0.942208774626604,0,0.0,99,100,100,3.5959623000235297 +100,25,0.0,almost_egalitarian_without_donation,2,88.31085259438129,77.43362831858407,12.679425837320563,3.5421932969350185,0,0.0,96,99,100,3.600851600000169 100,25,0.0,almost_egalitarian_without_donation,3,94.7495303858917,87.95454545454545,7.954545454545453,1.2635762339012364,0,0.0,99,100,100,3.5982663000468165 100,25,0.0,almost_egalitarian_without_donation,4,84.6549447455702,72.2567287784679,18.01242236024845,4.866815013677546,0,0.0,96,99,99,3.649007799976971 -100,25,0.0,almost_egalitarian_with_donation,0,92.57587534713565,82.77404921700223,9.203980099502502,2.3735135087038897,0,0.0,96,99,100,3.5916563000064343 -100,25,0.0,almost_egalitarian_with_donation,1,96.53214913986645,91.86351706036746,6.702412868632706,0.8870899343050667,0,0.0,99,100,100,3.6519901999854483 +100,25,0.0,almost_egalitarian_with_donation,0,92.57587534713564,82.77404921700223,9.203980099502502,2.3735135087038897,0,0.0,96,99,100,3.5916563000064343 +100,25,0.0,almost_egalitarian_with_donation,1,96.53214913986643,91.86351706036746,6.702412868632706,0.8870899343050667,0,0.0,99,100,100,3.651990199985448 100,25,0.0,almost_egalitarian_with_donation,2,88.29842796800581,77.26218097447796,14.849187935034806,4.033882487342969,0,0.0,96,99,100,3.651726999960374 -100,25,0.0,almost_egalitarian_with_donation,3,94.75251136927324,87.95454545454545,7.954545454545453,1.101759139719051,0,0.0,98,100,100,3.6436119999852963 +100,25,0.0,almost_egalitarian_with_donation,3,94.75251136927324,87.95454545454545,7.954545454545453,1.101759139719051,0,0.0,98,100,100,3.643611999985296 100,25,0.0,almost_egalitarian_with_donation,4,84.63483430261948,72.2567287784679,20.703933747412023,6.339504225715127,0,0.0,95,99,100,3.6832687000278383 -100,25,0.2,utilitarian_matching,0,94.64043761750743,80.49382716049382,16.049382716049394,1.8747131994095805,0,0.0,97,97,100,0.10351409995928407 -100,25,0.2,utilitarian_matching,1,97.68695410534912,91.91374663072777,4.218362282878402,0.5103950078235299,0,0.0,99,100,100,0.10402800003066659 -100,25,0.2,utilitarian_matching,2,90.83928690960373,78.03738317757009,21.26168224299066,4.498090453093328,0,0.0,98,99,100,0.09095869999146089 -100,25,0.2,utilitarian_matching,3,96.13268401096215,87.03703703703704,7.407407407407405,0.9906592611830299,0,0.0,98,100,100,0.09617889998480678 -100,25,0.2,utilitarian_matching,4,88.17878179726341,72.04301075268818,21.290322580645153,5.472891797374614,0,0.0,98,99,100,0.10447080002631992 -100,25,0.2,iterated_maximum_matching_unadjusted,0,94.1874926051366,84.95762711864407,5.882352941176478,0.7169073131600606,0,0.0,100,100,100,0.22846020001452416 -100,25,0.2,iterated_maximum_matching_unadjusted,1,97.27418546482212,90.33078880407125,3.053435114503813,0.1336317716207837,0,0.0,100,100,100,0.24005900003248826 -100,25,0.2,iterated_maximum_matching_unadjusted,2,90.19718358039381,76.93798449612403,7.538802660753873,0.45963057406988894,0,0.0,100,100,100,0.23036300000967458 -100,25,0.2,iterated_maximum_matching_unadjusted,3,95.53782642640239,88.5480572597137,6.54205607476635,0.4534828238711083,0,0.0,100,100,100,0.2418533000163734 -100,25,0.2,iterated_maximum_matching_unadjusted,4,87.44913135198117,77.03984819734345,6.952965235173821,1.1083987951754872,0,0.0,100,100,100,0.22290489997249097 -100,25,0.2,iterated_maximum_matching_adjusted,0,94.1874926051366,84.95762711864407,5.882352941176478,0.7169073131600606,0,0.0,100,100,100,0.29628969996701926 +100,25,0.2,utilitarian_matching,0,94.64043761750744,80.49382716049382,16.049382716049394,1.8747131994095805,0,0.0,97,97,100,0.103514099959284 +100,25,0.2,utilitarian_matching,1,97.68695410534912,91.91374663072776,4.218362282878402,0.5103950078235299,0,0.0,99,100,100,0.1040280000306665 +100,25,0.2,utilitarian_matching,2,90.83928690960371,78.03738317757009,21.26168224299066,4.498090453093328,0,0.0,98,99,100,0.0909586999914608 +100,25,0.2,utilitarian_matching,3,96.13268401096217,87.03703703703704,7.407407407407405,0.99065926118303,0,0.0,98,100,100,0.0961788999848067 +100,25,0.2,utilitarian_matching,4,88.17878179726341,72.04301075268818,21.29032258064516,5.472891797374614,0,0.0,98,99,100,0.1044708000263199 +100,25,0.2,iterated_maximum_matching_unadjusted,0,94.1874926051366,84.95762711864407,5.882352941176478,0.7169073131600606,0,0.0,100,100,100,0.2284602000145241 +100,25,0.2,iterated_maximum_matching_unadjusted,1,97.27418546482212,90.33078880407125,3.053435114503813,0.1336317716207837,0,0.0,100,100,100,0.2400590000324882 +100,25,0.2,iterated_maximum_matching_unadjusted,2,90.1971835803938,76.93798449612403,7.538802660753873,0.4596305740698889,0,0.0,100,100,100,0.2303630000096745 +100,25,0.2,iterated_maximum_matching_unadjusted,3,95.5378264264024,88.5480572597137,6.54205607476635,0.4534828238711083,0,0.0,100,100,100,0.2418533000163734 +100,25,0.2,iterated_maximum_matching_unadjusted,4,87.44913135198117,77.03984819734345,6.952965235173821,1.1083987951754872,0,0.0,100,100,100,0.2229048999724909 +100,25,0.2,iterated_maximum_matching_adjusted,0,94.1874926051366,84.95762711864407,5.882352941176478,0.7169073131600606,0,0.0,100,100,100,0.2962896999670192 100,25,0.2,iterated_maximum_matching_adjusted,1,97.27418546482212,90.33078880407125,3.053435114503813,0.1336317716207837,0,0.0,100,100,100,0.2510545999975875 -100,25,0.2,iterated_maximum_matching_adjusted,2,90.19718358039381,76.93798449612403,7.538802660753873,0.45963057406988894,0,0.0,100,100,100,0.2722222000011243 -100,25,0.2,iterated_maximum_matching_adjusted,3,95.53782642640239,88.5480572597137,6.54205607476635,0.4534828238711083,0,0.0,100,100,100,0.24756309995427728 +100,25,0.2,iterated_maximum_matching_adjusted,2,90.1971835803938,76.93798449612403,7.538802660753873,0.4596305740698889,0,0.0,100,100,100,0.2722222000011243 +100,25,0.2,iterated_maximum_matching_adjusted,3,95.5378264264024,88.5480572597137,6.54205607476635,0.4534828238711083,0,0.0,100,100,100,0.2475630999542772 100,25,0.2,iterated_maximum_matching_adjusted,4,87.44913135198117,77.03984819734345,6.952965235173821,1.1083987951754872,0,0.0,100,100,100,0.2669136999757029 -100,25,0.2,serial_dictatorship,0,86.34790333163053,48.29787234042553,51.70212765957447,12.518469483996238,0,0.0,60,68,75,0.02030509995529428 -100,25,0.2,serial_dictatorship,1,91.5441099597429,47.356321839080465,52.470588235294116,7.444564939327704,0,0.0,72,79,83,0.020445299975108355 -100,25,0.2,serial_dictatorship,2,81.67909973785267,36.04651162790697,63.95348837209303,17.55905348874061,0,0.0,57,61,63,0.030123100033961236 -100,25,0.2,serial_dictatorship,3,89.35118311847104,42.379958246346554,57.620041753653446,9.440338073291846,0,0.0,71,77,81,0.020223600033205003 -100,25,0.2,serial_dictatorship,4,77.39753670943976,30.158730158730158,69.64285714285714,22.161977496001395,0,0.0,50,56,60,0.019526600022800267 -100,25,0.2,round_robin,0,93.45854049082858,81.3953488372093,8.474576271186436,1.2291976249233008,0,0.0,100,100,100,0.020446800044737756 -100,25,0.2,round_robin,1,96.85109256663083,88.19599109131403,8.017817371937639,0.4263982716275207,0,0.0,100,100,100,0.021272399986628443 -100,25,0.2,round_robin,2,89.47363542036574,67.63565891472868,8.425720620842583,0.9197849331685685,0,0.0,100,100,100,0.01986079994821921 -100,25,0.2,round_robin,3,94.93583182523446,86.36363636363636,6.54205607476635,0.7123009990449825,0,0.0,100,100,100,0.019713199988473207 -100,25,0.2,round_robin,4,86.69135385720314,71.55322862129145,12.108559498956154,1.884476983252258,0,0.0,100,100,100,0.01952440000604838 -100,25,0.2,bidirectional_round_robin,0,93.36685124675932,81.3953488372093,7.095343680709547,0.7866229754471229,0,0.0,100,100,100,0.02133789996150881 -100,25,0.2,bidirectional_round_robin,1,96.83027441846271,89.086859688196,6.78391959798995,0.44611954638972096,0,0.0,100,100,100,0.020838100055698305 -100,25,0.2,bidirectional_round_robin,2,89.20058311281313,72.48062015503875,7.36434108527132,1.1261365322196404,0,0.0,100,100,100,0.019942200044170022 -100,25,0.2,bidirectional_round_robin,3,95.0204009942441,87.21649484536083,7.862903225806463,0.5981409956573045,0,0.0,100,100,100,0.02054230001522228 -100,25,0.2,bidirectional_round_robin,4,86.45058605208267,71.53153153153153,14.594594594594597,2.0074943329238666,0,0.0,100,100,100,0.019993799971416593 +100,25,0.2,serial_dictatorship,0,86.34790333163053,48.29787234042553,51.70212765957447,12.518469483996238,0,0.0,60,68,75,0.0203050999552942 +100,25,0.2,serial_dictatorship,1,91.5441099597429,47.35632183908047,52.47058823529412,7.444564939327704,0,0.0,72,79,83,0.0204452999751083 +100,25,0.2,serial_dictatorship,2,81.67909973785267,36.04651162790697,63.95348837209303,17.55905348874061,0,0.0,57,61,63,0.0301231000339612 +100,25,0.2,serial_dictatorship,3,89.35118311847104,42.37995824634656,57.620041753653446,9.440338073291846,0,0.0,71,77,81,0.020223600033205 +100,25,0.2,serial_dictatorship,4,77.39753670943976,30.15873015873016,69.64285714285714,22.161977496001395,0,0.0,50,56,60,0.0195266000228002 +100,25,0.2,round_robin,0,93.45854049082858,81.3953488372093,8.474576271186436,1.2291976249233008,0,0.0,100,100,100,0.0204468000447377 +100,25,0.2,round_robin,1,96.85109256663084,88.19599109131403,8.017817371937639,0.4263982716275207,0,0.0,100,100,100,0.0212723999866284 +100,25,0.2,round_robin,2,89.47363542036574,67.63565891472868,8.425720620842583,0.9197849331685684,0,0.0,100,100,100,0.0198607999482192 +100,25,0.2,round_robin,3,94.93583182523446,86.36363636363636,6.54205607476635,0.7123009990449825,0,0.0,100,100,100,0.0197131999884732 +100,25,0.2,round_robin,4,86.69135385720314,71.55322862129145,12.108559498956154,1.884476983252258,0,0.0,100,100,100,0.0195244000060483 +100,25,0.2,bidirectional_round_robin,0,93.36685124675932,81.3953488372093,7.095343680709547,0.7866229754471229,0,0.0,100,100,100,0.0213378999615088 +100,25,0.2,bidirectional_round_robin,1,96.83027441846272,89.086859688196,6.78391959798995,0.4461195463897209,0,0.0,100,100,100,0.0208381000556983 +100,25,0.2,bidirectional_round_robin,2,89.20058311281313,72.48062015503875,7.36434108527132,1.1261365322196404,0,0.0,100,100,100,0.01994220004417 +100,25,0.2,bidirectional_round_robin,3,95.0204009942441,87.21649484536083,7.862903225806463,0.5981409956573045,0,0.0,100,100,100,0.0205423000152222 +100,25,0.2,bidirectional_round_robin,4,86.45058605208267,71.53153153153153,14.594594594594597,2.0074943329238666,0,0.0,100,100,100,0.0199937999714165 100,25,0.2,almost_egalitarian_without_donation,0,94.4057299693128,86.65105386416862,9.601873536299763,0.8969543593348938,0,0.0,99,100,100,3.734966500021983 100,25,0.2,almost_egalitarian_without_donation,1,97.59498583409822,92.5925925925926,4.28211586901763,0.4099015073691092,0,0.0,99,100,100,3.661471300001722 -100,25,0.2,almost_egalitarian_without_donation,2,90.59978538996447,79.42477876106194,12.128712871287135,2.7650904192716332,0,0.0,98,99,100,3.651340499985963 +100,25,0.2,almost_egalitarian_without_donation,2,90.59978538996448,79.42477876106194,12.128712871287137,2.765090419271633,0,0.0,98,99,100,3.651340499985963 100,25,0.2,almost_egalitarian_without_donation,3,95.94985785796158,90.5829596412556,5.829596412556057,0.7469037493686345,0,0.0,99,100,100,3.702738199965097 100,25,0.2,almost_egalitarian_without_donation,4,87.81270804006525,73.45794392523365,19.813084112149525,3.601989318028001,0,0.0,99,99,100,3.738547799992375 -100,25,0.2,almost_egalitarian_with_donation,0,94.47380390750335,85.55045871559633,8.486238532110093,1.2886629921332513,0,0.0,99,99,100,3.7031221000361256 -100,25,0.2,almost_egalitarian_with_donation,1,97.57214018623328,92.5925925925926,4.28211586901763,0.30824686263679424,0,0.0,100,100,100,3.680127099971287 -100,25,0.2,almost_egalitarian_with_donation,2,90.61935316357678,79.42477876106194,12.128712871287135,2.347635768345518,0,0.0,99,100,100,3.7006387000437826 -100,25,0.2,almost_egalitarian_with_donation,3,96.0278064715926,88.79310344827587,6.4655172413793025,0.8116367925063311,0,0.0,98,100,100,3.736175300029572 -100,25,0.2,almost_egalitarian_with_donation,4,87.91336933060899,76.11650485436893,23.883495145631073,3.810682647291833,0,0.0,99,100,100,3.6837108999607153 -100,25,0.5,utilitarian_matching,0,96.34339595394924,82.9683698296837,13.381995133819956,0.7427032377619391,0,0.0,98,99,100,0.10293579997960478 -100,25,0.5,utilitarian_matching,1,98.59424955650995,94.33106575963718,3.2581453634085165,0.15115016649489746,0,0.0,99,100,100,0.10089519998291507 -100,25,0.5,utilitarian_matching,2,93.2005393636174,81.81818181818183,16.36363636363636,1.9465730037329831,0,0.0,100,100,100,0.09439290000591427 -100,25,0.5,utilitarian_matching,3,97.31653990365449,88.66666666666667,6.147540983606561,0.5326003825546275,0,0.0,100,100,100,0.10133230005158111 -100,25,0.5,utilitarian_matching,4,91.3730834137851,77.33333333333333,17.142857142857153,2.995946180670539,0,0.0,100,100,100,0.10522480000508949 +100,25,0.2,almost_egalitarian_with_donation,0,94.47380390750337,85.55045871559633,8.486238532110093,1.2886629921332513,0,0.0,99,99,100,3.7031221000361256 +100,25,0.2,almost_egalitarian_with_donation,1,97.57214018623328,92.5925925925926,4.28211586901763,0.3082468626367942,0,0.0,100,100,100,3.680127099971287 +100,25,0.2,almost_egalitarian_with_donation,2,90.61935316357678,79.42477876106194,12.128712871287137,2.347635768345518,0,0.0,99,100,100,3.700638700043783 +100,25,0.2,almost_egalitarian_with_donation,3,96.0278064715926,88.79310344827587,6.465517241379303,0.8116367925063311,0,0.0,98,100,100,3.736175300029572 +100,25,0.2,almost_egalitarian_with_donation,4,87.91336933060899,76.11650485436893,23.88349514563108,3.810682647291833,0,0.0,99,100,100,3.6837108999607153 +100,25,0.5,utilitarian_matching,0,96.34339595394924,82.9683698296837,13.381995133819956,0.7427032377619391,0,0.0,98,99,100,0.1029357999796047 +100,25,0.5,utilitarian_matching,1,98.59424955650996,94.33106575963718,3.2581453634085165,0.1511501664948974,0,0.0,99,100,100,0.100895199982915 +100,25,0.5,utilitarian_matching,2,93.2005393636174,81.81818181818183,16.36363636363636,1.9465730037329831,0,0.0,100,100,100,0.0943929000059142 +100,25,0.5,utilitarian_matching,3,97.31653990365449,88.66666666666667,6.147540983606561,0.5326003825546275,0,0.0,100,100,100,0.1013323000515811 +100,25,0.5,utilitarian_matching,4,91.3730834137851,77.33333333333333,17.142857142857153,2.995946180670539,0,0.0,100,100,100,0.1052248000050894 100,25,0.5,iterated_maximum_matching_unadjusted,0,95.89143135198594,86.6,6.800000000000011,0.2239339857307648,0,0.0,100,100,100,0.2370748000103049 -100,25,0.5,iterated_maximum_matching_unadjusted,1,98.30663746554572,93.24324324324324,0.7058823529411598,0.00940074390411894,0,0.0,100,100,100,0.25128350005252287 -100,25,0.5,iterated_maximum_matching_unadjusted,2,92.55965082803945,76.79856115107914,5.57553956834532,0.23692784023263527,0,0.0,100,100,100,0.27542150003137067 -100,25,0.5,iterated_maximum_matching_unadjusted,3,96.80211173102289,88.4990253411306,4.651162790697683,0.14426320499260428,0,0.0,100,100,100,0.24300939997192472 -100,25,0.5,iterated_maximum_matching_unadjusted,4,90.7649249495836,77.2893772893773,15.384615384615373,0.849348298248148,0,0.0,100,100,100,0.26685799995902926 -100,25,0.5,iterated_maximum_matching_adjusted,0,95.89143135198594,86.6,6.800000000000011,0.2239339857307648,0,0.0,100,100,100,0.23923599999397993 -100,25,0.5,iterated_maximum_matching_adjusted,1,98.30663746554572,93.24324324324324,0.7058823529411598,0.00940074390411894,0,0.0,100,100,100,0.2679848000407219 -100,25,0.5,iterated_maximum_matching_adjusted,2,92.55965082803945,76.79856115107914,5.57553956834532,0.23692784023263527,0,0.0,100,100,100,0.28345500002615154 -100,25,0.5,iterated_maximum_matching_adjusted,3,96.80211173102289,88.4990253411306,4.651162790697683,0.14426320499260428,0,0.0,100,100,100,0.25522280001314357 -100,25,0.5,iterated_maximum_matching_adjusted,4,90.7649249495836,77.2893772893773,15.384615384615373,0.849348298248148,0,0.0,100,100,100,0.28081660001771525 -100,25,0.5,serial_dictatorship,0,88.57807701824791,44.153225806451616,51.92697768762677,9.616092471501737,0,0.0,65,75,84,0.021201100025791675 -100,25,0.5,serial_dictatorship,1,93.60818349753912,45.14767932489451,43.037974683544306,4.817635739068069,0,0.0,78,83,90,0.02084640000248328 -100,25,0.5,serial_dictatorship,2,84.08928784338566,33.63309352517986,61.33093525179855,14.710458811636393,0,0.0,67,67,68,0.021159800002351403 -100,25,0.5,serial_dictatorship,3,91.03175168904595,37.381404174573056,56.736242884250466,7.272393357894295,0,0.0,75,83,88,0.02091259998269379 -100,25,0.5,serial_dictatorship,4,80.43516932117008,30.175438596491226,67.89473684210526,18.40866323236882,0,0.0,57,62,67,0.02191000001039356 -100,25,0.5,round_robin,0,95.4706689704957,84.4298245614035,6.776180698151947,0.3851655492590412,0,0.0,100,100,100,0.020247199980076402 -100,25,0.5,round_robin,1,97.80654849890578,91.1504424778761,3.7610619469026574,0.12246578421753711,0,0.0,100,100,100,0.019656799966469407 -100,25,0.5,round_robin,2,91.90327675818757,71.40287769784173,11.926605504587158,0.8609211333613404,0,0.0,100,100,100,0.020664500014390796 -100,25,0.5,round_robin,3,96.46648982143189,89.2,4.925053533190564,0.20685982629781605,0,0.0,100,100,100,0.02074830001220107 -100,25,0.5,round_robin,4,89.99118779592266,76.95390781563127,13.827655310621239,1.2142822065347532,0,0.0,100,100,100,0.01938549999613315 -100,25,0.5,bidirectional_round_robin,0,95.47594224093642,84.4298245614035,5.882352941176478,0.3439194204302252,0,0.0,100,100,100,0.020223100029397756 -100,25,0.5,bidirectional_round_robin,1,97.81569676967203,91.1504424778761,3.7610619469026574,0.08127949816510167,0,0.0,100,100,100,0.020870600012131035 -100,25,0.5,bidirectional_round_robin,2,91.77574751808089,71.40287769784173,6.9288389513108655,0.48934438660669555,0,0.0,100,100,100,0.020408299984410405 -100,25,0.5,bidirectional_round_robin,3,96.4404138504209,88.13559322033898,5.139186295503208,0.13773762053633745,0,0.0,100,100,100,0.02156030002515763 -100,25,0.5,bidirectional_round_robin,4,89.73695646806607,77.2893772893773,8.974358974358964,0.9713570992201151,0,0.0,100,100,100,0.020280500000808388 +100,25,0.5,iterated_maximum_matching_unadjusted,1,98.30663746554572,93.24324324324324,0.7058823529411598,0.0094007439041189,0,0.0,100,100,100,0.2512835000525228 +100,25,0.5,iterated_maximum_matching_unadjusted,2,92.55965082803944,76.79856115107914,5.57553956834532,0.2369278402326352,0,0.0,100,100,100,0.2754215000313706 +100,25,0.5,iterated_maximum_matching_unadjusted,3,96.80211173102288,88.4990253411306,4.651162790697683,0.1442632049926042,0,0.0,100,100,100,0.2430093999719247 +100,25,0.5,iterated_maximum_matching_unadjusted,4,90.7649249495836,77.2893772893773,15.384615384615373,0.849348298248148,0,0.0,100,100,100,0.2668579999590292 +100,25,0.5,iterated_maximum_matching_adjusted,0,95.89143135198594,86.6,6.800000000000011,0.2239339857307648,0,0.0,100,100,100,0.2392359999939799 +100,25,0.5,iterated_maximum_matching_adjusted,1,98.30663746554572,93.24324324324324,0.7058823529411598,0.0094007439041189,0,0.0,100,100,100,0.2679848000407219 +100,25,0.5,iterated_maximum_matching_adjusted,2,92.55965082803944,76.79856115107914,5.57553956834532,0.2369278402326352,0,0.0,100,100,100,0.2834550000261515 +100,25,0.5,iterated_maximum_matching_adjusted,3,96.80211173102288,88.4990253411306,4.651162790697683,0.1442632049926042,0,0.0,100,100,100,0.2552228000131435 +100,25,0.5,iterated_maximum_matching_adjusted,4,90.7649249495836,77.2893772893773,15.384615384615373,0.849348298248148,0,0.0,100,100,100,0.2808166000177152 +100,25,0.5,serial_dictatorship,0,88.57807701824791,44.153225806451616,51.92697768762677,9.616092471501736,0,0.0,65,75,84,0.0212011000257916 +100,25,0.5,serial_dictatorship,1,93.60818349753912,45.14767932489451,43.03797468354431,4.817635739068069,0,0.0,78,83,90,0.0208464000024832 +100,25,0.5,serial_dictatorship,2,84.08928784338566,33.63309352517986,61.33093525179855,14.710458811636393,0,0.0,67,67,68,0.0211598000023514 +100,25,0.5,serial_dictatorship,3,91.03175168904596,37.381404174573056,56.73624288425047,7.272393357894295,0,0.0,75,83,88,0.0209125999826937 +100,25,0.5,serial_dictatorship,4,80.43516932117008,30.175438596491222,67.89473684210526,18.40866323236882,0,0.0,57,62,67,0.0219100000103935 +100,25,0.5,round_robin,0,95.4706689704957,84.4298245614035,6.776180698151947,0.3851655492590412,0,0.0,100,100,100,0.0202471999800764 +100,25,0.5,round_robin,1,97.80654849890578,91.1504424778761,3.7610619469026574,0.1224657842175371,0,0.0,100,100,100,0.0196567999664694 +100,25,0.5,round_robin,2,91.90327675818756,71.40287769784173,11.926605504587158,0.8609211333613404,0,0.0,100,100,100,0.0206645000143907 +100,25,0.5,round_robin,3,96.46648982143188,89.2,4.925053533190564,0.206859826297816,0,0.0,100,100,100,0.020748300012201 +100,25,0.5,round_robin,4,89.99118779592266,76.95390781563127,13.82765531062124,1.2142822065347532,0,0.0,100,100,100,0.0193854999961331 +100,25,0.5,bidirectional_round_robin,0,95.47594224093642,84.4298245614035,5.882352941176478,0.3439194204302252,0,0.0,100,100,100,0.0202231000293977 +100,25,0.5,bidirectional_round_robin,1,97.81569676967204,91.1504424778761,3.7610619469026574,0.0812794981651016,0,0.0,100,100,100,0.020870600012131 +100,25,0.5,bidirectional_round_robin,2,91.77574751808088,71.40287769784173,6.9288389513108655,0.4893443866066955,0,0.0,100,100,100,0.0204082999844104 +100,25,0.5,bidirectional_round_robin,3,96.4404138504209,88.13559322033898,5.139186295503208,0.1377376205363374,0,0.0,100,100,100,0.0215603000251576 +100,25,0.5,bidirectional_round_robin,4,89.73695646806607,77.2893772893773,8.974358974358964,0.9713570992201151,0,0.0,100,100,100,0.0202805000008083 100,25,0.5,almost_egalitarian_without_donation,0,96.14493839512716,87.36141906873614,9.330628803245446,0.7600476390534172,0,0.0,99,100,100,3.738787800015416 -100,25,0.5,almost_egalitarian_without_donation,1,98.49130166690072,92.11136890951276,2.7842227378190216,0.12387995812680316,0,0.0,99,100,100,3.7037184000364505 +100,25,0.5,almost_egalitarian_without_donation,1,98.49130166690072,92.11136890951276,2.7842227378190216,0.1238799581268031,0,0.0,99,100,100,3.7037184000364505 100,25,0.5,almost_egalitarian_without_donation,2,93.03290605173164,83.77777777777777,9.663865546218489,1.522690378879845,0,0.0,100,100,100,3.681253699993249 -100,25,0.5,almost_egalitarian_without_donation,3,97.18201967567897,90.46563192904657,6.430155210643022,0.41043809713278606,0,0.0,100,100,100,3.7968374000047334 +100,25,0.5,almost_egalitarian_without_donation,3,97.18201967567896,90.46563192904657,6.430155210643022,0.410438097132786,0,0.0,100,100,100,3.796837400004733 100,25,0.5,almost_egalitarian_without_donation,4,90.9799784071769,78.46715328467153,13.696060037523452,2.0992210638832587,0,0.0,99,100,100,3.723944199969992 -100,25,0.5,almost_egalitarian_with_donation,0,96.23701637677654,87.65652951699462,6.818181818181813,0.5327026039153354,0,0.0,100,100,100,3.7161315999692306 -100,25,0.5,almost_egalitarian_with_donation,1,98.50441475219382,92.11136890951276,2.597402597402592,0.1056072722650434,0,0.0,99,100,100,3.7548261000192724 -100,25,0.5,almost_egalitarian_with_donation,2,92.99885702862137,83.77777777777777,9.663865546218489,1.4999826898409554,0,0.0,100,100,100,3.711490000016056 -100,25,0.5,almost_egalitarian_with_donation,3,97.1843141333396,90.46563192904657,6.430155210643022,0.43427854589417436,0,0.0,100,100,100,3.820112599991262 -100,25,0.5,almost_egalitarian_with_donation,4,91.06363955753093,78.46715328467153,13.133208255159488,2.2425163871801965,0,0.0,99,100,100,3.683341500000097 -100,25,0.8,utilitarian_matching,0,97.39161805159894,85.13189448441247,10.79136690647482,0.3222441515238035,0,0.0,99,100,100,0.09464619995560497 -100,25,0.8,utilitarian_matching,1,99.08655942287326,94.14634146341463,3.41463414634147,0.0341463414634147,0,0.0,99,100,100,0.09012920001987368 -100,25,0.8,utilitarian_matching,2,94.78606921117866,84.68271334792122,11.159737417943106,1.0051052659072979,0,0.0,100,100,100,0.08835650002583861 -100,25,0.8,utilitarian_matching,3,98.03598740141825,89.48497854077253,4.670912951167736,0.23649678528741247,0,0.0,100,100,100,0.09538279997650534 -100,25,0.8,utilitarian_matching,4,93.41971563998926,81.49466192170819,12.989323843416372,1.7379462913654207,0,0.0,100,100,100,0.09480389999225736 -100,25,0.8,iterated_maximum_matching_unadjusted,0,96.98394728405955,88.2466281310212,4.780114722753353,0.15212213776036748,0,0.0,100,100,100,0.2365916999988258 -100,25,0.8,iterated_maximum_matching_unadjusted,1,98.82999517776794,94.37229437229438,0.23201856148492084,0.0023201856148492082,0,0.0,100,100,100,0.2473436999716796 -100,25,0.8,iterated_maximum_matching_unadjusted,2,94.20401808401398,81.57453936348409,7.2614107883817525,0.26560484115251126,0,0.0,100,100,100,0.2821604000055231 -100,25,0.8,iterated_maximum_matching_unadjusted,3,97.63804896875871,91.05839416058394,3.308823529411754,0.09764934805862069,0,0.0,100,100,100,0.2395523000159301 -100,25,0.8,iterated_maximum_matching_unadjusted,4,92.8862710310011,78.49462365591397,14.81481481481481,0.6502878195397206,0,0.0,100,100,100,0.22471670003142208 -100,25,0.8,iterated_maximum_matching_adjusted,0,96.98394728405955,88.2466281310212,4.780114722753353,0.15212213776036748,0,0.0,100,100,100,0.28926280001178384 -100,25,0.8,iterated_maximum_matching_adjusted,1,98.82999517776794,94.37229437229438,0.23201856148492084,0.0023201856148492082,0,0.0,100,100,100,0.2590364000061527 -100,25,0.8,iterated_maximum_matching_adjusted,2,94.20401808401398,81.57453936348409,7.2614107883817525,0.26560484115251126,0,0.0,100,100,100,0.24874960002489388 -100,25,0.8,iterated_maximum_matching_adjusted,3,97.63804896875871,91.05839416058394,3.308823529411754,0.09764934805862069,0,0.0,100,100,100,0.2948954000021331 -100,25,0.8,iterated_maximum_matching_adjusted,4,92.8862710310011,78.49462365591397,14.81481481481481,0.6502878195397206,0,0.0,100,100,100,0.24083570000948384 -100,25,0.8,serial_dictatorship,0,90.04605882239274,46.257197696737045,46.031746031746025,7.94813126112749,0,0.0,73,82,85,0.022878299991134554 -100,25,0.8,serial_dictatorship,1,94.61896471378043,43.41085271317829,42.24806201550387,3.871207850972949,0,0.0,82,88,93,0.02132159995380789 -100,25,0.8,serial_dictatorship,2,86.1309020819282,30.65326633165829,63.81909547738694,12.41043137666897,0,0.0,72,73,74,0.021479899995028973 -100,25,0.8,serial_dictatorship,3,92.30362794266084,33.21739130434783,59.65217391304347,5.695381525841146,0,0.0,83,88,92,0.02159130002837628 -100,25,0.8,serial_dictatorship,4,82.46988344301158,27.377049180327866,68.85245901639345,15.662243992552133,0,0.0,61,65,72,0.022651099949143827 -100,25,0.8,round_robin,0,96.57875585078801,88.2466281310212,3.0592734225621427,0.16444007768143534,0,0.0,100,100,100,0.020900100003927946 -100,25,0.8,round_robin,1,98.45432916759248,91.66666666666666,0.681818181818187,0.009138367433031078,0,0.0,100,100,100,0.021997899981215596 -100,25,0.8,round_robin,2,93.65174349566689,73.03182579564489,12.395309882747071,0.7905817488011391,0,0.0,100,100,100,0.022448899981100112 -100,25,0.8,round_robin,3,97.27031427633197,89.8876404494382,3.75,0.08608956123545823,0,0.0,100,100,100,0.023644100001547486 -100,25,0.8,round_robin,4,92.20235266653717,71.67449139280126,13.993174061433464,1.1177528648156894,0,0.0,100,100,100,0.021759900031611323 -100,25,0.8,bidirectional_round_robin,0,96.56680967918632,88.2466281310212,3.0592734225621427,0.09472366774617598,0,0.0,100,100,100,0.0215440999600105 -100,25,0.8,bidirectional_round_robin,1,98.37021037287042,91.66666666666666,0.0,0.0,0,0.0,100,100,100,0.021802100003696978 -100,25,0.8,bidirectional_round_robin,2,93.64649481870984,73.86934673366834,9.310344827586206,0.2833741189326852,0,0.0,100,100,100,0.021091700007673353 -100,25,0.8,bidirectional_round_robin,3,97.18993248527713,90.9090909090909,2.9227557411273466,0.06531687639497293,0,0.0,100,100,100,0.020598400034941733 -100,25,0.8,bidirectional_round_robin,4,91.96762831035076,74.02190923317684,14.285714285714278,0.860163997589028,0,0.0,100,100,100,0.02020299999276176 -100,25,0.8,almost_egalitarian_without_donation,0,97.21603471785664,89.33092224231464,6.871609403254979,0.25305272360532866,0,0.0,100,100,100,3.802600600000005 -100,25,0.8,almost_egalitarian_without_donation,1,99.0325715005223,94.77124183006535,0.2439024390243958,0.002439024390243958,0,0.0,99,100,100,3.672808100003749 -100,25,0.8,almost_egalitarian_without_donation,2,94.60667809899424,85.8267716535433,6.055363321799305,0.7102003675911607,0,0.0,100,100,100,3.8054350999882445 -100,25,0.8,almost_egalitarian_without_donation,3,97.90371192502927,93.69918699186992,5.353728489483743,0.10807482490759028,0,0.0,100,100,100,3.7930931000155397 -100,25,0.8,almost_egalitarian_without_donation,4,93.14506618316913,79.08256880733944,20.91743119266056,1.5875751715269069,0,0.0,100,100,100,3.7288109000073746 -100,25,0.8,almost_egalitarian_with_donation,0,97.23926064639554,89.33092224231464,5.283757338551865,0.3318393575431074,0,0.0,100,100,100,3.7853223999845795 -100,25,0.8,almost_egalitarian_with_donation,1,99.02053768962386,93.07359307359307,0.2439024390243958,0.002439024390243958,0,0.0,99,100,100,3.705238999973517 +100,25,0.5,almost_egalitarian_with_donation,0,96.23701637677654,87.65652951699462,6.818181818181813,0.5327026039153354,0,0.0,100,100,100,3.716131599969231 +100,25,0.5,almost_egalitarian_with_donation,1,98.50441475219382,92.11136890951276,2.597402597402592,0.1056072722650434,0,0.0,99,100,100,3.754826100019272 +100,25,0.5,almost_egalitarian_with_donation,2,92.99885702862136,83.77777777777777,9.663865546218489,1.4999826898409554,0,0.0,100,100,100,3.711490000016056 +100,25,0.5,almost_egalitarian_with_donation,3,97.1843141333396,90.46563192904657,6.430155210643022,0.4342785458941743,0,0.0,100,100,100,3.820112599991262 +100,25,0.5,almost_egalitarian_with_donation,4,91.06363955753092,78.46715328467153,13.133208255159488,2.2425163871801965,0,0.0,99,100,100,3.683341500000097 +100,25,0.8,utilitarian_matching,0,97.39161805159894,85.13189448441247,10.79136690647482,0.3222441515238035,0,0.0,99,100,100,0.0946461999556049 +100,25,0.8,utilitarian_matching,1,99.08655942287326,94.14634146341464,3.41463414634147,0.0341463414634147,0,0.0,99,100,100,0.0901292000198736 +100,25,0.8,utilitarian_matching,2,94.78606921117866,84.68271334792122,11.159737417943106,1.005105265907298,0,0.0,100,100,100,0.0883565000258386 +100,25,0.8,utilitarian_matching,3,98.03598740141824,89.48497854077253,4.670912951167736,0.2364967852874124,0,0.0,100,100,100,0.0953827999765053 +100,25,0.8,utilitarian_matching,4,93.41971563998926,81.49466192170819,12.989323843416372,1.737946291365421,0,0.0,100,100,100,0.0948038999922573 +100,25,0.8,iterated_maximum_matching_unadjusted,0,96.98394728405955,88.2466281310212,4.780114722753353,0.1521221377603674,0,0.0,100,100,100,0.2365916999988258 +100,25,0.8,iterated_maximum_matching_unadjusted,1,98.82999517776794,94.37229437229438,0.2320185614849208,0.0023201856148492,0,0.0,100,100,100,0.2473436999716796 +100,25,0.8,iterated_maximum_matching_unadjusted,2,94.20401808401398,81.57453936348409,7.261410788381752,0.2656048411525112,0,0.0,100,100,100,0.2821604000055231 +100,25,0.8,iterated_maximum_matching_unadjusted,3,97.63804896875872,91.05839416058394,3.308823529411754,0.0976493480586206,0,0.0,100,100,100,0.2395523000159301 +100,25,0.8,iterated_maximum_matching_unadjusted,4,92.8862710310011,78.49462365591397,14.81481481481481,0.6502878195397206,0,0.0,100,100,100,0.224716700031422 +100,25,0.8,iterated_maximum_matching_adjusted,0,96.98394728405955,88.2466281310212,4.780114722753353,0.1521221377603674,0,0.0,100,100,100,0.2892628000117838 +100,25,0.8,iterated_maximum_matching_adjusted,1,98.82999517776794,94.37229437229438,0.2320185614849208,0.0023201856148492,0,0.0,100,100,100,0.2590364000061527 +100,25,0.8,iterated_maximum_matching_adjusted,2,94.20401808401398,81.57453936348409,7.261410788381752,0.2656048411525112,0,0.0,100,100,100,0.2487496000248938 +100,25,0.8,iterated_maximum_matching_adjusted,3,97.63804896875872,91.05839416058394,3.308823529411754,0.0976493480586206,0,0.0,100,100,100,0.2948954000021331 +100,25,0.8,iterated_maximum_matching_adjusted,4,92.8862710310011,78.49462365591397,14.81481481481481,0.6502878195397206,0,0.0,100,100,100,0.2408357000094838 +100,25,0.8,serial_dictatorship,0,90.04605882239274,46.257197696737045,46.031746031746025,7.94813126112749,0,0.0,73,82,85,0.0228782999911345 +100,25,0.8,serial_dictatorship,1,94.61896471378044,43.41085271317829,42.24806201550387,3.871207850972949,0,0.0,82,88,93,0.0213215999538078 +100,25,0.8,serial_dictatorship,2,86.1309020819282,30.65326633165829,63.81909547738694,12.41043137666897,0,0.0,72,73,74,0.0214798999950289 +100,25,0.8,serial_dictatorship,3,92.30362794266084,33.21739130434783,59.65217391304347,5.695381525841146,0,0.0,83,88,92,0.0215913000283762 +100,25,0.8,serial_dictatorship,4,82.46988344301158,27.377049180327862,68.85245901639345,15.662243992552131,0,0.0,61,65,72,0.0226510999491438 +100,25,0.8,round_robin,0,96.578755850788,88.2466281310212,3.0592734225621427,0.1644400776814353,0,0.0,100,100,100,0.0209001000039279 +100,25,0.8,round_robin,1,98.45432916759248,91.66666666666666,0.681818181818187,0.009138367433031,0,0.0,100,100,100,0.0219978999812155 +100,25,0.8,round_robin,2,93.65174349566688,73.03182579564489,12.395309882747071,0.7905817488011391,0,0.0,100,100,100,0.0224488999811001 +100,25,0.8,round_robin,3,97.27031427633196,89.8876404494382,3.75,0.0860895612354582,0,0.0,100,100,100,0.0236441000015474 +100,25,0.8,round_robin,4,92.20235266653717,71.67449139280126,13.993174061433464,1.1177528648156894,0,0.0,100,100,100,0.0217599000316113 +100,25,0.8,bidirectional_round_robin,0,96.56680967918632,88.2466281310212,3.0592734225621427,0.0947236677461759,0,0.0,100,100,100,0.0215440999600105 +100,25,0.8,bidirectional_round_robin,1,98.37021037287042,91.66666666666666,0.0,0.0,0,0.0,100,100,100,0.0218021000036969 +100,25,0.8,bidirectional_round_robin,2,93.64649481870984,73.86934673366834,9.310344827586206,0.2833741189326852,0,0.0,100,100,100,0.0210917000076733 +100,25,0.8,bidirectional_round_robin,3,97.18993248527713,90.9090909090909,2.9227557411273466,0.0653168763949729,0,0.0,100,100,100,0.0205984000349417 +100,25,0.8,bidirectional_round_robin,4,91.96762831035076,74.02190923317684,14.285714285714278,0.860163997589028,0,0.0,100,100,100,0.0202029999927617 +100,25,0.8,almost_egalitarian_without_donation,0,97.21603471785664,89.33092224231464,6.871609403254979,0.2530527236053286,0,0.0,100,100,100,3.802600600000005 +100,25,0.8,almost_egalitarian_without_donation,1,99.0325715005223,94.77124183006536,0.2439024390243958,0.0024390243902439,0,0.0,99,100,100,3.672808100003749 +100,25,0.8,almost_egalitarian_without_donation,2,94.60667809899424,85.8267716535433,6.055363321799305,0.7102003675911607,0,0.0,100,100,100,3.805435099988245 +100,25,0.8,almost_egalitarian_without_donation,3,97.90371192502928,93.69918699186992,5.353728489483743,0.1080748249075902,0,0.0,100,100,100,3.79309310001554 +100,25,0.8,almost_egalitarian_without_donation,4,93.14506618316912,79.08256880733944,20.91743119266056,1.5875751715269069,0,0.0,100,100,100,3.728810900007375 +100,25,0.8,almost_egalitarian_with_donation,0,97.23926064639554,89.33092224231464,5.283757338551865,0.3318393575431074,0,0.0,100,100,100,3.78532239998458 +100,25,0.8,almost_egalitarian_with_donation,1,99.02053768962386,93.07359307359307,0.2439024390243958,0.0024390243902439,0,0.0,99,100,100,3.705238999973517 100,25,0.8,almost_egalitarian_with_donation,2,94.57455253880346,83.2,6.055363321799305,0.8033867726569273,0,0.0,100,100,100,3.767839099979028 -100,25,0.8,almost_egalitarian_with_donation,3,97.90172423768631,93.69918699186992,5.353728489483743,0.10807482490759028,0,0.0,100,100,100,3.791252000024542 -100,25,0.8,almost_egalitarian_with_donation,4,93.12685133807878,81.6466552315609,11.834319526627212,1.8046146482989962,0,0.0,100,100,100,3.8116554000298493 -100,25,1.0,utilitarian_matching,0,97.9352259116467,90.18036072144288,3.047619047619037,0.1349781426643915,0,0.0,100,100,100,0.10337619995698333 -100,25,1.0,utilitarian_matching,1,99.28892304086716,96.36752136752136,0.0,0.0,0,0.0,99,100,100,0.08612709998851642 -100,25,1.0,utilitarian_matching,2,95.54866063636969,83.21167883211679,11.677282377919312,0.841161572562397,0,0.0,99,100,100,0.08941319998120889 -100,25,1.0,utilitarian_matching,3,98.3763847354603,93.75,3.663003663003664,0.15130236452546286,0,0.0,100,100,100,0.0895481999614276 -100,25,1.0,utilitarian_matching,4,94.33758355694992,79.50089126559715,14.081996434937608,1.362452982517643,0,0.0,99,99,100,0.09723770001437515 -100,25,1.0,iterated_maximum_matching_unadjusted,0,97.61375039627376,90.44862518089725,1.607142857142847,0.044540807892981746,0,0.0,100,100,100,0.2252887999638915 -100,25,1.0,iterated_maximum_matching_unadjusted,1,99.09779033726468,94.88752556237219,0.0,0.0,0,0.0,100,100,100,0.24359210004331544 -100,25,1.0,iterated_maximum_matching_unadjusted,2,94.94458395408108,81.51125401929261,9.55518945634266,0.33722810746409393,0,0.0,100,100,100,0.22992980002891272 -100,25,1.0,iterated_maximum_matching_unadjusted,3,98.05369317134073,91.3884007029877,1.6574585635359114,0.037245109572670715,0,0.0,100,100,100,0.24129490001359954 +100,25,0.8,almost_egalitarian_with_donation,3,97.90172423768632,93.69918699186992,5.353728489483743,0.1080748249075902,0,0.0,100,100,100,3.791252000024542 +100,25,0.8,almost_egalitarian_with_donation,4,93.12685133807878,81.6466552315609,11.834319526627212,1.804614648298996,0,0.0,100,100,100,3.811655400029849 +100,25,1.0,utilitarian_matching,0,97.9352259116467,90.18036072144288,3.047619047619037,0.1349781426643915,0,0.0,100,100,100,0.1033761999569833 +100,25,1.0,utilitarian_matching,1,99.28892304086716,96.36752136752136,0.0,0.0,0,0.0,99,100,100,0.0861270999885164 +100,25,1.0,utilitarian_matching,2,95.54866063636968,83.21167883211679,11.677282377919312,0.841161572562397,0,0.0,99,100,100,0.0894131999812088 +100,25,1.0,utilitarian_matching,3,98.3763847354603,93.75,3.663003663003664,0.1513023645254628,0,0.0,100,100,100,0.0895481999614276 +100,25,1.0,utilitarian_matching,4,94.33758355694992,79.50089126559715,14.081996434937608,1.362452982517643,0,0.0,99,99,100,0.0972377000143751 +100,25,1.0,iterated_maximum_matching_unadjusted,0,97.61375039627376,90.44862518089724,1.607142857142847,0.0445408078929817,0,0.0,100,100,100,0.2252887999638915 +100,25,1.0,iterated_maximum_matching_unadjusted,1,99.09779033726468,94.8875255623722,0.0,0.0,0,0.0,100,100,100,0.2435921000433154 +100,25,1.0,iterated_maximum_matching_unadjusted,2,94.94458395408108,81.51125401929261,9.55518945634266,0.3372281074640939,0,0.0,100,100,100,0.2299298000289127 +100,25,1.0,iterated_maximum_matching_unadjusted,3,98.05369317134073,91.3884007029877,1.6574585635359114,0.0372451095726707,0,0.0,100,100,100,0.2412949000135995 100,25,1.0,iterated_maximum_matching_unadjusted,4,93.85980764751456,82.2262118491921,9.793814432989691,0.4812235094863192,0,0.0,100,100,100,0.2326601999811828 -100,25,1.0,iterated_maximum_matching_adjusted,0,97.61375039627376,90.44862518089725,1.607142857142847,0.044540807892981746,0,0.0,100,100,100,0.2365224999957718 -100,25,1.0,iterated_maximum_matching_adjusted,1,99.09779033726468,94.88752556237219,0.0,0.0,0,0.0,100,100,100,0.3222908999887295 -100,25,1.0,iterated_maximum_matching_adjusted,2,94.94458395408108,81.51125401929261,9.55518945634266,0.33722810746409393,0,0.0,100,100,100,0.24014049995457754 -100,25,1.0,iterated_maximum_matching_adjusted,3,98.05369317134073,91.3884007029877,1.6574585635359114,0.037245109572670715,0,0.0,100,100,100,0.25249990000156686 -100,25,1.0,iterated_maximum_matching_adjusted,4,93.85980764751456,82.2262118491921,9.793814432989691,0.4812235094863192,0,0.0,100,100,100,0.29141710000112653 -100,25,1.0,serial_dictatorship,0,90.78964805152607,44.48462929475588,46.95009242144178,7.037373774525456,0,0.0,74,83,86,0.02069939998909831 -100,25,1.0,serial_dictatorship,1,95.27238983690678,42.56880733944954,39.44954128440367,2.9721986534326006,0,0.0,84,90,95,0.021962900005746633 -100,25,1.0,serial_dictatorship,2,87.50040880827001,29.421221864951768,64.79099678456592,10.680064632074155,0,0.0,74,76,80,0.021577199979219586 -100,25,1.0,serial_dictatorship,3,92.91312189944918,35.148514851485146,57.86618444846293,4.892447624400042,0,0.0,83,90,94,0.021415399969555438 -100,25,1.0,serial_dictatorship,4,84.59773790179294,27.073552425665103,68.07511737089202,12.851656775887898,0,0.0,64,70,79,0.021537099964916706 -100,25,1.0,round_robin,0,97.32888162300677,88.21428571428571,3.3210332103321036,0.13122378838737134,0,0.0,100,100,100,0.021188800048548728 -100,25,1.0,round_robin,1,98.72988128684078,91.55963302752293,3.339882121807463,0.03339882121807463,0,0.0,100,100,100,0.021548899996560067 -100,25,1.0,round_robin,2,94.57659976584492,72.9903536977492,9.55518945634266,0.32434950382519434,0,0.0,100,100,100,0.021767000027466565 -100,25,1.0,round_robin,3,97.64879315078258,91.3884007029877,1.8367346938775455,0.03822405798866825,0,0.0,100,100,100,0.02231180004309863 -100,25,1.0,round_robin,4,93.20541909021928,71.68949771689498,18.55670103092784,0.9333531594879557,0,0.0,100,100,100,0.021871599950827658 -100,25,1.0,bidirectional_round_robin,0,97.17737754678623,88.56088560885608,7.3800738007380176,0.08474964311686918,0,0.0,100,100,100,0.02261080004973337 -100,25,1.0,bidirectional_round_robin,1,98.71323184156614,91.55963302752293,3.339882121807463,0.0437080995685902,0,0.0,100,100,100,0.02195740002207458 -100,25,1.0,bidirectional_round_robin,2,94.52520057106999,73.63344051446946,11.897106109324753,0.46862580793990444,0,0.0,100,100,100,0.022620600007940084 -100,25,1.0,bidirectional_round_robin,3,97.65019487498499,90.6396255850234,3.672787979966614,0.08973354338635986,0,0.0,100,100,100,0.022398500004783273 -100,25,1.0,bidirectional_round_robin,4,93.13105048708006,73.97260273972603,8.828006088280063,0.7627657293759631,0,0.0,100,100,100,0.02239440003177151 -100,25,1.0,almost_egalitarian_without_donation,0,97.64311440906451,90.44862518089725,5.333333333333343,0.24804815050361667,0,0.0,100,100,100,3.8522322000353597 -100,25,1.0,almost_egalitarian_without_donation,1,99.2739034001624,95.78947368421052,0.0,0.0,0,0.0,99,100,100,3.7377602999913506 -100,25,1.0,almost_egalitarian_without_donation,2,95.3194479569089,87.29903536977493,6.623931623931625,0.47070972054029636,0,0.0,100,100,100,3.823750499985181 -100,25,1.0,almost_egalitarian_without_donation,3,98.21240359133131,91.01899827288429,4.788213627992633,0.11294210353148827,0,0.0,100,100,100,3.7328352000331506 +100,25,1.0,iterated_maximum_matching_adjusted,0,97.61375039627376,90.44862518089724,1.607142857142847,0.0445408078929817,0,0.0,100,100,100,0.2365224999957718 +100,25,1.0,iterated_maximum_matching_adjusted,1,99.09779033726468,94.8875255623722,0.0,0.0,0,0.0,100,100,100,0.3222908999887295 +100,25,1.0,iterated_maximum_matching_adjusted,2,94.94458395408108,81.51125401929261,9.55518945634266,0.3372281074640939,0,0.0,100,100,100,0.2401404999545775 +100,25,1.0,iterated_maximum_matching_adjusted,3,98.05369317134073,91.3884007029877,1.6574585635359114,0.0372451095726707,0,0.0,100,100,100,0.2524999000015668 +100,25,1.0,iterated_maximum_matching_adjusted,4,93.85980764751456,82.2262118491921,9.793814432989691,0.4812235094863192,0,0.0,100,100,100,0.2914171000011265 +100,25,1.0,serial_dictatorship,0,90.78964805152609,44.48462929475588,46.95009242144178,7.037373774525456,0,0.0,74,83,86,0.0206993999890983 +100,25,1.0,serial_dictatorship,1,95.27238983690678,42.56880733944954,39.44954128440367,2.9721986534326006,0,0.0,84,90,95,0.0219629000057466 +100,25,1.0,serial_dictatorship,2,87.50040880827001,29.421221864951768,64.79099678456592,10.680064632074156,0,0.0,74,76,80,0.0215771999792195 +100,25,1.0,serial_dictatorship,3,92.91312189944918,35.148514851485146,57.86618444846293,4.892447624400042,0,0.0,83,90,94,0.0214153999695554 +100,25,1.0,serial_dictatorship,4,84.59773790179294,27.073552425665103,68.07511737089202,12.851656775887898,0,0.0,64,70,79,0.0215370999649167 +100,25,1.0,round_robin,0,97.32888162300677,88.21428571428571,3.321033210332104,0.1312237883873713,0,0.0,100,100,100,0.0211888000485487 +100,25,1.0,round_robin,1,98.72988128684078,91.55963302752292,3.339882121807463,0.0333988212180746,0,0.0,100,100,100,0.02154889999656 +100,25,1.0,round_robin,2,94.57659976584492,72.9903536977492,9.55518945634266,0.3243495038251943,0,0.0,100,100,100,0.0217670000274665 +100,25,1.0,round_robin,3,97.64879315078258,91.3884007029877,1.8367346938775453,0.0382240579886682,0,0.0,100,100,100,0.0223118000430986 +100,25,1.0,round_robin,4,93.20541909021928,71.68949771689498,18.55670103092784,0.9333531594879556,0,0.0,100,100,100,0.0218715999508276 +100,25,1.0,bidirectional_round_robin,0,97.17737754678625,88.56088560885608,7.3800738007380176,0.0847496431168691,0,0.0,100,100,100,0.0226108000497333 +100,25,1.0,bidirectional_round_robin,1,98.71323184156614,91.55963302752292,3.339882121807463,0.0437080995685902,0,0.0,100,100,100,0.0219574000220745 +100,25,1.0,bidirectional_round_robin,2,94.52520057107,73.63344051446946,11.897106109324753,0.4686258079399044,0,0.0,100,100,100,0.02262060000794 +100,25,1.0,bidirectional_round_robin,3,97.650194874985,90.6396255850234,3.672787979966614,0.0897335433863598,0,0.0,100,100,100,0.0223985000047832 +100,25,1.0,bidirectional_round_robin,4,93.13105048708006,73.97260273972603,8.828006088280063,0.7627657293759631,0,0.0,100,100,100,0.0223944000317715 +100,25,1.0,almost_egalitarian_without_donation,0,97.64311440906452,90.44862518089724,5.333333333333343,0.2480481505036166,0,0.0,100,100,100,3.85223220003536 +100,25,1.0,almost_egalitarian_without_donation,1,99.2739034001624,95.78947368421052,0.0,0.0,0,0.0,99,100,100,3.737760299991351 +100,25,1.0,almost_egalitarian_without_donation,2,95.3194479569089,87.29903536977493,6.623931623931625,0.4707097205402963,0,0.0,100,100,100,3.823750499985181 +100,25,1.0,almost_egalitarian_without_donation,3,98.21240359133132,91.01899827288428,4.788213627992633,0.1129421035314882,0,0.0,100,100,100,3.732835200033151 100,25,1.0,almost_egalitarian_without_donation,4,93.95270622457026,80.3921568627451,19.607843137254903,1.3761743690560837,0,0.0,100,100,100,3.687907599960454 -100,25,1.0,almost_egalitarian_with_donation,0,97.71370138221091,91.18705035971223,5.333333333333343,0.23434952036663034,0,0.0,100,100,100,3.821144199988339 -100,25,1.0,almost_egalitarian_with_donation,1,99.2717031168922,94.88752556237219,0.0,0.0,0,0.0,99,100,100,3.7752470000414178 -100,25,1.0,almost_egalitarian_with_donation,2,95.37042371371501,87.5,6.538461538461533,0.6317710098020304,0,0.0,100,100,100,3.7609402000089176 -100,25,1.0,almost_egalitarian_with_donation,3,98.20591599306739,91.01899827288429,4.788213627992633,0.11294210353148827,0,0.0,100,100,100,3.815063999965787 -100,25,1.0,almost_egalitarian_with_donation,4,93.99260394085222,80.3921568627451,15.686274509803923,1.3288385281327189,0,0.0,99,100,100,3.697616800025571 -200,25,0.0,utilitarian_matching,0,58.28061485677633,0.0,82.55528255528255,19.199983071993096,6,1.0,130,162,182,0.25932459998875856 -200,25,0.0,utilitarian_matching,1,66.92019628383957,0.0,89.501312335958,22.67047713575711,6,1.0,157,183,189,0.30952529999194667 +100,25,1.0,almost_egalitarian_with_donation,0,97.71370138221091,91.18705035971225,5.333333333333343,0.2343495203666303,0,0.0,100,100,100,3.821144199988339 +100,25,1.0,almost_egalitarian_with_donation,1,99.2717031168922,94.8875255623722,0.0,0.0,0,0.0,99,100,100,3.7752470000414178 +100,25,1.0,almost_egalitarian_with_donation,2,95.370423713715,87.5,6.538461538461533,0.6317710098020304,0,0.0,100,100,100,3.7609402000089176 +100,25,1.0,almost_egalitarian_with_donation,3,98.2059159930674,91.01899827288428,4.788213627992633,0.1129421035314882,0,0.0,100,100,100,3.815063999965787 +100,25,1.0,almost_egalitarian_with_donation,4,93.99260394085222,80.3921568627451,15.686274509803924,1.3288385281327189,0,0.0,99,100,100,3.697616800025571 +200,25,0.0,utilitarian_matching,0,58.28061485677633,0.0,82.55528255528255,19.199983071993096,6,1.0,130,162,182,0.2593245999887585 +200,25,0.0,utilitarian_matching,1,66.92019628383957,0.0,89.501312335958,22.67047713575711,6,1.0,157,183,189,0.3095252999919466 200,25,0.0,utilitarian_matching,2,58.292562471809305,7.322654462242563,76.95852534562212,27.178382572766363,5,1.0,147,164,168,0.2529818000039086 -200,25,0.0,utilitarian_matching,3,58.58526680654267,0.0,81.49882903981265,23.928239464751766,6,1.0,170,180,186,0.2373244000482373 +200,25,0.0,utilitarian_matching,3,58.58526680654267,0.0,81.49882903981265,23.92823946475177,6,1.0,170,180,186,0.2373244000482373 200,25,0.0,utilitarian_matching,4,50.81477232915072,0.0,74.84536082474227,26.275341101841427,6,1.0,131,148,160,0.2640878000529483 -200,25,0.0,iterated_maximum_matching_unadjusted,0,57.36950706791848,45.59471365638766,10.632911392405063,2.70003182506052,1,1.0,147,193,198,0.47252869996009395 -200,25,0.0,iterated_maximum_matching_unadjusted,1,66.18241282065725,56.2962962962963,12.727272727272727,2.218867837848207,1,1.0,179,200,200,0.43177040002774447 -200,25,0.0,iterated_maximum_matching_unadjusted,2,57.59715457835988,46.910755148741416,13.163972286374126,2.6476805959584095,1,1.0,171,198,200,0.48525109997717664 -200,25,0.0,iterated_maximum_matching_unadjusted,3,57.80979714727667,47.31182795698925,10.849056603773576,2.3305450448357012,1,1.0,193,200,200,0.4715206000255421 -200,25,0.0,iterated_maximum_matching_unadjusted,4,49.88241100086279,37.786259541984734,14.694656488549619,4.193247341578469,1,1.0,152,187,200,0.4230212999973446 -200,25,0.0,iterated_maximum_matching_adjusted,0,57.36950706791848,45.59471365638766,10.632911392405063,2.70003182506052,1,1.0,147,193,198,0.4791951000224799 -200,25,0.0,iterated_maximum_matching_adjusted,1,66.18241282065725,56.2962962962963,12.727272727272727,2.218867837848207,1,1.0,179,200,200,0.4465036000474356 -200,25,0.0,iterated_maximum_matching_adjusted,2,57.59715457835988,46.910755148741416,13.163972286374126,2.6476805959584095,1,1.0,171,198,200,0.496644800005015 -200,25,0.0,iterated_maximum_matching_adjusted,3,57.80979714727667,47.31182795698925,10.849056603773576,2.3305450448357012,1,1.0,193,200,200,0.4931976000079885 -200,25,0.0,iterated_maximum_matching_adjusted,4,49.88241100086279,37.786259541984734,14.694656488549619,4.193247341578469,1,1.0,152,187,200,0.4279174999683164 -200,25,0.0,serial_dictatorship,0,50.09657774208374,0.0,100.0,48.92236846536943,6,1.0,51,57,67,0.062084299977868795 -200,25,0.0,serial_dictatorship,1,58.85190768607624,0.0,100.0,39.54823355358762,6,1.0,68,74,79,0.06169979996047914 -200,25,0.0,serial_dictatorship,2,49.80459487053312,0.0,100.0,49.61030898868015,6,1.0,50,55,58,0.06105660001048818 -200,25,0.0,serial_dictatorship,3,50.82567280607203,0.0,100.0,47.85266090045614,6,1.0,62,65,72,0.06277329998556525 -200,25,0.0,serial_dictatorship,4,42.09615523908028,0.0,100.0,57.82713575227776,6,1.0,42,45,48,0.06231180002214387 -200,25,0.0,round_robin,0,55.39513387311314,40.78947368421053,22.139303482587074,6.471775918547442,1,1.0,146,184,200,0.05942820000927895 -200,25,0.0,round_robin,1,64.14445217482276,48.87780548628429,16.75392670157069,5.466047682529152,1,1.0,179,200,200,0.06579579995013773 -200,25,0.0,round_robin,2,55.419251505453325,37.389380530973455,20.276497695852534,6.468798852967918,1,1.0,167,194,200,0.07184589997632429 -200,25,0.0,round_robin,3,55.89998984651763,42.45283018867924,20.72072072072072,7.080802732839159,1,1.0,187,200,200,0.07244509999873117 -200,25,0.0,round_robin,4,47.51245222107835,34.02255639097744,23.82892057026477,9.095599866202356,1,1.0,147,178,189,0.07748939999146387 -200,25,0.0,bidirectional_round_robin,0,54.918062946199655,44.81236203090508,13.100436681222703,3.4848049345597136,1,1.0,146,184,200,0.07284880004590377 +200,25,0.0,iterated_maximum_matching_unadjusted,0,57.36950706791848,45.59471365638766,10.632911392405065,2.70003182506052,1,1.0,147,193,198,0.4725286999600939 +200,25,0.0,iterated_maximum_matching_unadjusted,1,66.18241282065725,56.2962962962963,12.727272727272728,2.218867837848207,1,1.0,179,200,200,0.4317704000277444 +200,25,0.0,iterated_maximum_matching_unadjusted,2,57.59715457835988,46.910755148741416,13.163972286374126,2.647680595958409,1,1.0,171,198,200,0.4852510999771766 +200,25,0.0,iterated_maximum_matching_unadjusted,3,57.80979714727667,47.31182795698925,10.849056603773576,2.330545044835701,1,1.0,193,200,200,0.4715206000255421 +200,25,0.0,iterated_maximum_matching_unadjusted,4,49.88241100086279,37.786259541984734,14.69465648854962,4.193247341578469,1,1.0,152,187,200,0.4230212999973446 +200,25,0.0,iterated_maximum_matching_adjusted,0,57.36950706791848,45.59471365638766,10.632911392405065,2.70003182506052,1,1.0,147,193,198,0.4791951000224799 +200,25,0.0,iterated_maximum_matching_adjusted,1,66.18241282065725,56.2962962962963,12.727272727272728,2.218867837848207,1,1.0,179,200,200,0.4465036000474356 +200,25,0.0,iterated_maximum_matching_adjusted,2,57.59715457835988,46.910755148741416,13.163972286374126,2.647680595958409,1,1.0,171,198,200,0.496644800005015 +200,25,0.0,iterated_maximum_matching_adjusted,3,57.80979714727667,47.31182795698925,10.849056603773576,2.330545044835701,1,1.0,193,200,200,0.4931976000079885 +200,25,0.0,iterated_maximum_matching_adjusted,4,49.88241100086279,37.786259541984734,14.69465648854962,4.193247341578469,1,1.0,152,187,200,0.4279174999683164 +200,25,0.0,serial_dictatorship,0,50.09657774208374,0.0,100.0,48.92236846536943,6,1.0,51,57,67,0.0620842999778687 +200,25,0.0,serial_dictatorship,1,58.85190768607624,0.0,100.0,39.54823355358762,6,1.0,68,74,79,0.0616997999604791 +200,25,0.0,serial_dictatorship,2,49.80459487053312,0.0,100.0,49.61030898868015,6,1.0,50,55,58,0.0610566000104881 +200,25,0.0,serial_dictatorship,3,50.82567280607203,0.0,100.0,47.85266090045614,6,1.0,62,65,72,0.0627732999855652 +200,25,0.0,serial_dictatorship,4,42.09615523908028,0.0,100.0,57.82713575227776,6,1.0,42,45,48,0.0623118000221438 +200,25,0.0,round_robin,0,55.39513387311314,40.78947368421053,22.139303482587074,6.471775918547442,1,1.0,146,184,200,0.0594282000092789 +200,25,0.0,round_robin,1,64.14445217482276,48.87780548628429,16.75392670157069,5.466047682529152,1,1.0,179,200,200,0.0657957999501377 +200,25,0.0,round_robin,2,55.419251505453325,37.389380530973455,20.27649769585253,6.468798852967918,1,1.0,167,194,200,0.0718458999763242 +200,25,0.0,round_robin,3,55.89998984651763,42.45283018867924,20.72072072072072,7.080802732839159,1,1.0,187,200,200,0.0724450999987311 +200,25,0.0,round_robin,4,47.51245222107835,34.02255639097744,23.82892057026477,9.095599866202356,1,1.0,147,178,189,0.0774893999914638 +200,25,0.0,bidirectional_round_robin,0,54.918062946199655,44.81236203090508,13.100436681222703,3.4848049345597136,1,1.0,146,184,200,0.0728488000459037 200,25,0.0,bidirectional_round_robin,1,63.83402851843029,54.63659147869674,15.817694369973182,2.307377023572906,1,1.0,179,200,200,0.0676693000132218 -200,25,0.0,bidirectional_round_robin,2,54.7813562997255,45.10250569476082,13.151927437641724,3.5427525077592215,1,1.0,167,194,200,0.058941799972672015 -200,25,0.0,bidirectional_round_robin,3,55.78742306922341,48.060344827586206,10.722610722610725,2.275015193762805,1,1.0,187,200,200,0.06723310000961646 -200,25,0.0,bidirectional_round_robin,4,47.07365087364165,36.986301369863014,13.66459627329192,3.269177847382188,1,1.0,147,178,189,0.0650554999592714 -200,25,0.0,almost_egalitarian_without_donation,0,58.04248855024555,39.81900452488688,28.94736842105263,11.183990921817749,4,1.0,134,171,189,7.785701300017536 -200,25,0.0,almost_egalitarian_without_donation,1,66.80737635189716,46.547314578005114,29.156010230179035,9.032989394064835,3,1.0,160,192,195,7.676726199977566 -200,25,0.0,almost_egalitarian_without_donation,2,58.09401705379435,42.761692650334076,24.514563106796125,8.96598558258896,3,1.0,148,174,186,7.742707500001416 -200,25,0.0,almost_egalitarian_without_donation,3,58.386486070147804,41.25874125874126,28.368794326241144,9.661789861948852,3,1.0,167,188,194,7.75794500001939 +200,25,0.0,bidirectional_round_robin,2,54.7813562997255,45.10250569476082,13.151927437641724,3.542752507759221,1,1.0,167,194,200,0.058941799972672 +200,25,0.0,bidirectional_round_robin,3,55.78742306922341,48.060344827586206,10.722610722610725,2.275015193762805,1,1.0,187,200,200,0.0672331000096164 +200,25,0.0,bidirectional_round_robin,4,47.07365087364165,36.98630136986301,13.66459627329192,3.269177847382188,1,1.0,147,178,189,0.0650554999592714 +200,25,0.0,almost_egalitarian_without_donation,0,58.04248855024555,39.81900452488688,28.94736842105263,11.183990921817747,4,1.0,134,171,189,7.785701300017536 +200,25,0.0,almost_egalitarian_without_donation,1,66.80737635189716,46.54731457800512,29.156010230179035,9.032989394064836,3,1.0,160,192,195,7.676726199977566 +200,25,0.0,almost_egalitarian_without_donation,2,58.09401705379435,42.76169265033408,24.514563106796125,8.96598558258896,3,1.0,148,174,186,7.742707500001416 +200,25,0.0,almost_egalitarian_without_donation,3,58.38648607014781,41.25874125874126,28.368794326241144,9.661789861948852,3,1.0,167,188,194,7.75794500001939 200,25,0.0,almost_egalitarian_without_donation,4,50.429212965813406,31.31115459882583,32.87671232876712,13.085271453561454,3,1.0,131,157,175,7.730888799997047 200,25,0.0,almost_egalitarian_with_donation,0,58.05425694978989,42.48826291079813,28.94736842105263,10.93454297636996,4,1.0,135,169,187,7.72333529999014 -200,25,0.0,almost_egalitarian_with_donation,1,66.81767194106814,46.547314578005114,29.156010230179035,8.985294032062882,3,1.0,159,192,195,7.8907911000424065 -200,25,0.0,almost_egalitarian_with_donation,2,58.08875891702216,42.761692650334076,27.363184079601986,9.514982674405951,3,1.0,148,175,184,7.802976400009356 +200,25,0.0,almost_egalitarian_with_donation,1,66.81767194106814,46.54731457800512,29.156010230179035,8.985294032062882,3,1.0,159,192,195,7.8907911000424065 +200,25,0.0,almost_egalitarian_with_donation,2,58.08875891702216,42.76169265033408,27.363184079601982,9.514982674405951,3,1.0,148,175,184,7.802976400009356 200,25,0.0,almost_egalitarian_with_donation,3,58.40488375386114,41.86046511627907,27.90697674418604,9.313889638301458,3,1.0,167,186,192,7.763530500000343 200,25,0.0,almost_egalitarian_with_donation,4,50.444852608042666,31.702544031311152,31.702544031311152,11.745544889727308,3,1.0,130,157,175,7.73455480003031 -200,25,0.2,utilitarian_matching,0,60.380872523523756,0.0,82.53588516746412,17.06233545141091,6,1.0,148,177,186,0.25612410000758246 +200,25,0.2,utilitarian_matching,0,60.38087252352376,0.0,82.53588516746412,17.06233545141091,6,1.0,148,177,186,0.2561241000075824 200,25,0.2,utilitarian_matching,1,68.80693017865633,13.984168865435356,78.10026385224275,19.04385827009696,5,1.0,171,186,192,0.2624962999834679 -200,25,0.2,utilitarian_matching,2,60.930803913202446,7.300884955752212,76.00896860986548,23.553688159157367,5,1.0,155,168,174,0.26883019995875657 -200,25,0.2,utilitarian_matching,3,60.388719266835906,0.0,79.81651376146789,19.778456076636648,6,1.0,173,181,186,0.24832299997797236 +200,25,0.2,utilitarian_matching,2,60.930803913202446,7.300884955752212,76.00896860986548,23.553688159157367,5,1.0,155,168,174,0.2688301999587565 +200,25,0.2,utilitarian_matching,3,60.38871926683591,0.0,79.81651376146789,19.778456076636648,6,1.0,173,181,186,0.2483229999779723 200,25,0.2,utilitarian_matching,4,53.64539916483302,0.0,79.38775510204081,23.367963161070243,6,1.0,139,156,169,0.326865800016094 -200,25,0.2,iterated_maximum_matching_unadjusted,0,59.34616479012832,45.28301886792453,13.242009132420094,2.336695044935343,1,1.0,165,197,200,0.45349459996214136 -200,25,0.2,iterated_maximum_matching_unadjusted,1,68.00382631688267,56.018518518518526,12.602739726027401,1.4249614352589592,1,1.0,186,200,200,0.49500880000414327 -200,25,0.2,iterated_maximum_matching_unadjusted,2,60.03845625172818,47.136563876651984,13.689095127610202,1.9880729229633234,1,1.0,184,199,200,0.44282479997491464 -200,25,0.2,iterated_maximum_matching_unadjusted,3,59.51468779069157,50.32119914346895,10.672853828306252,1.9840329098549214,1,1.0,200,200,200,0.48872670001583174 -200,25,0.2,iterated_maximum_matching_unadjusted,4,52.51758018873371,40.3254972875226,14.889336016096578,3.347457566536588,1,1.0,164,194,200,0.42698960000416264 +200,25,0.2,iterated_maximum_matching_unadjusted,0,59.34616479012832,45.28301886792453,13.242009132420094,2.336695044935343,1,1.0,165,197,200,0.4534945999621413 +200,25,0.2,iterated_maximum_matching_unadjusted,1,68.00382631688267,56.018518518518526,12.6027397260274,1.4249614352589592,1,1.0,186,200,200,0.4950088000041432 +200,25,0.2,iterated_maximum_matching_unadjusted,2,60.03845625172818,47.136563876651984,13.689095127610202,1.988072922963324,1,1.0,184,199,200,0.4428247999749146 +200,25,0.2,iterated_maximum_matching_unadjusted,3,59.51468779069157,50.32119914346895,10.672853828306252,1.9840329098549208,1,1.0,200,200,200,0.4887267000158317 +200,25,0.2,iterated_maximum_matching_unadjusted,4,52.51758018873371,40.3254972875226,14.889336016096578,3.347457566536588,1,1.0,164,194,200,0.4269896000041626 200,25,0.2,iterated_maximum_matching_adjusted,0,59.34616479012832,45.28301886792453,13.242009132420094,2.336695044935343,1,1.0,165,197,200,0.5133253999520093 -200,25,0.2,iterated_maximum_matching_adjusted,1,68.00382631688267,56.018518518518526,12.602739726027401,1.4249614352589592,1,1.0,186,200,200,0.44964760000584647 -200,25,0.2,iterated_maximum_matching_adjusted,2,60.03845625172818,47.136563876651984,13.689095127610202,1.9880729229633234,1,1.0,184,199,200,0.5106337000033818 -200,25,0.2,iterated_maximum_matching_adjusted,3,59.51468779069157,50.32119914346895,10.672853828306252,1.9840329098549214,1,1.0,200,200,200,0.4548994000069797 +200,25,0.2,iterated_maximum_matching_adjusted,1,68.00382631688267,56.018518518518526,12.6027397260274,1.4249614352589592,1,1.0,186,200,200,0.4496476000058464 +200,25,0.2,iterated_maximum_matching_adjusted,2,60.03845625172818,47.136563876651984,13.689095127610202,1.988072922963324,1,1.0,184,199,200,0.5106337000033818 +200,25,0.2,iterated_maximum_matching_adjusted,3,59.51468779069157,50.32119914346895,10.672853828306252,1.9840329098549208,1,1.0,200,200,200,0.4548994000069797 200,25,0.2,iterated_maximum_matching_adjusted,4,52.51758018873371,40.3254972875226,14.889336016096578,3.347457566536588,1,1.0,164,194,200,0.507698499946855 -200,25,0.2,serial_dictatorship,0,50.868978247357965,0.0,100.0,47.46983392173436,6,1.0,60,68,75,0.05864279996603727 -200,25,0.2,serial_dictatorship,1,59.41109660449054,0.0,100.0,38.29172157744815,6,1.0,72,79,83,0.062370500003453344 -200,25,0.2,serial_dictatorship,2,50.923322233289994,0.0,100.0,47.95059561387657,6,1.0,57,61,63,0.06504300003871322 -200,25,0.2,serial_dictatorship,3,51.341797712472975,0.0,100.0,46.55591796071485,6,1.0,71,77,81,0.06343560002278537 -200,25,0.2,serial_dictatorship,4,43.674911544913314,0.0,100.0,55.68981727438707,6,1.0,50,56,60,0.061393800016958266 -200,25,0.2,round_robin,0,57.33541762086267,40.8421052631579,23.404255319148945,6.024772493229631,1,1.0,164,189,200,0.06236059998627752 -200,25,0.2,round_robin,1,66.06267844473992,50.71428571428571,17.44471744471744,4.5244544887563025,1,1.0,186,200,200,0.06215970002813265 -200,25,0.2,round_robin,2,57.72153581504617,39.39393939393939,20.950323974082067,5.935239657390248,1,1.0,181,197,200,0.06446409999625757 -200,25,0.2,round_robin,3,57.47925327795252,42.79176201372998,17.748917748917755,5.768082236656402,1,1.0,198,200,200,0.06129570002667606 -200,25,0.2,round_robin,4,50.06968169831141,33.75224416517056,24.94929006085193,8.076294985260722,1,1.0,163,188,198,0.061070800002198666 -200,25,0.2,bidirectional_round_robin,0,56.7883905469806,44.8421052631579,14.657210401891248,3.272466745949149,1,1.0,164,189,200,0.06128359999274835 -200,25,0.2,bidirectional_round_robin,1,65.7193164721495,55.32994923857868,14.974619289340112,1.8865904757896557,1,1.0,186,200,200,0.06058609997853637 -200,25,0.2,bidirectional_round_robin,2,57.3032837591818,45.77319587628866,15.598290598290589,3.4877116424256043,1,1.0,181,197,200,0.059620600019115955 -200,25,0.2,bidirectional_round_robin,3,57.34008191192269,48.865979381443296,10.244988864142549,2.1608338746672504,1,1.0,198,200,200,0.060292999958619475 -200,25,0.2,bidirectional_round_robin,4,49.44772759961907,39.148073022312374,16.430020283975658,3.4288762475348245,1,1.0,163,188,198,0.06223290000343695 -200,25,0.2,almost_egalitarian_without_donation,0,60.07101162271887,39.23240938166311,26.096491228070178,8.373983740947368,3,1.0,143,180,193,7.841308500035666 -200,25,0.2,almost_egalitarian_without_donation,1,68.67106649999329,52.605459057071954,26.79900744416875,6.4508207144737195,3,1.0,173,192,197,7.993851899984293 +200,25,0.2,serial_dictatorship,0,50.868978247357965,0.0,100.0,47.46983392173436,6,1.0,60,68,75,0.0586427999660372 +200,25,0.2,serial_dictatorship,1,59.41109660449054,0.0,100.0,38.29172157744815,6,1.0,72,79,83,0.0623705000034533 +200,25,0.2,serial_dictatorship,2,50.92332223329,0.0,100.0,47.95059561387657,6,1.0,57,61,63,0.0650430000387132 +200,25,0.2,serial_dictatorship,3,51.341797712472975,0.0,100.0,46.55591796071485,6,1.0,71,77,81,0.0634356000227853 +200,25,0.2,serial_dictatorship,4,43.674911544913314,0.0,100.0,55.68981727438707,6,1.0,50,56,60,0.0613938000169582 +200,25,0.2,round_robin,0,57.33541762086267,40.8421052631579,23.404255319148945,6.024772493229631,1,1.0,164,189,200,0.0623605999862775 +200,25,0.2,round_robin,1,66.06267844473992,50.71428571428571,17.44471744471744,4.524454488756303,1,1.0,186,200,200,0.0621597000281326 +200,25,0.2,round_robin,2,57.72153581504617,39.39393939393939,20.950323974082067,5.935239657390248,1,1.0,181,197,200,0.0644640999962575 +200,25,0.2,round_robin,3,57.47925327795252,42.79176201372998,17.748917748917755,5.768082236656402,1,1.0,198,200,200,0.061295700026676 +200,25,0.2,round_robin,4,50.06968169831141,33.75224416517056,24.94929006085193,8.076294985260722,1,1.0,163,188,198,0.0610708000021986 +200,25,0.2,bidirectional_round_robin,0,56.7883905469806,44.8421052631579,14.657210401891248,3.272466745949149,1,1.0,164,189,200,0.0612835999927483 +200,25,0.2,bidirectional_round_robin,1,65.7193164721495,55.32994923857868,14.974619289340112,1.886590475789656,1,1.0,186,200,200,0.0605860999785363 +200,25,0.2,bidirectional_round_robin,2,57.3032837591818,45.77319587628866,15.598290598290587,3.4877116424256043,1,1.0,181,197,200,0.0596206000191159 +200,25,0.2,bidirectional_round_robin,3,57.34008191192269,48.865979381443296,10.244988864142549,2.1608338746672504,1,1.0,198,200,200,0.0602929999586194 +200,25,0.2,bidirectional_round_robin,4,49.44772759961907,39.14807302231237,16.430020283975658,3.4288762475348245,1,1.0,163,188,198,0.0622329000034369 +200,25,0.2,almost_egalitarian_without_donation,0,60.07101162271887,39.23240938166311,26.09649122807017,8.373983740947368,3,1.0,143,180,193,7.841308500035666 +200,25,0.2,almost_egalitarian_without_donation,1,68.67106649999329,52.605459057071954,26.79900744416875,6.45082071447372,3,1.0,173,192,197,7.993851899984293 200,25,0.2,almost_egalitarian_without_donation,2,60.63007811404526,40.55299539170507,28.199052132701432,8.649464112643683,3,1.0,160,183,190,7.678778300003614 200,25,0.2,almost_egalitarian_without_donation,3,60.216898420075466,40.044742729306485,23.61702127659575,7.459711728908177,3,1.0,176,188,195,7.725013599963859 -200,25,0.2,almost_egalitarian_without_donation,4,53.13146828252654,33.82352941176471,31.388329979879266,11.123608075556767,3,1.0,144,169,180,7.658660000015516 +200,25,0.2,almost_egalitarian_without_donation,4,53.13146828252654,33.82352941176471,31.388329979879263,11.123608075556769,3,1.0,144,169,180,7.658660000015516 200,25,0.2,almost_egalitarian_with_donation,0,60.06464521885363,42.63038548752834,33.70288248337029,8.865019740100092,3,1.0,142,178,191,7.702792999974918 200,25,0.2,almost_egalitarian_with_donation,1,68.66706328430166,52.605459057071954,26.79900744416875,6.716275364990768,3,1.0,173,193,197,7.8327555999858305 200,25,0.2,almost_egalitarian_with_donation,2,60.674848117242966,43.43891402714932,22.78177458033573,6.444810051125303,3,1.0,160,181,186,7.72603129997151 200,25,0.2,almost_egalitarian_with_donation,3,60.2108348278051,43.82022471910113,23.86363636363636,6.885850423019825,3,1.0,175,189,195,7.764877100009471 -200,25,0.2,almost_egalitarian_with_donation,4,53.17391603212299,36.05072463768116,30.2970297029703,10.769228714698587,4,1.0,145,171,183,7.776568700035568 -200,25,0.5,utilitarian_matching,0,62.60388553533064,0.0,82.56880733944955,16.44030803164229,6,1.0,153,181,185,0.24610510002821684 -200,25,0.5,utilitarian_matching,1,70.89580720885972,0.0,84.92822966507177,15.785786109202034,6,1.0,175,186,191,0.25814240000909194 -200,25,0.5,utilitarian_matching,2,63.861685141318446,0.0,79.48717948717949,18.683752243734972,6,1.0,165,176,178,0.23878389998571947 -200,25,0.5,utilitarian_matching,3,62.39445006233161,0.0,88.27586206896552,19.54221068927057,6,1.0,182,188,190,0.25477120000869036 +200,25,0.2,almost_egalitarian_with_donation,4,53.17391603212299,36.05072463768116,30.2970297029703,10.769228714698588,4,1.0,145,171,183,7.776568700035568 +200,25,0.5,utilitarian_matching,0,62.60388553533064,0.0,82.56880733944955,16.44030803164229,6,1.0,153,181,185,0.2461051000282168 +200,25,0.5,utilitarian_matching,1,70.89580720885972,0.0,84.92822966507177,15.785786109202034,6,1.0,175,186,191,0.2581424000090919 +200,25,0.5,utilitarian_matching,2,63.861685141318446,0.0,79.48717948717949,18.68375224373497,6,1.0,165,176,178,0.2387838999857194 +200,25,0.5,utilitarian_matching,3,62.39445006233161,0.0,88.27586206896552,19.54221068927057,6,1.0,182,188,190,0.2547712000086903 200,25,0.5,utilitarian_matching,4,56.647595006777095,0.0,82.62626262626263,21.01341594885253,6,1.0,150,164,171,0.2599684000015259 -200,25,0.5,iterated_maximum_matching_unadjusted,0,61.54869903082117,48.987854251012145,13.755458515283848,1.8676785144060097,1,1.0,177,198,200,0.42501359997550026 -200,25,0.5,iterated_maximum_matching_unadjusted,1,69.9920801064548,55.27426160337553,13.502109704641349,1.0501420715401013,1,1.0,191,200,200,0.42546860000584275 -200,25,0.5,iterated_maximum_matching_unadjusted,2,62.85090106431351,49.280575539568346,17.658730158730165,1.4162992946035526,1,1.0,190,199,200,0.42459289997350425 -200,25,0.5,iterated_maximum_matching_unadjusted,3,61.55724746482769,50.71283095723014,11.496746203904557,1.590251318859324,1,1.0,200,200,200,0.5158954000216909 -200,25,0.5,iterated_maximum_matching_unadjusted,4,55.36546807966428,40.53156146179402,18.397085610200364,2.9193160722911426,1,1.0,178,200,200,0.44678210001438856 -200,25,0.5,iterated_maximum_matching_adjusted,0,61.54869903082117,48.987854251012145,13.755458515283848,1.8676785144060097,1,1.0,177,198,200,0.5050554999615997 -200,25,0.5,iterated_maximum_matching_adjusted,1,69.9920801064548,55.27426160337553,13.502109704641349,1.0501420715401013,1,1.0,191,200,200,0.44564559997525066 -200,25,0.5,iterated_maximum_matching_adjusted,2,62.85090106431351,49.280575539568346,17.658730158730165,1.4162992946035526,1,1.0,190,199,200,0.44346159999258816 -200,25,0.5,iterated_maximum_matching_adjusted,3,61.55724746482769,50.71283095723014,11.496746203904557,1.590251318859324,1,1.0,200,200,200,0.5141260999953374 -200,25,0.5,iterated_maximum_matching_adjusted,4,55.36546807966428,40.53156146179402,18.397085610200364,2.9193160722911426,1,1.0,178,200,200,0.4479167999816127 -200,25,0.5,serial_dictatorship,0,51.54839784859924,0.0,100.0,45.56535861437267,6,1.0,65,75,84,0.059553999977651983 -200,25,0.5,serial_dictatorship,1,60.48440310515728,0.0,98.54368932038835,35.820673563572115,6,1.0,79,84,93,0.06196970003657043 -200,25,0.5,serial_dictatorship,2,52.32099087595487,0.0,100.0,45.463098306141404,6,1.0,67,67,69,0.059684199979528785 -200,25,0.5,serial_dictatorship,3,52.060663293545566,0.0,100.0,44.56170779235688,6,1.0,75,83,89,0.06301909999456257 -200,25,0.5,serial_dictatorship,4,45.09243956416926,0.0,100.0,53.31285571329888,6,1.0,57,62,67,0.07123120001051575 -200,25,0.5,round_robin,0,59.43543936369153,42.07650273224044,22.246220302375818,5.42501565129291,1,1.0,177,192,200,0.0588759999955073 -200,25,0.5,round_robin,1,68.01455969459192,51.74537987679672,22.36503856041132,3.6789285729766648,1,1.0,191,200,200,0.06391889997757971 -200,25,0.5,round_robin,2,60.408019544112676,40.074906367041194,25.3968253968254,5.545862035156311,1,1.0,189,199,200,0.06040209997445345 -200,25,0.5,round_robin,3,59.40852815025515,43.39622641509434,17.16981132075471,4.532954472866421,1,1.0,200,200,200,0.058093200030270964 -200,25,0.5,round_robin,4,52.960502012329506,33.22091062394604,23.15573770491804,7.6303857306843295,1,1.0,183,196,200,0.058292999980039895 -200,25,0.5,bidirectional_round_robin,0,58.8172669917996,46.30738522954092,17.27861771058314,2.833305482811869,1,1.0,177,192,200,0.06374170002527535 -200,25,0.5,bidirectional_round_robin,1,67.69318645092554,55.76131687242798,13.411764705882362,1.6342230706896979,1,1.0,191,200,200,0.06012949999421835 -200,25,0.5,bidirectional_round_robin,2,60.022667184281154,47.195357833655706,17.006802721088427,2.5419139442453784,1,1.0,189,199,200,0.05916639999486506 -200,25,0.5,bidirectional_round_robin,3,59.30230090061679,49.2,9.999999999999993,1.8030252913864095,1,1.0,200,200,200,0.06000470003345981 +200,25,0.5,iterated_maximum_matching_unadjusted,0,61.54869903082117,48.98785425101215,13.755458515283848,1.8676785144060093,1,1.0,177,198,200,0.4250135999755002 +200,25,0.5,iterated_maximum_matching_unadjusted,1,69.9920801064548,55.27426160337553,13.502109704641349,1.0501420715401013,1,1.0,191,200,200,0.4254686000058427 +200,25,0.5,iterated_maximum_matching_unadjusted,2,62.85090106431351,49.280575539568346,17.658730158730165,1.4162992946035526,1,1.0,190,199,200,0.4245928999735042 +200,25,0.5,iterated_maximum_matching_unadjusted,3,61.55724746482769,50.71283095723014,11.496746203904555,1.590251318859324,1,1.0,200,200,200,0.5158954000216909 +200,25,0.5,iterated_maximum_matching_unadjusted,4,55.36546807966428,40.53156146179402,18.397085610200364,2.919316072291142,1,1.0,178,200,200,0.4467821000143885 +200,25,0.5,iterated_maximum_matching_adjusted,0,61.54869903082117,48.98785425101215,13.755458515283848,1.8676785144060093,1,1.0,177,198,200,0.5050554999615997 +200,25,0.5,iterated_maximum_matching_adjusted,1,69.9920801064548,55.27426160337553,13.502109704641349,1.0501420715401013,1,1.0,191,200,200,0.4456455999752506 +200,25,0.5,iterated_maximum_matching_adjusted,2,62.85090106431351,49.280575539568346,17.658730158730165,1.4162992946035526,1,1.0,190,199,200,0.4434615999925881 +200,25,0.5,iterated_maximum_matching_adjusted,3,61.55724746482769,50.71283095723014,11.496746203904555,1.590251318859324,1,1.0,200,200,200,0.5141260999953374 +200,25,0.5,iterated_maximum_matching_adjusted,4,55.36546807966428,40.53156146179402,18.397085610200364,2.919316072291142,1,1.0,178,200,200,0.4479167999816127 +200,25,0.5,serial_dictatorship,0,51.54839784859924,0.0,100.0,45.56535861437267,6,1.0,65,75,84,0.0595539999776519 +200,25,0.5,serial_dictatorship,1,60.48440310515728,0.0,98.54368932038837,35.820673563572115,6,1.0,79,84,93,0.0619697000365704 +200,25,0.5,serial_dictatorship,2,52.32099087595487,0.0,100.0,45.46309830614141,6,1.0,67,67,69,0.0596841999795287 +200,25,0.5,serial_dictatorship,3,52.060663293545566,0.0,100.0,44.56170779235688,6,1.0,75,83,89,0.0630190999945625 +200,25,0.5,serial_dictatorship,4,45.09243956416926,0.0,100.0,53.31285571329888,6,1.0,57,62,67,0.0712312000105157 +200,25,0.5,round_robin,0,59.43543936369153,42.07650273224044,22.24622030237581,5.42501565129291,1,1.0,177,192,200,0.0588759999955073 +200,25,0.5,round_robin,1,68.01455969459192,51.74537987679672,22.36503856041132,3.6789285729766648,1,1.0,191,200,200,0.0639188999775797 +200,25,0.5,round_robin,2,60.40801954411268,40.0749063670412,25.3968253968254,5.545862035156311,1,1.0,189,199,200,0.0604020999744534 +200,25,0.5,round_robin,3,59.40852815025515,43.39622641509434,17.16981132075471,4.532954472866421,1,1.0,200,200,200,0.0580932000302709 +200,25,0.5,round_robin,4,52.96050201232951,33.22091062394604,23.15573770491804,7.6303857306843295,1,1.0,183,196,200,0.0582929999800398 +200,25,0.5,bidirectional_round_robin,0,58.8172669917996,46.30738522954092,17.27861771058314,2.833305482811869,1,1.0,177,192,200,0.0637417000252753 +200,25,0.5,bidirectional_round_robin,1,67.69318645092554,55.76131687242798,13.411764705882362,1.634223070689698,1,1.0,191,200,200,0.0601294999942183 +200,25,0.5,bidirectional_round_robin,2,60.022667184281154,47.195357833655706,17.006802721088427,2.5419139442453784,1,1.0,189,199,200,0.059166399994865 +200,25,0.5,bidirectional_round_robin,3,59.30230090061679,49.2,9.999999999999991,1.803025291386409,1,1.0,200,200,200,0.0600047000334598 200,25,0.5,bidirectional_round_robin,4,52.19138405210847,38.87973640856672,12.840466926070036,2.965353340919337,1,1.0,183,196,200,0.0594484000466764 -200,25,0.5,almost_egalitarian_without_donation,0,62.293164760300854,40.692640692640694,33.536585365853654,7.546565297487732,4,1.0,153,185,197,7.795509400020819 +200,25,0.5,almost_egalitarian_without_donation,0,62.29316476030085,40.69264069264069,33.536585365853654,7.546565297487732,4,1.0,153,185,197,7.795509400020819 200,25,0.5,almost_egalitarian_without_donation,1,70.77273472532896,50.73068893528184,25.0,5.438807246926303,3,1.0,180,195,198,7.593419899989385 200,25,0.5,almost_egalitarian_without_donation,2,63.43914975103567,43.39622641509434,37.14285714285715,9.064467772495606,3,1.0,169,186,193,7.948419500025921 200,25,0.5,almost_egalitarian_without_donation,3,62.24966933556811,44.668008048289735,25.35211267605635,5.73032683419066,3,1.0,182,193,196,7.717349300044589 -200,25,0.5,almost_egalitarian_without_donation,4,55.98262880250019,33.94648829431438,35.618729096989966,10.735798638575755,3,1.0,149,174,188,7.656535600021016 -200,25,0.5,almost_egalitarian_with_donation,0,62.286455669755036,40.692640692640694,33.536585365853654,7.770597606389325,3,1.0,152,186,196,7.914662800030783 -200,25,0.5,almost_egalitarian_with_donation,1,70.81512497976715,53.379953379953385,24.494382022471918,4.225045817596643,3,1.0,182,196,198,7.807837300002575 +200,25,0.5,almost_egalitarian_without_donation,4,55.98262880250019,33.94648829431438,35.618729096989966,10.735798638575757,3,1.0,149,174,188,7.656535600021016 +200,25,0.5,almost_egalitarian_with_donation,0,62.28645566975504,40.69264069264069,33.536585365853654,7.770597606389325,3,1.0,152,186,196,7.914662800030783 +200,25,0.5,almost_egalitarian_with_donation,1,70.81512497976715,53.379953379953385,24.49438202247192,4.225045817596643,3,1.0,182,196,198,7.807837300002575 200,25,0.5,almost_egalitarian_with_donation,2,63.44380452657267,45.64755838641189,32.02764976958526,7.440710710460244,3,1.0,167,183,191,7.779659699997865 -200,25,0.5,almost_egalitarian_with_donation,3,62.21070921778894,44.668008048289735,22.055674518201286,5.471295240229596,3,1.0,183,193,196,7.694508699991275 -200,25,0.5,almost_egalitarian_with_donation,4,56.04605979324739,36.12244897959184,31.316725978647696,9.859660115654247,3,1.0,149,174,186,7.8281886000186205 -200,25,0.8,utilitarian_matching,0,64.30108613446644,0.0,82.23684210526315,14.69318397187125,6,1.0,159,183,185,0.24841500003822148 +200,25,0.5,almost_egalitarian_with_donation,3,62.21070921778894,44.668008048289735,22.05567451820129,5.471295240229596,3,1.0,183,193,196,7.694508699991275 +200,25,0.5,almost_egalitarian_with_donation,4,56.04605979324739,36.12244897959184,31.316725978647696,9.859660115654249,3,1.0,149,174,186,7.8281886000186205 +200,25,0.8,utilitarian_matching,0,64.30108613446644,0.0,82.23684210526315,14.69318397187125,6,1.0,159,183,185,0.2484150000382214 200,25,0.8,utilitarian_matching,1,72.43504601373701,0.0,82.56880733944955,13.663768281786185,6,1.0,176,185,191,0.2528421999886632 200,25,0.8,utilitarian_matching,2,65.89235353698763,0.0,84.82758620689656,17.412942099194982,6,1.0,167,176,182,0.2521287000272423 -200,25,0.8,utilitarian_matching,3,63.88405337391098,0.0,86.87089715536105,17.887263613572014,6,1.0,181,186,188,0.25464309996459633 -200,25,0.8,utilitarian_matching,4,58.75990112365786,0.0,84.18972332015811,19.179106052548175,6,1.0,155,170,174,0.25550139998085797 -200,25,0.8,iterated_maximum_matching_unadjusted,0,63.22944364790823,50.18181818181818,13.347022587268995,1.6297949260189273,1,1.0,182,200,200,0.41886460001114756 +200,25,0.8,utilitarian_matching,3,63.88405337391098,0.0,86.87089715536105,17.887263613572014,6,1.0,181,186,188,0.2546430999645963 +200,25,0.8,utilitarian_matching,4,58.75990112365786,0.0,84.18972332015811,19.17910605254817,6,1.0,155,170,174,0.2555013999808579 +200,25,0.8,iterated_maximum_matching_unadjusted,0,63.22944364790823,50.18181818181818,13.347022587268995,1.6297949260189273,1,1.0,182,200,200,0.4188646000111475 200,25,0.8,iterated_maximum_matching_unadjusted,1,71.50378536332126,56.17760617760618,13.67346938775512,0.8218699136462603,1,1.0,193,200,200,0.5168529000366107 -200,25,0.8,iterated_maximum_matching_unadjusted,2,64.75791900298748,47.06896551724138,17.84452296819788,1.1054004336829655,1,1.0,195,200,200,0.4195430999970995 -200,25,0.8,iterated_maximum_matching_unadjusted,3,63.144535318068854,51.68738898756661,9.62566844919786,1.2306806360048406,1,1.0,200,200,200,0.4298795000067912 -200,25,0.8,iterated_maximum_matching_unadjusted,4,57.47702121516496,41.78628389154705,13.866231647634585,2.6291864154226823,1,1.0,189,200,200,0.5212166999699548 -200,25,0.8,iterated_maximum_matching_adjusted,0,63.22944364790823,50.18181818181818,13.347022587268995,1.6297949260189273,1,1.0,182,200,200,0.43303800001740456 +200,25,0.8,iterated_maximum_matching_unadjusted,2,64.75791900298748,47.06896551724138,17.84452296819788,1.1054004336829657,1,1.0,195,200,200,0.4195430999970995 +200,25,0.8,iterated_maximum_matching_unadjusted,3,63.14453531806885,51.68738898756661,9.62566844919786,1.2306806360048406,1,1.0,200,200,200,0.4298795000067912 +200,25,0.8,iterated_maximum_matching_unadjusted,4,57.47702121516496,41.78628389154705,13.866231647634583,2.6291864154226823,1,1.0,189,200,200,0.5212166999699548 +200,25,0.8,iterated_maximum_matching_adjusted,0,63.22944364790823,50.18181818181818,13.347022587268995,1.6297949260189273,1,1.0,182,200,200,0.4330380000174045 200,25,0.8,iterated_maximum_matching_adjusted,1,71.50378536332126,56.17760617760618,13.67346938775512,0.8218699136462603,1,1.0,193,200,200,0.5251111999968998 -200,25,0.8,iterated_maximum_matching_adjusted,2,64.75791900298748,47.06896551724138,17.84452296819788,1.1054004336829655,1,1.0,195,200,200,0.4322620999882929 -200,25,0.8,iterated_maximum_matching_adjusted,3,63.144535318068854,51.68738898756661,9.62566844919786,1.2306806360048406,1,1.0,200,200,200,0.4442611000267789 -200,25,0.8,iterated_maximum_matching_adjusted,4,57.47702121516496,41.78628389154705,13.866231647634585,2.6291864154226823,1,1.0,189,200,200,0.5235470999614336 +200,25,0.8,iterated_maximum_matching_adjusted,2,64.75791900298748,47.06896551724138,17.84452296819788,1.1054004336829657,1,1.0,195,200,200,0.4322620999882929 +200,25,0.8,iterated_maximum_matching_adjusted,3,63.14453531806885,51.68738898756661,9.62566844919786,1.2306806360048406,1,1.0,200,200,200,0.4442611000267789 +200,25,0.8,iterated_maximum_matching_adjusted,4,57.47702121516496,41.78628389154705,13.866231647634583,2.6291864154226823,1,1.0,189,200,200,0.5235470999614336 200,25,0.8,serial_dictatorship,0,52.51571736319754,0.0,100.0,43.91729344952517,6,1.0,73,83,87,0.0630457999650389 -200,25,0.8,serial_dictatorship,1,60.86236683588293,0.0,98.62068965517241,34.42012353382863,6,1.0,83,90,97,0.06060539995087311 -200,25,0.8,serial_dictatorship,2,53.61074682792897,0.0,100.0,43.16915783846895,6,1.0,72,74,77,0.06645889999344945 +200,25,0.8,serial_dictatorship,1,60.86236683588293,0.0,98.6206896551724,34.42012353382863,6,1.0,83,90,97,0.0606053999508731 +200,25,0.8,serial_dictatorship,2,53.61074682792897,0.0,100.0,43.16915783846895,6,1.0,72,74,77,0.0664588999934494 200,25,0.8,serial_dictatorship,3,52.59487590695204,0.0,100.0,43.0284258022037,6,1.0,83,88,94,0.0595022999914363 -200,25,0.8,serial_dictatorship,4,46.211159063411316,0.0,100.0,50.83291981913608,6,1.0,61,65,72,0.061368599999696016 -200,25,0.8,round_robin,0,61.123473140452944,42.5414364640884,24.901185770750978,4.799782824923815,1,1.0,182,195,200,0.059657400008291006 -200,25,0.8,round_robin,1,69.47813991437236,51.40712945590994,22.35872235872236,2.959310732837118,1,1.0,192,200,200,0.059744999976828694 -200,25,0.8,round_robin,2,62.73923173434239,40.241796200345426,25.08833922261485,4.2451247287510006,1,1.0,194,200,200,0.05884320003679022 -200,25,0.8,round_robin,3,60.986657385512245,43.00699300699301,18.604651162790702,4.332774081769814,1,1.0,200,200,200,0.06758350000018254 -200,25,0.8,round_robin,4,54.89632711888986,33.014354066985646,20.287539936102235,6.55614310126426,1,1.0,188,200,200,0.05875180003931746 -200,25,0.8,bidirectional_round_robin,0,60.31383276165556,45.11970534069982,18.379446640316203,2.413987246143813,1,1.0,182,195,200,0.05924610001966357 -200,25,0.8,bidirectional_round_robin,1,69.20983250492688,54.78424015009381,15.011037527593814,1.3258920460080197,1,1.0,192,200,200,0.05993820005096495 -200,25,0.8,bidirectional_round_robin,2,62.07288600610786,46.10051993067591,18.279569892473113,2.1178583454755344,1,1.0,194,200,200,0.05825280002318323 -200,25,0.8,bidirectional_round_robin,3,60.947198262630494,46.32867132867133,11.776061776061773,1.4276785898790256,1,1.0,200,200,200,0.05882970005040988 -200,25,0.8,bidirectional_round_robin,4,54.296139448726045,40.92409240924093,14.51876019575856,3.4026276507031294,1,1.0,188,200,200,0.05961559998104349 -200,25,0.8,almost_egalitarian_without_donation,0,64.06598550546198,43.09623430962343,27.19665271966526,5.524927636673633,4,1.0,160,192,196,7.7741669999668375 +200,25,0.8,serial_dictatorship,4,46.21115906341132,0.0,100.0,50.83291981913608,6,1.0,61,65,72,0.061368599999696 +200,25,0.8,round_robin,0,61.123473140452944,42.5414364640884,24.901185770750978,4.799782824923815,1,1.0,182,195,200,0.059657400008291 +200,25,0.8,round_robin,1,69.47813991437236,51.40712945590994,22.35872235872236,2.959310732837118,1,1.0,192,200,200,0.0597449999768286 +200,25,0.8,round_robin,2,62.73923173434239,40.24179620034543,25.08833922261485,4.2451247287510006,1,1.0,194,200,200,0.0588432000367902 +200,25,0.8,round_robin,3,60.986657385512245,43.00699300699301,18.604651162790702,4.332774081769814,1,1.0,200,200,200,0.0675835000001825 +200,25,0.8,round_robin,4,54.89632711888986,33.014354066985646,20.287539936102235,6.55614310126426,1,1.0,188,200,200,0.0587518000393174 +200,25,0.8,bidirectional_round_robin,0,60.31383276165556,45.11970534069982,18.379446640316203,2.413987246143813,1,1.0,182,195,200,0.0592461000196635 +200,25,0.8,bidirectional_round_robin,1,69.20983250492688,54.78424015009381,15.011037527593814,1.3258920460080197,1,1.0,192,200,200,0.0599382000509649 +200,25,0.8,bidirectional_round_robin,2,62.07288600610786,46.10051993067591,18.27956989247312,2.1178583454755344,1,1.0,194,200,200,0.0582528000231832 +200,25,0.8,bidirectional_round_robin,3,60.947198262630494,46.32867132867133,11.776061776061772,1.4276785898790256,1,1.0,200,200,200,0.0588297000504098 +200,25,0.8,bidirectional_round_robin,4,54.296139448726045,40.92409240924093,14.51876019575856,3.402627650703129,1,1.0,188,200,200,0.0596155999810434 +200,25,0.8,almost_egalitarian_without_donation,0,64.06598550546198,43.09623430962343,27.19665271966526,5.524927636673633,4,1.0,160,192,196,7.774166999966837 200,25,0.8,almost_egalitarian_without_donation,1,72.34681338570367,53.669724770642205,23.239436619718305,4.5667810756307095,3,1.0,183,197,199,7.713465000037104 200,25,0.8,almost_egalitarian_without_donation,2,65.47979062693852,42.35807860262008,31.44104803493451,6.612903971647041,3,1.0,172,187,193,7.722431399975903 200,25,0.8,almost_egalitarian_without_donation,3,63.82088512147865,46.18249534450652,34.36960276338515,6.377359148570198,3,1.0,184,193,199,7.726160799968056 200,25,0.8,almost_egalitarian_without_donation,4,58.19934378293279,34.63268365817092,38.61940298507463,9.181019795366108,3,1.0,159,185,193,7.75224880001042 -200,25,0.8,almost_egalitarian_with_donation,0,64.05736560946738,43.09623430962343,27.19665271966526,4.929746258354511,3,1.0,158,191,196,7.9151286000269465 -200,25,0.8,almost_egalitarian_with_donation,1,72.34265268224577,55.193482688391036,23.239436619718305,4.350754449883046,3,1.0,183,197,199,7.832491100009065 -200,25,0.8,almost_egalitarian_with_donation,2,65.46191190004208,43.81551362683438,31.23689727463313,6.272947514977136,3,1.0,170,185,191,7.6389895000029355 -200,25,0.8,almost_egalitarian_with_donation,3,63.80436446958425,46.18249534450652,22.964509394572026,4.591373651357069,3,1.0,185,194,200,7.849152399983723 -200,25,0.8,almost_egalitarian_with_donation,4,58.17757925821941,38.11129848229342,28.20512820512821,8.80966319174177,3,1.0,159,182,190,7.7658057999797165 +200,25,0.8,almost_egalitarian_with_donation,0,64.05736560946738,43.09623430962343,27.19665271966526,4.929746258354511,3,1.0,158,191,196,7.915128600026946 +200,25,0.8,almost_egalitarian_with_donation,1,72.34265268224577,55.19348268839104,23.239436619718305,4.350754449883046,3,1.0,183,197,199,7.832491100009065 +200,25,0.8,almost_egalitarian_with_donation,2,65.46191190004208,43.81551362683438,31.23689727463313,6.272947514977136,3,1.0,170,185,191,7.638989500002935 +200,25,0.8,almost_egalitarian_with_donation,3,63.80436446958425,46.18249534450652,22.964509394572023,4.591373651357069,3,1.0,185,194,200,7.849152399983723 +200,25,0.8,almost_egalitarian_with_donation,4,58.17757925821941,38.11129848229342,28.20512820512821,8.80966319174177,3,1.0,159,182,190,7.765805799979715 200,25,1.0,utilitarian_matching,0,65.12827006518653,0.0,82.18884120171673,14.256912623050114,6,1.0,169,183,184,0.2603281000046991 -200,25,1.0,utilitarian_matching,1,73.20020157896832,0.0,81.29175946547885,13.065232725786705,6,1.0,179,189,194,0.24803040002007037 -200,25,1.0,utilitarian_matching,2,67.01308566609134,0.0,84.68468468468468,16.222548018671535,6,1.0,170,178,184,0.26144480000948533 -200,25,1.0,utilitarian_matching,3,64.72233909384767,0.0,87.44769874476988,17.407857527973203,6,1.0,182,187,188,0.25141500000609085 -200,25,1.0,utilitarian_matching,4,59.913661331485635,0.0,85.24271844660194,17.84727128196492,6,1.0,156,170,176,0.2593930000439286 +200,25,1.0,utilitarian_matching,1,73.20020157896832,0.0,81.29175946547885,13.065232725786704,6,1.0,179,189,194,0.2480304000200703 +200,25,1.0,utilitarian_matching,2,67.01308566609134,0.0,84.68468468468468,16.222548018671535,6,1.0,170,178,184,0.2614448000094853 +200,25,1.0,utilitarian_matching,3,64.72233909384767,0.0,87.44769874476988,17.407857527973203,6,1.0,182,187,188,0.2514150000060908 +200,25,1.0,utilitarian_matching,4,59.91366133148564,0.0,85.24271844660194,17.84727128196492,6,1.0,156,170,176,0.2593930000439286 200,25,1.0,iterated_maximum_matching_unadjusted,0,64.09454136838667,50.6108202443281,14.792899408284022,1.5290726207463063,1,1.0,192,200,200,0.4208397999755107 -200,25,1.0,iterated_maximum_matching_unadjusted,1,72.36116851370927,56.672760511883006,13.711151736745883,0.7444605210717947,1,1.0,197,200,200,0.4433725999551825 +200,25,1.0,iterated_maximum_matching_unadjusted,1,72.36116851370927,56.672760511883006,13.711151736745885,0.7444605210717947,1,1.0,197,200,200,0.4433725999551825 200,25,1.0,iterated_maximum_matching_unadjusted,2,65.86651502510422,46.952224052718286,11.958762886597938,0.8539268803546812,1,1.0,195,200,200,0.4287888000253588 200,25,1.0,iterated_maximum_matching_unadjusted,3,64.05442720888377,51.67785234899329,17.483660130718967,1.2329904400231302,1,1.0,200,200,200,0.4434548999997787 -200,25,1.0,iterated_maximum_matching_unadjusted,4,58.593226780081075,42.331288343558285,15.754560530679932,2.5514038263704557,1,1.0,191,200,200,0.42819279996911064 +200,25,1.0,iterated_maximum_matching_unadjusted,4,58.59322678008108,42.331288343558285,15.754560530679932,2.551403826370456,1,1.0,191,200,200,0.4281927999691106 200,25,1.0,iterated_maximum_matching_adjusted,0,64.09454136838667,50.6108202443281,14.792899408284022,1.5290726207463063,1,1.0,192,200,200,0.5629743000026792 -200,25,1.0,iterated_maximum_matching_adjusted,1,72.36116851370927,56.672760511883006,13.711151736745883,0.7444605210717947,1,1.0,197,200,200,0.46693860000232235 +200,25,1.0,iterated_maximum_matching_adjusted,1,72.36116851370927,56.672760511883006,13.711151736745885,0.7444605210717947,1,1.0,197,200,200,0.4669386000023223 200,25,1.0,iterated_maximum_matching_adjusted,2,65.86651502510422,46.952224052718286,11.958762886597938,0.8539268803546812,1,1.0,195,200,200,0.4398466999991797 200,25,1.0,iterated_maximum_matching_adjusted,3,64.05442720888377,51.67785234899329,17.483660130718967,1.2329904400231302,1,1.0,200,200,200,0.5452240000013262 -200,25,1.0,iterated_maximum_matching_adjusted,4,58.593226780081075,42.331288343558285,15.754560530679932,2.5514038263704557,1,1.0,191,200,200,0.44164470001123846 -200,25,1.0,serial_dictatorship,0,52.87494905825805,0.0,100.0,43.04200484833382,6,1.0,74,84,88,0.06432339997263625 +200,25,1.0,iterated_maximum_matching_adjusted,4,58.59322678008108,42.331288343558285,15.754560530679932,2.551403826370456,1,1.0,191,200,200,0.4416447000112384 +200,25,1.0,serial_dictatorship,0,52.87494905825805,0.0,100.0,43.04200484833382,6,1.0,74,84,88,0.0643233999726362 200,25,1.0,serial_dictatorship,1,61.30734009523553,0.0,98.23008849557522,33.49570700646533,6,1.0,87,96,103,0.0616944000357762 -200,25,1.0,serial_dictatorship,2,54.17121838918437,0.0,100.0,41.710610913115914,6,1.0,74,77,84,0.060384799959138036 -200,25,1.0,serial_dictatorship,3,53.04236738364567,0.0,100.0,42.10430137009916,6,1.0,83,90,96,0.06109959998866543 -200,25,1.0,serial_dictatorship,4,47.28802874351097,0.0,100.0,48.74956628310605,6,1.0,64,70,79,0.06057679996592924 -200,25,1.0,round_robin,0,62.08020074255085,42.01277955271566,22.843450479233226,4.279669165875186,2,1.0,191,199,200,0.06391000002622604 +200,25,1.0,serial_dictatorship,2,54.17121838918437,0.0,100.0,41.71061091311592,6,1.0,74,77,84,0.060384799959138 +200,25,1.0,serial_dictatorship,3,53.04236738364567,0.0,100.0,42.10430137009916,6,1.0,83,90,96,0.0610995999886654 +200,25,1.0,serial_dictatorship,4,47.28802874351097,0.0,100.0,48.74956628310605,6,1.0,64,70,79,0.0605767999659292 +200,25,1.0,round_robin,0,62.08020074255085,42.01277955271566,22.843450479233223,4.279669165875186,2,1.0,191,199,200,0.063910000026226 200,25,1.0,round_robin,1,70.37510130261192,51.245551601423486,22.434367541766115,2.517144304504527,1,1.0,197,200,200,0.0620603000279516 -200,25,1.0,round_robin,2,63.87061983007232,39.96710526315789,18.909090909090907,3.637609916718284,1,1.0,195,200,200,0.06269829999655485 -200,25,1.0,round_robin,3,61.949854194653646,42.71356783919598,17.45762711864407,4.433290331959754,1,1.0,200,200,200,0.061934900004416704 -200,25,1.0,round_robin,4,56.04467383247307,33.281972265023114,20.543806646525688,6.301594419688126,1,1.0,190,200,200,0.07082399999490008 -200,25,1.0,bidirectional_round_robin,0,61.255646118629656,46.34146341463415,19.14498141263941,2.490786923030199,1,1.0,191,199,200,0.059416199976112694 -200,25,1.0,bidirectional_round_robin,1,70.00475665691653,54.44839857651246,13.924050632911388,1.1454258399533535,1,1.0,197,200,200,0.06171530002029613 -200,25,1.0,bidirectional_round_robin,2,63.21811271996481,47.34133790737564,21.855670103092784,1.9176152437432392,1,1.0,195,200,200,0.06225819996325299 +200,25,1.0,round_robin,2,63.87061983007232,39.96710526315789,18.909090909090907,3.637609916718284,1,1.0,195,200,200,0.0626982999965548 +200,25,1.0,round_robin,3,61.949854194653646,42.71356783919598,17.45762711864407,4.433290331959754,1,1.0,200,200,200,0.0619349000044167 +200,25,1.0,round_robin,4,56.04467383247307,33.281972265023114,20.543806646525688,6.301594419688126,1,1.0,190,200,200,0.0708239999949 +200,25,1.0,bidirectional_round_robin,0,61.255646118629656,46.34146341463415,19.14498141263941,2.490786923030199,1,1.0,191,199,200,0.0594161999761126 +200,25,1.0,bidirectional_round_robin,1,70.00475665691653,54.44839857651246,13.924050632911388,1.1454258399533537,1,1.0,197,200,200,0.0617153000202961 +200,25,1.0,bidirectional_round_robin,2,63.21811271996481,47.34133790737564,21.855670103092784,1.9176152437432392,1,1.0,195,200,200,0.0622581999632529 200,25,1.0,bidirectional_round_robin,3,61.83211457147588,50.177304964539005,11.192660550458712,1.3392269702316542,1,1.0,200,200,200,0.0637111000251025 -200,25,1.0,bidirectional_round_robin,4,55.2913017355776,40.76433121019109,14.82059282371295,3.316000664869654,1,1.0,190,200,200,0.06251129996962845 +200,25,1.0,bidirectional_round_robin,4,55.2913017355776,40.76433121019109,14.82059282371295,3.316000664869654,1,1.0,190,200,200,0.0625112999696284 200,25,1.0,almost_egalitarian_without_donation,0,64.83589819562216,44.16342412451362,32.34672304439746,5.84096581339483,4,1.0,169,195,197,8.052278299990576 -200,25,1.0,almost_egalitarian_without_donation,1,73.15577607340722,54.166666666666664,27.19298245614035,3.4189931539846583,3,1.0,185,200,200,7.927426200010814 +200,25,1.0,almost_egalitarian_without_donation,1,73.15577607340722,54.16666666666666,27.19298245614035,3.4189931539846583,3,1.0,185,200,200,7.927426200010814 200,25,1.0,almost_egalitarian_without_donation,2,66.62451263142586,47.53199268738574,30.24574669187146,5.615625490358985,3,1.0,175,186,193,8.008235199959017 -200,25,1.0,almost_egalitarian_without_donation,3,64.62971583705344,46.787148594377506,30.19538188277086,5.983454999505995,4,1.0,184,193,199,8.060027600033209 +200,25,1.0,almost_egalitarian_without_donation,3,64.62971583705344,46.78714859437751,30.19538188277086,5.983454999505995,4,1.0,184,193,199,8.060027600033209 200,25,1.0,almost_egalitarian_without_donation,4,59.21800533568639,34.77653631284916,34.91620111731844,9.684336275210326,3,1.0,157,182,196,8.184827800025232 200,25,1.0,almost_egalitarian_with_donation,0,64.90180738219107,44.16342412451362,32.34672304439746,5.291799313913481,3,1.0,169,195,197,7.912475800025277 -200,25,1.0,almost_egalitarian_with_donation,1,73.1369616944653,54.166666666666664,27.19298245614035,3.582510579169171,3,1.0,185,200,200,7.943843599990942 -200,25,1.0,almost_egalitarian_with_donation,2,66.62455151141289,48.214285714285715,30.341880341880348,5.123764663261223,3,1.0,173,186,193,8.284159400034696 -200,25,1.0,almost_egalitarian_with_donation,3,64.65615614675134,44.148936170212764,28.01418439716312,4.734679211058111,4,1.0,184,195,200,7.940328199998476 +200,25,1.0,almost_egalitarian_with_donation,1,73.1369616944653,54.16666666666666,27.19298245614035,3.582510579169171,3,1.0,185,200,200,7.943843599990942 +200,25,1.0,almost_egalitarian_with_donation,2,66.62455151141289,48.21428571428572,30.341880341880348,5.123764663261223,3,1.0,173,186,193,8.284159400034696 +200,25,1.0,almost_egalitarian_with_donation,3,64.65615614675134,44.14893617021277,28.01418439716312,4.734679211058111,4,1.0,184,195,200,7.940328199998476 200,25,1.0,almost_egalitarian_with_donation,4,59.29530296382481,39.79416809605489,33.17307692307692,8.366607073431378,3,1.0,158,180,193,8.244823599990923 300,25,0.0,utilitarian_matching,0,39.71733291527079,0.0,81.61209068010076,34.78483992870278,6,2.6666666666666665,143,189,218,0.4424878000281751 -300,25,0.0,utilitarian_matching,1,45.54308795245426,0.0,95.1086956521739,39.98728729671606,6,2.6666666666666665,189,230,239,0.42083940003067255 -300,25,0.0,utilitarian_matching,2,39.80287941653382,0.0,76.49769585253456,32.49098300676577,6,2.6666666666666665,174,207,215,0.47605599998496473 -300,25,0.0,utilitarian_matching,3,39.7326892534971,0.0,89.87951807228916,39.638499882538646,6,2.6666666666666665,202,224,234,0.43591250001918525 +300,25,0.0,utilitarian_matching,1,45.54308795245426,0.0,95.1086956521739,39.98728729671606,6,2.6666666666666665,189,230,239,0.4208394000306725 +300,25,0.0,utilitarian_matching,2,39.80287941653382,0.0,76.49769585253456,32.49098300676577,6,2.6666666666666665,174,207,215,0.4760559999849647 +300,25,0.0,utilitarian_matching,3,39.7326892534971,0.0,89.87951807228916,39.638499882538646,6,2.6666666666666665,202,224,234,0.4359125000191852 300,25,0.0,utilitarian_matching,4,34.75887033010234,0.0,75.0,34.50224210997045,6,2.6666666666666665,144,175,193,0.4168721999740228 300,25,0.0,iterated_maximum_matching_unadjusted,0,39.1406215389593,27.43362831858407,18.457943925233643,5.6147842301133,3,2.6666666666666665,156,240,287,0.629456199996639 300,25,0.0,iterated_maximum_matching_unadjusted,1,45.01083933585881,36.46408839779006,13.812154696132602,3.7274996182370033,3,2.6666666666666665,224,288,298,0.6231875999947079 -300,25,0.0,iterated_maximum_matching_unadjusted,2,39.12003016435158,29.28416485900217,14.685314685314687,4.183439429445577,3,2.6666666666666665,188,269,290,0.6060037999995984 -300,25,0.0,iterated_maximum_matching_unadjusted,3,39.238718271746606,30.59360730593607,14.187643020594965,4.662395759345852,3,2.6666666666666665,228,286,300,0.5830449999775738 +300,25,0.0,iterated_maximum_matching_unadjusted,2,39.12003016435158,29.28416485900217,14.685314685314689,4.183439429445577,3,2.6666666666666665,188,269,290,0.6060037999995984 +300,25,0.0,iterated_maximum_matching_unadjusted,3,39.238718271746606,30.59360730593607,14.187643020594964,4.662395759345852,3,2.6666666666666665,228,286,300,0.5830449999775738 300,25,0.0,iterated_maximum_matching_unadjusted,4,34.01682921850288,23.228346456692915,18.83116883116883,4.451659196308826,3,2.6666666666666665,155,212,246,0.6563555999891832 300,25,0.0,iterated_maximum_matching_adjusted,0,39.1406215389593,27.43362831858407,18.457943925233643,5.6147842301133,3,2.6666666666666665,156,240,287,0.7373755000298843 300,25,0.0,iterated_maximum_matching_adjusted,1,45.01083933585881,36.46408839779006,13.812154696132602,3.7274996182370033,3,2.6666666666666665,224,288,298,0.6025465999846347 -300,25,0.0,iterated_maximum_matching_adjusted,2,39.12003016435158,29.28416485900217,14.685314685314687,4.183439429445577,3,2.6666666666666665,188,269,290,0.6085218999651261 -300,25,0.0,iterated_maximum_matching_adjusted,3,39.238718271746606,30.59360730593607,14.187643020594965,4.662395759345852,3,2.6666666666666665,228,286,300,0.6951112000388093 +300,25,0.0,iterated_maximum_matching_adjusted,2,39.12003016435158,29.28416485900217,14.685314685314689,4.183439429445577,3,2.6666666666666665,188,269,290,0.6085218999651261 +300,25,0.0,iterated_maximum_matching_adjusted,3,39.238718271746606,30.59360730593607,14.187643020594964,4.662395759345852,3,2.6666666666666665,228,286,300,0.6951112000388093 300,25,0.0,iterated_maximum_matching_adjusted,4,34.01682921850288,23.228346456692915,18.83116883116883,4.451659196308826,3,2.6666666666666665,155,212,246,0.6245193000067957 -300,25,0.0,serial_dictatorship,0,33.39771849472249,0.0,100.0,65.52806597948633,6,2.6666666666666665,51,57,67,0.10643189999973401 -300,25,0.0,serial_dictatorship,1,39.23460512405082,0.0,100.0,58.980776568620826,6,2.6666666666666665,68,74,79,0.10713740001665428 +300,25,0.0,serial_dictatorship,0,33.39771849472249,0.0,100.0,65.52806597948633,6,2.6666666666666665,51,57,67,0.106431899999734 +300,25,0.0,serial_dictatorship,1,39.23460512405082,0.0,100.0,58.980776568620826,6,2.6666666666666665,68,74,79,0.1071374000166542 300,25,0.0,serial_dictatorship,2,33.20306324702208,0.0,100.0,66.1787646990859,6,2.6666666666666665,50,55,58,0.1178506999858655 -300,25,0.0,serial_dictatorship,3,33.883781870714685,0.0,100.0,64.52656232219424,6,2.6666666666666665,62,65,72,0.10761659999843687 -300,25,0.0,serial_dictatorship,4,28.064103492720186,0.0,100.0,71.84670007463325,6,2.6666666666666665,42,45,48,0.10877499997150153 -300,25,0.0,round_robin,0,37.084617890172424,25.657894736842106,24.654377880184335,9.84131244722116,3,2.6666666666666665,156,222,274,0.11309719999553636 +300,25,0.0,serial_dictatorship,3,33.883781870714685,0.0,100.0,64.52656232219424,6,2.6666666666666665,62,65,72,0.1076165999984368 +300,25,0.0,serial_dictatorship,4,28.064103492720182,0.0,100.0,71.84670007463325,6,2.6666666666666665,42,45,48,0.1087749999715015 +300,25,0.0,round_robin,0,37.08461789017242,25.657894736842103,24.65437788018433,9.84131244722116,3,2.6666666666666665,156,222,274,0.1130971999955363 300,25,0.0,round_robin,1,43.05496940216578,30.423280423280424,20.43010752688172,7.734616878328352,3,2.6666666666666665,212,277,293,0.106700100004673 -300,25,0.0,round_robin,2,37.05673020977912,24.161073825503358,23.076923076923073,8.065436124484494,3,2.6666666666666665,191,248,273,0.10727269999915734 -300,25,0.0,round_robin,3,37.272417945781044,25.476190476190474,20.14925373134328,8.91370823373532,3,2.6666666666666665,217,272,298,0.10711460001766682 -300,25,0.0,round_robin,4,31.688928775480537,16.83366733466934,23.719165085388994,8.243968694128311,3,2.6666666666666665,149,195,224,0.10717380000278354 -300,25,0.0,bidirectional_round_robin,0,36.909369516330074,30.205949656750576,15.4228855721393,4.299837875049376,3,2.6666666666666665,156,222,274,0.10649079998256639 -300,25,0.0,bidirectional_round_robin,1,42.77118596637503,31.566265060240962,12.938005390835578,3.2420014002393747,3,2.6666666666666665,212,277,293,0.10764940001536161 -300,25,0.0,bidirectional_round_robin,2,36.93696020130989,29.753914988814316,13.670886075949365,3.9045437632695372,3,2.6666666666666665,191,248,273,0.1068488999735564 -300,25,0.0,bidirectional_round_robin,3,37.15449732535503,30.476190476190478,12.619047619047617,3.6088389931765166,3,2.6666666666666665,217,272,298,0.11510759999509901 -300,25,0.0,bidirectional_round_robin,4,31.59367520353207,21.821631878557877,15.90909090909091,3.6333639050175037,3,2.6666666666666665,149,195,224,0.11082709999755025 +300,25,0.0,round_robin,2,37.05673020977912,24.16107382550336,23.07692307692308,8.065436124484494,3,2.6666666666666665,191,248,273,0.1072726999991573 +300,25,0.0,round_robin,3,37.27241794578104,25.476190476190474,20.14925373134328,8.91370823373532,3,2.6666666666666665,217,272,298,0.1071146000176668 +300,25,0.0,round_robin,4,31.688928775480537,16.83366733466934,23.719165085389,8.243968694128311,3,2.6666666666666665,149,195,224,0.1071738000027835 +300,25,0.0,bidirectional_round_robin,0,36.90936951633008,30.205949656750576,15.4228855721393,4.299837875049376,3,2.6666666666666665,156,222,274,0.1064907999825663 +300,25,0.0,bidirectional_round_robin,1,42.77118596637503,31.56626506024096,12.938005390835578,3.2420014002393747,3,2.6666666666666665,212,277,293,0.1076494000153616 +300,25,0.0,bidirectional_round_robin,2,36.93696020130989,29.75391498881432,13.670886075949364,3.904543763269537,3,2.6666666666666665,191,248,273,0.1068488999735564 +300,25,0.0,bidirectional_round_robin,3,37.15449732535503,30.47619047619048,12.619047619047617,3.608838993176517,3,2.6666666666666665,217,272,298,0.115107599995099 +300,25,0.0,bidirectional_round_robin,4,31.59367520353207,21.82163187855788,15.90909090909091,3.633363905017504,3,2.6666666666666665,149,195,224,0.1108270999975502 300,25,0.0,almost_egalitarian_without_donation,0,39.3697285855528,20.697167755991288,32.679738562091494,13.293819319500198,4,2.6666666666666665,139,201,252,12.369493999984115 -300,25,0.0,almost_egalitarian_without_donation,1,45.377331704180705,26.997245179063363,34.40860215053764,12.112696673120821,4,2.6666666666666665,194,251,271,12.536990299995523 -300,25,0.0,almost_egalitarian_without_donation,2,39.42673979913749,21.91142191142191,30.365296803652964,11.962063857096629,4,2.6666666666666665,170,217,235,12.104240700020455 +300,25,0.0,almost_egalitarian_without_donation,1,45.37733170418071,26.997245179063363,34.40860215053764,12.11269667312082,4,2.6666666666666665,194,251,271,12.536990299995525 +300,25,0.0,almost_egalitarian_without_donation,2,39.42673979913749,21.91142191142191,30.365296803652964,11.962063857096627,4,2.6666666666666665,170,217,235,12.104240700020457 300,25,0.0,almost_egalitarian_without_donation,3,39.49206609936702,21.68141592920354,35.747663551401864,16.043744761615013,4,2.6666666666666665,199,252,275,12.29849469999317 300,25,0.0,almost_egalitarian_without_donation,4,34.24504177317171,10.947368421052632,43.57894736842106,15.888124637406497,5,2.6666666666666665,143,198,218,12.143935000000056 300,25,0.0,almost_egalitarian_with_donation,0,39.37303203243394,20.697167755991288,32.679738562091494,13.174151033546634,4,2.6666666666666665,139,202,254,12.407698499970138 300,25,0.0,almost_egalitarian_with_donation,1,45.39245780922929,27.1505376344086,34.40860215053764,11.273339437047882,4,2.6666666666666665,198,254,272,12.180718999996316 -300,25,0.0,almost_egalitarian_with_donation,2,39.4199821088673,21.184510250569478,30.365296803652964,11.85427248053837,5,2.6666666666666665,169,217,234,12.384942800039425 -300,25,0.0,almost_egalitarian_with_donation,3,39.49857232034442,21.68141592920354,29.954954954954957,11.789300986321791,4,2.6666666666666665,199,252,275,12.057010899996385 -300,25,0.0,almost_egalitarian_with_donation,4,34.24274729696699,10.947368421052632,43.57894736842106,14.739280135420989,5,2.6666666666666665,142,197,217,12.231124999991152 -300,25,0.2,utilitarian_matching,0,41.37180602015076,0.0,81.48148148148148,32.56222179711022,6,2.6666666666666665,168,202,224,0.41758230002596974 +300,25,0.0,almost_egalitarian_with_donation,2,39.4199821088673,21.18451025056948,30.365296803652964,11.85427248053837,5,2.6666666666666665,169,217,234,12.384942800039424 +300,25,0.0,almost_egalitarian_with_donation,3,39.49857232034442,21.68141592920354,29.95495495495496,11.789300986321791,4,2.6666666666666665,199,252,275,12.057010899996383 +300,25,0.0,almost_egalitarian_with_donation,4,34.24274729696699,10.947368421052632,43.57894736842106,14.739280135420987,5,2.6666666666666665,142,197,217,12.231124999991152 +300,25,0.2,utilitarian_matching,0,41.37180602015076,0.0,81.48148148148148,32.56222179711022,6,2.6666666666666665,168,202,224,0.4175823000259697 300,25,0.2,utilitarian_matching,1,47.0906041122073,0.0,95.77836411609498,36.48478967002654,6,2.6666666666666665,211,236,245,0.410466399975121 300,25,0.2,utilitarian_matching,2,41.91467224505849,0.0,79.57244655581948,30.909770833230045,6,2.6666666666666665,181,212,221,0.4113165999879129 300,25,0.2,utilitarian_matching,3,41.14737019175661,0.0,90.8235294117647,36.92135774256218,6,2.6666666666666665,209,227,236,0.420179599954281 300,25,0.2,utilitarian_matching,4,37.022946121449856,0.0,79.96146435452793,34.676440471940126,6,2.6666666666666665,161,187,203,0.4330754000111483 300,25,0.2,iterated_maximum_matching_unadjusted,0,40.72372443001171,27.370689655172413,17.241379310344833,5.328858006845991,3,2.6666666666666665,181,265,293,0.6002405000035651 -300,25,0.2,iterated_maximum_matching_unadjusted,1,46.48191190830773,37.03703703703704,15.403422982885083,3.1076377189224162,3,2.6666666666666665,245,293,299,0.5914929999853484 +300,25,0.2,iterated_maximum_matching_unadjusted,1,46.48191190830773,37.03703703703704,15.403422982885084,3.107637718922416,3,2.6666666666666665,245,293,299,0.5914929999853484 300,25,0.2,iterated_maximum_matching_unadjusted,2,41.01291820402593,29.64509394572025,15.483870967741936,4.010490232092255,3,2.6666666666666665,217,277,294,0.5919169000117108 -300,25,0.2,iterated_maximum_matching_unadjusted,3,40.587081366153484,29.86111111111111,15.04629629629629,4.607035239391278,3,2.6666666666666665,247,291,300,0.5843935000011697 -300,25,0.2,iterated_maximum_matching_unadjusted,4,36.01657427298831,23.076923076923077,17.735042735042732,4.215807313092652,3,2.6666666666666665,171,227,264,0.7219081999501213 +300,25,0.2,iterated_maximum_matching_unadjusted,3,40.58708136615349,29.86111111111111,15.04629629629629,4.607035239391278,3,2.6666666666666665,247,291,300,0.5843935000011697 +300,25,0.2,iterated_maximum_matching_unadjusted,4,36.01657427298831,23.07692307692308,17.735042735042732,4.215807313092652,3,2.6666666666666665,171,227,264,0.7219081999501213 300,25,0.2,iterated_maximum_matching_adjusted,0,40.72372443001171,27.370689655172413,17.241379310344833,5.328858006845991,3,2.6666666666666665,181,265,293,0.6039021000033244 -300,25,0.2,iterated_maximum_matching_adjusted,1,46.48191190830773,37.03703703703704,15.403422982885083,3.1076377189224162,3,2.6666666666666665,245,293,299,0.6008848000201397 +300,25,0.2,iterated_maximum_matching_adjusted,1,46.48191190830773,37.03703703703704,15.403422982885084,3.107637718922416,3,2.6666666666666665,245,293,299,0.6008848000201397 300,25,0.2,iterated_maximum_matching_adjusted,2,41.01291820402593,29.64509394572025,15.483870967741936,4.010490232092255,3,2.6666666666666665,217,277,294,0.7262774999835528 -300,25,0.2,iterated_maximum_matching_adjusted,3,40.587081366153484,29.86111111111111,15.04629629629629,4.607035239391278,3,2.6666666666666665,247,291,300,0.5974750000168569 -300,25,0.2,iterated_maximum_matching_adjusted,4,36.01657427298831,23.076923076923077,17.735042735042732,4.215807313092652,3,2.6666666666666665,171,227,264,0.6115928999497555 -300,25,0.2,serial_dictatorship,0,33.91265216490531,0.0,100.0,64.15037336405067,6,2.6666666666666665,60,68,75,0.10872810002183542 -300,25,0.2,serial_dictatorship,1,39.60739773632702,0.0,100.0,57.715631595195156,6,2.6666666666666665,72,79,83,0.1094792999792844 -300,25,0.2,serial_dictatorship,2,33.948881488859996,0.0,100.0,64.8417650587865,6,2.6666666666666665,57,61,63,0.11088330001803115 -300,25,0.2,serial_dictatorship,3,34.22786514164865,0.0,100.0,63.21638013032144,6,2.6666666666666665,71,77,81,0.11058279999997467 -300,25,0.2,serial_dictatorship,4,29.116607696608874,0.0,100.0,70.20334095210853,6,2.6666666666666665,50,56,60,0.10964579996652901 -300,25,0.2,round_robin,0,38.453704315223554,25.523012552301257,25.490196078431378,9.590590859994224,3,2.6666666666666665,185,243,286,0.1362642000312917 -300,25,0.2,round_robin,1,44.560014428633565,30.54892601431981,21.68367346938775,7.474639672229546,3,2.6666666666666665,241,289,296,0.10996159998467192 -300,25,0.2,round_robin,2,38.648799699268835,24.532224532224532,23.87706855791963,7.595237702142369,3,2.6666666666666665,212,258,279,0.10705499997129664 +300,25,0.2,iterated_maximum_matching_adjusted,3,40.58708136615349,29.86111111111111,15.04629629629629,4.607035239391278,3,2.6666666666666665,247,291,300,0.5974750000168569 +300,25,0.2,iterated_maximum_matching_adjusted,4,36.01657427298831,23.07692307692308,17.735042735042732,4.215807313092652,3,2.6666666666666665,171,227,264,0.6115928999497555 +300,25,0.2,serial_dictatorship,0,33.91265216490531,0.0,100.0,64.15037336405067,6,2.6666666666666665,60,68,75,0.1087281000218354 +300,25,0.2,serial_dictatorship,1,39.60739773632702,0.0,100.0,57.71563159519516,6,2.6666666666666665,72,79,83,0.1094792999792844 +300,25,0.2,serial_dictatorship,2,33.94888148886,0.0,100.0,64.8417650587865,6,2.6666666666666665,57,61,63,0.1108833000180311 +300,25,0.2,serial_dictatorship,3,34.22786514164865,0.0,100.0,63.21638013032144,6,2.6666666666666665,71,77,81,0.1105827999999746 +300,25,0.2,serial_dictatorship,4,29.11660769660888,0.0,100.0,70.20334095210853,6,2.6666666666666665,50,56,60,0.109645799966529 +300,25,0.2,round_robin,0,38.453704315223554,25.523012552301257,25.49019607843137,9.590590859994224,3,2.6666666666666665,185,243,286,0.1362642000312917 +300,25,0.2,round_robin,1,44.560014428633565,30.54892601431981,21.68367346938775,7.474639672229546,3,2.6666666666666665,241,289,296,0.1099615999846719 +300,25,0.2,round_robin,2,38.64879969926884,24.53222453222453,23.87706855791963,7.595237702142369,3,2.6666666666666665,212,258,279,0.1070549999712966 300,25,0.2,round_robin,3,38.648883837013415,25.339366515837103,20.57416267942584,8.256575046367793,3,2.6666666666666665,244,284,299,0.1078233000007458 -300,25,0.2,round_robin,4,33.471025965217045,16.727272727272727,26.03305785123967,9.836386429808288,3,2.6666666666666665,168,213,249,0.10949699999764562 -300,25,0.2,bidirectional_round_robin,0,38.23819172263735,29.53020134228188,17.494089834515364,4.169643694555769,3,2.6666666666666665,185,243,286,0.11564489995362237 -300,25,0.2,bidirectional_round_robin,1,44.17236831971435,30.542986425339368,13.775510204081627,3.2936675999202145,3,2.6666666666666665,241,289,296,0.11116580001544207 -300,25,0.2,bidirectional_round_robin,2,38.500246786338664,30.532786885245898,14.778325123152712,3.7480173252446645,3,2.6666666666666665,212,258,279,0.1109211000148207 -300,25,0.2,bidirectional_round_robin,3,38.425998997412364,31.221719457013574,12.895927601809955,3.181690232940654,3,2.6666666666666665,244,284,299,0.10945829999400303 -300,25,0.2,bidirectional_round_robin,4,33.25555832908809,21.272727272727273,20.040899795501023,4.012030370987845,3,2.6666666666666665,168,213,249,0.11158119997708127 +300,25,0.2,round_robin,4,33.471025965217045,16.727272727272727,26.03305785123967,9.836386429808288,3,2.6666666666666665,168,213,249,0.1094969999976456 +300,25,0.2,bidirectional_round_robin,0,38.23819172263735,29.53020134228188,17.494089834515364,4.169643694555769,3,2.6666666666666665,185,243,286,0.1156448999536223 +300,25,0.2,bidirectional_round_robin,1,44.17236831971435,30.542986425339368,13.775510204081629,3.2936675999202145,3,2.6666666666666665,241,289,296,0.111165800015442 +300,25,0.2,bidirectional_round_robin,2,38.50024678633866,30.532786885245898,14.778325123152712,3.748017325244665,3,2.6666666666666665,212,258,279,0.1109211000148207 +300,25,0.2,bidirectional_round_robin,3,38.42599899741237,31.22171945701357,12.895927601809955,3.181690232940654,3,2.6666666666666665,244,284,299,0.109458299994003 +300,25,0.2,bidirectional_round_robin,4,33.25555832908809,21.27272727272728,20.040899795501023,4.012030370987845,3,2.6666666666666665,168,213,249,0.1115811999770812 300,25,0.2,almost_egalitarian_without_donation,0,41.00919011343924,22.41758241758242,29.933481152993338,10.412080254599433,5,2.6666666666666665,167,231,259,12.25449680001475 -300,25,0.2,almost_egalitarian_without_donation,1,46.88138671329247,27.577319587628867,33.50515463917526,9.230123194254059,4,2.6666666666666665,219,261,278,12.31098040001234 -300,25,0.2,almost_egalitarian_without_donation,2,41.35684763588771,23.598130841121495,36.21495327102803,12.741779403655832,4,2.6666666666666665,185,228,245,12.2486642000149 -300,25,0.2,almost_egalitarian_without_donation,3,40.84640010370986,22.268041237113405,30.39443155452436,11.635542542621273,4,2.6666666666666665,216,265,275,12.289682900009211 -300,25,0.2,almost_egalitarian_without_donation,4,36.29234810698218,18.809980806142036,34.296724470134876,14.31515074688997,5,2.6666666666666665,158,211,237,12.293752999976277 -300,25,0.2,almost_egalitarian_with_donation,0,41.00698504434627,22.958057395143488,29.933481152993338,10.360177446056847,5,2.6666666666666665,167,231,260,12.276702000002842 -300,25,0.2,almost_egalitarian_with_donation,1,46.8847182592751,27.577319587628867,33.50515463917526,9.295713502502421,4,2.6666666666666665,220,261,277,12.506643100001384 -300,25,0.2,almost_egalitarian_with_donation,2,41.37978087207948,23.598130841121495,28.672985781990526,11.363092692918462,4,2.6666666666666665,184,229,246,12.434318899991922 -300,25,0.2,almost_egalitarian_with_donation,3,40.86042463531324,22.268041237113405,30.751708428246012,10.976878298851622,4,2.6666666666666665,217,264,272,12.485069699992891 -300,25,0.2,almost_egalitarian_with_donation,4,36.303176618355245,18.809980806142036,33.634719710669074,12.16970064855232,5,2.6666666666666665,160,209,236,12.178864800021984 -300,25,0.5,utilitarian_matching,0,43.1884556494701,0.0,85.09615384615384,31.076679853096866,6,2.6666666666666665,180,212,226,0.39376470004208386 +300,25,0.2,almost_egalitarian_without_donation,1,46.88138671329247,27.577319587628867,33.50515463917526,9.23012319425406,4,2.6666666666666665,219,261,278,12.31098040001234 +300,25,0.2,almost_egalitarian_without_donation,2,41.35684763588771,23.59813084112149,36.21495327102803,12.741779403655832,4,2.6666666666666665,185,228,245,12.2486642000149 +300,25,0.2,almost_egalitarian_without_donation,3,40.84640010370986,22.268041237113405,30.39443155452436,11.635542542621272,4,2.6666666666666665,216,265,275,12.289682900009211 +300,25,0.2,almost_egalitarian_without_donation,4,36.29234810698218,18.80998080614204,34.29672447013488,14.31515074688997,5,2.6666666666666665,158,211,237,12.293752999976276 +300,25,0.2,almost_egalitarian_with_donation,0,41.00698504434627,22.958057395143488,29.933481152993338,10.360177446056849,5,2.6666666666666665,167,231,260,12.276702000002842 +300,25,0.2,almost_egalitarian_with_donation,1,46.8847182592751,27.577319587628867,33.50515463917526,9.29571350250242,4,2.6666666666666665,220,261,277,12.506643100001384 +300,25,0.2,almost_egalitarian_with_donation,2,41.37978087207948,23.59813084112149,28.672985781990526,11.363092692918462,4,2.6666666666666665,184,229,246,12.434318899991922 +300,25,0.2,almost_egalitarian_with_donation,3,40.86042463531324,22.268041237113405,30.75170842824601,10.976878298851622,4,2.6666666666666665,217,264,272,12.485069699992891 +300,25,0.2,almost_egalitarian_with_donation,4,36.303176618355245,18.80998080614204,33.634719710669074,12.16970064855232,5,2.6666666666666665,160,209,236,12.178864800021984 +300,25,0.5,utilitarian_matching,0,43.1884556494701,0.0,85.09615384615384,31.076679853096863,6,2.6666666666666665,180,212,226,0.3937647000420838 300,25,0.5,utilitarian_matching,1,48.85120200439545,0.0,99.24812030075188,31.45653692992237,6,2.6666666666666665,214,242,249,0.4142328000161797 300,25,0.5,utilitarian_matching,2,44.239858715182365,0.0,79.7008547008547,28.604778938786907,6,2.6666666666666665,190,215,223,0.4022868000320159 300,25,0.5,utilitarian_matching,3,42.737366469286016,0.0,91.87358916478556,33.27605388761336,6,2.6666666666666665,212,229,237,0.4088345000054687 -300,25,0.5,utilitarian_matching,4,39.507285888761906,0.0,86.64047151277013,32.30119830945522,6,2.6666666666666665,171,195,211,0.4142264999682084 +300,25,0.5,utilitarian_matching,4,39.50728588876191,0.0,86.64047151277013,32.30119830945522,6,2.6666666666666665,171,195,211,0.4142264999682084 300,25,0.5,iterated_maximum_matching_unadjusted,0,42.44181124511805,27.86885245901639,17.832957110609478,4.828233169727747,3,2.6666666666666665,205,280,297,0.5847689000074752 -300,25,0.5,iterated_maximum_matching_unadjusted,1,48.144819058500076,36.99551569506727,15.022421524663677,2.6389023685455624,3,2.6666666666666665,259,295,300,0.5719114000094123 -300,25,0.5,iterated_maximum_matching_unadjusted,2,43.138875055565364,29.62226640159046,14.592274678111593,3.2128469939786863,3,2.6666666666666665,228,284,297,0.5998676999588497 -300,25,0.5,iterated_maximum_matching_unadjusted,3,42.16786161991922,30.444444444444446,14.879649890590805,4.152036519692752,3,2.6666666666666665,264,299,300,0.7305440999916755 +300,25,0.5,iterated_maximum_matching_unadjusted,1,48.14481905850008,36.99551569506727,15.022421524663676,2.6389023685455624,3,2.6666666666666665,259,295,300,0.5719114000094123 +300,25,0.5,iterated_maximum_matching_unadjusted,2,43.13887505556536,29.62226640159046,14.592274678111592,3.2128469939786863,3,2.6666666666666665,228,284,297,0.5998676999588497 +300,25,0.5,iterated_maximum_matching_unadjusted,3,42.16786161991922,30.444444444444446,14.879649890590803,4.152036519692752,3,2.6666666666666665,264,299,300,0.7305440999916755 300,25,0.5,iterated_maximum_matching_unadjusted,4,38.25217153849179,24.014336917562723,16.733870967741943,3.5620165161694355,3,2.6666666666666665,186,246,276,0.5821422000299208 300,25,0.5,iterated_maximum_matching_adjusted,0,42.44181124511805,27.86885245901639,17.832957110609478,4.828233169727747,3,2.6666666666666665,205,280,297,0.6035518000135198 -300,25,0.5,iterated_maximum_matching_adjusted,1,48.144819058500076,36.99551569506727,15.022421524663677,2.6389023685455624,3,2.6666666666666665,259,295,300,0.7177800000063144 -300,25,0.5,iterated_maximum_matching_adjusted,2,43.138875055565364,29.62226640159046,14.592274678111593,3.2128469939786863,3,2.6666666666666665,228,284,297,0.6211624999996275 -300,25,0.5,iterated_maximum_matching_adjusted,3,42.16786161991922,30.444444444444446,14.879649890590805,4.152036519692752,3,2.6666666666666665,264,299,300,0.5984470999683253 +300,25,0.5,iterated_maximum_matching_adjusted,1,48.14481905850008,36.99551569506727,15.022421524663676,2.6389023685455624,3,2.6666666666666665,259,295,300,0.7177800000063144 +300,25,0.5,iterated_maximum_matching_adjusted,2,43.13887505556536,29.62226640159046,14.592274678111592,3.2128469939786863,3,2.6666666666666665,228,284,297,0.6211624999996275 +300,25,0.5,iterated_maximum_matching_adjusted,3,42.16786161991922,30.444444444444446,14.879649890590803,4.152036519692752,3,2.6666666666666665,264,299,300,0.5984470999683253 300,25,0.5,iterated_maximum_matching_adjusted,4,38.25217153849179,24.014336917562723,16.733870967741943,3.5620165161694355,3,2.6666666666666665,186,246,276,0.6155943000339903 -300,25,0.5,serial_dictatorship,0,34.365598565732824,0.0,100.0,62.009243234409844,6,2.6666666666666665,65,75,84,0.10829030000604689 +300,25,0.5,serial_dictatorship,0,34.365598565732824,0.0,100.0,62.00924323440984,6,2.6666666666666665,65,75,84,0.1082903000060468 300,25,0.5,serial_dictatorship,1,40.32293540343819,0.0,100.0,55.25384945135942,6,2.6666666666666665,79,84,93,0.1076632000040263 -300,25,0.5,serial_dictatorship,2,34.88066058396991,0.0,100.0,62.46912979754613,6,2.6666666666666665,67,67,69,0.10903210000833496 -300,25,0.5,serial_dictatorship,3,34.70710886236371,0.0,100.0,61.17942498093849,6,2.6666666666666665,75,83,89,0.11329280002973974 -300,25,0.5,serial_dictatorship,4,30.06162637611284,0.0,100.0,68.18850623868947,6,2.6666666666666665,57,62,67,0.10994300001766533 -300,25,0.5,round_robin,0,39.940959770035185,25.83826429980276,27.41617357001973,9.193352485631728,3,2.6666666666666665,211,258,295,0.24170079996110871 -300,25,0.5,round_robin,1,46.14521668772741,30.92105263157895,20.57026476578411,6.661610283294963,3,2.6666666666666665,257,295,299,0.10754799999995157 -300,25,0.5,round_robin,2,40.65132909786729,23.689320388349515,25.485961123110147,7.678475643204027,3,2.6666666666666665,228,269,287,0.10878959996625781 -300,25,0.5,round_robin,3,40.01527004602502,25.6,22.284644194756556,7.634542968973281,3,2.6666666666666665,263,290,300,0.10527030000230297 -300,25,0.5,round_robin,4,35.52263271091428,17.717206132879046,29.01353965183752,9.338574512796153,3,2.6666666666666665,194,229,262,0.10368340002605692 -300,25,0.5,bidirectional_round_robin,0,39.623004447936296,28.964059196617338,19.65442764578833,4.192758865594272,3,2.6666666666666665,211,258,295,0.10618619999149814 -300,25,0.5,bidirectional_round_robin,1,45.790430294457906,30.04115226337449,13.78600823045267,3.032679531267223,3,2.6666666666666665,257,295,299,0.10796039999695495 -300,25,0.5,bidirectional_round_robin,2,40.42254416911461,29.74559686888454,14.686825053995683,3.578567851785818,3,2.6666666666666665,228,269,287,0.10654670000076294 -300,25,0.5,bidirectional_round_robin,3,39.72373212724551,31.679389312977097,16.603053435114507,3.58779672431553,3,2.6666666666666665,263,290,300,0.10719860001699999 -300,25,0.5,bidirectional_round_robin,4,35.330430944396525,20.926243567753,23.40425531914894,4.331963129026,3,2.6666666666666665,194,229,262,0.10770539997611195 -300,25,0.5,almost_egalitarian_without_donation,0,42.720427991497516,19.198312236286917,33.946830265848675,11.199251410912485,5,2.6666666666666665,186,244,271,12.659042899962515 -300,25,0.5,almost_egalitarian_without_donation,1,48.566250738909865,28.749999999999996,33.67609254498715,9.613420485359438,4,2.6666666666666665,230,263,287,12.38521140004741 +300,25,0.5,serial_dictatorship,2,34.88066058396991,0.0,100.0,62.46912979754613,6,2.6666666666666665,67,67,69,0.1090321000083349 +300,25,0.5,serial_dictatorship,3,34.70710886236371,0.0,100.0,61.17942498093849,6,2.6666666666666665,75,83,89,0.1132928000297397 +300,25,0.5,serial_dictatorship,4,30.06162637611284,0.0,100.0,68.18850623868947,6,2.6666666666666665,57,62,67,0.1099430000176653 +300,25,0.5,round_robin,0,39.94095977003519,25.83826429980276,27.41617357001973,9.193352485631728,3,2.6666666666666665,211,258,295,0.2417007999611087 +300,25,0.5,round_robin,1,46.14521668772741,30.92105263157895,20.57026476578411,6.661610283294963,3,2.6666666666666665,257,295,299,0.1075479999999515 +300,25,0.5,round_robin,2,40.65132909786729,23.689320388349515,25.485961123110147,7.678475643204027,3,2.6666666666666665,228,269,287,0.1087895999662578 +300,25,0.5,round_robin,3,40.01527004602502,25.6,22.28464419475656,7.634542968973281,3,2.6666666666666665,263,290,300,0.1052703000023029 +300,25,0.5,round_robin,4,35.52263271091428,17.717206132879046,29.01353965183752,9.338574512796152,3,2.6666666666666665,194,229,262,0.1036834000260569 +300,25,0.5,bidirectional_round_robin,0,39.623004447936296,28.96405919661733,19.65442764578833,4.192758865594272,3,2.6666666666666665,211,258,295,0.1061861999914981 +300,25,0.5,bidirectional_round_robin,1,45.79043029445791,30.04115226337449,13.78600823045267,3.032679531267223,3,2.6666666666666665,257,295,299,0.1079603999969549 +300,25,0.5,bidirectional_round_robin,2,40.42254416911461,29.74559686888454,14.686825053995683,3.578567851785818,3,2.6666666666666665,228,269,287,0.1065467000007629 +300,25,0.5,bidirectional_round_robin,3,39.72373212724551,31.679389312977097,16.603053435114507,3.58779672431553,3,2.6666666666666665,263,290,300,0.1071986000169999 +300,25,0.5,bidirectional_round_robin,4,35.330430944396525,20.926243567753,23.40425531914894,4.331963129026,3,2.6666666666666665,194,229,262,0.1077053999761119 +300,25,0.5,almost_egalitarian_without_donation,0,42.72042799149752,19.19831223628692,33.946830265848675,11.199251410912485,5,2.6666666666666665,186,244,271,12.659042899962516 +300,25,0.5,almost_egalitarian_without_donation,1,48.566250738909865,28.75,33.67609254498715,9.613420485359438,4,2.6666666666666665,230,263,287,12.38521140004741 300,25,0.5,almost_egalitarian_without_donation,2,43.57690784549064,20.302375809935207,37.58542141230069,12.334788058283104,5,2.6666666666666665,196,240,260,12.349658799997997 -300,25,0.5,almost_egalitarian_without_donation,3,42.41393467184557,21.64328657314629,30.620985010706644,10.733997413583928,5,2.6666666666666665,230,275,287,12.212475500011351 -300,25,0.5,almost_egalitarian_without_donation,4,38.587355724428996,14.91395793499044,39.57934990439771,14.237323412960853,5,2.6666666666666665,173,221,249,12.340587200014852 -300,25,0.5,almost_egalitarian_with_donation,0,42.72399427624071,19.198312236286917,33.946830265848675,11.12675394255603,5,2.6666666666666665,186,244,271,12.376593500026502 -300,25,0.5,almost_egalitarian_with_donation,1,48.58474403366943,28.749999999999996,33.004926108374384,9.227459109507855,4,2.6666666666666665,232,263,287,12.240941299998667 -300,25,0.5,almost_egalitarian_with_donation,2,43.60431887952012,20.302375809935207,35.24027459954234,10.482355399342214,5,2.6666666666666665,196,241,260,12.436691700015217 +300,25,0.5,almost_egalitarian_without_donation,3,42.41393467184557,21.64328657314629,30.620985010706644,10.733997413583928,5,2.6666666666666665,230,275,287,12.212475500011353 +300,25,0.5,almost_egalitarian_without_donation,4,38.587355724429,14.91395793499044,39.57934990439771,14.237323412960851,5,2.6666666666666665,173,221,249,12.340587200014852 +300,25,0.5,almost_egalitarian_with_donation,0,42.72399427624071,19.19831223628692,33.946830265848675,11.12675394255603,5,2.6666666666666665,186,244,271,12.376593500026502 +300,25,0.5,almost_egalitarian_with_donation,1,48.58474403366943,28.75,33.004926108374384,9.227459109507857,4,2.6666666666666665,232,263,287,12.240941299998669 +300,25,0.5,almost_egalitarian_with_donation,2,43.60431887952012,20.302375809935207,35.24027459954234,10.482355399342214,5,2.6666666666666665,196,241,260,12.436691700015215 300,25,0.5,almost_egalitarian_with_donation,3,42.41983450236221,21.64328657314629,30.620985010706644,10.282628572765864,4,2.6666666666666665,229,273,285,12.3997032000334 300,25,0.5,almost_egalitarian_with_donation,4,38.61658158254731,14.91395793499044,39.57934990439771,12.166873382160084,5,2.6666666666666665,173,220,247,12.641460999962874 300,25,0.8,utilitarian_matching,0,44.54799470358934,0.0,80.23255813953489,29.259449525569707,6,2.6666666666666665,187,220,232,0.4117357000359334 300,25,0.8,utilitarian_matching,1,50.11968839195418,0.0,99.76190476190476,30.44536819567135,6,2.6666666666666665,220,241,248,0.3947199000394903 -300,25,0.8,utilitarian_matching,2,45.949461650277996,0.0,85.36585365853658,28.40829737115002,6,2.6666666666666665,196,222,233,0.4149187000002712 -300,25,0.8,utilitarian_matching,3,43.927125670901106,0.0,92.3913043478261,31.522757441197488,6,2.6666666666666665,215,229,235,0.4079725000192411 -300,25,0.8,utilitarian_matching,4,41.28647169243629,0.0,86.80297397769516,31.330537628016657,6,2.6666666666666665,181,205,214,0.41483800002606586 +300,25,0.8,utilitarian_matching,2,45.949461650278,0.0,85.36585365853658,28.40829737115002,6,2.6666666666666665,196,222,233,0.4149187000002712 +300,25,0.8,utilitarian_matching,3,43.92712567090111,0.0,92.3913043478261,31.522757441197488,6,2.6666666666666665,215,229,235,0.4079725000192411 +300,25,0.8,utilitarian_matching,4,41.28647169243629,0.0,86.80297397769516,31.330537628016657,6,2.6666666666666665,181,205,214,0.4148380000260658 300,25,0.8,iterated_maximum_matching_unadjusted,0,43.81537134205374,28.07017543859649,20.26022304832714,4.444621158950279,3,2.6666666666666665,213,286,297,0.5917126999702305 300,25,0.8,iterated_maximum_matching_unadjusted,1,49.40426460808358,37.47412008281574,15.306122448979586,2.2139330258947623,3,2.6666666666666665,270,297,300,0.5900283000082709 -300,25,0.8,iterated_maximum_matching_unadjusted,2,44.75781574373595,30.134357005758154,15.873015873015873,3.2812052776091467,3,2.6666666666666665,244,292,298,0.5868470999994315 -300,25,0.8,iterated_maximum_matching_unadjusted,3,43.374698438580275,30.902111324376197,15.355086372360848,3.9601361475023076,3,2.6666666666666665,273,300,300,0.5893803000217304 +300,25,0.8,iterated_maximum_matching_unadjusted,2,44.75781574373595,30.134357005758154,15.873015873015872,3.2812052776091467,3,2.6666666666666665,244,292,298,0.5868470999994315 +300,25,0.8,iterated_maximum_matching_unadjusted,3,43.37469843858028,30.9021113243762,15.355086372360848,3.960136147502308,3,2.6666666666666665,273,300,300,0.5893803000217304 300,25,0.8,iterated_maximum_matching_unadjusted,4,39.896490599797005,23.711340206185564,16.7910447761194,3.4178658537790656,3,2.6666666666666665,205,260,284,0.5838887999998406 300,25,0.8,iterated_maximum_matching_adjusted,0,43.81537134205374,28.07017543859649,20.26022304832714,4.444621158950279,3,2.6666666666666665,213,286,297,0.7939149999874644 300,25,0.8,iterated_maximum_matching_adjusted,1,49.40426460808358,37.47412008281574,15.306122448979586,2.2139330258947623,3,2.6666666666666665,270,297,300,0.6236257000127807 -300,25,0.8,iterated_maximum_matching_adjusted,2,44.75781574373595,30.134357005758154,15.873015873015873,3.2812052776091467,3,2.6666666666666665,244,292,298,0.5960176999797113 -300,25,0.8,iterated_maximum_matching_adjusted,3,43.374698438580275,30.902111324376197,15.355086372360848,3.9601361475023076,3,2.6666666666666665,273,300,300,0.7446940999943763 +300,25,0.8,iterated_maximum_matching_adjusted,2,44.75781574373595,30.134357005758154,15.873015873015872,3.2812052776091467,3,2.6666666666666665,244,292,298,0.5960176999797113 +300,25,0.8,iterated_maximum_matching_adjusted,3,43.37469843858028,30.9021113243762,15.355086372360848,3.960136147502308,3,2.6666666666666665,273,300,300,0.7446940999943763 300,25,0.8,iterated_maximum_matching_adjusted,4,39.896490599797005,23.711340206185564,16.7910447761194,3.4178658537790656,3,2.6666666666666665,205,260,284,0.5823194999829866 -300,25,0.8,serial_dictatorship,0,35.01047824213169,0.0,100.0,60.38303253559529,6,2.6666666666666665,73,83,87,0.11402079998515546 -300,25,0.8,serial_dictatorship,1,40.57491122392195,0.0,100.0,53.80222703738523,6,2.6666666666666665,83,90,97,0.11330420000012964 -300,25,0.8,serial_dictatorship,2,35.74049788528598,0.0,100.0,60.332593952822926,6,2.6666666666666665,72,74,77,0.11787679995177314 +300,25,0.8,serial_dictatorship,0,35.01047824213169,0.0,100.0,60.38303253559529,6,2.6666666666666665,73,83,87,0.1140207999851554 +300,25,0.8,serial_dictatorship,1,40.57491122392195,0.0,100.0,53.80222703738523,6,2.6666666666666665,83,90,97,0.1133042000001296 +300,25,0.8,serial_dictatorship,2,35.74049788528598,0.0,100.0,60.332593952822926,6,2.6666666666666665,72,74,77,0.1178767999517731 300,25,0.8,serial_dictatorship,3,35.06325060463469,0.0,100.0,59.36093072897997,6,2.6666666666666665,83,88,94,0.1088109000120312 -300,25,0.8,serial_dictatorship,4,30.807439375607544,0.0,100.0,66.0390720359987,6,2.6666666666666665,61,65,72,0.10397729999385774 -300,25,0.8,round_robin,0,41.27200870401087,25.15090543259557,26.63139329805997,8.814800585432419,3,2.6666666666666665,222,265,297,0.10374019999289885 -300,25,0.8,round_robin,1,47.42261840444195,32.64462809917356,20.921305182341648,6.055449355745389,3,2.6666666666666665,268,298,300,0.10786500002723187 -300,25,0.8,round_robin,2,42.20320529767625,23.741007194244602,26.666666666666675,7.8653126710189945,3,2.6666666666666665,241,278,292,0.10766099998727441 -300,25,0.8,round_robin,3,41.02527981264417,25.235404896421848,24.365482233502544,7.363363851326589,3,2.6666666666666665,273,294,300,0.11413809994701296 +300,25,0.8,serial_dictatorship,4,30.807439375607544,0.0,100.0,66.0390720359987,6,2.6666666666666665,61,65,72,0.1039772999938577 +300,25,0.8,round_robin,0,41.27200870401087,25.15090543259557,26.63139329805997,8.814800585432419,3,2.6666666666666665,222,265,297,0.1037401999928988 +300,25,0.8,round_robin,1,47.42261840444195,32.64462809917356,20.921305182341648,6.055449355745389,3,2.6666666666666665,268,298,300,0.1078650000272318 +300,25,0.8,round_robin,2,42.20320529767625,23.7410071942446,26.666666666666675,7.865312671018994,3,2.6666666666666665,241,278,292,0.1076609999872744 +300,25,0.8,round_robin,3,41.02527981264417,25.235404896421848,24.365482233502544,7.363363851326589,3,2.6666666666666665,273,294,300,0.1141380999470129 300,25,0.8,round_robin,4,37.18114554778708,18.25657894736842,29.02654867256637,9.192559005174967,3,2.6666666666666665,203,242,272,0.1114164000027813 -300,25,0.8,bidirectional_round_robin,0,40.729741751447044,28.7569573283859,23.320158102766797,4.215253047184493,3,2.6666666666666665,222,265,297,0.11039039999013767 -300,25,0.8,bidirectional_round_robin,1,46.9476208916607,29.734848484848484,16.872427983539097,2.969115931135104,3,2.6666666666666665,268,298,300,0.11184460000367835 -300,25,0.8,bidirectional_round_robin,2,41.84286655120736,28.942486085343226,17.373737373737377,3.7221383047685155,3,2.6666666666666665,241,278,292,0.1097955999430269 -300,25,0.8,bidirectional_round_robin,3,40.840849297675355,31.11888111888112,14.382402707275801,3.529324214235592,3,2.6666666666666665,273,294,300,0.11094969999976456 -300,25,0.8,bidirectional_round_robin,4,36.76792036304611,21.79700499168053,25.84070796460177,4.784362006249035,3,2.6666666666666665,203,242,272,0.10919290001038462 +300,25,0.8,bidirectional_round_robin,0,40.72974175144704,28.7569573283859,23.3201581027668,4.215253047184493,3,2.6666666666666665,222,265,297,0.1103903999901376 +300,25,0.8,bidirectional_round_robin,1,46.9476208916607,29.734848484848484,16.872427983539097,2.969115931135104,3,2.6666666666666665,268,298,300,0.1118446000036783 +300,25,0.8,bidirectional_round_robin,2,41.84286655120736,28.942486085343223,17.373737373737377,3.722138304768516,3,2.6666666666666665,241,278,292,0.1097955999430269 +300,25,0.8,bidirectional_round_robin,3,40.84084929767536,31.11888111888112,14.3824027072758,3.529324214235592,3,2.6666666666666665,273,294,300,0.1109496999997645 +300,25,0.8,bidirectional_round_robin,4,36.76792036304611,21.79700499168053,25.84070796460177,4.784362006249035,3,2.6666666666666665,203,242,272,0.1091929000103846 300,25,0.8,almost_egalitarian_without_donation,0,44.10040372015013,17.62376237623762,40.99009900990099,10.307241614842924,5,2.6666666666666665,191,255,280,12.588894300046377 -300,25,0.8,almost_egalitarian_without_donation,1,49.91197796160656,29.87551867219917,29.193899782135077,8.361883520390224,4,2.6666666666666665,239,274,292,12.691720100003295 -300,25,0.8,almost_egalitarian_without_donation,2,45.24530896448655,25.547445255474454,35.44857768052516,10.133646745352488,5,2.6666666666666665,206,247,267,12.592786799999885 -300,25,0.8,almost_egalitarian_without_donation,3,43.618547335427714,22.71880819366853,31.471135940409688,9.905844774688221,4,2.6666666666666665,239,277,285,12.51178030000301 -300,25,0.8,almost_egalitarian_without_donation,4,40.27882010308413,18.627450980392158,36.8421052631579,11.21753699523339,5,2.6666666666666665,183,230,258,12.336475399963092 -300,25,0.8,almost_egalitarian_with_donation,0,44.11471321003086,17.62376237623762,40.99009900990099,10.175386447866812,5,2.6666666666666665,191,256,281,12.320924900006503 +300,25,0.8,almost_egalitarian_without_donation,1,49.91197796160656,29.87551867219917,29.19389978213508,8.361883520390224,4,2.6666666666666665,239,274,292,12.691720100003296 +300,25,0.8,almost_egalitarian_without_donation,2,45.24530896448655,25.547445255474454,35.44857768052516,10.133646745352488,5,2.6666666666666665,206,247,267,12.592786799999883 +300,25,0.8,almost_egalitarian_without_donation,3,43.618547335427714,22.71880819366853,31.471135940409688,9.90584477468822,4,2.6666666666666665,239,277,285,12.51178030000301 +300,25,0.8,almost_egalitarian_without_donation,4,40.27882010308413,18.62745098039216,36.8421052631579,11.21753699523339,5,2.6666666666666665,183,230,258,12.336475399963092 +300,25,0.8,almost_egalitarian_with_donation,0,44.11471321003086,17.62376237623762,40.99009900990099,10.175386447866812,5,2.6666666666666665,191,256,281,12.320924900006505 300,25,0.8,almost_egalitarian_with_donation,1,49.94837662257917,29.87551867219917,30.14256619144603,8.282900815581758,4,2.6666666666666665,238,272,291,12.411942599981558 -300,25,0.8,almost_egalitarian_with_donation,2,45.30520478806421,26.978417266187048,35.44857768052516,8.930486134804626,4,2.6666666666666665,209,247,267,12.648623299959581 +300,25,0.8,almost_egalitarian_with_donation,2,45.30520478806421,26.978417266187048,35.44857768052516,8.930486134804626,4,2.6666666666666665,209,247,267,12.64862329995958 300,25,0.8,almost_egalitarian_with_donation,3,43.63068322674417,22.71880819366853,31.471135940409688,9.536169054100515,5,2.6666666666666665,239,278,286,12.519978399970569 -300,25,0.8,almost_egalitarian_with_donation,4,40.32361539787782,18.627450980392158,36.8421052631579,10.629305874486782,5,2.6666666666666665,184,231,259,12.564725300006103 +300,25,0.8,almost_egalitarian_with_donation,4,40.32361539787782,18.62745098039216,36.8421052631579,10.629305874486782,5,2.6666666666666665,184,231,259,12.564725300006105 300,25,1.0,utilitarian_matching,0,45.22396373955795,0.0,79.90867579908677,28.776301674887804,6,2.6666666666666665,195,222,231,0.4050801999983378 300,25,1.0,utilitarian_matching,1,50.82075483657884,0.0,100.0,28.77224657277245,6,2.6666666666666665,223,244,251,0.4000922999694012 -300,25,1.0,utilitarian_matching,2,46.821206375581475,0.0,84.68468468468468,27.667622195134676,6,2.6666666666666665,195,223,234,0.4099625999806449 -300,25,1.0,utilitarian_matching,3,44.62544989424225,0.0,78.8135593220339,29.767387411882375,6,2.6666666666666665,219,230,236,0.38749960000859573 -300,25,1.0,utilitarian_matching,4,42.275821803378385,0.0,86.76207513416816,31.01545712568976,6,2.6666666666666665,183,204,220,0.3965478999889456 -300,25,1.0,iterated_maximum_matching_unadjusted,0,44.49786370426493,28.544423440453688,20.629370629370634,4.371818257134365,3,2.6666666666666665,226,290,298,0.5766276000067592 +300,25,1.0,utilitarian_matching,2,46.82120637558148,0.0,84.68468468468468,27.66762219513468,6,2.6666666666666665,195,223,234,0.4099625999806449 +300,25,1.0,utilitarian_matching,3,44.62544989424225,0.0,78.8135593220339,29.76738741188237,6,2.6666666666666665,219,230,236,0.3874996000085957 +300,25,1.0,utilitarian_matching,4,42.27582180337839,0.0,86.76207513416816,31.01545712568976,6,2.6666666666666665,183,204,220,0.3965478999889456 +300,25,1.0,iterated_maximum_matching_unadjusted,0,44.49786370426493,28.544423440453688,20.62937062937064,4.371818257134365,3,2.6666666666666665,226,290,298,0.5766276000067592 300,25,1.0,iterated_maximum_matching_unadjusted,1,50.13283026038117,37.79527559055118,12.168141592920357,2.1723384926813285,3,2.6666666666666665,278,298,300,0.5675516999908723 300,25,1.0,iterated_maximum_matching_unadjusted,2,45.61546096480497,30.1498127340824,15.35181236673774,3.1958855341160946,3,2.6666666666666665,242,295,299,0.5943089000065811 -300,25,1.0,iterated_maximum_matching_unadjusted,3,44.055176021901055,31.053604436229204,15.341959334565619,3.7138422930823665,3,2.6666666666666665,273,300,300,0.7487515000393614 +300,25,1.0,iterated_maximum_matching_unadjusted,3,44.055176021901055,31.053604436229204,15.34195933456562,3.713842293082368,3,2.6666666666666665,273,300,300,0.7487515000393614 300,25,1.0,iterated_maximum_matching_unadjusted,4,40.88236042266068,24.03361344537815,18.067978533094816,3.4884117962880645,3,2.6666666666666665,207,261,288,0.5908985000569373 -300,25,1.0,iterated_maximum_matching_adjusted,0,44.49786370426493,28.544423440453688,20.629370629370634,4.371818257134365,3,2.6666666666666665,226,290,298,0.5872900999966078 +300,25,1.0,iterated_maximum_matching_adjusted,0,44.49786370426493,28.544423440453688,20.62937062937064,4.371818257134365,3,2.6666666666666665,226,290,298,0.5872900999966078 300,25,1.0,iterated_maximum_matching_adjusted,1,50.13283026038117,37.79527559055118,12.168141592920357,2.1723384926813285,3,2.6666666666666665,278,298,300,0.592071000020951 300,25,1.0,iterated_maximum_matching_adjusted,2,45.61546096480497,30.1498127340824,15.35181236673774,3.1958855341160946,3,2.6666666666666665,242,295,299,0.7736193999880925 -300,25,1.0,iterated_maximum_matching_adjusted,3,44.055176021901055,31.053604436229204,15.341959334565619,3.7138422930823665,3,2.6666666666666665,273,300,300,0.5867361000273377 +300,25,1.0,iterated_maximum_matching_adjusted,3,44.055176021901055,31.053604436229204,15.34195933456562,3.713842293082368,3,2.6666666666666665,273,300,300,0.5867361000273377 300,25,1.0,iterated_maximum_matching_adjusted,4,40.88236042266068,24.03361344537815,18.067978533094816,3.4884117962880645,3,2.6666666666666665,207,261,288,0.6080215999973007 -300,25,1.0,serial_dictatorship,0,35.2499660388387,0.0,100.0,59.53517211959788,6,2.6666666666666665,74,84,88,0.11057980003533885 -300,25,1.0,serial_dictatorship,1,40.87156006349036,0.0,100.0,52.78720253814328,6,2.6666666666666665,87,96,103,0.11075590003747493 -300,25,1.0,serial_dictatorship,2,36.114145592789576,0.0,100.0,58.85356704467506,6,2.6666666666666665,74,77,84,0.10872189997462556 -300,25,1.0,serial_dictatorship,3,35.36157825576378,0.0,100.0,58.57823235267901,6,2.6666666666666665,83,90,96,0.10706439998466522 -300,25,1.0,serial_dictatorship,4,31.525352495673978,0.0,100.0,64.12346448956208,6,2.6666666666666665,64,70,79,0.10948970000026748 -300,25,1.0,round_robin,0,42.07618035382081,25.1953125,27.377049180327873,8.486200825117534,3,2.6666666666666665,237,274,297,0.11517539998749271 -300,25,1.0,round_robin,1,48.09722049136764,32.35867446393762,19.688109161793378,5.862300630155437,3,2.6666666666666665,276,299,300,0.10994290001690388 -300,25,1.0,round_robin,2,43.02303925695176,23.168654173764907,26.744186046511626,7.552601580171304,3,2.6666666666666665,243,280,296,0.10912169999210164 -300,25,1.0,round_robin,3,41.73108191761379,25.636363636363633,25.39432176656151,7.305544960997491,3,2.6666666666666665,276,295,300,0.10861840000143275 -300,25,1.0,round_robin,4,38.173411859010166,19.290123456790123,28.45394736842105,8.789931662740132,3,2.6666666666666665,206,250,280,0.10897250002017245 -300,25,1.0,bidirectional_round_robin,0,41.460841780013055,28.515625,24.349442379182157,4.32574494014441,3,2.6666666666666665,237,274,297,0.10807120002573356 -300,25,1.0,bidirectional_round_robin,1,47.656758321069695,29.72972972972973,18.599999999999994,2.814159820490278,3,2.6666666666666665,276,299,300,0.11003590002655983 -300,25,1.0,bidirectional_round_robin,2,42.785737201514515,28.622540250447226,19.18604651162791,3.7572068875986293,3,2.6666666666666665,243,280,296,0.11433959996793419 -300,25,1.0,bidirectional_round_robin,3,41.50882060817325,32.065217391304344,15.299684542586753,3.3487311283086703,3,2.6666666666666665,276,295,300,0.1116150000016205 -300,25,1.0,bidirectional_round_robin,4,37.626936259247934,21.382636655948552,26.809210526315788,4.790153502905161,3,2.6666666666666665,206,250,280,0.11118599999463186 +300,25,1.0,serial_dictatorship,0,35.2499660388387,0.0,100.0,59.53517211959788,6,2.6666666666666665,74,84,88,0.1105798000353388 +300,25,1.0,serial_dictatorship,1,40.87156006349036,0.0,100.0,52.78720253814328,6,2.6666666666666665,87,96,103,0.1107559000374749 +300,25,1.0,serial_dictatorship,2,36.114145592789576,0.0,100.0,58.85356704467506,6,2.6666666666666665,74,77,84,0.1087218999746255 +300,25,1.0,serial_dictatorship,3,35.36157825576378,0.0,100.0,58.57823235267901,6,2.6666666666666665,83,90,96,0.1070643999846652 +300,25,1.0,serial_dictatorship,4,31.52535249567397,0.0,100.0,64.12346448956208,6,2.6666666666666665,64,70,79,0.1094897000002674 +300,25,1.0,round_robin,0,42.07618035382081,25.1953125,27.37704918032788,8.486200825117534,3,2.6666666666666665,237,274,297,0.1151753999874927 +300,25,1.0,round_robin,1,48.09722049136764,32.35867446393762,19.688109161793378,5.862300630155437,3,2.6666666666666665,276,299,300,0.1099429000169038 +300,25,1.0,round_robin,2,43.02303925695176,23.168654173764907,26.744186046511626,7.552601580171304,3,2.6666666666666665,243,280,296,0.1091216999921016 +300,25,1.0,round_robin,3,41.73108191761379,25.63636363636364,25.39432176656151,7.305544960997491,3,2.6666666666666665,276,295,300,0.1086184000014327 +300,25,1.0,round_robin,4,38.173411859010166,19.290123456790123,28.45394736842105,8.789931662740132,3,2.6666666666666665,206,250,280,0.1089725000201724 +300,25,1.0,bidirectional_round_robin,0,41.460841780013055,28.515625,24.34944237918216,4.32574494014441,3,2.6666666666666665,237,274,297,0.1080712000257335 +300,25,1.0,bidirectional_round_robin,1,47.656758321069695,29.72972972972973,18.599999999999994,2.814159820490278,3,2.6666666666666665,276,299,300,0.1100359000265598 +300,25,1.0,bidirectional_round_robin,2,42.78573720151452,28.622540250447223,19.18604651162791,3.757206887598629,3,2.6666666666666665,243,280,296,0.1143395999679341 +300,25,1.0,bidirectional_round_robin,3,41.50882060817325,32.065217391304344,15.299684542586752,3.3487311283086703,3,2.6666666666666665,276,295,300,0.1116150000016205 +300,25,1.0,bidirectional_round_robin,4,37.626936259247934,21.382636655948552,26.809210526315788,4.790153502905161,3,2.6666666666666665,206,250,280,0.1111859999946318 300,25,1.0,almost_egalitarian_without_donation,0,44.788198649659016,18.285714285714285,36.1904761904762,9.673000847992066,5,2.6666666666666665,197,263,286,12.551056500000414 -300,25,1.0,almost_egalitarian_without_donation,1,50.650322289760254,30.874785591766724,28.42323651452282,7.785650797600991,4,2.6666666666666665,246,279,293,12.803612300020177 +300,25,1.0,almost_egalitarian_without_donation,1,50.650322289760254,30.874785591766724,28.42323651452282,7.785650797600991,4,2.6666666666666665,246,279,293,12.803612300020175 300,25,1.0,almost_egalitarian_without_donation,2,46.17587428729762,23.7791932059448,33.26653306613226,8.657046573356329,4,2.6666666666666665,204,252,275,12.47163530002581 -300,25,1.0,almost_egalitarian_without_donation,3,44.32022033407726,23.44582593250444,35.590551181102356,10.200934244595564,4,2.6666666666666665,240,279,292,12.559019799984526 -300,25,1.0,almost_egalitarian_without_donation,4,41.18041671217831,19.405320813771517,35.48387096774193,11.125720050933912,5,2.6666666666666665,189,234,265,12.67401100002462 -300,25,1.0,almost_egalitarian_with_donation,0,44.77796358454791,18.285714285714285,36.1904761904762,9.768276921298096,5,2.6666666666666665,197,262,285,12.314125199976843 -300,25,1.0,almost_egalitarian_with_donation,1,50.676381639600855,30.874785591766724,32.62135922330097,7.777436805456535,4,2.6666666666666665,246,281,295,12.652685099979863 -300,25,1.0,almost_egalitarian_with_donation,2,46.166613814407434,23.7791932059448,32.50950570342205,8.510026787444989,4,2.6666666666666665,205,252,275,12.581093300017528 +300,25,1.0,almost_egalitarian_without_donation,3,44.32022033407726,23.44582593250444,35.59055118110236,10.200934244595564,4,2.6666666666666665,240,279,292,12.559019799984526 +300,25,1.0,almost_egalitarian_without_donation,4,41.18041671217831,19.40532081377152,35.48387096774193,11.125720050933912,5,2.6666666666666665,189,234,265,12.67401100002462 +300,25,1.0,almost_egalitarian_with_donation,0,44.77796358454791,18.285714285714285,36.1904761904762,9.768276921298096,5,2.6666666666666665,197,262,285,12.314125199976845 +300,25,1.0,almost_egalitarian_with_donation,1,50.676381639600855,30.874785591766724,32.62135922330097,7.777436805456535,4,2.6666666666666665,246,281,295,12.652685099979864 +300,25,1.0,almost_egalitarian_with_donation,2,46.16661381440744,23.7791932059448,32.50950570342205,8.510026787444989,4,2.6666666666666665,205,252,275,12.581093300017528 300,25,1.0,almost_egalitarian_with_donation,3,44.35348191168868,23.44582593250444,31.261101243339247,9.758043895240748,5,2.6666666666666665,239,280,293,12.5403370000422 -300,25,1.0,almost_egalitarian_with_donation,4,41.22538794195483,19.405320813771517,35.48387096774193,10.63373412474417,5,2.6666666666666665,190,233,265,12.317549500032328 +300,25,1.0,almost_egalitarian_with_donation,4,41.22538794195483,19.40532081377152,35.48387096774193,10.63373412474417,5,2.6666666666666665,190,233,265,12.317549500032328 +5,4,0.2,ACEEI_without_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0943563000764697 +5,4,0.2,ACEEI_without_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0059681999264284 +5,4,0.2,ACEEI_without_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0058818999677896 +5,4,0.2,ACEEI_without_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0077697999076917 +5,4,0.2,ACEEI_without_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.007660900009796 +5,4,0.2,ACEEI_with_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0956307000014931 +5,4,0.2,ACEEI_with_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0073877000249922 +5,4,0.2,ACEEI_with_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0056799999438226 +5,4,0.2,ACEEI_with_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0080189999425783 +5,4,0.2,ACEEI_with_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0058659000787884 +5,4,0.2,ACEEI_with_contested_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0065075999591499 +5,4,0.2,ACEEI_with_contested_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0097522999858483 +5,4,0.2,ACEEI_with_contested_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0132802999578416 +5,4,0.2,ACEEI_with_contested_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0076961999293416 +5,4,0.2,ACEEI_with_contested_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0100391999585554 +8,4,0.2,ACEEI_without_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0063441999955102 +8,4,0.2,ACEEI_without_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0071306000463664 +8,4,0.2,ACEEI_without_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0074227000586688 +8,4,0.2,ACEEI_without_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0080745000159367 +8,4,0.2,ACEEI_without_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0061645000241696 +8,4,0.2,ACEEI_with_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0089911998948082 +8,4,0.2,ACEEI_with_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0069997000973671 +8,4,0.2,ACEEI_with_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0103136000689119 +8,4,0.2,ACEEI_with_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0095372999785467 +8,4,0.2,ACEEI_with_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0081769999815151 +8,4,0.2,ACEEI_with_contested_EFTB,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0068463999778032 +8,4,0.2,ACEEI_with_contested_EFTB,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0099684000015258 +8,4,0.2,ACEEI_with_contested_EFTB,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0069895000196993 +8,4,0.2,ACEEI_with_contested_EFTB,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0077290999470278 +8,4,0.2,ACEEI_with_contested_EFTB,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0090208000037819 +5,4,0.2,iterated_maximum_matching_adjusted,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0051603999454528 +5,4,0.2,iterated_maximum_matching_adjusted,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0059326000045984 +5,4,0.2,iterated_maximum_matching_adjusted,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0053308999631553 +5,4,0.2,iterated_maximum_matching_adjusted,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0080835000844672 +5,4,0.2,iterated_maximum_matching_adjusted,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0046373999211937 +8,4,0.2,iterated_maximum_matching_adjusted,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0089201000519096 +8,4,0.2,iterated_maximum_matching_adjusted,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0063171000219881 +8,4,0.2,iterated_maximum_matching_adjusted,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0109016000060364 +8,4,0.2,iterated_maximum_matching_adjusted,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0065165000269189 +8,4,0.2,iterated_maximum_matching_adjusted,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0059906999813392 +5,4,0.2,run_tabu_search,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0018102999310940504 +5,4,0.2,run_tabu_search,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0016278000548481941 +5,4,0.2,run_tabu_search,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0018075000261887908 +5,4,0.2,run_tabu_search,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.001779200043529272 +5,4,0.2,run_tabu_search,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0024667999241501093 +5,4,0.2,bidirectional_round_robin,0,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.00043070001993328333 +5,4,0.2,bidirectional_round_robin,1,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0009566000662744045 +5,4,0.2,bidirectional_round_robin,2,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0004254000959917903 +5,4,0.2,bidirectional_round_robin,3,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.0004088999703526497 +5,4,0.2,bidirectional_round_robin,4,100.0,100.0,0.0,0.0,2,2.0,5,5,5,0.00040289992466568947 +8,4,0.2,run_tabu_search,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0022117000771686435 +8,4,0.2,run_tabu_search,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.002252400037832558 +8,4,0.2,run_tabu_search,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.002163599943742156 +8,4,0.2,run_tabu_search,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0023390999995172024 +8,4,0.2,run_tabu_search,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.003005199949257076 +8,4,0.2,bidirectional_round_robin,0,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0005970000056549907 +8,4,0.2,bidirectional_round_robin,1,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0010493999579921365 +8,4,0.2,bidirectional_round_robin,2,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0006288000149652362 +8,4,0.2,bidirectional_round_robin,3,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0006845999741926789 +8,4,0.2,bidirectional_round_robin,4,100.0,100.0,0.0,0.0,2,2.0,8,8,8,0.0009022000012919307 diff --git a/experiments/results/high_multi.csv b/experiments/results/high_multi.csv new file mode 100644 index 0000000..daebde0 --- /dev/null +++ b/experiments/results/high_multi.csv @@ -0,0 +1,389 @@ +num_of_agents,num_of_items,value_noise_ratio,algorithm,random_seed,utilitarian_value,egalitarian_value,runtime +2,2,0,high_multiplicity_fair_allocation,0,0.0,0,0.017058450999684283 +2,2,0,high_multiplicity_fair_allocation,1,310.0,300,0.019481381999867153 +2,2,0,solve,0,0.0,0,0.34984260500004893 +2,2,0,solve,1,310.0,300,0.023275556000044162 +2,2,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.01922423400083062 +2,2,0,improved_high_multiplicity_fair_allocation,1,310.0,300,0.04424939099953917 +2,2,0.2,high_multiplicity_fair_allocation,0,0.0,0,0.014488699000139604 +2,2,0.2,high_multiplicity_fair_allocation,1,320.0,308,0.03852828800063435 +2,2,0.2,solve,0,0.0,0,0.006022271999427176 +2,2,0.2,solve,1,320.0,308,0.020318018000580196 +2,2,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,0.02371750900056213 +2,2,0.2,improved_high_multiplicity_fair_allocation,1,320.0,308,0.04630425199957244 +2,2,0.5,high_multiplicity_fair_allocation,0,0.0,0,0.014638849000220944 +2,2,0.5,high_multiplicity_fair_allocation,1,328.0,308,0.07796307299940963 +2,2,0.5,solve,0,0.0,0,0.017528883999148093 +2,2,0.5,solve,1,328.0,308,0.027235583999754454 +2,2,0.5,improved_high_multiplicity_fair_allocation,0,0.0,0,0.018908461000137322 +2,2,0.5,improved_high_multiplicity_fair_allocation,1,328.0,308,0.10236181500022212 +2,2,0.8,high_multiplicity_fair_allocation,0,0.0,0,0.01569632399969123 +2,2,0.8,high_multiplicity_fair_allocation,1,334.0,279.0,0.032862503000615106 +2,2,0.8,solve,0,0.0,0,0.010214413000539935 +2,2,0.8,solve,1,334.0,279.0,0.017591248999451636 +2,2,0.8,improved_high_multiplicity_fair_allocation,0,0.0,0,0.018795844999658584 +2,2,0.8,improved_high_multiplicity_fair_allocation,1,334.0,279.0,0.03333436699995218 +2,2,1,high_multiplicity_fair_allocation,0,0.0,0,0.012633932999960962 +2,2,1,high_multiplicity_fair_allocation,1,346.5,297.0,0.036591574999874865 +2,2,1,solve,0,0.0,0,0.008398029999625578 +2,2,1,solve,1,346.5,297.0,0.012787140000000363 +2,2,1,improved_high_multiplicity_fair_allocation,0,0.0,0,0.019286542999907397 +2,2,1,improved_high_multiplicity_fair_allocation,1,346.5,297.0,0.03734536900083185 +2,3,0,high_multiplicity_fair_allocation,0,270.0,268,0.03653224199933902 +2,3,0,high_multiplicity_fair_allocation,1,0.0,0,0.015537246999883791 +2,3,0,solve,0,270.0,268,0.015231471999868518 +2,3,0,solve,1,0.0,0,0.0065399369996157475 +2,3,0,improved_high_multiplicity_fair_allocation,0,270.0,268,0.04224709299978713 +2,3,0,improved_high_multiplicity_fair_allocation,1,0.0,0,0.021797293000417994 +2,3,0.2,high_multiplicity_fair_allocation,0,270.5,267,0.03141224200044235 +2,3,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.01402014900031645 +2,3,0.2,solve,0,270.5,267,0.018135430999791424 +2,3,0.2,solve,1,0.0,0,0.007974854000167397 +2,3,0.2,improved_high_multiplicity_fair_allocation,0,270.5,267,0.04909183800009487 +2,3,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.018702813000345486 +2,3,0.5,high_multiplicity_fair_allocation,0,271.63366336633663,270.0,0.03921668699967995 +2,3,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.0160115680000672 +2,3,0.5,solve,0,271.63366336633663,270.0,0.013463307999700191 +2,3,0.5,solve,1,0.0,0,0.006846973999927286 +2,3,0.5,improved_high_multiplicity_fair_allocation,0,271.63366336633663,270.0,0.05696596000052523 +2,3,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.01785555399965233 +2,3,0.8,high_multiplicity_fair_allocation,0,274.13366336633663,273.26732673267327,0.03473562499948457 +2,3,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.017298743000537797 +2,3,0.8,solve,0,274.13366336633663,273.26732673267327,0.022561112999937905 +2,3,0.8,solve,1,0.0,0,0.01330024599974422 +2,3,0.8,improved_high_multiplicity_fair_allocation,0,274.13366336633663,273.26732673267327,0.05238115900010598 +2,3,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.023031031999380502 +2,3,1,high_multiplicity_fair_allocation,0,274.0,273.0,0.049675608000143257 +2,3,1,high_multiplicity_fair_allocation,1,0.0,0,0.02040589500029455 +2,3,1,solve,0,274.0,273.0,0.019051518999731343 +2,3,1,solve,1,0.0,0,0.0058746089998749085 +2,3,1,improved_high_multiplicity_fair_allocation,0,274.0,273.0,0.045457766000254196 +2,3,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.021057571000710595 +2,5,0,high_multiplicity_fair_allocation,0,227.99999999999997,225.99999999999997,1.0106222929998694 +2,5,0,high_multiplicity_fair_allocation,1,0.0,0,1.0649849619994711 +2,5,0,solve,0,228.99999999999997,225.99999999999997,0.027133277000757516 +2,5,0,solve,1,323.5,313,0.0467334140003004 +2,5,0,improved_high_multiplicity_fair_allocation,0,227.99999999999997,225.99999999999997,0.9857140610001807 +2,5,0,improved_high_multiplicity_fair_allocation,1,0.0,0,1.1267280410002058 +2,5,0.2,high_multiplicity_fair_allocation,0,229.35643564356434,228.7128712871287,0.44754475799982174 +2,5,0.2,high_multiplicity_fair_allocation,1,331.0,330,0.4946123150002677 +2,5,0.2,solve,0,230.3366336633663,227.99999999999997,0.034136039999793866 +2,5,0.2,solve,1,333.0,314,0.03376046399989718 +2,5,0.2,improved_high_multiplicity_fair_allocation,0,229.35643564356434,228.7128712871287,0.5519657269996969 +2,5,0.2,improved_high_multiplicity_fair_allocation,1,331.0,330,0.654758476999632 +2,5,0.5,high_multiplicity_fair_allocation,0,230.41584158415844,216.83168316831686,0.03037709599993832 +2,5,0.5,high_multiplicity_fair_allocation,1,335.0,322,0.030017308000424237 +2,5,0.5,solve,0,231.3019801980198,223.0,0.025383770000189543 +2,5,0.5,solve,1,340.0,324,0.01937884199924156 +2,5,0.5,improved_high_multiplicity_fair_allocation,0,230.41584158415844,216.83168316831686,0.035677114999998594 +2,5,0.5,improved_high_multiplicity_fair_allocation,1,335.0,322,0.04330612200010364 +2,5,0.8,high_multiplicity_fair_allocation,0,234.5151515151515,203.03030303030303,0.25120297400007985 +2,5,0.8,high_multiplicity_fair_allocation,1,343.8019801980198,339.6039603960396,0.06270742699962284 +2,5,0.8,solve,0,233.64646464646464,229.29292929292927,0.020878999999695225 +2,5,0.8,solve,1,348.6831683168317,334.0,0.024406381000517285 +2,5,0.8,improved_high_multiplicity_fair_allocation,0,234.5151515151515,203.03030303030303,0.3013549030001741 +2,5,0.8,improved_high_multiplicity_fair_allocation,1,343.8019801980198,339.6039603960396,0.03515231599976687 +2,5,1,high_multiplicity_fair_allocation,0,234.46039603960395,207.92079207920793,0.35502210200047557 +2,5,1,high_multiplicity_fair_allocation,1,351.5,345,1.8428883970000243 +2,5,1,solve,0,227.53465346534654,193.06930693069307,0.08635870900070586 +2,5,1,solve,1,351.5,339,0.017161310000119556 +2,5,1,improved_high_multiplicity_fair_allocation,0,234.46039603960395,207.92079207920793,0.3957320039999104 +2,5,1,improved_high_multiplicity_fair_allocation,1,351.5,345,1.6211557469996478 +2,6,0,high_multiplicity_fair_allocation,0,236.2970297029703,231.99999999999997,0.49296732199945836 +2,6,0,high_multiplicity_fair_allocation,1,367.5,365,0.6994216039993262 +2,6,0,solve,0,238.25247524752476,227.0,0.14322936400003528 +2,6,0,solve,1,366.5,341,0.22571527299987793 +2,6,0,improved_high_multiplicity_fair_allocation,0,236.2970297029703,231.99999999999997,0.4431950660000439 +2,6,0,improved_high_multiplicity_fair_allocation,1,367.5,365,0.6505534140005693 +2,6,0.2,high_multiplicity_fair_allocation,0,238.10784313725492,237.0,0.8066940409999006 +2,6,0.2,high_multiplicity_fair_allocation,1,375.9752475247525,347.0,0.10576122000020405 +2,6,0.2,solve,0,241.0,231.99999999999997,0.03631676100030745 +2,6,0.2,solve,1,378.21782178217825,356.43564356435644,0.1985060480001266 +2,6,0.2,improved_high_multiplicity_fair_allocation,0,238.10784313725492,237.0,0.7607192290006424 +2,6,0.2,improved_high_multiplicity_fair_allocation,1,375.9752475247525,347.0,0.12365280700032599 +2,6,0.5,high_multiplicity_fair_allocation,0,243.5,237.0,1.904966054000397 +2,6,0.5,high_multiplicity_fair_allocation,1,397.5,354,0.12560799099992437 +2,6,0.5,solve,0,245.0,237.0,0.26949167900056636 +2,6,0.5,solve,1,407.5,407,0.049332055000377295 +2,6,0.5,improved_high_multiplicity_fair_allocation,0,243.5,237.0,2.3395574890000717 +2,6,0.5,improved_high_multiplicity_fair_allocation,1,397.5,354,0.20571759400081646 +2,6,0.8,high_multiplicity_fair_allocation,0,247.75742574257427,247.00000000000003,1.4642225550005605 +2,6,0.8,high_multiplicity_fair_allocation,1,426.8676867686769,363.6363636363636,0.035792590000710334 +2,6,0.8,solve,0,249.1881188118812,236.0,0.04891300500003126 +2,6,0.8,solve,1,439.46894689468945,436.3636363636363,0.032696018000024196 +2,6,0.8,improved_high_multiplicity_fair_allocation,0,247.75742574257427,247.00000000000003,1.429561584000112 +2,6,0.8,improved_high_multiplicity_fair_allocation,1,426.8676867686769,363.6363636363636,0.03848355399986758 +2,6,1,high_multiplicity_fair_allocation,0,250.2474747474747,249.49494949494948,1.5850071250006295 +2,6,1,high_multiplicity_fair_allocation,1,440.0990099009901,365.34653465346537,0.03333913200003735 +2,6,1,solve,0,251.69191919191917,238.38383838383837,0.05442697199941904 +2,6,1,solve,1,455.94059405940595,442.5742574257426,0.01930069199988793 +2,6,1,improved_high_multiplicity_fair_allocation,0,250.2474747474747,249.49494949494948,1.8113224960006846 +2,6,1,improved_high_multiplicity_fair_allocation,1,440.0990099009901,365.34653465346537,0.04823022399978072 +3,2,0,high_multiplicity_fair_allocation,0,76.66666666666667,75,0.03592213299998548 +3,2,0,high_multiplicity_fair_allocation,1,202.66666666666666,200,0.029112977999830036 +3,2,0,solve,0,76.66666666666667,75,0.0113274730001649 +3,2,0,solve,1,202.66666666666666,200,0.03715630399983638 +3,2,0,improved_high_multiplicity_fair_allocation,0,76.66666666666667,75,0.050574414000038814 +3,2,0,improved_high_multiplicity_fair_allocation,1,202.66666666666666,200,0.04977720999977464 +3,2,0.2,high_multiplicity_fair_allocation,0,77.66666666666667,77,0.052408081000066886 +3,2,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.016567932999350887 +3,2,0.2,solve,0,77.66666666666667,77,0.013649454000187689 +3,2,0.2,solve,1,0.0,0,0.019018529999812017 +3,2,0.2,improved_high_multiplicity_fair_allocation,0,77.66666666666667,77,0.05476874899977702 +3,2,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.0270725330001369 +3,2,0.5,high_multiplicity_fair_allocation,0,78.33333333333333,78,0.043309934000717476 +3,2,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.02364851299989823 +3,2,0.5,solve,0,78.33333333333333,78,0.019613673000094423 +3,2,0.5,solve,1,0.0,0,0.017064405000382976 +3,2,0.5,improved_high_multiplicity_fair_allocation,0,78.33333333333333,78,0.055424172000130056 +3,2,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.028145718000814668 +3,2,0.8,high_multiplicity_fair_allocation,0,79.66666666666667,78,0.07063985399963713 +3,2,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.0316636550005569 +3,2,0.8,solve,0,79.66666666666667,78,0.013757015000010142 +3,2,0.8,solve,1,0.0,0,0.07209926599989558 +3,2,0.8,improved_high_multiplicity_fair_allocation,0,79.66666666666667,78,0.044244031999369327 +3,2,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.027223527999922226 +3,2,1,high_multiplicity_fair_allocation,0,80.33333333333333,79.0,0.042342691000158084 +3,2,1,high_multiplicity_fair_allocation,1,0.0,0,0.022542441000041435 +3,2,1,solve,0,80.33333333333333,79.0,0.013220542999988538 +3,2,1,solve,1,0.0,0,0.024010512000131712 +3,2,1,improved_high_multiplicity_fair_allocation,0,80.33333333333333,79.0,0.045274262999555503 +3,2,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.03314088199931575 +3,3,0,high_multiplicity_fair_allocation,0,0.0,0,0.0342777619998742 +3,3,0,high_multiplicity_fair_allocation,1,0.0,0,0.04564476300038223 +3,3,0,solve,0,0.0,0,0.070749204999629 +3,3,0,solve,1,0.0,0,0.062428973999885784 +3,3,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.034285961000023235 +3,3,0,improved_high_multiplicity_fair_allocation,1,0.0,0,0.03654251300031319 +3,3,0.2,high_multiplicity_fair_allocation,0,187.6734006734007,171.0,0.049545484999725886 +3,3,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.029926018999503867 +3,3,0.2,solve,0,187.6734006734007,171.0,0.2947751279998556 +3,3,0.2,solve,1,0.0,0,0.08602539200001047 +3,3,0.2,improved_high_multiplicity_fair_allocation,0,187.6734006734007,171.0,0.05499347799923271 +3,3,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.029748001000371005 +3,3,0.5,high_multiplicity_fair_allocation,0,193.4224422442244,173.26732673267327,0.2075249250001434 +3,3,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.03255170100055693 +3,3,0.5,solve,0,193.4224422442244,173.26732673267327,0.11114173200076038 +3,3,0.5,solve,1,0.0,0,0.012644254000406363 +3,3,0.5,improved_high_multiplicity_fair_allocation,0,193.4224422442244,173.26732673267327,0.18480515600003855 +3,3,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.03269738299968594 +3,3,0.8,high_multiplicity_fair_allocation,0,199.4224422442244,173.26732673267327,0.110113908999665 +3,3,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.020711056999971333 +3,3,0.8,solve,0,199.4224422442244,173.26732673267327,0.27125326300028973 +3,3,0.8,solve,1,0.0,0,0.07937147600023309 +3,3,0.8,improved_high_multiplicity_fair_allocation,0,199.4224422442244,173.26732673267327,0.16018267599974934 +3,3,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.05079374499928235 +3,3,1,high_multiplicity_fair_allocation,0,202.33333333333334,173.0,0.12787403099991934 +3,3,1,high_multiplicity_fair_allocation,1,0.0,0,0.026025233999462216 +3,3,1,solve,0,202.33333333333334,173.0,0.2988293039998098 +3,3,1,solve,1,0.0,0,0.18461176100026933 +3,3,1,improved_high_multiplicity_fair_allocation,0,202.33333333333334,173.0,0.17144138000003295 +3,3,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.03755250800077192 +3,5,0,high_multiplicity_fair_allocation,0,151.33333333333334,149,0.9835116000003836 +3,5,0,high_multiplicity_fair_allocation,1,0.0,0,127.35784202000013 +3,5,0,solve,0,152.66666666666666,143,0.0734709610005666 +3,5,0,solve,1,226.0,225.0,0.07902390099934564 +3,5,0,improved_high_multiplicity_fair_allocation,0,151.33333333333334,149,0.8739835209999001 +3,5,0,improved_high_multiplicity_fair_allocation,1,0.0,0,133.45898047900027 +3,5,0.2,high_multiplicity_fair_allocation,0,150.96016268293496,146.46464646464648,0.26303634500072803 +3,5,0.2,solve,0,150.94036070273694,142.0,0.14639895900018018 +3,5,0.2,solve,1,236.33333333333334,222.00000000000003,0.304475609000292 +3,5,0.2,improved_high_multiplicity_fair_allocation,0,150.96016268293496,146.46464646464648,0.3687830950002535 +3,5,0.5,high_multiplicity_fair_allocation,0,153.01320132013203,144.55445544554456,12.487514507999549 +3,5,0.5,solve,0,152.05610561056105,139.60396039603958,0.09659361699959845 +3,5,0.5,solve,1,250.0,227.99999999999997,0.30370357099945977 +3,5,0.5,improved_high_multiplicity_fair_allocation,0,153.01320132013203,144.55445544554456,13.615568979000273 +3,5,0.8,high_multiplicity_fair_allocation,0,153.16835016835014,130.0,0.1473882809996212 +3,5,0.8,solve,0,153.43771043771042,131.31313131313132,0.30268776200045977 +3,5,0.8,solve,1,266.8596349430862,235.0,0.05089955299990834 +3,5,0.8,improved_high_multiplicity_fair_allocation,0,153.16835016835014,130.0,0.29460491800000455 +3,5,1,high_multiplicity_fair_allocation,0,0.0,0,3.2714656709995324 +3,5,1,solve,0,151.53795379537954,138.6138613861386,0.12912488199981453 +3,5,1,solve,1,280.0,224.00000000000003,0.16576846999942063 +3,5,1,improved_high_multiplicity_fair_allocation,0,0.0,0,3.31800405300055 +3,6,0,high_multiplicity_fair_allocation,0,162.8778877887789,152.0,2.934707360000175 +3,6,0,solve,0,164.19801980198022,152.0,0.07618330500008597 +3,6,0,solve,1,249.50495049504948,248.5148514851485,0.30365535199962324 +3,6,0,improved_high_multiplicity_fair_allocation,0,162.8778877887789,152.0,3.704364892999365 +3,6,0.2,high_multiplicity_fair_allocation,0,0.0,0,427.7391163859993 +3,6,0.2,solve,0,165.94771241830065,157.84313725490196,0.46337118100018415 +3,6,0.2,solve,1,263.00990099009897,233.0,0.13987670799997431 +3,6,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,442.904370708 +3,6,0.5,solve,0,175.18367346938774,158.0,0.55029349599954 +3,6,0.5,solve,1,282.0,247.00000000000003,0.38700730799973826 +3,6,0.8,solve,0,177.6798679867987,163.0,0.12660416499966232 +3,6,0.8,solve,1,305.3159649298263,286.86868686868684,0.028366558000016084 +3,6,1,solve,0,185.04377104377105,156.0,0.2507471179997083 +3,6,1,solve,1,324.2112211221122,236.0,0.29485027700047794 +4,2,0,high_multiplicity_fair_allocation,0,0.0,0,0.04859142500026792 +4,2,0,high_multiplicity_fair_allocation,1,161.0,150,0.08097299700057192 +4,2,0,solve,0,0.0,0,0.01579317399955471 +4,2,0,solve,1,161.0,150,0.05583321700032684 +4,2,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.06363650700041035 +4,2,0,improved_high_multiplicity_fair_allocation,1,161.0,150,0.09488176699960604 +4,2,0.2,high_multiplicity_fair_allocation,0,0.0,0,0.044758180999451724 +4,2,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.04984057700039557 +4,2,0.2,solve,0,0.0,0,0.08458511700064264 +4,2,0.2,solve,1,0.0,0,0.027356873999451636 +4,2,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,0.061089584000001196 +4,2,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.06018566300008388 +4,2,0.5,high_multiplicity_fair_allocation,0,0.0,0,0.06742942599976232 +4,2,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.048174712999752956 +4,2,0.5,solve,0,0.0,0,0.029729881000093883 +4,2,0.5,solve,1,0.0,0,0.02829047500017623 +4,2,0.5,improved_high_multiplicity_fair_allocation,0,0.0,0,0.06113377700057754 +4,2,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.07164895599999 +4,2,0.8,high_multiplicity_fair_allocation,0,0.0,0,0.048751965000519704 +4,2,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.039067484000042896 +4,2,0.8,solve,0,0.0,0,0.11021282699948642 +4,2,0.8,solve,1,0.0,0,0.08099227099955897 +4,2,0.8,improved_high_multiplicity_fair_allocation,0,0.0,0,0.07284994899964659 +4,2,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.06673059200056741 +4,2,1,high_multiplicity_fair_allocation,0,0.0,0,0.046522837999873445 +4,2,1,high_multiplicity_fair_allocation,1,0.0,0,0.036206235000463494 +4,2,1,solve,0,0.0,0,0.04497670000000653 +4,2,1,solve,1,0.0,0,0.1056900379999206 +4,2,1,improved_high_multiplicity_fair_allocation,0,0.0,0,0.05612263399962103 +4,2,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.05821539200042025 +4,3,0,high_multiplicity_fair_allocation,0,0.0,0,0.058218355999997584 +4,3,0,high_multiplicity_fair_allocation,1,0.0,0,0.07287098599954334 +4,3,0,solve,0,0.0,0,0.029404497000541596 +4,3,0,solve,1,0.0,0,0.09202261799964617 +4,3,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.07824396300020453 +4,3,0,improved_high_multiplicity_fair_allocation,1,0.0,0,0.07467900300071051 +4,3,0.2,high_multiplicity_fair_allocation,0,0.0,0,0.04956105700057378 +4,3,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.06448873000044841 +4,3,0.2,solve,0,0.0,0,0.02333655100028409 +4,3,0.2,solve,1,0.0,0,0.07082364699999744 +4,3,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,0.06105549600033555 +4,3,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.05680371299968101 +4,3,0.5,high_multiplicity_fair_allocation,0,0.0,0,0.06461492699963856 +4,3,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.05974379300005239 +4,3,0.5,solve,0,0.0,0,0.02738749500076665 +4,3,0.5,solve,1,0.0,0,0.08783838099952845 +4,3,0.5,improved_high_multiplicity_fair_allocation,0,0.0,0,0.07012828700044338 +4,3,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.061557541999718524 +4,3,0.8,high_multiplicity_fair_allocation,0,0.0,0,0.057472071000120195 +4,3,0.8,high_multiplicity_fair_allocation,1,222.715796579658,204.0,0.0863423499995406 +4,3,0.8,solve,0,0.0,0,0.01984044099936 +4,3,0.8,solve,1,222.715796579658,204.0,0.03524012900015805 +4,3,0.8,improved_high_multiplicity_fair_allocation,0,0.0,0,0.06352453599993169 +4,3,0.8,improved_high_multiplicity_fair_allocation,1,222.715796579658,204.0,0.12530999400041765 +4,3,1,high_multiplicity_fair_allocation,0,0.0,0,0.05571661599969957 +4,3,1,high_multiplicity_fair_allocation,1,238.74009900990097,203.96039603960395,0.2562475639997501 +4,3,1,solve,0,0.0,0,0.027265866999186983 +4,3,1,solve,1,242.74257425742573,202.97029702970298,0.09693477299970255 +4,3,1,improved_high_multiplicity_fair_allocation,0,0.0,0,0.07587381599932996 +4,3,1,improved_high_multiplicity_fair_allocation,1,238.74009900990097,203.96039603960395,0.3804565899999943 +4,5,0,high_multiplicity_fair_allocation,0,119.5,113.99999999999999,1.626733897000122 +4,5,0,solve,0,121.0,117.0,0.6297840699999142 +4,5,0,solve,1,171.0,168,1.080766666999807 +4,5,0,improved_high_multiplicity_fair_allocation,0,119.5,113.99999999999999,2.1251075289992514 +4,5,0.2,high_multiplicity_fair_allocation,0,121.14411441144115,111.11111111111111,3.4925115380001444 +4,5,0.2,solve,0,124.4019901990199,118.0,0.5985648319992833 +4,5,0.2,solve,1,177.9570707070707,170.0,0.22977293300027668 +4,5,0.2,improved_high_multiplicity_fair_allocation,0,121.14411441144115,111.11111111111111,3.4072910209997644 +4,5,0.5,high_multiplicity_fair_allocation,0,128.97209720972097,120.79207920792079,74.25054139900021 +4,5,0.5,solve,0,136.1554905490549,112.87128712871286,0.06894589100011217 +4,5,0.5,solve,1,186.9090909090909,163.63636363636365,0.2846032400002514 +4,5,0.5,improved_high_multiplicity_fair_allocation,0,128.97209720972097,120.79207920792079,68.13478212599966 +4,5,0.8,solve,0,131.33838383838383,115.99999999999999,0.05064618799951859 +4,5,0.8,solve,1,196.5513234996969,181.0,0.08140842700049689 +4,5,1,solve,0,143.6262376237624,107.0,0.35010354399946664 +4,5,1,solve,1,209.25,185.0,0.11433814000065468 +4,6,0,high_multiplicity_fair_allocation,0,0.0,0,1277.2548368589996 +4,6,0,solve,0,129.11881188118812,125.74257425742574,0.1214287279999553 +4,6,0,solve,1,195.5570807080708,180.1980198019802,0.03319675900002039 +4,6,0,improved_high_multiplicity_fair_allocation,0,0.0,0,1261.424994381 +4,6,0.2,solve,0,136.7389827218016,127.45098039215685,0.2865995590000239 +4,6,0.2,solve,1,209.63118811881188,167.0,0.016117908999149222 +4,6,0.5,solve,0,145.02123273551845,120.40816326530613,0.323216450999098 +4,6,0.5,solve,1,235.5,175,0.01873186200100463 +4,6,0.8,solve,0,154.3638613861386,115.99999999999999,0.08530184499977622 +4,6,0.8,solve,1,264.33963396339635,220.00000000000003,0.024820804999762913 +4,6,1,solve,0,161.16161616161617,120.0,0.3129149950000283 +4,6,1,solve,1,289.0693069306931,224.00000000000003,0.028720405000058236 +5,2,0,high_multiplicity_fair_allocation,0,0.0,0,0.029051985999103636 +5,2,0,high_multiplicity_fair_allocation,1,0.0,0,0.03379683599996497 +5,2,0,solve,0,0.0,0,0.008689542999491096 +5,2,0,solve,1,0.0,0,0.01472094900054799 +5,2,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.03660622600000352 +5,2,0,improved_high_multiplicity_fair_allocation,1,0.0,0,0.042234570000800886 +5,2,0.2,high_multiplicity_fair_allocation,0,0.0,0,0.030077446001087083 +5,2,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.031564740000249 +5,2,0.2,solve,0,0.0,0,0.008338272000401048 +5,2,0.2,solve,1,0.0,0,0.011312147000353434 +5,2,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,0.03227860700098972 +5,2,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.043202888999076094 +5,2,0.5,high_multiplicity_fair_allocation,0,0.0,0,0.030610871999670053 +5,2,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.03122198800156184 +5,2,0.5,solve,0,0.0,0,0.008494581999912043 +5,2,0.5,solve,1,0.0,0,0.00979368000116665 +5,2,0.5,improved_high_multiplicity_fair_allocation,0,0.0,0,0.03368657999999414 +5,2,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.05103060399960668 +5,2,0.8,high_multiplicity_fair_allocation,0,0.0,0,0.03267680799945083 +5,2,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.035429065001153504 +5,2,0.8,solve,0,0.0,0,0.01572355099960987 +5,2,0.8,solve,1,0.0,0,0.010372504000770277 +5,2,0.8,improved_high_multiplicity_fair_allocation,0,0.0,0,0.038329291999616544 +5,2,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.04465986899958807 +5,2,1,high_multiplicity_fair_allocation,0,0.0,0,0.03321938499902899 +5,2,1,high_multiplicity_fair_allocation,1,0.0,0,0.1256970230006118 +5,2,1,solve,0,0.0,0,0.023160112999903504 +5,2,1,solve,1,0.0,0,0.022902856000655447 +5,2,1,improved_high_multiplicity_fair_allocation,0,0.0,0,0.03360748299928673 +5,2,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.13901876900126808 +5,3,0,high_multiplicity_fair_allocation,0,0.0,0,0.14805202600109624 +5,3,0,high_multiplicity_fair_allocation,1,0.0,0,0.03593319900028291 +5,3,0,solve,0,0.0,0,0.022506904000692884 +5,3,0,solve,1,0.0,0,0.01342572400062636 +5,3,0,improved_high_multiplicity_fair_allocation,0,0.0,0,0.1676683879995835 +5,3,0,improved_high_multiplicity_fair_allocation,1,0.0,0,0.03899030499997025 +5,3,0.2,high_multiplicity_fair_allocation,0,0.0,0,0.11729510000077426 +5,3,0.2,high_multiplicity_fair_allocation,1,0.0,0,0.049511424000229454 +5,3,0.2,solve,0,0.0,0,0.019299533998491825 +5,3,0.2,solve,1,0.0,0,0.012692397000137134 +5,3,0.2,improved_high_multiplicity_fair_allocation,0,0.0,0,0.12390351500107499 +5,3,0.2,improved_high_multiplicity_fair_allocation,1,0.0,0,0.04902640199907182 +5,3,0.5,high_multiplicity_fair_allocation,0,120.37295729572959,108.0,0.057683155999256996 +5,3,0.5,high_multiplicity_fair_allocation,1,0.0,0,0.041157253999699606 +5,3,0.5,solve,0,120.37295729572959,108.0,0.02274538099845813 +5,3,0.5,solve,1,0.0,0,0.013235140999313444 +5,3,0.5,improved_high_multiplicity_fair_allocation,0,120.37295729572959,108.0,0.07691587100089237 +5,3,0.5,improved_high_multiplicity_fair_allocation,1,0.0,0,0.04335033499955898 +5,3,0.8,high_multiplicity_fair_allocation,0,124.33267326732673,110.00000000000001,0.05895695199978945 +5,3,0.8,high_multiplicity_fair_allocation,1,0.0,0,0.04310879799959366 +5,3,0.8,solve,0,124.33267326732673,110.00000000000001,0.0921804190002149 +5,3,0.8,solve,1,0.0,0,0.012737909000861691 +5,3,0.8,improved_high_multiplicity_fair_allocation,0,124.33267326732673,110.00000000000001,0.062276308999571484 +5,3,0.8,improved_high_multiplicity_fair_allocation,1,0.0,0,0.044926745000339 +5,3,1,high_multiplicity_fair_allocation,0,126.84646464646464,110.00000000000001,0.05976776900024561 +5,3,1,high_multiplicity_fair_allocation,1,0.0,0,0.14522727500116162 +5,3,1,solve,0,126.84646464646464,110.00000000000001,0.02674438999929407 +5,3,1,solve,1,0.0,0,0.05056405200048175 +5,3,1,improved_high_multiplicity_fair_allocation,0,126.84646464646464,110.00000000000001,0.06118510800115473 +5,3,1,improved_high_multiplicity_fair_allocation,1,0.0,0,0.15304704700065486 +5,5,0,high_multiplicity_fair_allocation,0,95.4,93,1.3119634240010782 +5,5,0,solve,0,94.6,89,0.36295359900032054 +5,5,0,solve,1,142.0969696969697,131.0,0.2938807730006374 +5,5,0,improved_high_multiplicity_fair_allocation,0,95.4,93,1.2886524900004588 +5,5,0.2,high_multiplicity_fair_allocation,0,95.76787678767877,88.88888888888889,3.268292467999345 +5,5,0.2,solve,0,100.13235323532354,90.0,0.042624755998986075 +5,5,0.2,solve,1,147.42424242424244,133.0,0.11676631400041515 +5,5,0.2,improved_high_multiplicity_fair_allocation,0,95.76787678767877,88.88888888888889,3.5410093079990475 +5,5,0.5,solve,0,103.12639263926394,89.10891089108911,0.10155536999991455 +5,5,0.5,solve,1,160.4686868686869,134.34343434343435,0.14291539499936334 +5,5,0.8,solve,0,107.1878787878788,93.0,0.05553337600031227 +5,5,0.8,solve,1,174.40646595271772,149.0,0.1763064469996607 +5,5,1,solve,0,117.009900990099,83.0,0.03403020900077536 +5,5,1,solve,1,183.04848484848486,158.0,0.3422576659995684 +5,6,0,solve,0,103.9882388238824,92.0,0.26925646599920583 +5,6,0,solve,1,157.1880588058806,144.0,0.017136925000158953 +5,6,0.2,solve,0,108.57988740050473,92.15686274509804,0.19870155599892314 +5,6,0.2,solve,1,166.70719071907192,152.0,0.047446259999560425 +5,6,0.5,solve,0,116.69338280766851,108.0,0.4154881300000852 +5,6,0.5,solve,1,186.8,162.0,0.019407064999541035 +5,6,0.8,solve,0,121.73069306930692,101.0,0.5742401580009755 +5,6,0.8,solve,1,207.99563956395642,168.0,0.03547502100082056 +5,6,1,solve,0,128.20404040404043,102.020202020202,0.3034498540000641 +5,6,1,solve,1,214.47392739273928,166.66666666666669,0.03771804600000905 diff --git a/experiments/results/high_multiplicity_uniforn_plot.png b/experiments/results/high_multiplicity_uniforn_plot.png new file mode 100644 index 0000000..01309dd Binary files /dev/null and b/experiments/results/high_multiplicity_uniforn_plot.png differ diff --git a/experiments/results/naor_and_elor_plot.png b/experiments/results/naor_and_elor_plot.png new file mode 100644 index 0000000..85811f1 Binary files /dev/null and b/experiments/results/naor_and_elor_plot.png differ diff --git a/fairpyx/algorithms/high_multiplicity_fair_allocation.py b/fairpyx/algorithms/high_multiplicity_fair_allocation.py new file mode 100644 index 0000000..3883dff --- /dev/null +++ b/fairpyx/algorithms/high_multiplicity_fair_allocation.py @@ -0,0 +1,453 @@ +""" +Article Title: High-Multiplicity Fair Allocation Made More Practical +Article URL: https://www.ifaamas.org/Proceedings/aamas2021/pdfs/p260.pdf + +Algorithm Name: High Multiplicity Fair Allocation +Algorithm Description: This algorithm finds an allocation maximizing the sum of utilities + for given instance with envy-freeness and Pareto-optimality constraints if exists. + +Programmers: Naor Ladani and Elor Israeli +Since : 2024-05 +""" +import cvxpy as cp +import numpy as np +from fairpyx import Instance, AllocationBuilder, divide +import logging + +logger = logging.getLogger(__name__) + + +def high_multiplicity_fair_allocation(alloc: AllocationBuilder): + """ + Finds an allocation maximizing the sum of utilities for given instance with envy-freeness and Pareto-optimality constraints. + + Parameters: + - alloc (AllocationBuilder): The allocation of items to agents. + + Returns: + - alloc (AllocationBuilder): The allocation of items to agents. + + + >>> agent_capacities = {"Ami": 2, "Tami": 2, "Rami": 2} + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(agent_capacities=agent_capacities, item_capacities=item_capacities, valuations=valuations) + >>> divide(high_multiplicity_fair_allocation, instance=instance) + {'Ami': ['Fork', 'Fork'], 'Rami': ['Pen', 'Pen'], 'Tami': ['Knife', 'Knife']} + + >>> agent_capacities = {"Ami": 9, "Tami": 9} + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = {"Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}} + >>> instance = Instance(agent_capacities=agent_capacities, item_capacities=item_capacities, valuations=valuations) + >>> divide(high_multiplicity_fair_allocation, instance=instance) + {'Ami': ['Fork', 'Fork', 'Fork'], 'Tami': ['Knife', 'Knife', 'Knife', 'Pen', 'Pen', 'Pen']} + """ + + ## Step 1: Find a envy-free allocation + ## Step 2: Check if there is a Pareto-dominate allocation + ## Step 3: If not, modify the ILP to disallow the current allocation + ## Step 4: Repeat steps 1-3 until a Pareto-optimal allocation is found or no allocation exists + + logger.info("Starting high multiplicity fair allocation.") + alloc.set_allow_multiple_copies(True) + agents, items, constraints_ilp = [], [], [] + for i in alloc.remaining_items(): + items.append(i) + for agent in alloc.remaining_agents(): + agents.append(agent) + + allocation_variables = cp.Variable((len(alloc.remaining_agents()), len(alloc.remaining_items())), integer=True) + + iteration_count = 0 # Initialize the iteration counter + alloc_X = find_envy_free_allocation(alloc, allocation_variables, constraints_ilp) + + while alloc_X is not None: + iteration_count += 1 # Increment counter on each iteration + logging.info(f"Attempting envy-free allocation, iteration {iteration_count}") + logger.info(f"Attempting envy-free allocation, iteration {iteration_count}") + + logger.debug(f'The envy matrix of the allocation {calculate_envy_matrix(alloc, alloc_X)} ') + alloc_Y = find_pareto_dominating_allocation(alloc, alloc_X) + if alloc_Y is None: + logger.info("No Pareto dominating allocation found, finalizing allocation:\n%s", alloc_X) + + i = 0 + for agent in alloc_X: + for item in range(0, len(items)): + if agent[item] > 0: + for item_num in range(0, agent[item]): + # logger.info(f"remaining items {alloc.remaining_item_capacities}") + # logger.info(f"{agents[i]} get: {items[item]}") + + alloc.give(agents[i], items[item], logger) + agent[item] -= 1 + + i += 1 + + logger.info(f"allocation found after {iteration_count} iterations") + return + else: + logger.debug( + f'The envy matrix of the Pareto dominating allocation {calculate_envy_matrix(alloc, alloc_Y)} ') + logger.debug(f'The values of the first allocation {calculate_values(alloc, alloc_X)} ') + logger.debug(f'The values of the Pareto dominating allocation {calculate_values(alloc, alloc_Y)}') + + constraints_ilp.extend(create_more_constraints_ILP(alloc, alloc_X, alloc_Y, allocation_variables)) + alloc_X = find_envy_free_allocation(alloc, allocation_variables, constraints_ilp) + + logger.info(f"No envy-free allocation found after {iteration_count} iterations, ending process.") + return None + + +def find_envy_free_allocation(alloc: AllocationBuilder, allocation_variables, constraints_ilp): + """ + Find an envy-free allocation of items to agents. + + Parameters: + - constraints (list): List of constraints for the ILP. + - instance (Instance): The instance of the problem. + + Returns: + - allocation_matrix : The allocation of items to agents as a matrix. + maxtrix[i][j] = x -> times agent i gets item j. + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> allocation_vars = cp.Variable((len(alloc.remaining_agents()), len(alloc.remaining_items())), integer=True) + >>> alloc_X = find_envy_free_allocation(alloc, allocation_vars, []) + >>> print(alloc_X) + [[2 0 0] + [0 0 2] + [0 2 0]] + """ + + logger.debug("Searching for envy-free allocation.") + + num_agents, num_items, items_capacities, \ + agent_capacities, agent_valuations = get_agents_items_and_capacities(alloc) + + # Define the objective function (maximize total value) + objective = cp.Maximize(0) + + item_capacity_constraints = [cp.sum(allocation_variables[:, j]) == items_capacities[j] for j in range(num_items)] + + agent_capacity_constraints = [] + # Ensure no agent receives more items than their capacity + for i in range(num_agents): + for j in range(num_items): + agent_capacity_constraints.append(allocation_variables[i, j] >= 0) + + agent_capacity_constraints += [cp.sum(allocation_variables[i, :]) <= agent_capacities[i] for i in + range(num_agents)] + # Define envy-free constraints + envy_free_constraints = [] + for i in range(num_agents): + i_profit = cp.sum(cp.multiply(agent_valuations[i, :], allocation_variables[i, :])) + for j in range(num_agents): + if i != j: + j_profit = cp.sum(cp.multiply(agent_valuations[i, :], allocation_variables[j, :])) + envy_free_constraints.append(j_profit <= i_profit) + + # Define the problem + prob = cp.Problem(objective, item_capacity_constraints + agent_capacity_constraints + + envy_free_constraints + constraints_ilp) + # logger.debug(f'Problem constraints:') + # for constraint in prob.constraints: + # logger.debug(f'{constraint} ') + # Solve the problem + try: + prob.solve() + if allocation_variables.value is None: + return None + allocation = np.round(allocation_variables.value).astype(int) + logger.debug(f"Allocation results:\n{allocation}") + return allocation + except Exception as e: + logger.error(f"An error occurred during optimization: {e}") + return None + + +def find_pareto_dominating_allocation(alloc: AllocationBuilder, alloc_matrix): + """ + Find a Pareto-dominates allocation of items to agents. + + Returns: + - allocation_matrix (np.ndarray): The allocation of items to agents as a matrix. + maxtrix[i][j] = x -> times agent i gets item j. + + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[2 0 0] + [0 1 2] + [0 1 0]] + + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = {"Ami": {"Fork": 3, "Knife": 5, "Pen": 8}, "Rami": {"Fork": 5, "Knife": 7, "Pen": 5},"Tami": {"Fork": 4, "Knife": 1, "Pen": 11}} + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[3, 0, 0], [0, 0, 3], [0, 3, 0]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[2 0 1] + [0 1 2] + [1 2 0]] + + + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Yumi": {"Fork": 4, "Knife": 5, "Pen": 6} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1], [1, 1, 1]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[1 0 0] + [0 3 0] + [1 0 1] + [1 0 2]] + + """ + + logger.debug("Searching for a Pareto-dominating allocation") + + num_agents, num_items, item_capacities, \ + agent_capacities, agent_valuations = get_agents_items_and_capacities(alloc) + + # logger.debug(f"Item names and capacities: {alloc.remaining_item_capacities}") + # logger.debug(f"Agents names and capacities: {alloc.remaining_agent_capacities}") + # logger.debug(f"Agent valuations: {agent_valuations}") + + # Define decision variables + allocation_var = cp.Variable((num_agents, num_items), integer=True) + + # Define capacity constraints + item_capacity_constraints = [cp.sum(allocation_var[:, j]) == item_capacities[j] for j in range(num_items)] + agent_capacity_constraints = [allocation_var[i, j] >= 0 for i in range(num_agents) for j in range(num_items)] + agent_capacity_constraints += [cp.sum(allocation_var[i, :]) <= agent_capacities[i] for i in range(num_agents)] + # Define Pareto dominance constraints + current_value_per_agent = [cp.sum(cp.multiply(agent_valuations[i, :], alloc_matrix[i, :])) for i in + range(num_agents)] + new_value_per_agent = [cp.sum(cp.multiply(agent_valuations[i, :], allocation_var[i, :])) for i in + range(num_agents)] + pareto_dominating_constraints = [new_value_per_agent[i] >= current_value_per_agent[i] for i in range(num_agents)] + + # Ensure sum_val_y > sum_val_x + pareto_dominating_constraints.append(cp.sum(new_value_per_agent) >= 1 + cp.sum(current_value_per_agent)) + + # Create the optimization problem + problem = cp.Problem(cp.Maximize(0), + pareto_dominating_constraints + item_capacity_constraints + agent_capacity_constraints) + + # Solve the problem + try: + problem.solve() + if allocation_var.value is None: + return None + allocations = np.round(allocation_var.value).astype(int) + logger.debug(f"Pareto dominating allocation found:\n{allocations}") + return allocations + except Exception as e: + logger.error("Failed to find Pareto dominating allocation: ", exc_info=True) + return None + + +def create_more_constraints_ILP(alloc: AllocationBuilder, alloc_X: np.ndarray, alloc_Y: np.ndarray, + allocation_variables: cp.Variable): + """ + Creates additional ILP constraints based on current and previous allocations to ensure + the new allocation differs from the previous one and satisfies specific conditions. + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The previous allocation matrix. + - alloc_Y (np.ndarray): The current allocation matrix. + - allocation_variables (cp.Variable): The ILP variable representing the allocation. + + Returns: + - list: A list of additional constraints. + """ + logger.debug("Creating more ILP constraints based on current and previous allocations.") + + # Define variables + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) # True to return only this tuple + num_agents = len(agents) + num_items = len(items) + + # Create binary variables for each agent-item combination + Z = cp.Variable((num_agents, num_items), boolean=True) + Z_bar = cp.Variable((num_agents, num_items), boolean=True) + + # Add constraints for each agent-item combination + constraints = [] + + delta = alloc_Y - alloc_X + logger.debug(f'Delta:\n%s', delta) + for i in range(num_agents): + for j in range(num_items): + # Constraint 7 - inequality (7) in the paper. + constraint7 = allocation_variables[i][j] + delta[i][j] <= -1 + (2 * items_capacities[j] + 1) * (1 - Z[i][j]) + constraints.append(constraint7) + + # Constraint 8 - inequality (8) in the paper. + constraint8 = allocation_variables[i][j] + delta[i][j] >= -items_capacities[j] + Z_bar[i][j] * ( + 2 * items_capacities[j] + 1) + constraints.append(constraint8) + # Add constraint for each agent that at least one item must change: inequality (9) in the paper. + + constraint9 = (cp.sum([Z[i][j] for i in range(num_agents) for j in range(num_items)]) + + cp.sum([Z_bar[i][j] for i in range(num_agents) for j in range(num_items)])) >= 1 + constraints.append(constraint9) + + return constraints + + +def calculate_values(alloc: AllocationBuilder, alloc_X: np.ndarray): + """ + Calculates a final value for each agent + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The allocation matrix. + + + Returns: + - Dict : A dict of final values per agent. + """ + logger.info("Calculates values") + + # Define variables + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) # True to return only this tuple + agent_valuations = [[alloc.effective_value(agent, item) for item in items] for agent in agents] + + values = {agent: 0 for agent in agents} + for i in range(len(agents)): + for j in range(len(items)): + values[agents[i]] += alloc_X[i][j] * agent_valuations[i][j] + return values + + +def calculate_envy_matrix(alloc: AllocationBuilder, alloc_X: np.ndarray): + """ + Calculates the envy matrix + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The allocation matrix. + + + Returns: + - Dict : A dict of envy matrix. + """ + logger.info("Calculates nvy matrix") + + # Define variables + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) # True to return only this tuple + agent_valuations = [[alloc.effective_value(agent, item) for item in items] for agent in agents] + + baskets_values = {agent: [] for agent in agents} + + for agent_index in range(len(agents)): + for i in range(len(agents)): + baskets_values[agents[agent_index]].append(0) + for j in range(len(items)): + baskets_values[agents[agent_index]][i] += alloc_X[i][j] * agent_valuations[agent_index][j] + + return baskets_values + + +def get_agents_items_and_capacities(alloc: AllocationBuilder, bool=False): + """ + Helper function to get the remaining agents, items, and their capacities. + + Parameters: + alloc: The AllocationBuilder object with methods to get remaining agents and items. + + Returns: + tuple: A tuple containing the list of agents, the list of items, and the list of item capacities. + """ + # Define variables + agents_names = [agent for agent in alloc.remaining_agents()] + items_names = [item for item in alloc.remaining_items()] + item_capacities = [alloc.remaining_item_capacities[item] for item in alloc.remaining_items()] + if bool: + # Return only the tuple of agents, items, and item capacities + return agents_names, items_names, item_capacities + + # else + agent_capacities = [alloc.remaining_agent_capacities[agent] for agent in agents_names] + agent_valuations = [[alloc.effective_value(agent, item) for item in items_names] for agent in agents_names] + agent_valuations = np.array(agent_valuations) + + # Return all variables + return len(agents_names), len(items_names), item_capacities, agent_capacities, agent_valuations + + +#### MAIN #### + +def instance_4_3(): + item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + valuations = { + "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, + "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, + "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}, + "Yumi": {"Fork": 4, "Knife": 5, "Pen": 6}} + return Instance(item_capacities=item_capacities, valuations=valuations) + + +def instance_4_6(): + item_capacities = {'c1': 5, 'c2': 6, 'c3': 2, 'c4': 3, 'c5': 5, 'c6': 2} + valuations = { + 's1': {'c1': 152, 'c2': 86, 'c3': 262, 'c4': 68, 'c5': 263, 'c6': 169}, + 's2': {'c1': 124, 'c2': 70, 'c3': 98, 'c4': 244, 'c5': 329, 'c6': 135}, + 's3': {'c1': 170, 'c2': 235, 'c3': 295, 'c4': 91, 'c5': 91, 'c6': 118}, + 's4': {'c1': 158, 'c2': 56, 'c3': 134, 'c4': 255, 'c5': 192, 'c6': 205}} + return Instance(item_capacities=item_capacities, valuations=valuations) + + +def instance2_4_6(): + item_capacities = {'c1': 2, 'c2': 2, 'c3': 2, 'c4': 2, 'c5': 2, 'c6': 2} + valuations = { + 's1': {'c1': 100, 'c2': 60, 'c3': 60, 'c4': 60, 'c5': 70, 'c6': 60}, + 's2': {'c1': 60, 'c2': 100, 'c3': 60, 'c4': 60, 'c5': 70, 'c6': 60}, + 's3': {'c1': 60, 'c2': 60, 'c3': 100, 'c4': 60, 'c5': 60, 'c6': 70}, + 's4': {'c1': 60, 'c2': 60, 'c3': 60, 'c4': 100, 'c5': 60, 'c6': 70}} + return Instance(item_capacities=item_capacities, valuations=valuations) + + +if __name__ == "__main__": + import doctest + + # logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + + print("\n", doctest.testmod(), "\n") + + logger.setLevel(logging.DEBUG) + + # instance = Instance.random_uniform( + # num_of_agents=4, num_of_items=6, + # agent_capacity_bounds=(6,6), item_capacity_bounds=(2,6), + # item_base_value_bounds=(50,150), + # item_subjective_ratio_bounds=(0.5,1.5), + # normalized_sum_of_values=1000, + # random_seed=1) + # print(instance) + divide(high_multiplicity_fair_allocation, instance_4_3()) + + # alloc = AllocationBuilder(instance) + # alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1], [1, 1, 1]]) + # pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + # print(pareto_optimal_allocation) + + # agent_capacities = {"Ami": 6, "Tami": 6} + # item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + # valuations = {"Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}} + # instance = Instance(agent_capacities=agent_capacities, item_capacities=item_capacities, valuations=valuations) + # alloc = AllocationBuilder(instance) + # alloc_X = np.array([[3, 2, 1], [0, 1, 2]]) + # pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + # print(pareto_optimal_allocation) diff --git a/fairpyx/algorithms/improved_high_multiplicity.py b/fairpyx/algorithms/improved_high_multiplicity.py new file mode 100644 index 0000000..5303de2 --- /dev/null +++ b/fairpyx/algorithms/improved_high_multiplicity.py @@ -0,0 +1,453 @@ +""" +Article Title: High-Multiplicity Fair Allocation Made More Practical +Article URL: https://www.ifaamas.org/Proceedings/aamas2021/pdfs/p260.pdf + +Algorithm Name: High Multiplicity Fair Allocation +Algorithm Description: This algorithm finds an allocation maximizing the sum of utilities + for given instance with envy-freeness and Pareto-optimality constraints if exists. + +Programmers: Naor Ladani and Elor Israeli +Since : 2024-05 +""" +import cvxpy as cp +import numpy as np +from fairpyx import Instance, AllocationBuilder, divide +import logging +from concurrent.futures import ThreadPoolExecutor + +logger = logging.getLogger(__name__) + + +def improved_high_multiplicity_fair_allocation(alloc: AllocationBuilder): + """ + Finds an allocation maximizing the sum of utilities for given instance with envy-freeness and Pareto-optimality constraints. + + Parameters: + - alloc (AllocationBuilder): The allocation of items to agents. + + Returns: + - alloc (AllocationBuilder): The allocation of items to agents. + + + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> divide(improved_high_multiplicity_fair_allocation, instance=instance) + {'Ami': ['Fork', 'Fork'], 'Rami': ['Pen', 'Pen'], 'Tami': ['Knife', 'Knife']} + + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = {"Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}} + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> divide(improved_high_multiplicity_fair_allocation, instance=instance) + {'Ami': [], 'Tami': []} + """ + + ## Step 1: Find a envy-free allocation + ## Step 2: Check if there is a Pareto-dominate allocation + ## Step 3: If not, modify the ILP to disallow the current allocation + ## Step 4: Repeat steps 1-3 until a Pareto-optimal allocation is found or no allocation exists + + logger.info("Starting high multiplicity fair allocation.") + alloc.set_allow_multiple_copies(True) + agents, items, constraints_ilp = [], [], [] + for i in alloc.remaining_items(): + items.append(i) + for agent in alloc.remaining_agents(): + agents.append(agent) + + + allocation_variables = cp.Variable((len(alloc.remaining_agents()), len(alloc.remaining_items())), integer=True) + + iteration_count = 0 # Initialize the iteration counter + alloc_X = find_envy_free_allocation(alloc, allocation_variables, constraints_ilp) + + while alloc_X is not None: + iteration_count += 1 # Increment counter on each iteration + logging.info(f"Attempting envy-free allocation, iteration {iteration_count}") + logger.info(f"Attempting envy-free allocation, iteration {iteration_count}") + + logger.debug(f'The envy matrix of the allocation {calculate_envy_matrix(alloc, alloc_X)} ') + alloc_Y = find_pareto_dominating_allocation(alloc, alloc_X) + if alloc_Y is None: + logger.info("No Pareto dominating allocation found, finalizing allocation:\n%s",alloc_X) + + i = 0 + for agent in alloc_X: + for item in range(0, len(items)): + if agent[item] > 0: + for item_num in range(0, agent[item]): + # logger.info(f"remaining items {alloc.remaining_item_capacities}") + # logger.info(f"{agents[i]} get: {items[item]}") + + alloc.give(agents[i], items[item], logger) + agent[item] -= 1 + + i += 1 + + logger.info(f"allocation found after {iteration_count} iterations") + return + else: + logger.debug(f'The envy matrix of the Pareto dominating allocation {calculate_envy_matrix(alloc, alloc_Y)} ') + logger.debug(f'The values of the first allocation {calculate_values(alloc, alloc_X)} ') + logger.debug(f'The values of the Pareto dominating allocation {calculate_values(alloc, alloc_Y)}') + + constraints_ilp.extend(create_more_constraints_ILP(alloc, alloc_X, alloc_Y, allocation_variables)) + alloc_X = find_envy_free_allocation(alloc, allocation_variables, constraints_ilp) + + logger.info(f"No envy-free allocation found after {iteration_count} iterations, ending process.") + return None + + +def find_envy_free_allocation(alloc: AllocationBuilder, allocation_variables, constraints_ilp): + """ + Find an envy-free allocation of items to agents. + + Parameters: + - constraints (list): List of constraints for the ILP. + - instance (Instance): The instance of the problem. + + Returns: + - allocation_matrix : The allocation of items to agents as a matrix. + maxtrix[i][j] = x -> times agent i gets item j. + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> allocation_vars = cp.Variable((len(alloc.remaining_agents()), len(alloc.remaining_items())), integer=True) + >>> alloc_X = find_envy_free_allocation(alloc, allocation_vars, []) + >>> print(alloc_X) + [[2 0 0] + [0 0 2] + [0 2 0]] + """ + + logger.debug("Searching for envy-free allocation.") + num_agents, num_items, items_capacities, agent_capacities, agent_valuations = get_agents_items_and_capacities(alloc) # Define the objective function (maximize total value) + objective = cp.Maximize(0) + + item_capacity_constraints = [cp.sum(allocation_variables[:, j]) == items_capacities[j] for j in range(num_items)] + + def create_agent_capacity_constraints(i): + constraints = [] + for j in range(num_items): + constraints.append(allocation_variables[i, j] >= 0) + constraints.append(cp.sum(allocation_variables[i, :]) <= agent_capacities[i]) + return constraints + + with ThreadPoolExecutor() as executor: + agent_capacity_constraints = list(executor.map(create_agent_capacity_constraints, range(num_agents))) + agent_capacity_constraints = [constraint for sublist in agent_capacity_constraints for constraint in sublist] + + def create_envy_free_constraints(i): + constraints = [] + i_profit = cp.sum(cp.multiply(agent_valuations[i, :], allocation_variables[i, :])) + for j in range(num_agents): + if i != j: + j_profit = cp.sum(cp.multiply(agent_valuations[i, :], allocation_variables[j, :])) + constraints.append(j_profit <= i_profit) + return constraints + + with ThreadPoolExecutor() as executor: + envy_free_constraints = list(executor.map(create_envy_free_constraints, range(num_agents))) + envy_free_constraints = [constraint for sublist in envy_free_constraints for constraint in sublist] + + # Define the problem + prob = cp.Problem(objective, item_capacity_constraints + agent_capacity_constraints + envy_free_constraints + constraints_ilp) + + try: + prob.solve() + if allocation_variables.value is None: + return None + allocation = np.round(allocation_variables.value).astype(int) + logger.debug(f"Allocation results:\n{allocation}") + return allocation + except Exception as e: + logger.error(f"An error occurred during optimization: {e}") + return None + + +def find_pareto_dominating_allocation(alloc: AllocationBuilder, alloc_matrix): + """ + Find a Pareto-dominates allocation of items to agents. + + Returns: + - allocation_matrix (np.ndarray): The allocation of items to agents as a matrix. + maxtrix[i][j] = x -> times agent i gets item j. + + >>> item_capacities = {"Fork": 2, "Knife": 2, "Pen": 2} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[2 0 0] + [0 1 2] + [0 1 0]] + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = {"Ami": {"Fork": 3, "Knife": 5, "Pen": 8}, "Rami": {"Fork": 5, "Knife": 7, "Pen": 5},"Tami": {"Fork": 4, "Knife": 1, "Pen": 11}} + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[3, 0, 0], [0, 0, 3], [0, 3, 0]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[2 0 1] + [0 1 2] + [1 2 0]] + + >>> item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + >>> valuations = { "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}, "Yumi": {"Fork": 4, "Knife": 5, "Pen": 6} } + >>> instance = Instance(item_capacities=item_capacities, valuations=valuations) + >>> alloc = AllocationBuilder(instance) + >>> alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1], [1, 1, 1]]) # -> {"Ami": ["Pen", "Fork"], "Tami": ["Knife", "Knife"], "Rami": ["Fork", "Pen"]} + >>> pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + >>> print(pareto_optimal_allocation) + [[1 0 0] + [0 3 0] + [1 0 1] + [1 0 2]] + """ + logger.debug("Searching for a Pareto-dominating allocation") + + num_agents, num_items, item_capacities, agent_capacities, agent_valuations = get_agents_items_and_capacities(alloc) + allocation_var = cp.Variable((num_agents, num_items), integer=True) + + def create_item_capacity_constraints(j): + return cp.sum(allocation_var[:, j]) == item_capacities[j] + + def create_agent_capacity_constraints(): + constraints = [] + for i in range(num_agents): + for j in range(num_items): + constraints.append(allocation_var[i, j] >= 0) + constraints += [cp.sum(allocation_var[i, :]) <= agent_capacities[i] for i in range(num_agents)] + return constraints + + def create_current_value_per_agent(i): + return cp.sum(cp.multiply(agent_valuations[i, :], alloc_matrix[i, :])) + + def create_new_value_per_agent(i): + return cp.sum(cp.multiply(agent_valuations[i, :], allocation_var[i, :])) + + def create_pareto_dominating_constraints(i): + return new_value_per_agent[i] >= current_value_per_agent[i] + + with ThreadPoolExecutor() as executor: + item_capacity_constraints = list(executor.map(create_item_capacity_constraints, range(num_items))) + agent_capacity_constraints = list(executor.submit(create_agent_capacity_constraints).result()) + current_value_per_agent = list(executor.map(create_current_value_per_agent, range(num_agents))) + new_value_per_agent = list(executor.map(create_new_value_per_agent, range(num_agents))) + pareto_dominating_constraints = list(executor.map(create_pareto_dominating_constraints, range(num_agents))) + + pareto_dominating_constraints.append(cp.sum(new_value_per_agent) >= 1 + cp.sum(current_value_per_agent)) + + problem = cp.Problem(cp.Maximize(0), + pareto_dominating_constraints + item_capacity_constraints + agent_capacity_constraints) + + try: + problem.solve() + if allocation_var.value is None: + return None + allocations = np.round(allocation_var.value).astype(int) + logger.debug(f"Pareto dominating allocation found:\n{allocations}") + return allocations + except Exception as e: + logger.error("Failed to find Pareto dominating allocation: ", exc_info=True) + return None + + +def create_more_constraints_ILP(alloc: AllocationBuilder, alloc_X: np.ndarray, alloc_Y: np.ndarray, allocation_variables: cp.Variable): + """ + Creates additional ILP constraints based on current and previous allocations to ensure + the new allocation differs from the previous one and satisfies specific conditions. + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The previous allocation matrix. + - alloc_Y (np.ndarray): The current allocation matrix. + - allocation_variables (cp.Variable): The ILP variable representing the allocation. + + Returns: + - list: A list of additional constraints. + """ + logger.debug("Creating more ILP constraints based on current and previous allocations.") + + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) + num_agents = len(agents) + num_items = len(items) + + Z = cp.Variable((num_agents, num_items), boolean=True) + Z_bar = cp.Variable((num_agents, num_items), boolean=True) + + constraints = [] + + delta = alloc_Y - alloc_X + logger.debug(f'Delta:\n{delta}') + + def create_constraints_for_agent_item(i, j): + constraints = [] + constraint7 = allocation_variables[i][j] + delta[i][j] <= -1 + (2 * items_capacities[j]) * (1 - Z[i][j]) + constraints.append(constraint7) + + constraint8 = allocation_variables[i][j] + delta[i][j] >= -items_capacities[j] + Z_bar[i][j] * (2 * items_capacities[j] + 1) + constraints.append(constraint8) + return constraints + + with ThreadPoolExecutor() as executor: + agent_item_constraints = [executor.submit(create_constraints_for_agent_item, i, j) for i in range(num_agents) for j in range(num_items)] + for future in agent_item_constraints: + constraints.extend(future.result()) + + constraint9 = (cp.sum([Z[i][j] for i in range(num_agents) for j in range(num_items)]) + + cp.sum([Z_bar[i][j] for i in range(num_agents) for j in range(num_items)])) >= 1 + constraints.append(constraint9) + + return constraints + + +def calculate_values(alloc: AllocationBuilder, alloc_X: np.ndarray): + """ + Calculates a final value for each agent + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The allocation matrix. + + + Returns: + - Dict : A dict of final values per agent. + """ + logger.info("Calculates values") + + # Define variables + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) # True to return only this tuple + agent_valuations = [[alloc.effective_value(agent, item) for item in items] for agent in agents] + + values = {agent: 0 for agent in agents} + for i in range(len(agents)): + for j in range(len(items)): + values[agents[i]] += alloc_X[i][j] * agent_valuations[i][j] + return values + + +def calculate_envy_matrix(alloc: AllocationBuilder, alloc_X: np.ndarray): + """ + Calculates the envy matrix + + Parameters: + - alloc (AllocationBuilder): The allocation object containing the remaining agents and items. + - alloc_X (np.ndarray): The allocation matrix. + + + Returns: + - Dict : A dict of envy matrix. + """ + logger.info("Calculates nvy matrix") + + # Define variables + agents, items, items_capacities = get_agents_items_and_capacities(alloc, True) # True to return only this tuple + agent_valuations = [[alloc.effective_value(agent, item) for item in items] for agent in agents] + + baskets_values = {agent: [] for agent in agents} + + for agent_index in range(len(agents)): + for i in range(len(agents)): + baskets_values[agents[agent_index]].append(0) + for j in range(len(items)): + baskets_values[agents[agent_index]][i] += alloc_X[i][j] * agent_valuations[agent_index][j] + + return baskets_values + + +def get_agents_items_and_capacities(alloc: AllocationBuilder, bool=False): + """ + Helper function to get the remaining agents, items, and their capacities. + + Parameters: + alloc: The AllocationBuilder object with methods to get remaining agents and items. + + Returns: + tuple: A tuple containing the list of agents, the list of items, and the list of item capacities. + """ + # Define variables + agents_names = [agent for agent in alloc.remaining_agents()] + items_names = [item for item in alloc.remaining_items()] + item_capacities = [alloc.remaining_item_capacities[item] for item in alloc.remaining_items()] + if bool: + # Return only the tuple of agents, items, and item capacities + return agents_names, items_names, item_capacities + + # else + agent_capacities = [alloc.remaining_agent_capacities[agent] for agent in agents_names] + agent_valuations = [[alloc.effective_value(agent, item) for item in items_names] for agent in agents_names] + agent_valuations = np.array(agent_valuations) + + # Return all variables + return len(agents_names), len(items_names), item_capacities, agent_capacities, agent_valuations + +#### MAIN #### + +def instance_4_3(): + item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + valuations = { + "Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, + "Rami": {"Fork": 0, "Knife": 1, "Pen": 1}, + "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}, + "Yumi": {"Fork": 4, "Knife": 5, "Pen": 6}} + return Instance(item_capacities=item_capacities, valuations=valuations) + + +def instance_4_6(): + item_capacities = {'c1': 5, 'c2': 6, 'c3': 2, 'c4': 3, 'c5': 5, 'c6': 2} + valuations = { + 's1': {'c1': 152, 'c2': 86, 'c3': 262, 'c4': 68, 'c5': 263, 'c6': 169}, + 's2': {'c1': 124, 'c2': 70, 'c3': 98, 'c4': 244, 'c5': 329, 'c6': 135}, + 's3': {'c1': 170, 'c2': 235, 'c3': 295, 'c4': 91, 'c5': 91, 'c6': 118}, + 's4': {'c1': 158, 'c2': 56, 'c3': 134, 'c4': 255, 'c5': 192, 'c6': 205}} + return Instance(item_capacities=item_capacities, valuations=valuations) + + +def instance2_4_6(): + item_capacities = {'c1': 2, 'c2': 2, 'c3': 2, 'c4': 2, 'c5': 2, 'c6': 2} + valuations = { + 's1': {'c1': 100, 'c2': 60, 'c3': 60, 'c4': 60, 'c5': 70, 'c6': 60}, + 's2': {'c1': 60, 'c2': 100, 'c3': 60, 'c4': 60, 'c5': 70, 'c6': 60}, + 's3': {'c1': 60, 'c2': 60, 'c3': 100, 'c4': 60, 'c5': 60, 'c6': 70}, + 's4': {'c1': 60, 'c2': 60, 'c3': 60, 'c4': 100, 'c5': 60, 'c6': 70}} + return Instance( item_capacities=item_capacities, valuations=valuations) + + +if __name__ == "__main__": + import doctest + + # logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + + print("\n", doctest.testmod(), "\n") + + logger.setLevel(logging.DEBUG) + + + # instance = Instance.random_uniform( + # num_of_agents=4, num_of_items=6, + # agent_capacity_bounds=(6,6), item_capacity_bounds=(2,6), + # item_base_value_bounds=(50,150), + # item_subjective_ratio_bounds=(0.5,1.5), + # normalized_sum_of_values=1000, + # random_seed=1) + # print(instance) + divide(improved_high_multiplicity_fair_allocation, instance_4_6()) + + + # alloc = AllocationBuilder(instance) + # alloc_X = np.array([[1, 0, 1], [0, 2, 0], [1, 0, 1], [1, 1, 1]]) + # pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + # print(pareto_optimal_allocation) + + # agent_capacities = {"Ami": 6, "Tami": 6} + # item_capacities = {"Fork": 3, "Knife": 3, "Pen": 3} + # valuations = {"Ami": {"Fork": 2, "Knife": 0, "Pen": 0}, "Tami": {"Fork": 0, "Knife": 1, "Pen": 1}} + # instance = Instance(agent_capacities=agent_capacities, item_capacities=item_capacities, valuations=valuations) + # alloc = AllocationBuilder(instance) + # alloc_X = np.array([[3, 2, 1], [0, 1, 2]]) + # pareto_optimal_allocation = find_pareto_dominating_allocation(alloc, alloc_X) + # print(pareto_optimal_allocation) diff --git a/fairpyx/allocations.py b/fairpyx/allocations.py index 323b6b7..57711f6 100644 --- a/fairpyx/allocations.py +++ b/fairpyx/allocations.py @@ -10,7 +10,7 @@ FORBIDDEN_ALLOCATION = -np.inf -def validate_allocation(instance:Instance, allocation:dict, title:str=""): +def validate_allocation(instance:Instance, allocation:dict, title:str="", allow_multiple_copies:bool=False): """ Validate that the given allocation is feasible for the given input-instance. Checks agent capacities, item capacities, and uniqueness of items. @@ -47,7 +47,7 @@ def validate_allocation(instance:Instance, allocation:dict, title:str=""): agent_capacity = instance.agent_capacity(agent) if len(bundle) > agent_capacity: raise ValueError(f"{title}: Agent {agent} has capacity {agent_capacity}, but received more items: {bundle}.") - if len(set(bundle))!=len(bundle): + if (not allow_multiple_copies) and len(set(bundle))!=len(bundle): raise ValueError(f"{title}: Agent {agent} received two or more copies of the same item. Bundle: {bundle}.") if len(bundle) < agent_capacity: agents_below_their_capacity.append(agent) @@ -137,23 +137,29 @@ class AllocationBuilder: """ def __init__(self, instance:Instance): self.instance = instance + self.allow_multiple_copies = False self.remaining_agent_capacities = {agent: instance.agent_capacity(agent) for agent in instance.agents if instance.agent_capacity(agent) > 0} self.remaining_item_capacities = {item: instance.item_capacity(item) for item in instance.items if instance.item_capacity(item) > 0} self.remaining_conflicts = {(agent,item) for agent in self.remaining_agents() for item in self.instance.agent_conflicts(agent)} self.bundles = {agent: set() for agent in instance.agents} # Each bundle is a set, since each agent can get at most one seat in each course + def set_allow_multiple_copies(self, flag): + self.allow_multiple_copies = flag + if flag: + self.bundles = {agent: list() for agent in self.instance.agents} + def isdone(self)->bool: """ Return True if either all items or all agents have exhausted their capacity - so we are done. """ - return len(self.remaining_item_capacities) == 0 or len(self.remaining_agent_capacities) == 0 + return len(self.remaining_item_capacities) == 0 or len(self.remaining_agent_capacities) == 0 - def remaining_items(self)->list: + def remaining_items(self)->list: """ Return the items with positive remaining capacity. """ return self.remaining_item_capacities.keys() - + def remaining_items_for_agent(self, agent)->list: """ Return the items with positive remaining capacity, that are available for the agent @@ -161,7 +167,7 @@ def remaining_items_for_agent(self, agent)->list: """ return [item for item in self.remaining_items() if (agent,item) not in self.remaining_conflicts] - def remaining_agents(self)->list: + def remaining_agents(self)->list: """ Return the agents with positive remaining capacity. """ @@ -173,9 +179,9 @@ def remaining_instance(self)->Instance: """ return Instance( valuations=self.instance.agent_item_value, # base valuations are the same as in the original instance - agent_capacities=self.remaining_agent_capacities, # agent capacities may be smaller than in the original instance - agent_entitlements=self.instance.agent_entitlement, # agent entitlement is the same as in the original instance - agent_conflicts=self.instance.agent_conflicts, # agent conflicts are the same as in the original instance + agent_capacities=self.remaining_agent_capacities, # agent capacities may be smaller than in the original instance + agent_entitlements=self.instance.agent_entitlement, # agent entitlement is the same as in the original instance + agent_conflicts=self.instance.agent_conflicts, # agent conflicts are the same as in the original instance agents=self.remaining_agents(), # agent list may be smaller than in the original instance item_capacities=self.remaining_item_capacities, # item capacities may be smaller than in the original instance item_conflicts=self.instance.item_conflicts, # item conflicts are the same as in the original instance @@ -213,7 +219,10 @@ def give(self, agent:any, item:any, logger=None): raise ValueError(f"Item {item} has no remaining capacity for agent {agent}") if (agent,item) in self.remaining_conflicts: raise ValueError(f"Agent {agent} is not allowed to take item {item} due to a conflict") - self.bundles[agent].add(item) + if self.allow_multiple_copies: + self.bundles[agent].append(item) + else: + self.bundles[agent].add(item) if logger is not None: logger.info("Agent %s takes item %s with value %s", agent, item, self.instance.agent_item_value(agent, item)) @@ -224,8 +233,8 @@ def give(self, agent:any, item:any, logger=None): self.remaining_item_capacities[item] -= 1 if self.remaining_item_capacities[item] <= 0: self.remove_item_from_loop(item) - self._update_conflicts(agent,item) - + if not self.allow_multiple_copies: + self._update_conflicts(agent,item) def give_bundle(self, agent:any, new_bundle:list, logger=None): for item in new_bundle: @@ -265,7 +274,6 @@ def give_bundles(self, new_bundles:dict, logger=None): self.bundles[agent].update(bundle) self._update_conflicts(agent,item) - def _update_conflicts(self, receiving_agent:any, received_item:any): """ Update the list of agent-item conflicts after giving `received_item` to `receiving_agent`: @@ -276,11 +284,10 @@ def _update_conflicts(self, receiving_agent:any, received_item:any): for conflicting_item in self.instance.item_conflicts(received_item): self.remaining_conflicts.add( (receiving_agent,conflicting_item) ) - def sorted(self): return {agent: sorted(bundle) for agent,bundle in self.bundles.items()} if __name__ == "__main__": import doctest - print(doctest.testmod(optionflags=doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE)) + print(doctest.testmod(optionflags=doctest.ELLIPSIS+doctest.NORMALIZE_WHITESPACE)) \ No newline at end of file diff --git a/fairpyx/instances.py b/fairpyx/instances.py index 057c259..d46b5df 100644 --- a/fairpyx/instances.py +++ b/fairpyx/instances.py @@ -183,6 +183,7 @@ def __str__(self): * agent conflicts: { {agent: self.agent_conflicts(agent) for agent in self.agents} } * item capacities: { {item: self.item_capacity(item) for item in self.items} } * item conflicts: { {item: self.item_conflicts(item) for item in self.items} } + * valuations: {dict(self._valuations)} """ @cache diff --git a/requirements.txt b/requirements.txt index 24c4104..67f8807 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,4 @@ prtpy # cvxpy_leximin>=0.4.4 # prtpy>=0.7.0 # more_itertools -# scs +# scs \ No newline at end of file diff --git a/setup.py b/setup.py index 61cc8f4..8c31b98 100644 --- a/setup.py +++ b/setup.py @@ -55,4 +55,4 @@ # twine upload --repository testpypi dist/* # Publish to real PyPI (make sure you set the environment variables TWINE_USERNAME and TWINE_PASSWORD): -# twine upload --repository pypi dist/* +# twine upload --repository pypi dist/* \ No newline at end of file diff --git a/tests/test_high_multiplicity_fair_allocation.py b/tests/test_high_multiplicity_fair_allocation.py new file mode 100644 index 0000000..040892f --- /dev/null +++ b/tests/test_high_multiplicity_fair_allocation.py @@ -0,0 +1,41 @@ +""" +Tests for the high-multiplicity-fair-allocation algorithm. + +Article Title: High-Multiplicity Fair Allocation Made More Practical +Article URL: https://www.ifaamas.org/Proceedings/aamas2021/pdfs/p260.pdf + +Algorithm Name: High Multiplicity Fair Allocation +Algorithm Description: This algorithm finds an allocation maximizing the sum of utilities + for given instance with envy-freeness and Pareto-optimality constraints if exists. + +Programmers: Naor Ladani and Elor Israeli +Since : 2024-05 +""" + +import pytest + +import fairpyx +import numpy as np + +from fairpyx.algorithms.high_multiplicity_fair_allocation import high_multiplicity_fair_allocation + +NUM_OF_RANDOM_INSTANCES = 10 + + +def test_feasibility(): + for i in range(NUM_OF_RANDOM_INSTANCES): # run_uniform_experiment() + + np.random.seed(i) + instance = fairpyx.Instance.random_uniform( + num_of_agents=5, num_of_items=5, normalized_sum_of_values=1000, + agent_capacity_bounds=[2, 6], + item_capacity_bounds=[2, 6], + item_base_value_bounds=[1, 1000], + item_subjective_ratio_bounds=[0.5, 1.5] + ) + allocation = fairpyx.divide(fairpyx.algorithms.high_multiplicity_fair_allocation.high_multiplicity_fair_allocation, instance=instance) + fairpyx.validate_allocation(instance, allocation, title=f"Seed {i}", allow_multiple_copies=True) + + +if __name__ == "__main__": + pytest.main(["-v", __file__])