AI-For-Beginners/translations/pt-BR/lessons/6-Other/21-GeneticAlgorithms
localizeflow[bot] eb205aa297 chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:46:05 +00:00
..
Diophantine.ipynb chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:46:05 +00:00
Genetic.ipynb chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:46:05 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:46:05 +00:00

README.md

Algoritmos Genéticos

Quiz pré-aula

Algoritmos Genéticos (AG) são baseados em uma abordagem evolucionária para IA, na qual métodos de evolução de uma população são usados para obter uma solução ótima para um problema específico. Eles foram propostos em 1975 por John Henry Holland.

Os Algoritmos Genéticos são baseados nas seguintes ideias:

  • Soluções válidas para o problema podem ser representadas como genes
  • O Crossover permite combinar duas soluções para obter uma nova solução válida
  • A Seleção é usada para escolher as soluções mais ótimas utilizando alguma função de aptidão
  • Mutações são introduzidas para desestabilizar a otimização e nos tirar de mínimos locais

Se você quiser implementar um Algoritmo Genético, precisará do seguinte:

  • Encontrar um método para codificar as soluções do problema usando genes g∈Γ
  • No conjunto de genes Γ, é necessário definir uma função de aptidão fit: Γ→R. Valores menores da função correspondem a melhores soluções.
  • Definir um mecanismo de crossover para combinar dois genes e obter uma nova solução válida crossover: Γ2→Γ.
  • Definir um mecanismo de mutação mutate: Γ→Γ.

Em muitos casos, os algoritmos de crossover e mutação são bastante simples para manipular genes como sequências numéricas ou vetores de bits.

A implementação específica de um algoritmo genético pode variar de caso para caso, mas a estrutura geral é a seguinte:

  1. Selecionar uma população inicial G⊂Γ
  2. Selecionar aleatoriamente uma das operações que será realizada nesta etapa: crossover ou mutação
  3. Crossover:
  • Selecionar aleatoriamente dois genes g1, g2 ∈ G
  • Calcular o crossover g=crossover(g1,g2)
  • Se fit(g)<fit(g1) ou fit(g)<fit(g2) - substituir o gene correspondente na população por g.
  1. Mutação - selecionar um gene aleatório g∈G e substituí-lo por mutate(g)
  2. Repetir a partir do passo 2, até obtermos um valor suficientemente pequeno de fit, ou até que o limite de número de etapas seja alcançado.

Tarefas Típicas

As tarefas tipicamente resolvidas por Algoritmos Genéticos incluem:

  1. Otimização de cronogramas
  2. Empacotamento ótimo
  3. Corte ótimo
  4. Aceleração de busca exaustiva

✍️ Exercícios: Algoritmos Genéticos

Continue seu aprendizado nos seguintes notebooks:

Acesse este notebook para ver dois exemplos de uso de Algoritmos Genéticos:

  1. Divisão justa de tesouro
  2. Problema das 8 Rainhas

Conclusão

Os Algoritmos Genéticos são usados para resolver muitos problemas, incluindo logística e problemas de busca. O campo é inspirado por pesquisas que uniram tópicos de Psicologia e Ciência da Computação.

🚀 Desafio

"Algoritmos genéticos são simples de implementar, mas seu comportamento é difícil de entender." fonte Faça uma pesquisa para encontrar uma implementação de um algoritmo genético, como resolver um quebra-cabeça de Sudoku, e explique como ele funciona em forma de esboço ou fluxograma.

Quiz pós-aula

Revisão & Autoestudo

Assista a este ótimo vídeo que fala sobre como computadores podem aprender a jogar Super Mario usando redes neurais treinadas por algoritmos genéticos. Aprenderemos mais sobre computadores aprendendo a jogar jogos como esse na próxima seção.

Tarefa: Equação Diofantina

Seu objetivo é resolver a chamada equação diofantina - uma equação com raízes inteiras. Por exemplo, considere a equação a+2b+3c+4d=30. Você precisa encontrar as raízes inteiras que satisfazem essa equação.

Esta tarefa é inspirada por este post.

Dicas:

  1. Você pode considerar raízes no intervalo [0;30]
  2. Como gene, considere usar a lista de valores das raízes

Use Diophantine.ipynb como ponto de partida.