def test_potential_hof_members(mocker, one_island): island_a = mocker.Mock(hall_of_fame=['a']) island_b = mocker.Mock(hall_of_fame=['b']) island_c = mocker.Mock(hall_of_fame=['c']) archipelago = SerialArchipelago(one_island, num_islands=3) archipelago._islands = [island_a, island_b, island_c] assert archipelago._get_potential_hof_members() == ['a', 'b', 'c']
def test_archipelago_runs(one_island, two_island, three_island): max_generations = 100 min_generations = 20 error_tol = 0 generation_step_report = 10 archipelago = SerialArchipelago(one_island, num_islands=4) archipelago._islands = [one_island, two_island, three_island, three_island] result = archipelago.evolve_until_convergence(max_generations, error_tol, generation_step_report, min_generations) assert result.success
def test_island_migration(one_island, island_list): archipelago = SerialArchipelago(one_island, num_islands=4) archipelago._islands = island_list archipelago._coordinate_migration_between_islands() migration_count = 0 for i, island in enumerate(archipelago._islands): initial_individual_values = [i] * VALUE_LIST_SIZE for individual in island.population: if initial_individual_values != individual.values: migration_count += 1 break assert len(island_list) == migration_count
def test_convergence_of_archipelago(one_island, island_list): archipelago = SerialArchipelago(one_island, num_islands=4) archipelago._islands = island_list assert archipelago.get_best_fitness() <= 0