This works attempts to find the fairest UEFA Champions League Round of 16 draw using Integer Linear Programming.
- Read the "Problem Formulation.pdf" file that discusses the intuition behind the method and the mathematical formulation for the optimization problem.
- Run the "UCL Round of 16.ipynb" Jupyter notebook. This notebook uses the data found in the workbook "UCL Round of 16 Teams.xlsx" to run the optimization problem.
It should me mentioned that the method used to find the rating of each team is not observed at this stage. It is assumed to be given. A fair way to determine such a rating is to select multiple models, each, say, retrieved from an online website, and then find the average of all the ratings for each team.