Seção 2. Capítulo 4
single
Desafio: Construir um Algoritmo Genético
Deslize para mostrar o menu
Tarefa
Deslize para começar a programar
Você deve implementar o loop principal de um algoritmo genético para encontrar o valor máximo de uma função matemática. A função a ser otimizada é uma parábola simples: f(x) = -(x - 3)² + 10. Esta função possui um pico claro em x = 3, onde seu valor é 10.
Todas as funções auxiliares (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) e a estrutura do loop principal já estão fornecidas.
Sua tarefa é preencher a lógica central do processo evolutivo:
- Dentro do loop principal
for, primeiro avalie toda apopulationaplicando afitness_functiona cada indivíduo. Armazene esses valores na listafitness. - Encontre o índice do indivíduo com melhor desempenho na geração atual e armazene em
gen_best_idx. (Dica:np.argmax()é útil aqui). - Dentro do loop
while len(new_population) < POP_SIZE:, crie um novo indivíduo:
- Selecione
parent1usando a funçãotournament_selection. - Selecione
parent2usando a funçãotournament_selection. - Crie um
childcombinando os pais com a funçãoarithmetic_crossover. - Aplique variação ao
childusando a funçãomutate.
- Após o loop
while, substitua a antigapopulationpelanew_populationpara completar a geração.
Solução
Tudo estava claro?
Obrigado pelo seu feedback!
Seção 2. Capítulo 4
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo