next up previous index
Next: Intervals Up: Introduction Previous: Suspended Goals: suspend   Index

Subsections

Finite Domains

fd

The standard constraint solver offered by most constraint programming systems is the finite domain solver, which applies constraint propagation techniques developed in the AI community [23]. ECLiPSe supports finite domain constraints via the fd library. This library implements finite domains of integers, and the usual functions and constraints on variables over these domains. In addition ECLiPSe offers finite domains of non-numeric values, for example red, green, blue.

Whilst there is a standard set of constraints supported by the fd library in ECLiPSe and in most constraint programming systems, many more finite domain constraints have been introduced which have uses in specific applications and do not belong in a generic constraint programming library. The behaviour of these constraints is to prune the finite domains of their variables, in just the same way as the standard constraints. Therefore ECLiPSe offers several further libraries which implement more constraints using the fd library.

Global Constraints: fd_global

One such library is fd_global. It supports a variety of constraints, each of which takes as an argument a list of finite domain variables, of unspecified length. Such constraints are called ``global'' constraints [2]. Examples of such constraints, available from the fd_global library are alldifferent/1, maxlist/2, occurrences/3 and sorted/2.

Scheduling Constraints

There are several ECLiPSe libraries implementing global constraints for scheduling applications. The constraints have the same semantics, but different propagation. The constraints take a list of tasks (start times, durations and resource needs), and a maximum resource level. They reduce the finite domains of the task start times by reasoning on resource bottlenecks [13]. Three ECLiPSe libraries implementing scheduling constraints are cumulative, edge_finder and edge_finder3.

Sets

ECLiPSe offers two libraries which implement finite sets. These libraries make use of the fd solver to reason about set cardinality and about variables belonging to the sets [10].

The first library conjunto admits both symbolic and numeric values. The second library fd_sets has some extra functionality and optimised implementation, but only handles sets of integers.


next up previous index
Next: Intervals Up: Introduction Previous: Suspended Goals: suspend   Index
Warwick Harvey
2002-05-15