metaheurÍstica grasp aplicada ao problema do sequenciamento de tarefas

16
UNIVERSIDADE ESTADUAL DO CEARÁ CENTRO DE CIÊNCIAS E TECNOLOGIA CURSO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO JOÃO GONÇALVES FILHO & RAPHAEL BEZERRA DO NASCIMENTO [email protected] & [email protected] TRABALHO DE PROJETO E ANÁLISE DE ALGORITMOS: METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS FORTALEZA - CEARÁ 2013

Upload: joao-goncalves

Post on 18-Dec-2014

223 views

Category:

Education


2 download

DESCRIPTION

Esse trabalho aborda o problema do sequenciamento (scheduling) de tarefas, que consiste no estudo da ordem de entrada de diferentes tarefas a serem executadas em máquinas de produção. Obter o melhor sequenciamento possível significa reduzir o tempo total de trabalho (makespan) dessas máquinas, sendo esse o motivo desse trabalho. A solução adotada emprega o uso da metaheurística GRASP, no qual os resultados serão mostrados nesse documento.

TRANSCRIPT

UNIVERSIDADE ESTADUAL DO CEARÁ

CENTRO DE CIÊNCIAS E TECNOLOGIA

CURSO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

JOÃO GONÇALVES FILHO & RAPHAEL BEZERRA DO NASCIMENTO

[email protected] & [email protected]

TRABALHO DE PROJETO E ANÁLISE DE

ALGORITMOS: METAHEURÍSTICA GRASP APLICADA

AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS

FORTALEZA - CEARÁ

2013

RESUMO

Esse trabalho aborda o problema do sequenciamento (scheduling) de tarefas, que consiste noestudo da ordem de entrada de diferentes tarefas a serem executadas em máquinas de produção.Obter o melhor sequenciamento possível significa reduzir o tempo total de trabalho (makespan)dessas máquinas, sendo esse o motivo desse trabalho. A solução adotada emprega o uso dametaheurística GRASP, no qual os resultados serão mostrados nesse documento.

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 DEFINIÇÃO DO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS . . . . . . . . 4

2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Job Shop(JSSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 Flow Shop(FSSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.4 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.5 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.6 Modelo Matemático do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.7 Calculo do Makespan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 SOLUÇÃO ADOTADA PARA O PROBLEMA DO SEQUENCIAMENTO . . . . . . . . 8

3.1 Metaheuristica GRASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.1 Fase de Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.2 Fase de Busca Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.1 Fase de Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.2 Fase de Busca Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

BIBLIOGRAFIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3

1 INTRODUÇÃO

O problema do sequenciamento é uma da classe de problemas em que pode ser inviáveluma tentativa de solução com força bruta, nesse caso precisamos buscar heurísticas que nos derum resultado que com uma boa solução, mesmo não sendo a exata. Nesse trabalho usamosa metaheurística grasp, uma abordagem simples, mas que nos dar boas soluções com rápidaimplementação, como iremos mostrar no restante desse trabalho.

4

2 DEFINIÇÃO DO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS

2.1 Objetivo

Alocar máquinas e tarefas de modo a minimizar o makespan numa linha de produção.

2.2 Job Shop(JSSP)

Se caracteriza por conjunto de trabalhos em um conjunto de máquinas, sujeito à restri-ção de que cada máquina pode lidar com no máximo uma tarefa de cada vez e fato de que cadatrabalho tem uma ordem de processamento especificado através das máquinas.

2.3 Flow Shop(FSSP)

FSSP é um caso especial de JSSP onde existe uma ordem rigorosa de todas as opera-ções a serem realizadas em todos os trabalhos. Em nosso trabalho FSSP significa que a ordemde processamento dos trabalhos sobre as maquinas é o mesmo para cada etapa subsequente deprocessamento.

2.4 Aplicações

(CUNHA, 2003) mostra uma aplicação real em que um problema de sequenciamentoé a alocação de um conjunto de gerentes, de uma determinada instituição, para visitar clientesdiariamente em busca de vender seus produtos e conquistar mais clientes. Essas visitas sãodefinidas em um dia anterior, em um sistema de call center, com hora marcada para cada cliente.Esse problema pode ser resolvido como um problema de sequenciamento pois os gerentes seencontram em diferentes filiais da empresa, e cada gerente deve atender uma quantidade declientes definida, tendo um tempo previsto para cada atendimento e tempo de deslocamentoentre um cliente e outro. O objetivo seria alocar esses gerentes de forma a reduzir o tempo dedeslocamento dos gerentes e maximar a quantidade de atendimento ao dia.

Uma outra aplicação mostrado por (MÜLLER; LIMBERGER, 2000) para o problemade sequenciamento, é o processamento de n tarefas independentes J1, J2, ... , Jn em m proces-sadores uniformes M1, M2, ... , Mm, sem preempção. Este problema se caracteriza por umproblema de sequenciamento, pois cada tarefa possui um tempo de processamento e cada pro-cessador possui uma velocidade de operação. Nesse caso o objetivo seria a redução do tempototal de processamento das tarefas nos processadores.

5

2.5 Problema

“Determinar a sequência de fabricação de fios a ser utilizada para garantir que suaprodução mensal seja concluída no menor tempo”.

Dado um conjunto de N tarefas (N fios a serem produzidos) e M máquinas, temos:

• Cada tarefa será processada por M maquinas;

• O fluxo de processamento das N tarefas nas M máquinas é o mesmo para todas as tarefas;

• Uma tarefa só poderá iniciar na próxima maquina, caso tenha sido finalizada na maquinaanterior;

• Uma máquina processa apenas uma operação de cada vez, e não deve ser interrompidaaté sua conclusão;

• São conhecidos os tempos de processamento de cada tarefa por máquina;

• Tem como objetivo minimizar o tempo de conclusão de todas as tarefas.

• Existem n! seqüências distintas possíveis.

O problema do sequenciamento pertence a classe NP-Dificil. Para a resolução doproblema utilizaremos a metaheuristica GRASP. Na Figura 1, podemos ver um exemplo doproblema, onde temos a matriz de tarefas e máquinas e partir dela devemos descobrir a melhorsequência, ou seja, a sequência que nos dar o menor gasto de tempo. No exemplo a melhorsequência (3,2,1) nos dar uma solução de 26.

2.6 Modelo Matemático do Problema

Na Figura 2 podemos ver o modelo matemático para esse problema, onde:

6

Figura 1: Exemplos

• Tij – é o tempo de conclusão da Tarefa Jj na máquina Mi

• Pij – é o tempo de processamento da Tarefa Jj na máquina Mi

Figura 2: Modelo matemático

2.7 Calculo do Makespan

A Função objetivo é calculada segundo o seguinte pseudo-código:

1 input:

2 seq[] -> sequencia de tarefas (solucao)

3 A[m,n] -> m numero de maquinas , numero de tarefas

7

4 calc_makespan ()

5 T[1..m] = 0 //vetor dos tempos das maquinas

6 para i = 1 ate n

7 k = seq[i]

8 T[1] = T[1] + A[k][1]

9 para j = 1 ate m

10 se (T[j] > T[j-1])

11 T[j] = T[j] + A[k][j];

12 senao

13 T[j] = T[j-1] + A[k][j];

14 retorne T[m]

8

3 SOLUÇÃO ADOTADA PARA O PROBLEMA DO SEQUENCIAMENTO

Nesse capitulo abordaremos a metaheuristica GRASP e a nossa implementação para aresolução do problema.

3.1 Metaheuristica GRASP

A metaheuristica GRASP é constituída descrita primeiramente por (HART; SHOGAN,1987) tem basicamente duas fases. Primeiramente temos a fase de construção, no qual cons-truímos uma solução viável para o problema utilizando algumas técnicas de algoritmos gulosose aleatoriedade. Lembrando que nem sempre a solução construída nessa primeira fase, seráa ótima. Posteriormente temos a fase de busca local, que percorre a vizinhança da soluçãocorrente em busca de um ótimo local até que esse ótimo seja encontrado.

3.1.1 Fase de Construção

A fase de construção do GRASP tem por objetivo encontrar uma solução viável deacordo com a implementação adotada. Para conseguir chegar nessa solução utiliza-se umametaheuristica semi-gulosa, pois, caso fosse inteiramente gulosa, o algoritmo iria encontrarsempre a mesma solução na fase de construção, o que não é o objetivo.

Nessa fase devemos repetir o processo abaixo ate construirmos a solução:

• Para cada elemento candidato aplicar função gulosa nesse elemento;

• Armazenar os elementos em uma lista de candidatos;

• Selecionar os melhores candidatos e inseri-los em uma lista restrita LCR;

• Aplicar função aleatória para selecionarmos um elemento dessa lista restrita para fazerparte da solução.

Observaçoes:

1. A função gulosa avalia o custo da incorporação do elemento na solução parcial.

2. A lista restrita LCR é construída com base na qualidade dos elementos. Obedecendo aseguinte regra:

Em um problema de minimização:

9

1 Cmin = menor elemento pendente

2 Cmax = maior elemento pendente(pior)

3 LRC = {e pertencente a E / Ce <= Cmin + alpha.(Cmax - Cmin)

4 alpha = 0: guloso pura

5 alpha = 1: aleatorio pura

3.1.2 Fase de Busca Local

Na fase de busca local no algoritmo GRASP, primeiramente devemos definir a vizi-nhança local. A vizinhança é o conjunto de elementos que podemos gerar através de umamodificação elementar feita em cima da solução passada. A busca local quase sempre melhoraa solução obtida na fase de construção, mas não necessariamente obtém o ótimo local.

A busca local ideal seria encontrar o ótico global através da solução inicial passada,mas a situação mais real e provavel de ocorrer é de a busca encontrar apena o ótimo local.

3.2 Implementação

Para a resolução do problema do sequenciamento, implementamos o GRASP sepa-rando as duas fases, construção e busca local, que serão apresentadas nos subtópicos seguintes.

3.2.1 Fase de Construção

Nessa fase, executamos uma heuristica semi-gulosa para a escolha de cada elementoconstituinte da solução. No caso do problema do sequenciamento, uma solução possivel é umasequencia das tarefas que são executadas em cada máquina e que possuem um determinadotempo de finalização, makespan. Como a solução deve ser construida por elemento( em nossocaso os elementos são as tarefas ), criamos um laço do tamanho igual a quantidade de tarefas ea cada iteração selecionamos uma tarefa para constituir a solução. A seleção ocorre da seguintemaneira:

1. Cria-se uma lista de elementos candidatos. Essa lista é criada de forma gulosa, verifi-cando sempre como será o impacto de escolher determinado elemento na solução. Emnosso caso verificamos isso utilizando a função de calculo do makespan. Funcionandoda seguinte forma: na primeira interação calculamos o makespan para cada tarefa, ouseja, calculando o makespan, considerando que há apenas a tarefa 1 ou 2, 3, ...n. Nessaprimeira interação teremos n candidatos para entrar na LRC. Digamos que por exemploa tarefa 2 tenha sido a escolhida, na próxima interação já iremos considerar duas tarefas,ou seja, os conjuntos de candidatos para o LRC agora serão (2,1),(2,3),...(2,n). Assim

10

teremos agora n-1 canditatos. o algoritmo segue até que a solução esteja completa com asequência com n tarefas.

2. Após definida a lista de candidatos, devemos selecionar os candidatos melhores ranquea-dos. Criando assim a lista restrita de candidatos LRC.

Nossa lista controlamos a entrada dos elementos com base nesses calculos:

1 Cmin -> menor makespan

2 Cmax -> maior makespan

3 LRC = {e -> indice que representa determinado elemento

4 pertencente a Lista de Candidatos , tal que

5 Ce <= Cmin + alpha.(Cmax - Cmin)}

6 alpha = 0: guloso pura

7 alpha = 1: aleatorio pura

8 O alpha que adotamos esta entre 0 e 1.

3. Após feita a LRC selecionamos randomicamente um elemento para constituir parte dasolução. Em nossa implementação utilizamos a função rand() com intervalo de 0 até N.Sendo N a quantidade de elementos da LRC.

4. Escolhido o elemento para constituir a solução, automaticamente o mesmo na próximaiteração não fará mais parte dos candidatos, pois ja esta na solução.

Esse processo é executado até que a solução seja completa.

O pseudocódigo dessa fase é mostrado abaixo:

1

2 Elementos: E o conjunto de elementos que compoem a solucao

3 Canditatos: E o conjunto de elementos candidatos a entrar no LRC

4 LRC: Contem o conjunto de elementos de canditatos que atingiram

5 a condicao restrita

6 Solucao: Solucao final

7

8 Fase Construcao ()

9 Enquanto solucao incompleta Fazer

10 Candidatos = Elementos

11 LRC = c pertencente a Canditatos cuja

12 makespan(c) <= makespan(cmin) + (alpha * (makespan (cmax)

13 - makespan(cmin )))

14 se LRC nao esta vazio

15 elemento = Um elemento de LRC escolhido aleatoriamente

16 senao

11

17 elemento = o elemento cmax

18 Incluir elemento na Solucao

19 Retira elemento de Elementos

20 Fim

21 Retorna Solucao

22 Fim Fase Construcao

3.2.2 Fase de Busca Local

Para busca local foi implementado um algoritmo simples que troca de posição apenasum elemento por vez(assim dois elementos trocam de posição). A troca de posição(pertubação)é feita conforme a função abaixo:

1 pos: posicao que sera trocada

2 sol: solucao que sera pertubada

3 n_elementos: n_elementos da solucao

4 disturbing ()

5 pos_de_troca = pos

6 enquanto pos igual pos_de_troca

7 pos_de_troca = rand()mod n_elementos

8 troca(sol[pos], sol[pos_de_troca ])

onde pos varia da posição 1 até n. No algoritmo pegamos o melhor vizinho dentre todos os n ge-rados usando essa função de pertubação. Foi um criado um parâmetro chamado depth(profundidade),onde indica quantas vezes iremos repetir esse processo na busca local, por exemplo se tivermosdepth = 2, a melhor solução encontrada na primeira busca, será a inicial na segunda. O pseudo-código da busca local segue abaixo:

1 depth: profundidade da busca

2 busca_local ()

3 melhor_solucao = solucao_corrente // solucao calculada

4 //no metodo guloso

5 para k = 0 ate k = depth

6 para i = 0 ate i = num_tarefas

7 vizinho = disturbing(i,solucao_correte , num_tarefas)

8 se vizinho e melhor que melhor_solucao

9 melhor_solucao = vizinho

10 solucao_corrente = melhor_solucao

11 retorne melhor_solucao

essa melhor solução é a solução final da nossa metaheurística.

12

4 RESULTADOS

Para fazer o análise da metaheurística, variamos os parâmetros α e depth da seguinteforma: α = (0, 0.5, 1.0) que são valores com guloso puro, meio termo entre guloso e aleatórioe puramente aleatório e depth = 100 que nos realiza uma boa busca local, para cada par (α ,depth) realizamos 30 testes, e assim podendo ser retirados a média do tempo de execução, amédia das soluções e a melhor solução obtida entre os 30 testes. Os resultados podem ser vistosnas tabelas abaixo(Observação em Inicial(Me, Max), indica a solução inicial da melhor soluçãoe da máxima respectivamente):

α = 0.0, depth = 100

Instâncias Comparativas Solução Solução Obtida Aproximação

Referência m n Ótima Inicial tempo(milis) Melhor Gap

abz5 10 10 === 1650 3.072278 1538 ===

Car5 10 6 7720 10152 1.806426 7786 66

Media das aproximacões com resultados desconhecidos ————–

Referência m n Inicial(Me,Max) Máxima Média Melhor tempo(milis)

Hel11 100 10 (656, 658) 534 527.333333 523 252.126129

ReC07 20 10 (2154, 2198) 1697 1670.666667 1595 11.002906

Rec13 20 15 (2490, 2490) 2090 2017.533333 2374 17.397634

Rec41 75 20 (6438, 6652) 5486 5389.966667 5255 311.971744

α = 0.5, depth = 100

Instâncias Comparativas Solução Solução Obtida Aproximação

Referência m n Ótima Inicial tempo(milis) Melhor Gap

abz5 10 10 === 1634 2.723050 1538 ===

Car5 10 6 7720 9023 1.677171 7720 0

Media das aproximacões com resultados desconhecidos ————–

Referência m n Inicial(Me,Max) Máxima Média Melhor tempo(milis)

Hel11 100 10 (619, 637) 536 529.166667 523 245.505182

ReC07 20 10 (1985, 2144) 1712 1650.966667 1584 10.824156

Rec13 20 15 (2372, 2503) 2110 2030.800000 1955 17.017579

Rec41 75 20 (6438, 6652) 5473 5401.233333 5306 312.249899

α = 1.0, depth = 100

13

Instâncias Comparativas Solução Solução Obtida Aproximação

Referência m n Ótima Inicial tempo(milis) Melhor Gap

abz5 10 10 === 1591 2.752074 1538 ===

Car5 10 6 7720 8538 1.835267 7738 18

Media das aproximacões com resultados desconhecidos ————–

Referência m n Inicial(Me,Max) Máxima Média Melhor tempo(milis)

Hel11 100 10 (572, 576) 536 528.966667 524 245.887979

ReC07 20 10 (1786, 2051) 1726 1665.666667 1595 11.118690

Rec13 20 15 (2237, 2483) 2089 2021.766667 1968 16.956004

Rec41 75 20 (6128, 6610) 5505 5392.000000 5275 311.869550

Podemos observar que o valor de α afeta diretamente as soluções inicias geradas, poisesta ligada a fase construção com uso de um algoritmo guloso. Quando aumentamos o α de0 para 0.5,1.0 percebemos que os valores algumas vezes melhoram outras vezes pioram, issose deve a aleatoriedade do processo, pois a medida que o valor de α aumenta a escolha nafase construção fica mais aleatória. Na hora gerar os resultados finais, percebemos que mesmomudando as soluções inicias os resultados das soluções finais nas 3 tabelas ficaram muito pró-ximos.

14

5 CONCLUSÃO

Várias abordagens podem ser feitas para o problema do sequenciamento, neste traba-lho mostramos um deles usando a metaheurística grasp que é muito simples, bastando ter emmãos um bom algoritmo guloso e de busca local, os resultados nos mostrou que conseguimosatingir no caso da entrada Car5 a solução ótima. outras estratégias podem ser usadas na fasede construção ou de busca local, ou ainda encontrar um melhor valor para α , nesse trabalhoavaliamos os casos extremos e o do meio(0,0.5,1.0), é provável outro valor intermediário possoobter melhores resultados e até mesmo alcança a solução ótima para mais casos.

15

BIBLIOGRAFIA

CUNHA, Claudio Barbieri da. Um modelo matemático para o problema de seqüenciamento eprogramação de visitas de gerentes de banco. SciELO Brasil, 2003.

HART, J Pirie; SHOGAN, Andrew W. Semi-greedy heuristics: An empirical study. OperationsResearch Letters, Elsevier, v. 6, n. 3, p. 107–114, 1987.

MÜLLER, Felipe Martins; LIMBERGER, Sergio João. Uma heurística de trocas para o pro-blema de sequenciamento de tarefas em processadores uniformes. Pesquisa Operacional, Sci-ELO Brasil, v. 20, n. 1, p. 31–42, 2000.