• Nenhum resultado encontrado

4 IMPLEMENTAÇÃO E RESULTADOS PARA O BRKGA 75

4.3 IMPLEMENTAÇÃO COMPUTACIONAL DO BRKGA PARA O CASO

4.4.3 Resultados computacionais parciais

Como descrito anteriormente, a implementação computacional do BRKGA foi realizada utilizando-se a linguagem C por meio da ferramenta de desenvolvimento Open Source DevC++, compilador GCC 4.8.1 e os resultados computacionais foram obtidos utilizando um computador com CPU Intel Core i3-M380 @2.53 GHz, com o Sistema Operacional Microsoft Windows 7 Professional (32 bits).

Para a possibilidade de rotação das caixas em qualquer umas das 6 disposições, o BRKGA implementado considera a orientação inicial como sendo a orientação 1, e, para cada caixa, através de um número k gerado aleatoriamente do conjunto {1, 2, 3, 4, 5, 6}, inicia a tentativa de carregamento do item a partir deste número k, até o número 6, retornando a sequência ao número 1, que finaliza, no máximo, com o valor k − 1. Por exemplo, se uma caixa é selecionada para ser carregada em um EMS, com orientação 4, então o algoritmo primeiramente tenta carregá-la no primeiro EMS da lista de EMS do primeiro contêiner, com esta orientação 4. Caso seja infactível, o algoritmo realiza a tentativa com a orientação 5, e depois, caso ainda haja infactibilidade, com a orientação 6, retornando, depois, para tentativas com a orientação 1, orientação 2 e, finalmente, caso nenhuma das possibilidades anteriores de rotação da caixa tenha sido possível realizar o carregamento no EMS escolhido, tenta-se a orientação 3. Caso nenhuma das possibilidades testadas seja possível de haver a alocaçao da caixa, então tenta-se carregá-la, com raciocínio análogo, no segundo EMS possível da lista de EMS, caso ele exista, e assim, sucessivamente, até que todos os EMS da lista do primeiro contêiner sejam testados. Só depois, o algoritmo passa ao segundo contêiner aberto, caso exista, e realiza tentativas até que todos os contêiners já abertos tenham sido testados para carregar a caixa selecionada. Se ainda assim, nenhuma tentativa for satisfeita, então o algoritmo considera a utilização de um novo contêiner e carrega a caixa em sua posição inicial, origem do espaço tridimensional. Todo esse procedimento de realização de testes dentro do Decodificador Procedimento de Carregamento (descrito no pseudocódigo da Figura 4.8) demanda um tempo computacional muito elevado, e é a parte que solicitou quase que todo o tempo dispendido para a realização dos carregamentos, no decorrer das gerações.

Na Tabela 4.5 apresentam-se os resultados computacionais provenientes da execução do BRKGA implementado aplicado aos problemas de grande porte. As três execuções externas (reinicializações) de cada problema forneceu as três melhores soluções dispostas na quarta coluna,

Soluções. O valor fitness, αN B, retornado ao fim de cada execução global é o melhor resultado encontrado entre estas três melhores soluções, apresentado na segunda coluna da tabela. As colunas

105

tempo(min) e GE expõem, respectivamente, o tempo em minutos e o número de gerações

necessárias para o término de cada execução externa. A coluna Gerações exibe a quantidade de gerações necessárias para a obtenção da fitness e a coluna t(min)/G, o tempo em minutos necessários para a execução de cada geração. A última linha apresenta ainda as médias de cada um destes valores determinados.

Tabela 4.5 - Resultados Computacionais Parciais do BRKGA.

Problemas αN B Gerações Soluções Tempo (min) GE t (min)/G

13.4010 427 11 39 PROB01-050-01 13.2870 23 13.5504 167 5 33 13.2870 234 7 33 13.1995 1351 17 79 PROB01-050-02 13.1995 46 13.2139 563 15 38 13.3960 1365 14 97 12.5981 356 10 36 PROB01-050-03 12.5981 20 12.6081 205 6 34 13.1190 136 4 34 10.3905 238 8 30 PROB01-050-04 10.2078 24 11.1677 237 6 40 10.2078 296 10 30 10.3102 210 7 30 PROB01-050-05 10.3102 15 10.4756 122 4 31 10.3469 121 4 30 11.4023 124 4 31 PROB01-050-06 10.3988 33 10.4406 481 16 30 10.3988 392 13 30 14.2975 285 8 36 PROB01-050-07 14.1771 25 14.1771 389 11 35 14.4709 212 6 35 15.4351 179 5 36 PROB01-050-08 15.4351 15 15.4855 180 5 36 15.4561 179 5 36 10.4044 186 6 31 PROB01-050-09 10.2530 26 10.2530 433 14 31 10.3225 185 6 31 9.3384 413 14 30 PROB01-050-10 9.2622 46 9.2622 706 24 29 10.1253 117 4 29 Média 11.9129 27 12.0847 350 9 37

106 Na Tabela 4.6 apresenta-se também uma comparação entre as médias das fitness

determinadas por sete algoritmos distintos, (1) o BRKGA implementado no presente trabalho; e os demais resultados apresentados no trabalho de Gonçaves e Resende [12]: (2) BRKGA-6r [12], implementado por Resende e Gonçalves, considerando-se as seis rotações; (3) BRKGA [12], implementado por Resende e Gonçalves, considerando-se apenas uma única orientação fixa por caixa; (4) TS3; (5) GVND; (6) TS2PACK; e (7) GLS. Com exceção do primeiro algoritmo, as médias das demais meta-heurísticas foi retirada do trabalho [12].

Tabela 4.6 - Melhores aproximações para o valor αNB.

Meta-heurística Fitness (αNB) BRKGA 11.9 BRKGA-6r [12] 11.5 BRKGA [12] 13.4 TS3 13.4 GVND 13.4 TS2PACK 13.4 GLS 13.4

Fonte: Elaboração do próprio autor.

Os resultados computacionais de Resende e Gonçalves demonstraram que, considerando-se todas as classes de problemas, o BRKGA [12] produz soluções de igual ou melhor qualidade do que as outras quatro meta-heurísticas testadas no artigo. Para o caso particular dos problemas considerados nesta Subseção (Classe 1 de [12]), o BRKGA [12] apresentou uma média de fitness

de igual qualidade comparando-a às obtidas pelas metaheurísticas (4) a (7), αN B = 13.4. Como esperado, a meta-heurística (2), por considerar todas as seis rotações de itens, conseguiu produzir melhores resultados do que os algoritmos (3) a (7), obtendo αN B = 11.5. Como é possível observar na segunda linha da Tabela 4.6, o algoritmo (1), BRKGA implementado no desenvolvimento do presente trabalho, teve eficiência muito próxima ao obtido em [12], ambos ao considerarem as seis rotações de caixa, com uma média de fitness igual a 11.9. Isso demonstrou a coerência dos resultados obtidos e a validação da implementação do BRKGA. Os resultados também mostraram que, no BRKGA implementado, cada geração leva, em média, 37 minutos para ser finalizada, e que, cada execução global de três execuções externas, com repetição de três soluções internas, demanda, em torno de 27 gerações. Logo, a média de tempo destes problemas de grande porte, necessitou de aproximadamente 16,5 horas para ser executado. Os problemas 10, e,

107 principalmente 2, fizeram esta média subir consideravelmente, dado que a maioria dos problemas demandaram cerca de 9 a 11 horas.

É importante ressaltar que os tempos computacionais de [12] não foram disponibilizados para o BRKGA-6r, e, mesmo para o caso de orientação fixa de caixas, foi disponibilizado apenas o tempo médio da execução da geração que fornece as soluções ótimas. Logo, não há base de comparação para os tempos computacionais, que crescem exponencialmente à medida que se aumenta o número de caixas, todas elas com a tentativa de carregamento em todas as rotações, dentro de cada possível espaço maximal vazio. Acredita-se também que computadores mais potentes possam melhorar o desempenho do tempo computacional dispendido. É importante ressaltar também que não existem registros conhecidos acerca de meta-heurísticas que resolvem o 3D-BPP, considerando-se caixas fortemente heterogêneas, e que podem considerando-ser rotacionadas em quaisquer direções.

108