Percorrer todas as freguesias do concelho de Barcelos num fim-de-semana

ze_carlos_s

New Member
O título deste tópico também poderia ser "Como aliar os conhecimentos de programação ao BTT".

Há uns tempos atrás, ponderei se era possível uma coisa: percorrer todas as freguesias do meu concelho - Barcelos - num único fim-de-semana. Concretamente, ir ao centro de cada freguesia.

Ora Barcelos é “só” o concelho com mais freguesias em Portugal. Nada mais que 89 freguesias: 46 na margem sul e 43 na margem norte. O objectivo seria fazer uma margem em cada dia.
projed1.jpg


Após 10 minutos a tentar definir um percurso no Google Maps desisti. Demasiadas opções. Uma pergunta colocava-se: “Qual o melhor caminho para percorrer estas freguesias todas?”
Foi então que me lembrei de investigar a API do Google Maps
35kil1w.png



Descobri que era possível que, dando uma lista de localizações, era possível obter a matriz de distâncias! (Matrizes de distâncias não são mais do que aquelas tabelas que se viam nos almanaques antigamente que diziam a distância entre cada cidade).
ex: http://www.aguasdelindoia.com/images/distancia_entre_cidades.gif.

Coloquei todas as freguesias de Barcelos em ficheiros de texto que eram lidas por uma pequena aplicação para receber a matriz de distâncias entre todas as freguesias. Isto ir-me-ia permitir saber, a partir de uma dada freguesia, qual a distância para todas as outras freguesias do concelho. Dava para configurar que tipo de rota o Google Maps escolhia, portanto eu escolhi para ele definir rotas a pé, de modo a escolher caminhos secundários.
Já que o rio Cávado divide o concelho a meio, dividi em duas partes: parte Norte e parte Sul. Iria fazer uma margem em cada dia.
5vaq88.png
2jcv8tl.png



Agora que sabia a distância entre todas as freguesias, como usar esta informação para obter o melhor caminho possível de modo a passar em todas as freguesias e regressar ao ponto de partida?


Ora, este é um típico caso do Problema do Caixeiro Viajante (http://pt.wikipedia.org/wiki/Problema_do_caixeiro_viajante), em que cada nó é uma freguesia e o custo das ligações é a sua distância. Eu quero passar em todas as freguesias e regressar ao ponto de partida percorrendo a menor distância possível.
Como o número de freguesias (nós) era elevado (46 a sul e 43 a norte) é muito demorado (mesmo para um computador) calcular o melhor percurso possível. Daí usar as chamadas heurísticas, que retornam soluções relativamente próximas do melhor valor possível. Para tal utilizei este código já feito (http://www.codeproject.com/KB/recipes/simulatedAnnealingTSP.aspx).
As heurísticas não retornam sempre o mesmo resultado, portanto, corri o mesmo algoritmo várias vezes guardando apenas a melhor execução.
Consegui valores na ordem dos 115km para cada margem. Bem melhor que os 140km que consegui sendo eu a definir o meu percurso :)
w0kxlg.png


Agora que tinha uma sequência quase óptima para fazer o percurso, foi só ir ao Google Maps e gerar o trajecto pela ordem obtida.
35kil1w.jpg


Tendo o percurso desenhado no Google Maps, importei para .kml, para o usar no Google Earth, de modo a poder adicionar waypoints mais à vontade, assim como fazer optimizações ao percurso. O Google Maps não contém todos os caminhos existentes, e no Google Earth deu para identificar muitos caminhos (essencialmente pelo meio dos montes) que reduziam consideravelmente a distância.
opspag.png



Para me certificar que passava mesmo no centro de cada freguesia, criei waypoints com a localização de cada igreja.

Finalmente, foi só converter o percurso para .gpx, colocar no GPS, já com os waypoints, e estava pronto para pedalar pelas freguesias fora :D


Este fim-de-semana, fiz-me às estradas, e, consegui cumprir o objectivo :D

Registos GPS:
Dia 1: http://www.endomondo.com/workouts/vJvxmHMAzpo
Dia 2: http://www.endomondo.com/workouts/hd3LPijYPhY

Para comprovar a passagem, tenho 89 fotos de 89 igrejas do concelho com a bike lá incluída :p
20f5a2c.jpg

bitjx3.jpg


Isto foi muito desafiante, pois claramente se dividiu em duas fases, saber fazer um bom planeamento, e depois ter capacidade para aguentar os quilómetros todos em dois dias seguidos.

Fico à espera que alguém aqui da zona entre no desafio :mrgreen:
 

abelha2

Active Member
eu ando um bocado lixado com uma cadeira em que dou isso. Já tive de fazer um programa semelhante ao que usaste, para resolver o problema do caixeiro viajante. Mete um link nem que seja do picassa para um gajo ver as fotos das 89 igrejas :lol:
 

JoãoLopes

New Member
Trabalho espetacular! O gozo de correr o track depois do planeamento deve ter sido brutal!
Um bom conceito para quem gosta de aventuras! ;)
 

ze_carlos_s

New Member
Por acaso, nunca apanhei nenhuma cadeira em que tivesse que resolver este problema exactamente, mas já tive que "brincar" com shortest paths e dijkstras
Ainda hoje devo colocar um link para a galeria ;)

Obrigado JoãoLopes, e sim, deu um gozo enorme, se bem que deu para descobrir que ainda poderia ter feito bastantes optimizações, não na ordem das freguesias, mas nos caminhos escolhidos (A elevação, por exemplo, não foi contemplada no planeamento... Quer dizer, pelo menos directamente, pois não apanhei nenhum caminho que fosse ao topo de um monte).


PS: Uma pergunta, pelo que estou a perceber, não consigo editar o post inicial... É suposto ser assim, ou sou eu que estou cego? É que tenho ali umas pequenas correcções a fazer :s
 

abelha2

Active Member
Obrigado pelas fotos.

É suposto não conseguires editar, agora só o podes fazer 3 minutos após teres postado (no maximo)
 

super.byke

New Member
Excelente iniciativa :), realmente a fase de planeamento deve ter sido uma "moca" :)... imaginem fazer isto aqui à uns anos sem GoogleMaps e afins :D!!!
 

mpro

Member
Ora aqui está um desafio que nunca me tinha passado pela cabeça, e eu que até sou de Barcelos...
É uma boa forma de conhecer melhor o nosso concelho!
Será que podias ceder o track desse quebra-cabeças?
Cump
 

mpro

Member
Obrigado pelos tracks, sou de viatodos e como conheço bem a zona sul em principio vou fazer algumas alterações, mas a base vai ser essa....

cump
 

ze_carlos_s

New Member
Porreiro, depois disponibiliza aqui também.
Eu sou de Gilmonde, ou seja, parte sul também, mas essa zona não conheço bem. A ida a Cambeses é um dos exemplos em que dá para colocar atalhos por caminhos de monte, mas como não conhecia a zona, deixei ficar... Essa zona deves conhecer bem.
 

Trufox

New Member
Parabéns pela ideia e pela partilha! Gosto de criar coisas novas de longas distâncias e deste-me umas novas ideias que talvez consiga concretizar lá para o Verão! Obrigado ;)
 

Pêto

New Member
boas, eu tambem fiz o percurso das 89 freguesias do concelho de barcelos, mas em 4 domingos da parte da manhã, mas sem mapa, eu fazia de igreja a igreja, ora eu entam fazia assim, saiam da minha freguesia que é Remelhe, e fiz o percurso. dois domingos na parte sul, e dois para norte, sempre por caminhos e estradas secundarias, uma esperiencia fantástica, muita coisa bonita, tem este concelho de barcelos.
 

ze_carlos_s

New Member
Muito bom! :D Se bem que o facto de serem mais dias e sair sempre de Remelhe aumentou o número total de quilómetros. Eu "só" fiz 233km, e pelo que vejo, vocês fizeram 399km.
Não gravaram track do percurso?
 

Pêto

New Member
Boas ze_carlos_s, não gravamos o track do percurso, nós marcavamos as etapas pelo mapa da cidade, antes da saida, e faziamos x fraguesias, mais lá pra frente vamos fazer as 89 freguesias, mas tentar visitar as capelas, existentes, nas nossas aldeias, isso sim vai levar muito tempo,
mas vamos fazer,

Abraço
 
Top