This is an individual assignment, not a group exercise! You are each expected to work on this individually. If you submit your answer early, I may look at it and provide feedback before the deadline, giving you a chance to improve. Adherence to the detailed instruction is very important, so that the testing can be automated. Read these instructions carefully to avoid missing some details…​

Your task is to send to xnodet@uco.fr (and not any other email address!), on 2025-12-15 07:00 UTC at the lastest, an email with:

The layout of your project should be such that:

python3 -c "import sys; v=sys.version_info; print('{}.{}'.format(v[0], v[1]))"

If url is the value of that URL in your email, I will do, in a brand new Python virtual environment, something similar to the following:

$ git clone [url] repo
$ cd repo
$ pip install --requirement requirements.txt
$ python videos.py [relative/path/to/dataset]
$ python [somewhere/only/i/know]/check_solution.py [relative/path/to/dataset] videos.out

The dataset I will use to evaluate your submission may be one that you didn’t see.

Your Python code should be well structured and easy to understand. It should use gurobipy to create an optimization model and solve it. The optimality gap (MipGap) should be 5e-3 or less. While it reads the data and creates the model, the script should show what it does with a few lines of traces. The shorter the time it takes to generate the model, the better.

You will find within the archive https://nodet.github.io/gurobipy-course/data.zip, in the folder project, a PDF file describing the problem to solve: hashcode_2017_qualification_round.pdf and the formats of the input and solution files.

There are also, in the datasets directory, two input files:

Good luck!