示例#1
0
def test_GeneticAlgorithm_08():
    random.seed(89226)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    )
    ga.__next__()
    assert ga.fittest_individual == ['A', 'C', 'D', 'D', 'D']
    ga.__next__()
    assert ga.fittest_individual == ['A', 'C', 'E', 'D', 'E']
    next(ga)
    assert ga.fittest_individual == ['A', 'C', 'E', 'D', 'E']
    next(ga)
    assert ga.fittest_individual == ['A', 'C', 'D', 'D', 'E']
示例#2
0
def test_GeneticAlgorithm_01():
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    )
    assert format(ga) == "['A', 'B', 'C', 'D', 'E']"
    assert len(ga) == 5
    assert ga.initial_individual is None
    assert ga.population_size == 100
    assert ga.select_n_parents == 10
    assert ga.mutation_chance == 0.2
    assert ga.mutation_index == 0.1
    assert ga.evaluation_index == 0.2
    assert ga.target == ['A', 'B', 'C', 'D', 'E']
示例#3
0
def test_GeneticAlgorithm_05():
    random.seed(51902)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    )
    assert ga.fittest_individual is None
    assert ga.generation_number is None
    for _ in range(10):
        ga()
    assert ga.fittest_individual == ['A', 'B', 'C', 'D', 'E']
    assert ga.generation_number == 9
    ga.reset()
    assert ga.fittest_individual is None
    assert ga.generation_number is None
示例#4
0
def test_GeneticAlgorithm_02():
    random.seed(87124)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    )
    assert ga.generation_number is None
    ga()
    assert ga.generation_number == 0
    assert ga.fittest_individual == ['D', 'C', 'A', 'D', 'E']
    ga()
    assert ga.generation_number == 1
    assert ga.fittest_individual == ['A', 'C', 'A', 'D', 'E']
    ga()
    assert ga.generation_number == 2
    assert ga.fittest_individual == ['A', 'C', 'C', 'D', 'E']
示例#5
0
def test_GeneticAlgorithm_03():
    random.seed(55127)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
        population_size=4,
        select_n_parents=2,
    )
    ga()
    assert ga.population == [
        ['A', 'J', 'J', 'B', 'H'],
        ['D', 'A', 'E', 'A', 'F'],
        ['F', 'F', 'A', 'F', 'F'],
        ['F', 'F', 'E', 'J', 'C'],
    ]
    assert ga.scores == [
        0.209603072,
        0.0912,
        0.05638400000000001,
        0.016396800000000003,
    ]
示例#6
0
def test_GeneticAlgorithm_06():
    random.seed(51244)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
        initial_individual=['F', 'G', 'H', 'I', 'J'],
    )
    expected_results = [
        ['F', 'G', 'H', 'I', 'J'],
        ['F', 'B', 'H', 'I', 'J'],
        ['F', 'B', 'H', 'I', 'E'],
        ['F', 'B', 'H', 'I', 'E'],
        ['A', 'B', 'H', 'I', 'E'],
        ['A', 'B', 'E', 'I', 'E'],
        ['A', 'B', 'E', 'D', 'E'],
        ['A', 'B', 'E', 'D', 'E'],
        ['A', 'B', 'E', 'D', 'E'],
        ['A', 'B', 'D', 'D', 'E'],
    ]
    for expected_result in expected_results:
        ga()
        assert ga.fittest_individual == expected_result
示例#7
0
def test_GeneticAlgorithm_04():
    random.seed(60012)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
        population_size=50,
    )
    expected_results = [
        ['A', 'J', 'B', 'E', 'E'],
        ['A', 'H', 'C', 'D', 'J'],
        ['A', 'C', 'D', 'D', 'E'],
        ['A', 'C', 'D', 'D', 'E'],
        ['A', 'C', 'D', 'D', 'E'],
        ['A', 'C', 'C', 'D', 'E'],
        ['A', 'C', 'C', 'D', 'E'],
        ['A', 'C', 'C', 'D', 'E'],
        ['A', 'C', 'C', 'D', 'E'],
        ['A', 'C', 'C', 'D', 'E'],
    ]
    expected_scores = [
        0.480000512,
        0.6000768,
        0.6799999999999999,
        0.6799999999999999,
        0.6799999999999999,
        0.8400000000000001,
        0.8400000000000001,
        0.8400000000000001,
        0.8400000000000001,
        0.8400000000000001,
    ]
    for i in range(10):
        ga()
        assert ga.generation_number == i
        assert ga.fittest_individual == expected_results[i]
        assert ga.fittest_individual_score == expected_scores[i]
示例#8
0
def test_GeneticAlgorithm_07():
    random.seed(51244)
    ga = auxjad.GeneticAlgorithm(
        target=['A', 'B', 'C', 'D', 'E'],
        genes=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    )
    assert ga.population_size == 100
    assert ga.select_n_parents == 10
    assert ga.keep_n_parents == 0
    assert ga.mutation_chance == 0.2
    assert ga.mutation_index == 0.1
    assert ga.evaluation_index == 0.2
    ga.population_size = 50
    ga.select_n_parents = 15
    ga.keep_n_parents = 3
    ga.mutation_chance = 0.75
    ga.mutation_index = 0.25
    ga.evaluation_index = 0.5
    assert ga.population_size == 50
    assert ga.select_n_parents == 15
    assert ga.keep_n_parents == 3
    assert ga.mutation_chance == 0.75
    assert ga.mutation_index == 0.25
    assert ga.evaluation_index == 0.5