Dynamic Process: Non-Condorcet Profiles (5.2.1, C.6)
[1]:
from matplotlib import pyplot as plt
from poisson_approval import *
[2]:
N_SAMPLES = 10000
N_MAX_EPISODES = 1000
[3]:
rand_profile = RandConditional(
factory=RandProfileHistogramUniform(n_bins=1),
test=is_not_condorcet,
n_trials_max=None
)
[4]:
results = monte_carlo_fictitious_play(
factory=rand_profile,
n_samples=N_SAMPLES,
n_max_episodes=N_MAX_EPISODES,
voting_rules=VOTING_RULES,
init='random_tau',
monte_carlo_settings=[
MCS_CONVERGES,
MCS_WELFARE_LOSSES,
],
file_save='sav/non_condorcet_profiles.sav',
)
Convergence (5.2.1)
[5]:
results[APPROVAL]['mean_converges']
[5]:
0.1929
Welfare Losses (C.6)
[6]:
plot_welfare_losses(results, 'utilitarian_welfare_losses')
plt.savefig('img/fUWelfareNoCW.png', dpi=600, bbox_inches="tight")