Cruzamento (Crossover)

O que é cruzamento?

O cruzamento é uma operação fundamental em algoritmos genéticos. Ela imita a reprodução sexual da natureza. Dois indivíduos trocam partes de seu código genético. Assim, geram novos indivíduos para a próxima geração. Essa troca produz descendentes com características de ambos os pais. Portanto, a diversidade da população aumenta gradualmente. O cruzamento não cria informação do nada. Em vez disso, ele recombina o material existente de maneira criativa. Consequentemente, a busca por soluções melhores se torna mais eficiente. Ele é aplicado após a seleção dos pais. A taxa de cruzamento define sua probabilidade de ocorrência. Valores típicos ficam entre 60% e 90%. Caso contrário, os pais são copiados diretamente. O cruzamento é essencial para a exploração do espaço de soluções. Sem ele, o algoritmo seria apenas uma busca local.

Tipos comuns de cruzamento

Existem várias formas de realizar o cruzamento. O cruzamento de um ponto é o mais simples. Um ponto de corte é escolhido aleatoriamente. Os genes após esse ponto são trocados entre os pais. O cruzamento de dois pontos usa dois pontos de corte. A seção entre eles é que é trocada. O cruzamento uniforme é ainda mais flexível. Cada gene é trocado com uma probabilidade independente. Para representações binárias, esses métodos são diretos. Em problemas contínuos, usa-se o cruzamento aritmético. Ele calcula médias ponderadas dos valores dos pais. A escolha do tipo afeta a convergência do algoritmo. Por essa razão, deve-se testar diferentes abordagens. Cada problema pode exigir um tipo específico. A experimentação é sempre recomendada na prática.

Importância para a otimização

O cruzamento equilibra exploração e explotação no algoritmo. Ele permite combinar boas soluções parciais de diferentes indivíduos. Essa combinação pode gerar soluções superiores aos pais. A exploração é favorecida quando a população é diversa. A explotação ocorre quando os melhores indivíduos se cruzam. O cruzamento mantém a herança genética das melhores soluções. Ao mesmo tempo, ele introduz variabilidade controlada. Essa variabilidade evita a estagnação prematura do processo. É importante lembrar que o cruzamento não substitui a mutação. Ambos operam de forma complementar e simultânea. A mutação introduz novidade, enquanto o cruzamento reorganiza. Juntos, eles guiam a busca para o ótimo global. A eficácia do cruzamento foi comprovada em milhares de estudos. Ele é usado em engenharia, finanças e robótica. Sua simplicidade esconde um poder computacional imenso.

Exemplo clássico: o problema do caixeiro viajante

Considere um vendedor que deve visitar cinco cidades. Ele precisa percorrer a menor rota possível. Cada cidade é visitada exatamente uma vez. A distância entre cada par de cidades é conhecida. O objetivo é minimizar a distância total percorrida. Esse é o clássico problema do caixeiro viajante (TSP). Para resolvê-lo com algoritmo genético, usamos uma representação permutacional. Cada indivíduo é uma ordem de visita das cidades. O cruzamento deve respeitar que cada cidade aparece uma vez. O cruzamento de ordem (OX) é frequentemente aplicado aqui. Ele preserva a ordem relativa dos genes. Dois pontos de corte são escolhidos aleatoriamente. A seção entre eles é copiada do primeiro pai. Os genes restantes são preenchidos na ordem do segundo pai. Essa abordagem gera descendentes válidos e promissores.

Resolução em python para o google colab

O código abaixo implementa o TSP com 5 cidades. A distância é calculada pela métrica euclidiana. A população inicial é gerada aleatoriamente. O cruzamento de ordem é aplicado com taxa de 80%. A seleção é feita por torneio de tamanho 2. O algoritmo roda por 100 gerações. Ao final, a melhor rota é exibida em um gráfico. Dois gráficos são gerados: a evolução da distância e a rota final. Execute o código no Google Colab para ver os resultados. As bibliotecas numpy e matplotlib são utilizadas. Certifique-se de instalar todas as dependências. O código é autoexplicativo e comentado. Divirta-se explorando o poder do cruzamento!

Deixe um comentário