Pergunta

Eu encontrei este muito legal C ++ amostra, literalmente, o "Olá Mundo !" de algoritmos genéticos.

Eu assim decidiu re-code a coisa toda em C # e este é o resultado.

Agora estou me perguntando:? há alguma aplicação prática ao longo das linhas de gerar uma seqüência alvo a partir de uma população de seqüências aleatórias

Editar : meu amigo no twitter apenas twittou que "é útil para coisas tipo de transcrição como a tradução não tem de ser macaco de" . Eu gostaria de ter uma pista.

Foi útil?

Solução

Existe alguma aplicação prática ao longo das linhas de gerar uma seqüência alvo a partir de uma população de seqüências aleatórias?

Claro. Imaginar qualquer cenário em que você sabe como avaliar a aptidão de uma cadeia particular, e em que as escolhas são discretos e constrangidos de alguma forma:

  • Escolher nomes pronunciáveis ??( "Xhjkxc" tem baixa aptidão; "Artekzo" tem alta fitness)
  • Tentando uma série de jogadas de xadrez
  • Adivinhar a combinação de um cofre, supondo que você pode dizer o quão perto você está para desbloquear cada copo
  • Escolher números de telefone que avaliam a palavras (por exemplo, "843-2378" tem alta aptidão porque explicita "THE-BEST")

Outras dicas

No. Cada vez que você executar o GA, você está dando a resposta eventual. Isso é ótimo para mostrar como um GA funciona e para mostrar como pode ser poderoso, mas ele não tem qualquer finalidade além disso.

Você pode escrever um EA que escreve código em uma linguagem dinâmica como IronPython com o objetivo de criar um código que um) executa sem bater e b) analisa o mercado de ações e inteligentemente compra e vende ações.

Isso é um take muito simplista sobre o que seria necessário, mas é possível. Você precisaria de uma máquina que fornece uma série de métodos para o código de IronPython (indicadores técnicos, etc) e um banco de dados de carrapatos.

Além disso, seria inteligente para não só gerar qualquer código aleatório de idade, para que você formatar seu disco rígido. Você precisa de uma caixa de areia, e você precisa limitar os namespaces que são acessível, e você precisa fornecer um limite de tempo para evitar loops infinitos. Você também pode fornecer diretrizes Symantic que lhe permitem escolher palavras-chave aprovadas apropriadas em vez de apenas amarrando letras aleatórias juntos -. Esta evolução iria acelerar bastante

Então, eu estava envolvido com um projeto que fez tudo, mas a EA. Tivemos uma antena parabólica que tem em tempo real estoque carrapatos do NASDAQ, um serviço para negociação que tinha uma API, e uma decisão primitiva fazer "cérebro" que tomaram decisões como os carrapatos entrou.

Infelizmente, um dos parceiros virado para fora, largou o emprego, bifurcada o projeto (tem o seu próprio prato, etc), e negociação começou com a lógica de que não estava pronto. Ele perdeu um monte de dinheiro. Acontece que para algumas pessoas esse tipo de projeto é apenas um passo longe de jogo comum. Mas de qualquer maneira, o tipo de projeto de fracassou depois disso. Evoluindo a parte lógica é o elo perdido embora. E eu sei que existem pessoas lá fora que fazem este tipo de coisa.

Eu tenho usado GA em 2 problemas de pesquisa da vida real.

Um deles era um problema de otimização de energia (número de maximização de aparelhos ligados, atendendo a restrição de energia disponíveis e garantia de serviço para cada aparelho)

Outro foi para a otimização de rede de rádio, maximizando a área de cobertura dado um orçamento equipamentos fixos

GA tem uma desvantagem principal, que normalmente trabalha com velocidade genética então usá-lo em alguns graves projectos dependentes do tempo é bastante arriscado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top