roteiriz pizza

Upload: haduarte

Post on 08-Jul-2015

1.193 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CINCIAS EXATAS E NATURAIS CURSO DE CINCIA DA COMPUTAO BACHARELADO

SISTEMA DE PEDIDOS DE PIZZA PARA OTIMIZAO DE ROTAS NO GOOGLE MAPS

THOMAS ALEXANDRE SENS

BLUMENAU 2009 2009/2-25

THOMAS ALEXANDRE SENS

SISTEMA DE PEDIDOS DE PIZZA PARA OTIMIZAO DE ROTAS NO GOOGLE MAPS

Trabalho de Concluso de Curso submetido Universidade Regional de Blumenau para a obteno dos crditos na disciplina Trabalho de Concluso de Curso II do curso de Cincia da Computao Bacharelado. Prof. Francisco Adell Pricas, Mestre - Orientador

BLUMENAU 2009 2009/2-25

SISTEMA DE OTIMIZAO GEOGRFICA PARA UMA REDE DE DISTRIBUIDORAS

Por

THOMAS ALEXANDRE SENS

Trabalho aprovado para obteno dos crditos na disciplina de Trabalho de Concluso de Curso II, pela banca examinadora formada por:

Presidente:

______________________________________________________ Prof. Francisco Adell Pricas, Mestre Orientador, FURB ______________________________________________________ Paulo Csar Rodacki Gomes, Doutor FURB ______________________________________________________ Adilson Vahldick, Mestre FURB

Membro:

Membro:

Blumenau, 10 de dezembro de 2009

Dedico este trabalho aos meus pais, que sempre me apoiaram nos estudos, a minha namorada, que me apoiou, compreendeu e abdicou minha presena em alguns finais de semana.

AGRADECIMENTOS

minha famlia, que sempre me apoiou. Aos meus amigos e namorada, pelos empurres e cobranas. Ao meu orientador, Francisco Adell Pricas, por ter acreditado na concluso deste trabalho.

RESUMO

Este trabalho apresenta o desenvolvimento de um sistema web de logstica de entrega para uma rede de distribuidoras, que tem por objetivo encontrar o melhor caminho para cada entregador e passar por diversos pontos de entrega, e represent-los graficamente em um mapa. A rota obtida atravs da resoluo de Problemas de Roteamento de Veculos (PRV), onde so explanadas diversas tcnicas para a resoluo do problema de custos de rota. Foram utilizadas as tcnicas de Model View Controller (MVC) na linguagem Hypertext Preprocessor (PHP), sendo usado o Zend Framework e Google Maps API como biblioteca e o MySql como base de dados. Palavras-chave: Logstica de entrega. Problemas de roteamento de veculos.

ABSTRACT

This paper presents the development of a web delivery logistics to a network of distributors, which aims to find the best way for each delivery and through several points of delivery, and represent them graphically on a map. The route is obtained by solving Vehicle Routing Problems (PRV), which are explained various techniques to solve the problem of route cost. Have used the Model View Controller (MVC) in the Hypertext Preprocessor (PHP) language, and used the Zend Framework and Google Maps API as a library and MySql as database. Keywords: Delivery logistics. Vehicle routing problem.

LISTA DE ILUSTRAES

Quadro 1 Algoritmo do carteiro chins .............................................................................. 17 Quadro 2 Problema do caixeiro viajante - mtodo algbrico .............................................. 17 Quadro 3 Probabilidades de rotas ...................................................................................... 18 Quadro 4 Requisitos no funcionais .................................................................................. 23 Quadro 5 Requisitos funcionais ......................................................................................... 23 Figura 1 Diagrama de casos de uso do administrador ........................................................ 24 Quadro 6 Detalhamento do caso de uso UC01.01 Efetua login .............................. 24 Figura 2 Diagrama de casos de uso do operador ................................................................ 25 Quadro 7 Detalhamento do caso de uso UC02.09 Cadastrar restaurante ......... 26 Quadro 8 Detalhamento do caso de uso UC02.01 Visualiza rota dos pedidos .......................................................................................................................... 26 Quadro 9 Detalhamento da manuteno de dados no sistema restrito ................................. 27 Figura 3 Diagrama de casos de uso do consumidor............................................................ 28 Quadro 10 Detalhamento do caso de uso UC03.02 Cadastrar dados pessoais 28 Quadro 11 Detalhamento do caso de uso UC03.03 Avaliar pedido ....................... 29 Quadro 12 Detalhamento do caso de uso UC03.04 Cadastra endereos para entrega .......................................................................................................... 29 Quadro 13 Detalhamento do caso de uso UC03.05 Efetuar pedido de entrega .......................................................................................................................... 30 Quadro 14 Detalhamento do caso de uso UC03.06 Consultar situao do pedido ............................................................................................................ 30 Figura 4 Diagrama de atividades do processo de pedido .................................................... 32 Figura 5 Diagrama de atividades do clculo de rotas ......................................................... 33 Figura 6 Diagrama de classes ............................................................................................ 34 Quadro 15 Cdigo fonte do mtodo initialize() ...................................................... 35 Quadro 16 Cdigo fonte do mtodo calculaRota(int,int).................................... 35 Quadro 17 Cdigo fonte do mtodo calcular()........................................................... 36 Quadro 18 Cdigo fonte do mtodo imprimirMatrizDeRotas(array,array) ... 36 Quadro 19 Cdigo fonte do mtodo buscaProximaDistancia()............................. 37

Quadro 20 Cdigo fonte do mtodo calculaMelhorRota(array,boolean,array) .................................. 38 Figura 7 Debug da funo calculaMelhorRota(array,boolean,array)......... 39 Quadro 21 Cdigo fonte do mtodo buscaRotaMaisCurta(debug) ........................ 39 Figura 8 Diagrama de sequncia do processo de pedido .................................................... 40 Figura 9 Diagrama de sequncia do clculo de rotas .......................................................... 41 Figura 10 Diagrama de estados.......................................................................................... 42 Figura 11 Pgina inicial do aplicativo ................................................................................ 43 Figura 12 Escolha do restaurante ....................................................................................... 44 Figura 13 Escolha do tamanho de pizza ............................................................................. 44 Figura 14 Seleo de sabores para a pizza ......................................................................... 45 Figura 15 Seleo de adicionais......................................................................................... 45 Figura 16 Informaes para entrega................................................................................... 46 Figura 17 Informaes adicionais ...................................................................................... 46 Figura 18 Detalhes do pedido ............................................................................................ 47 Figura 19 Acesso a rea restrita ......................................................................................... 48 Figura 20 Tabela de registros da rea restrita ..................................................................... 48 Figura 21 Alterao de situao do pedido ........................................................................ 49 Figura 22 Representao visual da rota.............................................................................. 50 Figura 23 Resultado do clculo de rotas ............................................................................ 50 Quadro 22 Comparao entre trabalhos ............................................................................. 51

LISTA DE SIGLAS

API Application Programming Interface CEP Cdigo de Endereamento Postal HTML HiperText Markup Language IBGE Instituto Brasileiro de Geografia e Estatstica IP Internet Protocol MVC Model View Control ODBC Open Database Connectivity PHP Hypertext Preprocessor PRV Problemas de Roteamento de Veculos UML Unified Modeling Language URL Universal Resource Locator XML eXtensible Markup Language

SUMRIO

1 INTRODUO ............................................................................................................. 12 1.1 OBJETIVOS DO TRABALHO..................................................................................... 13 1.2 ESTRUTURA DO TRABALHO .................................................................................. 14 2 FUNDAMENTAO TERICA................................................................................. 15 2.1 PROBLEMTICA DO CLCULO DE CUSTOS DE ROTA....................................... 15 2.1.1 Estratgias para resoluo do problema de custos de rota ............................................ 16 2.1.1.1 Algoritmos genticos ................................................................................................ 16 2.1.1.2 Problema do Carteiro Chins .................................................................................... 16 2.1.1.3 Problema do Caixeiro Viajante. ................................................................................ 17 2.2 GOOGLE MAPS .......................................................................................................... 18 2.3 FRAMEWORK ZEND ................................................................................................... 19 2.4 WEB SERVICES .......................................................................................................... 19 2.5 TRABALHOS CORRELATOS .................................................................................... 20 2.5.1 Projeto do SIG Geo-Rota ............................................................................................ 20 2.5.2 Dissertao de mestrado de Formigoni (2005) ............................................................. 21 3 DESENVOLVIMENTO ................................................................................................ 23 3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO ..................... 23 3.2 ESPECIFICAO ........................................................................................................ 23 3.2.1 Diagrama de casos de uso ........................................................................................... 24 3.2.2 Diagrama de atividades ............................................................................................... 31 3.2.3 Diagrama de classes .................................................................................................... 33 3.2.3.1 Classe Rota ............................................................................................................. 34 3.2.4 Diagrama de seqncia ............................................................................................... 40 3.2.5 Diagrama de estados ................................................................................................... 41 3.3 IMPLEMENTAO .................................................................................................... 42 3.3.1 Tcnicas e ferramentas utilizadas ................................................................................ 42 3.3.2 Operacionalidade da implementao ........................................................................... 43 3.3.3 ValePizza.com ............................................................................................................ 43 3.3.4 Mdulo de pedido ....................................................................................................... 44 3.3.5 Mdulo de administrao ............................................................................................ 47 3.3.6 Clculo de rotas .......................................................................................................... 49

3.4 RESULTADOS E DISCUSSO ................................................................................... 50 4 CONCLUSES ............................................................................................................. 52 4.1 EXTENSES ............................................................................................................... 52 REFERNCIAS BIBLIOGRFICAS .............................................................................. 54

12 1 INTRODUO

Este trabalho teve origem em funo da carncia de servios de logstica de entrega pela internet para pequenas empresas, e foi impulsionado pela grande demanda destes servios, pouco explorados at hoje. A motivao para o desenvolvimento deste trabalho ocorreu devido falta de informaes na internet sobre restaurantes na regio do Vale do Itaja. Foi ento pensado na possibilidade de ter uma ferramenta para dispor estas informaes, e ao mesmo tempo, poder efetuar um pedido diretamente pela internet. Como atualmente a maioria dos restaurantes no utilizam um sistema de otimizao geogrfico para roteamento de seus veculos de entrega, foi decidido agregar este recurso a ferramenta. Atualmente, empresas de diversos setores disponibilizam seus produtos atravs de entregas em domiclio, tambm conhecida como no ingls delivery. Delivery o servio de entrega de materiais, bens, servios ou produtos a um determinado local, atravs de uma requisio utilizando algum meio de comunicao como telefone ou internet pelo cliente ou consumidor. A entrega ao cliente a transferncia da posse de um bem de uma entidade, o fornecedor, para aquela qual o bem se destina (MILLER et al., 2006). Segundo Kohlrausch (2005 apud SOMENZI, 2005), a confiana na entrega ao cliente do produto, no prazo contratado, o principal ponto a ser considerado na relao cliente - fornecedor. Este assunto merece ser abordado, pois faz parte do dia-a-dia de milhares de empresas que tem por objetivo a entrega de seus produtos de forma rpida e prtica. A verificao de uma melhor rota para entrega requer um tempo de processamento polinomial em relao ao tamanho da entrada. Tendo a necessidade da elaborao de um algoritmo que chegue ao resultado em um curto espao de tempo, sem demandar muito processamento, j que o aplicativo estar sendo executado em um servidor por diversos distribuidores concorrentemente. Neste trabalho feito um estudo de heursticas para descobrir qual a que melhor se encaixa neste tipo de aplicao. Por fim, esta logstica de entrega disponibiliza aos fornecedores uma forma econmica e rpida de entregar seus materiais, bens, servios ou produtos para seus clientes ou consumidores. Para atender as necessidades do fornecedor, com o intuito de diminuir o prazo de entrega agilizando o processo e tornando a empresa mais competitiva no mercado, tem-se a

13 necessidade da utilizao de um sistema de logstica de entrega. Diante desta necessidade, foi desenvolvido um sistema de logstica de entrega que detalha as melhores rotas de um ponto a outro da entrega, tendo em vista que um nico entregador pode ter mais de uma rota por viagem. Sendo necessrio encontrar um caminho que passe em cada um dos pontos de entrega e que tenha um custo menor, onde o custo do caminho a soma dos custos das rotas percorridas. As origens e os destinos so obtidos atravs de Cdigo de Endereamento Postal (CEP), que so convertidos em unidades de latitude e longitude, para serem representados atravs de mapas, obtidos de um servio gratuito da Google, chamado Google Maps. Este servio oferece uma poderosa tecnologia de mapas incluindo informaes sobre percursos entre rotas. Parte desta representao desenvolvida utilizando uma Application Programming Interface (API) de desenvolvimento web criada pela Google, que utiliza como linguagem padro o Java Script.

1.1

OBJETIVOS DO TRABALHO

O objetivo deste trabalho foi o desenvolvimento de um sistema de entrega com otimizao geogrfica para uma rede de distribuidoras. Os objetivos especficos do trabalho so: a) desenvolver um aplicativo de interao entre os consumidores e fornecedores escrito em PHP; b) calcular a melhor origem (entre vrias de uma distribuidora) que mais se aproxima dos destinos; c) calcular a melhor rota para entrega, partindo de uma origem para um ou mais destinos; d) visualizar as rotas de entrega atravs de mapas.

14 1.2 ESTRUTURA DO TRABALHO

O trabalho est dividido em quatro captulos. O segundo captulo contempla a fundamentao terica, onde so apresentados conceitos e caractersticas sobre o problema do clculo de custos de rotas, assim como alguns mtodos de resoluo. So abordados tambm assuntos referentes a tecnologia empregada no desenvolvimento do trabalho, como Google Maps, Framework Zend, Web Services e os trabalhos correlatos. No captulo 3 so descritos os requisitos, a especificao dos scripts, a anlise da entrada, a especificao e a implementao da ferramenta, bem como a funcionalidade da mesma. Por fim, so apresentados os resultados obtidos. No ltimo captulo so apresentadas a concluso e sugestes para trabalhos futuros.

15 2 FUNDAMENTAO TERICA

No presente captulo so detalhados algoritmos e estratgias para a resoluo do problema de custos de rota, bem como as formas de representar as rotas a serem traadas no mapa atravs do Google Maps API. abordado tambm a vantagem do uso de framework para aplicaes desenvolvidas em PHP, e sobre a utilizao de Web Services para a funcionalidade de custos de rotas. Por fim, so descritas ferramentas existentes no mercado com funes similares as da ferramenta proposta.

2.1

PROBLEMTICA DO CLCULO DE CUSTOS DE ROTA

O roteamento de veculos um problema presente na maioria das empresas de transporte, logstica e distribuio. Seu objetivo determinar, dentre todas as possveis rotas alternativas, qual a que representa o menor custo, ou seja, qual a soluo tima (GOLDBARG; LUNA, 2000, p. 35). A resoluo para descobrir qual a melhor rota parece ser simples, bastando calcular o custo de todas as possveis combinaes e selecionar a que apresentar o menor custo. Para um pequeno conjunto de locais a serem visitados, isso perfeitamente vivel, mas medida que vo sendo adicionados novos locais, a soluo vai se tornando cada vez mais complexa do ponto de vista computacional, pois o nmero de combinaes possveis torna-se muito grande, fazendo com que o clculo possa demorar at vrios dias dependendo do nmero de locais a serem visitados. Tendo em vista o problema de complexidade computacional, os Problemas de Roteamento de Veculos (PRV), assim como a maioria dos problemas combinatrios, so classificados como sendo NP-Completos (CORMEN et al., 2002), ou seja, a complexidade de tempo no polinomial. At o momento, no foi possvel encontrar nenhuma soluo de tempo polinomial para problemas da classe NP-Completo, assim sendo, atualmente no existe nenhuma soluo exata para o problema de roteamento de veculos em tempo polinomial.

16 2.1.1 Estratgias para resoluo do problema de custos de rota

A seguir so mencionadas algumas estratgias para resoluo do problema de custos de rotas.

2.1.1.1

Algoritmos genticos

Segundo Arajo (2008, p. 21), os algoritmos genticos so os que melhor se enquadraram nos problemas de roteirizao clssicos como o do caixeiro-viajante e o de roteirizao de veculos. Os algoritmos genticos so uma famlia de modelos computacionais inspirados na evoluo, que incorporam uma soluo potencial para um problema especfico numa estrutura semelhante a de um cromossomo. Uma das vantagens de um algoritmo gentico a simplificao que eles permitem na formulao e soluo de problemas de otimizao. Conforme Herrera, Lozano e Verdegay (1998), existem trs tipos de representaes possveis para os cromossomos: binria, inteira ou real. De acordo com a classe de problema que se deseja resolver pode-se usar qualquer um dos trs tipos. A funo objetivo de um problema de otimizao construda a partir dos parmetros envolvidos no problema. Ela fornece uma medida da proximidade da soluo em relao a um conjunto de parmetros. Os parmetros podem ser conflitantes, ou seja, quando um aumenta o outro diminui. O objetivo encontrar o ponto timo. Os algoritmos genticos so apropriados para problemas complexos de otimizao, que envolvem muitas variveis e um espao de solues de dimenso elevada, abrangendo um grande nmero de aplicaes.

2.1.1.2

Problema do Carteiro Chins

Segundo Rabuske (1993, p. 42), um grafo euleriano, um grafo onde possvel achar um caminho fechado, passando em cada aresta uma nica vez. Caso o grafo for euleriano, ento o menor caminho pode ser encontrado atravs do algoritmo de Fleury (RABUSKE, 1993, p. 50). Como o desenvolvimento deste trabalho no tem restries quanto ao nmero de

17 passagens pelos caminhos, ento algumas arestas podero se repetir, sendo sugerido o algoritmo do Carteiro Chines, apresentado por Christofides, descrido no Quadro 1, o qual determina o menor caminho entre dois vrtices num grafo no euleriano.P1 P2 P3 P4 P5 P6 P7 P8 ALGORITMO: CARTEIRO CHINES Determine os vrtices de grau mpar; Construa a matriz de distncia D, com apenas os vrtices de grau mpar; Determine atravs da matriz D o par de vrtices e que contm o menor caminho; Construa um caminho artificial de para com o custo encontrado em P3; [Este caminho representa as arestas de menor custo que sero repetidas entre e ]. Elimine da matriz D as linhas e colunas correspondente a e . Se ainda houver linha e coluna, ento volte para P3 Oriente o grafo; O custo ser igual a soma dos custos de todas as arestas acrescida dos custos das arestas encontradas em P3. Quadro 1 Algoritmo do carteiro chins

2.1.1.3

Problema do Caixeiro Viajante.

De acordo com Rabuske (1993, p. 54), o problema do caixeiro viajante tambm consiste em determinar o menor caminho, passando por todos os vrtices, e retornando ao vrtice de origem. Uma das formas de se resolver este problema atravs do mtodo algbrico, tambm apresentado por Christofides, representado no Quadro 2, que envolve a gerao de todos os caminhos simples por multiplicao sucessiva de matriz.P1 P2 MTODO ALGBRICO Construa inicialmente a matriz de adjacncia A do grafo; Construa a matriz B(nxn) da seguinte forma

P3 P4

Faa Faa

; onde para todo

Quadro 2 Problema do caixeiro viajante - mtodo algbrico

Segundo UFRGS (2000), havendo quatro vrtices distintos A, B, C e D, uma rota que o caixeiro pode considerar seria a sada de A para B, dessa para C, e da para D e ento voltando a A. Sendo assim existem seis possibilidades de caminhos diferentes, representados no Quadro 3.

18PROBABILIDADES DE ROTAS ABCDA ABDCA ACBDA ACDBA ADBCA ADCBA Quadro 3 Probabilidades de rotas

Para se achar o nmero R(n) de rotas para o caso de n vrtices, necessrio fazer um raciocnio combinatrio. No caso de n=4 vrtices, a primeira e ltima posio so fixas, de modo que elas no afetam o clculo, j na segunda posio podemos colocar qualquer um dos trs vrtices restantes B, C e D, e uma vez escolhida uma delas, pode-se colocar qualquer uma das duas restantes na terceira posio, de tal forma que na quarta posio no haver necessidade de nenhuma escolha, pois sobrou apenas um vrtice. Consequentemente, o nmero de rotas 3 x 2 x 1 = 6, resultado obtido no Quadro 3 contando diretamente a lista de rotas (UFRGS, 2000).

2.2

GOOGLE MAPS

Segundo Google (2008), Google Maps um servio de pesquisa e visualizao de mapas e imagens de satlite da Terra gratuito na web fornecido pela empresa Google. Atualmente, o servio disponibiliza mapas e rotas para diversas localizaes do globo, com possibilidade de aproximao das imagens em grandes cidades. Ele disponibiliza tambm uma API (Application Programing Interface um conjunto de rotinas e padres estabelecidos por um software para utilizao de suas funcionalidades por programas aplicativos) (WIKIPEDIA, 2008) chamada Google Maps API. Desta forma os programadores no se atm a detalhes de suas implementaes, sendo utilizadas apenas suas funes, compartilhando seu geo-processamento. A API do Google Maps permite criar aplicaes inovadoras de mapeamento online e ajuda a integrar mapas e geo-codificaes em seus sites. Com ele, pode-se facilmente apresentar o contedo geo-referenciado em qualquer navegador. Combinando as diversas funcionalidades disponibilizadas pela API, pode-se construir um mapa com informaes selecionadas e funes escolhidas para melhor navegao, oferecendo inmeras possibilidades de unio de recursos para o desenvolvimento do mapa,

19 assim como o trajeto das rotas a serem seguidas e seus pontos de entrega. Para poder ter acesso a estes recursos, necessrio obter uma chave de validao da Google, que estar amarrada a Universal Resource Locator (URL), definida na solicitao de uso do servio. Google Maps API torna possvel a utilizao de ferramentas simples e eficientes, que disponibilizam acesso a contedo prtico e dinmico, que so retornados em arquivos HyperText Markup Language (HTML). Existem, contudo, algumas restries de uso, definidas pelo Google Maps, impedindo que se criem aplicaes que excedam o grau de tecnologia existente nos aplicativos Google Maps, de tal forma que os processamentos de imagens que utilizam os recursos destas APIs estaro limitados por esta tecnologia.

2.3

FRAMEWORK ZEND

Frameworks so projetados com a inteno de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando as exigncias do software do que com detalhes de baixo nvel do sistema. (WIKIPEDIA, 2008). Johnson (1992) define um framework como sendo um projeto reutilizvel de um programa, ou parte de um programa, expresso como um conjunto de classes. O Zend Framework um framework de desenvolvimento de aplicaes web em PHP 5 que utiliza o padro MVC, que separa a parte lgica da apresentao (ZEND TECNOLOGIES, 2008). Uma de suas importantes caractersticas a reutilizao de cdigo, ou seja, o desenvolvedor utiliza no s o seu prprio cdigo, mas tambm aproveita os cdigos j escritos da ferramenta.

2.4

WEB SERVICES

Um Web Service um sistema de software. Identificado atravs de uma URI, na qual interfaces pblicas e contratos so definidos e descritos em Extensible Markup Language

20 (XML). Estas definies podem ser descobertas por outros sistemas de software. Estes sistemas podem ento interagir com o Web Service em uma maneira prescrita pela sua definio, usando mensagens baseadas em XML e transportadas por protocolos da Internet (W3C, 2002). Entre as principais vantagens do uso de Web Services, podem ser citadas: a) interface abstrata: os Web Services fornecem uma interface abstrata para acesso aos mtodos disponibilizados, ocultando detalhes de implementao do usurio do servio; b) semntica acompanha dados: ao invs de trafegarem somente os dados, a comunicao entre o servidor e o cliente carrega consigo metadados; c) portabilidade: por se tratar de um padro aberto, baseado em XML, garante-se a portabilidade das mensagens mesmo sob diferentes plataformas de operao; d) segurana: opcionalmente, as informaes trafegadas podem ser criptografadas; e) utilizao de recursos: os Web Services so sistemas no invasivos, pois no consomem recursos de comunicao enquanto em estado de espera.

2.5

TRABALHOS CORRELATOS

A seguir so abordados dois trabalhos correlatos, que tem por objetivo melhorar os servios de distribuio ao consumidor.

2.5.1

Projeto do SIG Geo-Rota

O projeto do SIG Geo-Rota foi iniciado em meados de 1999, motivado pela elaborao de um sistema computacional capaz de resolver problemas logsticos de distribuio em pequenas e mdias empresas (PVOA, 2000, p. 43), devido ao alto custo de aquisio de dados geogrficos. A verso inicial do sistema manipulava de forma simples os dados necessrios para a correta utilizao dos algoritmos de otimizao aplicados a problemas logsticos de distribuio fsica de produtos (caminho mais curto, caixeiro viajante e roteamento de veculos). Na verso atual, buscou-se uma modelagem mais detalhada dos dados que fazem parte do sistema.

21 O Geo-Rota na sua verso customizada para problemas de delivery tem as seguintes funes: f) gerenciamento de projetos: responsvel pela abertura, gravao e gerenciamento dos arquivos que compem o mapa, bem como os parmetros de configurao; g) gerenciamento de mapas: responsvel pelo gerenciamento das camadas que compem o mapa utilizado em cada projeto de roteamento. Engloba funes de adicionar e remover camadas, ferramentas de zoom, representao cartogrfica, gerao de toponmia a partir de um atributo no geogrfico, montagem de o regras de endereamento automticas, utilizadas para transformar um endereo (Rua y, n x) em uma par de coordenadas geogrficas GeoCode e ligao com banco de dados externo via Open Database Connectivity (ODBC) chamado de GeoLink; h) gerenciamento de clientes: responsvel pelo gerenciamento das camadas de clientes a serem roteados. Engloba funes de criao de novos arquivos, remoo e insero de novos clientes. Possibilita a insero de duas maneiras distintas, via mapa ou via endereamento GeoCode. Tem uma funo especfica para o cadastro de novas lojas; i) roteamento: resolve o problema do caminho mais curto entre dois clientes e otimiza a escolha da loja mais prxima do cliente; j) anlise de mercado: responsvel pela anlise espacial dos clientes, possibilitando o estabelecimento de logradouros em potencial que no esto sendo atendidos. Permite fazer anlises utilizando os setores censitrios do Instituto Brasileiro de Geografia e Estatstica (IBGE).

2.5.2

Dissertao de mestrado de Formigoni (2005)

A dissertao de mestrado apresentada por Formigoni (2005) aborda como preocupao principal o tratamento de problemas referentes distribuio de produtos no setor avcola, tendo como objetivo verificar a possibilidade de melhoria em servios de distribuio ao consumidor. Seu objetivo estudar a utilizao e o comportamento de alguns mtodos matemticos frente a um determinado problema real. O que se procura obter uma soluo mais apropriada do que aquela utilizada pelas empresas atualmente. Para atingir este objetivo, foram analisadas diversas tcnicas de pesquisa operacional,

22 visando obteno de uma soluo quase tima, atravs de mtodos exatos, heursticos e meta-heursticos. Ele procura atravs da anlise de diversos mtodos construir solues de fcil implementao computacional, utilizando programas prontos para a soluo de mtodos exatos com a criao de uma interface com o usurio e o desenvolvimento de um programa para a resoluo heurstica, viabilizando assim a implantao nas empresas.

23 3 DESENVOLVIMENTO

Nesta seo, sero abordados os requisitos, a especificao e a implementao do sistema de pedidos e seu recurso de otimizao geogrfica.

3.1

REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO

No Quadro 4 e 5 so apresentados, respectivamente, os requisitos no funcionais e funcionais da ferramenta.RNF01 RNF02 RNF03 RNF04 REQUISITOS NO FUNCIONAIS Utilizar Web Services para disponibilizar o servio de rotas Ser implementado utilizando o ambiente Zend Studio com suporte ao Zend Framework O clculo de uma rota de at 6 pontos distintos no poder ultrapassar 5 segundos Utilizar a Google Maps API para o desenvolvimento da interface para visualizao de rotas Quadro 4 Req uisitos no funcionais REQUISITOS FUNCIONAIS Disponibilizar interface para emisso de pedidos para consumidores A emisso de pedidos s poder ser acessada mediante cadastro prvio O pedido s poder ser efetuado se o fornecedor estiver com a situao atendendo na interface de emisso de pedidos O fornecedor muda sua situao para atendendo aps acessar o gerenciamento de pedidos O consumidor poder consultar a situao do pedido Disponibilizar interface para gerenciamento de pedidos para fornecedores O gerenciamento de pedidos dever ser somente acessado pelos fornecedores No gerenciamento de pedidos devero ser mantidos os dados referentes elaborao de pedidos e sua manuteno O gerenciador de pedidos dever informar o fornecedor mediante aviso na tela quando for emitido um novo pedido Calcular a melhor rota entre uma origem e um ou mais pontos de entrega Disponibilizar uma interface para visualizao de rotas para fornecedores Quadro 5 Req uisitos funcionais

RF01 RF02 RF03 RF04 RF05 RF06 RF07 RF08 RF09 RF010 RF011

3.2

ESPECIFICAO

Para a especificao do projeto, foi utilizada a Unified Modeling Language (UML),

24 com auxlio da ferramenta Enterprise Architect, sendo criados os diagramas de casos de uso, atividades, classes, sequncia, posteriormente apresentado o diagrama de estados.

3.2.1

Diagrama de casos de uso

Na Figura 1 so demonstradas as aes realizadas pelo administrador do sistema, que tem a funo de aceitar um restaurante previamente cadastrado, para que este restaurante passe a atender pedidos pelo portal, assim como cadastrar novos operadores para estes restaurantes, que tero a funo de atender os pedidos e cadastrar os dados do restaurante.

Figura 1 Diagrama de casos de uso do administrador

No quadro 6, representado o processo de acesso ao sistema restrito, que corresponde ao caso de uso UC01.01 Efetuar Login.UC01.01 Efetuar login Pr-condies Cenrio principal

Ter conta cadastrada para acesso ao sistema restrito 01) Usurio acessa a rea restrita atravs do endereo: http://www.valepizza.com/adm 02) Sistema apresenta pgina com usurio e senha. 03) Usurio preenche os dados e confirma. 04) Sistema valida usurio e senha fornecidos. 05) Sistema registra hora, data e Internet Protocol (IP) que o usurio se conectou ao sistema.Se no passo 04, o usurio ou a senha no puderem ser validados, o sistema apresenta uma mensagem mencionando o erro. Quadro 6 Detalhamento do caso de uso UC01.01 Efetua login

Exceo

A aceitao do restaurante e o cadastro de operadores pelo administrador demonstrada

25 na Figura 1 representada pelo Quadro 6, onde para aceitar um restaurante, o administrador pode editar os dados do restaurante, informando se o restaurante ser aceito ou no. Na figura 2, podem-se observar as aes realizadas pelo operador do restaurante, que tem a funo de informar todos os dados referentes ao restaurante, manter os pedidos e visualizar suas rotas.

Figura 2 Diagrama de casos de uso do operador

O Quadro 7, designado Cadastrar restaurante, o caso que descreve quais so as aes realizadas pelo operador, para cadastrar seu restaurante.

26UC02.09 Cadastrar restaurante Cenrio principal

01) Operador acessa o formulrio de cadastro atravs do endereo http://www.valepizza.com/associe-se 02) Sistema apresenta pgina de cadastro 03) Operador informa dados do restaurante. (nome, endereo, formas de pagamento) 04) O sistema valida os dados, efetua o cadastro e envia um e-mail de aviso para o administrador com o seguinte contedo: "Novo restaurante cadastrado no sistema, favor acessar a administrao e efetuar a aceitao. ".No passo 04, caso ocorra alguma inconsistncia na validao como campo obrigatrio, o sistema apresenta mensagem referente ao problema encontrado. O restaurante deve estar registrado, aguardando aceitao do administrador

Exceo

Ps-condies

Quadro 7 Detalhamento do caso de uso UC02.09 Cadastrar restaurante

O caso de uso UC02.01 Visualiza rota dos pedidos representado atravs do Quadro 8.UC02.01 Visualiza rota dos pedidos Pr-condies

Acessar rea restrita com usurio e senha. Ter no mnimo um pedido em aberto 01) Operador acessa o menu rotas 02) Sistema apresenta pgina com uma matriz de distncias entre os pontos de entrega e restaurante. 02) Operador informa que deseja calcular a melhor rota. 03) O sistema calcula a melhor rota e a mostra visualmente atravs da API Google Maps.Representao da melhor rota atravs de mapa

Cenrio principal

Ps-condies

Quadro 8 Detalhamento do caso de uso UC02.01 Visualiza rota dos pedidos

Os demais casos de uso de cadastros como UC02.02 Cadastrar alimento, UC02.03Cadastrar sabor, UC02.04 Cadastrar ingrediente, UC02.05 Cadastrar tipo de alimento, UC02.06 Cadastrar tamanho do alimento, UC02.07 Cadastrar

complemento e UC02.08 Cadastrar promoes, seguem as mesmas lgicas de cenrio

representadas pelo Quadro 9. Que consistem na edio, insero e excluso de registros.

27Manuteno dos dados no sistema restrito Pr-condies Cenrio principal

Acessar rea restrita com usurio e senha 01) Operador acessa o recurso atravs do menu. 02) Sistema apresenta a listagem dos registros j cadastrados. 03) Operador opta por inserir, editar ou excluir um registro. 04) Sistema retorna mensagem referente ao tomada e retorna ao passo 02.No passo 03, caso o operador opte por inserir: 03.01) Sistema apresenta formulrio. 03.02) Operador preenche os dados e confirma. No passo 03, caso o operador opte por editar: 03.03) Sistema apresenta formulrio com os dados preenchidos 03.04) Operador altera os dados e confirma. No passo 03, caso o operador opte por excluir um registro: 03.05) Sistema remove registro. No passo 03.02 e 03.04, caso ocorra alguma inconsistncia na validao como campo obrigatrio, ou dados informados incorretamente, o sistema apresenta mensagem referente ao problema encontrado.

Fluxo alternativo 01

Fluxo alternativo 02

Fluxo alternativo 03

Exceo 01

Ps-condies 01

No passo 03, caso o operador opte por inserir, dever ser criado um novo registro para este recurso. Ps-condies 02 No passo 03, caso o operador opte por editar, o registro editado, dever ser salvo. Ps-condies 03 No passo 03, caso o operador opte por excluir um registro, o registro deve ser removido do recurso. Quadro 9 Detalhamento da manuteno de dados no sistema restrito

Na Figura 3, ser abordado o diagrama de casos de uso do consumidor, que tem o papel de efetuar pedidos, onde cada pedido ter um endereo com coordenadas de latitude e longitude, que ser utilizado para o clculo de rotas. Estas coordenadas so obtidas atravs do Google Maps API.

28

Figura 3 Diagrama de casos de uso do consumidor

De acordo com o Quadro 10, possvel visualizar o cadastro de dados pessoais representados na figura 3.UC03.02 Cadastrar dados pessoais Cenrio principal

01) O consumidor acessa o formulrio de cadastro atravs do endereo http://www.valepizza.com/cadastre-se 02) Sistema apresenta pgina de cadastro 03) O consumidor informa seus dados pessoais e dados para acesso a sua conta. (nome, data de nascimento, endereo, e-mail e senha) 04) O sistema valida os dados, efetua o cadastro e envia um e-mail de confirmao com os dados do cadastro para o consumidor.No passo 04, caso ocorra alguma inconsistncia na validao como campo obrigatrio, o sistema apresenta mensagem referente ao problema encontrado. O consumidor deve estar registrado

Exceo

Ps-condies

Quadro 10 Detalhamento do caso de uso UC03.02 Cadastrar dados pessoais

No Quadro 11 detalhada a avaliao de um pedido, que para ser feita deve estar com a situao entregue. A avaliao composta por dois campos, um com breve descrio, e outro com uma nota de um a cinco, que posteriormente ser visualizado em rea pblica do portal.

29UC03.03 Avaliar pedido Pr-condies Cenrio principal

Ter efetuado o login e no mnimo um pedido entregue 01) O consumidor acessa menu meus pedidos 02) Sistema apresenta listagem de pedidos efetuados 03) O consumidor informa o comentrio, e uma nota de 1 a 5 04) Sistema registra avaliaoNo passo 02, caso o consumidor no tenha pedidos entregues 02.01) O sistema avisa o consumidor de que no existem pedidos entregues

Exceo

Quadro 11 Detalhamento do caso de uso UC03.03 Avaliar pedido

O caso de uso UC03.04 Cadastrar endereos para entrega representado no Quadro 12, onde um consumidor pode ter diversos endereos para entrega, e escolher um deles antes de iniciar o processo de pedido.UC03.04 Cadastrar endereos para entrega Pr-condies Cenrio principal

Ter efetuado o login 01) O consumidor acessa menu meus endereos 02) Sistema apresenta pgina de endereos 03) O consumidor informa que deseja cadastrar um novo endereo 04) Sistema apresenta formulrio de cadastro de endereos 05) O consumidor informa os dados do novo endereo e confirma 06) O sistema valida os dados, efetua o cadastro do novo endereoNo passo 06, caso ocorra alguma inconsistncia na validao como campo obrigatrio, o sistema apresenta mensagem referente ao problema encontrado. O novo endereo deve estar registrado

Exceo

Ps-condies

Quadro 12 Detalhamento do caso de uso UC03.04 Cadastra endereos para entrega

O Quadro 13 tem o objetivo de explicar o funcionamento do processo de pedido, de acordo com o caso de uso UC03.05 Efetuar pedido, tendo em vista que ser utilizado um sistema de fidelizao de consumidores por pontos, onde a cada compra o consumidor recebe pontos, que podem ser trocados por produtos em pedidos futuros.

30UC03.05 Efetuar pedido Pr-condies Cenrio principal

Ter efetuado o login 01) O consumidor acessa menu novo pedido 02) Sistema apresenta listagem para seleo do endereo de entrega 03) O consumidor seleciona um endereo 04) Sistema apresenta listagem dos restaurantes que atendem a este endereo 05) O consumidor seleciona a qual restaurante deseja efetuar o pedido 06) O sistema apresenta os tamanhos de pizza deste restaurante 07) O consumidor seleciona um tamanho de pizza 08) O sistema lista os sabores do restaurante para este tamanho de pizza 09) O consumidor seleciona os sabores desejados, e clica em avanar 10) O sistema lista os adicionais do restaurante 11) O consumidor seleciona os adicionais desejados, e clica em avanar 12) O sistema lista os produtos que podem ser trocados por pontos 13) O consumidor troca os itens que desejar, e clica em avanar 14) O sistema lista opes de entrega 15) O consumidor informa suas preferncias, e clica em finalizar pedido 16) O sistema finaliza o pedido, e emite comunicado para o restaurante

Cenrio alternativo No passo 09, caso o consumidor queira adicionar outro tamanho de pizza: 09.01) O consumidor clica em quero mais uma pizza 09.02) Sistema encaminha o consumidor para o passo 06 Exceo No passo 12, caso o consumidor no tenha pontos suficientes: 12.01) O sistema avisa o consumidor de que seus pontos so insuficientes Ps-condies Pedido efetuado Quadro 13 Detalhamento do caso de uso UC03.05 Efetuar pedido de entrega

A consulta da situao do pedido demonstrada no Quadro 14, onde alm da situao, o consumidor pode visualizar informaes sobre a data e hora em que o pedido foi aberto, assim como seus itens, local de entrega, valores e taxas.UC03.06 Consultar situao do pedido Pr-condies Cenrio principal

Ter efetuado o login e no mnimo um pedido 01) O consumidor acessa menu meus pedidos 02) Sistema apresenta listagem de pedidos efetuados 03) O consumidor informa qual pedido deseja visualizar 04) Sistema apresenta a situao do pedido juntamente com o resumo do pedido.No passo 02, caso o consumidor no tenha efetuado pedido 02.01) O sistema avisa o consumidor de que no existem pedidos

Exceo

Quadro 14 Detalhamento do caso de uso UC03.06 Consultar situao do pedido

31 3.2.2 Diagrama de atividades

O diagrama de atividades apresentado na Figura 4 ilustra o processo de pedido do consumidor. O pedido pode ser efetuado de duas maneiras: k) com um pr-cadastro, onde so cadastrados os dados do usurio e de sua conta, sendo que aps seu cadastro, dado incio ao processo de pedido, onde o consumidor seleciona o endereo do cadastro, ou cria um novo endereo para serem contabilizadas as taxas de entrega; l) o pedido pode ser elaborado para mais tarde serem informados os dados do cadastro e conta, tendo as taxas de entrega referentes ao bairro de entrega selecionado no incio do processo. O pedido s pode ser feito para um restaurante, de tal forma que no ser possvel emitir um pedido com itens de dois ou mais restaurantes distintos.

32

Figura 4 Diagrama de atividades do processo de pedido

33 O diagrama de atividades representado na Figura 5 demonstra como feito o processo de clculo de rotas. Aps acessar a tela de clculo de rotas, o sistema busca as coordenadas de latitude e longitude, que so cadastradas durante o caso de uso UC03.02 Cadastra dados pessoais, de acordo com o endereo do Consumidor, descritos no Quadro 9. So feitas requisies para o Google Maps API destas coordenadas, solicitando a distncia entre todos os pontos, que so carregadas em uma matriz pelo sistema para dar incio ao clculo da melhor rota entre estes pontos.

Figura 5 Diagrama de atividades do clculo de rotas

3.2.3

Diagrama de classes

O diagrama de classes representado na Figura 6 exibe as principais classes encontradas no sistema com seus devidos atributos. Algumas classes e mtodos foram abstrados para uma melhor visualizao do diagrama, no comprometendo o entendimento do mesmo.

34

Figura 6 Diagrama de classes

3.2.3.1

Classe Rota

Esta classe responsvel pelo clculo de rotas e representao geogrfica atravs do mapa. Os dados contidos nesta classe so gerados dinamicamente pelo PHP para serem executados diretamente pelo navegador do operador atravs de scripts Java. Nos quadros a seguir so detalhados seus mtodos j gerados dinamicamente pelo PHP, para um melhor entendimento. O mtodo initialize(), representado no Quadro 15, tem o objetivo de buscar as coordenadas de latitude, longitude e nome do ponto de entrega, para serem instanciadas pelo

35 navegador do operador, atravs de variveis da linguajem Java script. Os nomes das variveis funcionam como ndices.function initialize() { if (GBrowserIsCompatible()) { latLng0 = new GLatLng(-26.929022,-49.132899); local0 = "Juliana Baesso de Alcantara"; latLng1 = new GLatLng(-26.893243,-49.098249); local1 = "Eduardo Yago Blankenburg"; latLng2 = new GLatLng(-26.95456,-49.067514); local2 = "Daniel Arnon Silva"; latLng3 = new GLatLng(-26.913154,-49.093995); local3 = "Solange Mari Sens"; latLng4 = new GLatLng(-26.923398,-49.091964); local4 = "Antonio Joo Mandel Junio"; latLng5 = new GLatLng(-26.915527,-49.084554); local5 = "Restaurante"; buscaProximaDistancia(); } }

Quadro 15 Cdigo fonte do mtodo initialize()

O mtodo calculaRota(int,int),

representado no Quadro 16, tem como

parmetros, os ndices das variveis instanciadas durante o mtodo initialize(), a funo deste mtodo buscar a distncia entre os dois pontos da entrada de parmetros. O servio para obter estas distncias disponibilizado pela API do Google Maps, onde informado um array de pontos e retornando informaes como distncia, tempo de percurso entre outros.function calculaRota(j,k) { var pointsArray = [ eval('latLng'+j),eval('latLng'+k)]; var dir = new GDirections(map); dir.loadFromWaypoints(pointsArray, {locale:"pt-br", getSteps:false}); GEvent.addListener(dir,"load", function() { var rota = new Array(2); rota[1] = roundNumber(dir.getDistance().meters/1000,3); rota[2] = roundNumber(dir.getDuration().seconds/60,2); eval('aresta'+j+'[k] = rota[1]'); buscaProximaDistancia(); });GEvent.addListener(dir, "error", function() { alert("Erro ao calcular rota." + "\nNmero: " + dir.getStatus().code); }); }

Quadro 16 Cdigo fonte do mtodo calculaRota(int,int)

O mtodo calcular(), representado no Quadro 17, disponibiliza na interface o boto para efetuar o clculo de rotas. Ele exibido somente aps o sistema j ter carregado a matriz de rotas.

36

function calcular() { destinos[0] = aresta0; destinos[1] = aresta1; destinos[2] = aresta2; destinos[3] = aresta3; destinos[4] = aresta4; destinos[5] = aresta5; var html = "debug:"; document.getElementById('calculo').innerHTML = html+imprimiMatrizDeRotas(destinos); }

Quadro 17 Cdigo fonte do mtodo calcular()

O mtodo imprimirMatrizDeRotas(array,array), representado no Quadro 18, disponibiliza na interface via HTML uma matriz com as distncias entre todos os pontos informados no array do parmetro de entrada, ordenados pelo parmetro ndice, que um array de posies.function imprimirMatrizDeRotas(arrDest,indice) { var ind = new Array(); for (j=0;j