Pergunta

Vamos imaginar que tenho uma função desconhecida que desejo aproximar por meio de algoritmos genéticos.Para este caso, assumirei que é y = 2x.

Eu teria um DNA composto de 5 elementos, um y para cada x, de x = 0 a x = 4, no qual, depois de muitas tentativas e cálculos, chegaria perto de algo do tipo:

melhor_adn = [0, 2, 4, 6, 8]

Tenha em mente que não sei de antemão se é uma função linear, um polinômio ou algo bem mais feio. Além disso, meu objetivo não é inferir do best_adn qual é o tipo de função, eu só quero esses pontos, então eu pode usá-los mais tarde.

Este foi apenas um exemplo de problema.No meu caso, em vez de ter apenas 5 pontos no DNA, tenho algo como 50 ou 100.Qual é a melhor abordagem com GA para encontrar o melhor conjunto de pontos?

  1. Gerando uma população de 100, descartar os 20% piores
  2. Recombinar os 80% restantes?Como?Cortando-os em um ponto aleatório e em seguida, montando o primeiro parte da ADN do pai com o segunda parte do ADN da mãe?
  3. Mutação, como devo definir em esse tipo de mutação do problema?
  4. Vale a pena usar o Elitismo?
  5. Qualquer outra ideia simples que valha a pena usar ao redor?

Obrigado

Foi útil?

Solução

A adaptação gaussiana geralmente supera os algoritmos genéticos padrão.Se você não quiser escrever seu próprio pacote do zero, o pacote Mathematica Global Optimization é EXCELENTE - usei-o para ajustar uma função não linear realmente desagradável, onde os instaladores padrão falharam miseravelmente.

Editar:Artigo da Wikipédia

Se você procurar impressões dos artigos listados no artigo, poderá encontrar white papers e implementações.Em geral, porém, você deve ter alguma ideia de como é o espaço de solução para maximizar a função de condicionamento físico.Se o número de variáveis ​​for pequeno, ou o número de máximos locais for pequeno ou eles estiverem conectados/inclinados até um máximo global, os mínimos quadrados simples funcionam bem.Se a área ao redor de cada máximo local for pequena (ou seja, você precisa obter uma solução muito boa para atingir a melhor, caso contrário, você atingirá uma solução ruim), então serão necessários algoritmos mais sofisticados.

A escolha de variáveis ​​para um algoritmo genético depende de como será o espaço de soluções.

Outras dicas

Geralmente você só os descobre por experimentação ... talvez escrevendo um GA para ajustar seu GA.

Mas isso, além, não entendo o que você está perguntando. Se você não sabe qual é a função e também não sabe os pontos de estar, como determina a aptidão?

Do meu entendimento atual do problema, isso é melhor instalado por uma rede neural.

editar:

2. Recombina os 80%restantes? Como? Cortando -os em um ponto aleatório e depois montando a primeira parte da AND do pai com a segunda parte do AND da mãe?

Isso é chamado de crossover. Se você quiser ser molho, faça algo como escolher um ponto de partida aleatório e trocar um comprimento aleatório. Por exemplo, você tem 10 elementos em um objeto. Escolha aleatoriamente um ponto x entre 1 e 10 e trocar x..10 randa%10+1 .. Você obtém a foto ... apimentá-la um pouco.

3.Mutação, como devo definir nesse tipo de mutação de problemas? Geralmente, isso depende mais do que é definido como uma solução legal do que qualquer outra coisa. Você pode fazer mutação da mesma maneira que se cruzar, exceto que o preenchem com dados aleatórios (que são legais) em vez de trocar com outro espécime ... e você faz isso em um MUITO DE menor taxa.

4. Vale a pena usar o elitismo? experimente e descubra.

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