• Nenhum resultado encontrado

4 IMPLEMENTAÇÃO E RESULTADOS PARA O BRKGA 75

4.2 CONSIDERAÇÕES INICIAIS

De acordo com Resende e Gonçalves [12], a diferença na forma de seleção das soluções geradoras entre o RKGA e o BRKGA tem produzido consideráveis melhorias nos resultados computacionais, inclusive quando se trata da aplicação destes algoritmos para o 3D-BPP. Isto porque no RKGA, há grandes possibilidades de que os pais geradores não sejam aqueles que obtiveram as melhores soluções na geração anterior. O BRKGA impõe de maneira desequilibrada (viciada) que as melhores soluções da geração anterior tenham maiores chances de passar suas características para seus descendentes, por elitismo, por Recombinação PUC e através da condição de que pelo menos um dos pais geradores seja do grupo elite.

Além disso, uma vantagem muito particular na implementação do BRKGA, é que devido à sua estrutura estar dividida em partes dependente e independente, a implementação também é realizada em duas partes bem distintas, separadamente. Uma delas, que se refere à implementação computacional da parte independente, pode ser utilizada em quaisquer tipos de problema, pois a busca no espaço definido pelo hipercubo unitário n-dimensional não faz relação com a estrutura do problema inicial. Assim, uma vez implementada, pode ser reaproveitada para outros problemas de otimização combinatória e a implementação computacional restante estará resumida à implementação da parte dependente: a do Decodificador.

76 fase inicial de definição dos parâmentros, nomeada pelo presente trabalho de "Passo 0". O detalhamento está descrito a seguir, considerando-se problemas de otimização combinatória do tipo minimização e é uma síntese das ideias apresentadas no trabalho [12].

4.2.1 Implementação computacional do BRKGA – sem incluir a descrição da parte dependente (decodificador)

Passo 0 (Definição dos Parâmetros Iniciais): Definem-se os parâmetros iniciais: n, p,

pe, pme ρe. Uma população inicial de vetores de coordenadas com valores em [0, 1] deve ser gerada e armazenada na matriz Apopde dimensão p × 3n, em que a i-ésima linha da matriz corresponde ao i-ésimo indivíduo da população, para todo i = 1, ..., p. Em seguida, utiliza-se o Decodificador (que é particular a cada tipo de problema de otimização) para decodificar cada indivíduo contido em cada uma das linhas da matriz Apop(em formato codificado) como uma solução factível do problema original, obtendo, também do Decodificador, os valores de fitness associados a cada proposta de solução e armazenando-os em um vetor ffitness. Verifica-se se o critério de parada foi satisfeito. Caso não o tenha sido, inicia-se o processo geracional contido nos Passos 1 a 5, descritos a seguir.

Passo 1 (Reordenação): Reordenam-se as componentes do vetor fitness de forma

crescente e as linhas de Apopde acordo com a ordenação dos fitness. Observação: Não é necessário remover as linhas de Apoppara a reordenação, apenas um rearranjo de suas posições.

Passo 2 (Recombinação): Geram-se p pepm novas soluções por Recombinação

através de p pepmpares de pais geradores. O gerador elite de cada solução obtida terá um índice, que é um número aleatório inteiro no intervalo [1, pe]. O outro gerador (que pode ser elite ou não), terá também índice inteiro e aleatório, no intervalo [pe+ 1, n] (Estratégia 1) ou no intervalo [1, n] (Estratégia 2). O i-ésimo descendente gerado é armazenado na i-ésima linha da matriz temporária Btemp, de dimensão (p pepm) × n. Para gerar um descendente, que serão armazenados em Btemp, primeiramente, geram-se os números aleatórios r1, r2, ..., rn, no intervalo [0, 1]. Para cada j = 1, ..., n, se:

rjρe,

então copia-se para a coordenada j do descendente, a coordenada j do pai elite. Caso contrário, copia-se a coordenada j da outra solução geradora.

77

Passo 3 (Mutação): Geram-se pm novas soluções, chamadas soluções mutantes, de

dimensão n. Cada solução mutante i é armazenada na linha p pm+ i da matriz Apop, para

i = 1, ..., pm.

Passo 4: Esta etapa completa a população k + 1. Para tal, copiam-se os (p pe pm) × n

elementos da matriz Btempnas linhas pe+ 1, ..., p pmda matriz Apop.

Passo 5: Calcula-se a função objetivo de cada uma das novas propostas de solução

armazenadas nas linhas pe+ 1, ..., p de Apop, atualizando as posições pe+ 1, ..., p do vetor ffitness pelos valores obtidos nesta etapa.

Observação 1: O processo de elitismo está implícito no Passo 1, uma vez que as primeiras linhas da matriz Apop, que é a população que será atualizada, não modifica suas primeiras linhas, cujos elementos são os que fornecem as melhores soluções (que fornecem fitness de menor valor, para problemas de minimização).

Observação 2: No Passo 5, não foi necessário calcular os valores de função objetivo das soluções das linhas 1, ..., pede Apop, pois o cálculo foi realizado na geração anterior, já que são as soluções do grupo elite, copiadas da iteração passada.

Observação 3: Este ciclo de cinco passos (Ciclo Geracional ) é repetido até que o critério de parada seja satisfeito. Os critérios de parada mais comuns são: parar o processo depois de atingido um número máximo de iterações previamente especificado, parar após a solução incumbente não melhorar depois de um número fixo de iterações, parar o processo após atingir-se um tempo limite máximo de processamento, ou após atingir uma solução de qualidade melhor que um valor previamente estipulado.

4.2.2 A escolha dos parâmetros iniciais no passo 0 da implementação do BRKGA

Assim como em toda meta-heurística, a calibragem dos parâmetros iniciais do Passo 0 do BRKGA é realizada de forma empírica, através da análise dos dados e resultados obtidos após variações dos valores iniciais. Testes computacionais envolvendo vários tipos de problemas fizeram com que Resende e Gonçalves, em seu trabalho [12], recomendassem as sugestões de parâmetros contidas na Tabela 4.1.

78 Tabela 4.1 - Valores recomendados para os parâmetros do BRKGA

depende do comprimento de uma proposta de

Fonte: Adaptado de Resende e Gonçalves (2013) [12].

4.2.3 Formação da população inicial no BRKGA

A forma tradicional dos Algoritmos Genéticos de se gerar uma população inicial também é aplicada ao BRKGA: puramente randômica. Os valores aleatórios gerados são armazenados na matriz Apop, do Passo 0 da implementação computacional. No caso particular do BRKGA aplicado ao 3D-BPP, cada elemento da matriz Apop é um valor aleatório contido do intervalo [0, 1]. Entretanto, alguns algoritmos genéticos especializados geram pelo menos uma parcela de sua população inicial utilizando procedimentos heurísticos, o que pode potencializar e agilizar o processo de obtenção de uma solução próxima ou igual à ótima. Um exemplo dessa ideia está contida no trabalho de Buriol et al. [90], que utiliza o BRKGA para resolver problemas de roteamento. Com relação ao 3D-BPP, Resende e Gonçalves [18] propõem que uma única solução seja gerada utilizando um algoritmo heurístico, e demais soluções que completam a populaçao inicial, geradas de forma aleatória. Porém, a tentativa de estimar a população inicial de uma forma inteligente pode provocar uma complexidade computacional que supere os ganhos desta relação custo-benefício. Recomenda-se uma análise prévia que verifique estas questões advindas da possível inserção de uma heurística que interfira na aleatoriedade da formação da população inicial.