• Nenhum resultado encontrado

Nesta dissertação, para solucionar o Problema de Corte com Dimensão Aberta (PCDA), caracterizado na seção 2.3, propõe-se um Algoritmo Evolutivo Híbrido (AEH). Tal escolha se deve às diversas vantagens apresentadas pelos algoritmos evo-lutivos na resolução de problemas intratáveis por métodos convencionais. Optou-se, ainda, por um algoritmo evolutivo híbrido, já que diversas combinações de algorit-mos, especialmente combinações entre AG e outras heurísticas ou metaheurísticas, têm apresentado resultados promissores e muito superiores àqueles obtidos pelo AG convencional. O AEH desenvolvido neste trabalho apresenta as seguintes particula-ridades em relação a um AG convencional:

(a) No AG, a população inicial é gerada de maneira aleatória. No AEH, os indiví-duos são gerados por duas metaheurísticas: Multi-Start (MS) e Iterated Local Search (ILS). Assim, são originadas, para fins de comparação, duas versões do AEH, designadas por AEH-MS e AEH-ILS.

(b) Em vez do operador de recombinação tradicional (uniforme ou n pontos), utilizou-se o operador Order Crossover (OX).

(c) Um operador de busca local é aplicado nos melhores indivíduos da população a cada geração, realizando, assim, uma busca intensiva na vizinhança das melhores soluções encontradas pelo AEH, com o objetivo de atingir um número maior de soluções com nível de aptidão mais alto.

A seguir, o algoritmo evolutivo proposto é descrito, bem como resultados computa-cionais de sua aplicação são apresentados.

4.1 Representação de uma solução

Neste problema, um indivíduo representa a seqüência em que os itens serão inseridos no objeto, ou seja, é um vetor de n valores inteiros, sendo n o número de itens da solução. Assim, cada gene representa um item, e sua posição no vetor indica a seqüência utilizada pelos algoritmos de encaixe de itens, descritos a seguir.

4.1 Representação de uma solução 51 Foram utilizados dois algoritmos aproximados tradicionalmente usados para a resolução de problemas de corte bidimensional: First-Fit e Best-Fit. Estes algorit-mos são capazes de gerar apenas padrões guilhotinados (um padrão de corte é a forma como os itens são dispostos em um objeto).

Dada uma solução qualquer, os dois algoritmos se iniciam com o encaixe dos itens na ordem em que aparecem, até que a largura do objeto se torne insuficiente para encaixar o próximo item. Neste momento, está formada a primeira faixa, cuja altura corresponde ao item de maior altura presente nela.

A partir da segunda faixa, os algoritmos encaixam os itens das seguintes formas: - No algoritmo First-Fit, antes de um item ser inserido, são pesquisadas as larguras disponíveis de cada faixa já formada, para avaliar a possibilidade de encaixá-lo. Caso não seja possível sua inserção em nenhuma faixa já formada, é criada uma nova faixa. Assim, os itens são alocados na primeira faixa em que couberem, sem ultrapassar o comprimento L do objeto. Portanto, uma nova faixa somente é formada quando não é possível encaixar o item em uma faixa já existente.

- No algoritmo Best-Fit, antes de um item ser inserido, são verificadas, além da largura, a área restante de cada faixa já formada (essa área é dada pela diferença entre a área da faixa e a soma das áreas dos itens). O item será encaixado na faixa onde o espaço for mais bem utilizado, ou seja, onde a área restante após sua inserção seja menor. Se não for possível encaixá-lo, é formada uma nova faixa.

O encaixe de itens utilizando os algoritmosFirst-Fit e Best-Fit descritos acima é mostrado na Fig. 4.1. 2 5 6 8 3 7 1 R10 4 2 5 1 6 8 7 R104 3 2 5 6 8 3 7 1 R104 First-fit Best-fit

Figura 4.1: Ação dos algoritmos aproximados First-Fit e Best-Fit.

Os pseudocódigos dos algoritmos são apresentados na Fig. 4.2, para o caso do algoritmo First Fit, e na Fig. 4.3, para caso do algoritmo Best Fit.

Os dois algoritmos são utilizados, portanto, como parte do método evolutivo proposto. Na seção de resultados, além de listados os resultados obtidos pelo AEH

4.2 Representação de uma solução 52 procedimento First-fit()

1 L← comprimento do objeto; 2 hi ←altura do item i, i= 1, . . . , n; 3 li ←comprimento do item i, i= 1, . . . , n;

4 ldfj ←L {comprimento disponível na faixaj, j = 1, . . . , n}; 5 j ←1;

6 para i= 1até i=n faça 7 enquanto (li > ldfj)faça

8 j ←j+ 1

9 fim-enquanto

10 ldfj ←ldfj−li {insere o item i na faixa j} 11 fim-para;

fim First-fit();

Figura 4.2: pseudocódigo do algoritmo First-Fit. procedimento Best-fit()

1 L← comprimento do objeto; 2 hi ← altura do item i, i= 1, . . . , n; 3 li ←comprimento do item i, i= 1, . . . , n; 4 hfj ←0 {altura da faixaj, j = 1, . . . , n};

5 ldfj ←L {comprimento disponível na faixa j, j = 1, . . . , n}; 6 j ←1;

7 para i= 1até i=n faça 8 melhorRel ← ∞

9 Ai ←hi∗li; {área do item i} 10 para j = 1 até j =n faça

11 Adfj ←hfj∗ldfj; {área disponível na faixaj} 12 Rel←Adfj/Ai; {relação das áreas}

13 se (li ≤ldfj)e (hi≤hfj)e (Rel < melhorRel) então 14 melhorRel ←Rel

15 k ←j {armazena a faixa que contém a melhor relação}

16 fim-se

17 fim-para

18 ldfk ←ldfk−li {insere o item i na faixa k} 19 fim-para;

fim Best-fit();

Figura 4.3: pseudocódigo do algoritmo Best-Fit.

com a utilização de cada um dos algoritmos de encaixe, os desempenhos de ambos são comparados.

4.2 Operadores genéticos 53

4.2 Operadores genéticos

4.2.1 Operadores de Recombinação

O cruzamento é o principal mecanismo do AG para explorar o espaço de busca, através da criação de novos pontos, obtidos pela troca de informação genética entre os indivíduos.

Neste trabalho, deve-se evitar que uma operação provoque a repetição de uma variável em um mesmo individuo. Por isso, para realizar o cruzamento (crossover), foi utilizado o operadorOrder Crossover (OX), aplicado com uma dada probabili-dade. Este operador gera filhos a partir da escolha de uma seqüência parcial dos genes de um dos pais, preservando a ordem relativa dos genes do outro pai, conforme descrito a seguir.

São escolhidos aleatoriamente dois indivíduosp1ep2(pais). Os pais são divididos em três partes, por dois pontos de corte escolhidos aleatoriamente. Os filhos f1 e

f2 herdam a parte do meio de seus respectivos pais, p1 e p2. Em seguida, partindo do segundo corte de um pai (por exemplo, p2), copiam-se, em f1, os elementos de

p2, na ordem em que aparecem, sendo removidos os elementos contidos entre os dois cortes do outro pai (no caso, p1), conforme a Fig. 4.4.

p1= (1 6 8 |3 2 5 |4 7) p2= (6 2 7 |1 4 3 |5 8)

f1= (7 1 4| 3 2 5 |8 6) f2= (8 2 5| 1 4 3 |7 6)

Figura 4.4: Operador de Recombinação.

4.2.2 Operadores de Mutação

A mutação é um operador genético que tem a função de introduzir caracterís-ticas na população, ou mesmo recuperar aquelas que se perderam em operações, como, por exemplo, o operador de recombinação. Além disso, a mutação é usada para prevenir a convergência prematura para ótimos locais, através da amostragem de novos pontos no espaço de busca. Este operador é aplicado, numa dada pro-babilidade, a cada descendente individualmente, após a aplicação do operador de recombinação. Neste trabalho, foram aplicados dois operadores de mutação, esco-lhidos aleatoriamente, em indivíduos também selecionados de forma aleatória. São eles:

- Operador troca: consiste em trocar a ordem de encaixe de dois itens, escolhidos aleatoriamente, conforme ilustrado na Fig. 4.5. Nesse operador, dado um conjunto de n itens, existem n(n−1)/2 indivíduos mutantes possíveis.

- Operador realocação: consiste em realocar um item da posiçãoipara a posição

j, sendoiej escolhidos aleatoriamente. Nesse operador, dado um conjunto de

4.3 Operadores de Mutação 54

s = (1 6 8 3 2 5 4 7)

s’= (1 6 5 3 2 8 4 7)

Figura 4.5: Operador de mutação: troca.

i = 2 e j = 6 (realocar o item da segunda posição para a sexta posição), obtém-se, a partir do individuo s, o indivíduo mutante s mostrado na Fig. 4.6. Nessa estrutura, são permitidos movimentos para posições sucessoras (como no exemplo acima) ou antecessoras à posição em que o item se encontra na seqüência do vetor.

s = (1 6 8 3 2 5 4 7)

s’= (1 8 3 2 5 6 4 7)

Figura 4.6: Operador de mutação: realocação.

- Operador realoca grupo: consiste em realocar um grupo composto porx itens que ocupam posições seqüenciais dentro do vetor de solução, ou seja, de j até

j +x. O tamanho (x) deste grupo de itens, obtido experimentalmente, varia entre 2 e 6 itens. A nova posição k do primeiro item do grupo é escolhida de forma aleatória. O grupo de itens de tamanho x será então realocado nas posições k até k +x , desde que k 6= j e k ≤ n−x, em que n representa o número de itens da solução.

- Operador troca altura: consiste em realocar um item, escolhido aleatoria-mente, que ocupa a posição j do vetor de solução, para uma nova posição k, escolhida da seguinte maneira: inicialmente, calcula-se o módulo da diferença

(dif) entre as alturas h do item da posição j e do item da posição j + 1, ou seja dif =| hj −hj+1 | . Em seguida, é pesquisada uma posição k tal que | hj −hk |< dif. Para evitar uma busca exaustiva pela posição k, são executados 0,1

n pesquisas, sendo n o número de itens da solução. Se não for encontrada uma posição que obedeça à condição acima, o item não será realocado.

4.3 Função de custo e função de aptidão dos

indiví-duos

Documentos relacionados