• Nenhum resultado encontrado

Critérios considerados na escolha do nó gerador

5.3 ADAPTAÇÃO DE ALGORITMOS DE BUSCA EM GRAFOS

5.3.6 Algoritmo com lista de nós abertos e limitação de custo

5.3.6.2 Critérios considerados na escolha do nó gerador

Os critérios de escolha do nó gerador testados neste método de busca foram exatamente aqueles adotados no método de busca ávida, já apresentados no item 5.3.4.2. e citados novamente a seguir:

a) Escolha do nó com a menor medida de inviabilidade, quantificada como a norma da matriz de inviabilidades;

b) Escolha do nó com o menor custo marginal de redução de inviabilidade; c) Escolha do nó n com o menor valor de

^

f (n), calculado como sendo a soma do custo

g(n) do nó com a estimativa de custo

^

h (n) entre o mesmo e a solução do problema; d) Escolha do nó n com o menor valor de uma função de mérito do tipo função_mérito(n)

= g(n) + B inv(n);

e) Escolha do nó com o menor valor de uma função de mérito adaptada (majoração do peso atribuído ao custo da sobra no cálculo do custo do nó).

A precisão da solução e o tempo de processamento de cada um dos critérios apresentados anteriormente estão associados também às características da referência e do cenário de demanda para os quais se busca a solução do PPOC. Os resultados obtidos a partir da utilização de cada um destes critérios poderão ser avaliados no próximo capítulo.

5.3.6.3 Exclusão de nós do processo de busca

Como forma de agilizar o processo de busca, utilizou-se o critério de comparar a estimativa

^

f (n) de cada nó, candidato a entrar na LISTA DE ABERTOS, ao custo da melhor solução para o PPOC obtida até o momento. Portanto, só são acrescidos a esta lista os nós que potencialmente puderem, quando expandidos, propiciar uma solução melhor que a atual.

Conforme já salientado no item 5.3.6.1., dependendo do critério adotado para escolha do nó gerador, o processo pode culminar na realização de muitas iterações até se chegar na solução do problema e, conseqüentemente, exceder o tempo disponibilizado pela indústria para resolução do PPOC. Visando reduzir o tempo de processamento a padrões aceitáveis, restringiu-se o número máximo de nós que podem fazer parte da LISTA DE ABERTOS.

O número máximo de nós que pode fazer parte desta lista é especificado no início do algoritmo pelo usuário, conforme será apresentado nos itens subseqüentes. Visando atender a esta limitação, sempre que o número de nós inseridos na LISTA DE ABERTOS ultrapassar o

número máximo de nós definido previamente, há que se utilizar algum procedimento para exclusão de nós considerados menos promissores.

Os critérios para exclusão de nós da referida lista foram exatamente os mesmos já especificados para selecionar o nó gerador a cada iteração. Sendo assim, o usuário, ao definir no início do processo o critério para escolha do nó gerador, está também definindo o critério de exclusão de nós quando o número daqueles inseridos na lista ultrapassar o limite máximo permitido.

No próximo item, apresentam-se os passos do algoritmo referente ao processo de busca com lista de nós abertos e limitação de custo.

5.3.6.4 Algoritmo proposto para resolução do PPOC

O algoritmo para resolução do PPOC associado ao processo ora descrito envolve os seguintes passos:

Passo 1: Defina o nó inicial com base no critério apresentado em 5.3.2.; inicialize a variável custo da solução atual com o valor + e defina a função de escolha do nó gerador e de exclusão de nós a ser utilizada ao longo do algoritmo, além do número máximo de nós permitido na LISTA DE ABERTOS (N_max);

Passo 2: Insira o nó inicial na LISTA DE ABERTOS;

Passo 3: Se houver nós na LISTA DE ABERTOS, escolha o nó gerador dentre os nós inseridos na mesma, de acordo com a função de escolha definida no Passo 1. Se a LISTA DE ABERTOS estiver vazia, pare;

Passo 4: Retire o nó gerador, escolhido no Passo 3, da LISTA DE ABERTOS;

Passo 5: Gere sucessores a partir do nó gerador escolhido no Passo 3. Adicione os sucessores inviáveis, e com estimativa de custo

^

f (n) menor que o custo da solução obtida, à LISTA DE ABERTOS. Verifique se há algum sucessor viável e com custo menor que o custo da solução atual. Caso haja, atualize solução e custo da solução atual (o nó associado à solução não entra na LISTA DE ABERTOS);

Passo 6: Se o número de nós na LISTA DE ABERTOS for maior que N_Max, exclua nós desta lista até que restem apenas N_Max nós na mesma. O critério de exclusão é aquele associado à função de escolha definida no Passo 1. Retorne ao Passo 3.

Com relação a este algoritmo, é importante ressaltar uma particularidade associada ao processo de geração de sucessores. De maneira geral, este processo seguiu os passos apresentados em 5.2.4.. No entanto, o sucessor gerado a partir da inserção simultânea de

marcação e camada no par tamanho x cor, identificado como maior deficitário de peças, foi suprimido. Somente para o caso de uma mesa recém inserida no nó é que se admite a geração de um sucessor através do procedimento de inserção supracitado. Esta modificação foi efetuada como forma de reduzir a possibilidade de haver dois nós idênticos na LISTA DE ABERTOS.

O algoritmo anteriormente apresentado pode ser ilustrado através do fluxograma apresentado a seguir.

FIGURA 19: Fluxograma do algoritmo com lista de nós abertos e limitação de custo Passo 1: Defina nó inicial; faça custo

da solução atual  ; defina a

função de escolha do nó gerador e

N_max

Passo 2: Insira nó inicial na LISTA DE ABERTOS

Há nós na LISTA DE ABERTOS?

Passo 3: Escolha o nó gerador com base no critério especificado em P.1.

Passo 4: Retire o nó gerador da LISTA DE ABERTOS

Passo 5: Gere sucessores a partir do

nó gerador. Avalie possibilidade de

solução entre sucessores. Insira aqueles considerados promissores na

LISTA DE ABERTOS

N de nós na LISTA DE ABERTOS > N_Max ?

Passo 6: Suprima nós da LISTA DE ABERTOS com base na função de

escolha definida em P.1.

Pare. A solução do PPOC é a melhor solução obtida até o

momento.

Encontra-se apresentada a seguir uma figura que ilustra o funcionamento deste algoritmo. Da mesma forma que para as figuras anteriores, o número inserido em cada nó do grafo da figura 20 indica a ordem na qual o mesmo foi gerado. O símbolo (P) indica que o ramo associado ao referido nó foi podado no processo de busca, ou porque apresentou um custo maior do que a melhor solução obtida até o momento, ou porque foi excluído no intuito de manter um número máximo de nós, na LISTA DE ABERTOS, igual a Nmax. O símbolo (S) indica que o respectivo nó representa uma solução para o problema.

FIGURA 20: Representação do processo de busca com lista de nós abertos e limitação de custo I 1 2 3 4 7 8 9 (S) 5 (S) 6 10 (P) 11 (P) 13 (P) 14 (P) 15 (S) 12 (S)

5.3.7 Algoritmo de busca com lista de nós abertos e limitação de custo/ busca ávida