This function takes two (clustered) networks with equal number of nodes and, if present, equal number of depots, and generates another instance by applying a convex combination to the coordinates of node pairs. The node pairs are determined by a point matching algorithm, which solves this assignement problem via a integer programming procedure. If both instances contain depots, point matching is done separately on depots and the remaining nodes.

morphInstances(x, y, alpha, point.matching = NULL,
  point.matching.algorithm = getOptimalPointMatching)

Arguments

x

[Network]
First network.

y

[Network]
Second network.

alpha

[numeric(1)]
Coeffiecient alpha for convex combination.

point.matching

[matrix | NULL]
Point matching which shall be used for morphing. If NULL, an optimal point matching is generated via function getOptimalPointMatching. Default is NULL. Currently it is just possible to pass a point matching for instances without depots.

point.matching.algorithm

[function]
Algorithm used to find a point matching. Default is getOptimalPointMatching.

Value

[Network] Morphed network

See also

Examples

x = generateRandomNetwork(n.points = 40L, n.depots = 2L)
y = generateClusteredNetwork(n.points = 40L, n.cluster = 2L, n.depots = 2L)
z = morphInstances(x, y, alpha = 0.2)
#> Loading required package: lpSolve
if (FALSE) {
library(gridExtra)
plot.list = list(autoplot(x), autoplot(z), autoplot(y))
plot.list$nrow = 1
do.call(grid.arrange, plot.list)
}