[Gecode] Some observations on views depending on more than one variable
Mikael Lagerkvist
zayenz at kth.se
Thu Jun 2 16:20:53 CEST 2005
Hi,
There are some interesting problems associated with views of more than
one variable that I discovered when investigating the possibility of having
a view that represents the sum of two variables.
In the following, assume that we have two identity-views V1 and V2 (on
variables v1 and v2), and the sum-view S representing V1+V2. Let the
initial state be represented by (v1,v2)=({0..2},{0..2}).
The simple definition of the operations min and max for S are:
max() := V1.max() + V2.max()
min() := V1.min() + V2.min()
Now we have a problem, because telling something will not necessarily
affect subsequent min- and max-operations on S. For example, telling
"S < 3" does not imply anything for the V1 or V2. Thus we may have
that after telling "S < 3", S.max() may still return 4. This will
break some very basic assumptions made on views, and therefore we need
something stronger if sum-views are going to work.
One possible idea is to add state to the sum-view, recording the
requested minimum and maximum. This will not work either. Consider the
initial state again. Min and max for S will initially return 0 and 4
respectively. Now we tell "S < 4", making the requested upper bound
for S equal to 3. This can not affect V1 or V2, although we 'know'
that (v1,v2)!=({2},{2}). Now let V1 and V2 both be assigned 2. We are
now in an inconsistent state, that in the Gecode framework will not be
detected until we do a tell on S, which may be to late.
To 'fix' this problem, it is necessary to add all the features of a
real variable representing the sum, and then we may as well use the
explicit variable instead.
Regards,
Mikael Lagerkvist
--
Mikael 'Zayenz' Lagerkvist, http://www.imit.kth.se/~zayenz/
More information about the gecode-users
mailing list