fbpx

Il problema del commesso viaggiatore risolto con mappoint

In un precedente post abbiamo visto in cosa consiste il problema del commesso viaggiatore definito come segue: siano assegnate n città A, B, C,…, e le distanze dij fra esse esistenti , il problema consiste nella determinazione di una sequenza di città da visitare in modo che ogni città venga visitata una sola volta, minimizzando il percorso seguito e ritornando alla città di partenza. In questo post vedremo come risolvere questo problema attraverso l’utilizzo del software MapPoint prima direttamente con il programma e poi attraverso il codice. Consideriamo che con il nostro automezzo dobbiamo effettuare dieci consegne in una giornata presso nostri clienti con partenza e ritorno presso la nostra azienda. Utilizzando il programma MapPoint, importiamo i dati sulla posizione dei clienti inseriti in un file Excel attraverso il menù Dati, aggiunta guidata dati alla carta, selezioniamo l’opzione simboli, premiamo su avanti, poi selezioniamo importa dati da aggiungere alla carta, proseguiamo e selezioniamo il file da cui importare i dati ed importiamo i dati sulla carta, a questo punto selezioniamo l’area della carta su cui sono stati aggiunti i simboli, clicchiamo con il pulsante destro sull’area e selezioniamo l’opzione aggiungi simboli come soste, a questo punto clicchiamo sul deposito di partenza con il pulsante destro e selezioniamo l’opzione itinerario aggiungi come inizio e poi aggiungi come fine. Clicchiamo quindi su ogni punto della carta che rappresenta un nostro cliente e andiamo sull’opzione itinerario pianifica sosta ed indichiamo la durata della sosta. A questo punto andiamo nel menù itinerario e clicchiamo sul tasto ottimizza soste, in questo modo MapPoint risolve il problema del commesso viaggiatore, infine clicchiamo su pianifica itinerario per avere la durata del viaggio e le indicazioni stradali. Se vogliamo risolvere il problema tramite codice partiamo da una tabella in Access con i seguenti campi: CLIENTE, LONGITUDINE, LATITUDINE, DURATA SOSTA. Successivamente utilizziamo la seguente funzione per ottenere un vettore che ci restituisce l’elenco delle soste.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Function TPS(TabellaDati, CampoCliente, CampoLAT, CampoLON, CampoSosta)
Dim objApp As New MapPoint.Application
Dim objMap As MapPoint.Map
Dim objRoute As MapPoint.Route
Dim db As DAO.Database
Dim tabella As DAO.Recordset
Set db = CurrentDb
Set tabella = db.OpenRecordset(TabellaDati, dbOpenDynaset)
tabella.MoveLast
NumeroRighe = tabella.RecordCount
tabella.MoveFirst
Set objMap = objApp.ActiveMap
Set objRoute = objMap.ActiveRoute
objApp.Visible = False
objApp.UserControl = False
ReDim Point(NumeroRighe) As MapPoint.Location
Do Until tabella.EOF
    c = c + 1
    CLIENTE = tabella.Fields(CampoCliente)
    LAT = tabella.Fields(CampoLAT)
    LON = tabella.Fields(CampoLON)
    SOSTA = tabella.Fields(CampoSosta)
    Set Point(c) = objMap.GetLocation(LAT, LON)
    objRoute.Waypoints.Add Point(c), CLIENTE
    objRoute.Waypoints.Item(c).StopTime = SOSTA * geoOneMinute
    tabella.MoveNext
Loop
tabella.Close
db.Close
objRoute.Waypoints.Optimize
objRoute.Calculate
NSOSTE = objRoute.Waypoints.Count
ReDim SOSTE(NSOSTE)
For x = 1 To NSOSTE
    SOSTE(x) = objRoute.Waypoints.Item(x).Name
Next x
TPS = SOSTE
objMap.Saved = True
objApp.Quit
End Function

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli collegati

App Thing counter

CountThings è fondamentalmente una versione app di quelle famose scene di Rain Man. E sebbene abbia un certo potenziale di novità, in realtà è progettato

leggi

TRANSPOREON

TRANSPOREON è una piattaforma di comunicazione dedicata alla logistica e ai trasporti in modalità Software-as-a-Service che semplifica tutti i processi di comunicazione e di trasmissione

leggi

Corsi sul cronotachigrafo

L’associazione  dell’autotrasporto  chiede  al  ministero  dei  Trasporti  disposizioni  su  come  attuare  i  corsi    imposti  dal  2  marzo  sull’uso  del  cronotachigrafo  e  consiglia  a  porre  attenzione 

leggi

— il nuovo servizio per i piccoli commercianti —

Bottega Digitale

[]