Universidade Estadual de Maringá Centro de Tecnologia ... · importante devido à eficiência dos...

77
Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Curso de Engenharia de Produção Implementação de um Algoritmo Genético para uma Aplicação do Problema do Caixeiro Viajante Everton Luiz de Melo TCC-EP-33-2006 Maringá - Paraná Brasil

Transcript of Universidade Estadual de Maringá Centro de Tecnologia ... · importante devido à eficiência dos...

Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Curso de Engenharia de Produção

Implementação de um Algoritmo Genético para uma Aplicação do Problema do Caixeiro Viajante

Everton Luiz de Melo

TCC-EP-33-2006

Maringá - Paraná Brasil

ii

Universidade Estadual de Maringá Centro de Tecnologia

Departamento de Informática Curso de Engenharia de Produção

Implementação de um Algoritmo Genético para uma Aplicação do Problema do Caixeiro Viajante

Everton Luiz de Melo

TCC-EP-33-2006

Trabalho de Conclusão de Curso apresentado ao Curso de Engenharia de Produção, do Centro de Tecnologia, da Universidade Estadual de Maringá – UEM. Orientadora: Profa. Dra. Márcia Marcondes Altimari Samed

Maringá - Paraná 2006

iii

Everton Luiz de Melo

Implementação de um Algoritmo Genético para uma Aplicação do Problema do Caixeiro Viajante

Este exemplar corresponde à redação final do Trabalho de Conclusão de Curso aprovado como requisito parcial para obtenção do grau de Bacharel em Engenharia de Produção da Universidade Estadual de Maringá, pela comissão formada pelos professores:

________________________________________ Orientadora: Profa. Dra. Márcia Marcondes Altimari Samed

Departamento de Informática, CTC

________________________________________ Prof. MSc. Daily Morales

Departamento de Informática, CTC

Maringá, novembro de 2006

iv

DEDICATÓRIA

A todo aquele que algo me ensinou.

v

AGRADECIMENTOS

A Deus, aos meus pais, Valdenir e Eliza, e a todos meus professores, citando Elza, Cleuza,

Rubens e Márcia.

vi

RESUMO

Este trabalho apresenta estudos relacionados ao clássico Problema do Caixeiro Viajante, um problema de grande importância na Pesquisa Operacional, uma das áreas da Engenharia de Produção. O problema se constitui na elaboração de rotas de custo mínimo que devem percorrer todo um conjunto de pontos, sem repetição dos mesmos, retornando ao ponto de partida, o que significa determinar um caminho. O objetivo das pesquisas de resolução deste problema é a redução de custos relacionados, principalmente, a transporte. O texto traz uma revisão da literatura relacionada ao tema onde apresenta conceitos, definições e fundamentos gerais e específicos da Pesquisa Operacional e deste problema, respectivamente. Os escritos utilizam também na sua elaboração os resultados obtidos por trabalhos realizados anteriormente que norteiam e servem como parâmetro para seu desenvolvimento. O presente trabalho apresenta a metodologia empregada na busca de se identificar o melhor método e a melhor ferramenta a se empregar na resolução do Problema do Caixeiro Viajante, a partir de um grupo de métodos e de ferramentas selecionados previamente. Os estudos abordam a utilização de ferramentas disponíveis no mercado e a implementação de um método heurístico. Por fim, este trabalho apresenta os resultados obtidos durante seu desenvolvimento bem como considerações a respeito dos mesmos, identificando as melhores opções a serem aplicadas em casos similares. Palavras-chave: Problema do Caixeiro Viajante, Otimização, Heurísticas, Algoritmos

Genéticos.

vii

SUMÁRIO

DEDICATÓRIA................................................................................................................................... iv

AGRADECIMENTOS...........................................................................................................................v

LISTA DE ILUSTRAÇÕES................................................................................................................ ix

LISTA DE ABREVIATURAS E SIGLAS ...........................................................................................x

1 INTRODUÇÃO .............................................................................................................................1 1.1 Apresentação...........................................................................................................................1 1.2 Objetivos.................................................................................................................................2

1.2.1 Objetivo geral.....................................................................................................................2 1.2.2 Objetivos específicos ..........................................................................................................2

1.3 Justificativas ...........................................................................................................................3 2 REVISÃO DA LITERATURA.....................................................................................................4

2.1 Tomada de Decisão e Otimização...........................................................................................4 2.1.1 Modelagem .........................................................................................................................6 2.1.2 Programação matemática ..................................................................................................8 2.1.3 Grafos...............................................................................................................................11

2.2 Heurísticas ............................................................................................................................15 2.2.1 Algoritmos Genéticos .......................................................................................................16 2.2.2 Busca Tabu .......................................................................................................................20 2.2.3 Simulated Annealing.........................................................................................................21 2.2.4 Algoritmos Híbridos .........................................................................................................22

2.3 O Problema do Caixeiro Viajante .........................................................................................22 2.3.1 Equacionamentos .............................................................................................................24 2.3.2 Variações..........................................................................................................................26 2.3.3 Aplicações ........................................................................................................................27

2.4 Ferramentas...........................................................................................................................28 2.4.1 Solver................................................................................................................................28 2.4.2 Lingo.................................................................................................................................28 2.4.3 GAMS ...............................................................................................................................29

3 METODOLOGIA........................................................................................................................30 3.1 A Empresa ............................................................................................................................30 3.2 O Problema Estudado ...........................................................................................................30 3.3 Modelagem do Problema ......................................................................................................32 3.4 Validação do Modelo............................................................................................................33 3.5 Desenvolvimento da ferramenta ...........................................................................................34

3.5.1 População inicial .............................................................................................................35 3.5.2 Cruzamentos .....................................................................................................................36 3.5.3 Mutações ..........................................................................................................................38 3.5.4 Gerações...........................................................................................................................39 3.5.5 Execuções .........................................................................................................................39 3.5.6 Validação do algoritmo....................................................................................................40

3.6 Coleta de dados.....................................................................................................................41 3.7 Máquina utilizada .................................................................................................................41

4 RESULTADOS............................................................................................................................42

5 CONCLUSÕES............................................................................................................................53

viii

REFERÊNCIAS ...................................................................................................................................55

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

APÊNDICE B .......................................................................................................................................61

APÊNDICE C.......................................................................................................................................63

ANEXO A .............................................................................................................................................65

ix

LISTA DE ILUSTRAÇÕES

FIGURA 1: MODELAGEM E TOMADA DE DECISÃO....................................................................................7 FIGURA 2: EXEMPLO DE GRAFO.............................................................................................................12 FIGURA 3: GRAFO NÃO ORIENTADO E GRAFO ORIENTADO. ...................................................................12 FIGURA 4: GRAFO DESCONEXO..............................................................................................................13 FIGURA 5: GRAFO COM PONTO DE ARTICULAÇÃO.................................................................................13 FIGURA 6: GRAFO E UM PERCURSO HAMILTONIANO. ............................................................................14 FIGURA 7: GRAFO E LISTA ENCADEADA EQUIVALENTE.........................................................................14 FIGURA 8: GRAFO E MATRIZ DE ADJACÊNCIA CORRESPONDENTE.........................................................15 FIGURA 9: GRAFO E MATRIZ DE INCIDÊNCIA EQUIVALENTE. ................................................................15 FIGURA 10: CRUZAMENTO. ...................................................................................................................18 FIGURA 11: MUTAÇÃO. .........................................................................................................................19 FIGURA 12: PASSOS DE UM AG. ............................................................................................................20 FIGURA 13: EVOLUÇÃO DA POPULAÇÃO...............................................................................................20 FIGURA 14: SUPERINTENDÊNCIA NOROESTE E SUAS GERÊNCIAS..........................................................30 FIGURA 15: MATRIZ DE ADJACÊNCIAS DO PROBLEMA..........................................................................32 FIGURA 16: INDIVÍDUO REPRESENTANDO UMA SOLUÇÃO DO PCVS. ...................................................36 FIGURA 17: PRIMEIRA PARTE DO CRUZAMENTO. ..................................................................................36 FIGURA 18: SEGUNDA ETAPA DO CRUZAMENTO...................................................................................37 FIGURA 19: CRUZAMENTO CONCLUÍDO. ...............................................................................................37 FIGURA 20: MUTAÇÃO EFETUADA. .......................................................................................................38 FIGURA 21: FUNCIONAMENTO DO ALGORITMO. ...................................................................................40 FIGURA 22: DADOS SOBRE A RESOLUÇÃO DO MODELO ALTERADO......................................................42 FIGURA 23: SOLUÇÃO E TEMPO DE EXECUÇÃO. ....................................................................................43 FIGURA 24: TELA EXIBIDA PELO ALGORITMO APÓS EXECUÇÃO. ..........................................................51 FIGURA 25: MELHOR SEQÜÊNCIA ENCONTRADA. .................................................................................52 GRÁFICO 1: ÓTIMOS LOCAIS E ÓTIMO GLOBAL. ......................................................................................6 GRÁFICO 2: EVOLUÇÃO DOS CUSTOS EM RELAÇÃO AO NÚMERO DE FILHOS. .......................................45 GRÁFICO 3: MELHORA DO CUSTO NO DECORRER DAS GERAÇÕES. .......................................................47 GRÁFICO 4: CUSTOS DE DEZ EXECUÇÕES..............................................................................................48 QUADRO 1: RESULTADOS DA RESOLUÇÃO DO PROBLEMA APRESENTADO PELO GAMS. 47 QUADRO 2: RESOLUÇÃO DO PROBLEMA DA EMPRESA ENVOLVENDO 42 CIDADES. 49 QUADRO 3: RESOLUÇÃO DO PROBLEMA DA EMPRESA ENVOLVENDO 42 CIDADES. 50

x

LISTA DE ABREVIATURAS E SIGLAS AG Algoritmos Genéticos

GAMS General Algebraic Modeling System

PCV Problema do Caixeiro Viajante

PCVB Problema do Caixeiro Viajante com Backhauls

PCVCP Problema do Caixeiro Viajante com Coleta de Prêmios

PCVG Problema do Caixeiro Viajante Generalizado

PCVJT Problema do Caixeiro Viajante com Janelas de Tempo

PCVS Problema do Caixeiro Viajante Simétrico

PL Programação Linear

PO Pesquisa Operacional

PPL Problema de Programação Linear

SOBRAPO Sociedade Brasileira de Pesquisa Operacional

TSP Travelling Salesman Problem

1

1 INTRODUÇÃO

1.1 Apresentação

O mercado cada vez mais competitivo exige das empresas e instituições decisões eficazes

frente aos problemas que surgem no decorrer do processo de gerenciamento das atividades.

Determinar o caminho a se seguir para que melhores resultados sejam alcançados se constitui

no papel principal da Engenharia de Produção. Para auxiliar a busca das melhores soluções os

engenheiros de produção utilizam diversas ferramentas, dentre elas a Pesquisa Operacional

(PO), também conhecida como Operational Research.

A PO, impulsionada e difundida pelo avanço da tecnologia dos microcomputadores, se faz

importante devido à eficiência dos resultados que apresenta em tempo economicamente

viável. Através de modelos matemáticos, como mostram Hillier e Lieberman (2001), os

problemas são estudados e soluções ótimas ou próximas de um valor ótimo são encontradas

em prazo aceitável, minimizando perdas e custos ou maximizando rendimentos e lucros. Entre

os problemas estudados podem ser citados os que envolvem corte, empacotamento,

dimensionamento de lotes, mistura e roteamento, sendo este último objeto de estudo deste

trabalho.

Atualmente, as margens de lucro do setor produtivo são mínimas e o tratamento dado aos

problemas relacionados ao transporte é fator determinante para a permanência ou não de uma

companhia no mercado. A escolha adequada de sua localização geográfica, considerando

clientes e fornecedores, abordada por Martins e Laugeni (2005) e a elaboração de um plano

racional de distribuição de seus produtos, estabelecendo rotas de custo mínimo, são

imprescindíveis para que os ganhos obtidos nas linhas de produção não sejam absorvidos

pelos gastos com transporte. Como mencionam Caixeta et al. (apud Iannoni e Morabito,

2005) estes valores representam grande parte dos custos operacionais. Além disso, como

citam Campos (1992) e Werkema (1995), a entrega no tempo certo é um dos fatores que

aumenta a satisfação dos clientes e, por conseguinte, gera fidelidade.

Dentre os problemas abordados pela PO que envolvem transporte e roteamento, um dos mais

tradicionais é o Problema do Caixeiro Viajante (PCV) ou Travelling Salesman Problem

(TSP). Tal problema se resume em encontrar a melhor seqüência a ser executada, na tarefa de

2

visitar um determinado conjunto de pontos e retornar à origem, de modo a minimizar o

caminho percorrido e, por conseguinte, o custo.

Dessa forma, a minimização dos custos relativos a transporte tem sido um dos pontos mais

atacados pela Engenharia de Produção, que procura a maximização global dos resultados ao

estudar como melhorar cada uma das etapas do processo produtivo. Assim, estudando

problemas relacionados a roteamento, este trabalho espera gerar contribuições às atividades

produtivas.

1.2 Objetivos

1.2.1 Objetivo geral

O trabalho a ser desenvolvido tem como objetivo geral pesquisar soluções para o PCV através

da análise dos resultados de métodos previamente selecionados.

1.2.2 Objetivos específicos

Além do objetivo geral, o trabalho tem o objetivo de efetuar comparações entre os métodos

estudados. Assim, os objetivos específicos se constituem em:

a) realizar uma revisão bibliográfica dos problemas relacionados a transporte e suas

soluções;

b) selecionar e comparar métodos de solução desses problemas;

c) identificar os programas, ou seja, as ferramentas e os métodos a serem utilizados na

resolução do problema, assim como as abordagens mais adequadas;

d) definir uma aplicação prática e propor uma solução eficaz para o PCV.

1.3 Justificativas

As justificativas deste trabalho se embasam na imperativa necessidade das empresas,

principalmente do setor industrial, precisarem de ferramentas que as auxiliem a tomar

decisões racionais de forma rápida e eficiente, sob pena de colocar em risco sua

sobrevivência. Assim, este trabalho poderá servir como referência para a escolha da

ferramenta ou do método a ser empregado na resolução de problemas semelhantes.

A organização do trabalho se fez em capítulos, da seguinte maneira:

Capítulo 1 – Neste capítulo o trabalho é descrito e são apresentados seus objetivos, suas

justificativas, seus limites e sua estruturação.

Capítulo 2 – Traz os conceitos básicos e aplicações pesquisadas na literatura que

fundamentam este trabalho.

Capítulo 3 – É apresentada a metodologia aplicada durante o desenvolvimento do trabalho.

Capítulo 4 – Contém os resultados obtidos a partir do emprego da metodologia, constante no

capítulo anterior.

Capítulo 5 – São apresentadas as considerações finais a respeito do trabalho desenvolvido.

4

2 REVISÃO DA LITERATURA

Ao contrário do ponteiro de uma bússola, o caminho a ser seguido por uma organização sofre

redirecionamentos constantes. Para cada contexto uma direção ou outra pode ser, ou parecer,

mais viável. Independente da opção escolhida, o objetivo de quem opta por ela é o de obter os

melhores resultados possíveis. Porém, por mais experiente e preparado que seja o decisor, a

incerteza sobre o sucesso da sua escolha existe e, quando possível, deve ser minimizada ou até

mesmo eliminada.

Assim, uma forma de se diminuir as chances de que uma escolha incorra em insucesso ou que

suas conseqüências não atinjam as expectativas é utilizar a PO. Tendo sua origem nos anos

quarenta, durante a segunda guerra mundial, foi utilizada inicialmente pelos aliados para

resolver problemas militares de natureza logística, tática e estratégica, conforme explica a

Sociedade Brasileira de Pesquisa Operacional (SOBRAPO). Sendo uma ferramenta que pode

ser extremamente útil nos processos decisórios, minimizando riscos e incertezas acerca das

decisões, ela se firma como uma ciência fundamental para empresas de diversas áreas.

2.1 Tomada de Decisão e Otimização

A tomada de decisão, conforme afirma Lachtermacher (2004), pode ser definida como um

processo no qual se identifica um problema ou uma oportunidade e se define uma linha de

ação a seguir. Comumente este processo implica em situações complexas, pois envolve

incertezas sobre a escolha a ser feita, sobre seus impactos e sobre os objetivos a serem

alcançados. Também podem existir conflitos entre os decisores devido a seus valores e

objetivos. Além disso, a presença de múltiplos critérios e a possível falta de qualidade das

informações são fatores complicadores. Assim, existem diferentes abordagens que buscam

facilitar a escolha correta.

A PO oferece meios pelos quais o processo de se tomar uma decisão pode ser feito de maneira

racional, onde são alcançados resultados ótimos, ou próximos de um valor ótimo. Para isso

modelos matemáticos são criados a partir do problema real e com eles se obtém os resultados

que são aplicados no problema real. Dessa maneira, os recursos podem ser empregados com

extrema eficiência e os resultados alcançados podem ser os melhores possíveis, conseguindo-

5

se alcançar a otimização. Tal abordagem trabalha com total objetivismo e por isso recebe o

nome de paradigma racionalista, conforme Ensslin et al. (2001).

Justamente pelo extremo objetivismo e racionalismo da PO é defendida a idéia de que uma

outra abordagem, onde aspectos subjetivos são considerados, pode ser mais adequada,

especialmente quando se trabalha com múltiplos critérios e com informações difíceis de se

mensurar numericamente. A abordagem proposta seria a do construtivismo, advinda do

paradigma construtivista, em contraste com o paradigma racionalista. A abordagem

construtivista é aplicada a problemas complexos e envolve diversas pessoas, denominadas

atores. Através de mapas cognitivos os envolvidos chegam a uma solução que é considerada

um apoio à tomada de decisão, e não é necessariamente uma solução ótima.

Embora seja evidente que determinados critérios e problemas são de difícil tradução para

modelos matemáticos, os resultados oferecidos pela abordagem racionalista mostram que sua

eficiência é inquestionável. Assim, como mostram Goldbarg e Luna (2000), quando possível,

a aplicação da PO é um caminho pelo qual a tomada de decisão pode ser conduzida a

resultados otimizados.

Seguindo o paradigma racionalista, segundo Papadimitriou e Steiglitz (1982), uma instância

de um problema de otimização consiste em um par (F, c), representado conforme segue:

1: RFc → (1)

O problema consiste em encontrar uma solução f ∈ F, para o qual:

Fyycfc ∈∀≤ )()( (2)

Onde se considera:

F Um conjunto qualquer dos pontos viáveis;

c A função de custo;

R1 Reta dos números reais, a qual pertence à região de factibilidade;

f Um conjunto solução para o problema;

y Um conjunto qualquer pertencente a F.

Papadimitriou e Steiglitz (1982) também escrevem sobre a vizinhança, que é a região na qual

a solução é procurada. Os autores apresentam os conceitos de ótimo local e global. Um ótimo

6

local ocorre quando se encontra em um determinado ponto uma solução melhor que as

soluções encontradas nos pontos adjacentes a ele. Um ótimo global, ou seja, um valor ótimo

de fato para um problema, é aquele que apresenta a melhor solução dentro de toda a região

factível. O Gráfico 1 apresenta, através de uma curva, uma dada região factível com ótimos

locais, pontos A e C, e ótimo global, ponto B.

Gráfico 1: Ótimos locais e ótimo global.

Fonte: Adaptado de Papadimitriou e Steiglitz (1982).

2.1.1 Modelagem

Modelar significa representar, com menor ou maior fidelidade, uma situação real. Segundo

Lachtermacher (2004), existem basicamente três tipos de modelos, sendo, os modelos físicos,

os modelos análogos e os modelos matemáticos ou simbólicos. Na PO a construção de um

modelo matemático é um passo fundamental no processo de busca da solução de um

problema.

Modelos de maior complexidade, segundo Goldbarg e Luna (2000), devem ser elaborados em

etapas. Em primeiro lugar deve ser feita a formulação ou tradução do problema real para o

ambiente de modelagem, onde são definidas as variáveis envolvidas, a função objetivo e as

restrições do problema. Depois vem a etapa de construção do modelo que envolve a

elaboração da estrutura de entrada e saída de dados, as fórmulas de inter-relação e os tempos.

A terceira parte envolve a execução das análises e engloba a análise da sensibilidade da

solução, a verificação da precisão dos dados, a verificação da estabilidade computacional e o

levantamento de outros detalhes do modelo. Finalmente, vem a etapa de implementação dos

resultados e atualização do modelo. A Figura 1 ilustra este processo em uma organização.

1

c

F 0

CB

A

7

Situação Gerencial Modelo Resultado Decisão

Mundo Simbólico

Mundo Real

Figura 1:Modelagem e tomada de decisão.

Fonte: Adaptado de Lachtermacher (2004).

A ilustração mostra que dados reais são inseridos no modelo que, após o processamento,

chega a resultados que são aplicados a uma situação real. Deste modo, quanto mais próximo o

modelo estiver da realidade e quanto mais precisos forem os dados de entrada, mais eficientes

serão seus resultados. Da mesma forma, quanto mais próximo da realidade estiver, mais

complexo será o modelo. Assim o equilíbrio entre o nível de detalhamento e a complexidade

do modelo é fundamental para se chegar a resultados viáveis, em tempos de processamento

aceitávies.

As equações a seguir, conforme Lachtermacher (2004), formam um modelo matemático

chamado de problema de otimização linear:

Maximizar/Minimizar nn xcxcxcZ +++= K2211 (3)

Sujeito a 11212111 bxaxaxa nn =+++ K

22222121 bxaxaxa nn =+++ K (4)

MMMM mnmnmm bxaxaxa =+++ K2211

0,,, 21 ≥nxxx K (5)

Onde se considera:

aij, i=1,...,m, j=1,...,n Números conhecidos, relacionados a restrições;

bi, i=1,...,m Números conhecidos, relacionados a restrições;

cj, j=1,...,n Números conhecidos, relacionados a algum critério;

x1, x2,..., xn As variáveis do problema.

O mesmo problema pode ser representado na forma reduzida:

8

Maximizar/Minimizar ∑=

=n

jjj xcZ

1 (6)

Sujeito a i

n

jjij bxa ≤∑

=1 mi ,,2,1 K= (7)

0,,, 21 ≥nxxx K (8)

A Equação (3) tem como equivalente à Equação (6), representando a função objetivo do

modelo. A Equação (4) tem a Equação (7) como equivalente, representando as restrições do

problema. A Equação (5) se equivale a Equação (8) e representa as condições de não-

negatividade ou restrições de sinal.

2.1.2 Programação matemática

Formulado o modelo matemático de um problema de otimização linear, a Programação Linear

(PL) constitui, de acordo com Caixeta-Filho (2004), na aplicação de técnicas aprimoradas de

resolução de sistemas de equações lineares, onde são feitas sucessões sucessivas de matrizes,

e onde é considerada uma equação linear adicional que representa o comportamento a ser

otimizado.

Para a PL, Lachtermacher (2004) apresenta quatro teoremas. O primeiro diz que o conjunto

formado por todas as soluções viáveis de um modelo de PL é convexo, ou seja, qualquer reta

traçada entre duas soluções está contida nesse conjunto. O segundo afirma que toda solução

compatível básica do sistema é um ponto extremo do conjunto de soluções viáveis. O terceiro

assegura que se uma função objetivo possui um ponto ótimo finito, este ponto é um ponto

extremo do conjunto das soluções viáveis. O último garante que se uma função objetivo

assume valor ótimo em dois pontos do conjunto de soluções viáveis, ela o assume sobre

qualquer ponto do segmento de reta no qual os pontos estão, ou seja, sobre toda a aresta do

polígono.

Dessa maneira, para que se alcance um resultado, Caixeta-Filho (2004) demonstra alguns

métodos que podem ser empregados. Um método usado para sistemas com duas equações

lineares é o método algébrico por adição onde, após uma das equações ser multiplicada por

um escalar real e ser somada a outra, resta somente uma incógnita. Outro é o método

9

algébrico por substituição, no qual depois de isolar uma variável, ela é substituída na outra

equação pela relação obtida. Também é possível traçar as duas retas representadas pelas

equações num plano cartesiano e, no ponto em que se cruzam, encontrar a solução.

Para problemas que possuam mais de duas equações Caixeta-Filho (2004) mostra que se pode

usar a Regra de Cramer ou o Método de Gauss-Jordan. Neste, após derivações das equações e

de combinações lineares das equações originais, se chega a um sistema com formato de matriz

identidade e, através das operações com matrizes, se encontra a solução.

Uma outra forma de se obter os resultados é através do método gráfico. Lachtermacher (2004)

explana que nesse método as retas representadas pelas equações das restrições e pelas

condições de não negatividade são traçadas em um plano cartesiano. Depois, a partir de

valores estimados, se traça a reta que representa a função objetivo. A solução ótima é a que se

encontra no ponto, ou segmento de reta, em que a reta da função objetivo toca primeiramente

a área de solução viável. O Gráfico 2 ilustra a região de soluções viáveis, delimitada à

esquerda e abaixo pelas condições de não-negatividade. À direita e acima existem três retas

representando restrições que delimitam a área de solução viável. A reta da função objetivo se

encontra acima e à direita da área de soluções viáveis e se desloca em sua direção. O primeiro

ponto dessa região a ser alcançado pela reta da função objetivo é onde se encontra a solução

ótima, neste caso de um problema de maximização.

Gráfico 2: Resolução pelo método gráfico.

Fonte: Adaptado de Goldbarg e Luna (2000). Como afirmam Goldbarg e Luna (2000), um outro método que se destaca como umas das

grandes contribuições à programação matemática do século XX, por ser um método

extremamente eficiente para a solução de sistemas lineares, é o algoritmo Simplex. O método

Soluções viáveis

x1

x2

Restrição 2 Restrição 1

Restrição 3

Condição de não-negatividade de x2

Condição de não-negatividade de x1

Função objetivo de maximização

1 2 3 4 5 6 7 8 9 10 11

Solução ótima

0

1

2

3

4

5

6

10

utiliza ferramentas da álgebra linear para, através de iterações, encontrar a solução ótima de

um Problema de Programação Linear (PPL). Segundo Caixeta-Filho (2004) o método tem

como base as premissas de Gauss-Jordan.

Para encontrar a solução ótima, conforme Goldbarg e Luna (2000), o algoritmo parte de uma

solução viável do sistema de equações do PPL, geralmente localizada em um extremo do

conjunto formado pelas soluções viáveis, ou seja, de um vértice. A partir desse ponto, o

método procura soluções viáveis melhores ou iguais nos demais vértices, até que chega à

solução ótima. Papadimitriou e Steiglitz (1982) descrevem o algoritmo Simplex e

demonstram que através do processo de pivoteamento, utilizando o formato tabular, o método

pode conduzir à solução ótima.

A programação matemática, como cita Caixeta-Filho (2004), também envolve problemas que

possuem características não-lineares. Essas características pode estar presentes na função

objetivo ou fazer parte desde uma até muitas das restrições. Dessa maneira, cada problema

assume características bastante particulares. Por esse motivo na programação não-linear não

existe um algoritmo universal que encontre soluções, como ocorre com o algoritmo Simplex

na PPL.

Para a resolução de problemas de programação não-linear Caixeta-Filho (2004) apresenta o

método do multiplicador de Lagrange. Esse multiplicador, associado à função objetivo e à

função de restrição, forma o Lagrangeano. O processo permite se chegar a expressões

alternativas às expressões originais do problema com resolução mais simples. Lanchtermacher

(2004) apresenta diversos exemplos de problemas de otimização com características não-

lineares resolvidos com o auxílio de planilha eletrônica.

Um outro conjunto de problemas de programação matemática apresentado por Papadimitriou

e Steiglitz (1982) se difere da PL apresentada por possuir uma ou mais variáveis de decisão

representadas apenas por valores inteiros. Está é a programação inteira. Ela é dita

programação inteira total se todas as variáveis de decisão são do tipo inteiro e mista se

possuem variáveis de decisão do tipo inteiro e do tipo real.

11

Lachtermacher (2004) afirma que, para problemas de grande porte, uma solução aceitável é

efetuar a sua resolução como se fosse um PPL e truncar o valor encontrado para o inteiro mais

próximo. Porém, para problemas menores, este procedimento normalmente leva a resultados

inaceitáveis. O PPL que se associa a cada problema de programação inteira é chamado de

problema relaxado. Recebe esta denominação por ter as mesmas características do problema

original com a diferença de trabalhar com valores fracionados.

Para a resolução de problemas de programação inteira, Caixeta-Filho (2004) apresenta o

método Branch-and-Bound, um algoritmo de bifurcação e limite. A partir da solução do

problema relaxado é determinado um limite para a solução ótima do problema de

programação inteira. Papadimitriou e Steiglitz (1982) demonstram que o método executa

sucessivas divisões da área formada pelo conjunto das soluções do problema relaxado e, para

cada uma delas, encontra seu limite. O processo segue até que cada divisão tenha como limite

da solução um ponto de valor ou valores inteiros ou então até que a divisão não compreenda

nenhuma solução viável ao problema original.

Além do método Branch-and-Bound, Goldbarg e Luna (2000) apresentam a técnica de

programação dinâmica que é utilizada para processos de decisão multiestágios. Os autores

mostram que problemas como o de elaboração de um caminho pode ser tratado em estágios,

do fim do trajeto para o início, sendo que a cada estágio o trecho mais eficiente é escolhido, se

obtendo, ao final do processo, um caminho ótimo.

2.1.3 Grafos

Em inúmeros problemas, a otimização está associada às alternativas de conexão entre diversos

pontos. Estes pontos podem representar localidades de uma rota, facilidades de clientes,

máquinas a serem seqüenciadas, ou seja, podem estar envolvidos em diversas situações, como

mostram Goldbarg e Luna (2000). Nesses tipos de problema uma topologia adequada ao

modelo precisa ser usada, assim como formas de organizar as configurações dessa topologia e

critérios de escolha dessas configurações. Tais situações podem ser representadas com

sucesso através de grafos já que estes facilitam a organização e a compreensão do problema,

possibilitando maior entendimento por parte do decisor.

12

Como explicam Papadimitriou e Steiglitz (1982), um grafo G é um par G=(V, E), no qual V é

um conjunto discreto finito de nós ou vértices e E possui elementos denominados como

arestas que são determinados a partir dos elementos de V, os ligando dois a dois, havendo um

em cada extremidade. A Figura 2 apresenta o grafo G=({v1,v2,v3,v4},{[v1,v2], [v2,v3], [v3,v4],

[v4,v2], [v3,v1]}).

Figura 2:Exemplo de grafo.

Como aborda Boaventura Netto (1996), a cada aresta pode ser atribuído um valor que

represente custo, distância, capacidade ou outra informação, formando um grafo valorado. O

autor também afirma que grafos podem ser orientados, o mesmo que direcionados, ou não

orientados. Nos grafos orientados cada aresta, também chamada de arco, possui um sentido

determinado, o que, graficamente, é representado pelo uso de setas como arcos. A Figura 3

apresenta dois grafos, um não orientado e outro orientado, respectivamente.

Figura 3:Grafo não orientado e grafo orientado.

Boaventura Netto (1996) afirma que um grafo é dito completo se todos seus vértices estão

associados dois a dois através de arestas. Ele é dito não conexo ou desconexo se possuir ao

menos um par de vértices não unidos por uma cadeia. Goldbarg e Luna (2000) escrevem que

um grafo é conexo se, para todo par de vértices, há ao menos uma cadeia entre eles. A Figura

4 apresenta um grafo desconexo.

v1 v2

v3 v4

13

Figura 4:Grafo desconexo. Goldbarg e Luna (2000) definem ponto de articulação como um vértice que, se removido,

transforma um grafo conexo em desconexo. A Figura 5 apresenta um grafo com um ponto de

articulação, o vértice d. Um grafo sem pontos de articulação é dito não separável ou biconexo.

Figura 5:Grafo com ponto de articulação. Boaventura Netto (1996) define diversos termos relacionados a percursos em grafos,

conforme segue:

a) percurso, itinerário ou cadeia, é uma família de ligações sucessivas adjacentes, com

exceção da primeira e da última extremidade;

b) um percurso é dito fechado se a última ligação é adjacente à primeira;

c) um percurso é dito aberto se a última ligação não é adjacente à primeira;

d) um percurso é dito simples se não repete ligações e elementar se não repete vértices;

e) ciclo é uma cadeia simples e fechada;

f) corda é uma aresta que une dois vértices não consecutivos de um ciclo;

g) caminho é uma cadeia em um grafo orientado onde a orientação dos arcos é a

mesma, a partir do vértice inicial;

h) circuito é um caminho simples e fechado em um grafo direcionado;

i) um percurso é euleriano quando percorre todas as arestas do grafo;

j) um percurso é hamiltoniano quando passa por todos os vértices do grafo.

Goldbarg e Luna (2000) ainda definem circuito hamiltoniano como um circuito que passa por

todos os nós do grafo G. Tal nome se deriva de um jogo denominado Around the World que

f b

d e g

c

a

v1 v2

v3 v4

v5

v6

14

foi proposto em 1857 por Willian Rowan Hamilton. A cada vértice de um dodecaedro se

associava uma cidade importante da época e o desafio do jogo consistia em, partindo de uma

cidade, visitar todas as demais e retornar a origem. Na PO, a otimização da elaboração de um

circuito hamiltoniano se constitui no PCV. A Figura 6 ilustra um grafo e um percurso

hamiltoniano.

Figura 6:Grafo e um percurso hamiltoniano.

Fonte: Skiena apud Simas(2004). A representação esquemática facilita a visualização, mas não é adequada para fornecer dados

a um computador. Por isso, existem outras maneiras de se representar um grafo, como

explanam Boaventura Netto (1996) e Goldbarg e Luna (2000), e a escolha de qual

representação deve ser usada depende do problema e também do esforço computacional que

será empregado.

Uma representação é a chamada lista de adjacência. Também conhecida como lista encadeada

ou dicionário, é conveniente para a entrada de dados, para a economia de memória e de

armazenamento e para a eficiência computacional de alguns algoritmos. Nela, é construída

uma lista a partir dos vértices do grafo e, ao lado de cada um, são lançados seus vértices

adjacentes. A Figura 7 mostra um grafo representado esquematicamente e a lista de

adjacência equivalente.

Figura 7:Grafo e lista encadeada equivalente.

Matriz de adjacência é uma outra forma de se representar um grafo que é expresso em uma

matriz quadrada A=[aij] onde linhas e colunas representam os vértices do grafo. Por não ser a

3 4

1 2 1

2

3

4

2

1

1

3

3

3

2 4

15

representação mais econômica, do ponto de vista de memória, é mais indicada para estruturas

simples. Na matriz, aij=1 se existe aresta (i,j) e aij=0, caso contrário. A Figura 8 ilustra um

grafo e sua matriz de adjacência correspondente.

Figura 8:Grafo e matriz de adjacência correspondente.

A matriz de incidência possui como desvantagem a esparsidade crescente. É muito utilizada

na programação matemática, especialmente na programação inteira. Possui dimensões m x n,

onde cada linha corresponde a um vértice e cada coluna a uma ligação. A matriz A=[aij]

representa o grafo G=(N, M) se, para todo arco j que liga o vértice k ao vértice l, se tem

aij=+1 se i=k, aij=-1 se i=1 e aij=0 nos demais casos. A Figura 9 mostra um exemplo de um

grafo e sua representação através de matriz de incidência.

Figura 9:Grafo e matriz de incidência equivalente.

2.2 Heurísticas

Diferentemente dos problemas que envolvem PL, os problemas que trabalham com valores

inteiros, em geral, não possuem um algoritmo que conduza à solução ótima com a mesma

eficácia. Conforme Goldbarg e Luna (2000), a principal dificuldade está relacionada à

implementação prática através de instrumentos computacionais, pois na explosão

combinatória dos métodos enumerativos, como o Branch-and-Bound, o tempo de

processamento sobe rapidamente quando se aumenta o número de variáveis. Dessa maneira, a

3

4

1

2

5

6

1

2

4

3

5

6

0

0

0

0

1

0

1

0

0

0

1

2

0

1

0

1

0

0

3

0

1

0

0

0

0

4

1

1

0

0

1

0

5

0

1

1

1

1

1

6

1

0

1

2

4

3

5

+1

0

0

-1

a

0

0

-1

0

+1

b

0

0

0

+1

-1

c

0

0

0

0

+1

d

-1

0

0

-1

0

e

+1 4

1 2

5

3

e

b

c d

a

16

resolução computacional de problemas que, possuindo menos de uma dezena de variáveis,

tem resposta praticamente instantânea, pode chegar a levar milhões de anos se a quantidade de

variáveis atingir a casa das centenas. Por esse motivo, são pesquisados caminhos alternativos

que buscam encontrar uma solução em tempo viável. Assim surgiram as heurísticas.

O termo heuriskein vem do grego e significa descobrir ou achar. Em PO, uma heurística pode

ser definida como um método de busca de soluções, utilizando um esforço computacional

razoável, capaz de garantir a viabilidade ou a otimalidade da solução encontrada. Assim, pela

utilização de heurísticas, a não garantia de obtenção da solução ótima é o ônus para se obter

uma resposta em tempo viável. Também existem as metaheurísticas que se constituem de

procedimentos heurísticos básicos em um nível mais elevado de busca por soluções, entre elas

Algoritmos Genéticos, Busca Tabu, e Simulated Annealing.

2.2.1 Algoritmos Genéticos

Os Algoritmos Genéticos (AG) ou Genetic Algorithms constituem métodos de busca que se

baseiam na teoria da evolução das espécies e na genética. Conforme Samed (2004), os

trabalhos de Lamarck, Darwin, Mendel, entre outros, são a base para aos AG.

No século XIX Lamarck publicou uma teoria baseada em duas leis. A primeira, a Lei do Uso

e Desuso, afirma que o uso de determinadas partes do organismo provoca o desenvolvimento

delas, enquanto o desuso, provoca seu atrofiamento. A segunda, a Lei da Transmissão dos

Caracteres Adquiridos, afirma que as modificações provocadas pela lei anterior são

repassadas à descendência do indivíduo, o que já não é considerado válido.

No mesmo ano da publicação da teoria de Lamarck, nasce Charles Darwin. Este elaborou a

chamada teoria da seleção natural na qual, em linhas gerais, Darwin afirma que os indivíduos

mais adaptados ao meio têm mais chance de sobreviver.

Mendel procurou explicar, através de leis, como ocorrem as trocas de material genético

através de cruzamentos e mutações. Sua teoria de hereditariedade e dominância se baseia em

fatores encontrados nos genes. Posteriormente, através de corantes, foram identificados

filamentos chamados de cromossomos que, mais tarde, Morgan descobriu serem formados por

subgrupos, mais precisamente, genes.

17

Os primeiros trabalhos utilizando os princípios da genética em sistemas artificiais foram de

John Holland. Segundo Goldbarg e Luna (2000), Holland utilizou uma lista de símbolos

binários para representar as cadeias do ácido nucléico com o intuito de fundamentar uma

teoria geral de adaptação robusta, mas encontrou um caminho de grande e imediata aplicação

prática na determinação de máximos e mínimos de funções matemáticas. De forma simples,

AG são uma parte da computação evolucionária que encontrou outras aplicações e que tem as

seguintes características:

a) operam em um conjunto de pontos e não em pontos isolados;

b) operam em um espaço das soluções codificadas e não de forma direta no espaço de

busca;

c) precisam somente do valor de uma função objetivo;

d) usam transições probabilísticas e não regras determinísticas.

Seguem definições de termos usados pelos AG:

a) população é o conjunto de indivíduos ou soluções do problema;

b) cromossomo é um vetor de componentes que representa um indivíduo ou

configuração de solução;

c) fitness é a medida de aptidão do indivíduo ao meio, normalmente relacionada à

função objetivo;

d) gene é uma componente do cromossomo, ou seja, uma variável do problema;

e) alelo ou allele é o que descreve os possíveis estados de um atributo do indivíduo ou

valores de uma variável;

f) locus é a posição do atributo no cromossomo ou a posição da componente no vetor;

g) operadores genéticos são as regras que permitem a manipulação dos cromossomos e

podem ser de crossover, ou de cruzamento, quando permite a geração de filhos a

partir dos cromossomos pais, ou de mutação, quando um novo indivíduo é gerado a

partir de alterações no cromossomo pai;

h) fenótipo é o que denota o cromossomo codificado;

i) genótipo é o que representa a estrutura do cromossomo codificado;

j) schema é um modelo de representação para uma família de cromossomos;

k) número de gerações significa o número de iterações do algoritmo.

18

Os indivíduos, representados por cromossomos, podem ser formados por codificação binária,

através de 0 e 1, ou por representação inteira. Conforme Samed (2004), a codificação

utilizando números reais é a escolha mais adequada a problemas que envolvem a elaboração

de percursos, como o PCV, pois, devido às combinações possíveis dos valores binários, a

quantidade de dígitos para representar cada nó cresceria com o número de vértices. Assim, o

tamanho do vetor binário de cada rota seria a multiplicação entre a quantidade de dígitos

necessários para representar uma cidade pela quantidade de cidades. Adotando tal codificação

são necessários alguns cuidados específicos com os operadores, pois, geralmente, não pode

haver repetição de indivíduos em uma mesma solução, entre outros.

Como explicam Goldbarg e Luna (2000), os indivíduos competem por recursos e

possibilidade de reprodução. Após uma população inicial ser formada, através de um método

específico ou randomicamente, os indivíduos são avaliados através da função fitness e os que

têm melhor desempenho têm também maior chance de se reproduzir. O método roulette

wheel, ou roleta, escolhe um genitor com probabilidade igual a sua adequação normalizada. O

método tournament, ou torneio, sorteia membros aleatoriamente e, dentre os sorteados,

seleciona o indivíduo mais apto. Essa característica probabilística dos métodos visa manter a

diversidade da população. No processo de cruzamento, a partir de cromossomos pais, um

cromossomo filho é gerado. O crossover pode ser feito em uma posição fixa, aleatória ou em

trechos específicos. A Figura 10 apresenta o processo de cruzamento.

Figura 10:Cruzamento.

Fonte: Adaptado de Goldbarg e Luna (2000). Uma outra possibilidade de se manipular os cromossomos, que pode ser usada após os

cruzamentos, é utilizar o processo de mutação. Nesta, um indivíduo pai sofre uma alteração e

gera um filho diferente de si. A Figura 11 ilustra esse processo.

Indivíduos Pais Indivíduos Filhos

1 0 0 1 1 1 0 1

1 1 0 0 0 1 1 0

1 0 0 0 0 1 1 0

1 1 0 1 1 1 0 1

19

Figura 11:Mutação.

Fonte: Adaptado de Goldbarg e Luna (2000). Um AG, de acordo com Goldbarg e Luna (2000), pode ser definido da seguinte maneira:

AG = (N, P, F,Θ,Ω,Ψ ) (9)

Onde se representa:

P A população de indivíduos, P ={S1, S2,..., SN} na qual cada indivíduo Si, i=1,2,...,N, é

formado por uma cadeia de valores de comprimento n;

F A função fitness que retorna valor positivo e real da avaliação de cada indivíduo, onde:

F:Si → R+, i=1,...,N; (10)

Θ Operador de seleção de pais que escolhe r indivíduos de P, onde:

Θ:P→ {p1, p2,..., pr}; (11)

Ω Conjunto de operadores que inclui operador de cruzamento, denominado ΩC, operador

de mutação, denominado ΩM, ou outro operador que produza s filhos de r pais, onde:

Ω={ΩC ,ΩM,...,}:{p1, p2,..., pr}→{f1, f2,..., fs}; (12)

Ψ Operador que retira s indivíduos da população P permitindo a adição de s filhos à

população nova, Pt+1, onde:

Pt+1= Pt -Ψ( Pt) + {f1, f2,..., fs}; (13)

τ Critério de parada, onde τ: Pt→ {verdadeiro, falso}.

As etapas básicas de um AG, conforme Samed (2004), são apresentadas, através de diagrama,

na Figura 12.

Além de se verifica a adaptação dos indivíduos, Samed (2004) cita que é necessário que seja

verificado se os indivíduos não ferem as restrições, sendo soluções infactíveis. Caso existam,

esses indivíduos podem ser descartados, ser transformados em factíveis através de mutação,

receber uma penalização, continuar evoluindo, entre outras. A escolha deve considerar fatores

como a potencial perda de diversidade, no caso da eliminação.

Indivíduo Pai Indivíduo Filho

1 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1

20

Figura 12:Passos de um AG.

Fonte: Adaptado de Samed (2004).

No decorrer das iterações do AG, a esperada evolução da população em direção à solução

ótima é representada na Figura 13.

Figura 13:Evolução da população.

Fonte: Adaptado de Fonte: Rebello e Hamacher (2000).

2.2.2 Busca Tabu

A estratégia da Busca Tabu, ou Taboo Search, como escreve Pidd (1998), consiste em

desenvolver procedimentos que guiem o processo de busca, através de regiões críticas, com o

objetivo de alcançar valores ótimos. Para isso utiliza princípios que tornam a busca mais

inteligente.

Gerar População Inicial

Selecionar Indivíduos e Efetuar Cruzamento

Avaliar o fitness da População Inicial

Avaliar o fitness da Nova População

Selecionar Indivíduos e Efetuar Mutação

Verificar o Critério de Parada

Fim

Solução ótima

*

**

**

*

**

*

* População

Solução ótima *

****

**** * População

21

Durante esse processo, o algoritmo da Busca Tabu armazena informações sobre as soluções

passadas e sobre os movimentos já realizados. A partir da execução e do armazenamento de

um movimento, o próprio é considerado esquecido por um determinado número de iterações,

mesmo que ele seja parte da vizinhança pesquisada no passo atual. Na Busca Tabu a

vizinhança é delimitada pela declaração de alguns de seus membros como tabu. As regras

para isso são ditadas pelo modelador. A idéia é que os movimentos não levem a soluções

piores que a corrente e que não resultem em tentativas sem valor para o aperfeiçoamento da

solução.

O modelador, na fase de implementação do algoritmo, precisa definir o número de iterações

durante as quais um elemento de uma solução já executado deve ser considerado tabu, não

podendo ser escolhido novamente. O objetivo desse procedimento é restringir a busca,

evitando trocas realizadas de forma contínua e rapidamente revertidas, ou seja, evitando

movimentos sem valor.

Da mesma forma, deve ser considerada a freqüência dos movimentos. A execução de um

determinado movimento deve ser registrada. O objetivo desse controle é o de possibilitar

diversidade na busca, se dando preferência aos passos que ocorreram com menor freqüência.

Apesar do algoritmo, a cada iteração, considerar determinados movimentos como tabu, sendo

então não permitidos, o modelador pode estabelecer critérios que permitam a escolha de um

desses passos. Isso deve ser permitido quando um movimento considerado tabu possibilita

uma melhora muito grande da solução atual.

O trabalho de Simas (2004) utiliza a Busca Tabu para a resolução do problema de roteamento.

2.2.3 Simulated Annealing

O termo Annealing é o nome que se dá a um processo ao qual materiais, como o metal e o

vidro, são submetidos afim de que se obtenha uma modificação de sua estrutura física,

possibilitando que sejam trabalhados sem se quebrar ou rachar. Como explicam Pidd (1998) e

Fleischfresser et al. (2001), tal processo se constitui no resfriamento gradual e cuidadoso,

22

depois do material ser aquecido após seu ponto de fusão. Isso é necessário pois se houver um

resfriamento brusco, o material se cristaliza de forma inadequada. Assim, durante o processo

de resfriamento, quando o material se aproxima de um ponto no qual ocorreria falha em sua

estrutura, é fornecido calor, se mantendo o controle necessário.

Assim, na metaheurística, um ótimo local é considerado como um ponto de falha. Para ser

evitado, é feito um reaquecimento, permitindo que a busca pelo ótimo global continue. Dessa

forma, no início do processo o algoritmo do Simulated Annealing permite uma busca bastante

ampla, e, seguindo a probabilidade distribuída sobre uma curva de uma função exponencial,

essa busca se restringe no decorrer do processo. A mesma distribuição de probabilidade

determina as chances de uma solução pior que a atual ser adotada.

Fleischfresser et al. (2001) apresentam estudos nos quais aplicam Simulated Annealing na

distribuição de jornais.

2.2.4 Algoritmos Híbridos

Na busca de soluções, além do emprego isolado de determinada heurística ou metaheurística,

podem ser implementados algoritmos híbridos que trabalham com duas ou mais abordagens.

Geralmente, esses algoritmos trabalham em fases, aplicando em cada uma delas, uma

heurística ou uma heurística e um método determinístico.

Sousa et al. (2002) apresentam uma metaheurística híbrida envolvendo Busca Tabu e

Simulated Annealing na resolução do problema de alocação de salas. Também envolvendo

Busca Tabu e Simulated Annealing, Sousa et al. (2003) apresentam uma hibridização que é

utilizada na programação de tripulações de ônibus. As abordagens híbridas, em muitos casos,

têm possibilitado encontrar bons resultados.

2.3 O Problema do Caixeiro Viajante

No setor produtivo, segundo Ballou (1998), os custos relacionados a transporte somente não

são superiores aos custos do próprio produto. Como explicam Slack et al (2002), tais

dispêndios devem ser considerados desde antes da construção da fábrica, muitas vezes,

23

definindo sua localização. A partir do momento em que a empresa começa a operar, o

planejamento das atividades relacionadas a transporte passa a ser muito importante, pois ele

envolve muitos fatores. Além dos custos com frota, combustível e pessoal, a execução de um

planejamento mal feito que necessite ser socorrido, por exemplo, com horas extraordinárias,

pode acarretar em mais gastos.

Conforme a Consolidação das Leis do Trabalho, o valor que o trabalhador deve receber pelo

tempo que trabalha além da jornada normal tem um acréscimo considerável. A mesma

legislação limita a quantidade de horas extraordinárias dos trabalhadores e regulariza os

períodos de descanso. Do ponto de vista jurídico, a não obediência a estas disposições pode

acarretar ações trabalhistas. Além disso, conforme aborda Iida (1990), estender a jornada

excessivamente pode comprometer a saúde do trabalhador, gerar insatisfação, afastamentos e

diminuir seu rendimento. Estas são preocupações inclusive de sistemas de gestão da

qualidade, como menciona Mello et al. (2002). Por tudo isso, racionalizar o transporte,

evitando conseqüências indesejáveis é fundamental. Dessa maneira diversas variações dos

problemas de transporte e roteamento são estudadas objetivando reduzir tais despesas. Dentre

elas se destaca o PCV.

O PCV é um dos mais tradicionais problemas de programação matemática. Assim como os

demais problemas de roteamento ele se resume na elaboração de uma rota que deve cobrir

pontos nos quais se encontra determinada oferta ou demanda. Para o PCV, a rota deve se

iniciar por determinado ponto que pode ser uma cidade, um posto de trabalho ou depósito,

percorrer todos os demais pontos, passando por cada um deles uma única vez, e retornar ao

ponto inicial, formando o chamado ciclo hamiltoniano.

Como é conhecido nos dias de hoje, sendo traduzido em um problema de otimização no

processo de determinação de um ciclo hamiltoniano, o PCV foi exposto modernamente pela

primeira vez por Hassler Whitney, em 1934, conforme Goldbarg e Luna (2000). De um modo

geral para a resolução do problema são utilizados grafos nos quais se busca o caminho de

menor custo.

O PCV se faz importante porque possui grande aplicação prática, por uma enorme relação

com outros modelos, e pela dificuldade de se obter a solução exata, como escrito por

24

Papadimitriou e Steiglitz (1982). O número de combinações possíveis é igual a (n-1)!, onde n

representa o número de vértices. Além disso, o problema foi classificado como intratável por

Garey e Jonhson (apud Goldbarg e Luna, 2000) e classificado por Karp (apud Goldbarg e

Luna, 2000) como NP-árduo.

2.3.1 Equacionamentos

Para o PVC existem vários equacionamentos elaborados consagrados na literatura

especializada por serem bastante difundidos e por desenvolverem modos particulares de

caracterização do problema.

Dantzing et al. (apud Goldbarg e Luna, 2000) formularam o PCV como um problema de

programação 0-1 sobre um grafo G=(n, A), da seguinte forma:

Minimizar ∑∑==

=n

iijij

n

jxcz

11 (14)

Sujeito a: 11

=∑=

n

i

ijx Nj∈∀ (15)

11

=∑=

n

jijx Ni∈∀ (16)

1,

−=≤∑∈

SxSji

ij NS ∈∀ (17)

}{ 1,0∈ijx Nji ∈∀ , (18)

Onde se considera:

cij Custo de se percorrer o arco (i, j);

xij Escolha ou não do arco (i, j) para a solução, assumindo 0 ou 1, respectivamente;

n Número de vértices do grafo G;

S Um subgrafo de G;

| S | Número de vértices do subgrafo S.

A restrição (17) determina a eliminação de ciclos pré-hamiltonianos. O número de restrições é

de O(2n). Esse equacionamento destaca o caráter combinatório do PCV. Ele também auxilia

25

no entendimento de problemas de seqüenciamento de operações em máquinas sob abordagem

semelhando a do PCV.

Denominada Folha de Cravo e apresentada por Miller et al. (apud Goldbarg e Luna, 2000)

uma outra abordagem exige que, a partir de determinado ponto, um conjunto de n-1 cidades

sejam visitadas uma única vez sendo que se deve retornar à cidade origem t vezes, incluindo o

fechamento do ciclo final, de forma que um máximo de p pontos sejam visitados por ciclo. O

número de restrições é de O(n2). O equacionamento segue:

Minimizar ∑∑==

=n

iijij

n

jxcz

11

Sujeito a: txn

i

i =∑=2

1 Nj∈∀ (19)

11

=∑=

n

ijix j=2, ..., n (20)

11

=∑=

n

jjix j=2, ..., n (21)

1−≤+− ppxuu ijji nji ≤≠≤2 (22)

0≥iu ni ≤≤2 (23)

}{ 1,0∈ijx Nji ∈∀ , (24)

Onde se considera:

cij Custo de se percorrer o arco (i, j);

xij Escolha ou não do arco (i, j) para a solução, assumindo 0 ou 1, respectivamente;

n Número de vértices do grafo G;

t Número de vezes a se retornar ao vértice inicial;

p Máximo de vértices a se visitar em um único tour;

ui Ordem do vértice i;

uj Ordem do vértice j.

Apresentada por Fox et al. (apud Goldbarg e Luna, 2000), a formulação denominada time

dependent onde o custo de se percorrer o caminho i-j depende da posição t do arco (i, j) em

um tour, sob a formulação:

26

Minimizar ∑∑∑===

=n

tijtijt

n

j

n

izcz

111 (25)

Sujeito a: nzn

t

ijt

n

j

n

i

=∑∑∑=== 111

(26)

11121

=− ∑∑∑∑====

n

t

ijt

n

j

n

t

ijt

n

jtztz i=2, ..., n (27)

}{ 1,0∈ijtz tji ,,∀ (28)

Onde se considera:

cijt Custo de se alocar o arco (i, j) na t-ésima posição;

zijt Escolha ou não do arco (i, j) na t-ésima posição, assumindo 0 ou 1, respectivamente;

n Número de vértices do grafo G;

t Posição do arco.

2.3.2 Variações

Dentre as várias versões do PCV algumas merecem maior destaque, como apresentam

Goldbarg e Luna (2000). O PCV Simétrico (PCVS) que tem aplicação em casos onde, por

exemplo, um determinado conjunto de pontos deve ser percorrido em uma seqüência

obrigatória. Tal conjunto de pontos recebe o nome de cluster.

O PCV Generalizado (PCVG) possui semelhança com o PCVS, mas neste problema existem

vários conjuntos de pontos onde o caminho a ser encontrado não necessariamente precisa

percorrer todos os pontos, mas ao menos um ponto de cada conjunto.

Um caso especial do PCVG é o PCV com Backhauls (PCVB) onde os nós do grafo são

divididos em dois grupos, sendo que todos os pontos do primeiro grupo devem ser visitados

para, posteriormente, os pontos do outro grupo serem percorridos. Tal problema tem utilidade

em aplicações que envolvem carregamento e descarregamento.

Também podem ser considerados intervalos de tempo associando uma variável tij a cada arco

do grafo G=(N, A). Tal abordagem se resume no PCV com Janelas de Tempo (PCVJT) no

27

qual a chegada a cada ponto está associada a um dado intervalo de tempo que, se não

atendido, implica em determinado custo.

Outras variações podem considerar o caso em que diversos ciclos devem ser gerados a partir

de um mesmo ponto inicial, como no PCV Múltiplo, ou, como é o caso do PCV com Bônus,

onde os custos das arestas se contrabalançam com os diferentes bônus obtidos nos vértices.

Também existem problemas que envolvem, por exemplo, a probabilidade de em um

determinado ponto haver uma demanda ou não. Este último seria o PCV Estocástico.

Diversos métodos foram implementados para a resolução do PCV e suas diversas versões,

desde métodos determinísticos, passando por métodos heurísticos e metaheurísticos. Devido

ao aumento exponencial da complexidade como o aumento do número de pontos a serem

visitados e com o aumento das restrições, cada vez mais métodos metaheurísticos são

empregados, dentre eles, Algoritmos Genéticos, Simulated Annealing e Busca Tabu, como

mostra Pidd (1998).

2.3.3 Aplicações

Rebello e Hamacher (2000) apresentam uma solução baseada em AG para um problema de

roteamento. A partir de um conjunto de locais onde deverão ser feitas coletas e de uma frota

conhecida, o algoritmo de duas fases executa o zoneamento e posteriormente o roteamento de

cada zona, observando intervalos de tempo e capacidade dos veículos. A fase de roteamento

do problema pode ser considerada um PCVJT. Os resultados são considerados validados na

comparação com um sistema de informação geográfica de transporte.

Melo e Martinhon (2004) demonstram a resolução do PCVCP através de um método híbrido

que envolve as metaheurísticas Greedy Randomized Adaptive Search Procedure (GRASP) e

Variable Neighborhood Search (VNS). Os resultados médios obtidos são considerados

promissores.

Pureza (2001) apresenta uma solução do PCV através de Busca Tabu. O autor trabalha com a

adaptabilidade a níveis de restrições. São apresentados estudos realizados com problemas

clássicos e com problemas de corte de chapas a laser onde o seqüenciamento dos cortes foi

28

tratado como um PCV. Os resultados mostram que o algoritmo apresenta benefícios quando

comparado com o algoritmo sem recursos de adaptabilidade.

Arroyo e Armentano (2001) utilizam AG em problemas de otimização multiobjetivo

envolvendo seqüenciamento de tarefas. Assim, é proposto um AG multiobjetivo. A validação

dos resultados é feita pela comparação dos resultados da metaheurística proposta com a

metaheurística Strength Pareto Evolutionary Algorithm (SPEA).

2.4 Ferramentas

Para possibilitar a resolução de forma eficiente dos diversos problemas compreendidos pela

PO, muitas ferramentas foram desenvolvidas. Além da alternativa de se implementar um

algoritmo, gerando uma nova ferramenta, existe a possibilidade de se utilizar um dos

softwares disponíveis no mercado para a resolução de problemas de otimização. Entre eles

estão Solver, Lingo e GAMS.

2.4.1 Solver

A ferramenta Solver é parte integrante do software Microsoft Excel. Tal ferramenta, segundo

Lachtermacher (2004), pode ser utilizada na resolução de PPL, problemas de programação

não-linear e problemas de programação inteira.

A partir da definição do problema, os dados são lançados na planilha. Depois disso, se acessa

o menu de ferramentas do Microsoft Excel e se seleciona a ferramenta Solver. Os parâmetros

do problema são definidos e a solução pode ser encontrada.

Lachtermacher (2004) demonstra a utilização da ferramenta através de diversos exemplos.

2.4.2 Lingo

Segundo Lucena (2005), a ferramenta Lingo utiliza linguagem simples que permite a

construção de modelos matemáticos de forma direta e intuitiva. Possui extensa biblioteca de

funções matemáticas, probabilísticas e financeiras. Esse software interage com diversos

outros programas do mercado como planilhas eletrônicas e bancos de dados.

29

O problema é modelado no software que, posteriormente, traz a solução. Lucena (2005)

apresenta exemplos de problemas solucionados com a utilização dessa ferramenta.

2.4.3 GAMS

A ferramenta General Algebraic Modeling System (GAMS), segundo sua empresa

desenvolvedora, permite uma modelagem de alto nível para resolver problemas de

programação matemática. O software permite uma representação compacta de modelos

grandes e complexos, permite alterações nas especificações do modelo de forma segura,

trabalha com outras ferramentas do mercado e possui uma ampla biblioteca de modelos.

Lucena (2005) ilustra a utilização da ferramenta através de vários exemplos.

30

3 METODOLOGIA

3.1 A Empresa

A companhia na qual foi encontrado o problema apresentado neste trabalho pertence ao setor

elétrico, atuando nas áreas de geração, transmissão e distribuição de energia elétrica. Com

mais de cinco décadas de história é responsável por quase a totalidade do fornecimento de

energia do estado onde se encontra. Tendo um quadro próprio de aproximadamente sete mil

funcionários, além de terceirizados, a empresa se organiza de forma hierarquicamente rígida

para que cada uma de suas áreas apresente os resultados desejados.

Assim, a corporação divide suas áreas de atuação em diretorias subordinadas à presidência e

dentro dessas diretorias existem subdivisões. Na diretoria responsável pela distribuição de

energia elétrica existem cinco subdivisões denominadas superintendências, uma para cada

região do estado. Por sua vez, dentro de cada superintendência, se encontram gerências, as

quais são responsáveis pelos municípios contidos em seu território de trabalho. A abrangência

de estudo do problema apresentado se limita a área coberta pela superintendência da região

noroeste do estado do Paraná, sediada em Maringá, que engloba as gerências de Campo

Mourão, Paranavaí e Umuarama. A Figura 14 apresenta tal área.

Figura 14:Superintendência noroeste e suas gerências.

Fonte: Adaptado do site do Ministério do Trabalho e Emprego.

3.2 O Problema Estudado

Diversas atividades são desenvolvidas na área de abrangência de cada uma das cinco

superintendências. O deslocamento de recursos materiais e de pessoal é necessário para

garantir o andamento das mais diversas tarefas. Tais tarefas podem ser constituídas da

31

participação de gerentes em reuniões administrativas, de visitas às agências e aos plantões, de

levantamentos de dados e de vistorias em campo, de transporte de equipamentos e

suprimentos utilizados nas atividades de campo, entre outras.

Cada uma das tarefas citadas tem características particulares e por isso as rotas a serem

elaboradas podem variar desde poucos locais a se percorrer até dezenas de pontos a se visitar.

No caso das visitas às agências e aos plantões, um gerente de área, o superintendente ou outro

colaborador da empresa, regularmente tem a necessidade de, saindo da sede da

superintendência em Maringá, visitar diversas cidades de diferentes gerências, e retornar ao

ponto de partida. Hoje a seqüência das visitas é planejada pela pessoa que as executa, sem o

auxílio de qualquer ferramenta.

Outra situação freqüente ocorre quando é preciso que um técnico envolvido com projetos faça

levantamentos em campo para analisar as condições da rede de distribuição e as obras

necessárias. Neste caso, ele parte da cidade onde está sediada a sua gerência, percorre os

pontos especificados e retorna à sua cidade de origem. Atualmente a elaboração de tal

percurso também é feita sem a utilização de um sistema que garanta o melhor trajeto.

A distribuição de recursos materiais às diversas agências e plantões é feita de modo que,

havendo necessidade dos mesmos, é providenciado o seu transporte da sede da gerência até a

cidade onde ele será usado. Neste caso, a elaboração de rotas mais abrangentes que

considerem todas as localidades que solicitam materiais em determinado instante pode ser um

caminho interessante de se otimizar tal processo.

Assim, fica claro que a falta de uma ferramenta que auxilie a elaboração de tais percursos

implica em altos custos, envolvendo gastos excessivos com combustível, manutenção dos

veículos e horas de trabalho perdidas na estrada. Além de tais custos, existe o grave problema

do risco inerente a qualquer deslocamento com veículo. Um percurso mal elaborado pode

exigir, desnecessariamente, que um colaborador se exponha a grandes riscos, se comparados

aos riscos de uma rota de custo ótimo.

Dessa forma, é necessário que as distâncias percorridas sejam minimizadas, se elaborando

rotas de custo ótimo, ou de custo próximo do ótimo. Com isso, se diminuem os gastos

financeiros, a perda de tempo com deslocamentos e o risco para os funcionários.

32

3.3 Modelagem do Problema

O problema apresentado pode ser modelado como um PCVS, pois o custo de se percorrer o

trecho entre duas cidades é o mesmo, independente do sentido. Dessa maneira, as cidades a

serem incluídas no circuito e as distâncias entre elas podem ser representadas através de uma

matriz de adjacências. Nesta matriz, onde está representado o grafo do problema, as linhas e

colunas representam as cidades, ou vértices envolvidos, e cada interseção entre uma linha e

uma coluna, cij, traz a distância entre as cidades, ou valores dos arcos, correspondentes. Na

Figura 15 é apresenta a generalização de tal matriz.

Figura 15:Matriz de adjacências do problema. A partir da matriz apresentada, o modelo matemático para a otimização pode ser definido

partindo do modelo proposto por Dantzing et al. (apud Goldbarg e Luna, 2000):

Minimizar ∑∑==

=n

i

ijij

n

j

xcz11

(29)

Sujeito a: 11

=∑=

n

i

ijx Nj∈∀ (30)

11

=∑=

n

j

ijx Ni∈∀ (31)

1,

−=≤∑∈

SxSji

ij NS ∈∀ (32)

}{ 1,0∈ijx Nji ∈∀ , (33)

Onde se considera:

cij Distância entre as cidades i e j;

xij Escolha ou não do trecho entre as cidades i e j para compor a solução, assumindo 0 ou

1, respectivamente;

1

2

4

3

n

c11

c21

c41

c31

1

cn1

c12

c22

c42

c32

2

cn2

c13

c23

c43

c33

3

cn3

c14

c24

c44

c34

4

cn4

...

...

...

...

...

...

c1n

c2n

c4n

c3n

n

cnn

M M M M M M

33

n Número de cidades a se visitar;

S Um subconjunto de cidades;

| S | Número de vértices do subconjunto S.

A função objetivo, Equação (29), busca minimizar o custo do circuito a ser elaborado ao

procurar a solução com menor distância a ser percorrida. As restrições representadas pelas

Equações (30) e (31) exigem que cada cidade seja visitada uma única vez. A não existência de

ciclos pré-hamiltonianos é garantida pela restrição representada pela Equação (32). A

Equação (33) determina que cada arco seja desconsiderado ou faça parte da solução,

assumindo valores binários 0 e 1, respectivamente.

3.4 Validação do Modelo

Conforme demonstrado no Capítulo 2 deste trabalho, existem diversas opções de ferramentas

que podem ser empregadas na resolução de problemas da PO. A seleção depende das

características do problema a ser estudado, do tempo disponível para familiarização com a

ferramenta, além de outros fatores. Devido à facilidade de utilização e a proximidade que a

programação no sistema apresenta dos modelos matemáticos, foi escolhido o software GAMS

IDE, versão 2.0.33.5, da GAMS Development Corporation como instrumento a ser

empregado neste trabalho afim de validar o modelo apresentado.

Esta ferramenta faz uso de uma linguagem de alto nível, facilitando a representação de

modelos complexos. As mudanças nas especificações podem ser realizadas de forma fácil e

segura possibilitando que, partindo de um conjunto de condições simples, se chegue a

modelos mais complexos. Ao executar o modelo, o software gera relatórios de fácil

compreensão onde são apresentados os passos da resolução e solução encontrada.

Além destas características, o GAMS traz consigo bibliotecas com modelos de diferentes

problemas que fazem uso de vários pacotes para resolver problemas matemáticos. Estes

pacotes são denominados solvers. Os modelos trabalham com programação linear, não-linear

e inteira. Para a resolução de muitos problemas eles podem ser utilizados como ponto de

partida, sendo necessárias, muitas vezes, poucas adaptações.

34

Para o PCV a biblioteca do software traz um modelo que encontra a solução ótima para um

PCVS com até 42 cidades que é similar ao problema descrito. O algoritmo soma cortes e

exclui os subciclos encontrados nas soluções anteriores. Internamente, neste modelo, o

GAMS trabalha com uma relaxação e utiliza o solver Cplex que é projetado para resolver com

rapidez problemas grandes e difíceis, com mínima intervenção do usuário. Dessa maneira o

software, através de um método exato, garante o alcance da solução ótima. A biblioteca do

programa não traz todos os detalhes relativos ao método utilizado. O Anexo A deste trabalho

expõe a relação das cidades envolvidas nesse modelo e a matriz com os custos dos caminhos

entre elas. O modelo não informa de que maneira tais custos foram obtidos e tampouco sua

unidade de medida.

A versão de demonstração do software, disponibilizada via internet pelo fabricante, impõe

limitações. Para o modelo citado, considerando os 42 vértices, a resolução do problema exige

que sejam instanciadas 861 variáveis discretas. Porém a demonstração do programa permite

que, no máximo, 50 variáveis discretas sejam utilizadas. Assim, para possibilitar que o

funcionamento do software pudesse ser observado, o modelo original sofreu uma diminuição

no número de cidades envolvidas, passando a trabalhar apenas com as 10 primeiras cidades

das 42 listadas. Após essa alteração, o software foi executado e, considerando apenas 10

cidades, o circuito de custo mínimo foi encontrado pelo GAMS, assim como seu custo. Com a

alteração feita no problema original o número de variáveis discretas instanciadas na resolução

passou de 861 para 45, ficando dentro dos limites da versão de demonstração utilizada.

Dessa forma se verificou que a modelagem considerada para o problema a ser estudado, que é

equivalente à apresentada no modelo oferecido pelo GAMS, pode ser empregada ao problema

da empresa estudada. Apesar do software disponibilizado pela internet não permitir a

resolução do problema para um número maior de cidades, foi possível obter em sua biblioteca

o custo da solução ótima do problema completo, ou seja, abrangendo as 42 cidades listadas.

Os valores relativos aos custos das soluções ótimas do modelo presente no software,

considerando 10 e 42 cidades, foram utilizados como parâmetros para a implementação,

validação e utilização da ferramenta posteriormente desenvolvida.

3.5 Desenvolvimento da ferramenta

Para resolver o PCVS da empresa estudada, foi desenvolvida uma ferramenta que se constitui

na implementação de um algoritmo que se baseia nos conceitos da heurística AG, apresentada

35

no Capítulo 2 deste trabalho. Para essa implementação foi utilizado o software de

desenvolvimento Turbo Pascal 7.0 da Borland International, Inc.

A matriz na qual constam os custos que relacionam as cidades, umas às outras, são obtidos

pela ferramenta desenvolvida a partir de um arquivo de texto gravado na mesma pasta dela. O

algoritmo, a partir de parâmetros pré-definidos, gera uma população inicial na qual cada

indivíduo representa uma solução. A partir da população inicial, o algoritmo faz cruzamentos

e mutações, possibilitando que uma solução melhor que as soluções iniciais seja encontrada.

Nas rotas elaboradas não é definido o ponto de partida, porém, como a solução resulta em um

circuito, o custo é o mesmo, independente de onde se parta. O funcionamento da ferramenta

desenvolvida pode ser explicado mais detalhadamente em etapas.

3.5.1 População inicial

Cada indivíduo da população é constituído por uma seqüência de vértices a serem visitados,

formando uma solução possível para o problema. No algoritmo, cada indivíduo ocupa uma

linha de uma matriz na qual o número de colunas é o número de vértices envolvidos. Assim,

cada indivíduo deve conter em sua seqüência todas as cidades envolvidas, sem haver

repetição. Dessa forma, para gerar a população inicial, o algoritmo sorteia randomicamente,

para cada indivíduo, uma seqüência de cidades, formando um circuito hamiltoniano para cada

indivíduo. Para isso, o algoritmo implementado verifica, para cada cidade a ser inserida na

seqüência de um determinado indivíduo, se a mesma cidade já está presente na solução em

formação. Em caso positivo, outra cidade é sorteada. Esse processo segue até que o indivíduo

a ser gerado represente uma solução factível, independente de seu custo, e que satisfaça as

restrições estabelecidas pelas Equações de (30), (31), (32) e (33).

Obedecendo tais condições, o algoritmo gera uma determinada quantidade de indivíduos,

segue a Equação (29) para calcular o custo de cada um deles e seleciona os mais aptos para

que sejam preservados e permaneçam na população a ser trabalhada. Os membros não

selecionados são descartados. As quantidades de indivíduos a serem gerados inicialmente e de

indivíduos a serem conservados, são determinadas antes da execução do algoritmo. A Figura

16 apresenta um indivíduo com 10 posições e a seqüência na qual os vértices devem ser

visitados, exemplificando uma solução para o PCVS de 10 cidades.

36

Figura 16:Indivíduo representando uma solução do PCVS. Após a definição da população a ser trabalhada, a mesma começa a passar por modificações

realizadas por cruzamentos e mutações.

3.5.2 Cruzamentos

No processo de cruzamento, uma parte dos indivíduos da população é sorteada aleatoriamente

e, dois a dois, os indivíduos pais intercalam trechos de genes entre si, gerando indivíduos

filhos. O algoritmo também oferece a possibilidade de que, dentre os sorteados, apenas os

melhores se submetam às trocas de genes. Nesse processo, para possibilitar uma maior

diversidade de cruzamentos, a ferramenta sorteia aleatoriamente, para cada par de indivíduos

pais, um número do intervalo fechado [2, n], onde n é o número de vértices envolvidos. Esse

número define o Ponto Inicial, ou seja, o ponto da seqüência dos indivíduos no qual as trocas

se iniciam. Depois, também aleatoriamente, a ferramenta sorteia um número do intervalo [1,

(n-Ponto Inicial+1)]. Esse segundo número define o Tamanho do Trecho de genes a ser

trocado.

Na primeira parte do cruzamento, ou seja, da posição 1 à posição (Ponto Inicial-1), os

indivíduos filhos 1 e 2 recebem, respectivamente, as seqüências de genes dos indivíduos pais

1 e 2, conforme ilustra a Figura17.

Figura 17:Primeira parte do cruzamento.

8 2 1 4 3 2 10 9 7 61ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ªPosições:

Indivíduo:

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

8 2 1 4 3 5 10 9 7 61ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

Pai 1:

2 7 1 5 6 8 10 3 9 4Pai 2:

8 2 1 4 Filho 1:

2 7 1 5 Filho 2:

Posição Inicial

Tamanho do Trecho

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

37

A partir da posição Ponto Inicial até a posição (Ponto Inicial+Tamanho do Trecho-1),

segunda parte do cruzamento, o filho 1 recebe os genes do pai 2 e o filho 2 recebe os genes do

pai 1. Porém, a partir da posição Ponto Inicial, é necessário que haja cuidado para que

vértices já presentes no trecho compreendido da posição 1 à (Ponto Inicial-1) de cada um dos

filhos não sejam inseridos novamente, infringindo a condição representada pela Equação (34).

Para isso, o algoritmo verifica, a cada vértice a ser inserido, se ele já está presente na primeira

parte daquele filho. Em caso positivo, o algoritmo atribui 0 a essa posição. A Figura 18 ilustra

essa etapa.

Figura 18:Segunda etapa do cruzamento. Na terceira parte do cruzamento o algoritmo termina de completar cada filho preenchendo as

posições nas quais se encontram valores iguais a 0 e as posições do intervalo [(Ponto

Inicial+Tamanho da Troca-1), n]. Para isso o algoritmo busca, da última até a primeira

posição do pai 1, os vértices ainda não presentes no filho 1. O mesmo ocorre entre pai 2 e

filho2, concluindo o cruzamento. A Figura 19 mostra a finalização do cruzamento.

Figura 19:Cruzamento concluído.

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

8 2 1 4 3 5 10 9 7 61ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

Pai 1:

2 7 1 5 6 8 10 3 9 4Pai 2:

8 2 1 4 6 7 10 9 5 3Filho 1:

2 7 1 5 3 4 10 9 8 6Filho 2:

Posição Inicial

Tamanho do Trecho

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

8 2 1 4 3 5 10 9 7 61ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

Pai 1:

2 7 1 5 6 8 10 3 9 4Pai 2:

8 2 1 4 6 0 10 Filho 1:

2 7 1 5 3 0 10 Filho 2:

Posição Inicial

Tamanho do Trecho

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

38

Após todos os indivíduos pais, dois a dois, terem concluído seus cruzamentos, o número de

filhos gerados é o mesmo do número de pais sorteados e escolhidos para as trocas de genes. O

algoritmo então sorteia novamente tal quantidade de indivíduos da população e os substitui

pelos filhos gerados. Porém, para evitar que os melhores indivíduos sejam substituídos por

tais filhos, esses sorteios somente atingem a metade menos apta da população. Tal

procedimento visa garantir a evolução do conjunto de soluções. No processo de cruzamento, o

número de indivíduos a serem sorteados é, assim como o número de indivíduos que irão de

fato efetuar trocas de genes, determinado previamente, ou seja, antes da ferramenta entrar em

execução.

3.5.3 Mutações

Efetuados os cruzamentos, o algoritmo realizará mutações. Nesse processo, cuja quantidade

de vezes a ser repetido é definida antes de se começar a rodar a ferramenta, um indivíduo

qualquer da população é sorteado, e tem sua seqüência de vértices alterada. Tal alteração

segue os moldes do cruzamento no que diz respeito ao Ponto Inicial das trocas e ao Tamanho

do Trecho a ser trocado, com a diferença de que envolve somente um indivíduo da população,

que inverte dois trechos de sua própria seqüência. Assim como no cruzamento, são sorteados

o Ponto Inicial e o Tamanho do Trecho. O passo seguinte é a inversão dos intervalos [Ponto

Inicial,(Ponto Inicial+Tamanho da Troca-1)] e [(Ponto Inicial+Tamanho da Troca), n]. No

caso da mutação, a restrição representada pela Equação (34) não corre risco de ser

desrespeitada pois cada indivíduo sorteado já a atende e somente há no processo inversão na

seqüência. A Figura 20 exemplifica uma mutação efetuada.

Figura 20:Mutação efetuada.

8 2 1 4 3 5 10 9 7 61ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

Posição Inicial

Tamanho do Trecho

8 2 1 4 9 7 6 3 5 101ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª

39

Após cada mutação ser realizada, o custo da nova seqüência gerada é calculado e, caso ele

seja menor que o custo do indivíduo original, essa nova solução substitui a anterior. Tal

artifício tem como objetivo proporcionar a evolução da população.

3.5.4 Gerações

Para que os indivíduos evoluam e convirjam para a solução ótima ou para uma solução

satisfatória, é necessário que os cruzamentos e as mutações ocorram repetidas vezes e de

forma intercalada. Dessa maneira, após uma população inicial ser gerada e de uma parte dela

ser selecionada para prosseguir, o algoritmo submete seus indivíduos a sucessivos processos

de cruzamentos e mutações. Cada submissão da população aos processos de cruzamentos e de

mutações se constitui em uma geração. A quantidade de gerações é determinada antes de se

iniciar o algoritmo.

3.5.5 Execuções

O caráter estocástico inerente à heurística AG, implica na necessidade de que o algoritmo seja

iniciado repetidas vezes para que se verifique o quão confiáveis são seus resultados. Isso

minimiza as chances de que um sucesso, ou insucesso, obtido por acaso seja considerado

regra de funcionamento da ferramenta. Por esse motivo, geralmente, o algoritmo é executado

diversas vezes. Em cada execução uma nova população inicial é criada, os membros mais

aptos são escolhidos e gerações são desenvolvidas.

Após todas as execuções programadas serem concluídas, o algoritmo exibe dados referentes

às execuções realizadas, entre eles a melhor solução encontrada, seu custo, a quantidade de

vezes que tal solução foi alcançada, em qual execução foi obtida pela primeira vez, a média

das soluções das execuções e o tempo decorrido durante o trabalho da ferramenta. Além de

tais informações serem exibidas na tela do computador, o algoritmo as registra em um arquivo

de texto específico para os resultados. Juntamente com os resultados obtidos, o algoritmo

registra em arquivo de texto os parâmetros utilizados no processo, como número de

indivíduos gerados, de indivíduos selecionados a se manter, de filhos por geração, de

mutações por geração, de gerações e de execuções. Esses registros facilitam a obtenção de

dados estatísticos sobre o funcionamento da ferramenta e garantem maior segurança contra a

perda de tais dados. A Figura 21 apresenta um fluxograma que resume o funcionamento da

ferramenta.

40

Figura 21:Funcionamento do algoritmo. 3.5.6 Validação do algoritmo

Após a implementação, o problema original apresentado pelo GAMS contendo 42 cidades e

também o problema do software restrito a 10 cidades, foram submetidos ao algoritmo. Foram

feitos testes, estudos e variações nos parâmetros de trabalho da ferramenta com o objetivo de

melhorar seu desempenho na tarefa de buscar uma boa solução ou mesmo a solução ótima. A

partir dos resultados extraídos da ferramenta desenvolvida para o problema apresentado pelo

GAMS, tanto para 42 como para 10 vértices, foi verificada a validade e analisada a

capacidade do algoritmo implementado resolver o problema da empresa estudada. Assim, o

problema real da companhia foi submetido à ferramenta implementada e seus resultados

foram comparados aos resultados obtidos através da elaboração de rotas sem o auxílio de

ferramentas específicas.

População Inicial

População Selecionada

Cruzamentos

Mutações

Definição dos Parâmetros

Fim

Início

41

3.6 Coleta de dados

Para a resolução do problema apresentado, as distâncias entre as cidades envolvidas foram

obtidas no endereço eletrônico da Associação Brasileira de Concessionárias de Rodovias e

lançadas em uma matriz. O Apêndice A apresenta as cidades envolvidas e as distâncias

rodoviárias em quilômetros entre elas.

3.7 Máquina utilizada

Todas es etapas do estudo que envolveram esforços computacionais, explicitamente as que

utilizaram os softwares GAMS, Turbo Pascal e a própria ferramenta desenvolvida, se deram

em um computador pessoal equipado com processador AMD Athlon 64 2800+ de 1,8GHz e

com 512MB de memória. O sistema operacional utilizado foi o Windows XP Professional,

versão 2002, da Microsoft Corporation.

42

4 RESULTADOS

Com o intuito de se obter parâmetros para a ferramenta a ser desenvolvida, foram extraídos

dados da resolução do modelo apresentado pelo GAMS. Para o problema restrito às 10

primeiras cidades listadas no Anexo A, ao se solicitar a resolução do modelo, o software

indicou que a solução ótima encontrada tem custo igual a 200. Os dados resumidos da

resolução do modelo limitado a 10 vértices são apresentados na Figura 22.

S O L V E S U M M A R Y

MODEL tsp OBJECTIVE z

TYPE MIP DIRECTION MINIMIZE

SOLVER CPLEX FROM LINE 215

**** SOLVER STATUS 1 NORMAL COMPLETION

**** MODEL STATUS 1 OPTIMAL

**** OBJECTIVE VALUE 200.0000

RESOURCE USAGE, LIMIT 0.109 10000.000

ITERATION COUNT, LIMIT 13 100000

GAMS/Cplex Apr 21, 2006 WIN.CP.NA 22.2 031.034.041.VIS For Cplex 10.0

Cplex 10.0.1, GAMS Link 31

Proven optimal solution.

MIP Solution: 200.000000 (13 iterations, 0 nodes)

Final Solve: 200.000000 (0 iterations)

Best possible: 200.000000

Absolute gap: 0.000000

Relative gap: 0.000000

Figura 22:Dados sobre a resolução do modelo alterado.

Fonte: Adaptado do software GAMS. A Figura 23 apresenta o conjunto de arestas selecionadas para compor a solução e o tempo de

execução da resolução do problema restrito às 10 primeira cidades da matriz do Anexo A.

43

---- 235 VARIABLE x.

c2 .c1 1

c4 .c1 1

c4 .c3 1

c5 .c2 1

c6 .c5 1

c7 .c6 1

c8 .c3 1

c9 .c7 1

c10.c8 1

c10.c9 1

EXECUTION TIME = 0.031 SECONDS

Figura 23:Solução e tempo de execução.

Fonte: Adaptado do software GAMS.

Para o problema alterado, o circuito de custo mínimo parte de Manchester, passa por

Montpelier, Charleston, Louisville, Indianápolis, Milwaukee, Minneapolis, Chicago, Detroit e

Cleveland, retornando à origem. A resolução se deu em 31 milésimos de segundo.

Com relação ao modelo completo, envolvendo 42 vértices, o valor obtido na biblioteca do

software como custo da solução ótima foi 699. A seqüência ótima e o tempo de resolução para

o modelo integral não são mencionados em sua biblioteca. Os valores obtidos no GAMS

serviram como balizadores no processo de avaliação e aperfeiçoamento do algoritmo e de

seus parâmetros de trabalho.

Depois de implementado, o algoritmo foi executado contendo os dados do modelo

apresentado pelo software GAMS. Envolvendo apenas 10 ou todas as 42 cidades, foram

realizados diversos testes e modificações, visando melhorar seu desempenho na tarefa de

encontrar uma boa solução ou, exatamente, a solução ótima. Tais modificações ocorreram

tanto no código do algoritmo quanto nos parâmetros de trabalho definidos antes de cada

execução.

Nos testes, se pôde observar que o critério de geração da população inicial tem importância

relevante no processo de busca da melhor solução. Para o problema apresentado pelo GAMS,

envolvendo 42 cidades, foi definida uma população de trabalho de 400 indivíduos. Ao se

gerar aleatoriamente somente essa quantidade de indivíduos, mantendo todos eles na

população de trabalho, o custo obtido dos melhores indivíduos de tal população inicial ficou

em torno de 2500. Ao se executar o algoritmo de forma que 400000 indivíduos fossem

44

gerados, para que os 400 melhores fossem preservados, o custo dos indivíduos mais aptos do

grupo conservado ficou próximo de 2100, ou seja, cerca de 16% menor que o encontrado ao

se gerar apenas 400 elementos. Apesar de 400000 ser um número relativamente elevado de

indivíduos a se gerar, ele representa apenas 2,84×10-46% das 1,40×1051combinações

possíveis de serem feitas, de acordo com o cálculo de 42!. Contudo, tal número permitiu que a

ferramenta buscasse a solução a partir de uma população mais qualificada, o que se traduziu

em redução da quantidade de gerações necessárias e melhora dos resultados encontrados. Para

10 cidades a população de trabalho foi de 20 indivíduos, sendo gerados inicialmente 2000

soluções aleatórias.

A definição da quantidade de indivíduos da população de trabalho foi definida de forma a se

tentar alcançar o equilíbrio entre a diversidade de soluções, que é diretamente proporcional à

quantidade mencionada, e ao tempo de execução, que é inversamente proporcional a ela

devido à necessidade de se aumentar o número de filhos, mutações e gerações.

Foram feitos também testes a partir de populações geradas através de busca míope. Em tais

casos, para cada vértice foi gerado um indivíduo, cada um partindo de uma das cidades e

visitando, a cada passo, a mais próxima até o circuito ser completado. Os resultados de tais

testes ficaram aquém dos resultados obtidos a partir de indivíduos gerados randomicamente,

assim tal procedimento não foi adotado.

Para os cruzamentos, o procedimento de se sortear uma determinada quantidade de indivíduos

e escolher os melhores dentre esses para efetuar troca de genes, teve impacto negativo à

medida que o número de membros sorteados se distanciou do número de selecionados. Ao se

sortear muitos indivíduos para que poucos dos melhores cruzassem, a população convergiu de

modo rápido para uma solução distante da ótima. Ao se sortear apenas o número de

indivíduos que efetivamente efetivariam trocas, a população conservou maior diversidade e a

solução final foi melhorada, especialmente ao se trabalhar com 42 cidades, sendo adotado tal

procedimento. Para 10 vértices, o sorteio de 4 indivíduos para que os 2 melhores cruzassem

foi a configuração da qual decorreram os melhores resultados.

Quanto ao processo de substituição de indivíduos da população pelos filhos gerados, foram

feitos testes de modo que os filhos pudessem substituir qualquer elemento. Os testes

mostraram que, seguindo essa instrução, os custos não convergiam para o desejado mas

apenas oscilavam em torno dos custos dos indivíduos gerados inicialmente. Também foram

45

feitos testes de modo que os filhos substituíssem indivíduos dentre os 75% menos aptos,

dentre os 50% piores e dentre os 25% com custos mais elevados. Os melhores resultados

ocorreram quando os filhos, aleatoriamente, substituíram a metade menos capaz da

população. Com esta configuração houve boa velocidade de melhora dos custos e

convergência destes para o custo ótimo, devido à diversidade mantida.

Quanto ao número de filhos por geração, se verificou que, para cada dimensão de problema,

no que se refere ao número de vértices envolvidos, existe um número ideal a se gerar nos

cruzamentos. Tal número também depende do tamanho da população com a qual se está

trabalhando, devendo ter no máximo de 10% desse tamanho. Ao se manter fixa a quantidade

de indivíduos da população, o aumento do número de filhos propiciou a aceleração da

melhora dos custos das soluções. Apesar de ter conferido maior velocidade à melhora dos

custos das soluções, o aumento do número de filhos fez com que tais melhoras se

estabilizassem sem que o custo ótimo, ou um valor próximo dele, tivesse sido alcançado. Já

com um número reduzido de filhos, a melhora a cada sessão de cruzamentos foi mais

modesta, porém se estendeu por mais gerações. Contudo, ao se fazer tal número muito

pequeno, as gerações necessárias para que a solução ótima, ou uma solução próxima dela,

fosse encontrada, aumentaram demasiadamente o tempo de execução do algoritmo. Assim, o

ideal foi trabalhar com um número de filhos que proporcionasse equilíbrio entre uma boa

velocidade da melhora dos custos e um prolongamento razoável através das gerações. Para 42

cidades o número ideal por geração foi de 8 filhos. O Gráfico 1 representa a evolução dos

custos com dois números diferentes de filhos, a e b, sendo que a é maior que b.

Gráfico 3: Evolução dos custos em relação ao número de filhos.

0

500

1000

1500

2000

2500

0

2000

4000

6000

8000

1000

0

1200

0

1400

0

1600

0

1800

0

2000

0

Custo da melhor solução

Gerações

Ótimo

a b

2 4 6 8 G 1 3 5 7 ... 0

Inicial

46

A implementação do processo de mutação possibilitou para o algoritmo um ganho expressivo

de eficiência. Sem tal processo o algoritmo não foi capaz de atingir a solução ótima ao

procurar o melhor circuito de 42 vértices. Com 10 vértices, mesmo quando excluída a

mutação, a solução ótima foi encontrada, apesar de ter ocorrido com maior freqüência quando

tal procedimento foi mantido. Em ambas dimensões de problema o aumento do número de

mutações trouxe melhorias. Por outro lado também prolongou o tempo de execução. Assim,

encontrar o ponto de equilíbrio foi importante. Para 42 cidades, o número ideal por geração

encontrado foi de 800 mutações. Para 10 cidades, 10 mutações por geração.

Foi possível observar que para o problema, envolvendo 10 ou 42 vértices, o aumento do

número de gerações propiciou melhora no custo da melhor solução encontrada. Tal melhora

se acentuou com as primeiras gerações e se tornou mais tênue à medida que o número delas

cresceu, até atingir uma situação praticamente estável a partir da qual melhoras não foram

mais percebidas. Para 42 cidades, o número de gerações necessárias foi 20000 e para 10

cidades, 250. O Gráfico 4 ilustra tal comportamento durante a execução do problema

apresentado pelo GAMS envolvendo 10 vértices.

Gráfico 4: Melhora do custo no decorrer das gerações do problema de 10 vértices.

A melhora da solução durante a execução do problema completo do GAMS aplicado ao

algoritmo implementado é mostrada no Gráfico 5.

190 195 200 205 210 215 220 225 230

1 2 3 4 5 6 7 8 9 10 11

Custo da melhor solução

Gerações

0 25 50 75 100 125 150 175 200 225 250

47

Gráfico 5: Melhora do custo no decorrer das gerações do modelo GAMS com 42 vétices. Os resultados registrados no arquivo de texto permitiram que fossem feitos levantamentos

relativos à eficiência do algoritmo, tanto no que se refere à freqüência com a qual a solução

ótima é encontrada, quanto ao valor médio de todas soluções obtidas. Para o problema

apresentado pelo GAMS, restrito a 10 cidades, a ferramenta desenvolvida realizou milhares

de execuções e obteve a solução ótima em 78,930% dos casos. A média dos custos de todas

soluções obtidas por execução foi de 200,513, ou seja, 0,256% acima da solução ótima. O

tempo de cada execução foi, em média, de 0,004 segundo. Para o mesmo modelo, mas

considerando todos os 42 vértices, foram realizadas centenas de execuções. A incidência de

encontro da solução ótima foi de 19,090%. A média do custo das soluções foi de 706,081, ou

seja, 1,013% acima do ótimo. A seqüência ótima de cidades consta no Apêndice B. O tempo

médio, por execução, foi de 3 minutos e 32 segundos. O Quadro 1 resume tais dados.

Número de Vértices

Custo Ótimo

Execuções Realizadas

Ocorrência da Solução Ótima(%)

Média dos Custos das Execuções Tempo(s)

10 200 5000 78,930 200,513 0,004

42 699 500 19,090 706,081 212

Quadro 1: Resultados da resolução do problema apresentado pelo GAMS.

Considerando 10 e 42 cidades, foram realizadas séries de 10 execuções. Os resultados

apresentados indicam que para 10 cidades esse número é suficiente para se obter a solução

ótima. Para 42 cidades, nem todas séries resultaram em solução ótima. Tal comportamento já

0

500

1000

1500

2000

2500

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

1000

0

1100

0

1200

0

1300

0

1400

0

1500

0

1600

0

1700

0

1800

0

1900

0

2000

0

Custo da melhor solução

Gerações

699

48

era esperado devido à menor freqüência de obtenção da solução ótima observada

anteriormente. Assim, para que existam mais chances do valor ótimo ser alcançado, séries

com mais execuções são o ideal. Porém, cada execução consome mais de 3 minutos, o que

pode dificultar séries longas. Apesar disso, mesmo que apenas uma única execução seja

realizada, o encontro de uma boa solução é bastante provável. Essa afirmação pôde ser

confirmada ao se observar o Gráfico 6, no qual constam os resultados de 10 execuções, sendo

que a pior delas obteve custo 3,14%.

Gráfico 6: Custos de dez execuções.

Depois desses resultados, o algoritmo foi utilizado para a resolução do problema da empresa

citada envolvendo 10 e 42 cidades. Os parâmetros utilizados forma os mesmos que

apresentaram os melhores resultados na resolução do problema proposto no software GAMS.

Os dados das distâncias, em quilômetros, entre as cidades constantes no Apêndice A foram

utilizados pela ferramenta desenvolvida.

Para o problema reduzido, ou seja, considerando apenas 10 cidades da região da empresa, os

custos dos melhores indivíduos da população inicial ficaram em torno de 680Km. O Quadro 2

mostra os resultados da aplicação de tal problema à ferramenta desenvolvida.

699 70

8

708

704

700

701 72

1

707

699

699

600

800

0 1 2 3 4 5 6 7 8 9 10 11

699

Custo da melhor solução

Execução

49

Série Menor Custo(Km) Número de Ocorrências

Média dos Custos(Km) Tempo(s)

1 626 4 631,9 1,2

2 626 6 629,3 1,2

3 626 8 626,6 1,2

4 626 7 628,5 1,2

5 626 8 628,2 1,2

6 626 9 630 1,2

7 626 8 626,6 1,2

8 626 9 626,3 1,2

9 626 6 629,8 1,2

10 626 7 630,5 1,2

Quadro 2: Resolução do problema da empresa envolvendo 10 cidades.

Através das execuções realizadas, considerando apenas 10 cidades da área da empresa

estudada, se pôde observar que a melhor solução encontrada tem custo igual a 626Km, foi

alcançada em 72% das vezes e é 7,9% melhor que as melhores soluções dentre as primeiras

geradas pelo algoritmo. Considerando as soluções aleatórias, sem seleção, a melhora é de

mais de 26%, já que indivíduos gerados randomicamente têm custo próximo a 857Km. A

melhor seqüência encontrada foi: Alto Paraná, Doutor Camargo, Engenheiro Beltrão, Campo

Mourão, Araruna, Cianorte, Cruzeiro do Oeste, Altônia, Cidade Gaúcha e Cruzeiro do Sul. A

média das soluções foi de 628,77Km e o tempo gasto a cada 10 execuções foi de 1,2 segundo.

O Gráfico 7 apresenta a evolução do custo da solução em uma execução.

Gráfico 7: Evolução do custo do problema regional com 10 vértices.

600610620630640650660670680690700

1 2 3 4 5 6 7 8 9 10 111 2 3 4 5 6 7 8 9 10 11

Custo da melhor solução

Gerações

0 25 50 75 100 125 150 175 200 225 250

626

50

Para elaborar o circuito de 42 vértices do mesmo problema, os custos dos melhores indivíduos

da população inicial gerada aleatoriamente ficaram em torno de 3350Km. O Quadro 3

apresenta os resultados de 10 séries de 10 execuções cada considerando 42 cidades atendidas

pela empresa estudada.

Série Menor Custo(Km) Número de Ocorrências

Média dos Custos(Km) Tempo(s)

1 1235 10 1235 2190

2 1235 10 1235 2199

3 1235 9 1236,1 2219

4 1235 9 1236,1 2174

5 1235 9 1235,6 2322

6 1235 8 1236,9 2413

7 1235 9 1240,8 2420

8 1235 10 1235 2179

9 1235 9 1235,6 2170

10 1235 8 1239,3 2173

Quadro 3: Resolução do problema da empresa envolvendo 42 cidades.

Conforme os resultados apresentados na resolução do problema da empresa, se pôde verificar

a alta freqüência do custo mínimo 1235Km. Tal custo foi obtido em 91% das execuções e é

63,13% menor que os custos das melhores soluções geradas inicialmente e a partir das quais a

solução evoluiu. Se forem considerados os custos de indivíduos gerados aleatoriamente, sem

que sejam selecionados os melhores, a solução encontrada chega a ser 70% mais econômica.

As soluções aleatórias têm apresentado custo médio de 3773Km. A melhor solução

encontrada consta no Apêndice C deste trabalho. A média das soluções de cada série ficou

bastante próxima deste valor, atingindo 1236,54Km. O Tempo de execução médio de 10

execuções foi de 37 minutos e 25 segundos. No Gráfico 8 está descrita a convergência do

custo para tal problema durante uma execução.

51

Gráfico 8: Convergência do custo na resolução do problema com 42 cidades.

A Figura 24 mostra a tela exibida pela ferramenta implementada após a execução do

problema da empresa para 42 vértices.

Figura 24:Tela exibida pelo algoritmo após execução.

A Figura 25 apresenta em destaque a área coberta pela regional e as ligações entre as cidades

envolvidas, segundo a melhor solução encontrada.

0

500

1000

1500

2000

2500

3000

35000

1000

2000

3000

4000

5000

6000

7000

8000

9000

1000

0

1100

0

1200

0

1300

0

1400

0

1500

0

1600

0

1700

0

1800

0

1900

0

2000

0

1235

Custo da melhor solução

Gerações

52

Figura 25:Melhor seqüência encontrada.

53

5 CONCLUSÕES

Depois de realizados estudos, feitos os testes, efetuadas as adaptações e as melhorias na

ferramenta, se pôde concluir que o algoritmo implementado é capaz solucionar de forma

eficaz os problemas a ele conferidos.

No caso dos problemas derivados da biblioteca do software GAMS, a ferramenta

implementada com os princípios da heurística AG, conseguiu alcançar a solução ótima em

78,93% dos casos, ao trabalhar com 10 vértices, e em 19,09% dos casos, ao buscar o melhor

circuito de 42 vértices. Tais números demonstram que o algoritmo implementado é uma

ferramenta confiável, sendo considerada uma dezena um número razoável de execuções para

se obter a resposta ótima ou uma boa resposta, já que a média das soluções ficou bastante

próxima da melhor solução possível. Assim, o algoritmo foi validado.

Para o problema da empresa estudada, considerando a capacidade apresentada pelo algoritmo

na resolução do problema do GAMS e a alta freqüência dos valores mínimos encontrados

como custos dos circuitos de 10 e de 42 vértices, se pode esperar que os custos mínimos

encontrados sejam os menores valores possíveis. Assim, as soluções apresentadas pela

ferramenta desenvolvida, têm grande probabilidade de serem ótimas. Também no problema

da empresa, quando o algoritmo não encontrou o valor ótimo, obteve um valor semelhante,

levemente mais alto. Dessa forma, mesmo que seja considerado o caráter estocástico da

ferramenta, sua capacidade de apresentar bons resultados justifica seu uso.

Para a empresa, a ferramenta desenvolvida possibilita uma economia real já que até o

momento os caminhos são elaborados de maneira empírica. Considerando que, partindo de

custos da ordem de 4000Km, o algoritmo consegue chegar a circuitos de 1235Km, fica

evidente a utilidade do mesmo em auxiliar a economia de recursos e a maximização dos

lucros. Se forem considerados os custos dos indivíduos selecionados, dentre os gerados

randomicamente, a economia, em termos financeiros, pode ser de mais de R$ 400,00, apenas

em combustível e em uma única viajem. Se a ferramenta for adotada para todos os trajetos a

serem elaborados, os recursos que podem ser salvos são bastante consideráveis. Além dos

valores relativos a combustível deve ser considerada a economia de se evitar o desgaste dos

veículos e horas de trabalho perdidas nas estradas. Outro ponto que não poderia deixar de ser

54

destacado é a redução dos riscos aos funcionários que a ferramenta propicia ao otimizar

trajetos.

Estudos futuros podem ser direcionados com o intuito de que a ferramenta aumente sua

eficácia. O algoritmo também pode ser trabalhado de forma que seja capaz de resolver

problemas com mais vértices que os aqui apresentados. Restrições de tempo, capacidade, e

ordem das cidades, podem ser implementadas. Os custos entre os pontos a se visitar também

podem ser fruto de cálculos que considerem as condições da estrada.

Com relação ao emprego dos princípios de AG, apesar da ferramenta ter atingido seu

objetivo, estudos futuros podem ser conduzidos de modo que, juntamente com a heurística

aqui utilizada, seja implementado um outro método, exato ou mesmo heurístico, alcançando

resultados melhores.

55

REFERÊNCIAS

ABRAHÃO, Fernando Teixeira Mendes; GUALDA, Nicolau Dionísio Fares. Aplicação da

metaheurística colônia de formigas e das heurísticas 2-opt e 3-opt na solução de problemas

logísticos da força aérea brasileira. In: SIMPÓSIO BRASILEIRO DE PESQUISA

OPERACIONAL, 36., 2004, São João Del-Rei. Anais... Rio de Janeiro: SOBRAPO, 2004.

1CD.

ARENALES, Marcos N. Otimização Linear. São Carlos: USP, 2003.

ARROYO, José Elias; ARMENTANO, Vinícius A. Um algoritmo genético para problemas

de otimização combinatória multiobjetivo. In: SIMPÓSIO BRASILEIRO DE PESQUISA

OPERACIONAL, 33., 2000, Campos do Jordão. Anais... Rio de Janeiro: SOBRAPO, 2001.

1CD.

ASSOCIAÇÃO BRASILEIRA DE CONCESSIONÁRIAS DE RODOVIAS. Disponível em:

<http://www.abcr.org.br/geode/index.php>. Acesso em 18 ago. 2006.

BALLOU, Ronald H. Logística empresarial. 4. ed. São Paulo: Atlas, 1998.

BOAVENTURA NETTO, Paulo Oswaldo. Grafos: teoria, modelos, algoritmos. 2. ed. São

Paulo: Edgard Blücher, 1996.

BRASIL. Consolidação das leis do trabalho. 29. ed. São Paulo: Saraiva, 2002.

CAIXETA-FILHO, José Vicente. Pesquisa operacional: técnicas de otimização aplicadas a

sistemas agroindustriais. 2. ed. São Paulo: Atlas, 2004.

CAMPOS, Vicente Falconi. TQC: controle da qualidade total. 6. ed. Belo Horizonte:

Fundação Christiano Ottoni, 1992.

56

ENSSLIN, Leonardo; MONTIBELLER NETO, Gilberto; NORONHA, Sandro Macdonald.

Apoio à decisão: metodologias para estruturação de problemas e avaliação multicritério de

alternativas. Florianópolis: Insular, 2001.

FLEISCHFRESSER, Sergio Augusto; STEINER, Maria T. Arns; CARNIERI, Celso;

CORREA, Elon Santos; ROSÁRIO, Raimundo Ronilson Leal. Abordagem de um problema

de entrega de jornais aos assinantes por métodos heurísticos e estatísticos. In: SIMPÓSIO

BRASILEIRO DE PESQUISA OPERACIONAL, 33., 2000, Campos do Jordão. Anais... Rio

de Janeiro: SOBRAPO, 2001. 1CD.

GAMS: a user´s guide. GAMS DEVELOPMENT CORPORATION. Disponível em:

<http://www.gams.com>. Acesso em 6 ago. 2006.

GOLDBARG, Marco Cesar; LUNA, Henrique Pacca Loureiro. Otimização combinatória e

programação linear: modelos e algoritmos. Rio de Janeiro: Campus, 2000.

HILLIER, Frederick S.; LIEBERMAN, Gerald J. Introduction to operations research. New

York: McGraw-Hill, 2001.

IANNONI, Ana Paula; MORABITO, Reinaldo. Análise do sistema logístico de recepção de

cana-de-açucar: um estudo de caso utilizando simulação discreta. Gestão & Produção, São

Carlos, v.9, n.2, ago. 2002. Disponível em:

<http://www.dep.ufscar.br/docentes/morabito/G&P02b.pdf>. Acesso em: 19 jun. 2006.

IIDA, Itiro. Ergonomia: projeto e produção. São Paulo: Edgard Blücher, 1990.

LACHTERMACHER, Gerson. Pesquisa operacional na tomada de decisões: modelagem

em Excel. 2. ed. Rio de Janeiro: Campus, 2004.

LUCENA, Gustavo Schwerz. Resolução de problemas de otimização utilizando

ferramentas computacionais. Maringá: UEM, 2005.

57

MARTINS, Petrônio Garcia; LAUGENI, Fernando Piero. Administração da produção. 2.

ed. São Paulo: Saraiva, 2005.

MELLO, Carlos H. P. et al. ISO 9001: 2000: sistema de gestão da qualidade para operações

de produção e serviços. São Paulo: Atlas, 2002.

MELO, Valdir A.; MARTINHON, Carlos A. Metaheurísticas híbridas para o problema do

caixeiro viajante com coleta de prêmios. In: SIMPÓSIO BRASILEIRO DE PESQUISA

OPERACIONAL, 36., 2004, São João Del-Rei. Anais... Rio de Janeiro: SOBRAPO, 2004.

1CD.

MINISTÉRIO DO TRABALHO E EMPREGO. Disponível em:

<http://perfildomunicipio.caged.com.br/ >. Acesso em 7 ago. 2006.

OLVE, Nils-Göran; ROY, Jan; WETTER, Magnus. Condutores da performance: um guia

prático para o uso do “balanced scorecard”. Tradução: Maria Cristina da Costa Muller. Rio de

Janeiro: Qualitymark, 2001.

PAPADIMITRIOU, Christos H.; STEIGLITZ, Kenneth. Combinatorial optimization:

algorithms and complexity. Mineola: Dover, 1982.

PESQUISA Operacional. SOCIEDADE BRASILEIRA DE PESQUISA OPERACIONAL.

Disponível em: <http://www.sobrapo.org.br/sitesobrapo.htm>. Acesso em 12 jun. 2006.

PIDD, Michael. Modelagem empresarial: ferramentas para tomada de decisão. Tradução:

Gustavo Severo de Borba. Porto Alegre: Bookman, 1998.

PUREZA, Vitória. Aplicação de uma abordagem adaptativa de busca tabu ao problema do

caixeiro viajante. In: SIMPÓSIO BRASILEIRO DE PESQUISA OPERACIONAL, 33., 2000,

Campos do Jordão. Anais... Rio de Janeiro: SOBRAPO, 2001. 1CD.

58

REBELLO, Fabrício Rocha; HAMACHER, Silvio. Uma proposta de algoritmo genético de

duas fases para roteamento de veículo. In: SIMPÓSIO BRASILEIRO DE PESQUISA

OPERACIONAL, 32., 2000, Viçosa. Anais... Rio de Janeiro: SOBRAPO, 2000. 1CD.

SLACK, Nigel; CHAMBERS, Stuart, JOHNSTON, Robert. Administração da Produção. 2.

ed. Tradução: Maria Teresa Corrêa de Oliveira; Fábio Alher. São Paulo: Atlas, 2002.

SAMED, Márcia Marcondes Altimari. Um Algoritmo Genético Híbrido Co-Evolutivo para

Resolver Problemas de Despacho. 2004. Tese (Doutorado em Engenharia Química) –

Programa de Pós-Graduação em Engenharia Química, UEM, Maringá.

SCHÜTZ, G; PIRES, F. M. Uma abordagem para o problema da optimização de rotas de

veículos baseada em operadores genéticos. Investigação Operacional, Lisboa, v. 23, n. 2,

dez. 1998.

SIMAS, Etiene P. L. Uma solução para o problema de roteamento de veículos através da

pesquisa tabu. São Leopoldo: UVRS, 2004.

SOUSA, Marcone J. Freitas; CARDOSO, Leonardo X. Teixeira; SILVA, Gustavo Peixoto.

Programação de tripulações de ônibus urbano: uma abordagem heurística. In: SIMPÓSIO

BRASILEIRO DE PESQUISA OPERACIONAL, 35., 2003, Natal. Anais... Rio de Janeiro:

SOBRAPO, 2003. 1CD.

SOUSA, Marcone J. Freitas; MARTINS, Alexandre Xavier; ARAÚJO, Cássio Roberto.

Experiências com Simulated Annealing e Busca Tabu na resolução do problema de alocação

de salas. In: SIMPÓSIO BRASILEIRO DE PESQUISA OPERACIONAL, 34., 2002, Rio de

Janeiro. Anais... Rio de Janeiro: SOBRAPO, 2002. 1CD.

WERKEMA, Maria Cristina Catarino. Ferramentas estatísticas básicas para o

gerenciamento de processos. Belo Horizonte: Werkema, 1995.

59

APÊNDICE A

(Cidades envolvidas e matriz dos custos do problema da empresa)

60

C1 Alto Paraná

C2 Altônia

C3 Araruna

C4 Campo Mourão

C5 Cianorte

C6 Cidade Gaúcha

C7 Cruzeiro do Oeste

C8 Cruzeiro do Sul

C9 Doutor Camargo

C10 Engenheiro Beltrão

C11 Floraí

C12 Floresta

C13 Goioerê

C14 Icaraíma

C15 Iporã

C16 Iretama

C17 Ivaté

C18 Ivatuba

C19 Japurá

C20 Loanda

C21 Luiziana

C22 Mandaguaçu

C23 Mandaguari

C24 Marialva

C25 Maringá

C26 Moreira Sales

C27 Nova Esperança

C28 Paiçandu

C29 Paranacity

C30 Paranavaí

C31 Peabiru

C32 Pérola

C33 Querência do Norte

C34 Rondon

C35 São João do Ivaí

C36 São Jorge do Ivaí

C37 Sarandi

C38 Tapejara

C39 Terra Boa

C40 Terra Rica

C41 Tuneiras do Oeste

C42 Umuarama

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24 C25 C26 C27 C28 C29 C30 C31 C32 C33 C34 C35 C36 C37 C38 C39 C40 C41

C42

C1 0

C2 220 0

C3 109 169 0

C4 110 183 21 0

C5 80 158 38 58 0

C6 89 129 94 104 58 0

C7 120 110 79 97 64 56 0

C8 30 248 123 133 110 107 147 0

C9 58 216 62 68 53 99 106 79 0

C10 89 196 35 36 48 105 106 101 33 0

C11 25 213 85 97 61 85 108 51 34 64 0

C12 70 232 70 71 70 107 121 85 19 36 47 0

C13 153 111 78 87 89 107 53 180 123 102 136 134 0

C14 159 74 149 167 125 88 88 182 169 168 158 186 118 0

C15 197 31 145 159 138 118 88 235 186 174 187 211 93 81 0

C16 157 237 83 62 109 161 139 176 105 86 135 109 114 230 198 0

C17 130 93 122 141 106 56 63 155 139 140 128 156 102 32 90 194 0

C18 66 214 55 60 51 101 104 87 8 24 41 19 118 169 184 107 140 0

C19 55 169 61 79 26 53 80 85 46 57 39 65 103 128 152 126 108 48 0

C20 101 146 143 162 109 66 104 117 134 148 111 150 152 89 146 229 71 138 106 0

C21 139 211 55 35 93 135 113 160 97 65 116 94 100 193 175 29 168 88 103 193 0

C22 41 237 94 100 79 102 129 52 32 64 28 33 150 182 219 129 153 40 63 135 115 0

C23 102 284 109 104 113 154 171 101 72 86 89 55 180 246 263 117 215 73 106 191 115 62 0

C24 84 270 100 108 110 139 158 85 57 75 71 41 170 230 250 119 190 59 101 175 112 44 18 0

C25 64 254 100 101 93 121 143 68 41 66 50 30 159 211 234 122 172 45 81 156 111 23 39 21 0

C26 139 110 70 82 75 90 38 167 112 104 123 124 16 108 92 117 99 108 99 138 101 139 172 161 149 0

C27 17 231 106 106 83 101 127 30 49 82 22 57 156 171 215 149 142 58 60 116 133 26 85 68 47 143 0

C28 56 239 86 89 78 108 129 67 26 54 38 19 146 188 220 116 159 31 67 146 103 16 51 34 15 136 42 0

C29 34 251 127 137 103 109 151 4 83 105 55 89 184 184 238 179 157 91 89 118 163 56 103 87 71 170 34 71 0

C30 21 197 103 117 80 75 112 43 72 99 39 86 149 143 186 168 116 79 54 91 147 61 111 104 84 135 37 75 46 0

C31 104 187 20 18 48 106 98 116 50 18 79 54 97 165 164 74 137 42 65 152 50 82 101 92 84 90 98 72 120 102 0

C32 183 30 143 159 131 102 81 219 178 170 176 194 100 55 26 214 67 177 141 124 179 198 256 242 225 96 192 211 222 171 161 0

C33 140 107 156 175 126 81 107 160 162 169 144 179 143 45 113 242 46 165 121 51 215 170 236 219 190 131 154 178 161 122 169 99 0

C34 69 148 77 98 39 25 64 99 74 83 62 93 108 102 134 145 80 76 29 81 120 88 132 117 109 92 79 94 103 59 86 120 105 0

C35 119 263 90 75 102 153 152 120 77 64 109 61 147 238 238 70 198 72 107 213 73 91 60 65 75 143 106 75 132 134 70 236 238 132 0

C36 40 210 71 82 51 86 103 65 19 84 15 36 126 159 183 121 129 26 35 118 102 28 84 67 47 114 35 32 69 53 64 173 149 62 96 0

C37 72 261 104 104 101 129 150 74 48 70 59 34 165 219 241 121 179 51 90 164 112 32 30 12 9 155 56 23 77 92 88 233 198 107 71 55 0

C38 108 125 56 77 37 48 27 126 90 80 93 106 63 108 105 124 78 87 55 102 108 104 146 133 118 47 104 104 130 103 74 107 107 45 130 86 125 0

C39 86 175 23 38 25 84 83 103 41 23 62 53 65 147 154 97 119 35 42 131 72 72 106 94 81 84 83 66 107 92 23 149 149 63 87 49 87 57 0

C40 68 219 147 163 114 99 140 69 112 137 90 125 184 145 213 225 123 119 101 74 194 109 152 136 118 169 83 113 68 52 148 183 113 95 180 105 125 127 129 0

C41 111 123 51 69 45 65 28 139 96 81 105 101 46 105 101 114 89 93 68 118 96 113 150 138 125 31 115 111 143 108 71 107 119 63 128 96 131 18 59 143 0

C42 143 78 101 118 96 72 33 170 135 127 134 151 68 62 15 166 48 134 109 104 141 156 210 187 171 57 152 158 173 133 119 48 93 88 183 130 178 60 106 153 61 0

61

APÊNDICE B

(Solução ótima para o problema completo apresentado no software GAMS)

62

c8 Chicago, Ill.

c9 Milwaukee, Wis.

c10 Minneapolis, Minn.

c11 Pierre, S.D.

c12 Bismarck, N.D.

c13 Helena, Mont.

c14 Seattle, Wash.

c15 Portland, Ore.

c16 Boise, Idaho

c17 Salt Lake City, Utah

c18 Carson City, Nevada

c19 Los Angeles, Calif.

c20 Phoenix, Ariz.

c21 Santa Fe, N.M.

c22 Denver, Colo.

c23 Cheyenne, Wyo.

c24 Omaha, Neb.

c25 Des Moines, Iowa

c26 Kansas City, Mo.

c27 Topeka, Kans.

c28 Oklahoma City, Okla.

c29 Dallas, Tex.

c30 Little Rock, Ark.

c31 Memphis, Tenn.

c32 Jackson, Miss.

c33 New Orleans, La.

c34 Birmingham, Ala.

c35 Atlanta, Ga.

c36 Jacksonville, Fla.

c37 Columbia, S.C.

c38 Raleigh, N.C.

c39 Richmond, Va.

c40 Washington, D.C.

c41 Boston, Mass.

c42 Portland, Me.

c1 Manchester, N.H.

c2 Montpelier, Vt.

c3 Detroit, Mich.

c4 Cleveland, Ohio

c5 Charleston, W.Va.

c6 Louisville, Ky.

c7 Indianapolis, Ind.

63

APÊNDICE C

(Solução ótima para o problema de 42 vértices da empresa estudada)

64

C36 São Jorge do Ivaí

C11 Floraí

C27 Nova Esperança

C29 Paranacity

C8 Cruzeiro do Sul

C1 Alto Paraná

C30 Paranavaí

C40 Terra Rica

C20 Loanda

C33 Querência do Norte

C17 Ivaté

C14 Icaraíma

C32 Pérola

C2 Altônia

C15 Iporã

C42 Umuarama

C7 Cruzeiro do Oeste

C26 Moreira Sales

C13 Goioerê

C41 Tuneiras do Oeste

C38 Tapejara

C6 Cidade Gaúcha

C34 Rondon

C19 Japurá

C5 Cianorte

C39 Terra Boa

C10 Engenheiro Beltrão

C31 Peabiru

C3 Araruna

C4 Campo Mourão

C21 Luiziana

C16 Iretama

C35 São João do Ivaí

C23 Mandaguari

C24 Marialva

C37 Sarandi

C25 Maringá

C22 Mandaguaçu

C28 Paiçandu

C12 Floresta

C18 Ivatuba

C9 Doutor Camargo

65

ANEXO A

(Cidades envolvidas e matriz dos custos do modelo do software GAMS)

66

c1 Manchester, N.H.

c2 Montpelier, Vt.

c3 Detroit, Mich.

c4 Cleveland, Ohio

c5 Charleston, W.Va.

c6 Louisville, Ky.

c7 Indianapolis, Ind.

c8 Chicago, Ill.

c9 Milwaukee, Wis.

c10 Minneapolis, Minn.

c11 Pierre, S.D.

c12 Bismarck, N.D.

c13 Helena, Mont.

c14 Seattle, Wash.

c15 Portland, Ore.

c16 Boise, Idaho

c17 Salt Lake City, Utah

c18 Carson City, Nevada

c19 Los Angeles, Calif.

c20 Phoenix, Ariz.

c21 Santa Fe, N.M.

c22 Denver, Colo.

c23 Cheyenne, Wyo.

c24 Omaha, Neb.

c25 Des Moines, Iowa

c26 Kansas City, Mo.

c27 Topeka, Kans.

c28 Oklahoma City, Okla.

c29 Dallas, Tex.

c30 Little Rock, Ark.

c31 Memphis, Tenn.

c32 Jackson, Miss.

c33 New Orleans, La.

c34 Birmingham, Ala.

c35 Atlanta, Ga.

c36 Jacksonville, Fla.

c37 Columbia, S.C.

c38 Raleigh, N.C.

c39 Richmond, Va.

c40 Washington, D.C.

c41 Boston, Mass.

c42 Portland, Me.

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41

C2 8

C3 39 45

C4 37 47 9

C5 50 49 21 15

C6 61 62 21 20 17

C7 58 60 16 17 18 6

C8 59 60 15 20 26 17 10

C9 62 66 20 25 31 22 15 5

C10 81 81 40 44 50 41 35 24 20

C11 103 107 62 67 72 63 57 46 41 23

C12 108 117 66 71 77 68 61 51 46 26 11

C13 145 149 104 108 114 106 99 88 84 63 49 40

C14 181 185 140 144 150 142 135 124 120 99 85 76 35

C15 187 191 146 150 156 142 137 130 125 105 90 81 41 10

C16 161 170 120 124 130 115 110 104 105 90 72 62 34 31 27

C17 142 146 101 104 111 97 91 85 86 75 51 59 29 53 48 21

C18 174 178 133 138 143 129 123 117 118 107 83 84 54 46 35 26 31

C19 185 186 142 143 140 130 126 124 128 118 93 101 72 69 58 58 43 26

C20 164 165 120 123 124 106 106 105 110 104 86 97 71 93 82 62 42 45 22

C21 137 139 94 96 94 80 78 77 84 77 56 64 65 90 87 58 36 68 50 30

C22 117 122 77 80 83 68 62 60 61 50 34 42 49 82 77 60 30 62 70 49 21

C23 114 118 73 78 84 69 63 57 59 48 28 36 43 77 72 45 27 59 69 55 27 5

C24 85 89 44 48 53 41 34 28 29 22 23 35 69 105 102 74 56 88 99 81 54 32 29

C25 77 80 36 40 46 34 27 19 21 14 29 40 77 114 111 84 64 96 107 87 60 40 37 8

C26 87 89 44 46 46 30 28 29 32 27 36 47 78 116 112 84 66 98 95 75 47 36 39 12 11

C27 91 93 48 50 48 34 32 33 36 30 34 45 77 115 110 83 63 97 91 72 44 32 36 9 15 3

C28 105 106 62 63 64 47 46 49 54 48 46 59 85 119 115 88 66 98 79 59 31 36 42 28 33 21 20

C29 111 113 69 71 66 51 53 56 61 57 59 71 96 130 126 98 75 98 85 62 38 47 53 39 42 29 30 12

C30 91 92 50 51 46 30 34 38 43 49 60 71 103 141 136 109 90 115 99 81 53 61 62 36 34 24 28 20 20

C31 83 85 42 43 38 22 26 32 36 51 63 75 106 142 140 112 93 126 108 88 60 64 66 39 36 27 31 28 28 8

C32 89 91 55 55 50 34 39 44 49 63 76 87 120 155 150 123 100 123 109 86 62 71 78 52 49 39 44 35 24 15 12

C33 95 97 64 63 56 42 49 56 60 75 86 97 126 160 155 128 104 128 113 90 67 76 82 62 59 49 53 40 29 25 23 11

C34 74 81 44 43 35 23 30 39 44 62 78 89 121 159 155 127 108 136 124 101 75 79 81 54 50 42 46 43 39 23 14 14 21

C35 67 69 42 41 31 25 32 41 46 64 83 90 130 164 160 133 114 146 134 111 85 84 86 59 52 47 51 53 49 32 24 24 30 9

C36 74 76 61 60 42 44 51 60 66 83 102 110 147 185 179 155 133 159 146 122 98 105 107 79 71 66 70 70 60 48 40 36 33 25 18

C37 57 59 46 41 25 30 36 47 52 71 93 98 136 172 172 148 126 158 147 124 121 97 99 71 65 59 63 67 62 46 38 37 43 23 13 17

C38 45 46 41 34 20 34 38 48 53 73 96 99 137 176 178 151 131 163 159 135 108 102 103 73 67 64 69 75 72 54 46 49 54 34 24 29 12

C39 35 37 35 26 18 34 36 46 51 70 93 97 134 171 176 151 129 161 163 139 118 102 101 71 65 65 70 84 78 58 50 56 62 41 32 38 21 9

C40 29 33 30 21 18 35 33 40 45 65 87 91 117 166 171 144 125 157 156 139 113 95 97 67 60 62 67 79 82 62 53 59 66 45 38 45 27 15 6

C41 3 11 41 37 47 57 55 58 63 83 105 109 147 186 188 164 144 176 182 161 134 119 116 86 78 84 88 101 108 88 80 86 92 71 64 71 54 41 32 25

C42 5 12 55 41 53 64 61 61 66 84 111 113 150 186 192 166 147 180 188 167 140 124 119 90 87 90 94 107 114 77 86 92 98 80 74 77 60 48 38 32 6

Universidade Estadual de Maringá Departamento de Informática

Curso de Engenharia de Produção Av. Colombo 5790, Maringá-PR

CEP 87020-900 Tel: (044) 3261-4324 / 4219 Fax: (044) 3261-5874