Como analisar experimentalmente o desempenho de um algoritmo genético?

7

Eu tenho um algoritmo genético para um problema de otimização. Plotei o tempo de execução do algoritmo em várias execuções na mesma entrada e nos mesmos parâmetros (tamanho da população, tamanho da geração, cruzamento, mutação).

O tempo de execução muda entre as execuções. Isso é normal?

Também notei que, contra a minha expectativa, o tempo de execução às vezes diminui, em vez de aumentar quando o executo em uma entrada maior. Isso é esperado?

Como posso analisar o desempenho do meu algoritmo genético experimentalmente?

Rafael
fonte
5
AGs e heurísticas geralmente são imprevisíveis e pode ser muito difícil entendê-las ou analisá-las teoricamente. Com base nos dados que você fornece, acho que ninguém pode responder melhor do que "provavelmente é normal, não sei". Você pode tentar executar seu GA com os mesmos parâmetros várias vezes e registrar, digamos, o número médio de iterações. Em seguida, ajuste os parâmetros e tente novamente.
Juho
2
Sim, é normal, é um algoritmo heurístico (não é um algoritmo não determinístico , que tem um significado técnico, são conceitos diferentes). Também é normal que qualquer algoritmo tenha um desempenho melhor em algumas entradas maiores do que em algumas entradas menores, porque elas podem ser mais simples de resolver, tamanho, se não o único fator determinante. Não se pode dizer muito sobre o desempenho de um algoritmo em instâncias práticas geralmente diferentes de como eles executam e conjuntos de dados específicos e como eles se comparam com outros algoritmos para o problema nesses conjuntos de dados.
Kaveh
você não mencionou como monitora seu tempo de execução. além do que todo mundo disse sobre heurística ser difícil de prever, se você não medir o esforço computacional real (por exemplo, determinando o tempo de execução de acordo com o relógio do computador), é muito provável que você obtenha resultados estranhos ...
Ron Teller
11
Ainda não entendi bem a questão. Qual é a medida de desempenho em que você está interessado? Que tipo de resultado você procura depois que não pode ser obtido executando N vezes e calculando a média?
Raphael

Respostas:

8

A abordagem típica é executar várias execuções do algoritmo evolutivo (EA) e plotar o desempenho médio ao longo do tempo (desempenho médio da média da população NÃO com melhor desempenho individual ).

Uma boa regra geral é realizar no mínimo 30 execuções (é claro que 50 a 100 execuções são melhores).

A média é melhor do que o melhor valor alcançado em um conjunto de execuções, mas a variação também deve ser levada em consideração.

Existem alguns bons exemplos no site de Randy Olson :


aptidão média de ambos os algoritmos em várias repetições

A adequação média de ambos os algoritmos ao longo de várias réplicas. A partir deste gráfico, concluiríamos que nosso algoritmo tem desempenho melhor que o melhor algoritmo atual em média.

aptidão média com um intervalo de confiança de 95%

A aptidão média com um intervalo de confiança de 95% para cada algoritmo. Este gráfico mostra que nosso algoritmo não tem um desempenho melhor do que o atual e apenas parecia ter um desempenho melhor em média devido ao acaso.


A análise básica de como calcular um intervalo de confiança para uma média da população é a seguinte:

  1. Identifique a média da amostra x¯. Enquantox¯ é diferente de μ, média da população, eles ainda são calculados da mesma maneira:

    x¯=xEun
  2. Identifique o desvio padrão da amostra (corrigido) s:

    s=Eu=1 1n(xEu-x¯)2n-1 1
    sé uma estimativa do desvio padrão da populaçãoσ.
  3. Calcular o valor crítico ,t, da distribuição Student-t. Esse valor depende do nível de confiança,C, e o número de observações, n.

    O valor crítico é encontrado na tabela de distribuição t (a maioria dos livros de estatística o lista). Nesta tabelat está escrito como

    t(α,r)
    Onde r=n-1 1são os graus de liberdade (encontrados subtraindo um do número de observações) eα=1 1-C2é o nível de significância .

    Uma maneira melhor de uma crítica totalmente precisa tvalue é a função estatística implementada em planilhas (por exemplo, T.INV.2Tfunção ), ambientes de computação científica (por exemplo, SciPy stats.t.ppf), bibliotecas de idiomas (por exemplo, C ++ e boost::math::students_t).

  4. Conecte os valores encontrados nas equações apropriadas:

    (x¯-tsn,x¯+tsn)
  5. O passo final é interpretar a resposta . Como a resposta encontrada é um intervalo com um limite superior e inferior, é apropriado afirmar que, com base nos dados fornecidos, a média real da população está entre o limite inferior e o limite superior com o nível de confiança escolhido.


Quanto mais os intervalos de confiança de dois algoritmos se sobrepuserem, maior a probabilidade de os algoritmos executarem o mesmo (ou não fizemos amostragem suficiente para discriminar entre os dois). Se os intervalos de confiança de 95% não se sobrepuserem, o algoritmo com o desempenho médio mais alto terá um desempenho significativamente melhor.

Na EA, a distribuição de origem nunca é normalmente normal e o que foi dito até agora formalmente se aplica apenas se for uma distribuição normal!

Na verdade, ainda diz muitas coisas. A tabela a seguir resume o desempenho dos intervalos t em quatro situações:

                             Normal curve | Not Normal curve
Small sample size (n < 30)      Good      |       Poor
Larger sample size (n ≥ 30)     Good      |       Fair

Para obter respostas mais precisas, estatísticas não paramétricas são o caminho a seguir (consulte Introdução à Estatística para Análise Experimental da CE por Mark Wineberg e Steffen Christensen para obter mais detalhes).

manlio
fonte
Essa resposta deve ser aceita e merece muito mais votos.
Kevin Dreßler 16/07/19
1

Resposta: você analisa o desempenho estatisticamente.

Por exemplo, veja a figura 3 deste documento: Uma estrada real de blocos de construção em que o cruzamento é comprovadamente essencial onde o desempenho de vários GA é comparado entre si.

O gráfico mostra alterações no condicionamento físico (eixo Y) versus número da iteração (eixo X). Cada algoritmo é executado várias vezes e a aptidão média, mínima e máxima são mostradas no gráfico . Portanto, mostrar claramente que algumas variações de GA têm melhor desempenho do que outras.

A convergência assintótica de aptidão sobre a iteração, conforme sugerido pela resposta de vzn, também é muito útil para a maioria dos casos.

...

(Exceto quando o condicionamento físico não converge quando você tem uma função de condicionamento físico em evolução).

Apiwat Chantawibul
fonte
0

a estratégia básica é representar graficamente a função de condicionamento físico ao longo do tempo. pode-se representar graficamente a adequação da melhor solução ou adequação média das soluções, a pior solução, etc. a melhor / pior exibirá propriedades semelhantes às escadas e a média mostrará uma convergência assintótica em direção ao ótimo alcançável pela AG. geralmente não existe realmente um "tempo de execução" a priori associado à busca de uma solução para os GAs; normalmente, o algoritmo é finalizado em um ponto "suficientemente bom" pela inspeção dessa curva assintótica.

veja, por exemplo, gráficos no final desta apresentação de slides:

vzn
fonte
Como determinar o tempo necessário para convergir para uma solução "suficientemente boa" com base no tamanho da entrada?
soandos