makegraph {cppRouting} | R Documentation |
Construct graph
Description
Construct graph
Usage
makegraph(
df,
directed = TRUE,
coords = NULL,
aux = NULL,
capacity = NULL,
alpha = NULL,
beta = NULL
)
Arguments
df |
A data.frame or matrix containing 3 columns: from, to, cost. See details. |
directed |
logical. If |
coords |
Optional. A data.frame or matrix containing all nodes coordinates. Columns order should be 'node_ID', 'X', 'Y'. |
aux |
Optional. A vector or a single value describing an additional edge weight. |
capacity |
Optional. A vector or a single value describing edge capacity. Used for traffic assignment. |
alpha |
Optional. A vector or a single value describing alpha parameter. Used for traffic assignment. |
beta |
Optional. A vector or a single value describing beta parameter. Used for traffic assignment. |
Details
'from' and 'to' are character or numeric vector containing nodes IDs.
'cost' is a non-negative numeric vector describing the cost (e.g time, distance) between each 'from' and 'to' nodes.
coords
should not be angles (e.g latitude and longitude), but expressed in a projection system.
aux
is an additional weight describing each edge. Shortest paths are always computed using 'cost' but aux
can be summed over shortest paths.
capacity
, alpha
and beta
are parameters used in the Volume Delay Function (VDF) to equilibrate traffic in the network. See assign_traffic.
capacity
, alpha
, beta
and aux
must have a length equal to nrow(df)
. If a single value is provided, this value is replicated for each edge.
alpha
must be different from 0 and alpha
must be greater or equal to 1.
For more details and examples about traffic assignment, please see the package website : https://github.com/vlarmet/cppRouting/blob/master/README.md
Value
Named list with two useful attributes for the user :
nbnode : total number of vertices
dict$ref : vertices IDs
Examples
#Data describing edges of the graph
edges<-data.frame(from_vertex=c(0,0,1,1,2,2,3,4,4),
to_vertex=c(1,3,2,4,4,5,1,3,5),
cost=c(9,2,11,3,5,12,4,1,6))
#Construct directed and undirected graph
directed_graph<-makegraph(edges,directed=TRUE)
non_directed<-makegraph(edges,directed=FALSE)
#Visualizing directed and undirected graphs
if(requireNamespace("igraph",quietly = TRUE)){
plot(igraph::graph_from_data_frame(edges))
plot(igraph::graph_from_data_frame(edges,directed=FALSE))
}
#Coordinates of each nodes
coord<-data.frame(node=c(0,1,2,3,4,5),X=c(2,2,2,0,0,0),Y=c(0,2,2,0,2,4))
#Construct graph with coordinates
directed_graph2<-makegraph(edges, directed=TRUE, coords=coord)