TASC Research team
Objectives of the team
Origin and Current Situation
Constraint programming emerges in the eighties and develops at the intersection of Artificial Intelligence and Operations Research, of Computer Science and Mathematics. Multidisciplinary by nature it keeps on using knowledge from various topics such as discrete mathematics, theoretical computer science (graph theory, combinatorics, algorithmic, complexity), functional analysis and optimization, IT and software engineering. Constraint programming was identified in 1996 by the ACM as a strategic topic for Computer Science. The turn of the century has seen the development of optimization technology in the industry (with notably Ilog, IBM, Dash and more recently Microsoft, http://code.msdn.microsoft.com/solverfoundation, Google and Dynadec) and the corresponding scientific field, at the border of Constraint Programming, Mathematical Programming, Local Search and Numerical Analysis. Optimisation technology is now assisting public sector, companies and people to some extent for making decisions that use resources better and match specific requirements in an increasingly complex world. Indeed, computer aided decision and optimization is becoming one of the cornerstones for providing assistance to all kinds of human activities.
Today, with the preeminence of optimization technology in most industrial sectors, we argue that quick and ad hoc solutions, often used today, cannot support the long-term development of optimization technology and its broad diffusion. We also argue that there should be a much more direct link between mathematical results and their systematic reuse in the main fields of optimization technology.
In spite of its importance, computer aided decision and optimization suffers from a number of fundamental weaknesses that prevent from taking advantage of its full potential and hinder its progress and its capacity to deal with more and more complex situations. This can be mostly blamed on the diversity of actors, which are:
Spread out in distinct scientific communities, each with its own focus:
On the one hand, computer science for providing languages, modelling tools and libraries. While focusing on providing flexible and powerful programming paradigm that can be easily deployed and maintained on modern architectures, it does not address the central question of how to come up in a systematic way with efficient methods for optimization and decision problems.
On the other hand, applied mathematics for the theory part. The focus is to come up with powerful abstractions that allow understanding the structure of a class of problems, independently of its practical and systematic uses in modern software components.
Spread out in distinct technological communities, each independently pushing its own solving paradigm like constraint programming, linear and integer programming, continuous optimization, constraint-based local search (e.g., COMET). To some extent, most of these techniques exploit in different ways the same mathematical results, that are manually adapted to fit the main way to proceed of a given technology.
Thus, a first challenge encountered by constraint programming is the design of computer systems implementing in a transparent way effective solving techniques.
Ideally, the user must be able to describe his problem in a high level modelling language without being concerned with the underlying solving mechanisms used. Such systems must also be independent both from any computer programming language and from any resolution engine.
In order to assists user, systems must also offer digital knowledge base in problem solving that make available state of the art models and heuristics for large set of well identified problems.
Lastly, the user must have the ability to interpret the returned solutions, in particular within the context of over constrained problems where it is necessary to partly relax some constraints, and that in the most realistic possible way.
A second challenge resides in the speed of resolution especially in the context of large-scale data. One has to adapt techniques such as generic consistency algorithms, graph algorithms, mathematical programming, meta-heuristics and to integrate them within the framework of constraint programming. This integration generates new questions such as the design of incremental algorithms, the automatic decomposition or the automatic reformulation of problems.
Finally a third challenge deals with the use of constraint programming in the context of complex industrial problems, especially when both discrete and continuous aspects are present. Complexity has multiple causes such as:
the combination of temporal and spatial aspects, of continuous and discrete aspects,
the dynamic character of some phenomena inducing a modification of the constraints and data during time,
the difficulty of expressing some physical constraints, e.g. load balancing and temporal stability,
the necessary decomposition of large problems inducing significant solution performance losses.