IMPLEMENTAÇÃO UTILIZANDO DISTÂNCIA DIRETA EUCLIDIANA
ENTRE PONTOS
 
MODELO DE LOCALIZAÇÃO E ALOCAÇÃO | ALGORITMO | SCRIPT| APLICAÇÃO|DOWNLOAD|REFERÊNCIAS BIBLIOGRÁFICAS
 

Resultados Preliminares

Nesta fase do projeto, fez-se a integração de um algoritmo de localização e alocação a um SIG, Sistema de Informações Geográficas, no caso o ArcView fabricado pela ESRI-Environmental Systems Research Institute.
O SIG ArcView é um software para tratamento de informações geográficas e mapeamento desktop. Possibilita visualização, exploração, solicitação e análise de dados geograficamente. Possui um ambiente de desenvolvimento integrado a uma linguagem de programação orientada a objeto, chamada Avenue, que é implementada através de scripts.
A linguagem Avenue permite automatizar tarefas individuais, personalizar interface com o usuário dentro do ArcView, ou criar e integrar aplicações com o ArcView[1].
O algoritmo foi integrado ao SIG através de um script.


 
Modelo de localização e alocação

Localização e alocação é o processo de se determinar a melhor, ou ótima localização para uma ou mais facilidades ou centros ofertantes, de modo que os serviços ou benfeitorias sejam acessíveis à população, representada por pontos de demanda, da maneira mais eficiente. Os modelos otimizam eficiência, determinando simultaneamente a configuração das facilidades - localização - e fazendo a ligação da população a essas facilidades - alocação[2].
O modelo utilizado para esta fase do projeto foi o de distâncias mínimas ou problema das p-medianas, onde o objetivo foi minimizar a distância total percorrida entre cada ponto de demanda e seu centro ofertante mais próximo. A distância calculada foi linear e nenhuma restrição foi considerada.
 


 
Algoritmo

O algoritmo fornece uma solução heurística para problemas de p-medianas, utilizado na resolução de processos de localização e alocação. Seleciona a partir de n pontos  fornecidos, um conjunto de  p pontos  ( p <= n ), que melhor representam as medianas, minimizando a soma das distâncias entre os pontos e medianas. Essas medianas podem representar por exemplo, quais os melhores locais para se alocar um número p de pontos de saúde, dentre um conjunto n de pontos que representam os bairros de uma dada cidade.
Foi implementado através de dois programas executáveis, escritos em linguagem C, e foram compilados com MS Visual C++. Estes programas existem em duas versões diferentes, uma para uso com o ArcView e outra para uso sem o Arcview.
Para utilização com o ArcvView:
O primeiro programa chama-se Dmatrix.exe, utiliza como entrada de dados um arquivo chamado pmedian.txt gerado pelo script e contem no seu primeiro registro o número de pontos(nós) e o número de medianas que estarão sendo consideradas no processamento, e os registros seguintes formam uma lista de coordenadas X-Y de todos os pontos considerados. Este programa gera um arquivo de saída chamado pmedian.dat contendo a matriz de distâncias a partir das coordenadas X-Y de um conjunto de pontos.
O segundo programa chama-se Pmedian.exe (Senne and Lorena,1999)[3] utiliza como entrada de dados o arquivo pmedian.dat e gera como saída um arquivo no formato texto chamado solução.txt, contendo uma lista tripla formada pelo ponto(nó) de origem ou ponto de demanda, sua mediana ou ponto fertante correspondente (identificado por números) e por último a distância entre eles. Segue um número que indica fim da lista tripla e para finalizar, o status da solução que pode ser: "Solução Ótima" (Gap fechado por limites), ou "Não-Ótima" (Pi muito pequeno ou  Subgradiente nulo). A lista tripla é formada por todos os pontos de demanda considerados na entrada dos dados.
Para utilização sem o ArcView:
O primeiro programa chama-se DmatrixA.exe, utiliza como entrada de dados um arquivo chamado pmedian.txt contendo na primeira linha o número de pontos(nós) e o número de medianas que serão consideradas no processamento, e os registros seguintes formam uma lista de coordenadas X-Y de todos os pontos considerados. Este programa gera um arquivo de saída chamado pmedian.dat contendo  na primeira linha o número de pontos e o número de medianas e nas linhas  seguintes a matriz de distâncias a partir das coordenadas X-Y de um conjunto de pontos.
O segundo programa chama-se pmedianA.exe (Senne and Lorena,1999)[3], utiliza como entrada de dados o arquivo pmedian.dat e o resultado do processamento é apresentado no video. O status da solução pode ser: "Solução Ótima" (Gap fechado por limites) ou "Solução Não-Ótima" (Pi muito pequeno ou Subgradiente nulo).

A distância entre os pontos foi calculada a partir da escala do mapa no qual estão inseridos os pontos considerados, e os valores resultantes representam a distância direta euclidiana entre os pontos, não levando em conta os arcos(ruas e avenidas) que compõem o mapa. Neste modelo de solução do problema das p-medianas, a distância entre os pontos ou comprimento do arco foi o único parâmetro de custo considerado para o ponto selecionado.


 
Script

O ArcView possui uma função Spider, implementada através de um script. Este script verifica as distâncias entre os pontos considerados pontos de demanda, contidos em um tema, e os pontos considerados centros ofertantes, contidos em outro tema, e faz a ligação dos pontos de demanda aos centros ofertantes mais próximos. Utilizou-se essa função como modelo para o script utilizado na integração. Foi necessário fazer algumas modoficações na codificação do script de modo a adequar às necessidades da integração visando obter melhor desempenho no processamento.
Inicialmente é solicitado ao usuário informar o número de medianas ou centros ofertantes que deve ser obtido, e em seguida o tema a ser usado como pontos de demanda. O script grava essas informações no arquivo que serve de entrada para o programa Dmatrix.exe, executa a chamada dos dois programas em C, Dmatrix.exe e Pmedian.exe e lê os resultados gravados no arquivo Solução.txt.
Em seguida gera dois temas, um chamado Medianas.shp contendo os pontos correspondentes às medianas e outro chamado Solução.shp correspondente às linhas que unem as medianas aos pontos de demanda, e grava as distâncias correspondentes no arquivo de atributos deste tema. Por último mostra em uma janela separada o status da solução que pode ser ótima ou não.
As figuras a seguir ilustram uma aplicação desenvolvida.
 


 
Aplicação

Nesta aplicação foram utilizados dados do centro da cidade de São José dos Campos-SP.

 Os polígonos em cor azul correspondem a quadras do centro da cidade de São José dos Campos-SP, cujo tema é CentroSJC.shp. Os pontos em verde são os pontos de demanda correspondentes ao tema P_demanda.shp.
 

 Fig. 1 - Tema P_demanda.shp contendo os pontos para a execução do programa p_medianas.exe desenvolvido.
 

Inicialmente o script solicita ao usuário que digite o número de medianas desejado, neste caso 3.
 

Fig.2 - Janela de solicitação do número de medianas.
 

 Em seguida, solicita que o usuário informe o tema a ser usado como pontos. Aqui usamos o tema P_demanda.shp.
 

Fig. 3 - Janela de solicitação do tema a ser usado como pontos.
 

Na figura abaixo as medianas estão representadas por pontos amarelos e podem por exemplo ser associadas a centros ofertantes de um determinado tipo de serviço. Seu tema correspondente é Medianas.shp.
As linhas em vermelho representam a ligação entre os pontos de demanda e seus centros ofertantes correspondentes, e o tema associado é Solução.shp.
 

Fig. 4 - Solução do processamento com os temas iniciais e os resultantes.
 

No final uma janela mostra o status da solução encontrada.
 

 Fig. 5 - Janela de apresentação do status da solução.
 

 
 Download

Estão disponíveis para download os módulos executáveis dos programas desenvolvidos em C, o script em Avenue, arquivos com o número de pontos, o número de medianas, e as coordenadas de pontos(nós) para uso no processamento, e alguns arquivos obtidos do processamento utilizando dados referentes à cidade de São José dos Campos. Os arquivos com o número de pontos, o número de medianas e, as coordenadas dos pontos(nós), são nomeados com a palavra pmedian seguido da quantidade de pontos(nós) a que se refere, e a extensão .txt. Assim pmedian324.txt refere-se ao arquivo de coordenadas de uma amostra de 324 pontos(nós). Os arquivos com os resultados receberam o nome result seguido pela quantidade de pontos(nós), a letra p, a quantidade de medianas e por último a letra m. Assim o arquivo result324p10m refere-se ao arquivo de resultado do processamento de 324 pontos(nós) e 10 medianas.

Programas

Dmatrix.exe
Pmedian.exe
DmatrixA.exe
PmedianA.exe
Spiderpmed.ave

Resultados obtidos

os resultados a seguir referem-se a uma amostra com 3282 pontos(nós) que representam a quase totalidade da cidade.

pmedian3282.txt
result3282p1141m.txt
result3282p1000m.txt
result3282p500m.txt
result3282p100m.txt
result3282p50m.txt
result3282p20m.txt
result3282p10m.txt
result3282p5m.txt

Os resultados abaixo referem-se a um subconjunto de pontos(nós) da amostra anterior com 818 pontos(nós).

pmedian818.txt
result818p272m.txt
result818p150m.txt
result818p100m.txt
result818p50m.txt
result818p20m.txt
result818p10m.txt
result818p5m.txt

Os resultados a seguir referem-se a um subconjunto de pontos(nós) da amostra anterior com 324 pontos(nós) correspondente a uma área central da cidade.

pmedian324.txt
result324p108m.txt
result324p50m.txt
result324p20m.txt
result324p10m.txt
result324p5m.txt


 
Referências Bibliográficas

1. Environmental Systems Research Institute, Inc. Avenue Customization and Application Development for ArcView,1996.
2. Environmental Systems Research Institute, Inc. ARC/INFO User 7.2.1 ArcDoc, 1997.
3. Senne, E. L. F. and Lorena, L. A. N. Lagrangean/surrogate heuristics for p-median problems. In Computing Tools for Modeling, Optimization and Simulation: Interfaces in Computer Science and Operations Research, M. Laguna and J. L. Gonzalez-Velarde (eds.), Kluwer Academic Publishers, pp. 115-130, 2000
4. Lorena, L. A. N., Senne, E. L. F. , Paiva, J. A. M. e Marcondes, S. P. B. Integracao de um modelo de p-medianas a sistemas de informacoes geograficas. XXXI SBPO- Simposio Brasileiro de Pesquisa Operacional. Juiz de Fora. 20-22/10/99.