Background Genetic algorithms (GAs) are powerful optimisation techniques inspired by natural evolution. They are widely used in business informatics for scheduling, resource allocation, process optimisation, and automated design tasks. Our research group has developed several prototype implementations that apply genetic
Background
Genetic algorithms (GAs) are powerful optimisation techniques inspired by natural evolution. They are widely used in business informatics for scheduling, resource allocation, process optimisation, and automated design tasks. Our research group has developed several prototype implementations that apply genetic algorithms to quantum circuit synthesis, demonstrating their effectiveness for automated solution discovery.
These prototypes are implemented in Python using established libraries such as DEAP and NumPy. While each prototype has produced valuable research results, they currently exist as research implementations with duplicated code for common functionality. This thesis addresses a classic software engineering challenge: refactoring fragmented prototypes into a well-designed, reusable library that supports evolving research problems with evolving domains.
Goal
The goal of this thesis is to design and implement a unified Python toolkit for genetic algorithm applications for quantum circuit synthesis. The library shall provide a common infrastructure for defining optimisation problems, configuring search parameters, and evaluating solutions, while allowing researchers to easily plug in new problem specifications without reimplementing core quantum or GA functionality. The primary focus lies on software architecture and API design; no specialised quantum computing knowledge is required.
Tasks
- Analyse the existing Python prototypes to identify shared patterns and abstractions
- Design a modular architecture separating core GA logic from quantum circuit components
- Implement the library with clear extension points for custom problem definitions and fitness functions
- Create a benchmarking module for systematic comparison of algorithm configurations
- Develop comprehensive documentation, including tutorials for adding new application domains
- Validate the toolkit by integrating existing prototypes as reference implementations
Requirements
- Solid Python programming skills
- Interest in software architecture and library design
- Basic understanding of optimisation concepts (fitness functions, search spaces)
- Familiarity with version control (Git) and testing frameworks
Contact
Dr. Stefan Klikovits, Christoph Stein, Univ.-Prof. Dr. Manuel Wimmer
