Em geral
Algoritmos genéticos são bons para resolver problemas que incluem a calendarização e o agendamento. Eles também têm sido aplicados à engenharia. Eles são freqüentemente usados para resolver problemas de otimização global.
Como regra geral, os algoritmos genéticos podem ser úteis em domínios problemáticos que têm uma paisagem de aptidão complexa, pois a mistura é projetada para afastar a população da optima local na qual um algoritmo tradicional de escalada de colinas pode ficar preso. Os operadores de crossover comumente usados não podem mudar nenhuma população uniforme. Só a mutação pode proporcionar ergodicidade do processo geral do algoritmo genético (visto como uma cadeia de Markov).
Exemplos de problemas resolvidos por algoritmos genéticos incluem: espelhos projetados para canalizar a luz solar para um coletor solar, antenas projetadas para captar sinais de rádio no espaço, métodos de caminhada para figuras de computador, projeto ideal de corpos aerodinâmicos em campos de fluxo complexos
Em seu Algorithm Design Manual, Skiena aconselha contra algoritmos genéticos para qualquer tarefa: "Não é natural modelar aplicações em termos de operadores genéticos como mutação e crossover em cadeias de bits". A pseudobiologia acrescenta outro nível de complexidade entre você e seu problema". Em segundo lugar, os algoritmos genéticos levam muito tempo para resolver problemas não triviais. [...] A analogia com a evolução - onde um progresso significativo requer [sic] milhões de anos - pode ser bastante apropriada. [...] Nunca encontrei nenhum problema em que os algoritmos genéticos me parecessem a maneira correta de atacá-lo. Além disso, nunca vi nenhum resultado computacional relatado usando algoritmos genéticos que me tenham impressionado favoravelmente. Limite-se a simular um recozimento para suas necessidades de vodu de busca heurística".
Jogos de tabuleiro
Os jogos de tabuleiro são uma parte muito relevante da área de algoritmos genéticos como aplicados a problemas de teoria de jogos. Muito do trabalho inicial sobre inteligência computacional e jogos foi direcionado para jogos de tabuleiro clássicos, tais como tic-tac-toe,[3] xadrez, e damas. [4] Os jogos de tabuleiro podem agora, na maioria dos casos, ser jogados por um computador a um nível superior ao dos melhores humanos, mesmo com técnicas cegas de busca exaustiva. Go é uma notável exceção a esta tendência, e até agora tem resistido a ataques de máquinas. Os melhores jogadores de computador Go agora jogam no nível de um bom novato. [5][6] Diz-se que a estratégia Go depende muito do reconhecimento de padrões, e não apenas da análise lógica, como no xadrez e em outros jogos mais independentes de peças. O enorme fator de ramificação eficaz necessário para encontrar soluções de alta qualidade restringe fortemente a aparência que pode ser usada dentro de uma busca de sequência de movimentos.
Jogos de computador
O algoritmo genético pode ser usado em jogos de computador para criar inteligência artificial (o computador joga contra você). Isto permite uma experiência de jogo mais realista; se um jogador humano pode encontrar uma seqüência de passos que sempre leva ao sucesso mesmo quando repetido em jogos diferentes, não pode restar nenhum desafio. Por outro lado, se uma técnica de aprendizagem como um algoritmo genético para um estrategista puder evitar a repetição de erros passados, o jogo terá mais jogabilidade.
Os algoritmos genéticos exigem as seguintes partes:
- Um método para representar o desafio em termos da solução (por exemplo, rotear soldados em um ataque em um jogo de estratégia)
- Uma função de adequação ou avaliação a fim de determinar a qualidade de uma instância (por exemplo, uma medida do dano causado a um oponente em tal ataque).
A função de aptidão aceita uma instanciação mutante de uma entidade e mede sua qualidade. Esta função é personalizada para o domínio do problema. Em muitos casos, particularmente aqueles que envolvem otimização de código, a função de adequação pode ser simplesmente uma função de temporização do sistema. Uma vez definida uma representação genética e função de adequação, um algoritmo genético instanciará os candidatos iniciais como descrito anteriormente, e então melhorará através da aplicação repetitiva de operadores de mutação, cruzamento, inversão e seleção (conforme definido de acordo com o domínio do problema).