This repository contains 3 different approaches to solve the Box Wrapping Problem:
The complete specification of the problem (input and output format, exact goals, ..) can be found in this pdf file, which could be downloaded from the course's webpage during the second semester of academic year 2017-2018. A report explaining the contents of this repository can be found here.
The Constraint Programming approach consists on implementing a mathematical model using Gecode (v. 6.0.0).
The Linear Programming approach consists on implementing a mathematical model using Cplex (v. 12.7.0).
The Satisfiablity approach consists on generating a Boolean formula in conjunctive normal form (CNF) so that a SAT solver can solve it. The SAT solver used is lingeling.
Apart from the tools and libraries mentioned above, this project has other dependencies that have to be taken into account.
In order to compile each part of the project, one needs to have the make tool installed. It is mandatory to have a compiler that supports C++11. Also, for the Satisfiability part, a bash interpreter is needed to run the scripts.
Compiling the box-wrapper interface requires the use of either the qmake tool, or the Qt creator IDE.
The interface box-wrapper needs the Qt library. Bear in mind that, since it uses OpenGL, it is also needed to have installed the corresponding modules of the Qt library.
This repository contains the Combinatorial Problem Solving course project, carried out during the second semester of the academic year 2017-2018. The course is part of the Master in Innovation and Research in Informatics (MIRI) curriculum.