This repository contains Jupyter Notebook files that simulate the group stage draw procedure for the 2023/2024 UEFA Champions League and the 2022/2023 UEFA Champions League.
The notebooks leverage a simple constraint solver to decide on the possible groups that each club can be drawn into.
- Clubs from the same association need to be drawn into different groups;
- Clubs that are paired based on TV audiences need to play on different days;
- Clubs from given associations need to be drawn into different groups (e.g., Ukraine and Belarus).
Initially, I tried to model the entire draw procedure as one constraint satisfaction problem. However, I struggled to find an appropriate representation that allowed me to break the symmetries and to efficiently obtain all possible solutions to the problem.
If you spot any mistakes or have suggestions to improve the approach, then please get in touch with me.