Summary: | This thesis builds upon Beldiceanu and Carlsson's sweep-based propagator for a non-overlapping-rectangle constraint. I design and implement a sweep-based propagator for the Diffn constraint, which deals with rectangles generalised to any number of dimensions. Such a constraint is useful in modelling scheduling, assignment, and packing problems. The work is carried out in the context of the copying constraint programming solver Gecode. Different algorithm optimisations are explored and evaluated across a range of benchmarks in terms of inference strength and execution time. The best optimisation configuration is compared against the propagator for Gecode's current two-dimensional counterpart to Diffn: NoOverlap. The results show that the sweep-based Diffn propagator yields smaller search trees than the NoOverlap propagator in models where non-overlapping constraints dominate the propagation phase, as the sweep-based propagator yields stronger bounds tightening. As other constraints are introduced into the models, the difference in search-tree size becomes smaller, and in cases where the two propagators yield identical search trees, the NoOverlap propagator performs best. While the sweep-based approach shows great potential in some of the benchmarks, the stronger inference is often dwarfed in models with several different constraints.
|