Fui apresentado a algoritmos genéticos recentemente por este artigo do MSDN , no qual ele os chama de evolução combinatória, mas parece ser a mesma coisa, e estou lutando para entender como a combinação de duas soluções em potencial sempre produzirá uma nova solução que seja pelo menos tão bom como seus pais.
Porque isto é assim? Certamente combinar pode produzir algo pior.
Pelo que entendi, o algoritmo baseia-se no conceito de que quando um macho e uma fêmea de uma espécie produzem filhotes, esses filhotes terão características de ambos os pais. Algumas combinações serão melhores, outras piores e outras igualmente boas. Os que são melhores (para qualquer definição de "melhor" é apropriado) têm mais chances de sobreviver e produzir frutos que tenham as características aprimoradas. No entanto, haverá combinações mais fracas. Por que isso não é um problema do GA?
fonte
However, there will be combinations that are weaker. Why isn't this an issue with GA?
- Porque as combinações mais fracas são descartadas.Why isn't this an issue with GA?
Bem, é, ou mais exatamente, pode ser. Um dos muitos (muitos) parâmetros para otimizar o uso de AGs é o tamanho da população: se for muito baixo, você poderá produzir apenas indivíduos mais fracos, mas se for muito alto, o tempo de computação associado à função de fitness poderá ser muito alto.Respostas:
Um algoritmo genético tenta melhorar a cada geração, selecionando a população. Cada membro é avaliado de acordo com uma função de condicionamento físico, e apenas uma parte com alta pontuação é permitida a reprodução.
Você está certo, porém: não há garantia de que a próxima geração melhore a pontuação de seu antecessor.
Considere o programa da doninha de Dawkins : "evoluindo" a corda
"Methinks it is like a weasel"
. Partindo de uma população de seqüências aleatórias, a função fitness avalia a correspondência textual mais próxima, que é perturbada para produzir a próxima geração. Com uma reprodução cruzada simples, duas seqüências de alta pontuação combinadas podem produzir muito facilmente descendentes com menor pontuação. Mesmo a mutação aleatória "assexual" de uma única corda de alta aptidão pode diminuir a aptidão da criança.Vale a pena notar, eu acho, que isso não é necessariamente uma falha. Com esse tipo de pesquisa, há a ideia de máximos locais . Um membro da população pode representar uma solução que não é o resultado ideal, mas é o melhor que pode ser alcançado sem piorar o caminho.
Imagine que a função de adequação para o programa doninha não apenas encontre a distância de edição, mas tenha alguma noção de "palavra" e teste se a última palavra da string é o nome de um animal. Qualquer nome de animal tem boa pontuação, mas
"weasel"
recebe um grande bônus.Agora, o que acontece se
"Methinks it is like a walrus"
for evoluído? A pontuação é boa. Não tão bem quanto a cadeia alvo final, mas melhor do que"Methinks it is like a walrut"
ou outras variações aproximadas que poderiam ser alcançadas por um único passo de mutação.A corda da morsa é o máximo local e a pesquisa pode ficar parada lá, a menos que o programa permita que a pontuação da próxima geração seja pior.
fonte
Não sabemos que vai melhorar, sabemos que não vai piorar.
Em cada geração, não consiste apenas na ospring dos melhores elementos, mas também inclui os melhores elementos em si - clones, se você preferir. Como eles ainda estão presentes, eles terão a mesma pontuação de antes. Significando que se nenhum dos filhos for melhor, os vencedores das gerações anteriores vencerão novamente - e serão re-mutados / reproduzidos.
Considere o seguinte: Com um indivíduo progenitor sendo uma carta, por exemplo,
A
um mutante criança sendo uma definida pela adição de um número por exemploA1
, soluções de cross-pão sendo escrito com suportes em torno do ex pai(A1B2)
E o núcleo da aptidão de qualquer writen indivisual depois - maior sendo melhor[12]
Para demonstração, considere um pool de 5, onde mantemos o melhor 2. e preencha com 1 mutação de cada um, além de uma raça cruzada
Geração 1
A
[10]B
[5]C
[4]D
[3]E
[1]Manter
A
,B
como eles são os melhores dois, e recarga de outros 3 slots com lá descendentesGeração 2
A
[10]B
[5](AB)
[7]A1
[12]B1
[4]Mantenha
A
e(AB)
, como são os melhores 2 - Isso significa que o vovôA
ainda estará na piscina, pois a maioria das crianças trabalha menosGeração 3
A
[10](AB)
[12](A(AB))
[14]A2
[8](AB)1
[13]Mantenha
(AB)1
e(A(AB))
- desta vez, nenhum avô foi mantido, pois dois de seus filhos os espancaram. Mas, se o(AB1)
desempenho foi um pouco pior, teríamos continuado(AB)
.Isso continua até que a pontuação estabilize. O que indica que você atingiu algum tipo de máximo local (potencialmente um máximo global). Um dos motivos para detectar isso seria se os mesmos indivíduos continuassem sendo "clonados" na próxima geração. (embora para problemas de alta dimensão que possam levar muito tempo, talvez seja melhor apenas verificar a melhoria <uma tolerância específica)
fonte
Em geral, os algoritmos genéticos funcionam criando várias variações (aleatórias) nos pais em cada geração. Em seguida, é aplicada alguma função de seleção e a prole mais adequada de acordo com essa função sobrevive. Portanto, a prole não é necessariamente melhor, pois a variação é aleatória, mas, combinada com a seleção, você obtém melhorias ao longo do tempo.
fonte
Quando estudei algoritmos genéticos na faculdade, foi explicado assim:
Imagine que uma solução é uma combinação de "genes", onde cada gene afeta o quão boa é a solução como um todo. Quando duas soluções são acasaladas, os genes são escolhidos aleatoriamente de cada pai.
Agora, se o gene leva, geralmente, a uma boa solução, sua frequência no pool de genes aumenta. Em casos extremos, o gene dominará a população.
Portanto, quando você pensa em algoritmos genéticos (e na evolução em geral), não deve pensar em indivíduos. Você deve pensar em genes e populações como um todo. Mesmo se uma "melhor" solução for perdida, isso não significa que seus genes sejam perdidos.
Há também a idéia de elitismo em algoritmos genéticos. Isso significa que as melhores soluções são sempre mantidas por gerações. Isso pode acelerar a convergência do algoritmo, mas é mais fácil para o algoritmo ficar preso no ótimo local.
fonte
Os algoritmos do GA não são determinísticos, eles não garantem uma melhoria em cada geração e também não garantem um ótimo total. No entanto, a fase de seleção de um AG, usando uma função de condicionamento físico, torna mais provável que "boas soluções" sobrevivam.
fonte