No enterprise can afford to waste resources, be it time, money, or energy. Currently, optimization methods such as metaheuristics that can be used to reduce operational costs and resource consumption are a booming field. This is caused by several factors, such as the increased control that IT can exert over manufacturing due to concepts such as cyber-physical systems or the internet of things, or the rise of available computing power (e.g., due to cloud computing) as well as the availability of more (big) data. With all of these tools, we aim to automate decisions in management, planning, scheduling, and logistics. But, of course, automated decisions should be intelligent. And metaheuristics offer exactly this: The capability to make good decisions automatically and quickly.

This course is designed to fit in a compact slot of maybe four hours. We first try to get a basic understanding what an optimization problem is. We then pick a prominent example problem from the field of smart manufacturing and try to tackle it. We begin by developing a very simple and stupid algorithm and then step-by-step move on to better approaches.

Goals: We will

  1. learn about the basic principles of metaheuristic optimization,
  2. learn about the most prominent families of algorithms in the field,
  3. test these algorithms on a problem from smart manufacturing and investigate their strengths and weaknesses, and thus
  4. become able to quickly design optimization software prototypes for specific applications.

Teacher: Prof. Dr. Thomas Weise

Course Material

As course material, a comprehensive set of slides and examples is provided. Each course unit targets one closed topic, only building on previously introduced topics, and provides a examples and algorithm implementations in Java.

All source codes of all example algorithm implementations and problem examples can be found in this tar.xz archive (sources.tar.xz).

  1. Introduction
  2. The Structure of Optimization
  3. Random Sampling
  4. Hill Climbing
  5. Evolutionary Algorithm