Análise de Desempenho de Algoritmos ANADI - Trabalho prático 3
Sara Freitas
Tiago Moreira
Departamento de Engenharia Informática ISEP Porto, Portugal 1130489@isep.ipp.pt
Departamento de Engenharia Informática ISEP Porto, Portugal 1100673@isep.ipp.pt
A análise de algoritmos é uma área subjacente à ciência computacional, que consiste na análise de desempenho de algoritmos. Este trabalho evidencia algoritmos heurísticos, estocásticos e, apresenta ainda, os algoritmos da colónia das formigas e das abelhas. Destes foram recolhidos dados para serem posteriormente analisados.
conjetura sobre uma característica de uma população de forma a poder rejeita a hipótese inicial (H0).
Palavras-chave: Análise de desempenho, algoritmo de otimização,
I.
INTRODUÇÃO
No âmbito da unidade curricular de ANADI (Análise de dados em Informática) foi proposto um trabalho sobre análise desempenho de algoritmos. Este trabalho tem como objetivos a análise a algoritmos que demonstram elevado desempenho, análise de desempenho de técnicas de otimização e análise da influência dos parâmetros no desempenho das técnicas de otimização. Para a realização deste trabalho será usado o R para cálculos e demonstração de gráficos para ajudar a entender os valores obtidos. Com isto pretendemos demonstrar o conhecimento adquirido nas aulas de ANADI para análise destes mesmos dados. II. ENQUADRAMENTO TEÓRICO O R é um programa que disponibiliza um conjunto integrado de ferramentas computacionais que permitem manipular e analisar dados, efetuar cálculos numéricos e permite produzir gráficos de qualidade. É também uma linguagem de programação bem desenvolvida e orientada a objetos, isto é, as estruturas de dados manipuladas são armazenadas na memória ativa do computador na forma de objetos, que têm um nome e aos quais se podem aplicar ações. É um software livre que pode ser transferido e distribuído gratuitamente de acordo com a licença GNU. O R está disponível para as plataformas UNIX, Windows e MacOS. A. Teste de Hipóteses Um teste de hipóteses consiste num procedimento estatístico que sustenta uma dada hipótese, isto é, analisa a
O primeiro passo para se realizar um teste de hipótese é definir não só a hipótese nula (H0), como também a hipótese alternativa (H1). Tendo em conta as hipóteses definidas, podem ser realizados dois tipos de testes: Unilaterais e Bilaterais. Nos primeiros, H1 apenas contempla possibilidades à direita ou à esquerda de H0, enquanto que nos segundos, H1 pode contemplar possibilidades tanto à direita como à esquerda de H0. Posto isto, realizando o teste existem dois tipos de decisões que nos permitem tirar conclusões: Rejeitar a hipótese nula H0 ou não rejeitar a hipótese nula H0. 1) Testes Paramétricos Os testes paramétricos envolvem parâmetros populacionais, isto é, qualquer medida que descreve a população, como por exemplo, a média, variância ou desvio-padrão. Neste tipo de teste, a distribuição amostral da estatística prossupõem uma forma particular da distribuição populacional. Os valores analisados têm de resultar de medidas efetuadas, pelo menos, ao nível intervalar de modo a ser possível realizar operações aritméticas. 2) Testes Não Paramétricos Os testes não paramétricos não necessitam de requisitos tão fortes, como a normalidade, como os testes paramétricos, para serem usados. São também indicados quando as amostras são pequenas. São usados quando a amostra tem uma distribuição que não é normal ou quando, apesar da amostra ter uma dimensão superior a 30, se opta por conclusões conservadoras. A desvantagem destes testes é que não são tão potentes quanto os testes paramétricos, ou seja, com os testes não paramétricos não se encontram tantas diferenças entre os dados, quando essas diferenças realmente existem. B. Correlação e Regressão 1) Regressão linear simples A regressão linear simples é um método que permite estudar a relação linear entre duas variáveis quantitativas X e
1
Y, quando dispomos de n pares de valores observados (xi , yi) destas variáveis. O modelo de regressão linear pressupõe que os valores residuais são mutuamente independentes e têm uma distribuição (normal) com variância constante e média zero. Deve ser feita uma análise dos resíduos para se verificar os pressupostos do modelo. 2) Regressão linear multipla A regressão múltipla permite estudar a relação entre uma variável dependente quantitativa Y e um conjunto de variáveis independentes X1, X2, …, Xk. O modelo de regressão linear múltipla é uma generalização do modelo de regressão linear simples. C. Análise do Estado da Arte 1) Análise de Desemprenho A Análise de desempenho de técnicas de otimização é constituída por um conjunto de testes, que incluem aspetos como objetivos, qualidade das soluções, esforço computacional, interpretação de resultados, entre outros. A Análise da influência dos parâmetros no desempenho das técnicas de otimização avalia a relação entre regras usadas com o objetivo de obter a solução ótima do problema. 2) Algoritmos de Otimização Algoritmos heurísticos Algoritmos heurísticos são algoritmos que procuram produzir uma solução aproximada do ideal no menor tempo possível. As soluções produzidas nem sempre são as soluções perfeitas, levando à perda da precisão a favor de reduzir o tempo de computação, resolvendo problemas que seriam quase impossíveis de resolver, devido ao elevado tempo para atingir a solução perfeita. Algoritmos estocásticos Algoritmos estocásticos são algoritmos que utilizam variáveis aleatórias, dentro de limites pré-definidos, de modo a atingir a solução ótima rapidamente. Dado que a utilização dos parâmetros não é linear, o tempo de computação varia consoante as variáveis utilizadas, sendo que a sua confiabilidade não é muito alta. Algoritmo colónias de formigas O algoritmo de colónia de formigas é uma heurística que foi formulada na década de 1990 por Marco Dorigo. A ideia foi inspirada no comportamento de formigas reais, relacionado com as suas habilidades em encontrar o caminho mais curto entre o ninho e o alimento. Esta pesquisa é efetuada através da exploração das marcas de feromona, substância química libertada pelas formigas durante seu percurso. Devido a este comportamento cooperativo e eficaz de busca, elas vão construindo alternativas melhores no caminho para encontrar o alimento. Este comportamento foi então simulado em algoritmos de
otimização, conhecidos como otimização com colónia de formigas (ACO, do inglês Ant Colony Optimization). Algoritmo das abelhas Uma colónia de abelhas pode espalhar-se num raio de 10 km para que seja explorado um maior número de fontes de comida. Uma colónia próspera coloca as suas abelhas operárias em bons campos. Inicialmente, os campos de flores que contêm muito néctar e pólen devem ser visitados com maior frequência e por mais abelhas; aqueles que não têm tanta abundância têm um menor esforço, logo uma procura menor. O processo de procura por comida começa na colónia com as abelhas operárias sendo enviadas para locais promissores. Estas movem-se aleatoriamente de um local para outro. Na época da colheita (captação de comida), uma colónia continua a explorar, mantendo uma percentagem da sua população como abelhas operárias. O algoritmo das abelhas é um algoritmo de otimização inspirado pelo comportamento natural das mesmas na procura de comida, para encontrar a melhor solução. Escalonamento Job‐shop O escalonamento Job‐shop (JSP) pode ser descrito da seguinte forma. Um conjunto de M máquinas e um conjunto de J tarefas são dadas. Para o j‐ésima tarefa(j=1, ..., J) consistindo em uma sequência ordenada de operações de um conjunto O={...ojm...}. Cada operação ojm pertencente a O, pertence a tarefa j e tem que ser processada na máquina m por djm vezes consecutivas. N=|O| é o número total de operações. O problema é atribuir as operações aos intervalos de tempo sem que se processem duas tarefas ao mesmo tempo na mesma máquina, e o Cmax seja minimizado.
III. ESTUDO ESTATISTICO Este capítulo baseia-se na análise de desempenho do funcionamento de alguns algoritmos após a aplicação de técnicas de otimização com o objetivo de resolver um conjunto de instâncias dos problemas de escalonamento e na análise da influência de alguns parâmetros no desempenho de técnicas de otimização. Assim sendo, primeiramente, elaboramos uma lista de teste que achamos essenciais para tirar as conclusões pretendidas, em seguida, analisamos os resultados obtidos. A. Análise de desempenho de técnicas de otimização Foi fornecido um ficheiro com os resultados de 3 técnicas de otimização na resolução de várias instâncias do problema de escalonamento do algoritmo Job-Shop. Esse ficheiro continha informação sobre a minimização de tempo de conclusão de todas as tarefas e os tempos computacionais obtidos. Assim sendo, analisando o mesmo, pretende-se que seja analisado o desempenho das técnicas de três técnicas de otimização apresentadas e verificar a existência de uma diferença significativa no desempenho das técnicas de
2
otimização, indicando qual das três é a mais eficiente e eficaz. Primeiramente, foram instalados alguns packages necessários para conseguir executar determinadas funções que achamos relevantes, tais como, moments, ggplot2, reshape e PMCMR. Em seguida, para conseguirmos iniciar o nosso estudo, lemos os dados do ficheiro fornecido, colocando-os numa variável. Para obtermos uma ideia geral dos dados fornecidos, geramos gráficos do tempo de conclusão das tarefas, assim como dos tempos computacionais. Para analisar o desempenho das técnicas de otimização, com base na lista de testes que achamos serem uma mais valia, começamos por analisar a normalidade do tempo de conclusão das tarefas. Assim sendo, calculamos para cada técnica a média e o desvio padrão para conseguirmos utilizar o teste KS. H0: A amostra segue uma distribuição normal H1: A amostra não segue uma distribuição normal Uma vez que o p-value de todas as técnicas é maior do que 0.05, não se rejeita a hipótese nula, ou seja, as três técnicas de otimização seguem uma distribuição normal. Consideramos o erro relativo um fator importantíssimo nesta análise. Calculamos o erro relativo dos tempos de conclusão de cada uma das técnicas. Neste cálculo, foram criados três vetores para guardar o erro de cada uma das três técnicas existentes e obtivemos através de um ciclo iterativo, com limite máximo igual ao número de linhas do ficheiro de leitura, os valores do erro em cada instância. Para isso, foi usada a seguinte fórmula: Erro relativo = (Cmax-Cmax.optimo)/Cmax.optimo Os cálculos seguintes, uma vez que seria bastante mais interessantes, foram realizados sobre o erro relativo de cada instância. Assim foi possível tirar conclusões que de outra forma não seriam alcançadas. Em seguida, realizamos um teste para verificar se o erro relativo das diferentes técnicas de otimização segue ou não uma distribuição normal. Para isso, usamos o teste de Shapiro. H0: A amostra segue uma distribuição normal H1: A amostra não segue uma distribuição normal Podemos assim concluir que, uma vez que o p-value de todos os testes é maior que 0.05, todas as populações seguem uma distribuição normal, uma vez que, não foi possível rejeitar H0. Uma vez que o grau de confiança escolhido foi de 95%, é importante saber qual o intervalo de confiança onde estará presente essa parte dos dados. Para isso, realizamos um t.test para cada vetor com os erros das técnicas de otimização.
Afim de saber qual a técnica de otimização mais eficaz e eficiente, foram realizados variadíssimos testes. Começamos então por relacionar a média global do erro relativo com a média do erro de cada uma das técnicas e verificar se estas se encontram ou não abaixo da media geral. H0: média = mediaErros H1: média< mediaErros Os valores de p-value obtidos foram os seguintes:
Podemos assim concluir que, apesar de não se rejeitar H0, isto é, nenhuma das técnicas ter diferença significativa da média global, a técnica 3 é aquela que se encontra mais perto de alcançar esse objetivo. Isto poderá assim querer dizer que é a técnica mais eficaz. Para conseguirmos comprovar os resultados obtidos, decidimos realizar o teste de Wilcox. Para isso, é necessário que, para além da distribuição ser normal, esta seja também simétrica. Assim sendo, necessitamos de testar a simetria das diferentes amostras. Para que uma distribuição seja simétrica, o módulo do valor obtido tem de ser menor do que 1, sendo moderadamente assimétrica (o que permite realizar o teste de wilcox na mesma) quando este é menor que 0.1. Através dos resultados obtidos, concluímos que a distribuição do erro das diferentes técnicas segue uma distribuição moderadamente assimétrica e podemos assim passar para o teste seguinte. H0: média= mediaGeral H1: media<mediaGeral No teste de wilcox, podemos concluir através dos valores de p-value obtidos que as técnicas 1 e 2 não rejeitam H0, uma vez que o seu p-value é maior que 0.05. Concluímos assim que a técnica mais eficaz é a técnica 3 pois a media dos seus erros é inferior à média dos erros de todas as ouras. A fim de analisar a variância das diferentes técnicas, realizamos um teste não paramétrico com 3 amostras: o teste de Friedman. H0: nA=nB=nC H1:existe pelo menos uma amostra com diferenças significativas Com este teste, ao obtermos um p-value menor que 0.05, rejeitamos H0 e podemos concluir que existe pelo menos uma amostra com diferença significativa.
3
Para comprovação da informação descoberta, realizamos o teste de sinal: Teste 1: H0: ErroCmax1 =ErroCmax2 H1: ErroCmax1 < ErroCmax2 Teste 2: H0: ErroCmax3 =ErroCmax1 H1: ErroCmax3 < ErroCmax1 Comparando os erros dois a dois, concluímos que o erro da técnica 3 é menor que a 1 que por sua vez é menor que a 2. Para estudar qual o algoritmo mais eficiente, debruçamo-nos agora sobre a análise dos tempos computacionais. Assim sendo, começamos por visualizar os dados de maneira gráfica. Em seguida iniciamos uma série de testes que nos conduziram ao objetivo final. Inicialmente estudamos a normalidade das amostras. Uma vez mais, calculamos a média e o desvio padrão e utilizamos o teste KS.
H1 : TC 3 < TC 2 Teste 2: H0 : TC1 = TC 3 H1 : TC1 < TC3 Teste 3: H0 : TC1 = TC2 H1 : TC1 < TC2 Concluímos então que, em todos os testes, o pvalue é menor que 0.05 o que faz com que se rejeite H0, por isso o tempo computacional da técnica três é menor que o tempo computacional da técnica dois, o tempo computacional da técnica um é menor que o tempo computacional da técnica dois e o tempo computacional da técnica um é menor do que da técnica dois. Reunindo todos estes resultados, e calculando a média dos tempos computacionais de cada técnica, temos os seguintes valor:
H0 : A população segue uma distribuição normal H1 : A população não segue uma distribuição normal Podemos concluir, uma vez que o p-value em todas as amostras é menor do que 0.05, estas não seguem uma distribuição normal. Continuando, calculamos os intervalos de confiança, ou seja, o intervalo onde estão presentes 95% dos dados. Para isso usamos um t.test. A fim de comparar as variáveis para serem tiradas mais conclusões, decidimos realizar o teste de wiloxon, no entanto, este exige que a distribuição seja simétrica. Para analisarmos a simetria, realizamos o teste de skewness. Uma vez que, todos os dados possuem um p-value maior que um, estes não seguem uma distribuição simétrica. Desta forma, não é permitido realizar o teste de Wilcoxon. Através do teste de Friedman, considerando as seguintes hipóteses: H0: nA = nB = nC H1: existe pelo menos uma amostra com diferênça significativa Concluímos que, uma vez que o valor de p-value foi menor que 0.05),existe pelo menos uma amostra com diferença significativa, dado que foi possível rejeitar H0. Posto isto, a fim de ordenar uma comparação, realizamos o teste do sinal para duas amostras comparando e ordenando os tempos computacionais das diferentes técnicas. Assim, consideramos as seguintes hipóteses nas três comparações realizadas: Teste 1: H0 : TC3 = TC2
Tendo em conta tudo que foi referido anteriormente, é possível observar que a técnica três é a mais eficiente, pois tem um valor médio de tempo computacional inferior à média dos restantes tempos computacionais. Por último, vamos testar a correlação das amostras. Para isso, iniciamos um teste a normalidade das amostras. Concluímos, devido ao valor do p-value as amostras não seguem uma distribuição normal. Posto isto, não podemos realizar o teste de correlação de Pearson, mas sim o de Spearman, obtendo o valor de rho. Primeiramente, verificamos se existe alguma relação entre as variáveis. H0: p (rho) = 0 (as variáveis são independentes) H1: p (rho) > 0 (existe uma relação positiva entre as varáveis) Uma vez que, p-value= 2.2e-16 < 0.05 rejeita-se H0 pelo que com um nível de 5% se conclui que existe uma associação positiva entre as duas variáveis, apresentando uma associação muito forte com rho = 0.973404. Continuando, verificamos a relação entre o valor ótimo e os valores de cada algoritmo. Para isso usamos as seguintes hipóteses. H0: não existe uma relação entre o valor ótimo e o valor do algoritmo (variáveis independentes) H1: existe uma relação entre o valor ótimo e o valor do algoritmo
4
Uma vez que em todos os teste o valor de p-value deu menos que 0.05, rejeitamos H0 e concluímos assim que, existe uma relação entre as duas variáveis relação que e suficientemente forte tendo em conta o tau. B. Análise da influência dos parâmetros no desempenho das técnicas de otimização. Para este capítulo, foram fornecidos dois ficheiros com varias instancias de 10 corridas do algoritmo da Pesquisa Tabu (PT). Um dos ficheiro parte de uma solução inicial, geradas pelos mecanismos MGSI1 e MGSI2 apresentando a melhor, pior e media das soluções obtidas nas 10 corridas. O outro ficheiro, considera as instancias com vizinhanças geradas pelos mecanismos MGV1 e MGV2 apresentando também o pior, melhor e media das soluções obtidas nas 10 corridas. 1) Mecanismo de geração da solução inicial Nested ponto, será analisada a influência do mecanismo de geração da solução inicial no desempenho da técnica de otimização. Para isso, começamos por ler os dados do ficheiro csv fornecido e visualizar alguns graficos para ver o comportamento geral das variáveis. Em seguida, dividimos os testes em três fases: Análise dentro do mecanismo gerador, comparação dos mecanismos geradores e comparação do tempo computacional dos dois mecanismos geradores. Na primeira fase, calculamos o erro do melhor, do médio e do pior para conseguirmos, comparando com a média geral de todos os erros, realizar um t.test para perceber se a melhor media das soluçoes obtidas nas 10 corridas, era efetivamente a melhor. Para isso consideramos as seguintes hipóteses: H0: média = mediaErros H1: média< mediaErros Um vez que os resultados obtidos para o p-value foram os seguintes: para o médio 0.153, para o pior 0.9978 e para o melhor 2.2e-16, podemos concluir que de facto a melhor média de soluções obtidas nas 10 corridas é de facto a melhor, uma vez que, como p-value é menor que 0.05, rejeitando H0, provamos que o valor é inferior à média geral. Realizamos os mesmo testes para o mecanismo de distribuição dois e tiramos as mesmas conclusões, de facto a melhor média de soluções obtidas nas 10 corridas é a melhor. Passando para a segunda fase, comparamos o mecanismo de distribuição um com o mecanismo de distribuição dois. Realizando o mesmo teste anteriormente descrito, concluímos que o mecanismo dois possui o melhor melhor, o melhor médio e não conseguimos tirar conclusoes quanto ao melhor pior, uma vez que o p-value dos dois deu exactamente igual.
Na Terceira e ultima fase, verificamos a normalidade e simetria dos dados através dos teste de KS e skewness respetivamente. Onde concluímos que as amostras seguem uma distribuição normal, uma vez que o p-value foi menor que 0.05 em todos os testes e que são simetricas pois o valor do teste foi sempre inferior a um. Por ultimo, para estudar a influência do mecanismo de geração no funcionamento do algoritmo, comparamos as medias do tempo computacional.
Assim , podemos concluir que o mecanismo de geração dois, influenciou positivamente o algoritmo, em comparação com o mecanismo de geração um. Podemos reparar na tabela que a do tempo médio computacional tendo em conta os dois mecanismos varia significativamente. 2) Mecanismo de geração de desempenho da técnica de otimização
vizinhanças
no
Para analisar este mecanismo de geração, seguimos a mesma lógica do ponto anterior. Neste ponto, sera analisada a influencia do mecanismo de geração de vizinhança no desempenho da técnica de otimização. Para isso, começamos por ler os dados do ficheiro csv fornecido e visualizar alguns gráficos para ver o comportamento geral das variaveis. Em seguida, dividimos os testes em três fases: Análise dentro do mecanismo gerador, comparação dos mecanismos geradores e comparação do tempo computacional dos dois mecanismos geradores. Na primeira fase, calculamos o erro do melhor, do médio e do pior para conseguirmos, comparando com a media geral de todos os erros, realizar um t.test para perceber se a melhor media das soluções obtidas nas 10 corridas, era efetivamente a melhor. Para isso consideramos as seguintes hipóteses: H0: média = mediaErros H1: média< mediaErros Um vez que os resultados obtidos para o p-value foram os seguintes: para o médio 0.2309, para o pior 0.7658 e para o melhor 4.046e-10, podemos concluir que de facto a melhor media de soluções obtidas nas 10 corridas é de facto a melhor, uma vez que, como p-value é menor que 0.05, rejeitando H0, provamos que o valor é inferior à media geral. Realizamos os mesmo testes para o mecanismo de distribuição dois e tiramos as mesmas conclusões, de facto a
5
melhor média de soluções obtidas nas 10 corridas é a melhor. Passando para a segunda fase, comparamos o mecanismo de distribuição um com o mecanismo de distribuição dois. Realizando o mesmo teste anteriormente descrito, concluimos que o mecanismo dois possui o melhor melhor, o melhor médio e não conseguimos tirar conclusões quanto ao melhor pior, uma vez que o p-value dos dois deu exactamente igual. Na Terceira e ultima fase, verificamos a normalidade e simetria dos dados através dos teste de KS e skewness respetivamente. Onde concluimos que as amostras seguem uma distribuiçao normal, uma vez que o p-value foi menor que 0.05 em todos os testes e que são simétricas pois o valor do teste foi sempre inferior a um. Por ultimo, para estudar a influência do mecanismo de geração no funcionamento do algoritmo, comparamos as médias do tempo computacional.
Assim, podemos concluir que o mecanismo de geração dois, influenciou positivamente o algoritmo, em comparação com o mecanismo de geração um. Podemos reparar na tabela que desta vez a diferença entre o tempo medio computacional dos mecanismo não é tão significativa como no grupo anterior. O valor do médio do mecanismo de geração dois está ao nível do valor do melhor no mecanismo de geração um. IV. CONCLUSÃO REFERÊNCIAS http://pt.slideshare.net/rosariocacao/testes-parametricos-enao-parametricos-3396639 https://pt.wikipedia.org/wiki/Anthophila#A_vida_das_abelh as http://www.lume.ufrgs.br/handle/10183/36943 https://pt.wikipedia.org/wiki/Col %C3%B4nia_de_formigas_(otimiza%C3%A7%C3%A3o) https://moodle.isep.ipp.pt/pluginfile.php/105208/mod_resou rce/content/3/3-THP.pdf
6
Anexos
Figure 1 Summary dados lidos.
Figure 2 Normalidade Cmax1.
7
Figure 3 Normalidade Cmax2.
Figure 4 Normalidade Cmax3.
8
Figure 5 Comparação com boxplot dos valores.
Figure 6 Comparação com plot dos valores.
9
Figure 7 Comparação dos valores.
Figure 8 histograma erroCmax1.
10
Figure 9 histograma erroCmax2.
Figure 10 histograma erroCmax3.
11
Figure 11 Normalidade ErroCmax1.
Figure 12 Normalidade ErroCmax2.
12
Figure 13 Normalidade ErroCmax3.
Figure 14 Comparação do erro relativo.
13
Figure 15 Comparação do erro relativo.
Figure 16 Gráfico normalidade TC1.
14
Figure 17 Grรกfico normalidade TC2.
Figure 18 Grรกfico normalidade TC3.
15
Figure 19 boxplot TC1, TC2, TC3.
Figure 20 Comparação TC's.
16
Figure 21 Comparação TC's.
Figure 22 Histograma TC1.
17
Figure 23 Histograma TC2.
Figure 24 Histograma TC3.
18
Figure 25 Comparação WT MG1.
Figure 26 Comparação WT MG2.
19
Figure 27 Comparação WT Médio.
Figure 28 Comparação WT melhor.
20
Figure 29 Comparação WT pior.
Figure 30 Histograma Erro do melhor MG1.
21
Figure 31 Histograma Erro do melhor MG2.
Figure 32 Histograma Erro do medio MG1.
22
Figure 33 Histograma Erro do medio MG2.
Figure 34 Histograma Erro do pior MG1.
23
Figure 35 Histograma Erro do pior MG2.
Figure 36 Comparação do TC.
24
Figure 37 Comparação MG1 com vizinhança.
Figure 38 Comparação MG2 com vizinhança
25
Figure 39 Comparação MG1 e MG2 medio.
Figure 40 Comparação MG1 e MG2 melhor.
26
Figure 41 Comparação MG1 e MG2 pior.
27