# 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)](#table1). + **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)](#table2). Different design techniques, e.g., racing, intensification, and surrogate [(Table 3)](#table3). + **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]](../References/ref.html#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]](../References/ref.html#YLL99) | | search\_mu\_gaussian | Gaussian mutation [[Fog98]](../References/ref.html#Fog98) | | search\_mu\_polynomial | Polynomial mutation [[DA+96]](../References/ref.html#DA+96) | | search\_mu\_uniform | Uniform mutation | | search\_pso | Particle swarm optimization's particle fly and update [[SE98]](../References/ref.html#SE98) | | search\_de\_random | The "random/1" differential mutation [[SP97]](../References/ref.html#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]](../References/ref.html#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]](../References/ref.html#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]](../References/ref.html#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]](../References/ref.html#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]](../References/ref.html#LIDLC+16) | Save algorithm evaluations by stopping evaluating on the next instance if performance is statistically worse than at least another algorithm. | | intensification [[HHLBS09]](../References/ref.html#HHLBS09) | Save algorithm evaluations by stopping evaluating on the next instance if performance is worse than the incumbent. |