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")
../_images/notebooks_article_Dynamic_Process_03_Non-Condorcet_Profiles_(5.2.1,_C.6)_8_0.png