FALSE)
# 4. Visualizzazione del grafo
plot(
g_non_orientato,
edge.label = E(g_non_orientato)$weight, # etichette con pesi (distanze)
vertex.label.color = "black",
vertex.label.cex = 0.9,
vertex.size = 30,
vertex.color = "lightblue",
main = "Grafo Non Orientato - Rete Logistica Forno Roscioli"
)
Il grafo è non orientato: ciò significa che le connessioni tra i nodi sono bidirezionali, cioè non si
tiene conto del verso della distribuzione, ma solo della presenza di una relazione.
Anche qui i 10 nodi rappresentano:
1 Laboratorio di produzione: centro principale della rete.
a) 2 Punti vendita diretti:
b) Antico Forno Roscioli
Forno Roscioli Pietro – Esquilino
2 Locali interni:
c) Roscioli Salumeria con Cucina
Roscioli Caffè Pasticceria
5 Clienti: hotel che acquistano prodotti da Roscioli.
d)
Gli archi rappresentano i collegamenti logistici tra i nodi e sono pesati: ogni collegamento ha un
valore numerico che rappresenta la distanza reale in km tra due punti.
Caratteristiche del grafo:
Il Laboratorio è il punto di partenza principale della distribuzione.
I due forni intermedi (Antico Forno e Roscioli Pietro) sono hub secondari che riforniscono i
due locali interni.
I clienti (hotel) sono punti finali della rete e vengono raggiunti esclusivamente dal
lavoratorio.
Nella costruzione del grafo non orientato della rete logistica del Forno Roscioli, si è scelto di non
rappresentare tutti i collegamenti teoricamente possibili tra i nodi, ma esclusivamente quelli
che rispecchiano effettive relazioni logistiche tra gli attori della rete. Questa decisione è motivata
dalla volontà di mantenere una fedeltà operativa al funzionamento reale del sistema distributivo,
evitando di introdurre collegamenti che non avvengono nella pratica e che avrebbero potuto
compromettere la significatività dell’analisi.
In particolare, sono stati inseriti solo gli archi che rappresentano flussi reali di prodotti: dal
laboratorio centrale verso i punti vendita e i clienti finali (hotel), e dai punti vendita principali verso
i locali interni del gruppo Roscioli. Sono invece stati esclusi i collegamenti tra nodi che non
intrattengono relazioni logistiche dirette, come ad esempio quelli tra clienti (hotel), tra i locali
interni o tra punti vendita non collegati nella catena di distribuzione.
Questa scelta ha permesso di ottenere un grafo più snello e coerente, in cui ogni connessione è
funzionalmente motivata, facilitando così l’analisi della rete in termini di centralità, distribuzione e
ottimizzazione dei percorsi. Inoltre, evitando una rappresentazione eccessivamente densa o
completa, si è mantenuta l’interpretabilità del grafo, rendendolo uno strumento efficace per
visualizzare e comprendere la reale architettura della rete logistica del Forno Roscioli.
4.5 Grafo non orientato visualizzato geograficamente
Coordinate approssimative dei nodi (latitudine, longitudine):
Nodo Latitudine Longitudine
Laboratorio Produzione Roscioli 41.8562 12.4568
Nodo Latitudine Longitudine
Antico Forno Roscioli 41.8946 12.4755
Forno Roscioli Pietro – Esquilino 41.8957 12.5074
Roscioli Salumeria con Cucina 41.8949 12.4743
Roscioli Caffè Pasticceria 41.8942 12.4746
Best Western Plus Hotel Universo 41.9010 12.4953
Best Western Premier Hotel Royal Santina 41.9015 12.5013
Best Western Hotel President 41.8883 12.5098
Hotel Raffaello (Sure Hotel Collection) 41.8961 12.4948
Hilton Garden Inn Rome Claridge 41.9207 12.5071
Codice R:
library(leaflet)
library(dplyr)
# Nodi con coordinate aggiornate
nodi <- data.frame(
name = c(
"Laboratorio Produzione Roscioli",
"Antico Forno Roscioli",
"Forno Roscioli Pietro - Esquilino",
"Roscioli Salumeria con Cucina",
"Roscioli Caffè Pasticceria",
"Best Western Plus Hotel Universo",
"Best Western Premier Hotel Royal Santina",
"Best Western Hotel President",
"Hotel Raffaello (Sure Hotel)",
"Hilton Garden Inn Rome Claridge"
),
lat = c(
41.856298039719235,
41.8946,
41.8957,
41.8949,
41.8942,
41.9010,
41.9015,
41.8883,
41.8961,
41.9207
),
lon = c(
12.456881780747205,
12.4755,
12.5074,
12.4743,
12.4746,
12.4953,
12.5013,
12.5098,
12.4948,
12.5071
),
stringsAsFactors = FALSE
)
# Archi NON orientati (stesse connessioni, senza direzione)
archi_non_orientati <- data.frame(
from = c(
"Laboratorio Produzione Roscioli", "Laboratorio Produzione Roscioli",
"Laboratorio Produzione Roscioli", "Laboratorio Produzione Roscioli",
"Laboratorio Produzione Roscioli", "Laboratorio Produzione Roscioli",
"Laboratorio Produzione Roscioli",
"Antico Forno Roscioli", "Antico Forno Roscioli",
"Forno Roscioli Pietro - Esquilino", "Forno Roscioli Pietro - Esquilino"
),
to = c(
"Antico Forno Roscioli",
"Forno Roscioli Pietro - Esquilino",
"Best Western Plus Hotel Universo",
"Best Western Premier Hotel Royal Santina",
"Best Western Hotel President",
"Hotel Raffaello (Sure Hotel)",
"Hilton Garden Inn Rome Claridge",
"Roscioli Salumeria con Cucina",
"Roscioli Caffè Pasticceria",
"Roscioli Salumeria con Cucina",
"Roscioli Caffè Pasticceria"
),
stringsAsFactors = FALSE
)
# Mappa base
mappa <- leaflet(nodi) %>%
addTiles() %>%
addCircleMarkers(
lng = ~lon, lat = ~lat,
radius = 6,
color = "blue",
fillOpacity = 0.9
)
# Aggiunta delle linee (non orientate)
for(i in seq_len(nrow(archi_non_orientati))) {
from_node <- filter(nodi, name == archi_non_orientati$from[i])
to_node <- filter(nodi, name == archi_non_orientati$to[i])
mappa <- mappa %>%
addPolylines(
lng = c(from_node$lon, to_node$lon),
lat = c(from_node$lat, to_node$lat),
color = "darkgreen",
weight = 2,
opacity = 0.7
)
}
# Visualizza la mappa
mappa
5. Misure di centralità della rete distributiva del Forno Roscioli (grafo
non orientato)
5.1 Definizioni delle misure di centralità:
Misura il numero di archi che si collegano ad un nodo e l’importanza di un
Degree Centrality:
1) nodo in base al numero dei suoi vicini.
Misura la distanza di un nodo da tutti gli altri nodi, è anche l’inverso
Closeness Centrality:
2) della distanza media. Si può anche definire come la velocità con cui un nodo viene
raggiunto/raggiunge da tutti gli altri. Fornisce un’indicazione su quali punti della rete
minimizzano la distanza media fra i nodi. Il valore di closeness di un nodo stima il grado di
vicinanza del nodo dal resto dei nodi del grafo.
Misura l’importanza di un nodo della rete sulla base della quantità di
Betweenness Centrality:
3) cammini minimi di cui fa parte. Misura la dipendenza di coppia di un nodo rispetto a tutte le
possibili coppie di vertici. Misura quanto un nodo è cruciale per la comunicazione tra tutte le
coppie di nodi. Misura l’importanza di un nodo in funzione dell’importanza dei suoi
Eigenvector Centrality:
4) nodi vicini.
5.2 Calcolo delle misure di centralità tramite R
Codice R:
# Libreria
library(igraph)
# Archi con pesi (distanze reali in km)
archi_pesati <- data.frame(
from = c(
"Laboratorio", "Laboratorio", "Laboratorio", "Laboratorio", "Laboratorio", "Laboratorio",
"Laboratorio",
"Antico Forno", "Antico Forno",
"Roscioli Pietro", "Roscioli Pietro"
),
to = c(
"Antico Forno", "Roscioli Pietro", "Hotel Universo", "Hotel Royal Santina",
"Hotel President", "Hotel Raffaello", "Hotel Claridge",
"Salumeria", "Caffè",
"Salumeria", "Caffè"
),
weight = c(
8.2, 7.5, 8.0, 8.0, 7.8, 7.9, 9.5,
0.2, 0.3,
2.5, 2.6
)
)
# Creazione del grafo non orientato e pesato
g_non_orientato_pesato <- graph_from_data_frame(archi_pesati, directed = FALSE)
# Degree (non usa i pesi)
degree_c <- degree(g_non_orientato_pesato, mode = "all")
# Closeness centrality (con pesi)
closeness_c <- closeness(g_non_orientato_pesato, weights = E(g_non_orientato_pesato)$weight,
normalized = TRUE)
# Betweenness centrality (con pesi)
betweenness_c <- betweenness(g_non_orientato_pesato, weights = E(g_non_orientato_pe-
sato)$weight, normalized = TRUE)
# Eigenvector centrality (con pesi)
eigen_c <- eigen_centrality(g_non_orientato_pesato, weights =
E(g_non_orientato_pesato)$weight)$vector
# Tabella finale
centralita_pesata <- data.frame(
Nodo = V(g_non_orientato_pesato)$name,
Degree = degree_c,
Closeness = round(closeness_c, 4),
Betweenness = round(betweenness_c, 4),
Eigenvector = round(eigen_c, 4)
)
# Visualizza la tabella
print(centralita_pesata)
Risultati delle misure di centralità:
Nodo Degree Closeness Betweenness Eigenvector
Laboratorio 7 0.1220 0.8333 1.0000
Antico Forno 3 0.0962 0.3611 0.3806
Roscioli Pietro 3 0.0957 0.0000 0.3581
Salumeria 2 0.0949 0.0278 0.0449
Caffè 2 0.0941 0.0000 0.0484
Hotel Universo 1 0.0653 0.0000 0.3702
Hotel Royal Santina 1 0.0653 0.0000 0.3702
Hotel President 1 0.0661 0.0000 0.3610
Hotel Raffaello 1 0.0657 0.0000 0.3656
Hotel Claridge 1 0.0601 0.0000 0.4396
5.3 Analisi dei risultati ottenuti:
L’analisi delle misure di centralità del grafo non orientato, integrata con l’osservazione della
disposizione geografica dei nodi su mappa, restituisce una rappresentazione coerente ed efficace
della rete logistica del Forno Roscioli. Il nodo del Laboratorio di produzione, collocato nella parte
sud-ovest della città, emerge come polo centrale sia sotto il profilo topologico che funzionale. I suoi
alti valori in tutte le misure (degree 7, closeness 0.1220, betweenness 0.8333 ed eigenvector
centrality 1.0000) evidenziano come esso sia indispensabile per la connettività e la distribuzione,
fungendo da hub per la quasi totalità delle consegne.
La posizione decentrata del Laboratorio rispetto al centro città appare strategicamente compensata
dalla densità delle connessioni che lo uniscono ai punti di interesse logistico. Esso, infatti,
raggiunge direttamente sia i punti vendita sia i clienti fin
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Presentazione project work Metodi quantitativi per il management
-
Project Management
-
Project Management
-
Strumenti di Project Management