1.1 Introduction

AutoOptLib is a Matlab library for automatically designing metaheuristic optimizers. It provides:

  • Rich library of design choices - Over 40 representative metaheuristic components for designing algorithms for continuous, discrete, and permutation problems with/without constraints and uncertainties (Table 1).

  • Flexibility to designing diverse algorithms - Design algorithms with diverse structures in a single run, enables great possibility to find novel and efficient algorithms.

  • Fair benchmark of various design objectives and techniques - Various design objectives, e.g., solution quality, runtime, and anytime performance (Table 2). Different design techniques, e.g., racing, intensification, and surrogate (Table 3).

  • Good accessibility - Graphical user interface (GUI) for users to input problems, manage the algorithm design process, make experimental comparisons, and visualize results with simple one-clicks.

  • Easy extensibility - Easily add new algorithmic components, objectives, and techniques by a uniform interface.

AutoOptLib’s benefit includes:

  • Save labor resources and time - Human experts may cost days or weeks to conceive, build up, and verify the optimizers; AutoOptLib would saves such labor resources and time costs with today’s increasing computational power.

  • Democratize metaheuristic optimizers - Through automated algorithm design techniques, AutoOptLib would democratize the efficient and effective use of metaheuristic optimizers. This is significant for researchers and practitioners with complicated optimization problem-solving demands but without the expertise to distinguish and manage suitable optimizers among various choices.

  • Surpass human algorithm design - By fully exploring potential design choices and discovering novelties with computing power, AutoOptLib would go beyond human experience and gain enhanced performance regarding human problem-solving.

  • Promote metaheuristic research - With a uniform collection of related techniques, AutoOptLib would promote research of the automated algorithm design and metaheuristic fields and be a tool in the pursuit of autonomous and general artificial intelligence systems.

Table 1: Metaheuristic algorithm components in AutoOptLib.
Component Description
Continuous search: -
cross_arithmetic Whole arithmetic crossover
cross_sim_binary Simulated binary crossover [DA+95]
cross_point_one One-point crossover
cross_point_two Two-point crossover
cross_point_n n-point crossover
cross_point_uniform Uniform crossover
search_cma The evolution strategy with covariance matrix adaption
search_eda The estimation of distribution
search_mu_cauchy Cauchy mutation [YLL99]
search_mu_gaussian Gaussian mutation [Fog98]
search_mu_polynomial Polynomial mutation [DA+96]
search_mu_uniform Uniform mutation
search_pso Particle swarm optimization's particle fly and update [SE98]
search_de_random The "random/1" differential mutation [SP97]
search_de_current The "current/1" differential mutation
search_de_current_best The "current-to-best/1" differential mutation
reinit_continuous Random reinitialization for continuous problems
Discrete search: -
cross_point_one One-point crossover
cross_point_two Two-point crossover
cross_point_n n-point crossover
cross_point_uniform Uniform crossover
search_reset_one Reset a randomly selected entity to a random value
search_reset_rand Reset each entity to a random value with a probability
search_reset_creep Add a small positive or negative value to each entity with a probability, for problems with ordinal attributes
reinit_discrete Random reinitialization for discrete problems
Permutation search:
cross_order_two Two-order crossover
cross_order_n n-order crossover
search_swap Swap two randomly selected entities
search_swap_multi Swap each pair of entities between two randomly selected indices
search_scramble Scramble all the entities between two randomly selected indices
search_insert Randomly select two entities, insert the second entity to the position following the first one
reinit_permutation Random reinitialization for permutation problems
Choose where to search from: -
choose_roulette_wheel Roulette wheel selection
choose_tournament K-tournament selection
choose_traverse Choose each of the current solutions to search from
choose_cluster Brain storm optimization's idea picking up for choosing solutions to search from [Shi15]
choose_nich Adaptive niching based on the nearest-better clustering
Select promising solutions: -
update_always Always select new solutions
update_greedy Select the best solutions
update_pairwise Select the better solution from each pair of old and new solutions
update_round_robin Select solutions by round-robin tournament
update_simulated_annealing Simulated annealing's update mechanism, i.e., accept worse solution with a probability [KGJV83]
Archive: -
archive_best Collect the best solutions found so far
archive_diversity Collect most diversified solutions found so far
archive_tabu The tabu list [Glo89]

Table 2: Design objectives involved in AutoOptLib.
Objective Description
quality The designed algorithm's solution quality on the target problem within a fixed computational budget.
runtimeFE The designed algorithm's running time (number of function evaluations) till reaching a performance threshold on solving the target problem.
runtimeSec The designed algorithm's running time (wall clock time, in second) till reaching a performance threshold on solving the target problem.
auc The area under the curve (AUC) of empirical cumulative distribution function of running time, measuring the anytime performance [YDWB22].

Table 3: Algorithm performance evaluation methods provided in AutoOptLib.
Method Description
exact Exactly run all the designed algorithms on all test problem instances.
approximate Use low complexity surrogate to approximate the designed algorithms' performance without full evaluation.
racing [LIDLC+16] Save algorithm evaluations by stopping evaluating on the next instance if performance is statistically worse than at least another algorithm.
intensification [HHLBS09] Save algorithm evaluations by stopping evaluating on the next instance if performance is worse than the incumbent.