# Brief introduction to mcMST In mcMST: A Toolbox for the Multi-Criteria Minimum Spanning Tree Problem

```knitr::opts_chunk\$set(collapse = T, comment = "#>", warning = FALSE, message = FALSE)
options(tibble.print_min = 4L, tibble.print_max = 4L)
```

# 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)
do.call(gridExtra::grid.arrange, c(plot(g), list(nrow = 1L)))
```

## 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)
ecr::plotFront(res\$pareto.front)
```

## Try the mcMST package in your browser

Any scripts or data that you put into this service are public.

mcMST documentation built on April 1, 2023, 12:19 a.m.