I'm interested in the research and development of fast, exact and heuristic computational solution methods for combinatorial optimization problems, both considering general models (such as integer programming) as well for specific applications.

These are some applications which I am particularly interested:


Timetabling involves the allocation of events to timeslots. In educational timetabling these events involve teachers, classes and resources which have limited availability, producing conflicts between events which should be handled by the solver.


In 2011 the Third International Timetabling Competition (
ITC 2011) happened. Our solver (GOAL Solver) was the winner of the competition.

Project Scheduling

In this problem a set of jobs must be scheduled. These jobs require resources which are limited and should be properly allocated. Jobs also have precedence constraints so that the starting of each job may depend on the finishing time of one or more jobs.


This is a hard combinatorial optimization problem. In 2013 a challenge was organized to incentivate the research on this area. The solution method proposed by my team was ranked third.

Integer/Binary Programming

Both previous problems can be modeled as binary programming problems in the following format: minimize cTx subject to Ax=b, where x is a vector of binary variables, c is a cost vector and A is the constraint matrix with right hand sides expressed in b.

Commercial and open source binary integer programming solvers are continually improving. I'm currently contributing to the development of the COIN-OR Branch & Cut Solver CBC. I'm also running a benchmarking project to validade and tune CBC parameters.