Towards an efficient API for optimisation problems data - Pinheiro, Rodrigo Lankaites; Landa-Silva, Dario; Qu, Rong; Yanaga, Edson; Constantino, Ademir Aparecido (2016)
The literature presents many application programming interfaces (APIs) and frameworks that provide state of the art algorithms and techniques for solving optimisation problems. The same cannot be said about APIs and frameworks focused on the problem data itself because with the peculiarities and details of each variant of a problem, it is virtually impossible to provide general tools that are broad enough to be useful on a large scale. However, there are benefits of employing problem-centred APIs in a R&D environment: improving the understanding of the problem, providing fairness on the results comparison, providing efficient data structures for different solving techniques, etc. Therefore, in this work we propose a novel design methodology for an API focused on an optimisation problem. Our methodology relies on a data parser to handle the problem specification files and on a set of efficient data structures to handle the information on memory, in an intuitive fashion for researchers and efficient for the solving algorithms. Also, we present the concepts of a solution dispenser that can manage solutions objects in memory better than built-in garbage collectors. Finally, we describe the positive results of employing a tailored API to a project involving the development of optimisation solutions for workforce scheduling and routing problems.