George Rudolph wrote:
I am attempting to learn how to use finite domain constraints in OZ to solve certain partially balanced, cyclical designs
from combinatorial design theory.

Given a set of points V (say V=93), I want to construct a design
with 23 elements that meets certain constraints.
Each one of the 23 elements is a "block" (list or multiset)
of size 3.

I want a convenient way to refer to each of the blocks, so that
I can specify constraints such as "block 1 > block 2".
I also want to be able to specify constraints WRT to individual
elements either within the same block, or in different blocks.

If a block is actually a set, I suggest you use a double representation with channeling constraints. Use a set variable, and a list of integer variables. The constraint FS.int.match ensures that the list contains the set elements in ascending order.

   BlockSet = {FS.var.upperBound 1#V}
   BlockList = {FD.list 3 1#V}
   {FS.int.match BlockSet BlockList}

With the list representation you can define a lexical order between sets.

Cheers,
raph

_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to