-
Notifications
You must be signed in to change notification settings - Fork 2
/
ReadMe.Rmd
157 lines (111 loc) · 5.73 KB
/
ReadMe.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
---
output:
github_document:
html_preview: true
editor_options:
chunk_output_type: console
---
```{r, include=FALSE}
library(MOrepoTools)
library(bibtex)
library(kableExtra)
knitr::opts_chunk$set(opts=list(blank=FALSE, width.cutoff=120), cache = FALSE,
autodep = TRUE, collapse=TRUE, error = FALSE)
knitr::opts_knit$set(width = 90)
```
```{r How to update the repo (done using GitHub actions), eval=FALSE, echo=FALSE}
MOrepoTools:::setMetaContributions()
for(i in 1:10){
try({
r <- MOrepoTools:::setMetaInstances()
break
}, silent = FALSE)
}
for(i in 1:10){
try({
r <- MOrepoTools:::setMetaResults()
break
}, silent = FALSE)
}
```
# Multi-Objective Optimization Repository (MOrepo)
This repository is a response to the needs of researchers from the MCDM society to access multi-objective (MO) optimization instances. The repository contains instances, results, generators etc. for different MO problems and is continuously updated. The repository can be used as a test set for testing new algorithms, validating existing results and for reproducibility. All researchers within MO optimization are welcome to contribute.
The repository consists of a main repository [`MOrepo`](https://github.com/MCDMSociety/MOrepo) at GitHub and a set of sub-repositories, one for each contribution. Sub-repositories are named `MOrepo-<name>` where `name` normally is the surname of the first author and year of the study. All repositories are located within the [`MCDMSociety`](https://github.com/MCDMSociety/) organization at GitHub.
The main repository contains documentation about how to use and contribute to `MOrepo`. Moreover, a set of tools are given in the R package `MOrepoTools` which can be used to retrieve info about test instance groups, results and problem classes.
Maintainers of `MOrepo` are Lars Relund Nielsen <[email protected]> and Sune Gadegaard <[email protected]>.
Current maintainers of sub-repositories are `r vec2String(getMaintainers())`.
Current contributors to the repository are `r vec2String(getContributorNames())`.
## Usage
Instances can be downloaded in different ways depending on usage:
- If you want a whole sub-repository, download it as a zip file or clone it on GitHub.
- Browse to a single instance and download it using the raw format at GitHub.
- Use the R package `MOrepoTools` to download instances.
All researchers are welcome to contribute to `MOrepo`. The repository mainly contains MO test instances and results from various sources. However, also generators, format converters, algorithms etc. related to MO optimization are welcome. Have a look at the [contribute file](contribute.md) which describes different ways to do it.
## Test instances @ MOrepo
```{r, include=FALSE}
dat <- getProblemClasses()
```
MOrepo contains instances for different problem classes. The contributions listed after class are:
```{r, results='asis', echo=FALSE, tidy=FALSE}
tab <- tibble::tibble("Problem class" = NA_character_, "Repository" = NA_character_, .rows = 0)
for (i in dat) {
res <- getInstanceInfo(class = i, silent = TRUE)
repo <- stringr::str_c("[", purrr::map_chr(res, function(x) x$contributionName), "]")
url <- stringr::str_c("(", "https://github.com/MCDMSociety/MOrepo-", names(res), ")")
str <- stringr::str_c(repo, url, collapse = ", ")
tab <- dplyr::bind_rows(tab, c(`Problem class` = i, Repository = str))
}
kbl(tab, format = "pipe")
```
### Detailed information
MOrepo contains instances for problem classes `r vec2String(dat)`. A detailed description of the contributions are:
```{r, results='asis', echo=FALSE, tidy=FALSE}
getInstanceInfo(withLinks = TRUE)
```
## Results @ MOrepo
MOrepo contains results for some of the instances in problem classes:
```{r, include=FALSE}
dat <- getProblemClasses(results = TRUE)
```
```{r, results='asis', echo=FALSE, tidy=FALSE}
tab <- tibble::tibble("Problem class" = NA_character_, "Repository" = NA_character_, .rows = 0)
for (i in dat) {
res <- getResultInfo(class = i, silent = TRUE)
repo <- stringr::str_c("[", purrr::map_chr(res, function(x) x$contributionName), "]")
url <- stringr::str_c("(", "https://github.com/MCDMSociety/MOrepo-", names(res), ")")
str <- stringr::str_c(repo, url, collapse = ", ")
tab <- dplyr::bind_rows(tab, c(`Problem class` = i, Repository = str))
}
kbl(tab, format = "pipe")
```
### Detailed information
MOrepo contains results for some of the instances in problem classes `r vec2String(dat)`. The contributions are:
```{r, results='asis', echo=FALSE, tidy=FALSE}
getResultInfo(withLinks = TRUE)
```
## How to cite
To cite use
```
@Electronic{MOrepo,
Title = {Multi-Objective Optimization Repository (MOrepo)},
Author = {L. R. Nielsen},
Url = {https://github.com/MCDMSociety/MOrepo},
Year = {2017}
}
```
## Use the R to download instances.
You may use the R package `MOrepoTools` to download instances. You don't need much knowledge about R to use the package. But of course it is preferable. You need [R](https://www.r-project.org/) and preferable [RStudio](https://www.rstudio.com/) installed on your computer. First you have to install the `MOrepoTools` package. From the R command line write:
```{r, eval=FALSE}
library(devtools) # if the package is missing see ?install.package
install_github("MCDMSociety/MOrepo/misc/R/MOrepoTools")
```
To get an overview over the current problem classes run:
```{r}
library(MOrepoTools)
getProblemClasses() # current problem classes in MOrepo
getInstanceInfo(class = "Assignment") # info about instances for the assignment problem
```
Now download the Tuyttens00 contribution as a zip file using
```{r, cache=TRUE}
getContributionAsZip("Tuyttens00")
```