Working Together Across ICT: Constraint Programming and Cloud Computing
This £650K EPSRC funded project combined two active, important research streams in cloud computing and constraint programming, both of which realised significant and sustained benefits from working in concert. Constraint programming is a proven technology for solving complex combinatorial problems. However, the inherent difficulty of these problems means that performance can be variable, often requiring tuning by an expert to obtain best results. One approach to obtaining more robust performance is to employ a portfolio of solvers with complementary strengths. The scalable resource offered by the cloud is perfectly suited to the deployment of such portfolios and presents the opportunity to employ large solver portfolios to tackle challenge problems of exceptional difficulty. Conversely, a major concern in cloud computing is how to deploy an application on the available infrastructure so as to maximise performance and minimise operating costs. Added complexity arrises when dealing with Big Data scenarios where it is important to run computation as closely (in terms of network distance) as possible to the data, in order to minimise network latency and maximise the performance of an application. This is a difficult combinatorial problem with a large set of variables including: public cloud provider, cloud configuration, geographical region, pricing etc. to which constraint programming is ideally suited.