{"id":16275318,"url":"https://github.com/jakobbossek/mcmst","last_synced_at":"2025-03-20T01:30:57.387Z","repository":{"id":56937435,"uuid":"96212733","full_name":"jakobbossek/mcMST","owner":"jakobbossek","description":"Algorithms to solve the multi-criteria minimum spanning tree problem (mcMST) in R","archived":false,"fork":false,"pushed_at":"2023-03-13T18:52:00.000Z","size":2115,"stargazers_count":4,"open_issues_count":14,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-23T01:58:54.024Z","etag":null,"topics":["cran","evolutionary-algorithms","mcmst","minimum-spanning-trees","multi-objective-optimization","r","spanningtrees"],"latest_commit_sha":null,"homepage":"","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakobbossek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-04T11:51:54.000Z","updated_at":"2024-07-18T22:28:27.000Z","dependencies_parsed_at":"2022-08-21T07:20:33.516Z","dependency_job_id":null,"html_url":"https://github.com/jakobbossek/mcMST","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobbossek%2FmcMST","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobbossek%2FmcMST/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobbossek%2FmcMST/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobbossek%2FmcMST/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakobbossek","download_url":"https://codeload.github.com/jakobbossek/mcMST/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219865974,"owners_count":16555917,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cran","evolutionary-algorithms","mcmst","minimum-spanning-trees","multi-objective-optimization","r","spanningtrees"],"created_at":"2024-10-10T18:33:01.662Z","updated_at":"2024-10-10T18:33:01.745Z","avatar_url":"https://github.com/jakobbossek.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mcMST: A Toolbox for the Multi-Criteria Minimum Spanning Tree Problem\n\n[![DOI](http://joss.theoj.org/papers/10.21105/joss.00374/status.svg)](https://doi.org/10.21105/joss.00374)\n[![CRAN Status Badge](http://www.r-pkg.org/badges/version/mcMST)](https://cran.r-project.org/package=mcMST)\n[![CRAN Downloads](http://cranlogs.r-pkg.org/badges/mcMST)](https://cran.r-project.org/package=mcMST)\n[![CRAN Downloads](http://cranlogs.r-pkg.org/badges/grand-total/mcMST?color=orange)](https://cran.r-project.org/package=mcMST)\n[![R-CMD-check](https://github.com/jakobbossek/smoof/workflows/R-CMD-check/badge.svg)](https://github.com/jakobbossek/mcMST/actions)\n[![Coverage Status](https://coveralls.io/repos/github/jakobbossek/mcMST/badge.svg?branch=master)](https://coveralls.io/github/jakobbossek/mcMST?branch=master)\n\n## Introduction\n\nIt is well known, that the single-objective spanning tree problem (MST) is solvable in polynomial time, e.g., by the Prim's algorithm. However, in real-world applications, e.g., in network design, often multiple conflicting objectives have to be considered simultaneously. The multi-criteria version of the MST is NP-hard. The **mcMST** package for the [R](https://www.r-project.org) programming language contains several methods for solving the multi-criteria spanning tree problem (mcMST).\n\nKey features of the **mcMST** package are:\n\n* A multi-objective version of Prim's algorithm.\n* Evolutionary multi-objective algorithms (based on the Prüfer-encoding or  direct edge list representation) with several mutation operators.\n* A modular approach for benchmark problem generation (**outsourced to R package [grapherator](https://github.com/jakobbossek/grapherator)**.)\n\n## Example\n\nHere we first generate a bi-criteria graph problem with n = 25 nodes with [grapherator](https://github.com/jakobbossek/grapherator). The first objective is the Euclidean distance of node coordinates in the euclidean plane [0, 10] x [0, 10]. The second objective follows a normal distribution (N(5, 1.5)). \n```r\nlibrary(grapherator)\nset.seed(1)\ng = graph(lower = 0, upper = 100)\ng = addNodes(g, n = 25, generator = addNodesUniform)\ng = addEdges(g, generator = addEdgesDelauney)\ng = addWeights(g, generator = addWeightsDistance, method = \"euclidean\")\ng = addWeights(g, generator = addWeightsRandom, method = rnorm, mean = 5, sd = 1.5)\nprint(g)\n```\n\nNext, we apply the multi-objective evolutionary algorithm proposed by Bossek \u0026 Grimme with population size `mu = 10` and number of offspring `lambda = 10` for `max.iter = 100` generations.\n```r\nlibrary(ggplot2)\nres = mcMSTEmoaBG(g, mu = 30L, max.iter = 300L)\necr::plotFront(res$pareto.front)\n```\nSee the package vignettes for more details.\n\n## Installation Instructions\n\nInstall the [CRAN](https://cran.r-project.org) release version via:\n```r\ninstall.packages(\"mcMST\")\n```\nIf you are interested in trying out and playing around with the current development version use the [devtools](https://github.com/r-lib/devtools) package and install directly from GitHub:\n\n```r\ninstall.packages(\"devtools\", dependencies = TRUE)\ndevtools::install_github(\"jakobbossek/mcMST\")\n```\n\n## Contributing to mcMST\n\nIf you encounter problems using this software, e.g., bugs or insufficient/misleading documentation, or you simply have a question, feel free to open an issue in the [issue tracker](https://github.com/jakobbossek/mcMST/issues).\nIn order to reproduce potential problems, please provide a minimal and reproducible code example.\n\nContributions to this software package are welcome via [pull requests](https://help.github.com/articles/about-pull-requests/) and will be merged at the sole discretion of the author. \n\n## Publications\n\nThe following publications are strongly related to the package.\n\nBossek, J., \u0026 Grimme, C. (2017). A Pareto-Beneficial Sub-Tree Mutation for the Multi-Criteria Minimum Spanning Tree Problem. In Proceedings of the IEEE Symposium Series on Computational Intelligence, Honolulu, Hawai.\n\nBossek, J. (2017). mcMST: A Toolbox for the Multi-Criteria Minimum Spanning Tree Problem. The Journal of Open Source Software, 2017.\n\n## Related work\n\nThe following packages provide methods to solve the __single-objective__ MST problem:\n\n* [vegan: Community Ecology Package](https://cran.r-project.org/package=vegan)\n* [igraph: Network Analysis and Visualization](https://cran.r-project.org/package=igraph)\n\nSeveral packages implement methods to solve multi-criteria optimization problems in general:\n\n* [ecr: Evolutionary Computation in R](https://cran.r-project.org/package=ecr)\n* [mopsocd: Multi-Objective Particle Swarm Optimization with Crowding Distance](https://cran.r-project.org/package=mopsocd)\n* [moko: Multi-Objective Kriging Optimization](https://cran.r-project.org/package=moko)\n* [mco: Multiple Criteria Optimization Algorithms and Related Functions](https://cran.r-project.org/package=mco)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakobbossek%2Fmcmst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakobbossek%2Fmcmst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakobbossek%2Fmcmst/lists"}