My research has primarily focused on the design and implementation of domain specific languages for combinatorial optimization. It is motivated by the recognition that many optimization problems require considerable expertise in theoretical and experimental computer science as well as in the application domain (e.g., scheduling, chemical engineering). Indeed most of these problems are NP hard and require sophisticated algorithms and data structures to obtain reasonable solutions. Moreover, the resulting software is often intricate and hard to maintain, modify, and extend.
To address these difficulties, we have designed and implemented a number of software systems which decrease the development time of combinatorial optimization problems significantly, while inducing only a small overhead in efficiency. These domain specific languages or libraries provide high-level abstractions which are pervasive in the application domain and encapsulate fundamental algorithms, data structures, and methodologies in artificial intelligence and combinatorial optimization. By using state of the art compilation and component technologies, the languages becomes competitive with specialized code, are easy to integrate within larger applications , and encourage experimentation which is so fundamental in obtaining ``satisfactory'' solutions to hard optimization problems.
Before describing several of these systems in more details, it is important to emphasize two main features of my research. On the one hand, my research in interdisciplinary; it combines techniques from artificial intelligence, optimization, numerical analysis and theoretical computer science with programming languages and software engineering technology. On the other hand, the promoted approach, i.e., the use of domain specific languages and components, is not limited to optimization but is applicable to many areas of science and engineering.