VARIABLE-DOMAINS
Arguments: domains [generic-function]
creates arbitrary domains for variables from a list of list of values. If a sublist begins with a function object, it will be used as a split function for structuring the domain into a two-level tree.
In order to improve the perfomance of SITUATION, the domains of variables can be hierarchic.
For the kind of harmonic problems that SITUATION normally handles, for example, it is convenient to represent
the odd-variable domains (i.e. the interval domains) as two level lists, where the first level,
level 0, contains the addition of the intervals and the second level contains the intervals themselves. For instance,
In order to improve the perfomance of SITUATION, the domains of variables can be hierarchic.
For the kind of harmonic problems that SITUATION normally handles, for example, it is convenient to represent
the odd-variable domains (i.e. the interval domains) as two level lists, where the first level,
level 0, contains the addition of the intervals and the second level contains the intervals themselves. For instance,
the intervals ((3 2) (4 1) (4 4) (5) (5 3) (8)) are grouped as ' ( (5 ((3
2) ( 4 1) (5) ) ( 8 ( (4 4) (5 3) (8)) ) ). Constraints refering to the upper voice can then be
expressed as predicates over the first level, which improves the search a lot.
expressed as predicates over the first level, which improves the search a lot.
For instance,
if domains= (*1) (9 2 7 6 4 12))) then the hierarchical domains will be:
(0 (5 7 8)) for the first variale (no function given) and ((0 (9 6 12)) (1 (7 4)) (2 (2))) for the second variable (values grouped according to function given)