irace

Iterated Racing for Automatic Algorithm Configuration

https://github.com/mlopez-ibanez/irace

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 21 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    1 of 13 committers (7.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.6%) to scientific vocabulary

Keywords

algorithm-configuration hyperparameter-tuning irace optimization-algorithms r r-package
Last synced: 6 months ago · JSON representation

Repository

Iterated Racing for Automatic Algorithm Configuration

Basic Info
Statistics
  • Stars: 64
  • Watchers: 6
  • Forks: 16
  • Open Issues: 17
  • Releases: 0
Topics
algorithm-configuration hyperparameter-tuning irace optimization-algorithms r r-package
Created almost 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.md

irace: Iterated Racing for Automatic Algorithm Configuration

CRAN version CRAN Downloads CRAN status R build
status Codecov test coverage r-universe version r-universe build status <!-- badges: end -->

[ Homepage ] [ User Guide (PDF) ] [ Tutorial ]

Maintainers: Manuel López-Ibáñez, Leslie Pérez Cáceres

Creators: Manuel López-Ibáñez, Jérémie Dubois-Lacoste

Contributors: Jérémie Dubois-Lacoste, Thomas Stützle, Mauro Birattari, Eric Yuan and Prasanna Balaprakash.

Contact: https://groups.google.com/d/forum/irace-package


Introduction

The irace package implements the Iterated Race method, which is a generalization of the Iterated F-race method for the automatic configuration of optimization algorithms, that is, the tuning of their parameters by finding the most appropriate settings given a set of instances of an optimization problem. It builds upon the race package by Birattari and it is implemented in R.

You may also find the iraceplot package useful for analyzing the output of irace.

Keywords: automatic configuration, offline tuning, parameter tuning, racing, F-race.

Relevant literature:

  1. M. López-Ibáñez, J. Dubois-Lacoste, L. Pérez Cáceres, T. Stützle, and M. Birattari. The irace package: Iterated Racing for Automatic Algorithm Configuration. Operations Research Perspectives, 3:43–58, 2016.
    [ bibtex | doi: 10.1016/j.orp.2016.09.002 ]

  2. Leslie Perez Cáceres, Manuel López-Ibáñez, Holger Hoos, and Thomas Stützle. An Experimental Study of Adaptive Capping in irace. Learning and Intelligent Optimization. LION 2017. Lecture Notes in Computer Science, vol 10556. Springer, Cham.
    [ bibtex | doi: 10.1007/978-3-319-69404-7_17 ]

  3. Thomas Stützle and Manuel López-Ibáñez. Tutorial: Automated algorithm configuration and design. GECCO '21: Proceedings of the Genetic and Evolutionary Computation Conference Companion, July 2021. doi:10.1145/3449726.3461404

Requisites

User guide

A complete user guide comes with the package. You can access it online or, after installing the irace package, invoking from the R console the following command:

R vignette("irace-package")

The following is a quick-start guide. The user guide gives more detailed instructions.

Quick Start

  1. Install R (with your favourite package manager, and see more details below).
  2. Install irace. This command works on Bash shell (Linux and MacOS) and Powershell (Windows) with R added to PATH (see detailed instructions below). bash Rscript -e "install.packages('irace', repos='https://cloud.r-project.org')"

  3. Add irace to the PATH environment variable. This command works in Bash shell (Linux and MacOS). For Windows user, this step is unfortunately more involved, so please see more detailed instructions below. bash export PATH="$(Rscript -e "cat(paste0(system.file(package='irace', 'bin', mustWork=TRUE), ':'))" 2> /dev/null)${PATH}" Consider adding this line to your ~/.bashrc, ~/.zshrc, or ~/.profile for it to persist between sessions.

  4. You can open the user guide with the following command. This command works on Bash shell (Linux and MacOS) and and Powershell (Windows) with R added to PATH (see detailed instructions below). bash Rscript -e "vignette('irace-package')"

Installing R

The official instructions are available at https://cran.r-project.org/doc/manuals/r-release/R-admin.html. We give below a quick R installation guide that will work in most cases.

GNU/Linux

You should install R from your package manager. On a Debian/Ubuntu system, you will run in the Bash shell: bash sudo apt-get install r-base

Once R is installed, you can launch R from the Terminal and from the R prompt install the irace package. See instructions below.

OS X

You can install R directly from a CRAN mirror (https://cran.r-project.org/bin/macosx/).

Alternatively, if you use homebrew, you can just run from the Terminal (Bash shell): bash brew install --cask r

(Using brew install r is not recommended because that will build R from source and you will not be able to use any CRAN binary, possibly resulting in annoying build failures).

Once R is installed, you can launch R from the Terminal (or from your Applications), and from the R prompt install the irace package. See instructions below.

Windows

You can install R from a CRAN mirror (https://cran.r-project.org/bin/windows/). Once R is installed, you can launch the R console and install the irace package from it. See instructions below.

In addition to using the R console, it might be very useful to add R to PATH so you can run R commands in CMD or Powershell. Usually, R is installed in C:\Program Files\R\R-4.1.3 (the version number depends on your installation).

You should add the following line to PATH (if you want to use the 64-bit version) C:\Program Files\R\R-4.1.3\bin\x64

Or, if you are on a 32-bit version C:\Program Files\R\R-4.1.3\bin\i386

Installing the irace package

There are two methods for installing the irace R package on your computer:

  1. Install within R (automatic download). Run the following from the R console: R install.packages("irace", repos = "https://cloud.r-project.org") and test the installation with: R library(irace) irace_cmdline("--version") q()

  2. Manually download the package from CRAN and invoke at the Bash shell, Terminal or Powershell: bash R CMD INSTALL <package> where <package> is one of the three versions available: .tar.gz (Unix/BSD/GNU/Linux), .tgz (MacOS X), or .zip (Windows).

If the package fails to install because of insufficient permissions, you need to force a local installation by typing in the Bash shell: bash mkdir ~/R R CMD INSTALL --library=~/R irace.tar.gz export R_LIBS=~/R:${R_LIBS}

Once installed, test that it is working by typing in the R console (not in the bash shell): R library(irace) irace_cmdline("--version") cat(system.file(package="irace", "bin", mustWork=TRUE), "\n") The last command gives you the installation folder of irace, for example, /home/user/R/irace/bin.

GNU/Linux and OS X

Save the installation directory of irace to a variable, and add it to your .bash_profile, .bashrc or .profile:

bash export IRACE_HOME=/home/user/R/irace/bin/ # Path given by system.file(package="irace", "bin", mustWork=TRUE) export PATH=${IRACE_HOME}:$PATH # export R_LIBS=~/R:${R_LIBS} # Only if local installation was forced

After adding this and opening a new terminal, you should be able to invoke irace as follows:

bash irace --help

Windows

You can find out where the irace binary is installed by running the following in Powershell or CMD:

Powershell C:\> Rscript -e "cat(gsub('/', '\\\\', system.file(package='irace', 'bin', 'x64', mustWork=TRUE)))"

It will output a path, such as C:\Program Files\R\R-4.1.3\library\irace\bin\x64 (replace x64 with i386 if you are on a 32-bit system), which can you add to PATH.

Then running the following should work: Powershell C:\> irace --help

You can also launch irace by opening the R console and executing:

R library(irace) irace_cmdline("--help")

GitHub (Development version)

If you wish to try the development version, you can install it by executing the following command within the R console:

R install.packages('irace', repos = c('https://mlopez-ibanez.r-universe.dev', 'https://cloud.r-project.org'))

Python

You can use the irace R package from Python using rpy2. There are actually two different implementations of this idea: iracepy and iracepy-tiny.

Rust

You can use irace from Rust by using irace-rs.

Usage

  1. Create a directory for storing the tuning scenario setup (Bash shell): bash mkdir ./tuning cd ./tuning

  2. Initialize your tuning directory with template config files (Bash shell): bash $IRACE_HOME/bin/irace --init

  3. Modify the generated files following the instructions found within each file. In particular,

    • The scripts target-runner and target-evaluator (if you need it at all) should be executable. The output of target-runner (or target-evaluator if you use a separate evaluation step) is minimized by default. If you wish to maximize it, just multiply the value by -1 within the script.
    • In scenario.txt, uncomment and assign only the parameters for which you need a value different than the default one. For example, you may need to set trainInstancesDir="./Instances/".

    There are examples in $IRACE_HOME/examples/.

  4. Put the instances in ./tuning/Instances/. In addition, you can create a file that specifies which instances from that directory should be run and which instance-specific parameters to use. See scenario.txt and instances-list.txt for examples. The command irace will not attempt to create the execution directory (execDir), so it must exist before calling irace. The default execDir is the current directory.

  5. Calling the command in the Bash shell: bash cd ./tuning/ && $IRACE_HOME/bin/irace performs one run of Iterated Race. See the output of irace --help for additional irace parameters. Command-line parameters override the scenario setup specified in the scenario.txt file.

Many tuning runs in parallel

For executing several repetitions of irace in parallel, call the program parallel-irace from the Bash shell:

bash cd ./tuning/ && $IRACE_HOME/bin/parallel-irace N

where N is the number of repetitions. By default, the execution directory of each run of irace will be set to ./execdir-dd, where dd is a number padded with zeroes.

Be careful, parallel-irace will create these directories from scratch, deleting them first if they already exist.

Check the help of parallel-irace by running it without parameters.

Parallelize one tuning

A single run of irace can be done much faster by executing the calls to targetRunner (the runs of the algorithm being tuned) in parallel. See the user guide for the details.

License

irace is Copyright (C) 2010-2020 Manuel López-Ibáñez, Jérémie Dubois-Lacoste and Leslie Pérez-Cáceres.

This program is free software (software libre); you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

IMPORTANT NOTE: Please be aware that the fact that this program is released as Free Software does not excuse you from scientific propriety, which obligates you to give appropriate credit! If you write a scientific paper describing research that made substantive use of this program, it is your obligation as a scientist to (a) mention the fashion in which this software was used in the Methods section; (b) mention the algorithm in the References section. The appropriate citation is:

The irace package uses code under the GPL from the race package is Copyright (C) 2003 Mauro Birattari.

Building an irace standalone container

Thanks to Singularity, you can build a standalone container of irace using the file irace.sindef which is available in the directory inst/ in the source tarball and github repository or, after installing the irace R package, in the installation directory given by the R expression system.file(package="irace"). After installing SingularityCE, the container may be build using:

sudo singularity build irace.sindef irace.sif

and run with:

singularity run irace.sif <arguments>

Frequently Asked Questions

The user guide contains a list of frequently asked questions.

Owner

  • Name: Manuel López-Ibáñez
  • Login: MLopez-Ibanez
  • Kind: user

GitHub Events

Total
  • Issues event: 29
  • Watch event: 7
  • Issue comment event: 69
  • Push event: 173
  • Pull request event: 2
  • Fork event: 2
  • Create event: 2
Last Year
  • Issues event: 29
  • Watch event: 7
  • Issue comment event: 69
  • Push event: 173
  • Pull request event: 2
  • Fork event: 2
  • Create event: 2

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 2,112
  • Total Committers: 13
  • Avg Commits per committer: 162.462
  • Development Distribution Score (DDS): 0.054
Past Year
  • Commits: 206
  • Committers: 2
  • Avg Commits per committer: 103.0
  • Development Distribution Score (DDS): 0.024
Top Committers
Name Email Commits
MLopez-Ibanez 2****z 1,999
leslieperez 9****z 36
binaryFate 1****e 32
GitHub Actions a****s@g****m 18
Deyao Chen c****0@g****m 8
sbomsdorf 8****f 5
albertofranzin a****n@g****m 4
yuan y****n 4
Jonathan Wurth j****h@u****e 2
Johann Dreo j****n@d****r 1
Filippo Bistaffa f****a@g****m 1
mascia m****a 1
leslieperez l****z@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 65
  • Total pull requests: 18
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 22
  • Total pull request authors: 6
  • Average comments per issue: 3.0
  • Average comments per pull request: 4.11
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 11
  • Pull requests: 2
  • Average time to close issues: 23 days
  • Average time to close pull requests: 2 days
  • Issue authors: 8
  • Pull request authors: 2
  • Average comments per issue: 4.18
  • Average comments per pull request: 2.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • MLopez-Ibanez (25)
  • DE0CH (10)
  • jyotiTec (4)
  • TheIronBorn (3)
  • Saethox (3)
  • nojhan (3)
  • ThomasF59 (2)
  • be-marc (2)
  • rickboks (1)
  • gutodelazeri (1)
  • rmartinsanta (1)
  • ivarsdzalbs (1)
  • camillamelo (1)
  • ndangtt (1)
  • ceandrade (1)
Pull Request Authors
  • DE0CH (12)
  • sbomsdorf (2)
  • Saethox (2)
  • ivan1arriola (2)
  • jdreo (1)
  • filippobistaffa (1)
Top Labels
Issue Labels
help wanted (18) enhancement (16) good first issue (9) bug (6) waiting for info (5) question (2) postselection (2)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • cran 1,961 last-month
  • Total docker downloads: 24,154
  • Total dependent packages: 6
    (may contain duplicates)
  • Total dependent repositories: 16
    (may contain duplicates)
  • Total versions: 27
  • Total maintainers: 1
cran.r-project.org: irace

Iterated Racing for Automatic Algorithm Configuration

  • Versions: 23
  • Dependent Packages: 6
  • Dependent Repositories: 16
  • Downloads: 1,961 Last month
  • Docker Downloads: 24,154
Rankings
Forks count: 5.5%
Stargazers count: 7.0%
Dependent packages count: 7.1%
Dependent repos count: 7.2%
Average: 7.4%
Docker downloads count: 7.4%
Downloads: 10.4%
Last synced: 6 months ago
conda-forge.org: r-irace
  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.0%
Average: 42.6%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

DESCRIPTION cran
  • R >= 3.2.0 depends
  • R6 * imports
  • compiler * imports
  • stats * imports
  • utils * imports
  • ParamHelpers * suggests
  • Rmpi >= 0.6.0 suggests
  • covr * suggests
  • devtools * suggests
  • knitr * suggests
  • mlr >= 2.15.0 suggests
  • parallel * suggests
  • testthat * suggests
  • withr * suggests
.github/workflows/R-CMD-check.yaml actions
  • actions/checkout v3 composite
  • actions/checkout v2 composite
  • actions/upload-artifact main composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
  • r-lib/actions/setup-tinytex v2 composite
Dockerfile docker
  • debian bullseye build
GenericWrapper4AC/setup.py pypi