otimizaÇÃo de rotas para a coleta do lixo … · otimizaÇÃo de rotas para a coleta do lixo...

129
OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO DOMÉSTICO: UM TRATAMENTO GRASP DO PROBLEMA DO CARTEIRO CHINÊS MISTO (PCCM) FREDERICO GALAXE PAES UNIVERSIDADE ESTADUAL DO NORTE FLUMINENSE – UENF CAMPOS DOS GOYTACAZES – RJ JULHO – 2004

Upload: lamkiet

Post on 26-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO DOMÉSTICO: UM TRATAMENTO GRASP DO PROBLEMA DO CARTEIRO CHINÊS MISTO

(PCCM)

FREDERICO GALAXE PAES

UNIVERSIDADE ESTADUAL DO NORTE FLUMINENSE – UENF

CAMPOS DOS GOYTACAZES – RJ JULHO – 2004

Page 2: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

ii

OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO DOMÉSTICO: UM TRATAMENTO GRASP DO PROBLEMA DO CARTEIRO CHINÊS

MISTO (PCCM)

FREDERICO GALAXE PAES

Dissertação submetida ao corpo docente do Centro de Ciência e Tecnologia da Universidade Estadual do Norte Fluminense, como parte das exigências necessárias para obtenção do grau de Mestre em Ciências de Engenharia, na área de concentração de Engenharia de Produção.

Orientador: Prof ª. Gudelia Morales de Arica, D.Sc.

CAMPOS DOS GOYTACAZES – RJ JULHO – 2004

Page 3: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

iii

OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO DOMÉSTICO: UM TRATAMENTO GRASP DO PROBLEMA DO CARTEIRO CHINÊS

MISTO (PCCM)

FREDERICO GALAXE PAES

Dissertação submetida ao corpo docente do Centro de Ciência e Tecnologia da Universidade Estadual do Norte Fluminense, como parte das exigências necessárias para obtenção do grau de Mestre em Ciências de Engenharia, na área de concentração de Engenharia de Produção.

Aprovada em: _________________ Comissão Examinadora: Profª Gudelia Morales de Arica, D.Sc. – UENF (Presidente) Profª Clevi Elena Rapkiewicz, D.Sc. – UENF Prof. José Ramon Arica Chávez, D.Sc. – UENF Prof. José Elias Cláudio Arroyo, D.Sc. – UCAM

Page 4: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

iv

DEDICATÓRIA

Ao Rei dos Reis Jesus de Nazaré, que por amor a nós nos salvou da morte e nos libertou do pecado.

Page 5: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

v

AGRADECIMENTOS

A Deus, o Jeová Shalon (Deus da paz), o grande Jeová Jiré (Deus da provisão),

onde pude buscar forças nos momentos de desânimo e luz nos momentos obscuros.

Toda honra e toda glória sejam dadas ao Príncipe da Paz – Jesus Cristo. Tu és o Rei

da minha vida!

A minha amada mãe que me incentivou por diversas vezes a ingressar no

mestrado levantando minha auto-estima e me dando forças. Se hoje tenho este título,

dedico a você mãe!

A minha amada esposa que soube conduzir por meio da compreensão e

carinho esta caminhada, estando ao meu lado em todos os momentos.

A minha orientadora professora Gudelia, pela amizade, incentivo e,

principalmente, por depositar confiança em mim, acreditando no meu potencial. Muito

obrigado!

Ao professor Geraldo Galdino pelo apoio e a todos os professores do

Laboratório de Engenharia de Produção.

Ao meu grande camarada Leonardo Póvoa, amigo desde os tempos da UERJ.

Suas idéias foram fundamentais para o sucesso deste trabalho. Muito obrigado pela

força!

Aos meus amigos e colegas de mestrado, em especial ao meu bom e velho

amigo André Velasco, e ao grande Eduardo Varejão pela força e ajuda em minhas

dificuldades e aos funcionários do CCT da UENF, pela amizade e apoio.

A FAPERJ pelo apoio financeiro durante o período de mestrado.

E a todos aqueles que, de uma forma ou de outra, contribuíram para a

conclusão deste trabalho.

Page 6: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

vi

SUMÁRIO

LISTA DE TABELAS...............................................................................................

LISTA DE FIGURAS................................................................................................

RESUMO..................................................................................................................

ABSTRACT..............................................................................................................

Capítulo 1 - Introdução.........................................................................................

1.1– Considerações Iniciais………………………………………………….........

1.2– Organização da Tese......……………………………………………............

Capítulo 2 - Sobre o Gerenciamento do Lixo Urbano.........................................

2.1 – Generalidades Sobre Resíduos Sólidos………………...……....… ..........

2.2 – Gerenciamento dos Resíduos Sólidos Urbanos…………………….........

2.2.1– Geração dos Resíduos…...……………………………………...........

2.2.2– Acondicionamento….……….………………………………................

2.2.3– Coleta…………………………………................................................

2.2.3.1– Coleta Seletiva….………………………………..….........................

2.2.3.2– Dimensionamento dos Serviços de Coleta.…………..............

2.2.3.3– Dimensionamento da Frota Necessária para Cada Setor.......

2.2.3.4– Definição dos Itinerários de Coleta..………….........................

2.2.4– Estação de Transferência ou de Transbordo.……..….....................

2.2.5– Processamento e Recuperação………………….……....................

2.2.6– Disposição Final.………………….…………………..........................

2.3– Alternativas Para a Coleta nos Municípios.…………………….................

2.4– A Coleta no Município de Campos dos Goytacazes…….…….................

2.5– Contribuições Metodológicas na Problemática do Lixo…….……............

Capítulo 3 - Principais Problemas de Roteamento em Arcos..............................

ix

x

xii

xiii

1

1

3

5

5

8

10

11

11

12

13

15

16

16

17

18

19

20

22

24

Page 7: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

vii

3.1 – O Problema de Roteamento em Arcos…...……………………….............

3.2 – O Problema do Carteiro Chinês (PCC)…..……………………….............

3.2.1 – Um Breve Histórico….......……………………………………….........

3.2.2 – Algumas Definições Inerentes ao PCCM......… ....………...............

3.2.3 – Complexidade do Problema….................…………………..............

3.3 – O Problema do Carteiro Chinês Não Direcionado (PCCND)..................

3.3.1 – Formulação para o PCCND…………………...…………..................

3.4 – O Problema do Carteiro Chinês Direcionado (PCCD)…......… ...............

3.4.1 – Formulação para o PCCD………………………………....................

3.5 – O Problema do Carteiro Chinês Misto (PCCM)……………….................

3.5.1 – Formulação para o PCCM…..…………………………….................

3.6 – O Problema de Roteamento em Arcos para m Veículos………..............

3.6.1 – Formulação para o PRAC……...………………………………..........

3.6.2 – Algoritmos Heurísticos para o PCCC…………………….................

3.6.2.1 – Algoritmo Seletor de Caminho (Path – Scanning)…..……....

3.6.2.2 – Algoritmo de Construção e Remoção (Construct and Strike).

3.6.2.3 – Algoritmo de Aumento e Junção (Augment – Merge)…….....

Capítulo 4 - Algoritmo Proposto para a Otimização da Coleta.............................

4.1 – Introdução………………………………………………………....................

4.2 – Generalidades Sobre Metaheurísticas…………………………….............

4.2.1 – Algoritmo GRASP.................................................................……...

4.3 – O Algoritmo Proposto..............................................................................

4.3.1 – Fase de Construção........................................................................

4.3.2 – Fase de Melhoria............................................................................

4.3.3 – Ilustração de um Pequeno Exemplo...............................................

Capítulo 5 - Implementação Computacional e Testes.........................................

5.1 – Implementação Computacional do Modelo .............................................

5.2 – Formulação do Modelo e Testes....................................................................

5.2.1 – Formulação Proposta......................................................................

24

25

25

26

27

28

29

30

31

32

35

38

39

41

41

42

43

49

49

49

51

53

54

55

58

63

63

66

67

Page 8: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

viii

Capítulo 6 - Conclusão.........................................................................................

6.1 – Conclusões..............................................................................................

6.2 – Sugestões para Trabalhos Futuros.........................................................

REFERÊNCIAS BIBLIOGRÁFICAS........................................................................

APÊNDICE A............................................................................................................

APÊNDICE B........................................................................................................................ APÊNDICE C........................................................................................................................

76

76

77

79

85

91

96

Page 9: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

ix

LISTA DE TABELAS

Tabela 3.1 – Ciclos gerados pelo passo 1 ordenados em ordem decrescente..............45

Tabela 3.2 – Ciclos resultantes após o passo 2 (aumento) ser executado....................46

Tabela 3.3 – Ciclos formados pelas junções do passo 3................................................47

Tabela 4.1 – Orientação das arestas do grafo misto......................................................59 Tabela 5.1 – Soluções encontradas para as instâncias 44_118, 44_108 e 44_91........68

Tabela 5.2 – Soluções encontradas para as instâncias 64_178, 64_159 e 64_137......72

Tabela 5.3 – Soluções encontradas para as instâncias 84_244, 84_216 e 84_188......73

Tabela 5.4 – Soluções encontradas para as instâncias 150_427, 150_377 e 150_326....

.........................................................................................................................................74

Tabela 5.5 – Soluções encontradas para as instâncias 200_564, 200_498 e 200_432....

.........................................................................................................................................75

Page 10: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

x

LISTA DE FIGURAS Figura 2.1 – Destino final do lixo no Brasil.(Fonte: Pesquisa Nacional de Saneamento Básico – IBGE(2000)).......................................................................................................7 Figura 2.2 – O processo da coleta de resíduos sólidos e suas inter-relações.Fonte: Tchobanoglous (1977).....................................................................................................10 Figura 2.3 – Classificação dos resíduos sólidos segundo sua constituição...................12 Figura 3.1 – As sete pontes de Königsberg sobre o rio Pregel. Fonte: www.mat.uc.pt/ /~alma/escolas/pontes.....................................................................................................25 Figura 3.2 – Grafo que não é simétrico, porém euleriano. Fonte: Eiselt et al. (1995) .........................................................................................................................................27

Figura 3.3 – Transformação de um grafo não direcionado.............................................28 Figura 3.4 – Grafo que não pode tornar-se euleriano....................................................34 Figura 3.5 – Grafo do exemplo.......................................................................................45 Figura 3.6 – Aumento do ciclo 1, com os ciclos 3 e 7....................................................46 Figura 3.7 – Junção dos ciclos 2 e 4.............................................................................47 Figura 4.1 – Pseudocódigo da metaheurística GRASP.................................................51 Figura 4.2 – Pseudocódigo da fase de construção........................................................52 Figura 4.3 – Pseudocódigo da fase de busca local........................................................53 Figura 4.4 – Orientação de uma aresta (i, j)..................................................................54 Figura 4.5 – Pseudocódigo do algoritmo do carteiro chinês misto baseado na GRASP... .........................................................................................................................................57 Figura 4.6 – Grafos resultantes ao final de cada iteração com os graus assumidos pelos vértices durante a fase de construção.............................................................................59 Figura 4.7 – Grafo GF onde será aplicado o PFCM........................................................60

Page 11: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

xi

Figura 4.8 – Grafo solução GS , simétrico e euleriano....................................................61 Figura 4.9 – Componentes conectadas..........................................................................62 Figura 5.1 – Lista de Arcos utilizada para armazenar G=(V, A ∪ E)..............................64 Figura 5.2 –Vetor utilizado para armazenar os pesos w(i,j) das arestas........................64 Figura 5.3 – Representação de um setor de coleta........................................................71 Figura 1A – G1: grafo não orientado; G2: digrafo; G3: grafo misto................................85 Figura 2A – Subgrafo de G2...........................................................................................87 Figura 3A – Digrafo original com ofertas/demandas nos nós e seu grafo solução após resolver o PFCM..............................................................................................................90

Figura 1B – Grafo direcionado euleriano (simétrico)......................................................91

Page 12: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

xii

Resumo da dissertação apresentada ao CCT/UENF como parte integrante dos

requisitos necessários para a obtenção do grau de Mestre em Ciências (M.Sc.) em

Engenharia (área de Engenharia de Produção).

OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO DOMÉSTICO: UM

TRATAMENTO GRASP DO PROBLEMA DO CARTEIRO CHINÊS MISTO (PCCM)

Frederico Galaxe Paes

06 de Julho de 2004 Professor Orientador: Gudelia G. Morales de Arica.

O crescimento regular da população mundial e a globalização do consumo, têm

como conseqüência o inchaço das cidades e a geração de grandes quantidades de lixo

gerando problemas de ordem ambiental, urbanístico, social e econômico. O motivador

principal deste trabalho foi contribuir com uma proposta para o gerenciamento da coleta

e transporte do lixo domiciliar, tendo como objetivo minimizar os custos financeiros.

Esta dissertação versa sobre a modelagem da coleta do lixo doméstico, efetuado por

um caminhão compactador, formulada por meio de modelos de Programação Linear

Inteira (PLI) e da resolução de um dos modelos apresentados, através de um algoritmo

baseado na Metaheurística GRASP, proposto para a otimização da rota executada pelo

veículo coletor em seu respectivo setor de coleta. Para tanto, o modelo utiliza um grafo

misto G= (V, A ∪ E) para representar o setor de coleta, facilitando, assim, a

implementação computacional do cálculo de uma rota mais econômica.

Na literatura, o problema abordado é denominado como Problema do Carteiro

Chinês Misto (PCCM), que é uma classe especial do conhecido Problema de

Roteamento em Arcos (PRA), cuja resolução via algoritmos exatos tem complexidade

NP-Completo. São apresentadas também, algumas comparações entre os valores

(custos) das soluções aproximadas resultantes do algoritmo proposto (implementado

no modo Console Application do DELPHI 5®) e suas respectivas soluções ótimas,

obtidas do modelo de PLI resolvidos através do software LINDO 6.1. Os algoritmos

foram comparados, usando grafos gerados (instâncias) a partir da malha viária da

cidade de Campos dos Goytacazes.

Page 13: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

xiii

Submitted to the CCT/UENF in partial fulfillment of the requirements for the degree of Master of sciences.

OPTIMIZATION OF ROUTES FOR HOUSEHOLD REFUSE COLLECTION: A TREATMENT GRASP OF THE MIXED CHINESE POSTMAN PROBLEM (MCPP)

Frederico Galaxe Paes

July – 2004 Advisor: Gudelia G. Morales de Arica.

The growth of the world population and the globalization of the consumption,

have as consequence the swelling of the cities and the generation of great amounts of

garbage, generating problems of environmental order, city planning, social and

economical. The main reason of this work was to contribute with a proposal for the

administration of the collection and transport of the domestic garbage, tends as

objective minimizes the financial costs. This dissertation turns on the modeling of the

collection of the domestic garbage, made by a compactor truck, formulated through

models of Integer Linear Programming (ILP) and of the resolution of one of the

presented models, through an algorithm based on GRASP metaheuristic, proposed for

the optimization of the route executed by the vehicle collector in your respective

collection sectors. For so much, the model uses a mixed graph G = (V, A ∪ E) to

represent the collection sectors, facilitating, like this, the implementation computational

of the calculation of a more economical route.

In the literature, the approached problem is denominated as Mixed Chinese

Postman Problem (MCPP) that is a special class of the acquaintance Arcs Routing

Problems (ARP), whose resolution through exact algorithms has NP-Complete

complexity. They are also presented, some comparisons among the values (costs) of

the resultants solutions of the proposed algorithm (implemented in the way it Consoles

Application of DELPHI 5®) and your respective great solutions, obtained of the model of

resolved ILP through the software LINDO 6.1. The algorithms were compared, using

generated graph (instances) starting from the road network of the city of Campos of

Goytacazes.

Page 14: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

1

Capítulo 1

Introdução 1.1– Considerações Iniciais

A geração do lixo urbano é de natureza complexa quanto ao seu gerenciamento

e de natureza crescente quanto a sua dimensão, devendo ser abordado pela

administração de um município independente dessas características, porém, sem

esquecê-las. Os serviços de limpeza pública então, sem contar com o devido

acondicionamento do lixo, sem coleta regular e organizada, e sem um destino final que

atenda aos mínimos parâmetros sanitários, representam um permanente foco

transmissor de doenças e de degradação ambiental, afetando a qualidade de vida da

população. A falta de cuidados com o lixo propicia criadouros de vetores transmissores

de doenças, constituindo-se numa constante ameaça à saúde pública. Nas metrópoles,

este problema torna-se ainda mais sério, pelas grandes quantidades diárias de lixo

geradas necessitando serem descartadas e com os espaços disponíveis, para tal, cada

vez mais escassos. É o caso da cidade de Nova York desde o ano 2000, Brown (2002).

Sob o ponto de vista econômico, a produção exagerada de lixo, a disposição

final inadequada sem projetos e/ou sem critérios para reverter tal situação, representam

um desperdício de materiais, energia e recursos naturais e financeiros.

Segundo o Manual de Organização dos Serviços de Limpeza Pública para

Comunidades de Pequeno Porte elaborado pelo Ministério do Planejamento e

Orçamento (MPO/SEPURB, 1995), um serviço de limpeza adequado, com

reaproveitamento e reciclagem de materiais, tem como vantagens reduzir:

• o consumo de energia, de matérias-primas e de recursos naturais, protegendo o

meio ambiente;

• a necessidade de tratamento e disposição de grandes quantidades de lixo;

• a quantidade de lixo e, portanto, os gastos com coleta e destino final;

Page 15: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

2

• os riscos para a saúde da população e de poluição do meio ambiente;

• a desvalorização dos terrenos nas proximidades dos aterros sanitários;

Além do mais, proporciona ainda:

• novas oportunidades de trabalho e renda;

• melhoria da paisagem e redução da degradação ambiental, possibilitando o

aproveitamento dos recursos naturais para o turismo.

Segundo Cunha e Caixeta Filho (2002) grandes quantias são gastas no

gerenciamento do lixo, sendo 7% a 15% do orçamento dos municípios dedicados a este

fim. Estima-se que deste montante alocado ao gerenciamento, cerca de 50% são

destinados ao transporte e coleta do lixo (IPT 1995).

Portanto, delimitando este trabalho, a ênfase será dada a uma parte do

problema do gerenciamento de resíduos sólidos, que é a coleta e o transporte. O

objetivo deste trabalho então, é apresentar uma proposta computacional que calcule

uma rota com o menor custo de percurso possível, obtida em pouco tempo de

processamento. Para tal, se implementa um algoritmo baseado na metaheurística

denominada GRASP (Greedy Randomized Adaptive Search Procedure) destinado a

resolver a representação do problema em Grafos Mistos. Na Teoria dos Grafos o

problema do cálculo de rotas acima exposto é conhecido como o Problema do Carteiro

Chinês Misto (PCCM). O Problema do Carteiro Chinês (PCC), por sua vez, foi um

problema proposto pelo matemático chinês Meigu Guan (1962), cujo objetivo é

determinar um caminho ou rota de tamanho mínimo, cobrindo cada arco do grafo ao

menos uma vez.

A obtenção da rota ou itinerário de um caminhão de lixo é uma atividade

dinâmica, uma vez que a rede viária de uma cidade encontra-se sujeita a variações de

longa ou curta duração, por exemplo: por manutenção, mutação ou congestionamentos

de vias. Visto por este ângulo, este trabalho objetiva, também, gerar uma solução

computacional, que atenda a esta dinâmica de maneira eficiente. As Metaheurísticas,

em geral, são algoritmos aproximativos destinados a encontrar uma boa solução,

eventualmente a ótima, e consiste na aplicação, em cada passo, de uma heurística

específica para cada tipo de problema (SOUZA, 2002). Estes procedimentos têm como

vantagem a possibilidade de escapar de ótimos locais. A GRASP, em particular, possui

Page 16: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

3

uma característica importante que é a rapidez de resposta, para o caso particular do

cálculo de rotas, isto é, gera soluções de boa qualidade em pouco tempo.

A implementação computacional do algoritmo gerou o programa chamado

OTIMIZA_COLETA, com o qual se calcula uma solução aproximada. Para tal, foi

preciso trabalhar com uma estrutura especial de armazenamento de dados, pelo fato de

trabalhar com arcos e arestas, por vezes repetidos. Deve-se ressaltar também, que

foram executados testes computacionais com o programa gerado em diversas

instâncias, sendo que, em três destas instâncias, os custos das soluções aproximadas

encontradas pelo programa, são comparadas com os custos das soluções ótimas

obtidas por meio do método exato aplicado ao modelo de Programação Linear Inteira

(PLI). Cabe anotar que nesta dissertação, não é resolvido o problema de roteamento de

veículos propriamente dito, isto é, determinar rotas para mais de um veículo

minimizando a distância total percorrida, porém, são formulados um modelo e alguns

algoritmos heurísticos para resolver este problema.

1.2 – Organização da Tese

A dissertação está organizada em 5 capítulos. No Capítulo 2, aborda-se o

gerenciamento do lixo, apresentam-se as etapas do gerenciamento do lixo doméstico e

ao mesmo tempo se fornecem alguns dados estatísticos, mais recentes, relacionados

ao lixo produzido no país.

No Capítulo 3 abordam-se diversas classes do Problema de Roteamento em

Arcos (PRA), tais como o Problema do Carteiro Chinês (PCC), apresentam-se suas

formulações em programação matemática e alguns algoritmos heurísticos destinados a

resolvê-los. Também é discutida a proposta de alguns algoritmos para resolver o

Problema de Carteiro Chinês Capacitado (PCCC) e mais geralmente o Problema de

Roteamento em Arcos Capacitados (PRAC), que são dois problemas clássicos do PRA

considerando m veículos.

No Capítulo 4 é feita uma descrição sucinta da metaheurística GRASP e as

fases que a compõem, no intuito de melhor situar o leitor. Também é apresentado o

algoritmo que é implementado, nesta dissertação, para achar uma boa rota de coleta

para um único veículo e um exemplo que ilustra suas etapas.

Page 17: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

4

No Capítulo 5 aborda-se a fase de implementação computacional, além de

apresentar os testes numéricos. Todos os procedimentos que compõem o programa

são descritos de forma detalhada. Os testes são realizados em quinze instâncias

distintas, representadas por grafos com: 44, 64, 84, 150 e 200 vértices, e seus

resultados são tabelados. Para as instâncias identificadas com a numeração: 44_118,

44_108 e 44_91, o primeiro número representa o número de vértices, enquanto o

segundo número representa quantos arcos e arestas formam o grafo. Para estas

instâncias, as soluções geradas pelo programa OTIMIZA_COLETA são comparadas

com as soluções ótimas obtidas por um método exato aplicado a um modelo de PLI. As

soluções exatas foram obtidas através do software LINDO 6.1.

Por fim, no Capítulo 6 são apresentadas as conclusões e algumas propostas

para trabalhos futuros.

Page 18: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

5

Capítulo 2

Sobre o Gerenciamento do Lixo Urbano

2.1 – Generalidades Sobre Resíduos Sólidos

Com o crescimento da população mundial, surge como conseqüência o inchaço

das cidades e a geração de grandes quantidades de lixo, trazendo diversos problemas

de ordem social e econômico. Nos últimos 245 anos, a população mundial passou para

6.000.000.000 e a previsão é que, nos próximos 300 anos, a população do planeta

atinja 9.000.000.000 de seres humanos.

Este crescimento explosivo da população mundial e a urbanização acelerada

após a 2ª guerra mundial, resultaram na utilização predatória de recursos naturais e na

degradação do meio ambiente pela falta de uma consciência ecológica. Em

conseqüência, para atender a esta demanda crescente de bens de consumo, tem-se

uma produção cada vez maior de lixo nos centros urbanos. Existem metrópoles, como é

o caso da cidade de Nova York, onde já não existem espaços disponíveis para

depositar o lixo produzido dentro dos limites da cidade. Segundo o Caderno Especial do

JB (2003) e WE-ACT (http://www.weact.org/mts/wasteexport.html) a cidade depende da

transferência do lixo, o que significa um aumento de 40% nos custos por tonelada de

lixo.

Um mau gerenciamento desse lixo, além de provocar gastos financeiros

significativos, pode provocar graves danos ao meio ambiente, comprometendo a saúde

e o bem-estar da população. É por isso que o interesse em estudar soluções com

embasamento técnico para a problemática da geração, coleta, transporte e destino final

de resíduos sólidos , tem se mostrado crescente. O assunto tem se tornado tópico de

debates em diversas áreas do conhecimento (por exemplo: urbanismo, saneamento,

Page 19: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

6

engenharias, ecologia, administração, educação, etc.) e sua crescente importância,

segundo Cunha e Caixeta Filho (2002), deve-se a três fatores principais:

• Grande quantidade de lixo gerada – de acordo com dados de Brown (apud

CUNHA e CAIXETA, 2002), a produção de lixo pode variar de 0,46

kg/hab/dia, (na cidade de Kano na Nigéria) a 2,27 kg/hab/dia (em Chicago

nos Estados Unidos). O índice de lixo per capita brasileiro, segundo o IBGE

(2000), está em torno de 0,45 a 1,2 kg/hab/dia;

• Gastos financeiros relacionados ao gerenciamento de resíduos sólidos

urbanos – no Brasil, em média, os serviços de limpeza demandam de 7% a

15% do orçamento dos municípios, dos quais 50% são dedicados à coleta e

transporte1;

• Impactos ao meio ambiente e à saúde da população – o destino final

inadequado dos resíduos pode levar à contaminação do ar, da água, do solo

e à proliferação de vetores nocivos à saúde humana.

Resultados da Pesquisa Nacional de Saneamento Básico (PNSB) realizada

pelo IBGE (2000) revelam uma melhora na situação da destinação final do lixo coletado

no país nos últimos anos, comparado com a última pesquisa realizada em 1989, como

mostra o gráfico da figura 2.1. Em 2000, a quantidade de lixo domiciliar produzida

diariamente em todos os municípios do Brasil chegava a 125.281 toneladas, sendo que

47,1% eram destinados a aterros sanitários, 22,3 % a aterros controlados e apenas

30,5 % a lixões. Ou seja, mais de 69 % de todo o lixo coletado no Brasil estariam tendo

um destino final adequado. Todavia, em números de municípios, o resultado não é tão

favorável: 63,6 % utilizavam lixões e 32,2 %, aterros adequados (13,8 % sanitários,

18,4 % aterros controlados), sendo que 5% não informaram para onde vão seus

resíduos. Em 1989, a PNSB mostrava que o percentual de municípios que vazavam

seus resíduos de forma adequada era de apenas 10,7 %.

Com relação à quantidade de lixo coletada diariamente, nas cidades com até

200.000 habitantes, são recolhidos de 450 a 700 gramas por habitante; nas cidades

com mais de 200.000 habitantes, essa quantidade aumenta para a faixa entre 800 e

1.200 gramas por habitante. 1 BRASIL Governo do Distrito Federal, Disponível em : <http://www.gdf.gov.br>;

Page 20: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

7

Ainda segundo dados do IBGE, dos 5.507 municípios brasileiros, 4.026 (73,1%)

têm população até 20.000 habitantes. Nestes municípios 68,5% dos resíduos gerados

são vazados em lixões e em alagados. Se tomarmos como referência a quantidade de

lixo gerada por eles, em relação ao total da produção brasileira, a situação é menos

grave, pois em conjunto coletam somente 12,8 % do total brasileiro (20.658 t/dia). Isto é

menos do que o gerado pelas 13 maiores cidades brasileiras, com população acima de

1 milhão de habitantes. Elas coletam 31,9 % (54.916 t/dia) de todo o lixo urbano

brasileiro, e têm seus locais de disposição final em melhor situação: apenas 1,8 % (929

t/dia) é destinado a lixões, o restante está sendo depositado em aterros controlados ou

sanitários.

Com relação à disposição e tratamento dos resíduos sólidos de serviços de

saúde (lixo hospitalar, responsável por vários casos de doença), em 2000 houve

melhora, com 539 municípios encaminhando-os para aterros de resíduos especiais

(69,9 % próprios e 30,1 % de terceiros), enquanto em 1989, apenas 19 municípios

davam este destino aos resíduos hospitalares. Em número de municípios, 2.569

depositam este tipo de lixo, nos mesmos aterros que os resíduos comuns, enquanto

539 já estão enviando-os para locais de tratamento ou aterros de segurança.

Em síntese, o brasileiro convive com a maioria do lixo que produz. Montanhas

cada vez maiores de resíduos sólidos representam uma séria ameaça à saúde e a

76%

30,5%

10%

47,1%

13%22,3%

0%

20%

40%

60%

80%

Lixoes Aterros Sanit. Aterros Cont.

Destino Final do Lixo no Brasil

1989 2000

Figura 2.1 – Destino final do lixo no Brasil. Fonte: Pesquisa Nacional de Saneamento Básico – IBGE (2000)

Page 21: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

8

qualidade de vida, e o potencial de desenvolvimento é afetado pelo manejo inadequado

das "sobras" sólidas. Juntamente com estes problemas, observa-se um crescente

número de pessoas que fazem do lixo sua fonte de renda. Pessoas que por não

conseguir um emprego, encontram no lixo uma forma de ganhar dinheiro, através da

coleta de papelão, latas, plásticos entre outros objetos para vender a empresas de

reciclagem.

2.2 – Gerenciamento dos Resíduos Sólidos Urbanos

De acordo com Rosa (apud CARVALHO, 2001) as situações que envolvem a

problemática do lixo são bem diferentes de município para município e desta forma tem

atingido mais fortemente algumas prefeituras do que outras. Por outro lado, não se

deve pensar que os problemas sejam menores ou mais fáceis nos locais onde o lixo

incomoda menos, uma vez que problemas aparentemente invisíveis podem, em pouco

tempo, causar graves danos a comunidade.

Segundo Rosa (apud CARVALHO, 2001):

O problema de limpeza pública em comunidades urbanas assume

complexidade progressivamente maior à medida que crescem os contingentes

populacionais, pois as fontes produtoras de resíduos tendem a tornar-se mais

numerosas e distribuídas de maneira aleatória nos espaços das cidades.

Como conseqüência disto, os sistemas de gerenciamento de resíduos sólidos

tornam-se mais complexos no sentido de efetuar uma coleta e uma destinação final

adequados.

Portanto, “deve-se pensar o lixo como um problema sanitário de primeira

ordem, para cuja solução é requerido um processo gerencial bem planejado e

estruturado em bases técnicas estabelecidas a partir de soluções de engenharia”

(CARVALHO, 2001).

Embora existam inúmeros modelos de gerenciamento integrado do lixo,

nenhuma sugestão ou consultoria substitui o bom senso que está no cidadão e em sua

administração municipal (IPT, 1995)2.

2 Instituto de Pesquisas Tecnológicas, São Paulo;

Page 22: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

9

Mesmo sendo de responsabilidade do município, o gerenciamento do sistema

de limpeza urbana, objetivando afastar o lixo das populações e dando um destino final

ecologicamente adequado, esta tarefa, segundo IPT (1995), é dificultada pelos

seguintes problemas:

• inexistência de uma política brasileira de limpeza pública;

• limitação financeira – orçamentos inadequados, fluxo de caixa

desequilibrado, tarifas desatualizadas, arrecadação insuficiente e

inexistência de linhas de crédito;

• descontinuidade política e administrativa;

• falta de controle ambiental.

Para combater esta problemática, a gestão do serviço de limpeza deverá tomar

uma série de decisões estratégicas, usando ferramentas apropriadas de manejo

gerencial (CARVALHO, 2001).

De acordo com IPT (1995), as prioridades máximas, para qualquer modelo de

gerenciamento para o lixo, devem ser:

• coletar todo o lixo gerado de responsabilidade da prefeitura;

• dar um destino final adequado para o lixo;

• buscar formas de tratamento para o lixo de seu município. Considerar que

estas formas só darão resultados positivos e duradouros se responderem a

claros objetivos tanto ambientais como econômicos;

• fazer campanhas ou implantar programas educacionais voltados à

conscientização pela limpeza da cidade e incentivar medidas que visem

diminuir a própria geração do lixo.

Tchobanoglous (apud CUNHA e CAIXETA, 2002) afirma que as atividades

gerenciais ligadas aos resíduos sólidos podem ser agrupadas em seis elementos

funcionais, conforme ilustra a Figura 2.2:

Page 23: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

10

Figura 2.2 – O processo da coleta de resíduos sólidos e suas inter-relações.

Fonte: Tchobanoglous (1977).

2.2.1 - Geração dos Resíduos

A quantidade de resíduos produzida por um grupo populacional é bastante

variável e depende de uma série de fatores, como renda, época do ano, modo de vida:

cultura, movimento da população nos períodos de férias e fins de semana e novos

métodos de acondicionamento de mercadorias (com a tendência mais recente de

utilização de embalagens não retornáveis).

A organização do gerenciamento do processo de coleta deve-se preocupar em

coletar a maior quantidade possível de lixo gerada. Por outro lado, como já foi

mencionado anteriormente, devem-se incentivar campanhas ou implantar programas

educacionais voltados à conscientização pela limpeza da cidade e incentivar medidas

que visem diminuir a própria geração de resíduos.

*HUDomR�

$FRQGLFLRQDPHQWR�

&ROHWD�

(VWDomR�GH�7UDQVIHUrQFLD�RX�

7UDQVERUGR��3URFHVVDPHQWR�H�5HFXSHUDomR��

'LVSRVLomR�)LQDO��

Page 24: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

11

2.2.2 – Acondicionamento

A primeira etapa do processo de remoção dos resíduos sólidos corresponde à

atividade de acondicionamento do lixo que deve ser disposto em recipientes com

tampas, e confeccionados em material resistente e formato que permita fácil limpeza. O

recipiente deverá ter capacidade para armazenar o lixo produzido entre uma coleta e

outra. O lixo mal acondicionado significa poluição ambiental e risco à segurança da

população, pois conduz ao aparecimento de doenças. O lixo bem-acondicionado facilita

o processo de coleta.

Atualmente, tem-se percebido a importância da separação dos resíduos

orgânicos (restos de alimentos, podas de árvores, entre outros) do material reciclável

(papel, papelão, vidro, plástico, latas) na própria fonte geradora, pois com isso

consegue-se um lixo seco de maior qualidade para ser reciclado. Estima-se que de

26% a 30% do lixo doméstico é reciclável3. Mas o sucesso da coleta seletiva e da

eficácia da separação, no próprio domicílio, depende principalmente da conscientização

da população, que deve ser sempre orientada através de divulgação na mídia, em

escolas e associações de bairro.

2.2.3 - Coleta

A operação de coleta engloba desde a partida do veículo de sua garagem,

compreendendo todo o percurso gasto na viagem para remoção dos resíduos dos

locais onde foram acondicionados aos locais de descarga, até seu retorno ao ponto de

partida.

A coleta normalmente pode ser classificada em dois grupos: sistema especial

de coleta (de resíduos contaminados) e sistema de coleta de resíduos não

contaminados. Nesse último, a coleta pode ser realizada de maneira convencional

(resíduos são encaminhados para o destino final) ou seletiva (resíduos recicláveis que

são encaminhados para locais de tratamento e/ou recuperação).

Os tipos de veículos coletores são os mais diversos. Uma primeira grande

classificação seria dividi-los em motorizados e não-motorizados (os que utilizam a 3 Fonte: Jornal O ESTADO DE S. PAULO, São Paulo, 07/12/2002.

Page 25: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

12

tração animal como força motriz). Os motorizados podem ser divididos em

compactadores, que, segundo Roth et al. (apud CUNHA e CAIXETA, 2002), podem

reduzir a 1/3 o volume inicial dos resíduos, e comuns (tratores, coletor de caçamba

aberta e coletor com carrocerias tipo prefeitura ou baú). Há também os caminhões

multi-caçamba, utilizados na coleta seletiva de recicláveis, em que os materiais

coletados são alocados separadamente na carroceria do caminhão.

Os resíduos coletados poderão ser transportados para estações de

transferência ou transbordo, para locais de processamento e recuperação (incineração

ou usinas de triagem e compostagem) ou para seu destino final (aterros e lixões).

2.2.3.1 – Coleta Seletiva

Coleta Seletiva é o processo de separação e recolhimento dos resíduos,

conforme sua constituição: orgânico, reciclável e rejeito (Figura 2.3). Esta separação

pode ocorrer tanto na fonte geradora (residências, escolas, locais de trabalho), quanto

nos centros de triagem ou nas usinas de reciclagem.

Esta prática facilita a reciclagem porque os materiais estarão mais limpos e,

conseqüentemente, com maior potencial de reaproveitamento.

Figura 2.3 - Classificação dos resíduos sólidos segundo sua constituição.

Para o sucesso da coleta seletiva é importante que o município ofereça um

sistema eficiente de recolhimento dos recicláveis. Para implantar um sistema de coleta

seletiva é necessário:

Resíduo Orgânico Resíduo Reciclável Rejeito

Resto de alimento, folha, casca.

Papel, vidro, metal, plástico, papelão. lixo de banheiro

Page 26: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

13

• Conscientizar a população de que o material reciclável não é propriamente

lixo, devendo, portanto, ser acondicionado separadamente;

• Promover e oferecer condições para que a população possa descartar

seletivamente papéis, plásticos, vidros e metais, instalando recipientes

identificados nas praças e estabelecimentos públicos e efetuando a coleta

com regularidade;

• Implantar um centro de triagem para separação, classificação e

armazenamento destes materiais até a sua reutilização/comercialização;

• Promover estudo de mercado para conhecer a viabilidade de

comercialização dos materiais recicláveis;

• A coleta seletiva deve prever, também, o recolhimento dos resíduos

orgânicos, os quais poderão ser aproveitados para gerar energia, gás ou

adubo orgânico.

A operação da coleta seletiva pode ser de forma domiciliar realizada por

caminhão de carroceria com coleta semanal ou através de postos de entrega

voluntária (PEV’s) caçambas e contêineres de diferentes cores, instalados em pontos

estratégicos, onde a população possa depositar o material previamente selecionado.

2.2.3.2 – Dimensionamento dos Serviços de Coleta

O dimensionamento e a programação da coleta estão relacionados à estimativa

dos recursos necessários (tipos de veículo e equipamentos a serem utilizados, frota

necessária, quantidade de pessoal) e à definição de como o serviço será executado

(freqüências, horários, roteiros, itinerários, pontos de destinação) (IPT 1995).

Uma etapa inicial na modelagem matemática de um problema é o

dimensionamento. O objetivo do dimensionamento dos serviços de coleta, é determinar

o número de veículos necessários destinados aos serviços de coleta, bem como

estabelecer parâmetros que possibilitem a confecção dos itinerários ou rotas

(IPT 1995). Sempre que houver uma ampliação dos serviços de coleta ou mesmo uma

reformulação, um estudo do dimensionamento se faz necessário.

Page 27: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

14

Segundo Carvalho (2001), em municípios de maior porte onde o problema

torna-se mais complexo, recomenda-se o dimensionamento dos sistemas

considerando-se mais de uma alternativa, a serem estabelecidas segundo as suas

necessidades, priorizando-se a mais adequada e econômica, de acordo com as

restrições de cada município. Como comentado em IPT (1995), é importante o

envolvimento do poder público no dimensionamento e na programação dos serviços de

coleta domiciliar, mesmo quando executados por particulares. Isso visa assegurar que

atendam aos padrões de desempenho e de nível de serviço julgados adequados e

garantir a justa remuneração pelos serviços prestados.

Os passos a serem seguidos para o dimensionamento e a programação do

serviço de coleta do lixo domiciliar, segundo IPT (1995), são enumerados a seguir,

sendo alguns destes descritos de forma mais detalhada nas próximas seções:

• Estimativa do volume de lixo a ser coletado;

• Definição das freqüências de coleta;

• Definição dos horários de coleta domiciliar;

• Dimensionamento da frota dos serviços de coleta;

• levantamento e coleta de dados ;

• localização de pontos importantes para a coleta;

• determinação do volume e peso específico do lixo a ser coletado;

• definição dos setores de coleta;

• estimativa da quantidade total de lixo por setor;

• estimativa dos parâmetros operacionais por setor;

• dimensionamento da frota necessária para cada setor;

• cálculo da frota total necessária;

• definição dos itinerários;

• estação de transferência;

• Definição dos itinerários de coleta.

Com respeito ao dimensionamento da frota dos serviços de coleta pode-se

ressaltar os seguintes tópicos:

Page 28: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

15

2.2.3.3– Dimensionamento da Frota Necessária para Cada Setor

Este passo é descrito mais detalhadamente devido a sua importância. Um bom

dimensionamento da frota de veículos tem como conseqüência direta a otimização dos

custos destinados ao transporte do lixo, visto ser proveniente da coleta e transporte a

maior parte dos gastos com serviços de limpeza, conforme mencionado anteriormente.

De posse dos chamados, parâmetros operacionais, para cada setor de coleta

(por exemplo, jornada de trabalho, velocidade média de coleta, etc.) se procede ao

cálculo do número de veículos por setor (Ns).

Então, a frota necessária para cada setor (Ns) pode ser estimada a partir da

seguinte fórmula (IPT 1995):

Onde: J : duração útil da jornada de trabalho, desde a saída da garagem até o seu

retorno, excluindo intervalos para almoço e outros tempos improdutivos [horas];

L : extensão total das vias do setor de coleta [km]; Vc : velocidade média de coleta [km/h]; Dg : distância entre a garagem e o setor de coleta [km/h];

Dd : distância entre setor de coleta e ponto de descarga [km]; Vt : velocidade média nos percursos de posicionamento e de transferência em [km/h]; Q : quantidade total de lixo a ser coletada no setor [ton.]; C : capacidade dos veículos de coleta [ton.].

1. 2 . 2 . .g d

sc t t

D DL QN

J V V V C

= + + (1)

Page 29: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

16

2.2.3.4 – Definição dos Itinerários de Coleta

Chama-se itinerário de coleta o trajeto que o veículo coletor deve percorrer

dentro de um mesmo setor, num mesmo período, transportando o máximo de lixo num

mínimo de percurso improdutivo (trechos em que o veículo não realiza coleta), com o

menor desgaste possível para a guarnição e o veículo. Também chamado na literatura

específica de “tour” (rota) do veículo, existem estudos que visam à obtenção desta de

forma ótima, isto é, com o mínimo de percursos improdutivos, com o apoio da

modelagem matemática do cálculo da rota através de aplicativos baseados em

algoritmos específicos.

O projeto da coleta deve ser encarado como um processo dinâmico, podendo

ser alterado se houver alguma variação da geração de resíduos em cada setor, por

exemplo: pavimentação de novas ruas, mudança na direção do tráfego entre outros

aspectos; o que poderá levar a alterações no roteiro original.

2.2.4 - Estação de Transferência ou de Transbordo

Segundo Mansur e Monteiro (apud CUNHA e CAIXETA ,2002), as estações de

transferência ou transbordo são locais onde os caminhões coletores descarregam sua

carga em veículos com carrocerias de maior capacidade para que, posteriormente,

sejam enviadas até o destino final. O objetivo dessas estações é reduzir o tempo gasto

no transporte e, conseqüentemente, os custos com o deslocamento do caminhão

coletor desde o ponto final do roteiro até o local de disposição final do lixo.

Como exemplo das vantagens oriundas da instalação de tais estações,

destaca-se o estudo de Clark e Gillean (1977), um dos primeiros registros da aplicação

da teoria de redes na coleta de resíduos sólidos, no qual se propunha a construção de

estações em pontos críticos da cidade de Cleveland, em Ohio, Estados Unidos. Desta

forma, permitiam que os lixeiros ficassem mais tempo envolvidos nas atividades de

coleta, uma vez que o tempo de viagem dos caminhões até os locais de descarga foi

reduzido. Tal medida gerou considerável redução no número de rotas.

Page 30: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

17

2.2.5 - Processamento e Recuperação

Um dos métodos de processamento dos resíduos sólidos urbanos é a

incineração. Algumas vantagens e limitações pertinentes a esse processo, descritas no

trabalho de Cunha e Caixeta (2002) serão aqui destacadas. Como vantagens do

método de incineração tem-se: a redução significativa do volume dos dejetos

municipais, a diminuição do potencial tóxico dos dejetos e a possibilidade de utilização

da energia liberada com a queima. Como limitações: destacam-se os altos custos de

instalação e operação do sistema, cerca de US$ 20/t de lixo incinerado; a poluição

atmosférica e a necessidade de mão-de-obra qualificada. Até 1999, menos de 30

municípios incineravam seus resíduos sólidos no Brasil.

Como exemplo de método de recuperação dos resíduos, citam-se a reciclagem

e a compostagem. A reciclagem é um processo pelo qual materiais que se tornariam

lixo são desviados para serem utilizados como matéria-prima na manufatura de bens

normalmente elaborados com matéria-prima virgem. Cunha e Caixeta (2002) destacam

ainda que:

Dentre alguns benefícios da reciclagem pode-se citar a preservação dos

recursos naturais, a redução da poluição do ar e das águas, a diminuição da

quantidade de resíduos a ser aterrada e a geração de emprego com a criação

de usinas de reciclagem. Por outro lado, a reciclagem de resíduos sólidos

enfrenta obstáculos como diminuição da qualidade técnica do material,

contaminação dos resíduos e custo comparativamente menor de utilizar

matéria-prima virgem na fabricação de determinados produtos.

A compostagem, ou seja, a fabricação de compostos orgânicos a partir do lixo,

é um método de decomposição do material orgânico putrescível (restos de alimentos,

aparas e podas de jardins, folhas etc.) existente no lixo, sob condições adequadas, de

forma a obter um composto orgânico (húmus) para uso na agricultura. Apesar de ser

considerado um método de tratamento, a compostagem também pode ser entendida

como um processo de reciclagem do material orgânico presente no lixo.

Page 31: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

18

2.2.6 - Disposição Final

Quanto aos tipos de disposição final dos resíduos, podem ser classificados em

quatros tipos básicos (IBGE, 2000):

• Aterro sanitário - técnica de disposição do lixo, fundamentado em critérios

de engenharia e normas operacionais específicas, que permite a confinação

segura em termos de controle da poluição ambiental e proteção à saúde

pública;

• Aterro controlado - local utilizado para despejo do lixo coletado, em bruto,

com cuidado de, após a jornada de trabalho, cobri-lo com uma camada de

terra, sem causar danos ou riscos à saúde pública e a segurança,

minimizando os impactos ambientais;

• Lixão ou Vazadouro a céu aberto - disposição final do lixo pelo seu

lançamento, em bruto, sobre o terreno sem qualquer cuidado ou técnica

especial;

• Vazadouro em áreas alagadas - disposição final do lixo pelo seu

lançamento, em bruto.

Em se tratando das alternativas de disposição final do lixo, o aterro sanitário é o

que reúne as maiores vantagens, considerando a redução dos impactos ocasionados

pelo descarte dos resíduos sólidos urbanos.

No caso do aterro controlado, que é menos prejudicial que os lixões pelo fato

dos resíduos dispostos no solo serem posteriormente recobertos com terra, constitui-se

uma solução com eficácia bem inferior à possibilitada pelos aterros sanitários, pois, ao

contrário destes, não ocorre inertização da massa de lixo em processo de

decomposição.

Sabe-se que, como indica Cunha e Caixeta (2002), os lixões constituem uma

forma inadequada de descarte final dos resíduos sólidos urbanos. Problemas e

inconvenientes como depreciação da paisagem, presença de vetores de doenças,

formação de gás metano e degradação social de pessoas, são fatores comuns a todos

os lixões e devem ser considerados como indicadores no planejamento do saneamento

das cidades.

Page 32: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

19

2.3 – Alternativas Para a Coleta nos Municípios

Em diversos municípios brasileiros, o poder público municipal busca incentivar o

desenvolvimento econômico local, aumentando a produção agrícola, atraindo indústrias

e expandindo as atividades voltadas ao comércio e à prestação de serviços,

desconsiderando, muitas vezes, que o preço do crescimento econômico é o aumento

da produção de lixo.

Para enfrentar a problemática do lixo, isto é, sua geração, coleta,

processamento e sua destinação final, conforme descrito anteriormente existem

diversas possibilidades. Para o destino final existem desde os aterros sanitários, aterros

controlados, incineradores, usinas de compostagem e lixões, além da passagem por

reciclagem de entulho e compostagem simplificada até a coleta seletiva.

Dentre as soluções convencionais para o destino final do lixo, os lixões

continuam sendo as mais utilizadas, apesar dos graves prejuízos que trazem ao meio

ambiente, à saúde e à qualidade de vida da população. Já a coleta seletiva, reciclagem

de entulho e compostagem simplificada, embora sejam mais complexas do ponto de

vista da sua operacionalização, conseguem incorporar questões mais amplas tais como

emprego e renda, parcerias com outros setores governamentais e com a sociedade

civil.

É preciso tomar cuidado com alternativas que são apresentadas garantindo

grandes vantagens econômicas, lucros e/ou simples eliminação dos impactos

ambientais. Nenhuma solução irá livrar um município de um aterro controlado ou

sanitário, nem através de reciclagem, nem da máxima compostagem, ou mesmo

incineração (IPT 1995).

Além disso, Rosa (apud CARVALHO, 2001) observa que o destino final para os

resíduos de uma comunidade que queira dar soluções higiênicas e sanitárias para os

seus problemas de limpeza pública deverá passar, obrigatoriamente, por uma

reestruturação de seus sistemas gerenciais, sejam eles atrelados à administração

pública direta ou através de processos de “terceirização” .

Esta reestruturação deverá compreender, principalmente, a conscientização de

que a quantidade de lixo gerada é proporcional às condições sócio-econômica média

da população em questão, demandando maiores áreas para a destinação final do lixo

Page 33: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

20

que muitas vezes, devido às condições ambientais e sanitárias tornam-se afastadas,

gerando crescentes custos de transporte. Além disso, sempre haverá sobras de lixo não

reaproveitáveis que deverão de ter um destino final, mesmo depois de passarem por

estações de tratamento e reciclagem.

Em resumo, deve-se pensar na coleta seletiva como uma alternativa para a

redução do volume nos lixões e aterros, além do reaproveitamento de algumas partes

do lixo como matéria-prima. Assim, a natureza ganha de duas formas: passa a ser

menos agredida e por outro lado reduz-se a exploração dos recursos naturais. A

geração de emprego e renda também é fator fundamental oriundos de um bom

programa de coleta seletiva. As usinas de triagem e reciclagem constituem geradoras

de emprego e renda, além de trazer dignidade para o trabalhador do lixo. Mas para a

implantação da coleta seletiva, é fundamental que se crie uma campanha de

conscientização da sociedade, conforme mencionado no item 2.2.3.1, sobre a

importância da coleta seletiva, visto que será dela a maior contribuição.

Trata-se, portanto, de uma questão que vai além do único interesse de destinar

corretamente o lixo, mas que extrapola para o campo social no momento em que se

promove a inserção de pessoas na sociedade, antes com condições de trabalho e vidas

desfavoráveis. 2.4 – A Coleta no Município de Campos dos Goytacazes - RJ

Ao longo dos anos, o sistema de limpeza pública do município de Campos

passou por várias mudanças, incluindo o processo de terceirização dos serviços. Até o

ano de 1994 o serviço de coleta era realizado por uma empresa do Espírito Santo, da

cidade de Vitória, em projeto experimental concebido pela Companhia de

Desenvolvimento do Município de Campos (CODEMCA), que envolvia ainda a divisão

de serviços. Como parte deste projeto a Prefeitura cedeu sua frota de caminhões de

coleta de lixo, somando-os aos caminhões da empresa de Vitória. Além disso, foram

traçados novos horários para a coleta buscando uma padronização do mesmo4.

Em 1997, os serviços na área de limpeza pública já estavam privatizados por

completo, tendo como empresa responsável pela coleta a EcoLurb. Naquele mesmo

4Fonte:Jornal Folha da Manhã, Campos dos Goytacazes, 24/09/94;

Page 34: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

21

ano, já havia a intenção de implantar a coleta seletiva em hospitais e a coleta

diferenciada para comércio e indústria. A idéia era deflagrar uma série de importantes

medidas, visando fazer de Campos uma das cidades mais eficientes na resolução da

coleta de lixo5. O destino final do lixo coletado era o lixão no bairro CODIN, localizado

em uma área imprópria da cidade, que há 25 anos recebia todo o lixo sem qualquer

tratamento. Contudo, em 2000 o contrato com a empresa EcoLurb foi suspenso devido

a irregularidades no processo de licitação para a coleta de lixo na cidade. A partir daí,

os serviços de coleta passaram a ser de responsabilidade da empresa Queiroz Galvão.

A empresa Queiroz Galvão, que é a atual responsável pelos serviços de

limpeza pública no município de Campos, segundo se observa, trouxe um serviço de

melhor qualidade e regularidade para a população. Constata-se: um aumento da frota,

passando para 14 caminhões compactadores com capacidade de 15 m3 (equivalente a

3,5 ton., considerando o peso específico do lixo de 270 kg/m3); a transformação do lixão

em aterro controlado e a construção em parceria com a Prefeitura da primeira usina de

reciclagem e tratamento do lixo, na localidade de Santo Amaro.

A Prefeitura do município pretende implantar um sistema integrado de

tratamento do lixo municipal com a construção de usinas de reciclagem

descentralizadas, localizadas em pontos estratégicos do município; a utilização da

coleta seletiva; a produção de composto orgânico e a destinação do rejeito para um

aterro sanitário cuja implantação, se diz, depende da licença da FEEMA. Todas estas

medidas visam adequar-se às especificações da legislação ambiental (Jornal Gente &

Notícias, Campos dos Goytacazes, 1 a 14 de agosto de 2003).

A usina de Santo Amaro tem capacidade para processar cerca de 15

toneladas/dia de lixo gerando 27 empregos diretos e atendendo as comunidades da

Praia do Farol de São Tomé, Santo Amaro, Baixa Grande, entre outros lugares

adjacentes. A usina é composta por esteira de catação, triturador, peneira rotativa e

carro de apoio.

Apesar de não estar completamente implantado, o setor de Limpeza Pública de

Campos já apresenta mudanças consideráveis, notadas e apreciadas pela população,

que sente a eficiência do trabalho. Outro destaque foi o resgate da auto-estima dos

5Fonte:Jornal Monitor Campista, Campos dos Goytacazes, 18/06/97.

Page 35: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

22

trabalhadores do setor, hoje, mais valorizados e orgulhosos do importante papel social

que desempenham.

2.5 – Contribuições Metodológicas na Problemática do Lixo

Como motivação para a aplicação de metodologias para solução do problema

do lixo, é importante lembrar que os serviços de limpeza absorvem em média entre 7%

e 15% dos recursos de um orçamento municipal, dos quais cerca de 50% são

destinados a coleta e ao transporte de lixo (IPT 1995). Portanto, um bom

gerenciamento destes serviços de coleta, representaria uma boa aceitação por parte da

administração municipal. Além disso, a sua otimização geraria uma economia

significativa dos recursos públicos.

Com respeito a coleta do lixo urbano, diversos trabalhos foram divulgados ao

longo dos anos, como por exemplo: o problema da coleta de lixo proposto por Bodin e

Beltrami (1974), o estabelecimento de frota para coleta de lixo urbano de Clark e

Gillean (1977), a otimização de rotas de coleta do lixo urbano na cidade do Rio de

Janeiro por Negreiros, Maculan e Cleiman (1991), o problema de roteamento em arcos

capacitados de Golden e Wong (1981), entre outros.

O objetivo nestes trabalhos é a otimização dos serviços prestados através da

minimização dos custos operacionais gerados pela atividade de coleta e transporte dos

resíduos sólidos. Alguns dos trabalhos acima citados como, por exemplo, o trabalho de

Negreiros et. al (1991) onde se relata uma aplicação utilizando o sistema de

gerenciamento de rota SisRot no Rio de Janeiro, conseguiu uma economia média de

10% anual (o preço de pelo menos, dois caminhões) em uma área de coleta onde a

produção de lixo era em torno de 600 – 700 t/dia. O SisRot baseado no algoritmo

Marcolix para coleta de lixo utilizou um banco de dados de Informação Geográfica

desenvolvido especialmente para coleta de lixo.

O clássico estudo de caso de Clark e Gillean (1977), na qual os autores

discutiram a aplicação de um sistema de aquisição e análise de dados e um modelo de

simulação para o complexo problema do sistema de gerenciamento de detritos sólidos

(lixo) na cidade de Cleveland (Ohio), mostrou como resultado que, a gerência municipal

de Cleveland reduziu seu orçamento anual de $14.800.000 em 1970 para menos de

Page 36: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

23

$8.800.000 em 1972. O total da economia em um período de três anos foi de

$14.600.000 (os valores foram baseados no orçamento de 1970). Além disso, a cidade

reduziu o número de rotas de coleta de 224 para 102 e reestruturou seu sistema de

rotas de coleta.

Portanto, as diferentes áreas da Pesquisa Operacional têm papel fundamental

na obtenção de alternativas que visem a minimização dos gastos destinados ao

processo de coleta e transporte dos resíduos e, conseqüentemente, propicia uma

otimização dos recursos públicos destinados a este fim. Esta dissertação, motivada por

esta ótica, busca propor um algoritmo que calcule uma solução eficiente para o

problema da determinação da rota do veículo coletor, com relação ao tempo de

processamento.

Conforme descrito por Carvalho (2001), deve-se considerar que o projeto da

coleta é dinâmico e deverá ser acompanhado periodicamente visando observar se há

variação da geração de resíduos em cada setor, se novas ruas foram pavimentadas e

outros aspectos que influenciem na coleta, para efeito de alteração ou ajustes nos

roteiros originais ou, até mesmo, nos setores de coleta. Para tal, é imprescindível o

apoio de uma ferramenta computacional que auxilie nesta tarefa de atualização,

gerando soluções de qualidade em tempo satisfatório.

Page 37: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

24

Capítulo 3 Principais Problemas de Roteamento em Arcos

3.1 - O Problema de Roteamento em Arcos

O objetivo dos problemas de roteamento em arcos (PRA’s) é determinar um

circuito de custo mínimo em um subconjunto de arcos de um grafo, tal que todos os

arcos deste subconjunto sejam atravessados ao menos uma vez, podendo o circuito ter

ou não restrições. Neste caso, pode-se estar interessado em rotear um veículo de cada

vez ou m veículos ao mesmo tempo, o que será tratado posteriormente na seção 3.6.

Estes problemas surgem em diversos contextos práticos onde há a

necessidade de otimizar a rota como, por exemplo, na entrega de cartas, na coleta do

lixo doméstico, na varrição e lavagem de ruas, na inspeção de redes elétricas, de água

ou gás, na fiscalização de linhas de ônibus (Canales e Morales, 2002), entre outros.

Grandes quantias em dinheiro são gastas a cada ano por governos e empresas

privadas no planejamento e execução destas operações.

Dentre os principais problemas de roteamento em arcos podemos citar o

Problema do Carteiro Chinês (PCC) que, de acordo com a natureza da rede, classifica-

se em: Problema do Carteiro Chinês Não Direcionado (PCCND), Problema do Carteiro

Chinês Direcionado (PCCD) e Problema do Carteiro Chinês Misto (PCCM). Além

destes, também se pode destacar, o Problema do Carteiro Rural (PCR) como uma

variante do PCC, uma vez que consiste em calcular uma rota que atende somente um

subconjunto R ⊆ A de arcos (EISELT et al, 1995b). Contudo, neste trabalho se aborda o

PCCM devido a estrutura das redes onde serão determinadas as rotas. A seguir, cada

um destes problemas é descrito detalhadamente.

Page 38: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

25

3.2 - O Problema do Carteiro Chinês (PCC)

3.2.1 - Um Breve Histórico

O mais antigo documento referente ao problema de roteamento em arcos

(PRA’s) provavelmente é o famoso problema das sete pontes de Königsberg (Figura

3.1). Neste problema a questão foi determinar se existia um caminho fechado que

atravessasse, exatamente uma única vez, cada uma das sete pontes sobre o rio Pregel

em Königsberg, hoje chamado Kaliningrado. Este problema foi resolvido pelo

matemático suíço Leonhard Euler em 1736, que encontrou as condições para a

existência de um caminho fechado e mostrou que, neste caso particular, não havia

solução. Euler preocupou-se apenas em verificar a existência de um caminho fechado,

o qual ficou conhecido como Circuito de Euler. Porém, a questão de determiná-lo foi

resolvida bem mais tarde por Hierholzer (apud EISELT et al., 1995a).

O Problema do Carteiro Chinês (PCC) é um outro problema relacionado ao

problema de Euler, que foi proposto por Meigu Guan (1962), um matemático chinês da

Escola Normal Shangtun. Em contraste com o problema das pontes de Konigsberg,

aqui a questão é lidar com situações onde não exista solução ao problema acima

tratado (um caminho fechado que percorra uma única vez cada aresta). Neste caso, o

objetivo é determinar um caminho de comprimento mínimo cobrindo cada arco ao

menos uma vez. O problema foi relatado de forma simplificada por Guan (1962):

“Um carteiro tem de cobrir sua rota e depois retornar ao Posto de Correio. O

problema é encontrar a menor distância a ser percorrida pelo carteiro”.

Figura 3.1 – As sete pontes de Königsberg sobre o rio Pregel.

Fonte: www.mat.uc.pt/~alma/escolas/pontes.

Page 39: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

26

3.2.2 – Algumas Definições Inerentes ao PCCM

A seguir, são apresentadas algumas definições importantes para o

entendimento do PCCM. As definições básicas utilizadas da teoria dos grafos são

apresentadas no apêndice A.

Dado um vértice i∈V, id − (grau de entrada) representará o número de arcos que

entram em i, id +(grau de saída) o número de arcos que deixam i e id (grau) o número

de arcos e arestas incidentes em i. Um grafo misto G= (V, E ∪ A) é dito par se todos

seus vértices tem grau par, é dito simétrico se id −= id +

para cada vértice i∈V e é dito

ser balanceado se, para qualquer subconjunto S de vértices, a diferença entre o

número de arcos direcionados de S para V \ S e o número de arcos direcionados de V \

S para S não é maior que o número de arestas (não direcionadas) unindo S e V \ S

(EISELT et al., 1995a) (CORBERÁN et al., 2002).

Uma definição que deve ser ressaltada é a de grafo euleriano. Um grafo G

conectado é euleriano, se existe um caminho fechado em G contendo cada arco

exatamente uma vez e cada vértice ao menos uma vez.

Ford e Fulkerson (apud EISELT et al., 1995a) estabeleceram as condições

necessárias e suficientes para que um grafo conectado seja euleriano:

1. Seja G não direcionado, G é euleriano se e somente se todo vértice do grafo

tem grau par, isto é, um número par de arestas incidentes;

2. Seja G direcionado, G é euleriano se e somente se o número de arcos que

entram e saem de cada vértice são iguais. Em outras palavras, o grafo deve

ser simétrico;

3. Seja G misto, G é euleriano se e somente se todo vértice tem grau par e,

além disso, é balanceado.

Note que, se um grafo misto G é par e simétrico então G também é balanceado

e, portanto, euleriano. Deve-se ressaltar que simetria não e uma condição necessária

para que um grafo seja euleriano (figura 3.2)(EISELT et al., 1995a). Além disso, se G é

par, o PCCM pode ser resolvido de forma exata em tempo polinomial (EDMONDS e

JOHNSON, 1973).

Page 40: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

27

3.2.3 – Complexidade do Problema

Dado um grafo fortemente conectado G, com custos não negativos associados

aos seus arcos ou arestas, o problema do carteiro chinês (PCC) consiste em encontrar

uma rota de custo mínimo (caminho fechado) atravessando, ao menos uma vez, todo

arco ou aresta de G. Como será visto mais adiante neste mesmo capítulo, este

problema possui complexidade polinomial para grafos não direcionados (todas suas

ligações são arestas) e grafos direcionados (todas suas ligações são arcos)

(EDMONDS e JOHNSON, 1973). Contudo, se o PCC é definido sobre um grafo misto,

tendo ao mesmo tempo arcos e arestas, o problema torna-se NP–Completo

(CORBERÁN et al., 2002). A definição formal do problema é:

Dado um grafo misto fortemente conectado G = (V, E ∪ A), sendo V = {v1, v2,

..., vn} o conjunto de vértices ou nós, E o conjunto de arestas, A = {(vi, vj): vi,

vj∈ V e i≠j} o conjunto de arcos e um custo não-negativo ce (que pode ser a

distância ou tamanho do arco/aresta) para cada e∈E ∪ A, o PCCM consiste

em encontrar uma rota de custo mínimo passando através de cada ligação

e∈E ∪ A ao menos uma vez.

Se um grafo G (direcionado, não direcionado ou misto) é euleriano existe

uma rota passando por cada ligação de G exatamente uma vez. Obviamente esta

rota será ótima e poderá ser facilmente encontrada. Neste caso, o próprio G pode

Figura 3.2 - Grafo que não é simétrico, porém é euleriano. Fonte: Eiselt et al., (1995a).

1 2

Page 41: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

28

ser considerado como a solução para o PCC. Por outro lado, se um grafo

(direcionado, não direcionado ou misto) não é euleriano, o PCC pode ser

formulado como um problema, cujo objetivo é encontrar um conjunto de cópias de

ligações com o menor custo, tal que, quando adicionadas a G seja obtido um grafo

euleriano. Assim, o grafo aumentado formado por G mais as cópias das ligações

adicionadas, pode ser considerado como a solução do problema. Na figura 3.3, a

cópia de menor custo adicionada está representada pela aresta tracejada.

3.3 – O Problema do Carteiro Chinês Não Direcionado (PCCND)

O primeiro resultado conhecido referente ao PCCND é devido a Euler (1736), o

qual mostrou que um grafo não direcionado conectado G = (V,E) é euleriano se, e

somente se, todos seus vértices tem grau par. Em Eiselt et al. (1995a) menciona-se

que o matemático chinês Meigu Guan, observou que quando G tem um número par de

vértices de grau ímpar, um grafo euleriano G’ pode ser derivado de G pela adição de

arestas ligando os vértices de grau ímpar, isto é, algumas arestas são duplicadas pela

introdução de cópias com o mesmo custo. Além disso, provou que para garantir a

otimalidade de um circuito euleriano em G’, ele não deve conter mais que duas arestas

unindo qualquer par de vértices, e o custo das arestas adicionadas em todo circuito não

devem exceder a metade do custo do mesmo (EISELT et al., 1995a).

Grafo não euleriano Grafo aumentado euleriano

Figura 3.3 – Transformação de um grafo não direcionado

2

1

1

3

3 1

3

2

1

1

3

3 1

3

Page 42: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

29

3.3.1 - Formulação para o PCCND

Pode-se formular o PCCND sobre um grafo G(V, E), como um problema de

programação linear inteira (PLI), tendo como solução ótima o número de arestas de

custo mínimo do grafo G que serão adicionadas formando G’(V, E’), fazendo com que

todos os vértices de G’ tenham grau par. Neste modelo, cada variável xij representa o

número de cópias da aresta (vi, vj), com i < j, necessárias para aumentar o grafo G; δ (i)

é o conjunto de arestas incidentes no vértice vi e T ⊆ V é o conjunto dos vértices de

grau ímpar. A seguir, é apresentada a formulação de um modelo de PLI para o PCCND

descrita em Eiselt et al.(1995a):

( , )

( , ) ( )

( , ) ( )

(1)

. .

1(mod 2) se (2)

0(mod 2) se \ (3)

{0,1} (4)

i j

i j

i j

ij ijv v

ij iv v i

ij iv v i

ij

Min c xE

s a

x v T

x v V T

x

δ

δ

≡ ∈∈

≡ ∈∈

Neste modelo, a relação (1) representa a função objetivo, que busca o número

de arestas de menor custo que irão aumentar o grafo G. A relação (2) representa as

restrições que garantem que o número de arestas adicionadas incidentes nos vértices

de grau ímpar seja ímpar, enquanto a relação (3) representa restrições que garantem

que o número de arestas adicionadas incidentes nos vértices de grau par seja par. A

relação (4) explicita que os possíveis valores assumidos pelas variáveis xij são 0 ou 1.

Este modelo pode ser resolvido como um problema de emparelhamento no

grafo K|T| = (T,ET), onde T é o conjunto de vértice de grau ímpar, ET = {(vi , vj): vi , vj∈T,

i<j}, e o custo de (vi , vj) ∈ ET é o menor custo, dentre todos os caminhos existentes

entre os vértices vi e vj em G. O Grafo G’ é então obtido de G pela introdução das

Page 43: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

30

arestas que resultam do emparelhamento de custo mínimo, observando-se que cada

aresta do grafo K|T| pode estar associada a um caminho em G.

Uma vez obtido um grafo euleriano G’ a partir do grafo G, um circuito euleriano

deve ser determinado em G’. Edmonds e Johnson (1973) propuseram um método com

complexidade da ordem de O(|V|), que é descrito a seguir:

Algoritmo 3.1 - Algoritmo End-Pairing para determinar um circuito euleriano em um grafo não direcionado.

PASSO 1 - Trace uma pequena rota, não contendo necessariamente todos os

vértices. Se todas as arestas foram incluídas na rota, pare;

PASSO 2 - Considere qualquer vértice v pertencente à rota contendo uma aresta

incidente que não esteja na rota. Forme uma segunda rota a partir de v, não

sobrepondo a primeira rota;

PASSO 3 - Sejam e1, e2 duas arestas incidentes em v na primeira rota, e sejam e3,

e4 duas arestas incidentes em v na segunda rota. Una as duas rotas em uma rota

simples: por exemplo, começando em v com a aresta e3, percorra a segunda rota

até retornar a v por e4 , então continue na primeira rota partindo de e2 até retornar a

v por e1. Se todas as arestas foram percorridas, pare. Caso contrário, vá para o

PASSO 2;

Além deste algoritmo, outros podem ser destacados como, por exemplo, o

algoritmo de Fleury, o algoritmo Next-Node e o algoritmo Maze-Search. Tais algoritmos

possuem formas diferentes de concepção do circuito euleriano (EDMONDS e

JOHNSON, 1973).

3.4 - O Problema do Carteiro Chinês Direcionado (PCCD)

No caso direcionado, determinar um grafo euleriano de custo mínimo a partir de

um grafo G pode ser obtido pela solução de um problema de fluxo de custo mínimo,

onde o fluxo em cada arco tem que ser pelo menos uma (01) unidade (Orloff apud

Page 44: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

31

EISELT et al., 1995a). Deve-se notar que, ao contrário do caso não direcionado, este

problema pode não ter a mesma solução se G for somente conectado. Para garantir a

existência de uma solução, o grafo deve ser fortemente conectado, isto é, deve existir

um caminho direcionado entre todos os pares de vértices. Edmonds e Johnson (1973),

Orloff (1974) e Bodin e Beltrami (1974) mostraram como um grafo euleriano de custo

mínimo pode ser construído, resolvendo um problema de transporte.

Para a formulação como um problema de fluxo de custo mínimo, são feitas as

seguintes considerações. Seja I o conjunto de vértices vi , tal que a diferença entre o

número de arcos que entram em vi e o número de arcos que saem, seja igual a si , e J o

conjunto de vértices vj , tal que a diferença entre o número de arcos que saem de vj e o

número de arcos que entram seja igual a dj. Desta forma, si pode ser interpretado como

uma oferta no vértice i, e dj como uma demanda no vértice j e, além disso, cij denotará o

tamanho do menor caminho de vi para vj.

3.4.1 – Formulação para o PCCD

Apresenta-se o seguinte modelo de PLI para o PCCD, descrito em Eiselt et

al.(1995a):

(5 )

. .

( ) (6 )

( ) (7 )

0, in teiro ( , ) (8 )

i j

j

i

ij ijv I v J

ij i iv J

ij j jv I

ij i j

M in c x

s a

x s v I

x d v J

x v I v J

∈ ∈

= ∈

= ∈

≥ ∈ ∈

∑ ∑

Nesta formulação, a variável xij representa o número de vezes extra que cada

arco (i, j) será atravessado. Desta forma, a função objetivo na relação (5), busca

aumentar só àqueles arcos de menor custo. Em (6), as restrições garantem que os

Page 45: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

32

arcos aumentados, partindo dos vértices vi, atendam suas ofertas, enquanto em (7) as

restrições garantem que os arcos aumentados, entrando nos vértices vj , atendam suas

demandas. Na relação (8), as restrições garantem a integralidade das variáveis. Uma

vez que um grafo euleriano é determinado, um circuito euleriano pode ser traçado

através do procedimento sugerido por van Aardenne–Ehrenfest e de Bruijn (1951),

também descrito em Edmonds e Johnson (1973).

Existem outros algoritmos que podem determinar o circuito euleriano em grafos

direcionados. Em particular, será apresentado um algoritmo que foi utilizado na

implementação do programa OTIMIZA_COLETA proposto nesta dissertação. No

Apêndice B, é ilustrado um exemplo de como trabalha o algoritmo 3.2 objetivando sanar

eventuais dúvidas:

Algoritmo 3.2 - Determina um circuito euleriano em um grafo euleriano direcionado. PASSO 1 – Selecione um vértice v0 ∈ V qualquer para ser o vértice inicial e rotule

todos os arcos como não usados. T ← v0;

PASSO 2 – Identifique um vértice w ∈ V adjacente a v0, tal que (v0 , w) ∈ A seja não

usado. Rotule (v0 , w) como usado e vá ao PASSO 3. Se w não foi encontrado e

todas os arcos já foram usados, PARE. Caso contrário, vá ao PASSO 4;

PASSO 3 – Acrescente w na 1º posição vazia de T., faça v0 ← w e volte ao

PASSO2;

PASSO 4 – Foi detectado um ”circuito parasita”. Desloque v0 para a última posição

vazia de T. Retorne ao vértice v adjacente a v0, tal que (v, v0) ∈ A tenha sido o

último arco rotulado como usado. v0 ←v. Volte ao PASSO 2.

3.5 – O Problema do Carteiro Chinês Misto (PCCM)

O PCCM é definido em um grafo misto fortemente conectado G = (V, A ∪ E),

onde A é um conjunto de arcos, E é um conjunto de arestas e adicionalmente se tem a

matriz C = (cij) de custos associada às ligações A ∪ E. Para resolver o PCCM, deve-se

encontrar os arcos e arestas de custo mínimo que irão aumentar G de maneira

conveniente, transformando-o num grafo euleriano. A partir daí, poderá ser obtido um

circuito euleriano no grafo aumentado. Se por outro lado, já se sabe que G é um grafo

Page 46: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

33

euleriano, o problema reduz-se a determinar um circuito em G. Isso pode ser obtido em

três fases: (1º) designar direções para algumas arestas tornando G simétrico; (2º)

designar direções para as arestas restantes; (3º) determinar o circuito em G,

propriamente dito.

Para gerar um grafo simétrico de G, (1°) fase, pode-se aplicar o procedimento

proposto por Ford e Fulkerson (apud EISELT et al., 1995a):

Algoritmo 3.3 - Procedimento de Ford e Fulkerson para transformar um grafo misto num grafo simétrico.

PASSO 1 – Substitua cada aresta de G por um par de arcos com direções

contrárias, obtendo assim, um grafo direcionado G’ = (V, A’). Atribua um limite

inferior de 1 ao fluxo para cada arco A ∩ A’ e para cada arco de A’ \ A um limite

inferior de 0. Atribua também para cada arco de A’ um limite superior de 1.

PASSO 2 – Usando um algoritmo de fluxo de custo mínimo em redes, determine

uma solução possível para G’ . Seja xij o fluxo no arco (vi, vj).

PASSO 3 - Oriente as arestas de G da seguinte maneira: Se (vi, vj) ∈ E, xij =1 e

xji = 0, oriente (vi, vj) de vi para vj .

Para executar a 2° fase, quando o grafo transformado já tornou-se simétrico,

consegue-se orientar as arestas restantes por meio de um procedimento que possui

complexidade O(|A ∪ E|) descrito abaixo:

Algoritmo 3.4 - Procedimento para completar a orientação de um grafo simétrico. PASSO 1 – Se todas as arestas estão direcionadas, então PARE. PASSO 2 – Seja v um vértice com pelo menos uma aresta (v, w) incidente. Faça

v1:= v e v2:= w.

PASSO 3 – Oriente (v1, v2) de v1 para v2. Se v2 = v , vá para o PASSO 1.

PASSO 4 – Faça v1:= v2 e identifique uma aresta (v1, v2) incidente em v1. Vá para o

PASSO 3.

Page 47: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

34

Uma vez obtido um grafo completamente orientado, pode-se optar pelo

algoritmo de Van Aardenne–Ehrenfest e de Bruijn ou o algoritmo 3.2, para determinar

um circuito euleriano em G.

Ford e Fulkerson (Apud EISELT et al., 1995) notaram que seu algoritmo de

Fluxo Máximo pode ser aplicado a um grafo par, onde, inicialmente, não se sabe se o

mesmo é euleriano ou não. O algoritmo então, produzirá ou não um fluxo possível.

Caso não produza um fluxo possível, o grafo não é euleriano. Se G não é euleriano,

para se obter um grafo euleriano, deve-se aumentar G através da geração de um

número suficiente de cópias de arcos e arestas de G até que o grafo resultante seja

euleriano. Portanto, para resolver o PCCM sobre um grafo G, primeiro deve-se

determinar um aumento de ligações de custo mínimo (i.é., o aumento de arcos e/ou

arestas que tenham o menor custo). Porém, isto nem sempre e possível, pois alguns

grafos não podem se tornar euleriano (veja figura 3.4).

O problema então, fica reduzido a determinar o aumento de arcos e arestas

com menor custo no grafo original G, de forma a tornar o grafo euleriano. Diversos

autores têm utilizado PLI para determinar este aumento de menor custo em grafos

mistos. Dentre estes, pode-se citar Grötshel e Win (1992), Kappauf e Koehler (1979)

que apresentaram formulações praticamente idênticas, diferindo apenas no nome das

variáveis. Uma outra formulação do PCCM foi proposta por Christofides et al. (1984).

Uma formulação em especial, devido a Ralphs (1993), será destacada por ter sido a

utilizada na obtenção dos valores ótimos dos grafos testados. Estes valores ótimos

foram comparados com as soluções geradas pelo programa OTIMIZA_COLETA que é a

Figura 3.4 – Grafo que não pode tornar-se euleriano

Page 48: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

35

implementação do algoritmo da figura 4.5 (Capítulo 4). No capítulo 5, os testes serão

discutidos com maiores detalhes.

A seguir, aborda-se o modelo formulado por Ralphs (1993). Algumas notações

que serão usadas devem ser esclarecidas. Em um grafo misto G = (V, A ∪ E), E∧

e E∨

representam conjuntos distintos de arestas que serão orientadas, um contendo cópias

das arestas de E em uma dada direção e o outro, contendo cópias das mesmas

arestas, orientadas em direção oposta. Então, se e é uma cópia de uma aresta

orientada pertencente a E∧

ou E∨

, se dirá que~

e é a outra cópia correspondente.

3.5.1- Formulação para o PCCM

A formulação de PLI descrita por Ralphs (1993) para o PCCM é a seguinte:

’ ’

( ) ( )

. .

1

0

1

{0,1}

s s

s A E E

e e

s s s

s s

s v s v

a

e

Minimize c x

s t

y y e E

x y y s A E E

x x v V

y a A

y e

δ δ

∨ ∧∈ ∪ ∪

∨ ∧

+ −∈ ∈

+ ≥ ∀ ∈

= + ∀ ∈ ∪ ∪

− = ∀ ∈

= ∀ ∈

∈ ∀ ∈

∑ ∑

0, inteiro .s

E E

y s A E E

∨ ∧

∨ ∧

≥ ∀ ∈ ∪ ∪

Na formulação acima, pode-se pensar em cada solução viável como um grafo

aumentado particular. Para cada arco, ya’ representa a ‘cópia original’ do arco contido

em A e ya representa o número de ‘cópias adicionais’ incluídas no grafo aumentado.

Desta forma, as restrições (13) representam a necessidade de incluir ao menos uma

cópia de cada arco no grafo aumentado. As restrições (11) nos fornecem o total de

(9)

(12)

(11)

(10)

(13)

(14)

(15)

Page 49: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

36

arcos unindo quaisquer dois vértices distintos no grafo aumentado. Já foi visto no

parágrafo anterior o significado de E∧

e E∨

. Portanto as variáveis ’ey e

’ey � representam

as primeiras cópias orientadas de uma aresta tomadas em cada direção, enquanto ey

e ey � representam cópias orientadas adicionais da mesma aresta incluída no grafo

aumentado.

As restrições (10) representam a necessidade de que haja ao menos uma cópia

de cada aresta no grafo aumentado. As restrições (12) garantem que o grau de cada

vértice do grafo aumentado seja zero, uma vez que δ -(v) (é o conjunto de arcos e

arestas orientadas que entram em v) e δ +(v) (é o conjunto de arcos e arestas orientadas

que saem de v) referem-se, respectivamente, ao grau de entrada e saída dos vértices

no grafo aumentado. Observe que esta notação de grau, embora seja diferente da

apresentada no início do capítulo, representa a mesma idéia.

Além dos autores já descritos, Nobert e Picard (1996) desenvolveram um

algoritmo de plano de corte baseado em PL para resolver o PCCM otimamente.

Contudo, todos estes métodos exatos são computacionalmente ineficientes, de modo

que apenas problemas de médio e pequeno porte podem ser resolvidos sem

dificuldades computacionais em tempo satisfatório (PEARN e CHOU, 1999).

Edmonds e Johnson (1973) já tinham sugerido uma heurística para resolver o

PCCM aproximadamente. A heurística consistia basicamente de duas fases. A Fase1

convertia o grafo original em um grafo par, por considerar cada arco como uma aresta,

e aplicava-se o algoritmo de Emparelhamento de Custo Mínimo. A Fase2 transforma o

grafo obtido da Fase1 em um grafo simétrico por meio do algoritmo de Fluxo de Custo

Mínimo. Porém, desde que o grafo simétrico transformado nem sempre se mantém par,

a rota do carteiro pode não ser construída. Frederickson (1979) modificou a heurística

adicionando uma nova fase, Fase3. A nova fase transforma novamente o grafo

resultante em par, podendo, assim, ser construída a rota do carteiro. Esta última

heurística foi chamado de MIXED 1 (PEARN e LIU, 1995) e gera boas soluções

satisfazendo as condições necessárias e suficientes para que um seja euleriano. A

seguir, serão descritas as fases do algoritmo MIXED 1:

Page 50: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

37

Algoritmo 3.5 - Procedimento heurístico MIXED 1.

FASE 1 – Converte G em um grafo par. PASSO 1.1 - Considere G* o novo grafo obtido de G com as direções de todos os arcos ignoradas. PASSO 1.2 - Resolva o PCC sobre G* usando o algoritmo do emparelhamento de

custo mínimo de Edmonds e Johnson. Seja Z(E) o conjunto de arestas e Z(A) o

conjunto de arcos obtidos do emparelhamento. Faça E1 = E ∪ Z(E), A1 = A ∪ Z(A).

Então G1 = (V, E1, A1 ) é par.

FASE 2 – Transforma G1 em um grafo simétrico.

PASSO 2.1 - Construa uma nova rede G2 = (V, A2) com os custos e capacidades

dos arcos e demandas dos vértices definidos como:

• Para cada aresta {i, j} ∈ E1 , crie quatro novos arcos em A2 incluindo

(a) uma cópia de (i, j) com custo d(i, j) e capacidade de fluxo infinita;

(b) uma cópia de (j, i) com custo d(i, j) e capacidade de fluxo infinita;

(c) uma cópia de (i, j), chamada de (i, j)’ ,com custo zero e capacidade de fluxo 1;

(d) uma cópia de (j, i), chamada de (j, i)’ com custo zero e capacidade de fluxo 1;

• Para cada arco (k, l) ∈ A1, crie uma cópia de (k, l) em A2, com custo d(k, l) e

capacidade de fluxo infinita.

• Para cada vértice i ∈ V, defina:

(a) OFERTA se si > 0 , onde si = id − - id + ;

(b) DEMANDA se si < 0, onde si = id − - id + , onde id + é o número de arcos que

saem do vértice i e id − é o número de arcos que entram no vértice i.

PASSO 2.2 - Encontre o fluxo de custo mínimo sobre a rede G2. Faça Yij , Yji , Yij’ ,

Yji’ e Ykl ser o número de unidades de fluxo entre os arcos (i, j), (j, i), (i, j)’, (j, i)’ e (k,

l) respectivamente.

PASSO 2.3 - Construa uma rede simétrica G3 = (V, E3, A3). Inicialmente, faz-se E3 =

∅, e A3 = A1.

(a) se Yij’ + Yji’ = 1, ponha Yij’ copias do arco (i, j) e Yji’ copias do arco (j, i) em A3;

(b) se Yij’ + Yji’ ≠ 1, ponha uma copia da aresta (i, j) em E3;

(c) ponha Yij copias do arco (i, j) e Yji copias do arco (j, i) em A3;

(d) ponha Ykl copias do arco (k, l) em A3.

Page 51: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

38

FASE 3 – Recupera a paridade do grafo G3 , caso a tenha perdido.

Seja A’ o conjunto de arcos artificiais gerados da fase II, e E4 = E3. Identifique ciclos

em A’ ∪ E4 que consistam de caminhos que alternem elementos de A’ e E4 ,

sendo que cada caminho tenha sua extremidade fixada em um vértice ímpar de G3

e a direção dos arcos pertencentes a A’ devem ser ignoradas. Como os ciclos

cobrem todos os vértices ímpares de G3, as direções dos ciclos serão

arbitrariamente designadas e os arcos no ciclo ou serão duplicados ou serão

deletados, dependendo se a direção do ciclo é a mesma que a direção original do

arco em A’ ou não, e as arestas serão orientadas. Conseqüentemente, todos os

vértices em G3 serão pares e simétricos. Chame o grafo resultante de G4.

Frederickson (apud PEARN e LIU, 1995) mostrou que a complexidade

computacional do algoritmo MIXED 1 é O(max{|V|3, |A|(max{|A|, |E|})2}), onde |V| =

número de vértices , |A| = número de arcos e |E| = número de arestas do grafo. O

mesmo autor mostrou ainda que a performance deste algoritmo em relação aos custos,

no pior caso, tem um limite superior de 2, isto é,

2Ótima) çãocusto(solu1) MIXED do çãocusto(Solu d (PEARN e LIU, 1995). Existe um

outro algoritmo que praticamente faz o inverso do algoritmo MIXED 1. Este algoritmo é

conhecido como MIXED 2. Ele primeiro obtém um grafo simétrico e posteriormente o

transforma em grafo par.

A complexidade computacional do MIXED 2 é a mesma do MIXED 1. Além

destes dois algoritmos citados, Pearn e Chou (1999) e Pearn e Liu (1995) apresentam

outras versões do algoritmo MIXED 1 chamados de MIXED 1 Modificado e MIXED 1

Melhorado e para o MIXED 2 são: MIXED 2 Modificado e MIXED 2 Melhorado.

3.6 – O Problema do Roteamento em Arcos para m Veículos

Um outro problema estritamente relacionado à coleta do lixo urbano, é o de

determinar rotas para uma frota de m veículos que partindo de um depósito (garagem)

percorra cada arco (ou aresta) ao menos uma vez atendendo suas demandas, e retorne

ao ponto de partida, de forma que a distância total percorrida por estes m veículos seja

minimizada, satisfazendo ainda às restrições de capacidade W de cada veículo e de

tempo (horário disponível) da tripulação. Este problema é conhecido na literatura como

Page 52: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

39

o Problema de Roteamento em Arcos Capacitados (PRAC). É definido sobre um grafo

G = (V, E) não direcionado com demanda qij ≥ 0 e custo cij localizado nas arestas. No

caso de um grafo com demanda qij > 0 para toda aresta (vi, vj), o problema é conhecido

como Problema do Carteiro Chinês Capacitado (PCCC). Quanto à complexidade,

sabe-se que o PRAC e o PCCC, ambos são NP-Completos, sendo o desenvolvimento

de algoritmos heurísticos uma saída para a obtenção de boas soluções em tempos

competitivos. A seguir, se apresentam o modelo matemático para o PRAC proposto por

Golden e Wong (1981) e três algoritmos heurísticos para solucionar o PCCC.

3.6.1 - Formulação para o PRAC

Deve-se ressaltar que, para a formulação a seguir propõe-se que todas as

arestas (vi, vj) com qij > 0 devem ser servidas por um único veículo, porém, qualquer

veículo pode atravessar uma aresta sem servi-la. Assume-se que o depósito esta no

vértice um.

Uma formulação como um problema de programação linear inteira 0-1 para o

PRAC, proposta por Golden e Wong (1981), é descrita abaixo:

Page 53: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

40

1 1 1

1 1

(16)

. . - = 0 para i=1,...,n (17)

n n Kp

ij iji j p

n np pki ik

k k

Minimize c x

s a x x

= = =

= =

∑∑∑

∑ ∑

1

p=1,...,K,

( ) para (i,j) E, (18)

Kijp p

ij jip

p pij ij

ql l

W

x l

=

+ = ∈

1

para (i,j) E

p=1,...,K, (19)

para p=1,...,K, n

pij ij

j

l q W=

≤∑

~~ ~

~~ ~

~ ~

~ ~

1

~2

1

~1

2

1 2

1 2

(20)

Q -1 +

1 - 1,..., ; 1,..., 2 1

1;

, {0,1}

i j

i j

n

i

p pij

qv Q v Q

p pij n

qv Q v Q

p p

q q

p p

q q

x n y

x ypara p K q

y y

y y

x

=

∈ ∈

∈ ∉

≤ ≥ = = −+ ≤∈

∑ ∑

∑ ∑

, {0,1}p pij ijl ∈

Nesta formulação, n representa o número de vértices ; K o número de carteiros

ou veículos disponíveis; qij a demanda na aresta (i,j); W a capacidade de cada veículo

(W ≥máx qij ); cij a distância do vértice i ao vértice j (custo de (i, j)); a variável 1pijx = ,

se a aresta (i,j) e atravessado pelo veículo p e 0 em caso contrário; a variável 1pijl = se

o veículo p serve a aresta (i,j) e 0 em caso contrário; z denota o menor inteiro maior

ou igual a z.

A relação (16) representa a função objetivo, que busca minimizar a distância

total viajada. As restrições (17) asseguram a continuidade da rota. As restrições (18)

declaram que cada aresta com demanda positiva é servida exatamente uma vez. As

restrições (19) garantem que a aresta (i,j) pode ser servida pelo veículo p somente se

E todo subconjunto não

vazio ~

Q de {2,3,…,n}

(21)

(22)

Page 54: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

41

ela é atravessada pelo mesmo. A capacidade do veículo não é violada por causa da

restrição (20). As restrições na relação (21) proíbem a formação de sub-rotas ilegais.

Observe que cada índice ~

q corresponde a um subconjunto do conjunto ~

Q . Finalmente

as restrições em (22) garantem a integralidade das variáveis.

Observe que para um dado veículo p e um subconjunto de vértices ~

Q , somente

uma das duas variáveis binárias ~1

p

qy ou ~

2

p

qy pode assumir valor 1. Desta forma,

qualquer ciclo com um conjunto de vértices em ~

Q e arestas atravessadas pelo veículo p

deve estar conectado a V \~

Q (bem como ao depósito, no vértice 1) formalmente

estabelecido pela relação:

~ ~~ ~ ~ ~

~

1 2 > Q -1 =1 =0 1.

i j i j

p p p pij ij

q qv Q v Q v Q v Q

x y y x∈ ∈ ∈ ∉

⇒ ⇒ ⇒ ≥∑ ∑ ∑ ∑

Diversos procedimentos heurísticos têm sido propostos para o PRAC, que por

sua vez, segundo Eiselt et al. (1995), podem ser classificados em 3 categorias: 1)

métodos construtivos simples; 2) métodos construtivos de duas fases; e 3) métodos de

melhoria.

3.6.2 – Algoritmos Heurísticos para o PCCC

Nesta seção, apresentam-se três tipos de algoritmos heurísticos destinados a

resolver o PCCC, bem como o caso mais geral que é o PRAC (GOLDEN et al., 1983).

Os algoritmos são os seguintes: Path–Scanning, Construct and Strike e Augment–

Merge. A seguir, descreve-se o funcionamento de cada um deles separadamente:

3.6.2.1 - Algoritmo Seletor de Caminho (Path – Scanning)

A idéia básica deste algoritmo é construir um ciclo por vez baseado em um

critério de otimização míope. Na formação de cada ciclo, um caminho é aumentado pela

Page 55: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

42

junção de um arco que seja mais promissor, até que a capacidade do veículo seja

extrapolada. A partir daí, o menor caminho de retorno ao depósito é selecionado. Na

escolha do arco mais promissor, cinco critérios de otimização são considerados a

saber:

Dado um caminho do depósito para o vértice i, escolhe-se o arco (i, j), sujeito à

restrição de capacidade, tal que: (1) a distância cij , por unidade de demanda restante é

minimizada; (2) a distância cij, por unidade de demanda restante é maximizada; (3) a

distância de retorno do vértice j até o depósito é minimizada; (4) a distância de retorno

do vértice j até o depósito é maximizada; (5) se o veículo está com menos da metade

cheia, maximize a distância de retorno do vértice j até o depósito, caso contrário,

minimize esta distância. A idéia principal é que, um número menor de ciclos longos

pode ter uma distância total menor. Independente do critério utilizado, uma vez que a

capacidade do veículo é totalmente utilizada, o ciclo será fechado pelo menor caminho

de retorno ao depósito.

No artigo de PEARN (1991) se comenta que, o algoritmo Path–Scanning é um

tanto simples de implementar, necessitando de pouco mais que 200 linhas de código

FORTRAN, produz bons resultados e requer relativamente pouco tempo de

processamento. Sua complexidade é de O(n3).

3.6.2.2 - Algoritmo de Construção e Remoção (Construct and Strike)

Este algoritmo heurístico foi apresentado por Christofides em 1973, com o

objetivo de encontrar uma solução aproximada para o PCCC. O algoritmo recebe este

nome, pois constrói repetidamente ciclos viáveis e então os remove.

O algoritmo Construct and Strike baseia-se na repetição de três Passos: i) O

primeiro passo tenta construir ciclos viáveis do grafo corrente, que serão removidos

posteriormente, obedecendo as seguintes condições: (1) a remoção de um arco servido

no ciclo não deve desconectar o grafo corrente; (2) a soma das demandas dos arcos

servidos nos ciclos não deve exceder a capacidade do veículo.

ii) O segundo passo da heurística de Cristófides registra as demandas dos

arcos servidos pelos ciclos criados no Passo (i) e elimina esses arcos do grafo corrente.

Adicionalmente, arcos artificiais que foram incrementados ao grafo no passo (i) são

Page 56: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

43

eliminados, tal que o grafo passado para o Passo 3 do algoritmo contenha somente

vértices e demandas em arcos não servidos. Este procedimento, de construir e remover

ciclos, será repetido até que nenhum ciclo mais seja encontrado.

iii) No terceiro e último passo, o algoritmo toma o grafo do Passo (ii) e adiciona

um conjunto de arcos artificiais, de custo mínimo, para garantir que o depósito seja de

grau par e que todos os outros vértices do grafo corrente sejam de grau par. O

algoritmo realiza isso encontrando um emparelhamento de peso mínimo entre os

vértices de grau ímpar do grafo corrente. Os arcos artificiais com seus respectivos

custos são adicionados, como conseqüência do cálculo dos caminhos de custo mínimo

entre os vértices de grau ímpar. Quando o depósito é de grau zero, é substituído por

dois vértices artificiais, que são conectados por um arco com um alto custo proibitivo

para garantir que ele não seja usado no emparelhamento. O grafo corrente, incluindo os

arcos artificiais determinado pela solução do emparelhamento é então retornado ao

Passo I(i) do algoritmo. As iterações permanecem entre os passos (i) – (ii) até que não

existam mais arcos a serem servidos. Este algoritmo foi implementado por Golden et

al.(1983) em FORTRAN, utilizando uma sub-rotina de emparelhamento de custo

mínimo, desenvolvida por Deris e Kazakidis (1979). A complexidade deste algoritmo é

de O(mn3) (PEARN, 1991).

3.6.2.3 - Algoritmo de Aumento e Junção (Augment – Merge)

Este procedimento foi originalmente proposto por Golden e Wong (1981) para

resolver o PCCC e o PRAC. Posteriormente, algumas modificações no critério do

cálculo da economia foram propostas por Golden et al. (1983), no intuito de melhorar o

Passo 3 (a Junção) do algoritmo. Os passos do algoritmo são descritos abaixo:

Algoritmo 3.6 – Procedimento Augment – Merge.

PASSO 1–INÍCIO: todas as demandas nos arcos são servidas por ciclos separados;

PASSO 2–AUMENTO: partindo do ciclo com a maior demanda, veja se a demanda

de um arco em um ciclo menor pode ser servida através de um ciclo maior;

Page 57: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

44

PASSO 3–JUNÇÃO: sujeito à restrição de capacidade, avalie a junção de quaisquer

dois ciclos. Junte os dois ciclos que produzir a maior economia positiva (para tal,

use a seguinte função economia Sij=li + lj – mij);

PASSO 4– ITERAÇÃO: repita o Passo 3 até finalizar.

No Passo 1, constrói-se ciclos iniciais tal que cada ciclo sirva exatamente a um

aresta. Isso é feito encontrando o caminho mínimo entre os vértices extremos de cada

aresta e o depósito. No Passo 2, ordena-se os ciclos encontrados do maior para o

menor com respeito ao custo (distância). O maior ciclo recebe o número 1, e assim

sucessivamente. A seguir, tenta-se servir a demanda de um arco localizado em um ciclo

menor por meio de um ciclo maior.

Por exemplo, na primeira rodada se têm m ciclos e, se analisa se a demanda do

arco no ciclo i+1 pode ser servida no ciclo i, isso é feito e o ciclo i+1 é desconsiderado.

Da mesma forma, se a demanda do arco no ciclo i+2 pode ser servida no ciclo i, isso é

feito e o ciclo i+2 é descartado, e assim sucessivamente. Se o ciclo i atinge sua

capacidade, ele é separado e o aumento começa no próximo ciclo. O processo continua

até que todos os ciclos tenham sido considerados.

O Passo 2 resulta na formação de um número de ciclos que cai em uma das

três classes: (1) ciclos com a capacidade atendida e separados; (2) ciclos

desconsiderados, pois as demandas de seus arcos puderam ser servidas por ciclos

maiores; (3) ciclos com demanda em um ou mais arcos, porém com capacidade não

preenchida.

No Passo 3 procura-se unir pares de ciclos através dos vértices comuns de

ambos os ciclos, que estão enquadrados na terceira categoria acima. O ciclo unido ou

fundido deve obedecer à limitação de capacidade do veículo e deve servir ao mesmo

conjunto de arcos dos dois ciclos originais.

A seguir, é apresentado um exemplo extraído de Golden et al. (1983) para

ilustrar o procedimento descrito acima. Considere o exemplo da Figura 3.5 abaixo onde

os custos de cada aresta estão indicados, o depósito está no vértice 1, as arestas

possuem demandas unitárias e a capacidade do veículo é de 4 unidades.

Page 58: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

45

O Passo 1 produz nove ciclos, listados abaixo e ordenados por custo

(distância).

Tabela 3.1 – Ciclos gerados pelo passo 1 ordenados em ordem decrescente.

Número

do ciclo

Custo do

ciclo Ciclo

1 16 1 4 6 1 2 15 1 5 6 1 3 14 1 4 1 4 13 1 3 6 1 5 10 1 5 1 6 10 1 2 6 1 7 8 1 6 1 8 8 1 3 1 9 6 1 2 1

Na tabela 3.1, o sublinhado indica as arestas cujas demandas estão sendo

atendidas. O Passo 2 busca aumentar a demanda atendida no ciclo 1 com as

demandas atendidas no ciclo 2, no ciclo 3, e assim por diante. O passo de aumento

(passo 2) continua buscando aumentar o ciclo 1 até obter o resultado apresenta-se a

seguir:

3

3

4

5

4

5

7

5

6

Figura 3.5 – Grafo do exemplo

Dep.

Page 59: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

46

Tabela 3.2 – Ciclos resultantes após o passo 2 (aumento) ser executado.

Número do

ciclo

Custo do

ciclo Ciclo

1 16 1 4 6 1

2 11 1 5 6 1

4 9 1 3 6 1

6 6 1 2 6 1

Pode-se observar que nenhum destes ciclos acima preenche completamente a

capacidade do veículo (caminhão), podendo, desta forma, serem unidos. Durante a

junção de quaisquer dois ciclos, deve-se atentar para que o ciclo resultante sirva ao

mesmo conjunto de arcos dos dois ciclos originais. Por exemplo, embora o ciclo 1 tenha

o vértice 6 em comum com os demais ciclos, não se deve uni-los, evitando assim, que 6

1 deixe de ser servida. Para ilustrar, considere a junção dos ciclos 1 e 2 através do

vértice 6 resultando no seguinte ciclo: 1 4 6 5 1 . Observe que a aresta (1, 6) deixou

de ser atendida. Este fato é visto pelo procedimento como uma junção ilegal. A junção

é feita no Passo 3, produzindo os seguintes resultados iniciais:

3

3

4

5

4

5

7

5

6

Figura 3.6 – Aumento do ciclo 1, com os ciclos 3 e 7.

Page 60: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

47

Tabela 3.3 – Ciclos formados pelas junções do passo 3.

Nome da

Junção Economias Ciclo

T24 8 1 5 6 3 1

T26 8 1 5 6 2 1

T46 8 1 3 6 2 1

As economias são ordenadas de forma decrescente e selecionada a maior. Seu

cálculo baseia-se na seguinte função:

Sij=li + lj – mij (23)

Onde: Sij = economia atribuída à junção;

l k = custo do k-ésimo ciclo;

m ij = custo do ciclo resultante da junção dos ciclos i e j.

No grafo do exemplo, tem-se os custos l2=15, l4=13 e o custo do ciclo resultante

m24=20.

3

3

4

5

4

5

7

5

6

Figura 3.7 – Junção dos ciclos 2 e 4.

Page 61: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

48

O valor das economias para as três junções acima é 8. Seleciona-se

arbitrariamente T24 . O ciclo 4 é então descartado, e o ciclo 2 passa a ser a junção T24 .

A partir daí, tenta-se atualizar as junções T26 e T46. A partir deste momento, não é

possível mais realizar junções e o algoritmo pára. Os ciclos finais são:

1 4 6 1

1 5 6 3 1

1 2 6 1

O custo total é de 16 + 20 + 10 = 46. Este valor parece ser a solução ótima.

Pelo que foi exposto, pode-se perceber a existência de uma diversidade de

propostas para calcular soluções que envolvem os Problemas de Roteamento em Arcos

(PRA). Tais classes de métodos apresentam complexidade e formas de abordagens

diversas. Considerando a busca de soluções aproximadas para o problema do lixo,

estas devem ser abordadas segundo o que se pretende resolver.

Portanto, se o objetivo é designar veículos coletores para diversas rotas,

respeitando suas capacidades e otimizando a distância total percorrida, a abordagem é

de um tipo. Por outro lado, conhecendo-se os setores de coleta, pode-se desejar que a

distância percorrida pelo veículo coletor seja a menor possível. Trata-se, portanto, de

uma outra abordagem cujo objetivo também é otimizar os custos com transporte.

Soluções deste tipo possuem grande importância, visto que a concepção de rotas é

uma atividade dinâmica, pois em cidades de médio e grande porte, a rede viária está

em constantes mudanças em suas configurações visando atender o aumento de fluxo e

o bem estar da população.

Concluindo, como foi dito, o objetivo do presente trabalho de dissertação

enquadra-se na segunda abordagem, que consiste em propor um método de solução

aproximada para o PCCM, visando a otimização das rotas a serem percorridas pelos

veículos.

Page 62: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

49

Capítulo 4

Algoritmo Proposto para a Otimização da Coleta 4.1 – Introdução

Neste capítulo serão descritas as etapas do algoritmo empregado na otimização

das rota de coleta de um veículo em seu respectivo setor de coleta. Trata-se de um

algoritmo onde se utiliza a metaheurística GRASP destinado a resolver o PCC em

grafos mistos G = (V, A ∪ E). Deve-se lembrar, que os grafos mistos são formados por

um conjunto de arestas E (uma abstração de ruas de mão-dupla) e um conjunto de

arcos A (uma abstração de ruas de mão-única) e que os modelos para resolver o PCC

para este tipo de grafo são NP-Completos, isto é, não existem algoritmos de eficiência

polinomial para resolver este tipo de problema. A seguir, serão abordadas algumas

generalidades sobre metaheurísticas, incluindo suas características e tipos, e em

seguida será apresentado o algoritmo proposto para resolver o PCCM.

4.2 – Generalidades sobre Metaheurísticas

Considere um conjunto S de variáveis discretas s (chamadas soluções) e uma

função objetivo f: S → IR , o qual associa a cada solução s∈S um valor real f(s).

Supondo que o problema seja de minimização, deseja-se encontrar a solução s* ∈ S,

cujo valor seja mínimo, isto é, para todo s ∈ S, f(s*)≤ f(s). Neste caso, s* é chamada de

solução ótima.

Muitos problemas com as características descritas acima, são classificados na

literatura como NP-Completos, que significa, a não existência de algoritmos que os

resolvam em tempo polinomial. Pertence a essa classe, a maioria dos problemas de

otimização combinatória (SOUZA, 2002). Considere como exemplo o Problema do

Page 63: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

50

Caixeiro Viajante (PCV), que consiste em um vendedor sair de uma cidade chamada

origem, visitar cada uma das n-1 cidades restantes uma única vez, e retornar à cidade

origem percorrendo a menor distância possível. Na literatura, a rota fechada que passa

uma única vez pelos vértices de um grafo é conhecida como ciclo hamiltoniano. O PCV

busca um ciclo hamiltoniano de custo mínimo. Desta forma, a dificuldade de solução do

PCV reside no grande número de soluções viáveis (ciclos hamiltonianos) existentes,

gerando aproximadamente (n-1)!/2 rotas possíveis. Portanto, mesmo com os melhores

computadores, seria impraticável enumerar todas as rotas possíveis, para valores

elevados de n, e logo identificar o ciclo de menor custo.

Esta dificuldade motivou o surgimento de algoritmos heurísticos destinados a

encontrar “boas” soluções ao invés do ótimo. Segundo Souza (2002), as heurísticas

podem ser definidas como uma técnica que procura soluções próximas da ótima a um

custo computacional razoável, sem, no entanto, estar capacitada a garantir a

otimalidade, bem como garantir quão próximo, uma determinada solução aproximada,

está da solução ótima.

A partir da junção de conceitos das áreas de Otimização e Inteligência Artificial,

foi possível construir melhores estratégias, conhecidas como “metaheurísticas”. As

metaheurísticas são procedimentos de busca local, destinados a encontrar uma boa

solução, eventualmente a ótima, consistindo na aplicação, em cada passo, de uma

heurística subordinada, a qual tem que ser modelada para cada problema específico.

Contrariamente às heurísticas convencionais, as metaheurísticas são de caráter geral e

tem condições de escapar de ótimos locais. De acordo com Souza (2002), as

metaheurísticas diferenciam-se entre si pelas seguintes características:

a) critério de escolha de uma solução inicial;

b) definição da vizinhança N(s);

c) critério de seleção de uma solução vizinha dentro de N(s);

d) critério de término.

Pode-se destacar como metaheurísticas os seguintes procedimentos:

Algoritmos Genéticos (AG), Redes Neurais, Simulated Annealing (Têmpera Simulada),

Busca Tabu (BT), GRASP (Greedy Randomized Adaptive Search Procedure), VNS

(Variable Neighborhood Search), Colônia de Formigas, entre outros. A seguir será

Page 64: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

51

discutida apresentada a metaheurística GRASP com maiores detalhes, devido a

facilidade em implementá-la e a velocidade de resposta.

4.2.1 – Algoritmo GRASP

O procedimento GRASP (procedimento de busca adaptativa gulosa e aleatória)

é um método iterativo, proposto por Feo e Resende (1995), que consiste de duas fases:

uma fase de construção, na qual uma solução viável é gerada, elemento a elemento, e

uma fase de busca local na qual um ótimo local é pesquisado, na vizinhança da solução

viável construída. A melhor solução aproximada encontrada ao longo de todas as

iterações GRASP realizadas é retornada como resultado. A figura 4.1 ilustra o

pseudocódigo de um procedimento GRASP. Neste pseudocódigo, f(.) é a função

objetivo a ser minimizada, g(.) é a função critério de escolha dos elementos da Lista de

Candidatos Restrita (LCR), N(.) é a vizinhança da solução construída que será

examinada, GRASPmáx é o número máximo de iterações, e s é a melhor solução

encontrada que retornará do procedimento GRASP.

Figura 4.1- Pseudocódigo da metaheurística GRASP

Na fase de construção, uma solução é iterativamente construída, elemento por

elemento. A cada iteração desta fase, os próximos elementos candidatos a serem

incluídos na solução são colocados em uma lista C de candidatos, seguindo um critério

de seleção pré-determinado. Esse processo de seleção é baseado em uma função

Procedimento GRASP (f(.),g(.),GRASPmáx ,s); 1 f *← ∞; 2 para (Iter = 1,2,.....,GRASPmáx) faça; 3 Construção (g(.),α,s); 4 BuscaLocal (f(.),N(.),s); 5 se (f(s) < f *) então; 6 s* ← s; 7 f * ← f(s); 8 fim-se; 9 fim-para; 10 s ← s*; 11 Retorne s; Fim GRASP;

Page 65: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

52

adaptativa gulosa g: C → IR, que estima o benefício da seleção de cada um dos

elementos. Em outras palavras, a função gulosa representa o aumento sofrido pela

função custo devido à incorporação deste elemento na solução em construção

(RESENDE e RIBEIRO, 2002).

A heurística é adaptativa porque os benefícios associados com a escolha de

cada elemento são atualizados em cada iteração da fase de construção, para refletir as

mudanças oriundas da seleção do elemento anterior. A componente probabilística do

procedimento reside no fato de que cada elemento é selecionado de forma aleatória a

partir de um subconjunto restrito formado pelos melhores elementos, com o menor

custo incremental g(e), que compõe a lista de candidatos. Este subconjunto recebe o

nome de Lista de Candidatos Restrita (LCR) e pode ser limitada pelo número ou pela

qualidade de seus elementos. O aspecto guloso do algoritmo verifica-se no fato de que,

a seleção dos elementos na LCR para a chegar à melhor solução em construção, seja

apenas daqueles que aumente o custo o mínimo possível (RESENDE e RIBEIRO,

2002). Esta técnica de escolha permite que diferentes soluções próximas do ótimo

sejam geradas em cada iteração GRASP. A figura 4.2 a seguir, representa o

pseudocódigo da fase de construção GRASP, onde α ∈ [0,1] é um parâmetro dado:

Figura 4.2 - Pseudocódigo da fase de construção.

Pode-se dizer que o parâmetro α (responsável pelo tamanho da LCR) controla

o nível de gulodice e aleatoriedade do procedimento Construção. Para α = 0, as

Procedimento Construção(g(.),α,s); 1 s←∅; 2 Inicialize o conjunto C de candidatos; 3 enquanto (C ≠ ∅) faça; 4 gmin ← min {g(e) | e ∈ C}; 5 gmax ← máx {g(e) | e ∈ C}; 6 LCR={e ∈ C | g(e) ≤ gmin + α (gmax – gmin)}; 7 Selecione um elemento e∈ LCR aleatoriamente; 8 s←s ∪ { e }; 9 Atualize o conjunto C de candidatos; 10 fim-enquanto; 11 Retorne s; Fim Construção;

Page 66: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

53

soluções viáveis geradas serão puramente gulosas, enquanto α = 1 produz soluções

puramente aleatórias. Portanto, ele é basicamente o único parâmetro a ser ajustado

durante a implementação.

Como as soluções geradas pela fase de construção nem sempre são

localmente ótimas, faz-se importante à fase de busca local objetivando a melhoria da

solução construída. Deve-se ressaltar, que a eficiência da busca local depende da

qualidade da solução construída. Boas soluções construídas servem de bons pontos de

partida para a busca local, acelerando-a. O pseudocódigo da figura 4.3 exemplifica um

procedimento de busca local com respeito a uma certa vizinhança N(.) do ponto s.

Figura 4.3 - Pseudocódigo da fase de busca local

Um algoritmo de busca local trabalha de forma iterativa, por substituir

sucessivamente, a solução corrente por uma solução melhor, localizada na vizinhança

da solução corrente.

4.3 – O Algoritmo Proposto

Nesta seção é descrito o algoritmo utilizado para resolver um PCCM. Trata-se

de um algoritmo baseado na metaheurística GRASP como foi antecipado. As fases

componentes deste algoritmo: fase de construção e fase de busca local; serão descritas

separadamente de maneira que sejam identificadas suas peculiaridades.

Posteriormente é apresentado um pequeno exemplo.

Procedimento BuscaLocal (f(.),N(.),s); 1 s* ← s; {melhor solução encontrada} 2 V = {s’ ∈ N(s) | f(s’) < f(s)}; 3 enquanto (|V| > 0) faça; 4 Selecione s ∈ V; 5 se (f(s) < f(s*) então s* ← s ; 6 V = {s’ ∈ N(s) | f(s’) < f(s)} 7 fim-enquanto; 8 s ← s* ; 9 Retorne s ; Fim BuscaLocal;

Page 67: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

54

4.3.1 – Fase de Construção

O objetivo da fase de construção, basicamente é orientar as arestas do grafo a

fim de obter um grafo direcionado, e com o auxílio de um algoritmo para resolver o

Problema de Fluxo de Custo Mínimo (PFCM) torná-lo simétrico (ver ANEXO A, seção

2). Nesta condição, o PCC é resolvido em tempo polinomial. Deste modo se obtêm uma

solução aproximada para o PCCM no grafo misto original.

Inicialmente cria-se uma lista de arestas não orientadas (U), contendo todas as

arestas do grafo (U = E). A cada passo da fase de construção, uma aresta é

selecionada aleatoriamente e orientada. O conjunto de arestas orientadas será

denotado por Ed. Para a execução, a partir de agora, d(v) será a diferença entre o

número de arcos e arestas orientadas que entram em v e o número de arcos e arestas

orientadas que saem de v, ou seja, d(v)= d(v)- - d(v)+. Sem causar confusão, d(v) será

chamado de grau do vértice v. Portanto, d(v)> 0 indicará que existe oferta no vértice v,

d(v)< 0 indicará a existência de demanda, enquanto d(v)=0 indicará que v é um vértice

de passagem.

A função de avaliação gulosa w(i,j) de determinada aresta (i,j), representa a

conveniência de orientá-la, de forma a aproximar o grafo de um grafo simétrico. O valor

de w(i,j) para determinada aresta (i,j) será o seu peso. Considere, por exemplo, uma

aresta (i,j) tal que d(i)=3 e d(j)= -4. A orientação mais apropriada para (i, j) seria de i

para j , e não ao contrário (Figura 4.4). Por outro lado, no caso d(i)=2 e d(j)=2, não

existe um sentido mais apropriado que outro, portanto a orientação será aleatória.

Figura 4.4 - Orientação de uma aresta (i, j).

d(i)=3

d(j)= -4

Page 68: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

55

Considerar a seguinte definição para a função w(i, j), da aresta(i,j). Seja ε um

número positivo muito pequeno, pode-se considerar os seguintes casos:

Caso 1: se d(i).d(j) > 0 então w(i,j) = -|d(i) + d(j)|.

Caso 2: se d(i).d(j) < 0 então w(i,j) = |d(i) - d(j)|.

Caso 3: se d(i)=0 e d(j)= 0 então w(i,j) = - ε.

Caso 4: se d(i)=0 ou d(j)= 0 então w(i,j) = ε.

Portanto, após todos os pesos w(i,j) terem sido calculados, o conjunto U será

organizado em ordem decrescente de pesos w. A cada passo na fase de construção,

uma aresta (i, j) é aleatoriamente selecionada entre os λ primeiros elementos de U,

onde λ é o tamanho da LCR. Então a aresta (i,j) é orientada do vértice com maior grau

para o vértice com menor grau. Se i e j tiverem o mesmo grau, então (i,j) é

aleatoriamente orientado. Os conjuntos U e Ed são atualizados através da retirada da

aresta (i,j) de U e a inserção desta no conjunto Ed. Do mesmo modo d(i), d(j) e w(i,j) são

também atualizados. A fase de construção termina quando todas as arestas tiverem

sido selecionadas e orientadas. Conseqüentemente, quanto maior o número de arestas

do grafo, mais tempo levará para a fase de construção ser finalizada. Desta forma, a

fase de construção termina após |E| passos. Logo, se executa o cálculo de Fluxo de

custo mínimo o PFCM sobre o grafo direcionado GF =(V, A ∪ Ed ∪ Ed’), com demandas

e ofertas computadas com respeito aos arcos em A ∪ Ed, onde Ed’ é o conjunto de

arcos paralelos àqueles em Ed com o mesmo custo, porém com direções opostas.

Adicionando os arcos pertencentes à solução do PFCM ao grafo G=(V, A ∪ Ed), obtém-

se um digrafo GS =(V, A ∪ Ed ∪ AF), simétrico e euleriano, onde AF é formado pelos

arcos utilizados na solução do PFCM. Associado a este grafo estará uma rota T com

custo Z(T) correspondente a uma solução do grafo misto original. Após estes passos,

segue-se a fase de melhoria.

4.3.2 – Fase de Melhoria

Nesta fase, se aplica um procedimento de busca local, objetivando encontrar

um ótimo local que seja melhor que a solução construída. O procedimento parte então,

Page 69: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

56

da rota T obtida na fase de construção sobre o grafo que é a solução do PCCM. O grafo

solução, chamado de GS, é representado por um digrafo (grafo orientado) fortemente

conectado, contendo todos os arcos originais e arestas orientadas do grafo e uma ou

mais cópias destas ligações. Deve-se notar, que no grafo solução existirá ou um arco

simples, dois arcos com direções opostas ou dois ou mais arcos, todos eles com a

mesma direção, associado a cada aresta original e ∈ E.

Dados dois vértices i e j unindo um caminho de cópias, pode-se efetuar a

melhoria, através da substituição destas cópias pelas cópias dos arcos do caminho

mínimo em G unindo tais vértices. Portanto a melhoria, definida como m(i,j), é a

diferença entre o valor da função objetivo antes e após a substituição. Mais ainda, ela

pode ser calculada como o custo do caminho eliminado, menos o custo do caminho

mínimo adicionado. Em cada passo da fase de melhoria, se seleciona um par de

vértices que estejam unidos por um caminho de cópias. Para tanto, se deve explicitar

tais pares construindo um novo grafo misto G’=(V, E’, A’), derivado do grafo solução Gs,

como segue:

Para cada arco original (i,j) ∈ A coloque n - 1 cópias dele em A’, onde n é o

número de vezes que ele aparece em Gs. Para cada aresta e∈ E, tendo exatamente

dois arcos com direções opostas associados em Gs,, coloque uma aresta em E’, caso

contrário, n –1 cópias de seus arcos associados são adicionados a A’.

Então, computa-se estas componentes conectadas do grafo G’ e se reduz a

busca a pares de vértices dentro de cada componente. No intuito de reduzir o esforço

computacional, esta busca estará restrita apenas a vértices adjacentes a somente um

outro vértice. Se o valor da melhoria for positivo a troca é realizada, caso contrário, será

rejeitada. A fase de melhoria termina quando todos os pares de vértices forem

revisados e nenhuma melhoria possa ser mais realizada.

Após completar um número de iterações igual a NITER (Nmáx), o algoritmo é

finalizado e a melhor solução encontrada é retornada como solução final. O

pseudocódigo do algoritmo GRASP é apresentado a seguir:

Page 70: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

57

Procedimento Otimiza_Coleta (G(V,A ∪E), Nmáx, λ); 1 iterm 0;

2 Niter← Nmáx;

3 enquanto (iter < Niter ) faça

4 iter ← iter +1;

seja Ed = ∅ e U = E. Compute o peso(e) = w(i,j); para todo e = (i,j) ∈ U;

5 enquanto (U ≠ ∅) faça {Fase de Construção}

6 Considere as λ arestas em U com maior peso. (λ é o tamanho da L.C.R.);

7 Selecione uma aresta (i,j) aleatoriamente, oriente-a, retire-a de U e adicione a Ed ;

8 Atualize os pesos de todas as arestas em U incidentes em i e j;

9 fim-enquanto;

10 calcule os graus (oferta/demanda) dos vértices em GF ;

11 resolver o PFCM em GF , com os graus calculados em (10);

12 adicionando a A ∪ Ed uma cópia de cada arco e cada aresta orientada usada pelo fluxo

(11), obtém-se um grafo Euleriano Orientado com uma rota T de custo z(T) ;

13 enquanto (houver melhoria) faça { Fase de Melhoria}

14 remova de T as cópias das arestas que apareça mais que duas vezes em T e tem

rótulos de orientação opostos. Atualize z(T);

15 construa o Grafo Misto G’ = (V , E’, A’) e compute seus componentes conectados,

conforme descrito em (4.3.2);

16 para cada um destes componentes conectados faça:

encontre u e v tal que o tamanho do menor caminho de u até v em G, chamado de φ,

seja menor que o tamanho do menor caminho de u até v, ϕ, neste componente

conectado; Remova de T as cópias dos links em ϕ e adicione a T uma cópia de cada

link em φ. Melhoria m tamanho (ϕ) – tamanho(φ) ; z(T) m z(T) – melhoria;

17 fim-enquanto;

Page 71: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

58

Figura 4.5 - Pseudocódigo do algoritmo do carteiro chinês misto baseado na GRASP.

Observa-se que os parâmetros NITER e λ (tamanho da LCR) são os únicos a

serem ajustados no algoritmo. Seguindo as recomendações dos testes apresentados

em Corberán et al. (2002), nesta pesquisa foram considerados seis diferentes valores

para λ na fase de construção. Eles foram: o valor um (01) que representa uma LCR

com apenas um elemento, equivalente a um algoritmo puramente guloso; o valor que

torna o algoritmo puramente aleatório dependerá do numero máximo de arestas de

cada instância. As funções de avaliação w(i, j), apresentadas na seção 4.3.1, foram

escolhidas por terem gerado as melhores soluções conforme descritas no trabalho de

Corberán et al. (2002).

4.3.3 – Ilustração de um Pequeno Exemplo

A fim de esclarecer de que forma trabalha o algoritmo proposto para resolver o

PCCM, será ilustrada uma iteração do algoritmo para um grafo misto pequeno

(7 vértices, 11 ligações das quais 4 são arestas) e solução aproximada resultante.

Considere o grafo misto inicial G= (V,A∪ E) mostrado na fig. 4.6(a), nela se indicam os

respectivos custos sobre os arcos e arestas, além dos graus computados de cada

vértice.

Fase de Construção:

Esta etapa da fase de construção, vai do passo 4 até o passo 9 do algoritmo e

tem por objetivo orientar todas as arestas do grafo, tornando-o num digrafo. Os pesos

18 se (z(T) < z best) então {Teste Final}

19 z best ← z(T);

20 T best ← T;

21 fim-enquanto;

22 Retorne z best e Tbest.

Fim Otimiza_Coleta.

Page 72: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

59

w(i, j) de cada aresta são calculados segundo os casos já descritos na seção 4.3.1. A

tabela 4.1 a seguir se refere à orientação das arestas do grafo, o qual foi executado

pelo laço enquanto do passo 5 no algoritmo.

Tabela 4.1 – Orientação das arestas do grafo misto.

A seguir, a seqüência de grafos apresentada pela fig. 4.6 mostra a aresta que

foi direcionada após cada iteração e os respectivos graus recalculados, assim pode ser

efetuado o cálculo dos novos pesos.

ITER PESOS U Ed

0 w(4,5)=3; w(1,6)=ε; w(3,6) = ε;w(5,7) = ε {(1,6), (3,6),(4,5),(5,7)} ∅

1 w(4,5)=3; w(1,6)=ε; w(3,6) = ε;w(5,7) = H {(1,6),(3,6),(4,5)} {(5,7)}

2 w(1,6) = H;w(3,6) = ε; w(4,5) = ε {(3,6),(4,5)} {(5,7), (6,1)}

3 w(4,5) = H, w(3,6)=-ε {(3,6)} {(5,7),(6,1),(5,4)}

4 w(3,6)=-H. ∅ {(5,7),(6,1),(5,4),(6,3)}

G = (V, A�E)

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

0 0

-2

1

1

0 0

(a) (a) - Grafo misto inicial.

Page 73: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

60

Figura 4.6 – Grafos resultantes ao final de cada iteração do passo 5 do algoritmo, com

os respectivos graus finais dos vértices durante a fase de construção.

Ao final do laço do passo 5, todas as arestas já estão orientadas (grafo da fig.

4.6-e). Aplica-se então o algoritmo de Fluxo de Custo Mínimo, referente ao passo 11,

no grafo GF da figura 4.7:

Figura 4.7 – Grafo GF onde será aplicado o PFCM.

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

GF = (V, A�Ed�Ed´)

-1 1

1 0

-1 -1

1

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

0

0

0

-2

1

0

1

(b) - G após a 1º iteração interna.

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

0

1

1

-1

-1

-1

1

(e) - G após a 4º iteração interna.

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

0

0

1

-1

0

-1

1

(d) - G após a 3º iteração interna.

2

4

3

5

6 7

1 2

1 3

3

5

6

1

2

2

3

2

0

0

1

-2

0

0

1

(c) - G após a 2º iteração interna.

Page 74: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

61

Note que os arcos tracejados pertencem ao conjunto Ed´ , isto é, são arcos que

são acrescentados em sentido contrário as arestas que foram direcionadas. Os arcos

utilizados na solução do PFCM em GF, identificados como AF (arcos em linha cheia),

serão acrescentados ao grafo G=(V, A ∪Ed ) , obtendo assim o grafo GS da figura 4.8:

Figura 4.8 – Grafo solução GS , simétrico e euleriano.

Finalmente tem-se o grafo solução que é Simétrico e Euleriano. Uma das

rotas pode ser indicada por T={1,7,6,5,4,6,5,7,6,5,4,3,6,3,2,1,7,6,1} tendo um custo

total de Z(T) = 45.

Fase de Melhoria:

Deve-se agora, identificar em GS se existem mais de dois pares de arcos

orientados em sentidos opostos, adjacentes aos mesmos vértices. Caso haja, o

excesso de pares deve ser removido. Este procedimento, referente ao passo 14 é

importante, pois reduz o custo Z(T) sem alterar as características do grafo.

Procede-se em seguida ao passo 15, no qual serão computadas as

componentes conectadas. Tais componentes estão ilustradas no grafo da fig. 4.9:

GS = (V, A�Ed�AF)

2

3

2 1

3

2

4

3

5

6 7

1 2

1

3 3

5

6

1

2

2

3

2 2 2

Page 75: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

62

Figura 4.9 – Componentes conectadas.

Como os arcos aumentados, são aqueles que apresentam a menor distância

(custo) entre seus vértices adjacentes, não existe melhoria positiva a ser realizada.

Portanto Z(T)= 45 e Zbest= 45. A partir deste momento, inicia-se a 2º iteração.

Este processo continuará até que o número de iterações, registrado pela

variável Iter , alcance o número de iterações GRASP (Niter).

2

4

3

5

6 7

1

1

3

2

3

2

G´ = (V, A´ , E´)

2 2

Page 76: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

63

Capítulo 5

Implementação Computacional e Testes

5.1 – Implementação Computacional do Modelo

Conforme foi antecipado, o algoritmo utilizado para calcular uma solução

aproximada do PCCM baseia-se na metaheurística GRASP, pelas vantagens de

rapidez e simplicidade na execução computacional. Este possui duas fases: uma fase

de construção e outra de busca local ou melhoria. Na seção 4.3.2, figura 4.5,

apresentou-se o procedimento completo denominado OTIMIZA_COLETA. A estrutura

de dados utilizada, para armazenar as informações do grafo, foi uma Lista de Arcos

(array unidimensional), com cada índice composto pelos seguintes campos: Noi (vértice

inicial), Nof (vértice final), Custo, PRT (Parâmetro que identificará arestas), conforme

mostra a Figura 5.1. Cada aresta do grafo é registrada na lista como sendo dois arcos

contrários. Assim, quando uma aresta for selecionada para ser direcionada, um dos

arcos que a representa no vetor lista será desconsiderado, prevalecendo o arco que

indica a sua direção atual. Para isto, atribui-se o valor (–1) ao campo PRT referente ao

arco desconsiderado.

Para o armazenamento de informação no vetor Lista, utiliza-se o Procedure

LerArquivo, que abre um arquivo do tipo texto, cuja localização é passada na entrada

do programa. Este arquivo contém os dados relativos ao grafo, os quais são

transferidos para o vetor Lista.

A fase de construção está formada por diversas rotinas, o qual utiliza estruturas

de dados, tais como alocação dinâmica de memória, pilhas e recursividade. Para

completar sua implementação foi necessário recorrer a algoritmos que resolvem

Page 77: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

64

problemas clássicos da teoria dos Grafos como: Caminho Mínimo, Fluxo Custo Mínimo

e Circuito de Euler.

O programa completo do algoritmo recebeu o nome de OTIMIZA_COLETA, e

foi implementado utilizando o modo Console Aplication do DELPHI 5®.

Adicionalmente, foram preparadas outras pequenas rotinas. Por exemplo, para

calcular os graus dos vértices no grafo utiliza-se o Procedure CalculaOfertaDemanda

armazenado-os em um vetor (array unidimensional) chamado OF_DM. A Function

Qaresta foi utilizada para computar o número de arestas (arcos não direcionados) do

grafo. O peso de cada aresta é calculado por meio do Procedure ComputaPesos e

armazenado em um vetor chamado LCR, com cada índice composto pelos seguintes

campos: Peso, Noinicial, Nofinal, Ind_i, Ind_ j (Figura 5.2). As três rotinas mencionadas

acima, são utilizadas nos passos 4 e 8 do procedimento da figura 4.5, descrito no

Capítulo 4. Em particular, a rotina CalculaOfertaDemanda é chamada novamente no

passo 10 do procedimento.

Vetor Lista

Figura 5.1 - Lista de Arcos utilizada para armazenar G=(V, A ∪ E).

Vetror LCR(Lista de Candidatos Restrita)

Figura 5.2 - Vetor utilizado para armazenar os pesos w(i,j) das arestas.

Noi

Nof

Cus

to

PR

T

..........

Pes

o

Noi

nici

al

Nof

inal

Ind_

I

Ind_

j

..........

1º índice 2º índice MÁX.

1º índice V -ésimo Índice 2º índice

Page 78: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

65

O Procedure OrdenaLCR, como o próprio nome diz, ordena a lista de

candidatos utilizando o algoritmo de Inserção Direta.

O Procedure FluxoCustoMínimo tem por objetivo tornar simétrico o grafo

direcionado, obtido pela orientação das arestas armazenadas na LCR. Tal rotina

soluciona o problema de fluxo de custo mínimo (PFCM) em um grafo direcionado com

ofertas e demandas computados nos vértices. A implementação do PFCM realizada em

Neto (2002) foi adaptada para este trabalho. Ela foi, basicamente, a implementação do

algoritmo Simplex Primal-Dual para Redes que resolve o PFCM, onde se incorporam

algumas melhoras para execução do método Simplex propostas por Golfarb et. al

(1990); com as quais o método Simplex chega a ter complexidade polinomial, O(mn).

Uma adaptação incorporada foi a criação de um vetor chamado Listael, o qual

armazena os arcos pertencentes ao ciclo formado pelo arco entrante, que possuem

fluxo zero. Umas das características dos grafos com grau igual a zero, é a existência de

arcos com fluxo fij = 0 na árvore básica. Portanto, no momento da seleção do arco

candidato a deixar a base (min { fij |i,j∈ V } dentre os arcos do ciclo), surge mais de um

arco com fij = 0. Para resolver isto, todos os arcos pertencentes ao ciclo formado pelo

arco entrante, são armazenados no vetor Listael com seus respectivos valores de fluxo.

Então, o primeiro arco da lista com fij = 0 será selecionado como candidato a deixar a

base, opção inspirada no método de Bland que evita conseqüências negativas na

presença de uma solução viável degenerada (MORALES, 2000).

A saída da rotina descrita acima é um vetor chamado Árvore, cujo conteúdo é

formado pelos arcos que formam a solução do PFCM. Estes arcos deverão ser

acrescentados ao grafo original de forma a torná-lo simétrico. Isto é feito pela rotina

Procedure IncementaLista, o qual transfere os arcos do vetor Árvore para o vetor Lista.

Pode-se dizer que a rotina FluxoCustoMínimo representa a parte principal do

programa, uma vez que, após sua execução, o grafo terá se tornado num grafo

euleriano ou não, caso ocorra um ciclo negativo. Neste caso, o programa é encerrado,

indicando que o problema é inviável.

O Procedure CircuitoEuleriano será executado ao final da fase de construção

e irá determinar a rota (itinerário) a ser percorrida pelo veículo coletor a partir de um

vértice inicial, o qual foi selecionado como entrada no início do programa. Com a

Page 79: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

66

finalidade de implementar o procedimento acima, utilizou-se uma lista de adjacências

para armazenar o grafo. Os vértices pertencentes ao circuito euleriano, são

armazenados em um vetor alocado dinamicamente chamado CircuitoEuler. O algoritmo

utilizado para implementar esta rotina é de autoria de Silva e foi encontrado no manual

da disciplina de Pesquisa Operacional lecionada pelo mesmo autor na Universidade

Autônoma de Lisboa (UAL).

Juntamente com o circuito armazenado, o procedimento CircuitoEuleriano

também armazena o custo da rota, isto é, a distância total percorrida pelo veículo e os

devolve ao fim do procedimento.

Após uma solução ter sido construída, procede-se a fase de melhoria. Nesta

fase destaca-se a Function PodeMelhorar, cujo objetivo é encontrar dentre os arcos e

arestas orientadas, adicionadas ao grafo original, aquele cujos vértices não estejam

conectados a nenhum outro arco. Isto é feito de modo a agilizar a fase de melhoria. Tal

função retorna um valor booleano.

Selecionados os vértices u e v, o Procedure Dijkstra (Syslo, 1989) irá procurar

um menor caminho entre este(s) par(es) de vértices que tenha custo menor que o custo

do arco cujos vértices são extremos. Caso este caminho exista, procede-se à

substituição do arco atual pelo arco ou pelos arcos contidos no menor caminho.

Novamente então, a rotina CircuitoEuleriano é executada para que o custo e a rota

sejam atualizados.

5.2 – Formulação do Modelo e Testes

A formulação do PCCM apresentada na seção 3.5.1 do Capítulo 3 é uma

formulação de PLI, proposta por Ralphs (1993) para resolver o problema de forma

exata. Tal modelo foi utilizado em três grafos, com 30%, 50% e 70% do total de

ligações compostas por arcos. Os testes realizados para a obtenção da solução ótima

em tais grafos foram realizados utilizando o software LINDO® 6.01 em um PC com

processador AMD Duron 1,2 Ghz e 248 Mb de memória e, observou-se um elevado

tempo de processamento para os grafos com maior número de variáveis. Além disso,

nos grafos com 30% e 50% de arcos não foi possível alcançar a solução ótima devido a

uma falha no sistema acusando falta de memória.

Page 80: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

67

Através de uma adaptação feita no modelo da seção 3.5.1, foi possível obter a

solução ótima nos grafos testados. Tal adaptação é um novo modelo de PLI para o

PCCM, onde são consideradas algumas modificações. Sabendo-se que uma cópia

orientada de cada aresta e de cada arco será incluída no grafo aumentado ótimo, pode-

se considerar os custos destas cópias como constantes na função objetivo. Fazendo

isso, quando o problema for resolvido só será considerado o custo de aumento do

grafo, gerando uma redução no número de variáveis, pois serão suprimidas as variáveis ’ay referentes às cópias originais de cada arco ∈a A . As restrições (10) no modelo da

seção 3.5.1 passam a ser ’ ’ 1+ =�

e ey y , forçando cada aresta ser orientada em uma

dada direção. O novo modelo, que é uma formulação de PLI com algumas variáveis

restritas a valores 0-1, fica então da seguinte forma:

5.2.1 – Formulação Proposta

’ ’

(1)

. .

1 , (2)

, (3)

s s ss A Es A E E

e e

e e e

a a

Minimize c y c

s t

y y e E

x y y e E E

x y

∨ ∧ ∈ ∪∈ ∪ ∪

∨ ∧

+

+ = ∀ ∈

= + ∀ ∈ ∪

=

∑ ∑

( ) ( )

, (4)

( ) , (5)

{0,1} , (6)

0, inteiro . (7)

s s

s v s v

e

s

a A

x x d v v V

y e E E

y s A E E

δ δ+ −∈ ∈

∨ ∧

∨ ∧

∀ ∈

− = ∀ ∈

∈ ∀ ∈ ∪

≥ ∀ ∈ ∪ ∪

∑ ∑

Com esta formulação, as restrições (3) e (4) podem ser eliminadas do modelo

sem nenhum prejuízo para a solução final, uma vez que estas só são usadas para

indicar o número de ligações que unem cada par de vértices. As restrições (5) garantem

que as ligações acrescentadas ao grafo atendam as ofertas ou demandas nos vértices,

Page 81: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

68

isto é, seus graus sejam anulados tornando-o assim em um grafo simétrico. Lembrar

que d(v) representa o grau do vértice v, conforme visto na seção 4.3.1 do Capítulo 4.

Com esta formulação, em uma das instâncias, o novo modelo forneceu a

solução ótima em 1 minuto e 54 segundos para o caso do grafo com 50% das ligações

formadas por arcos e no caso do grafo com 30%, o ótimo foi obtido em 4 minutos e 3

segundos. No caso do grafo de 70%, a solução ótima foi obtida com um tempo menor

que 1 segundo. De posse dos valores ótimos de cada grafo, foi possível efetuar uma

comparação com os valores encontrados pelo programa OTIMIZA_COLETA. A tabela

5.1 apresenta diversos valores encontrados pelo programa OTIMIZA_COLETA para

diferentes tamanhos de λ na instância com 44 vértices. Optou-se tomar valores para λ,

tais que caracterizassem um algoritmo totalmente guloso (λ = 1) e totalmente aleatório

(λ = nº de arestas do grafo testado), e alguns valores intermediários a estas duas

situações. Para efetuar estes testes fixou-se o número de iterações GRASP em 1000,

isto é, Nmáx=1000.

Tabela 5.1 – Soluções encontradas para as instâncias 44_118, 44_108 e 44_91.

O=1 O=5 O=10 O=20 O=38 O=48 Grafo Ótimo

Z(T) Seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg.

301 12 291 12 291 12 289 12 277 12 291 18

301 12 286 12 291 12 277 12 277 12 286 12

301 12 276 13 287 12 286 13 277 12 286 12

301 12 291 12 296 12 277 13 288 12 286 13

44_118

(30%) 274

301 12 294 12 286 12 286 12 286 12 287 12

Média Z(T) 301 287,6 290,2 283 281 287,2

Desv. Ótimo 27 15,03 16,55 10,29 8,57 13,33

308 11 297 10 295 11 288 11 295 11 - -

312 11 287 11 295 11 301 11 295 11 - -

308 11 287 11 297 11 297 11 293 11 - -

309 11 299 11 289 10 303 11 287 10 - -

44_108

(50%) 283

309 10 287 11 293 10 301 11 289 11 - -

Page 82: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

69

Média Z(T) 309,2 291,4 293,8 298 291,8 -

Desv. Ótimo 26,21 10,02 11,09 15,92 9,39 -

407 10 394 09 400 09 390 09 - - - -

407 10 406 09 393 09 390 09 - - - -

407 10 397 09 397 09 390 09 - - - -

407 09 400 09 395 09 390 09 - - - -

44_91

(70%) 385

407 10 394 09 393 09 390 09 - - - -

Média Z(T) 407 398,2 395,6 390 - -

Desv. Ótimo 22 13,95 10,91 5 - -

Nos testes realizados, para efetuar a comparação com o ótimo, foram utilizadas

três instâncias (grafos) distintas, nomeadas da seguinte forma: grafo 44_118; grafo

44_108, grafo 44_91. Desta forma, o primeiro número indica o número de vértices dos

grafos, que neste caso é 44, enquanto o segundo número indica o número de ligações.

Deve-se ressaltar que, para esta contagem cada aresta é considerada como duas

ligações com direções contrárias (dois arcos). O que varia de um grafo para outro,

conforme visto anteriormente, é o número de arcos. A idéia de tomar grafos com 30%,

50% e 70% do total de ligações sendo arcos, tem por objetivo observar o

comportamento do algoritmo com relação ao esforço computacional e a qualidade das

soluções em setores mais residenciais, isto é, com poucas ruas de mão–única (30%) e

em setores mais centrais com poucas ruas de mão–dupla (70%).

O tamanho dos grafos utilizados (número de vértices e ligações) nos testes

comparativos baseou-se em uma estimativa da quantidade de lixo gerado e da

respectiva capacidade dos caminhões coletores. A partir daí, estimou-se o tamanho do

setor. Para tanto, foi considerada a média do número de pessoas por residência (Pres)

igual a 4, o número de residências por rua (Rrua) igual a 16, o número de habitantes por

rua (Hrua) igual a Hrua= Rrua x Pres e a quantidade do lixo gerado (k) igual a 800

g/hab/dia. Além disso, foi considerada uma capacidade de 15 m3 por caminhão,

equivalente a 3,5 t. considerando o peso específico médio do lixo solto de 250 kg/m

(CARVALHO, 2001). Daí tem-se a seguinte estimativa do tamanho do setor de coleta:

Page 83: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

70

Rrua = 16;

Pres = 4;

Hrua = 16 x 4 = 64 ;

Considerando N o número máximo de ruas de um dado setor e Q a capacidade

do caminhão dado em gramas, temos que:

3.500.00068

64 800rua

QN

H k= = ≅

× × ruas. (8)

Portanto, os grafos obtidos para teste encontram-se dentro desta estimativa. A

figura 5.3 descreve a região que foi selecionada para ser um setor de coleta

obedecendo às características acima referidas. O grafo foi gerado a partir das ruas

compreendidas entre as linhas cheias.

Observando a tabela 5.1 e considerando inicialmente o grafo 44_118, as

melhores soluções obtidas foram para O = 38 apresentando um desvio do ótimo de

8,57. O parâmetro Desv. Ótimo (desvio do ótimo) reflete o quanto as soluções

encontradas desviam-se do ótimo. O tempo de processamento manteve-se dentro da

média. Porém, a melhor solução obtida para este grafo foi com O = 5. As piores

soluções foram obtidas para O = 1, que é o caso do algoritmo totalmente guloso.

Para o grafo 44_108, as melhores soluções obtidas foram para O = 38

(puramente aleatório), contemplando a melhor solução encontrada que foi 287, e

apresentando um desvio de 9,39 do ótimo. Novamente, tem-se que as piores soluções

encontradas ocorreram quando o algoritmo é puramente guloso.

No caso do grafo 44_91 as melhores soluções ocorrem com O=20 (puramente

aleatório) apresentando um desvio do ótimo no valor de cinco (5) unidades. Também

para este grafo, as piores soluções ocorreram quando o algoritmo é puramente guloso.

Portanto, uma lista de candidatos com um tamanho de 20 elementos ou mais gera as

melhores soluções para o tipo de grafo apresentado. A Tabela 5.1 também mostra que

quanto mais arcos (ou ruas de mão-única) o grafo possuir, mais arcos e arestas

deverão ser repetidos de forma a ser realizado o circuito, gerando um aumento no custo

da solução.

Page 84: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

71

Quanto ao tempo de execução do programa, percebe-se que o mesmo diminui

à medida que o número de arestas é reduzido, ou equivalentemente, o número de

arcos é aumentado. Isso é devido ao fato da diminuição dos elementos da LCR,

fazendo com que o laço responsável pela orientação das arestas selecionadas seja

executado em menos passos. Pode-se concluir então, que para um O >= 20 foram

obtidos os melhores resultados.

Figura 5.3 – Representação de um setor de coleta.

No intuito de validar o algoritmo, fez-se necessário a realização de testes

computacionais adicionais em diversas instâncias para que fosse possível verificar o

desempenho do algoritmo. Nestes testes, considerou-se apenas a solução encontrada

pelo programa OTIMIZA_COLETA, uma vez que se tornou inviável a obtenção do ótimo

pelo modelo exato apresentado. Portanto, as instâncias testadas foram sobre grafos

com 64, 84, 150 e 200 vértices, onde cada um teve o número de arcos variando entre

30%, 50% e 70% do total de ligações. Os testes adicionais encontram-se nas Tabelas

5.2, 5.3, 5.4 e 5.5. Foi designado para o parâmetro λ valores extremos (guloso e

aleatório) e alguns valores intermediários aos extremos, gerando assim seis valores

distintos de λ.

Page 85: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

72

Tabela 5.2 – Soluções encontradas para as instâncias 64_178, 64_159 e 64_137.

O=1 O=15 O=30 O=45 O=60 O=72 Grafo

Z(T) Seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg.

591 19 602 19 610 19 602 19 602 19 610 19

602 20 602 22 609 19 606 19 610 19 602 19

591 19 602 19 606 19 610 19 605 19 610 19

591 19 602 19 602 19 610 19 610 19 610 19

64_178

(30%)

591 20 602 19 602 19 610 19 607 19 607 19

Média Z(T) 593,2 602 605,8 607,6 606,8 607,8

607 17 606 17 620 17 614 17 620 19 - -

608 17 606 17 610 17 613 17 610 17 - -

607 17 618 17 620 17 614 17 606 17 - -

607 17 606 17 606 17 602 17 614 17 - -

64_159

(50%)

607 19 612 17 624 17 613 17 610 16 - -

Média Z(T) 607,2 609,6 616 611,2 612 -

610 20 610 20 610 20 - - - - - -

610 20 610 20 610 18 - - - - - -

610 22 610 19 610 19 - - - - - -

610 20 610 19 610 19 - - - - - -

64_137

(70%)

610 20 610 19 610 19 - - - - - -

Média Z(T) 610 610 610 - - -

Observe, que nas tabelas apresentadas existem colunas que não possuem

valores para certas instâncias. Isto significa que tal instância não foi testada para o

valor de λ em questão, pelo fato do total de arestas desta instância ser inferior ao

respectivo valor de λ. Devido à dimensão das instâncias testadas, foi tomado Nmáx =

500 para o número máximo de iterações do algoritmo GRASP, de forma a reduzir o

tempo de processamento.

Page 86: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

73

Tabela 5.3 – Soluções encontradas para as instâncias 84_244, 84_216 e 84_188.

Através da análise das tabelas, pode-se verificar que em instâncias maiores, as

melhores soluções são obtidas quando o λ é pequeno, estando ele próximo do guloso.

Para exemplificar, as instâncias da Tabela 5.2 tiveram suas melhores soluções

encontradas para O = 1 (puramente guloso). Já na Tabela 5.5, apenas na instância

200_432 as melhores soluções foram obtidas com um O = 10. Novamente verifica-se

que, quanto mais arcos possuir o grafo, maior é o custo da solução e menor o tempo de

processamento. Nos grafos com menor número de arcos, o custo da solução tende a

ser menor e o tempo de processamento maior.

O=1 O=20 O=40 O=70 O=90 O=100 Grafo

Z(T) Seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg.

784 38 783 40 786 40 789 40 784 40 779 40

784 38 776 40 790 40 790 40 786 41 792 40

784 38 783 40 796 43 786 40 786 40 777 40

784 38 776 39 790 40 790 40 790 40 772 40

84_244

(30%)

784 38 776 40 795 40 786 40 784 40 786 40

Média Z(T) 784 778,8 791,4 788,2 786 781,2

810 35 807 34 799 34 795 34 - - - -

810 35 799 35 803 34 792 34 - - - -

810 35 798 34 809 34 795 34 - - - -

810 35 800 34 809 34 792 34 - - - -

84_216

(50%)

810 35 798 34 799 34 792 34 - - - -

Média Z(T) 810 800,4 803,8 793,2 - -

856 26 860 27 869 27 - - - - - -

856 27 869 27 862 27 - - - - - -

856 26 860 27 869 27 - - - - - -

856 27 860 27 865 27 - - - - - -

84_188

(70%)

856 26 856 27 866 27 - - - - - -

Média Z(T) 856 861 866,2 - - -

Page 87: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

74

Tabela 5.4 – Soluções encontradas para as instâncias 150_427, 150_377 e 150_326.

O=1 O=30 O=70 O=100 O=120 O=170 Grafo

Z(T) Seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg.

1204 265 1211 263 1207 273 1222 273 1222 274 1207 269

1191 264 1192 263 1214 271 1202 273 1222 278 1219 270

1191 266 1211 265 1213 273 1199 270 1230 272 1215 271

1191 264 1192 263 1207 273 1204 274 1221 272 1207 269

150_427

(30%)

1191 264 1218 264 1213 273 1202 273 1221 272 1208 270

Média Z(T) 1193,6 1204,8 1210,8 1205,8 1223,2 1211,2

1251 244 1219 239 1233 238 1215 236 1232 245 - -

1251 244 1231 239 1224 237 1231 240 1223 241 - -

1251 243 1225 241 1235 237 1231 238 1222 247 - -

1251 243 1207 238 1233 238 1231 240 1217 243 - -

150_377

(50%)

1251 244 1207 239 1224 237 1233 238 1243 238 - -

Média Z(T) 1251 1217,8 1229,8 1228,2 1227,4 -

1363 203 1351 198 1351 195 - - - - - -

1363 205 1351 201 1351 195 - - - - - -

1363 202 1351 200 1347 196 - - - - - -

1363 203 1351 198 1351 196 - - - - - -

150_326

(70%)

1363 205 1351 199 1347 195 - - - - - -

Média Z(T) 1363 1351 1349,4 - - -

Page 88: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

75

Tabela 5.5 – Soluções encontradas para as instâncias 200_564, 200_498 e 200_432.

Portanto, uma conclusão pertinente é que as melhores soluções encontradas

pelo programa OTIMIZA_COLETA nas instâncias maiores foram para um λ pequeno,

estando próximo do guloso, enquanto em instâncias pequenas cujo tamanho aproxima-

se de um setor de coleta, as melhores soluções foram encontradas com um λ grande,

estando próximo do aleatório.

O=1 O=10 O=50 O=100 O=150 O=230 Grafo

Z(T) Seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg. Z(T) seg.

1532 436 1556 416 1626 421 1662 423 1739 415 1676 415

1528 451 1582 431 1640 432 1678 449 1690 414 1621 413

1522 439 1548 462 1614 420 1640 443 1716 416 1717 415

1528 417 1540 429 1730 410 1623 414 1712 418 1621 415

200_564

(30%)

1522 430 1542 420 1614 415 2536 414 1690 414 2557 413

Média Z(T) 1526,4 1553,6 1644,8 1827,8 1709,4 1838,4

1544 376 1563 369 1618 364 1643 360 1634 380 - -

1540 374 1585 384 1601 363 1670 358 1631 382 - -

1539 377 1568 388 1628 362 1673 373 1633 382 - -

1539 375 1568 370 1609 363 1655 358 1646 380 - -

200_498

(50%)

1539 374 1563 367 1601 363 1643 358 1633 382 - -

Média Z(T) 1540,2 1569,4 1611,4 1656,8 1635,4 -

1791 336 1779 324 1792 319 1785 314 - - - -

1791 334 1779 323 1781 322 1791 314 - - - -

1791 335 1779 323 1780 318 1777 316 - - - -

1791 334 1779 324 1780 319 1781 315 - - - -

200_432

(70%)

1791 335 1779 321 1773 318 1777 315 - - - -

Média Z(T) 1791 1779 1781,2 1782,2 - -

Page 89: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

76

Capítulo 6

Conclusão 6.1 – Conclusões

Os Problemas de Roteamento em Arcos (PRA) possuem diversas aplicações

práticas, conforme foi apresentado no Capítulo 3. O problema do Carteiro Chinês sobre

grafos direcionados, grafos não direcionados ou grafos mistos, constitui uma parte

importante nas áreas de Teoria de Grafos, Otimização Combinatória e Computação. A

formulação de métodos computacionais de solução para estes tipos de problemas de

roteamento tem uma grande aplicação no gerenciamento da coleta de resíduos sólidos

(lixo) que foi o principal elemento motivador desta dissertação.

O cálculo de uma solução ótima para o caso do problema do Carteiro Chinês

Misto (PCCM), que foi explorado nesta dissertação, está classificado como sendo de

complexidade computacional NP–Completo, pois não se conhece um algoritmo que o

resolva em tempo de ordem polinomial. Foi verificado durante as etapas de testes, que

quando se calcula a solução ótima do PCCM por meio de um método exato aplicado ao

modelo de PLI, o tempo de processamento aumenta, na medida que um setor de coleta

apresenta acréscimo no número de ruas de mão-dupla (grafo com maior número de

arestas). Adicionalmente, a entrada dos dados do problema torna-se exaustivo, para

executar o modelo, devido ao grande número de variáveis e restrições para os cálculos.

Por outro lado, o algoritmo heurístico implementado (OTIMIZA_COLETA)

mostrou-se eficiente quanto ao tempo de resposta, e pelo fato de ter como entrada

apenas alguns poucos parâmetros, menos exaustivo quanto à entrada de dados do

problema de PLI. Embora as soluções apresentadas sejam, em relação à função

objetivo, de custos próximo aos custos da solução ótima, pode-se dizer que são de boa

qualidade. Como um exemplo disso, cita-se a instância 44_118 da Tabela 5.1. Com um

λ = 10, o programa OTIMIZA_COLETA encontrou o valor da função custo Z(T) = 277

bem próxima do valor ótimo (274) em um tempo de processamento de 12 segundos. O

Page 90: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

77

modelo exato por sua vez, aplicado à mesma instância encontrou o referido ótimo em 4

minutos e 3 segundos. Portanto, com o método proposto chega-se a uma solução

aproximada com apenas 5% do tempo gasto pelo método exato. No caso das

instâncias maiores, 150 e 200 vértices, por exemplo, só foram realizados testes

computacionais utilizando o método proposto.

A problemática da coleta de resíduos sólidos, por outro lado, deve ser encarada

de maneira multidisciplinar pelas conotações sócio-econômicas-culturais e de políticas

sustentáveis necessárias. Portanto, as propostas técnicas de meios que levem a uma

redução nos custos operacionais devem ser consideradas. Além disso, deverá estar

preparada para acompanhar o dinamismo das cidades pois, ao mesmo tempo em que

as cidades crescem, em população e extensão, passam constantemente por

modificações e suas redes viárias. Para atender a esta dinâmica, os setores

responsáveis por estes serviços necessitam de respostas rápidas e confiáveis. Ao final,

o que se espera é um serviço de maior qualidade para a população e que ao mesmo

tempo onere menos o orçamento do município.

Esta dissertação iniciou-se com a procura por informação sobre técnicas da

pesquisa operacional aplicada a problemática de gestão e coleta de lixo; desenvolveu-

se o estudo e a implementação de um algoritmo, proposto na literatura, para resolver o

Problema do Carteiro Chinês Misto (PCCM) utilizando a metaheurística GRASP

(Greedy Randomized Adaptive Search Procedure). Para realizar a implementação,

utilizou-se o método Simplex para Redes Eficiente (Goldfarb, 1990), no procedimento

que torna o grafo problema em um grafo simétrico e euleriano. Este tratamento

computacional do modelo foi desenvolvido no intuito de apresentar um método que

atenda em tempo razoável as exigências da coleta do lixo doméstico pelas ruas de uma

cidade.

6.2 – Sugestões para Trabalhos Futuros

Uma interessante verificação, que não deu tempo para se realizar, é um estudo

de caso na cidade de Campos, junto à empresa responsável pelos serviços de coleta,

de forma a colocar em prática o a proposta e avaliar os custos resultantes oriundos de

tal aplicação.

Page 91: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

78

Fica ainda aberta a implementação dos algoritmos propostos para trabalhar com

o caso do roteamento de m veículos, com isto avaliara os setores de coleta dos

caminhões de uma empresa de coleta.

Sugere-se, também, utilizar outras metaheurísticas na implementação do

algoritmo do PCCM, para verificar a qualidade das soluções. Por exemplo, a

metaheurística Busca Tabu é uma sugestão, uma vez que esta permite escapar de

ótimos locais.

Por último se sugere, investir na criação de uma interface para o programa

implementado, de forma que se torne mais fácil de manipular e de maior potencial

comercial.

Page 92: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

79

REFERÊNCIAS BIBLIOGRÁFICAS

BODIN, L., BELTRAMI, E.J. (1974) Networks and vehicle routing for municipal waste

collection, Networks, 4: 65-94.

BROWN, D.T. (1993) The legacy of the landfill: perspectives on the solid waste crisis.

St. Catharines: Brock University. Institute of Urban and Environmental Studies.

Disponível em <http://www.brocku.ca/epi/legacy.txt>. Acesso em: 8 ago. 2000.

BROWN, L. (2002) Nova York: a Capital Mundial do Lixo. Nota Jornalística acessada

em junho de 2003 www.wwiuma.org.br

CANALES G. P., MORALES G. Introdução a Sistemas de Transportes. Apostila de

Disciplina. Relatório Técnico 3/2002, Laboratório de Engenharia de Produção,

Universidade Estadual do Norte Fluminense. Campos dos Goytacazes, RJ, 21

páginas.

CARVALHO, L.E.X. (2001) Desenvolvimento de solução integrada de sistemas de

limpeza urbana em ambiente SIG. Dissertação (Mestrado em Ciências em Engenharia

de Transportes), Rio de Janeiro–RJ, Universidade Federal do Rio de Janeiro – UFRJ,

240 p.

CLARK, R.M., GILLEAN, J.I (1977) Solid wast collection: a case study, Operacional

Research Quarterly, 28(4): 795-806.

CUNHA, V., CAIXETA F.J.V (2002) Gerenciamento da Coleta de Resíduos Sólidos

Urbanos: Estruturação e Aplicação de Modelo Não-Linear de Programação por Metas,

Gestão & Produção, 9(2):143–161.

Page 93: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

80

COSTA, D.M.B.(1997) Aplicação de Algumas Técnicas de Pesquisa Operacional na

Otimização dos Serviços Postais, Dissertação (Mestrado em Métodos Numéricos em

Engenharia), Curitiba–PR, Universidade Federal do Paraná–UFPR ,171p.

CORBERÁN, A., MARTÍ, R., SANCHIS, J.M. (2002) A GRASP heuristic for the mixed

Chinese postman problem. European Journal of Operational Research, 142: 70 – 80.

CHRISTOFIDES, N., BENAVENT, E., CAMPOS, V., CORBERÁN, A., MOTA, E. (1984)

An Optimal Method for the Mixed Postman Problem. In System Modelling and

Optimization, Lecture Notes in Control and Information Sciences (59), P. Thoft –

Christensen (ed.). Springer, Berlin.

EDMONDS, J., JOHNSON, E.L.(1973) Matching, Euler tours and the Chinese postman.

Mathematical Programming, 5: 88 – 124.

EISELT, H.A., GENDREAU, M., LAPORTE, G. (1995a) Arc routing problems, part I: the

Chinese postman problem. Operations Research, 43(2): 231 – 242.

EISELT, H.A., GENDREAU, M., LAPORTE, G. (1995b) Arc routing problems, part II: the

rural postman problem. Operations Research, 43(3): 399 – 414.

FEO, T.A, RESENDE, M.G.C., (1995) Greedy randomized adaptive search procedures.

Journal of Global Optimization, 6: 109 – 133.

FORD, L.R., FULKERSON, D.R. (1962) Flows in Networks, Pinceton University Press,

Princeton, N.J.

FREDERICKSON, G.N. (1979) Approximation algorithms for some postman problems.

Journal of the Association for Computing Machinery, 26(3): 538 – 554.

GOLDBARG, M.C., LUNA, H.P.L. (2000) Otimização Combinatória e Programação

Linear, 1. ed. Editora Campus, 649 pp

Page 94: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

81

GOLDEN, B.L., DE ARMON, J.S., BAKER, E.K.(1983) Computational Experiments with

Algorithms for a class of routing problems. Computers & Operations Research,10(1):

47 – 59.

GOLDEN B.L., WONG R.T.(1981) Capacited arc routing problems. Networks, 11: 305-

315.

GOLDFARB, D., HAO, J., KAI, S.R. (1990) Efficient Shortest Path Simplex Algorithms.

Operations Research, 38(4): 624 – 628.

GRÖTSCHEL, M., WIN, Z. (1992) A Cutting Plane Algorithm for the Windy Postman

Problem. Mathematical Programming, 55: 339 – 358.

GUAN, M. (1962) Graphic Programming Using Odd and Even Points, Chinese

Mathematics, 1, 273 – 277.

HIERHOLZER, C. (1873) Uber die Möglichkeit, einen Linienzug ohne Wiederholung und

ohne Unterbrechung zu umfahren. Mathematische Annalen, VI: 30 – 32.

IBGE, Instituto Brasileiro de Geografia e Estatística, http://www.ibge.gov.br, acessado

em: 13/10/03.

IPT (1995). Lixo Municipal: Manual de Desenvolvimento Integrado. Relatório Técnico,

Instituto de Pesquisas Tecnológicas, São Paulo, SP.

KAPPAUF, C.H., KOEHLER, G.J. (1979) The Mixed Postman Problem. Disc. Applied

Mathematics., 1: 89 – 103.

MANSUR, G. L., MONTEIRO, J. H. R. P. (2001) O que é preciso saber sobre limpeza

urbana. Rio de Janeiro: Centro de Estudos e Pesquisas Urbanas do Instituto Brasileiro

de Administração Municipal. Disponível em: http://www.resol.com.br e

<http://www.resol.com.br/cartilha>.

Page 95: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

82

MARTINS, C. (2003) Prefeitura muda sistema de limpeza pública. Gente & Notícias,

Campos dos Goytacazes, 1 a 14 agosto, p.4.

MARINHO, C.E.V. (2001) Eficiência polinomial do método simplex para redes: análise

sobre um problema de caminho mais curto (PCMC), Dissertação (Mestrado em

Ciências de Engenharia), Campos dos Goytacazes – RJ, UENF, 88 p.

MORALES, G. (2000) Notas de Aula: Tópicos Avançados em Programação Linear.

Relatório Técnico 08/2000, Laboratório de Engenharia de Produção, Universidade

Estadual do Norte Fluminense. Campos dos Goytacazes, RJ, 45 páginas.

MPO/SEPURB (1995) Orientações Básicas para Organizar um Serviço de Limpeza

Pública em Comunidades de Pequeno Porte.

http://www.bsi.com.br/unilivre/centro/downloads.htm, acessado em: 19/08/03.

NEGREIROS, M.J., MACULAN, N., CLEIMAN, D.F.(1991) Optimizing Routes in

Household Refuse Collection in Rio de Janeiro (A Field Application Using SisRot) –

UFRJ, COPPE – Eng. de Sistemas, Rio de Janeiro-RJ, Brasil.

NETO, A.J.(2002) Metodologia de distribuição de ganhos em células de produção e

tratamento da ociosidade como um problema de Fluxo de Custo Mínimo. Dissertação

(Mestrado em Ciências de Engenharia), Campos dos Goytacazes – RJ , Universidade

Estadual do Norte Fluminense – UENF, 67p.

NOBERT, Y., PICARD, J.C. (1996) An optimal algorithm for the mixed Chinese Postman

Problem. Networks, 27: 95 – 108.

ORLOFF, C.S. (1974) A Fundamental Problem in Vehicle Routing. Networks, 4: 35 – 64.

PEARN, W.L.(1991) Augment – Insert Algorithms for the Capacitated Arc Routing

Problem. Computers & Operations Research, 18(2): 189 – 198.

Page 96: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

83

PEARN, W.L., LIU, C.M.(1995) Algorithms for the Chinese Postman Problem on Mixed

Networks. Computers & Operations Research, 22(5):479 – 489.

PEARN, W.L., CHOU, J.B. (1999) Improved Solutions for the Chinese Postman Problem

on Mixed Networks. Computers & Operations Research, 26:819 – 827.

PÓVOA, C.L.R. (2000) Georota sistema de informação geográfica aplicado à

distribuição física de produtos em pequenas e médias empresas. Dissertação

(Mestrado em Ciências de Engenharia), Campos dos Goytacazes – RJ, Universidade

Estadual do Norte Fluminense – UENF, 78p.

RALPHS, T.K. (1993) On the Chinese postman problem. Operations Research Letters.

14: 123 – 127.

RESENDE, M.G.C.,RIBEIRO,C.C. (2002) Greedy Randomized Adaptive Search

Procedures. AT&T Labs Research Technical Report, version 2.

ROSA, S. L. (1999) Modelo Conceitual para Planejamento e Gerenciamento de

Sistemas de Resíduos Sólidos Urbanos: Fixação de diretrizes básicas. Relatório

Técnico, www.resol.com.br, http://www.resol.com.br.

ROTH, B. W., ISAIA, E. M. B. I., ISAIA, T. (1999) Destinação final dos resíduos sólidos

urbanos. Ciência e Ambiente, 18: 25-40.

SILVA, M., Grafos – circuito e ciclo de Euler. Manual de Investigação Operacional 2,

Universidade Autônoma de Lisboa (UAL). http://dct.ual.pt/io2/. Acessado em:

28/02/2004.

SIQUEIRA, P.H. (1999) Aplicação do Algoritmo do Matching no Problema da

Construção de Escalas de Motoristas e Cobradores de Ônibus, Dissertação (Mestrado

em Ciências). Curitiba–PR, Universidade Federal do Paraná–UFPR, 86 p.

Page 97: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

84

SYSLO, M.M., DEO, N., KOWALIK, J.S.(1989) Discrete Optimization Algorithms,

Prentice – Hall inc., 652p.

SOUZA, M.J.F.(2002) Inteligência computacional para Otimização. Notas de aula.

Departamento de Computação. ICEB. Universidade Federal de Ouro Preto (UFOP).

Segundo Período do 2002. http://www.decom.ufop.br/prof/marcone.

TCHOBANOGLOUS, G. (1977) Solid wastes: engineering principles and management.

Issues. Tokyo: McGraw-Hill.

ZAMBONI, L.U.S.(1997) Técnicas de roteirização de veículos aplicadas ao Transporte

Escolar. Dissertação (Mestrado em Ciências), Curitiba–PR, Universidade Federal do

Paraná-UFPR,102 p.

Page 98: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

85

APÊNDICE A 1 – Definições e Terminologia da Teoria de Grafos

A seguir são apresentadas algumas definições básicas e terminologias da

Teoria de Grafos que ajudarão a esclarecer as idéias apresentadas neste trabalho.

Grafo Não Orientado

Um grafo não orientado, representado por G=(V, E), é definido como um

conjunto V de vértices vi e um conjunto E de pares não ordenados (vi, vj) de elementos

distintos de V chamados de arestas.

Grafo Orientado

Um grafo orientado ou digrafo, representado por G=(V, A), é definido como um

conjunto V de vértices vi e um conjunto A de pares ordenados (vi, vj) de elementos

distintos de V chamados de arcos. Neste caso, o vértice vi é chamado de cauda e o

vértice vj é chamado de cabeça do arco.

O número de arcos e o número de vértices são representados por n= |V| e m=

|A| ou m= |E| respectivamente.

Grafo Misto

Um grafo misto , representado por G= (V, A ∪ E), é definido como um conjunto

V de vértices vi , um conjunto A de pares ordenados (vi, vj) chamados de arcos e um

conjunto E de pares não ordenados (vi, vj) chamados de arestas.

Figura 1A – G1: grafo não orientado; G2: digrafo; G3: grafo misto.

4

2

3

1 4

2

3

1 4

2

3

1

G1 G2 G3

Page 99: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

86

Grau

O grau de um vértice é definido como o número de arcos e/ou arestas que lhe

são incidentes. Neste caso, o grau de entrada de um vértice vi é o número de arcos

convergentes (que entram em vi), enquanto o grau de saída é o número de arcos

divergentes (que saem de vi). No grafo G2 da figura 1A, o grau de entrada do vértice 4

é 2, e o grau de saída é 1. Da mesma forma, se cada aresta for considerada como dois

arcos orientados em sentidos opostos ,no grafo G3 o grau de entrada do vértice 4 é 2, e

o grau de saída é 1.

Adjacência de Vértices

Dado um grado G= (V, E) e uma aresta (vi, vj) ∈ E, diz-se que os vértices vi e vj

são adjacentes. Da mesma forma, para o arco (vi, vj) ∈ A tem-se vi e vj adjacentes.

Caminho

É uma seqüência de vértices v1, v2, ..., vk ∈ V, tal que (vi, vi+1) é uma aresta ou

um arco, com 1≤ i ≤ k-1. Um caminho de k vértices é formado por k-1 ligações,

definindo assim o comprimento do caminho. Se existe um caminho do vértice v1 até o

vértice vk , então vk é alcançável a partir de v1. Um caminho (v1, vk) é chamado aberto

se v1 ≠ vk e aberto se v1 = vk.

Circuito

É uma seqüência de vértices ligados por arcos com a mesma direção, com o

vértice final ligado ao vértice inicial por um arco com a mesma direção. Circuito é um

caminho direcionado fechado.

Caminho Simples

É o caminho no qual todos os vértices v1, v2, ..., vk ∈ V são distintos.

Page 100: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

87

Ciclo

É o caminho simples tal que o vértice inicial é igual ao vértice final, onde

v1, v2, ..., vk, vk+1 ∈ V e v1 = vk+1 com k ≥ 3. Diz-se que um grafo é acíclico quando não

possui ciclos simples.

Circuito Euleriano

É um circuito que atravessa todas as arestas ou arcos de um grafo exatamente

uma vez. O custo de um circuito é o custo total de todas as arestas ou arcos

atravessados pelo mesmo.

Subgrafo

É um grafo G1= (V1, E1) de modo que V1 ⊆ V e E1 ⊆ E. Veja a figura I.2.

Figura 2A – Subgrafo de G2.

Grafo Conexo ou Conectado

Um grafo não direcionado é dito conexo se existe uma seqüência de arestas

ligando qualquer par de vértices do grafo G. Um grafo é fortemente conectado se para

todos pares de vértices vi e vj , existir um caminho de vi para vj e um caminho de vj para

vi em G.

Árvore

É um grafo conexo acíclico com um vértice designado como a raiz da árvore.

Se esta por sua vez for desconexa, então se tem uma floresta. Uma árvore é um dos

tipos mais simples de grafo, e possui diversas propriedades, como é mostrado no

teorema a seguir:

4 1

Page 101: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

88

Teorema : Seja T um grafo com n vértices. Então as seguintes premissas são

equivalentes:

(i) T é uma árvore;

(ii) T não contém circuitos e têm n-1 arestas;

(iii)T é conexo e possui n-1 arestas;

(iv) T é conexo e toda aresta é uma ponte;

(v) quaisquer dois vértices de T são conectados por exatamente um caminho;

(vi) T não contém circuitos, mas a adição de qualquer nova aresta gera

exatamente um circuito.

2 – O Problema do Fluxo de Custo Mínimo (PFCM)

Este problema possui papel principal entre os modelos de otimização em redes,

uma vez que este engloba uma enorme quantidade de aplicações e pode ser resolvido

de maneira eficiente.

O Problema de Transporte, de Designação, de Caminho Mais Curto e de Fluxo

Máximo são casos especiais do Problema de Fluxo de Custo Mínimo (PFCM).

O PFCM é modelado como um problema de PL, logo o método Simplex pode

ser utilizado para sua resolução. Pelas características da matriz de restrições, do

modelo, se especializa o método Simplex, resultando o Método Simplex para Redes de

fácil implementação e resultados recentes apresentam um modo mais eficiente de

implementação do método simplex primal-dual.

2.1 – Algumas Considerações

1. A rede é conectada e representada por um digrafo.

2. No mínimo um dos vértices é um “vértice de oferta” (origem).

3. No mínimo um dos vértices é um “vértice de demanda” (destino).

4. Todos os vértices restantes são vértices intermediários “Transshipment”

(entreposto).

Page 102: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

89

5. A rede possui arcos, tantos quantos forem necessários, com capacidade

suficiente para habilitar todos os fluxos gerados nos vértices de oferta para

alcançar os vértices de demanda.

6. O objetivo é minimizar o custo total de enviar a oferta disponível através da rede

para satisfazer a demanda dada.

2.2 – Formulação do Modelo

Considere um digrafo conectado G= (V, A), onde os n vértices incluem no

mínimo um vértice de oferta e no mínimo um vértice de demanda. As variáveis de

decisão são xij que medem o fluxo no arco (i, j). Tem-se ainda:

cij = custo por unidade de fluxo no arco (i, j)

uij = capacidade de fluxo no arco (i, j), caso a rede seja capacitada.

A função objetivo é:

1 1

1

1 1

1

. .

;

,

;

0 , ( , ) .

n n

ij iji j

n

ijn n j

ij ji i nj j

jij

ij ij

Min Z c x

s a

x fluxo sai nó i

x x b i V

x fluxo chega nó i

x u i j A

= =

=

= =

=

=

− = ∀ ∈ ⇒

≤ ≤ ∀ ∈

∑ ∑

∑∑ ∑

Em algumas aplicações, faz-se necessário ter um limite inferior lij > 0 para o

fluxo no arco (i, j). Para evitar alterações na formulação do modelo, utiliza-se:

bi > 0 se o vértice i é um vértice de oferta. bi < 0 se o vértice i é um vértice de demanda. bi = 0 se o vértice i é um vértice de transbordo (transshipment)

bi = fluxo na rede gerado no vértice i

’ ’ .ij ij ij ij ij ijx x l com x l substituindo x= − +

Page 103: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

90

Uma condição necessária para um PFCM ter alguma solução viável é que

1

0n

ii

b=

=∑ , isto é, o fluxo total gerado nos vértices de oferta deve ser igual ao fluxo total

absorvido nos vértices de demanda. Quando este fato é violado se pode interpretar

como que as ofertas ou as demandas representam limites superiores ao invés de

quantidades exatas. Por exemplo, no caso do Problema de Transporte, um destino

(origem) auxiliar é criado a fim de absorver a oferta (demanda) em excesso. De maneira

análoga, no PFCM cria-se um vértice de demanda (oferta) auxiliar para absorver a

oferta (demanda) em excesso.

A seguir, para exemplificar, é ilustrado na fig. 3A um grafo orientado (digrafo)

representando uma rede de distribuição de uma companhia, onde os vértices 1 e 2 são

duas fábricas desta companhia, com suas respectivas ofertas, os vértices 4 e 5 são dois

estoques, com suas respectivas demandas e o vértice 3 é um centro de distribuição

(transshipment), além dos custos unitários e capacidade de fluxo de alguns arcos, antes

da solução do PFCM e após a solução com suas respectivas distribuições de fluxo.

Figura 3A – Digrafo original com ofertas/demandas nos vértices e seu grafo solução

após resolver o PFCM.

Observe que toda a demanda é atendida pelo fluxo ofertado de forma que o

custo total para realizar esta tarefa é o mínimo possível.

1

3

2 5

4

b1= 50

b3= 0

b4= -30

b2= 40 b5= -60

c12= 2 u12=10

c14= 9

c13=4

c23=3

c54=2 c45=3 c35=1

u35=80

1

3

2 5

4

b1= 50

b3= 0

b4= -30

b2= 40 b5= -60

c12= 2 x12=0

c14= 9 x14=10

c13=4 x13=40

c23=3 x23=40

c54=2 x54=20 c45=3 x45=0 c35=1

x35=80

Page 104: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

91

APÊNDICE B

O objetivo deste apêndice é descrever o modo de trabalho do Algoritmo 3.2

apresentado no Capítulo 3, que é responsável por determinar um circuito euleriano em

um grafo euleriano direcionado. Para tanto, considere como exemplo o grafo euleriano

direcionado e fortemente conexo da figura 1B a seguir:

Figura 1B – Grafo direcionado euleriano (simétrico).

Para encontrar um circuito euleriano no grafo acima, procede-se da seguinte

maneira:

1 – Represente o grafo da fig. 1B através de uma lista de sucessores (1º quadro).

A B C D E

E A D B B

C E D

2 – Organize um 2º quadro (vetor T) para registrar, sucessivamente, os vértices do

circuito euleriano, que neste caso está iniciando em “A”.

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A

A

D

C B

E 10

10

9

7

15

11

12 6

Page 105: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

92

3 – Escolha sucessores do último vértice atingido, impedindo a ocorrência de circuitos

“parasitas”, isto é, circuitos que não percorram todos os arcos.

Através do PASSO 1 do algoritmo, foi escolhido v0 = A como o vértice inicial.

Inicialmente todos os arcos não são usados.

Através do PASSO 2, w ← E, que é o vértice adjacente ao vértice “A” (1º quadro), pois

(A, E) ainda não foi usado. O arco (A, E) é rotulado como usado (o vértice “E” é

marcado como usado). Portanto, pelo PASSO 3, “E” é eliminado do 1º quadro e

registrado no 2º quadro na 1º posição vazia de T (2º ordem); V0 ← w = E. Veja os

quadros abaixo:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E

Retornando ao PASSO 2, w ← B pois o arco (E, B) ainda não foi usado. O arco (E, B) é

rotulado como usado, “B” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (3º ordem) conforme o PASSO 3. V0 ← B:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B

Page 106: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

93

Retornando ao PASSO 2, w ← A, pois (B, A) ainda não foi usado. O arco (B, A) é

rotulado como usado, “A” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (4º ordem) conforme o PASSO 3. V0 ← A:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B A

Ao retornar ao PASSO 2, verifica-se que o vértice “A” não tem sucessores, e ainda

existem arcos não usados (vértices não tachados). Ocorre, que se estabeleceu

prematuramente o “circuito parasita” A, E, B, A. Estando no PASSO 4, desloque “A”

para a última casa livre do 2º quadro (FIM do vetor T). O “último” vértice do circuito

agora é “B” (3º ordem).

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B A

Retornando ao PASSO 2, w ← C, pois (B, C) ainda não foi usado. O arco (B, C) é

rotulado como usado, “C” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (4º ordem) conforme o PASSO 3. V0 ← C:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C A

Page 107: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

94

Retornando ao PASSO 2, w ← D, pois (C, D) ainda não foi usado. O arco (C, D) é

rotulado como usado, “D” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (4º ordem) conforme o PASSO 3. V0 ← D:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C D A

Retornando ao PASSO 2, w ← B, pois (D, B) ainda não foi usado. O arco (D, B) é

rotulado como usado, “B” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (6º ordem) conforme o PASSO 3. V0 ← B:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C D B A

Novamente, ao retornar ao PASSO 2, verifica-se que o vértice “B” não tem sucessores,

e ainda existem arcos não usados (vértices não tachados). Ocorre que se estabeleceu

prematuramente o “circuito parasita” B, C, D, B. Estando no PASSO 4, desloque “B’

para a última casa livre do 2º quadro (8º ordem do vetor T). O “último” vértice do circuito

agora é “D” (5º ordem).

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C D B A

Page 108: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

95

Retornando ao PASSO 2, w ← E, pois (D, E) ainda não foi usado. O arco (D, E) é

rotulado como usado, “E” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (6º ordem) conforme o PASSO 3. V0 ← E:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C D E B A

Retornando ao PASSO 2, w ← D, pois (E, D) ainda não foi usado. O arco (E, D) é

rotulado como usado, “D” é eliminado do 1º quadro e registrado no 2º quadro, na 1º

posição vazia de T (7º ordem) conforme o PASSO 3. V0 ← D:

A B C D E

E A D B B

C E D

Ordem 1º 2º 3º 4º 5º 6º 7º 8º FIM

Vértice A E B C D E D B A

Finalmente, todos os arcos foram usados (vértices tachados). No último quadro tem-se

o circuito de Euler com início e fim no vértice A.

Page 109: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

96

APÊNDICE C

1 – Implementação Computacional do Algoritmo Utilizando a Linguagem PASCAL: Program OTIMIZA_COLETA; {$APPTYPE CONSOLE} uses SysUtils; Const MAX=400; //Tamanho da lista que armazena o Grafo. NITER=1000;//Número máximo de iterações. Type Tlista= Record noi:integer; nof:integer; custo:integer; PRT:integer; end; Tvetor=Record peso:real; noinicial:integer; nofinal:integer; ind_i:integer; ind_j:integer; end; TArvore=record noi:integer; nof:integer; custo:integer; fluxo:integer; prt:integer; end; Tcirc=array of integer; TTArvore=array of TArvore;//Array dinâmico!! TLCR=array of Tvetor; TTLista=array[1..MAX] of Tlista; TOF_DM=array of integer; TTime=type TDateTime; TMatCusto=array of array of integer; TPred=array of integer; var MelhorRota,CircEuler:Tcirc; Arvore:TTArvore; Lista:TTLista;//Armazena Grafo G=(V,A,E) OF_DM:TOF_DM; //Armazena os graus(di's) dos vértices LCR:TLCR; //Lista de Candidatos Restrita. U,iter,i,j,Pos,Res,noi,nof,ind,v,k,Dist,MelhorDist,Custo,Temp,no, alfa:integer; Local:string; Tempo:TTime; MatCusto:TMatCusto; Pred:TPred;

Page 110: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

97

////////////////////////////////////////////////////////////////////////////// Function modulo(x,y:integer):integer; var z:integer; begin z:=x+y; if z>0 then modulo:=z else modulo:=-z; end; ////////////////////////////////////////////////////////////////////////////// Function modulo1(x,y:integer):integer; var z:integer; begin z:=x-y; if z>0 then modulo1:=z else modulo1:=-z; end; ////////////////////////////////////////////////////////////////////////////// Function Qaresta(var Lista:TTlista):integer; var x,LJ1,LJ2,i,j:integer; begin x:=0; for i:=1 to k-1 do for j:=i+1 to k do begin LJ1:= Lista[j].noi; LJ2:= Lista[j].nof; if (Lista[i].noi=LJ2) and (Lista[i].nof=LJ1) Then if (Lista[i].PRT<>-1) and (Lista[j].PRT<>-1) Then inc(x,1); end; Qaresta:=x; end; //Fim do Procedimento ////////////////////////////////////////////////////////////////////////////// Procedure ComputaPesos(Q:integer); {calcula os pesos w(i,j) das arestas} var noi,nof,i,j,pos:integer; begin pos:=0; while pos<Q do // troquei Qaresta(Lista) por Q... begin for i:=1 to k-1 do for j:=i+1 to k do begin if (lista[i].noi=lista[j].nof) and (lista[i].nof=lista[j].noi) then {se uma aresta foi encontrada, calcula-se seu peso(w)} begin if (lista[i].PRT<>-1) and (lista[j].PRT<>-1) then

Page 111: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

98

begin noi:=lista[i].noi; nof:=lista[i].nof; if (OF_DM[noi-1]*OF_DM[nof-1])>0 then begin LCR[Pos].peso:=-modulo(OF_DM[noi-1],OF_DM[nof-1]); LCR[Pos].noinicial:=noi; LCR[Pos].nofinal:=nof; LCR[Pos].ind_i:=i; LCR[Pos].ind_j:=j; end else if (OF_DM[noi-1]*OF_DM[nof-1])<0 then begin LCR[Pos].peso:=modulo1(OF_DM[noi-1],OF_DM[nof-1]); LCR[Pos].noinicial:=noi; LCR[Pos].nofinal:=nof; LCR[Pos].ind_i:=i; LCR[Pos].ind_j:=j; end else if (OF_DM[noi-1]=0) and (OF_DM[nof-1]=0) then begin LCR[Pos].peso:=-0.001; LCR[Pos].noinicial:=noi; LCR[Pos].nofinal:=nof; LCR[Pos].ind_i:=i; LCR[Pos].ind_j:=j; end else if (OF_DM[noi-1]=0) or (OF_DM[nof-1]=0) then begin LCR[Pos].peso:=0.001; LCR[Pos].noinicial:=noi; LCR[Pos].nofinal:=nof; LCR[Pos].ind_i:=i; LCR[Pos].ind_j:=j; end; inc(pos); end; end; end; end;{final do while} end; ////////////////////////////////////////////////////////////////////////////// Procedure CalculaOfertaDemanda(var lista:TTlista;no:integer;var OF_DM:TOF_DM); var i,node,arc_o,arc_i,grau: integer; begin node:=1; arc_o:=0; arc_i:=0; while node<=no do begin for i:=0 to k do begin if (lista[i].noi=node) and (lista[i].PRT<>-1) then

Page 112: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

99

inc(arc_o) else if (lista[i].nof=node) and (lista[i].PRT<>-1) then inc(arc_i); end; grau:=(arc_i)-(arc_o); OF_DM[node-1]:=grau; arc_o:=0; arc_i:=0; inc(node); end;{fim do while} end;{fim do procedimento} ////////////////////////////////////////////////////////////////////////////// Procedure OrdenaLCR(var C:TLCR; n:integer);{ordena a LCR utilizando inserção direta} var i,k,j: integer; chave: Tvetor; begin for i:=1 to (n-1) do begin k:=0; j:=i-1; chave:=C[i]; while (j>=0) and (k=0) do begin if chave.peso > C[j].peso then begin C[j+1]:=C[j]; j:=j-1; end else k:= j+1; end;//fim do while C[k]:=chave; end; end; //Fim do Procedimento ////////////////////////////////////////////////////////////////////////////// Procedure IncrementaLista(var Lista:TTLista;var Arvore:TTArvore; var ind:integer); var i,pos:integer; begin ind:=k; for i:=0 to High(Arvore) do begin if ((Arvore[i].fluxo) > 0) then begin pos:=ind+(Arvore[i].fluxo); while (ind < pos) do begin inc(ind); Lista[ind].noi:=Arvore[i].noi; Lista[ind].nof:=Arvore[i].nof; Lista[ind].custo:=Arvore[i].custo; end; end;

Page 113: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

100

end; end; ////////////////////////////////////////////////////////////////////////////// Procedure AtualizaLista(var Lista:TTLista); var i:integer; begin For i:=(k+1) to max do begin Lista[i].noi:=0; Lista[i].nof:=0; Lista[i].custo:=0; Lista[i].prt:=0; end; end; ////////////////////////////////////////////////////////////////////////////// Procedure CircuitoEuleriano(var Lista:TTLista;V,A,Orig:integer;var CircEuler: Tcirc;var Dist:integer); type Clas=^Nodo; Nodo=record chave:integer; prox:Clas; end; ListaSuc=array of Clas; var T:ListaSuc; ind,no,pos,Valor,TotalArcos,max,i:integer; //--------------------------------------------------------------------------// Procedure Ins(var T:Clas;k:integer); var N,P:Clas; begin New(N); N^.chave:=k; if T=nil then begin N^.prox:=nil; T:=N; end else begin P:=T; while (P^.prox<>nil) do P:=P^.prox; N^.prox:=P^.prox; P^.prox:=N; end; end; //--------------------------------------------------------------------------// Procedure Rem(var T:Clas); var P:Clas; begin P:=T; T:=T^.prox; dispose(P);

Page 114: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

101

end; //--------------------------------------------------------------------------// begin SetLength(T,V); TotalArcos:=0; ind:=1; Dist:=0; while (ind<=A) do begin Valor:=lista[ind].prt; if (Valor<>-1) then begin Ins(T[(lista[ind].noi)-1],lista[ind].nof); inc(TotalArcos); Dist:=(Dist)+(lista[ind].custo); end; inc(ind); end; max:=TotalArcos+1; SetLength(CircEuler,max); no:=Orig; pos:=0; CircEuler[pos]:=Orig; while (TotalArcos>0) do begin if (T[no-1]<>nil) then begin inc(pos); i:=no-1; CircEuler[pos]:=T[no-1]^.chave; no:=T[no-1]^.chave; Rem(T[i]); dec(TotalArcos); end else begin CircEuler[max-1]:=CircEuler[pos]; CircEuler[pos]:=0; dec(max); dec(pos); no:=CircEuler[pos]; end; end; //write('O circuito é: '); //for i:=0 to High(CircEuler) do // begin // write(CircEuler[i],' ,'); // end; writeln; writeln; //write('Custo total: ',Dist); writeln; end; //Final do procediemento CircuitoEuleriano!!!

Page 115: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

102

////////////////////////////////////////////////////////////////////////////// Procedure MostrarLista; var i:integer; begin For i:=1 to max do begin write(’Lista(’,i,’): ’); write(’ ’, Lista[i].noi); write(’-->’,Lista[i].nof); write(’ ’,Lista[i].custo); write(’ ’,Lista[i].PRT); writeln; end; end; ////////////////////////////////////////////////////////////////////////////// Procedure MostrarOF_DM; var j:integer; begin For j:=0 to High(OF_DM) do write(’Grau’,’(’,j+1,’):’,’-> ’,OF_DM[j],’;’); end; //////////////INÍCIO DO PROCEDIMENTO QUE TORNA O GRAFO SIMÉTRICO////////////// PROCEDURE FLUXOCUSTOMINIMO(VAR LISTA:TTLISTA; VAR OF_DM:TOF_DM; VAR ARVORE: TTARVORE; VAR MATCUSTO:TMATCUSTO; N:INTEGER); const M=10000; type regNo=^regPilha; pilha= regNo; regPilha=record no:integer; prox:pilha; end; TLista=record fluxo:integer; proxno:integer; atualno:integer; end; VAR LISTAEL: array of Tlista; VETORVISITADO,POTN: array of integer; MATFLUXO:array of array of integer; MIN,MENORI,MENORJ,J,I:integer; NOVO,ATUAL,ANT,TOPO:regNO; IDA,OTIMO:BOOLEAN; //--------------------------------------------------------------------------// FUNCTION CICLONEGATIVO: BOOLEAN; VAR NEGATIVO:BOOLEAN; ATUALC:PILHA; BEGIN

Page 116: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

103

ATUALC:=TOPO; NEGATIVO:=TRUE; WHILE (ATUALC^.PROX<>NIL) AND (NEGATIVO) DO BEGIN IF MATFLUXO[ATUALC^.PROX^.NO, ATUALC^.NO]<>1000 THEN NEGATIVO:=FALSE ELSE ATUALC:=ATUALC^.PROX; END; CICLONEGATIVO:=NEGATIVO; END; //--------------------------------------------------------------------------// PROCEDURE CONSTROIMATFLUXO;{ESTE PROCEDIMENTO TAMBÉM PRENCHE O VETOR POTN} VAR L,C,I,NO:INTEGER; BEGIN SETLENGTH(MATFLUXO,N+1,N+1); SETLENGTH(POTN,N); //WRITELN(’============ CONSTRUINDO A MATRIZ DE FLUXO ============’); FOR L:=1 TO N DO FOR C:=1 TO N DO BEGIN MATFLUXO[L,C]:=1000; END; I:=1; POTN[0]:=0; FOR NO:=2 TO N DO BEGIN IF (LISTA[I].NOI=1) AND (LISTA[I].NOF=NO) THEN BEGIN IF OF_DM[NO-1]<=0 THEN BEGIN MATFLUXO[1,NO]:=-OF_DM[NO-1]; POTN[NO-1]:=LISTA[I].CUSTO; INC(I); END ELSE BEGIN MATFLUXO[NO,1]:=OF_DM[NO-1]; POTN[NO-1]:=-1000; INC(I); END; END ELSE IF OF_DM[NO-1]<=0 THEN BEGIN MATFLUXO[1,NO]:=-OF_DM[NO-1]; POTN[NO-1]:=1000; END ELSE BEGIN MATFLUXO[NO,1]:=OF_DM[NO-1]; POTN[NO-1]:=-1000; END; END; END;

Page 117: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

104

//--------------------------------------------------------------------------// PROCEDURE CONSTROIMATCUSTO; VAR L,C,I:INTEGER; BEGIN //WRITELN(’============ CONSTRUINDO A MATRIZ DE CUSTO ============’); SETLENGTH(MATCUSTO,N+1,N+1); I:=1; FOR L:=1 TO N DO FOR C:=1 TO N DO BEGIN IF (LISTA[I].NOI=L) AND (LISTA[I].NOF=C) THEN BEGIN MATCUSTO[L,C]:=LISTA[I].CUSTO; INC(I); END ELSE MATCUSTO[L,C]:=1000; END; END; //--------------------------------------------------------------------------// PROCEDURE APONTAPRA(TESTE:INTEGER; VAR ACHEIA:BOOLEAN; VAR K:INTEGER);{O PROCEDIMENTO RECEBE O PARÂMETRO 'TESTE' E DEVOLVE OS PARÂMETROS 'ACHEIA' E 'K'} VAR C:INTEGER; BEGIN K:=1; C:=TESTE; ACHEIA:=FALSE; WHILE (K<=N) AND (ACHEIA=FALSE) DO BEGIN IF (MATFLUXO[K,C]<>1000) THEN IF (VETORVISITADO[K-1]=0) THEN ACHEIA:=TRUE ELSE INC(K) ELSE INC(K); END; END; //--------------------------------------------------------------------------// PROCEDURE MOSTRARVETARV; VAR IND:INTEGER; BEGIN WRITELN(’=== VETOR ARVORE ===’); FOR IND:=0 TO HIGH(ARVORE) DO WRITELN(ARVORE[IND].NOI,’-->’,ARVORE[IND].NOF,’ : ’,ARVORE[IND].CUSTO,’ : ’,ARVORE[IND].FLUXO,’ : ’,ARVORE[IND].PRT); END; //--------------------------------------------------------------------------// PROCEDURE INICIALIZAVISITADO; VAR IND: INTEGER; BEGIN

Page 118: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

105

SETLENGTH(VETORVISITADO,N); FOR IND:=0 TO HIGH(VETORVISITADO) DO VETORVISITADO[IND]:=0; END; //-------------------------------------------------------------------------// PROCEDURE QUALCAMINHO(Q:INTEGER; VAR ACHEIQ:BOOLEAN; VAR C:INTEGER);{O PROCEDIMENTO RECEBE O PARÂMETRO 'Q' E DEVOLVE OS PARÂMETROS 'ACHEIQ' E 'C'} VAR K:INTEGER; BEGIN K:=Q; C:=1; ACHEIQ:=FALSE; WHILE (C<=N) AND (ACHEIQ=FALSE) DO BEGIN IF (K<>C) THEN IF (MATFLUXO[K,C]<>1000) THEN IF (VETORVISITADO[C-1]=0) THEN ACHEIQ:=TRUE ELSE INC(C) ELSE INC(C) ELSE INC(C); END; END; //--------------------------------------------------------------------------// FUNCTION CONTPILHA(EL:INTEGER):INTEGER; //CONTA O Nº DE ELEMENTOS DA PILHA BEGIN ATUAL:=TOPO; WHILE (ATUAL<>NIL) DO BEGIN INC(EL); ATUAL:=ATUAL^.PROX; END; CONTPILHA:=EL; END; //--------------------------------------------------------------------------// PROCEDURE MARCAR(M:INTEGER); BEGIN VETORVISITADO[M-1]:=1; END; //--------------------------------------------------------------------------// PROCEDURE GUARDAR(X:INTEGER); BEGIN NEW(NOVO); NOVO^.NO:=X; IF TOPO=NIL THEN BEGIN ANT:=TOPO; TOPO:=NOVO;

Page 119: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

106

TOPO^.PROX:=NIL; ANT:=NIL; END ELSE BEGIN NOVO^.PROX:=TOPO; ANT:=TOPO; TOPO:=NOVO; END; MARCAR(X); END; //--------------------------------------------------------------------------// PROCEDURE CRIACICLO(NO:INTEGER); VAR ACHEIA,ACHEIQ:BOOLEAN; K,C:INTEGER; BEGIN IF (NO<>J) THEN BEGIN APONTAPRA(NO,ACHEIA,K); IF (ACHEIA) THEN BEGIN IF (TOPO=NIL) OR (NO<>TOPO^.NO) THEN GUARDAR(NO); IDA:=TRUE; CRIACICLO(K); END ELSE BEGIN QUALCAMINHO(NO,ACHEIQ,C); IF (ACHEIQ) THEN BEGIN IF (TOPO=NIL) OR (NO<>TOPO^.NO) THEN GUARDAR(NO); IDA:=TRUE; CRIACICLO(C); END; END; IF (NOT ACHEIA) AND (NOT ACHEIQ) AND (IDA) THEN BEGIN IDA:=FALSE; MARCAR(NO); CRIACICLO(TOPO^.NO); END ELSE IF (NOT ACHEIA) AND (NOT ACHEIQ) AND (NOT IDA) THEN BEGIN DISPOSE(TOPO); TOPO:=ANT; ANT:=TOPO^.PROX; IDA:=FALSE; MARCAR(NO); CRIACICLO(TOPO^.NO); END; END ELSE GUARDAR(NO); END;

Page 120: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

107

//--------------------------------------------------------------------------// PROCEDURE DESALOCAPILHA; BEGIN ATUAL:=TOPO; WHILE (ATUAL<>NIL) DO BEGIN TOPO:=ATUAL^.prox; DISPOSE(ATUAL); ATUAL:=TOPO; END; END; //--------------------------------------------------------------------------// PROCEDURE CALCUSTOREDUZIDO; CONST BIG=1000; VAR MENOR,VALOR,L,C:INTEGER; BEGIN MENOR:=BIG; FOR L:=1 TO N DO FOR C:=1 TO N DO BEGIN IF (L<>C) THEN BEGIN IF (MATCUSTO[L,C]<>BIG) AND(MATFLUXO[L,C]=BIG) THEN BEGIN VALOR:=(POTN[L-1])-(POTN[C-1])+(MATCUSTO[L,C]); IF (VALOR<MENOR) THEN BEGIN MENOR:=VALOR; MENORI:=L; MENORJ:=C; END; END; END; END; IF (MENOR>=0) THEN OTIMO:=TRUE; END; //--------------------------------------------------------------------------// PROCEDURE MOSTRARMATFLUXO; VAR L,C:INTEGER; BEGIN FOR L:=1 TO N DO BEGIN WRITELN; FOR C:=1 TO N DO WRITE(MATFLUXO[L,C],’ ’); END; WRITELN; END; //--------------------------------------------------------------------------// PROCEDURE MOSTRARMATCUSTO;

Page 121: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

108

VAR C,L:INTEGER; BEGIN FOR L:=1 TO N DO BEGIN WRITELN; FOR C:=1 TO N DO WRITE(MATCUSTO[L,C],’ ’); END; WRITELN; END; //--------------------------------------------------------------------------// PROCEDURE CONSTROISOLBASICA; VAR L,C,I:INTEGER; BEGIN I:=0; FOR L:=1 TO N DO FOR C:=1 TO N DO IF MATFLUXO[L,C]<>1000 THEN BEGIN ARVORE[I].NOI:=L; ARVORE[I].NOF:=C; ARVORE[I].CUSTO:=MATCUSTO[L,C]; ARVORE[I].FLUXO:=MATFLUXO[L,C]; ARVORE[I].PRT:=0; INC(I); END; END; //--------------------------------------------------------------------------// PROCEDURE MOSTRARPOTN; VAR IND:INTEGER; BEGIN FOR IND:=0 TO N-1 DO WRITE(POTN[IND],’ ’); END; //--------------------------------------------------------------------------// PROCEDURE INICIALIZAPOTN; VAR I:INTEGER; BEGIN POTN[0]:=0; FOR I:=1 TO (N-1) DO POTN[I]:=9999; END; //--------------------------------------------------------------------------// PROCEDURE ATUALIZANDOPOTN;{ATUALIZA AS VARIÁVEIS DUAIS DOS VÉRTICES QUE FORMAM A ÁRVORE BÁSICA} LABEL INICIO; VAR I:INTEGER; BEGIN INICIALIZAPOTN; I:=0; WHILE I <= HIGH(ARVORE) DO INICIO:

Page 122: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

109

BEGIN IF (ARVORE[I].NOI=1) AND (ARVORE[I].PRT<>-1) THEN BEGIN POTN[(ARVORE[I].NOF)-1]:=(POTN[(ARVORE[I].NOI)- 1])

+(MATCUSTO[ARVORE[I].NOI,ARVORE[I].NOF]); ARVORE[I].PRT:=-1; END; IF (ARVORE[I].NOF=1) AND (ARVORE[I].PRT<>-1) THEN BEGIN POTN[(ARVORE[I].NOI)-1]:=(POTN[(ARVORE[I].NOF)-1])-

(MATCUSTO[ARVORE[I].NOI,ARVORE[I].NOF]); ARVORE[I].PRT:=-1; END; IF (ARVORE[I].NOI<>1) AND (ARVORE[I].NOF<>1) THEN IF (POTN[(ARVORE[I].NOI)-1]<>9999) AND (POTN[(ARVORE[I].NOF)-1]=9999) AND (ARVORE[I].PRT<>-1) THEN BEGIN POTN[(ARVORE[I].NOF)-1]:=(POTN[(ARVORE[I].NOI)- 1])

+(MATCUSTO[ARVORE[I].NOI,ARVORE[I].NOF]); ARVORE[I].PRT:=-1; END; IF (ARVORE[I].NOI<>1) AND (ARVORE[I].NOF<>1) THEN IF (POTN[(ARVORE[I].NOF)-1]<>9999) AND (POTN[(ARVORE[I].NOI)-1]=9999) AND (ARVORE[I].PRT<>-1) THEN BEGIN

POTN[(ARVORE[I].NOI)-1]:=(POTN[(ARVORE[I].NOF)-1])-(MATCUSTO[ARVORE[I].NOI,ARVORE[I].NOF]);

ARVORE[I].PRT:=-1; END; INC(I); END; FOR I:=0 TO HIGH(ARVORE) DO BEGIN IF (ARVORE[I].PRT=0) THEN GOTO INICIO; END; END; //--------------------------------------------------------------------------// PROCEDURE INICIALISTAEL; {INICIALIZA O VETOR QUE IRÁ ARMAZENAR O VALOR DO FLUXO DAS ARESTAS CONTRÁRIAS AO ARCO ENTRANTE NO CILCO FORMADO PELO MESMO} VAR I:INTEGER; BEGIN SETLENGTH(LISTAEL,N); FOR I:=0 TO HIGH(LISTAEL) DO BEGIN LISTAEL[I].FLUXO:=-1; LISTAEL[I].PROXNO:=0; LISTAEL[I].ATUALNO:=0; END; END; //--------------------------------------------------------------------------// PROCEDURE MINIMO;{CALCULA O MENOR FLUXO DENTE OS ARCOS CONTRÁRIOS AO ARCO ENTRANTE}

Page 123: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

110

BEGIN ATUAL:=TOPO; MIN:=1000; WHILE ATUAL^.PROX<>NIL DO BEGIN IF MATFLUXO[ATUAL^.PROX^.NO, ATUAL^.NO]<>1000 THEN IF MATFLUXO[ATUAL^.PROX^.NO, ATUAL^.NO]< MIN THEN MIN:=MATFLUXO[ATUAL^.PROX^.NO, ATUAL^.NO]; ATUAL:=ATUAL^.PROX; END; END; //--------------------------------------------------------------------------// PROCEDURE ATUALIZAMATFLUXO; VAR POS,P:INTEGER; BEGIN INICIALISTAEL; MINIMO; MATFLUXO[I,J]:=MIN; ATUAL:=TOPO; POS:=0; WHILE (ATUAL^.PROX<>NIL) DO BEGIN IF MATFLUXO[ATUAL^.NO, ATUAL^.PROX^.NO]=1000 THEN BEGIN MATFLUXO[ATUAL^.PROX^.NO, ATUAL^.NO]:=

MATFLUXO[ATUAL^.PROX^.NO,ATUAL^.NO]- MIN; LISTAEL[POS].FLUXO:=MATFLUXO[ATUAL^.PROX^.NO, ATUAL^.NO]; LISTAEL[POS].PROXNO:=ATUAL^.PROX^.NO; LISTAEL[POS].ATUALNO:=ATUAL^.NO; INC(POS); END ELSE MATFLUXO[ATUAL^.NO, ATUAL^.PROX^.NO]:= MATFLUXO[ATUAL^.NO, ATUAL^.PROX^.NO]+ MIN; ATUAL:=ATUAL^.PROX; END; FOR P:=0 TO (CONTPILHA(0)-2) DO {CASO HAJA MAIS DE UM ARCO COM FLUXO ZERO, O PRIMEIRO ARCO DA LISTA RECEBERÁ FLUXO 1000 NA MATFLUXO. ISTO É, SAIRÁ DA ÁRVORE} IF (LISTAEL[P].FLUXO=0) THEN BEGIN MATFLUXO[LISTAEL[P].PROXNO,LISTAEL[P].ATUALNO]:=1000; BREAK; END; END; ///////////////////////// CHAMADA DOS PROCEDIMENTOS //////////////////////// BEGIN {=============== OTIMIZANDO OS FLUXOS ===============} CONSTROIMATFLUXO; CONSTROIMATCUSTO; CONSTROISOLBASICA; INICIALIZAVISITADO;{OBTEM UMA ÁRVORE BÁSICA INICIAL} OTIMO:=FALSE; TOPO:=NIL; WHILE (NOT OTIMO) DO

Page 124: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

111

BEGIN CALCUSTOREDUZIDO; IF (NOT OTIMO) THEN BEGIN I:=MENORI; J:=MENORJ; IF TOPO<>NIL THEN DESALOCAPILHA; CRIACICLO(I); IF (CICLONEGATIVO) THEN BEGIN WRITELN(’CICLO NEGATIVO!!! = <<FIM DO PROGRAMA>>’); READLN; HALT;{ENCERRA O PROGRAMA!!!!} END ELSE BEGIN ATUALIZAMATFLUXO; //WRITELN(’==========STATUS==========’); //WRITELN(’== MATRIZ DE FLUXO ==’); //MOSTRARMATFLUXO; CONSTROISOLBASICA;{ATUALIZA A ARVORE!!} ATUALIZANDOPOTN; //WRITELN; //MOSTRARVETARV; //WRITELN(’== POTENCIAS DOS NOS ==’); //MOSTRARPOTN; INICIALIZAVISITADO; END; END; END; //WRITELN(’========================== FINAL =======================’); //WRITELN(’== MATRIZ DE FLUXO ==’); //MOSTRARMATFLUXO; //WRITELN; //WRITELN (’== MATRIZ DE CUSTO ==’); //MOSTRARMATCUSTO; //WRITELN; //MOSTRARVETARV; //READLN; END; ////////////////////////////FINAL DO PROCEDIMENTO FCM///////////////////////// Function PodeMelhorar(i:integer):boolean; var pos:integer; melhoria:boolean; begin melhoria:=true; pos:=0; while (melhoria) and (pos<=High(Arvore)) do begin If pos<>i then begin if (Arvore[i].noi<>Arvore[pos].noi) and (Arvore[i].noi<>Arvore[pos].nof) then begin if (Arvore[i].nof<>Arvore[pos].noi) and (Arvore[i].nof<>Arvore[pos].nof) then

Page 125: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

112

inc(pos) else if Arvore[pos].fluxo<>0 then melhoria:=False else inc(pos); end else if Arvore[pos].fluxo<>0 then melhoria:=false else inc(pos); end else inc(pos); end;//Fim do while PodeMelhorar:=Melhoria; end; ////////////////////////////////////////////////////////////////////////////// Procedure Dijkstra(var W:TMatCusto;n,s,t:integer;var Custo:integer; var Pred:TPred); Type arrn=array of integer; boolarrn=array of boolean; Var j,u,v,y,recent:integer; newlabel,temp:integer; path:boolean; final:boolarrn; dist:arrn; Begin SetLength(Dist,n+1); SetLength(Pred,n+1); SetLength(Final,n+1); For v:=1 to n do begin dist[v]:=1000;{peso do arco} final[v]:=false;{arco não existente} pred[v]:=-1; end; dist[s]:=0; final[s]:=true; path:= true; recent:= s; while (not final[t]) do begin for v:=1 to n do {encontra um novo rótulo} if (W[recent,v]<1000) and (not final[v]) then begin newlabel:=dist[recent] + W[recent,v]; if newlabel<dist[v] then begin dist[v]:=newlabel; pred[v]:=recent; end; end;

Page 126: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

113

temp:=1000; for u:=1 to n do {encontra um menor vértice rotulado} if (not final[u]) and (dist[u]<temp) then begin y:=u; temp:=dist[u]; end; if (temp < 1000) then {existe um caminho} begin final[y]:=true; recent:=y; end else {não existe caminho de s para t} begin path:=false; final[t]:=true; end; end; {while} Custo:=Dist[t]; writeln; {writeln(’Custo :’,custo); write(’DIST:’,’[’); For j:=1 to n do begin write(Dist[j],’,’); end; writeln(’]’); writeln; write(’PRED:’,’[’); For j:=1 to n do begin write(Pred[j],’,’); end; writeln(’]’); readln;} end; ////////////////////////////////////////////////////////////////////////////// Procedure LerArquivo(var Lista:TTLista; Local:string); Var Arq:TextFile; Noi,Nof,Custo,ind:integer; begin AssignFile(Arq,Local); Reset(Arq); ind:=0; while not EOF(arq) do begin inc(ind); readln(Arq,noi,nof,custo); lista[ind].noi:=noi; lista[ind].nof:=nof; lista[ind].custo:=custo; end; Close(Arq); end; ///////////////////////** CORPO DO PROGRAMA PRINCIPAL **////////////////////// begin

Page 127: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

114

writeln(’=======================INICIO DO PROGRAMA=========================’); write(’Selecione o grafo: ’); readln(Local); LerArquivo(Lista,Local); write(’Numero de nos: ’); readln(v); writeln; write(’Numero de arcos: ’); readln(k); writeln; write(’Selecione um vertice inicial: ’); readln(no); writeln; write(’Entre com o parametro alfa: ’); readln(alfa); SetLength(Arvore,v-1); SetLength(LCR,Qaresta(Lista)); SetLength(OF_DM,v); //-------------------------FASE DE CONSTRUÇÃO-------------------------------// iter:=1; MelhorDist:=10000; Tempo:=Now(); while (iter<=NITER) do begin U:=Qaresta(Lista); CalculaOfertaDemanda(lista,v,OF_DM);; ComputaPesos(U);{Preenche a LCR} OrdenaLCR(LCR,U); while U <> 0 do {enquanto houver arestas na LCR para serem orientadas} begin Randomize; If U >= alfa then Pos:=Random(alfa) else Pos:=Random(U); noi:=LCR[Pos].noinicial; nof:=LCR[Pos].nofinal; If (OF_DM[noi-1] > OF_DM[nof-1]) then Lista[LCR[Pos].ind_j].PRT:=-1 else If (OF_DM[noi-1]=OF_DM[nof-1]) then begin Randomize; Res:=Random(2); If Res=0 then Lista[LCR[Pos].ind_i].PRT:=-1 else Lista[LCR[Pos].ind_j].PRT:=-1 end else Lista[LCR[Pos].ind_i].PRT:=-1; Dec(U); CalculaOfertaDemanda(lista,v,OF_DM); ComputaPesos(U);{Preenche a LCR} OrdenaLCR(LCR,U); end; {Final do while} CalculaOfertaDemanda(lista,v,OF_DM);

Page 128: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

115

FluxoCustoMinimo(LISTA,OF_DM,ARVORE,MATCUSTO,v); IncrementaLista(Lista,Arvore,ind); CircuitoEuleriano(Lista,v,ind,no,CircEuler,Dist); //----------------------------FASE DE MELHORIA------------------------------// For i:=0 to High(Arvore) do If (Arvore[i].fluxo<>0) and (PodeMelhorar(i)) then//caso encontre arcos isolados,ie, sem outros arcos adjacentes.... begin Dijkstra(MatCusto,v,Arvore[i].noi,Arvore[i].nof,Custo,Pred); if (Custo<Arvore[i].custo) then//efetuará o procedimento de troca. begin For j:=1 to ind do begin If (Lista[j].noi=Arvore[i].noi) and Lista[j].nof=Arvore[i].nof) then Lista[j].prt:=-1; end; nof:=Arvore[i].nof; noi:=Pred[nof]; while noi<>-1 do begin Temp:=Arvore[i].fluxo; repeat inc(ind); Lista[ind].noi:=noi; Lista[ind].nof:=nof; Lista[ind].custo:=Arvore[i].custo; dec(Temp); until Temp=0; nof:=noi; noi:=Pred[nof]; end; writeln(’============MELHORIA EFETUADA!!!!============’); writeln('============O NOVO CICLO SERÁ.....==========='); CircuitoEuleriano(Lista,v,ind,no,CircEuler,Dist); readln; end; end; //--------------------------------TESTE FINAL-------------------------------// if (Dist < MelhorDist) then begin MelhorDist:=Dist; MelhorRota:=CircEuler; end; for i:=1 to ind do lista[i].prt:=0; writeln('Iteracao:',iter); writeln; inc(iter); end; Tempo:=Now()-Tempo; write('Melhor Custo Z(T): ',MelhorDist); writeln; writeln; write('Melhor Rota: '); for i:=0 to High(MelhorRota) do begin write(MelhorRota[i],' ,'); end;

Page 129: OTIMIZAÇÃO DE ROTAS PARA A COLETA DO LIXO … · otimizaÇÃo de rotas para a coleta do lixo domÉstico: um tratamento grasp do problema do carteiro chinÊs misto (pccm) frederico

116

writeln; writeln; write(’Tempo Total: ’,TimeToSTR(Tempo)); readln; end.