I'm an open source enthusiast. Below there is a list of software which
I developed or contributed to the development. You can use it to any purpose as long
as you cite the source. *Use at your own risk*.
NPSep is a set of routines to create dense conflict graphs and to generate
cuts derived from these graphs. It currently separetes the following
Some features of NPSep are:
The following papers describe successful applications of NPSep:
separates virtually all violated clique inequalities: a smart implementation of
the Bron-Kerbosch (BK) algorithm with specially tuned pivoting rules allows the
generation of all violated clique inequalities even for large instances (e.g. the larger ones in MIPLIB 2010 benchmark set),
for even larger instance a greedy randomized heuristic is automatically selected;
lifting: larger cliques are generated by the inclusion of additional variables which do not appear as active (>0) in the current fractional solution, so that less cuts are necessary to improve the lower bound;
solver independent: most of the code, including all cut separation code, is completely solver independent, with the exception of the code which builds the conflict graph;
portable: the code was entirely wrote in ANSI C, with some small parts in ANSI C++.
Santos, H.G., Toffolo, T.A.M., Gomes R.A.M. and Ribas, S.
Integer Programming Techniques for the Nurse Rostering Problem.
Annals of Operations Research (to appear). Pecin, D., Pessoa, A., Poggi M., Santos, H.G. and Uchoa, E.
Limited Memory Rank-1 Cuts for the Set
Partitioning Formulation of Vehicle Routing Problems. Aussois 2015, Proceedings of 19th combinatorial optimization workshop, Aussois, 2015.
NPSep is developed primarily by me and
Contributors include Artur, Eduardo and
The project has a git based version control system hosted
In 2011 the Third International Timetabling Competition ( School Timetabling Solver ITC 2011) happened.
Our solver (GOAL Solver) was the winner of the competition.
You can download the source code of this solver here.
A descriptions of our solver can be found in the following paper: