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