There is hardly any company that has no need for optimization; whether it is the scheduling of employees, routing of trains or trucks, cutting parts from wooden beams with as little waste as possible or one of many other tasks. These optimization problems are typically specific to the application area and come with various constraints and uncertainties.
Evolutionary Search is a modern tool for optimizing such hard problems. By taking ideas from nature (such as using populations of solutions, mutating or combining them and selecting the best for a new generation), these algorithms are surprisingly successful in many different application domains where no tailored solutions exist. These simple algorithms cannot compete with state-of-the-art solvers in their specific domains (for example SAT-solvers), but they are very easy to apply to a wide range of optimization problems where no specific solvers are available, at very low implementation cost. Furthermore, they are extensible in the sense that performance can be improved by spending time improving the algorithm with additional heuristics and ideas.
To make use of massive parallelization in optimization algorithms, distributed evolutionary search spreads populations over multiple cores, called islands (borrowing another term from natural evolution). The islands optimize in parallel, sending information to neighboring islands when they make progress. Which islands neighbor which other islands is defined by an underlying topology. The goal is to have a linear speedup in terms of the number of cores used, thus achieving the optimal performance gain from additional hardware.