## irace 3.5.1

### New features and improvements

• Ablation will report configurations that produced the same results, which points to parameter values that have the same effect on the target algorithm, possibly indicating a bug in the target algorithm.

• New option instancesFile of ablation() for using either the training instances, the test instances or reading instances from a given file.

• Adaptive capping is now enabled by default if maxTime > 0 and maxBound > 0. It can be disabled with --capping 0 or capping=0. See https://iridia-ulb.github.io/references/#PerLopHooStu2017:lion for details. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• Matrix operations are faster thanks to matrixStats. (Manuel López-Ibáñez)

• The scenario option targetRunnerLauncherArgs, introduced in version 3.5, was removed and replaced by targetCmdline, which is more flexible (Fixes #38). Please see the user-guide for details. (Manuel López-Ibáñez)

• New scenario option blockSize for defining blocks of instances. Configurations are only eliminated after evaluating a complete block and never in the middle of a block. This is useful for scenarios when there are clearly defined instance classes and the best configuration should be balanced among them. In that case, trainInstancesFile should be written should that each block should contain one instance of each class and blockSize should be set to the number of classes. (Manuel López-Ibáñez)

• plotAblation() has a new option type='rank' to plot ranks per instance instead of raw cost values. (Manuel López-Ibáñez)

### Fixes

• Fix (#44): irace now will give an error if the domain of real-valued (r) parameters would change depending on the value of 'digits'. The solution is to increase the value of 'digits' or adjust the domain. (Manuel López-Ibáñez, reported by @mb706)

• Fix problem with n_instances in ablation_cmdline(). (Manuel López-Ibáñez)

## irace 3.5

CRAN release: 2022-10-23

### New features and improvements

• Handling of dependent parameter domains: These should be specified in the parameter domain definition and, for now, only numerical parameter can define dependent domains. A numerical domain can be dependent on one bound, e.g. (1, "param1*2"), where the dependent bound can include basic arithmetic operators. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• The package now provides an ablation executable (ablation.exe in Windows) that makes easier to perform ablation analysis without having any R knowledge.

• The interface to functions ablation() and plotAblation() has been simplified. The ablation() function now allows overriding scenario settings. The plotAblation() function will not create the plot if the ablation log does not contain a complete ablation. (Manuel López-Ibáñez)

• The argument n.instances of ablation() has been renamed to n_instances and it is now a factor that multiplies scenario$firstTest. (Manuel López-Ibáñez) • New command-line option --quiet to run without producing any output except errors (also available as a scenario option). (Manuel López-Ibáñez) • New command-line option --init to initialize a scenario. (Deyao Chen) • Added support for HTCondor cluster framework to --batchmode. (Filippo Bistaffa) • --check now also check the contents of configurationsFile and runs configurations provided via initConfigurations. (Manuel López-Ibáñez, reported by Andreea Avramescu) • New scenario options targetRunnerLauncher and targetRunnerLauncherArgs to help in cases where the target-runner must be invoked via another software with particular options (such as python.exe in Windows). (Manuel López-Ibáñez) • New scenario option minMeasurableTime. (Manuel López-Ibáñez) • An error is produced if a variable set in the scenario file is not known to irace. If your scenario file contains R code, then use variable names beginning with a dot '.', which will be ignored by irace. (Manuel López-Ibáñez) • Plotting functions have been moved to the new package iraceplot. In particular, configurationsBoxplot() is replaced by iraceplot::boxplot_training() and iraceplot::boxplot_test(); parallelCoordinatesPlot() is replaced by iraceplot::parallel_cat() and iraceplot::parallel_coord(); and parameterFrequency() is replaced by iraceplot::sampling_frequency(). (Leslie Pérez Cáceres, Manuel López-Ibáñez) • The user-guide now contains a detailed section on “Hyper-parameter optimization of machine learning methods”. (Manuel López-Ibáñez) • When testType="F-test" and only two configurations remain, the elimination test now uses the pseudo-median estimated by the Wilcoxon signed-rank test to decide which configuration is the best one instead of comparing the median difference. (Manuel López-Ibáñez) • New functions testing_fromlog() and testing_fromfile() for independently executing the testing phase. The function testing.main() was removed as it is superseded by the new ones. (Manuel López-Ibáñez) • New function read_logfile() to easily read the log file produced by irace. (Manuel López-Ibáñez) • New function printParameters() that prints a parameters R object as a valid input text. (Manuel López-Ibáñez) • irace2pyimp moved to its own R package. (Manuel López-Ibáñez) • Generating the file irace.Rdata may be disabled by setting logFile="". (Manuel López-Ibáñez, reported by Johann Dreo) • path_rel2abs() and checkParameters() are now exported so that other packages may use them. (Manuel López-Ibáñez) • path_rel2abs() also searches in system paths. (Manuel López-Ibáñez) • readConfigurationsFile() will now detect duplicated configurations and error. (Manuel López-Ibáñez) • The interface to functions getFinalElites(), getConfigurationById() and getConfigurationByIteration() has been simplified. • The package provides a irace.sindef file that may be used for building a standalone container of irace using Singularity. See the README.md file for instructions. (Contributed by Johann Dreo) • New example examples/target-runner-python/target-runner-python-win.bat contributed by Levi Ribeiro. • New helper script in bin/parallel-irace-slurm to launch irace in SLURM computer clusters. (Manuel López-Ibáñez) • Rename scenario.update.paths() to scenario_update_paths(). The old name is deprecated. (Manuel López-Ibáñez) ### Fixes • Correctly handle clear out-performance cases despite strong bi-modality. (Reported by Nguyen Dang, fixed by Manuel López-Ibáñez) • Fix error when recovering from a parallel run on Windows. (Manuel López-Ibáñez, reported by Tarek Gamal) • testNbElites now controls how many iteration elites are tested when testIterationElites=1. This is the documented behavior in the user guide. (Manuel López-Ibáñez, reported by Marcelo de Souza) • Fixes to the Matlab example. (Manuel López-Ibáñez) • The default of testType is now set to t-test when capping is enabled. (Manuel López-Ibáñez, reported by Jovana Radjenovic) • Fix various issues in the user guide. (Manuel López-Ibáñez, reported by Jovana Radjenovic) • Remove duplicated elites. (Manuel López-Ibáñez, reported by Federico Naldini) • Fix (#7): warnings with partial matched parameters. (Manuel López-Ibáñez, reported by Marc Becker) • Fix (#10): wrong assert with elitist=0. (Manuel López-Ibáñez) • Fix (#12): irace can be run with FastR. • Fix (#13): Maximum number configurations immediately rejected reached. (Manuel López-Ibáñez) • Fix: when setting the scenario file in the command-line, scenarioFile was not set correctly. The correct scenario was used, however, the debug output and the value stored in the log / recovery file was wrong. (Manuel López-Ibáñez, reported by Richard Schoonhoven) • With sampleInstances = FALSE, elitist irace does not change the order of instances already seen. However, if you want to make sure that the order of the instances is enforced, you also need to set elitistNewInstances=0. • The function irace.usage() was removed. It was not really useful for R users as the same result can be obtained by calling irace.cmdline("--help"). (Manuel López-Ibáñez) ## irace 3.4.1 (31/03/2020) CRAN release: 2020-03-31 • NEWS converted to markdown. • Fix CRAN error on Solaris. ## irace 3.4 (30/03/2020) CRAN release: 2020-03-30 • irace2pyimp function and executable (irace2pyimp.exe on Windows) to convert .Rdata files generated by irace to the input files required by the parameter importance analysis tool PyImp (https://github.com/automl/ParameterImportance). (Nguyen Dang, Manuel López-Ibáñez) • Initial configurations may also be provided directly in R using scenario$initConfigurations (Manuel López-Ibáñez)

• Rdata files are saved in version 2 to keep compatibility with older R versions. (Manuel López-Ibáñez)

• Fix invalid assert with ordered parameters: (Leslie Pérez Cáceres)

value >= 1L && value <= length(possibleValues) is not TRUE
• The irace executable (irace.exe on Windows) is a compiled binary instead of a script. On Windows, irace.exe replaces irace.bat (Manuel López-Ibáñez)

• inst/examples/Spear contains the Spear (SAT solver) configuration scenario. (Manuel López-Ibáñez)

• Fixed bug when reporting minimum maxTime required. (Reported by Luciana Salete Buriol, fixed by Manuel López-Ibáñez)

• Fixed bug detected by assert:

## irace 2.2

CRAN release: 2017-03-24

• Command-line parameters are printed to stdout (useful for future replications). (Manuel López-Ibáñez, suggested by Markus Wagner)

• Users may provide a function to repair configurations before being evaluated. See the scenario variable repairConfiguration. (Manuel López-Ibáñez)

• The option --sge-cluster (sgeCluster) was removed and replaced by --batchmode (batchmode). It is now the responsibility of the target-runner to parse the output of the batch job submission command (e.g., qsub or squeue), and return just the job ID. Values supported are: “sge”, “torque”, “pbs” and “slurm”. (Manuel López-Ibáñez)

• The option --parallel can now be combined with --batchmode to limit the number of jobs submitted by irace at once. This may be useful in batch clusters that have a small queue of jobs. (Manuel López-Ibáñez)

• New examples under inst/examples/batchmode-cluster/. (Manuel López-Ibáñez)

• It is now possible to include scenario definition files from other scenario files by using:


eval.parent(source("scenario-common.txt", chdir = TRUE, local = TRUE))

This feature is VERY experimental and the syntax is likely to change in the future. (Manuel López-Ibáñez)

• Fix a bug that re-executed elite results under some circumstances. (Leslie Pérez Cáceres)

• Restrict the number of maximum configurations per race to 1024. (Leslie Pérez Cáceres)

• Do not warn if the last line in the instance file does not terminate with a newline. (Manuel López-Ibáñez)

• Fix bug when deterministic == 1. (Manuel López-Ibáñez, Leslie Pérez Cáceres)

• Update manual and vignette with details about the expected arguments and return value of targetRunner and targetEvaluator. (Manuel López-Ibáñez)

• Many updates to the User Guide vignette. (Manuel López-Ibáñez)

• Fix \dontrun example in irace-package.Rd (Manuel López-Ibáñez)

• Fix bug: If testInstances contains duplicates, results of testing are not correctly saved in iraceResults$testing$experiments nor reported correctly at the end of a run. Now unique IDs of the form 1t, 2t, ... are used for each testing instance. These IDs are used for the rownames of iraceResults$testing$experiments and the names of the scenario$testInstances and iraceResults$testing$seeds vectors. (Manuel López-Ibáñez) • Fix bug where irace keeps retrying the target-runner call even if it succeeds. (Manuel López-Ibáñez) • New command-line parameter  --only-test FILE which just evaluates the configurations given in FILE on the testing instances defined by the scenario. Useful if you decide on the testing instances only after running irace. (Manuel López-Ibáñez) • Bugfix: When using maxTime != 0, the number of experiments performed may be miscounted in some cases. (Manuel López-Ibáñez) ## irace 2.1 CRAN release: 2016-10-18 • Fix CRAN errors in tests. (Manuel López-Ibáñez) • Avoid generating too many configurations at once if the initial time estimation is too small. (Manuel López-Ibáñez) ## irace 2.0 CRAN release: 2016-10-08 • Minimum R version is 2.15. • Elitist irace by default, it can be disabled with parameter --elitist 0. (Leslie Pérez Cáceres, Manuel López-Ibáñez) • The parameter --test-type gains two additional values: (Manuel López-Ibáñez) • t-test-bonferroni (t-test with Bonferroni’s correction for multiple comparisons), • t-test-holm (t-test with Holm’s correction for multiple comparisons) • MPI does not create log files with --debug-level 0. (Manuel López-Ibáñez) • For simplicity, the parallel-irace-* scripts do not use an auxiliary tune-main script. For customizing them, make a copy and edit them directly. (Manuel López-Ibáñez) • New parameters: (Manuel López-Ibáñez) --target-runner-retries : Retry target-runner this many times in case of error. • We print diversity measures after evaluating on each instance: (Leslie Pérez Cáceres) • Kendall’s W (also known as Kendall’s coefficient of concordance) If 1, all candidates have ranked in the same order in all instances. If 0, the ranking of each candidate on each instance is essentially random.  W = Friedman / (m * (k-1)) • Spearman’s rho: average (Spearman) correlation coefficient computed on the ranks of all pairs of raters. If there are no repeated data values, a perfect Spearman correlation of +1 or -1 occurs when each of the variables is a perfect monotone function of the other. • Many internal and external interfaces have changed. For example, now we consistently use ‘scenario’ to denote the settings passed to irace and ‘configuration’ instead of ‘candidate’ to denote the parameter settings passed to the target algorithm. Other changes are:  parameters$boundary -> parameters$domain hookRun -> targetRunner hookEvaluate -> targetEvaluator tune-conf -> scenario.txt instanceDir -> trainInstancesDir instanceFile -> trainInstancesFile testInstanceDir -> testInstancesDir testInstanceFile -> testInstancesFile • Minimal example of configuring a MATLAB program (thanks to Esteban Diaz Leiva) • Paths to files or directories given in the scenario file are relative to the scenario file (except for --log-file, which is an output file and it is relative to --exec-dir). Paths given in the command-line are relative to the current working directory. Given $ cat scenario/scenario.txt
targetRunner <- "./target-runner"
$irace -s scenario/scenario.txt irace will search for "./scenario/target-runner", but given $ irace -s scenario/scenario.txt --target-runner ./target-runner

irace will search for "./target-runner". (Manuel López-Ibáñez)

• New command-line wrapper for Windows installed at system.file("bin/irace.bat", package="irace") (thanks to Anthony Antoun)

• Budget can be specified as maximum time (maxTime, --max-time) consumed by the target algorithm. See the documentation for the details about how this is handled. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

## irace 1.07

CRAN release: 2015-09-11

• The best configurations found, either at the end or at each iteration of an irace run, can now be applied to a set of test instances different from the training instances. See options testInstanceDir, testInstanceFile, testNbElites, and testIterationElites. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• The R interfaces of hookRun, hookEvaluate and hookRunParallel have changed. See help(hook.run.default) and help(hook.evaluate.default) for examples of the new interfaces.

• Printing of race progress now reports the actual configuration and instance IDs, and numbers are printed in a more human-readable format. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• Reduce memory use for very large values of maxExperiments. (Manuel López-Ibáñez, thanks to Federico Caselli for identifying the issue)

• New option --load-balancing (loadBalancing) for disabling load-balancing when executing jobs in parallel. Load-balancing makes better use of computing resources, but increases communication overhead. If this overhead is large, disabling load-balancing may be faster. (Manuel López-Ibáñez, thanks to Federico Caselli for identifying the issue)

• The option --parallel in Windows now uses load-balancing by default. (Manuel López-Ibáñez)

• The wall-clock time after finishing each task is printed in the output. (Manuel López-Ibáñez, thanks to Federico Caselli for providing an initial patch)

## irace 1.06

CRAN release: 2014-11-26

• Fix bug that could introduce spurious whitespace when printing the final configurations. (Manuel López-Ibáñez)

• Fix bug if there are more initial candidates than needed for the first race. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• New configuration options, mainly for R users:

• hookRunParallel: Optional R function to provide custom parallelization of hook.run.

• hookRunData: Optional data passed to hookRun. This is ignored by the default hookRun function, but it may be used by custom hookRun R functions to pass persistent data around. (Manuel López-Ibáñez)

## irace 1.05

CRAN release: 2014-07-10

• New option --version. (Manuel López-Ibáñez)

• Terminate early if there is no sufficient budget to run irace with the given settings. (Manuel López-Ibáñez)

• The option --parallel (without --mpi) now works under Windows. (Manuel López-Ibáñez, thanks to Pablo Valledor Pellicer for testing it)

• Improved error handling when running under Rmpi. Now irace will terminate as soon as the master node detects at least one failed slave node. This avoids irace reporting two times the same error. Also, irace will print all the unique errors returned by all slaves and not just the first one. (Manuel López-Ibáñez)

• Forbidden configurations may be specified in terms of constraints on their values. Forbidden configurations will never be evaluated by irace. See --forbidden-file and inst/templates/forbidden.tmpl. (Manuel López-Ibáñez)

• New option --recovery-file (recoveryFile) allows resuming a previous irace run. (Leslie Pérez Cáceres)

• The confidence level for the elimination test is now configurable with parameter --confidence. (Leslie Pérez Cáceres)

• Much more robust handling of relative/absolute paths. Improved support for Windows. (Leslie Pérez Cáceres, Manuel López-Ibáñez)

• Provide better error messages for incorrect parameter descriptions. (Manuel López-Ibáñez) Examples:

    x "" i (0, 0)       # lower and upper bounds are the same
x "" r (1e-4, 5e-4) # given digits=2, ditto
x "" i (-1, -2)     # lower bound must be smaller than upper bound
x "" c ("a", "a")   # duplicated values
• Print elapsed time for calls to hook-run if debugLevel >=1. (Manuel López-Ibáñez)

• examples/hook-run-python/hook-run: A multi-purpose hook-run written in Python. (Franco Mascia)

• Parallel mode in an SGE cluster (--sge-cluster) is more robust. (Manuel López-Ibáñez)

## irace 1.04

CRAN release: 2013-06-09

• Replace obsolete package multicore by package parallel (requires R >= 2.14.0)

• Use load-balancing (mc.preschedule = FALSE) in mclapply.

## irace 1.03

CRAN release: 2013-01-15

• Use reg.finalizer to finish Rmpi properly without clobbering .Last().

• Remove uses of deprecated as.real().

• Nicer error handling in readParameters().

• Fix several bugs in the computation of similar candidates.

## irace 1.02

CRAN release: 2012-10-12

• More concise output.

• The parameters expName and expDescription are now useless and they were removed.

• Faster computation of similar candidates (Jeremie Dubois-Lacoste and Leslie Pérez Cáceres).

• Fix bug when saving instances in tunerResults\$experiments.

• irace.cmdline ("--help") does not try to quit R anymore.

## irace 1.01

CRAN release: 2012-03-19

• Fix bug caused by file.exists (and possibly other functions) not handling directory names with a trailing backslash or slash on Windows.

• Fix bug using per-instance parameters (Leslie Pérez Cáceres).

• Fix bug when reading initial candidates from a file.