Research Project: G12 Constraint Programming Platform
|
NICTA's G12 project, which ran from 2005 until 2010, aimed to
develop a new constraint programming platform featuring a suite
of languages. Traditionally, the main application area for
constraint solving technology is scheduling, but the platform is
suitable for a vast range of other applications, ranging from
computing layouts and other designs to discrete event monitoring
and control.
Zinc is a modelling language based on first order logic
with extensions to accommodate numerical constraints and
commonly used data structures such as arrays, sets and
records. It allows the model or generic domain
description to be separated from the data or specifics of
the problem instance, and crucially allows problem modelling to
be solver-independent. We may think of the process of solving
the problem as one of evaluating the Zinc model and data,
as logically what it amounts to is finding an interpretation of
the language on which all of the constraints come out true.
Mercury is the logic programming language of that name,
used in G12 as a basis for constraint logic programming on top
of solvers drawn from the OR and CP/SAT communities. It allows
solvers of different kinds, say a MIP solver, a local search
solver and a SAT solver, to be combined into hybrids suitable
for a particular problem. Some of the solvers are native to the
platform. Others are by third party software providers and are
able to work within G12 via a simple and flexible API.
Between Zinc and Mercury (remember your periodic table)
comes Cadmium, a language for specifying syntactic
transformations. It is used to transform Zinc models into
simpler ones, for instance by reifying constraints and
flattening the result. It is also intended for specifying the
mapping from Zinc models into Mercury programs that solve them.
My part in all this was to head the part of the work being done
in Canberra, in close collaboration with the principal team in Melbourne, and others in
Sydney and Brisbane. In Canberra, we worked on SAT solvers, on
incorporating first order theorem provers into the software for
analysing Zinc models, on the first version of the integrated development environment
which formed the front end for the G12 user, and
on a range of visualisation tools.
|
The G12 platform forms the basis of software now commercialised by the Melbourne-based company
Opturion. Alas, our IDE is no longer current, but
our research on constraint visualisation resulted at the very least in some striking
images, and remains an interest of mine on the personal research level.
The images on this page were produced by the G12 visualisation
toolkit as it was around 2010. They show static views of constraint graphs revealing the
structure of SAT-like realisations of problems in AI planning and
bounded model checking. Each vertex is a variable, and two variables
are joined by an edge if they co-occur in at least one
constraint. The constraint graph viewer in G12 used a quasi-physical
force-directed layout: imagine that all vertices repel each other
like similarly charged particles, with a force that obeys an inverse
square law, and that edges pull adjacent vertices together with a
force linear in the length of the edge, like springs with a rest
length of zero. While the examples shown here are 2-dimensional, so
as to show a maximum of vertices without overlap, in some cases 3D
layouts are also also useful and intuitive.
For more on G12 and the visualisation sub-project, click
here and
here.
Dr J K Slaney Phone (Aus.): (026) 125 8607
Automated Reasoning Project Phone (Int.): +61 26 125 8607
Australian National University Fax (Aus.): (026) 125 8651
Canberra, ACT, 0200, AUSTRALIA Fax (Int.): +61 26 125 8651
John.Slaney@anu.edu.au
|