Heuristic algorithms are widely applied in practice where time, money, and knowledge limit the development of problem-specific algorithms. They are very simple to apply as they typically consider the problem as a black box and only access it via a problem-dependent fitness function. Examples include nature-inspired algorithms like simulated annealing and swarm intelligence algorithms, as well as evolutionary and genetic algorithms. These algorithms take inspiration from optimization processes in nature and are applicable to basically any optimization problem. In this project seminar we will compare these heuristic optimization algorithms with classical optimization algorithms, such as LP- and SAT-solvers.
During course time we will introduce these different algorithms and example use cases; furthermore, we will formally analyze some of these algorithms from a performance perspective. The projects will try out these algorithms and test them experimentally. Finally, some theoretical homeworks and an algorithm engineering project will practice the analysis and implementation of heuristic optimization algorithms.