Nothing
## ---- eval = FALSE------------------------------------------------------------
# suppressPackageStartupMessages(library(irace))
# suppressPackageStartupMessages(library(parallel))
# suppressPackageStartupMessages(library(smoof))
# suppressPackageStartupMessages(library(MOEADr))
#
# scenario <- irace::defaultScenario()
# scenario$seed <- 123456 # Seed for the experiment
# scenario$targetRunner <- "target.runner" # Runner function (def. below)
# scenario$forbiddenFile <- "../inst/extdata/forbidden.txt" # forbidden configs
# scenario$debugLevel <- 1
# scenario$maxExperiments <- 20000 # Tuning budget
# scenario$testNbElites <- 7 # test all final elite configurations
#
# # Number of cores to be used by irace (set with caution!)
# nc <- parallel::detectCores() - 1
# scenario$parallel <- nc
#
# # Read tunable parameter list from file
# parameters <- readParameters("../inst/extdata/parameters.txt")
## ---- eval = FALSE------------------------------------------------------------
# #===============
# ### Build training instances
# fname <- paste0("UF_", 1:10)
# dims <- c(20:29,
# 31:39,
# 41:49,
# 51:60)
#
# allfuns <- expand.grid(fname, dims, stringsAsFactors = FALSE)
# scenario$instances <- paste0(allfuns[,1], "_", allfuns[,2])
#
# for (i in 1:nrow(allfuns)){
# assign(x = scenario$instances[i],
# value = make_vectorized_smoof(prob.name = "UF",
# dimensions = allfuns[i, 2],
# id = as.numeric(strsplit(allfuns[i, 1], "_")
# [[1]][2]))) }
#
# ### Build test instances
# dims <- c(30, 40, 50)
# allfuns <- expand.grid(fname, dims, stringsAsFactors = FALSE)
# scenario$testInstances <- paste0(allfuns[,1], "_", allfuns[,2])
#
# for (i in 1:nrow(allfuns)){
# assign(x = scenario$testInstances[i],
# value = make_vectorized_smoof(prob.name = "UF",
# dimensions = allfuns[i, 2],
# id = as.numeric(strsplit(allfuns[i, 1], "_")
# [[1]][2]))) }
## ---- eval = FALSE------------------------------------------------------------
# target.runner <- function(experiment, scenario){
# force(experiment)
# conf <- experiment$configuration
# inst <- experiment$instance
#
# # Assemble moead input lists
# ## 1. Problem
# fdef <- unlist(strsplit(inst, split = "_"))
# uffun <- smoof::makeUFFunction(dimensions = as.numeric(fdef[3]),
# id = as.numeric(fdef[2]))
# fattr <- attr(uffun, "par.set")
# problem <- list(name = inst,
# xmin = fattr$pars$x$lower,
# xmax = fattr$pars$x$upper,
# m = attr(uffun, "n.objectives"))
#
# ## 2. Decomp
# decomp <- list(name = conf$decomp.name)
# if (problem$m == 2){ # <-- 2 objectives
# if(decomp$name == "SLD") decomp$H <- 99 # <-- yields N = 100
# if(decomp$name == "Uniform") decomp$N <- 100
# } else { # <-- 3 objectives
# if(decomp$name == "SLD") decomp$H <- 16 # <-- yields N = 153
# if(decomp$name == "Uniform") decomp$N <- 150
# }
#
# ## 3. Neighbors
# neighbors <- list(name = conf$neighbor.name,
# T = conf$T,
# delta.p = conf$delta.p)
#
# ## 4. Aggfun
# aggfun <- list(name = conf$aggfun.name)
# if (aggfun$name == "PBI") aggfun$theta <- conf$aggfun.theta
#
# ## 5. Update
# update <- list(name = conf$update.name,
# UseArchive = conf$UseArchive)
# if (update$name != "standard") update$nr <- conf$nr
# if (update$name == "best") update$Tr <- conf$Tr
#
# ## 6. Scaling
# scaling <- list(name = "simple")
#
# ## 7. Constraint
# constraint<- list(name = "none")
#
# ## 8. Stop criterion
# stopcrit <- list(list(name = "maxeval",
# maxeval = 100000))
#
# ## 9. Echoing
# showpars <- list(show.iters = "none")
#
# ## 10. Variation stack
# variation <- list(list(name = conf$varop1),
# list(name = conf$varop2),
# list(name = conf$varop3),
# list(name = conf$varop4),
# list(name = "truncate"))
#
# for (i in seq_along(variation)){
# if (variation[[i]]$name == "binrec") {
# variation[[i]]$rho <- get(paste0("binrec.rho", i), conf)
# }
# if (variation[[i]]$name == "diffmut") {
# variation[[i]]$basis <- get(paste0("diffmut.basis", i), conf)
# variation[[i]]$Phi <- NULL
# }
# if (variation[[i]]$name == "polymut") {
# variation[[i]]$etam <- get(paste0("polymut.eta", i), conf)
# variation[[i]]$pm <- get(paste0("polymut.pm", i), conf)
# }
# if (variation[[i]]$name == "sbx") {
# variation[[i]]$etax <- get(paste0("sbx.eta", i), conf)
# variation[[i]]$pc <- get(paste0("sbx.pc", i), conf)
# }
# if (variation[[i]]$name == "localsearch") {
# variation[[i]]$type <- conf$ls.type
# variation[[i]]$gamma.ls <- conf$gamma.ls
# }
# }
#
# ## 11. Seed
# seed <- conf$seed
#
# # Run MOEA/D
# out <- moead(preset = NULL,
# problem, decomp, aggfun, neighbors, variation, update,
# constraint, scaling, stopcrit, showpars, seed)
#
# # return IGD based on reference data
# Yref <- as.matrix(read.table(paste0("../inst/extdata/pf_data/",
# fdef[1], fdef[2], ".dat")))
# return(list(cost = calcIGD(Y = out$Y, Yref = Yref)))
# }
## ---- eval = FALSE------------------------------------------------------------
# ## Running the experiment
# irace.output <- irace::irace(scenario, parameters)
# saveRDS(irace.output, "../inst/extdata/RESULTS.rds")
# file.copy(from = "irace.Rdata", to = "../inst/extdata/irace-tuning.Rdata")
#
#
# ## Test returned configurations on test instances
# testing.main(logFile = "../inst/extdata/irace-tuning.Rdata")
# file.copy(from = "irace.Rdata", to = "../inst/extdata/irace-testing.Rdata")
## ---- reshape2, ggplot2, echo = FALSE, fig.width = 7, fig.height = 3----------
### Loading results
load("../inst/extdata/irace-testing.Rdata")
### Precondition results
results <- iraceResults$testing$experiments
res.df <- data.frame(do.call(rbind, strsplit(rownames(results), "_")),
results,
stringsAsFactors = FALSE)[, -1]
colnames(res.df) <- c("Problem", "Dimension", 1:(ncol(res.df)-2))
res.df$Problem <- sprintf("%02d", as.numeric(res.df$Problem))
res.df$Objectives <- ifelse(res.df$Problem %in% c("08", "09", "10"),
yes = "3 obj",
no = "2 obj")
res.df$Dimension <- paste0("Dim = ", res.df$Dimension)
require(reshape2)
res.df <- reshape2::melt(res.df, value.name = "IGD")
names(res.df)[4] <- "Configuration"
## Plot resulting IGD of best configurations returned, by problem and dimension
require(ggplot2)
ml2 <- ggplot2::theme(axis.title = ggplot2::element_text(size = 18),
axis.text = ggplot2::element_text(size = 10),
legend.text = ggplot2::element_text(size = 18))
mp <- ggplot2::ggplot(res.df, ggplot2::aes(x = Problem,
y = IGD,
colour = Configuration,
group = Configuration))
mp +
ggplot2::geom_boxplot(ggplot2::aes(fill = NULL,
colour = NULL,
group = Problem),
alpha = 0.6,
lwd = 0.1) +
ggplot2::geom_point() + ggplot2::geom_line() + ggplot2::facet_grid(.~Dimension) + ml2
## ---- ggplot2, echo = FALSE, fig.width = 7, fig.height = 7--------------------
## Plot relevant parameter frequency:
### Select output "elite" variables
indx <- iraceResults$allElites[[length(iraceResults$allElites)]]
finalConfs <- iraceResults$allConfigurations[indx,]
### change internal structure of "parameters" to allow using function
### irace::parameterFrequency()
mypars <- iraceResults$parameters
mypars$names <- c("T", "delta.p", "binrec.rho2", "binrec.rho3")
mypars$nbVariable <- 4
### Plot (install from https://github.com/auto-optimization/iraceplot to generate plot)
# iraceplot::parameterFrequency(finalConfs, mypars, cols = 2)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.