Build a hybrid population dynamic
Use the build_hybrid_population_dynamic function:
>>> import ludics
>>> import numpy as np
>>> population_dynamic_array = np.array([
... ludics.compute_moran_transition_probability,
... ludics.compute_fermi_transition_probability,
... ludics.compute_introspection_transition_probability
... ])
>>> ludics.build_hybrid_population_dynamic(population_dynamic_array)
<function ...>
This can be passed directly into generate_transition_matrix
>>> import ludics
>>> import numpy as np
>>> import ludics.fitness_functions
>>> source = np.array([1, 1, 1])
>>> target = np.array([1, 1, 0])
>>> population_dynamic_array = np.array([
... ludics.compute_moran_transition_probability,
... ludics.compute_fermi_transition_probability,
... ludics.compute_introspection_transition_probability
... ])
>>> N = 3
>>> number_of_strategies = 2
>>> state_space = ludics.get_state_space(N=N, k=number_of_strategies)
>>> hybrid_population_dynamic = ludics.build_hybrid_population_dynamic(population_dynamic_array)
>>> r = 2
>>> contribution_vector = np.array([1, 2, 3])
>>> choice_intensity = 1
>>> selection_intensity = 0.1
>>> ludics.generate_transition_matrix(
... state_space=state_space,
... fitness_function=ludics.fitness_functions.public_goods_game_fitness_function,
... compute_transition_probability=hybrid_population_dynamic,
... r=r,
... alpha=contribution_vector,
... choice_intensity=choice_intensity,
... selection_intensity=selection_intensity,
... number_of_strategies=number_of_strategies
... )
array([[0.91035286, 0.08964714, 0. , 0. , 0. ,
0. , 0. , 0. ],
[0.24368619, 0.6575004 , 0. , 0.00790431, 0. ,
0.09090909, 0. , 0. ],
[0.29359903, 0. , 0.51953161, 0.08964714, 0. ,
0. , 0.09722222, 0. ],
[0. , 0.14679951, 0.24368619, 0.40316509, 0. ,
0. , 0. , 0.20634921],
[0.22939068, 0. , 0. , 0. , 0.63613861,
0.08964714, 0.04482357, 0. ],
[0. , 0.12418301, 0. , 0. , 0.24368619,
0.57940292, 0. , 0.05272788],
[0. , 0. , 0.12121212, 0. , 0.14679951,
0. , 0.64234123, 0.08964714],
[0. , 0. , 0. , 0. , 0. ,
0. , 0.24368619, 0.75631381]])