Um algoritmo genético requer alguma maneira de recompensar bons genes com maior propagação. Se você não tinha como distinguir bons genes de genes ruins, não poderia usar um algoritmo genético.
Para que um algoritmo genético funcione, você deve permitir que as soluções mais adequadas sejam reproduzidas, de preferência às soluções menos adequadas. Caso contrário, você apenas tentaria soluções aleatórias.
Aqui está um exemplo típico da minha própria experiência: ao desenvolver um dos primeiros sistemas de discagem por voz, tivemos dificuldade em encontrar um algoritmo para combinar um nome falado com uma cópia armazenada com o mesmo nome. Fomos informados de que 95% de precisão na escolha de um nome em 25 era suficiente. Tínhamos um corpus armazenado de pessoas dizendo 25 nomes 10 vezes cada.
Primeiro, desenvolvemos um sistema de entrada que media o comprimento da palavra falada e a energia da frequência em vários trechos normalizados. Em seguida, desenvolvemos um algoritmo que atribuiu pesos às correspondências nesses parâmetros e comparamos dois conjuntos de parâmetros através desses pesos.
Agora, tivemos um último passo - qual deveria ser o valor desses pesos?
Criamos 1.000 conjuntos aleatórios de pesos e os testamos contra o corpus. Jogamos fora os 500 que tiveram o pior desempenho. Para os 500 restantes, duplicamos cada um e, em um deles, aumentamos ou diminuímos aleatoriamente um dos pesos.
Repetimos esse processo em um computador por cerca de duas semanas até finalmente ter um conjunto de pesos que atendiam ao critério de precisão de 95%. Em seguida, testamos em dados que não estão no corpus. Era cerca de 92% exato. Por isso, demoramos mais para obter 98% de precisão no corpus e esse conjunto de pesos produziu 95% de precisão nos dados que não estão no corpus.
Portanto, o ponto é que você deve ter uma função de condicionamento físico para executar um algoritmo genético. Se você não tem como diferenciar genes bons de genes ruins, como garantir que os genes bons se reproduzam e os genes ruins não?