The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Brief introduction to mcMST

Jakob Bossek

2023-03-13

Quickstart

The mcMST package for the statistical programming language R contains methods for solving the multi-criteria minimum spanning tree problem (mcMST).

Generating a benchmark instance

Here we first generate a bi-criteria graph with n = 25 nodes with the grapherator package. The first weight is the Euclidean distance of node coordinates in [0, 10] x [0, 10] in the Euclidean plane. The second weight follows a normal distribution with mean 5 and standard deviation 1.5. The instance generation process is modular and thus highly flexible (see the grapherator package vignettes for details and further examples).

library(mcMST)
library(grapherator)

set.seed(1) # reproducability
g = graph(0, 10)
g = addNodes(g, n = 25, generator = addNodesUniform)
g = addWeights(g, generator = addWeightsDistance, method = "euclidean")
g = addWeights(g, generator = addWeightsRandom, method = rnorm, mean = 5, sd = 1.5)
print(g)
#> GRAPHERATOR GRAPH
#> #nodes           : 25 (UNG)
#> #edges           : 300 (CEG)
#> #weights per edge: 2 (DWG,RWG)
do.call(gridExtra::grid.arrange, c(plot(g), list(nrow = 1L)))
Plot of the bi-objective sample graph `g.

Plot of the bi-objective sample graph `g.

Running an algorithm

Next, we apply a (30 + 10) genetic algorithm based on the Pruefer-number encoding as proposed by Zhou & Gen to approximate the Pareto-front for max.iter = 500 generations.

res = mcMSTEmoaZhou(g, mu = 30L, lambda = 10L, max.iter = 500L)
head(res$pareto.front, n = 5)
#>          y1        y2
#> 1  59.83898 109.32049
#> 2 113.96810  70.17428
#> 5  99.89670  72.39588
#> 6  78.00714  74.94721
#> 7  64.54300  90.25433
ecr::plotFront(res$pareto.front)
Approximation of the Pareto-front of the benchmark graph instance.

Approximation of the Pareto-front of the benchmark graph instance.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.