Using updater functions to restrict domain

From: Jonathan Collins <>
Date: Tue Sep 26 2006 - 02:21:59 CEST

Thank you for your help with my last question. I was able to get teacher
working as a variable resource. My question today involves updater
functions, however we are not sure if they are the best way to
accomplish our needs.
Instead of having an updater function set the destination resource to a
specific id, we want to limit the resource pool to a group of possible
IDs based on the value of the source resource. Our specific use for this
is a "same-week-as" restriction in multiweek scheduling so that we can
define event B to be in the same week as event A.
Our first thoughts were to register an updater with A as the source and
B as the destination, then the updater function would limit the domain
of B based on the value of A, then we could return some value like -1
that a modified kernel would then recognize to call domain_rand() to
make the assignment. However we discovered that domains are only created
when the XML is parsed, so we thought this would taint the domain for
future generations.
Another thought we had was to generate the possible domain, but rather
than using it to call domain_and() we would simply choose a random value
from the new domain and return that from the updater. With this approach
we were afraid that we would interfere with the genetic algorithms
ability to hold onto fit chromosomes, and we have not studied the code
enough to decide if this approach is essentially equivalent to the last
one. This would be our ideal solution, but if it will simply randomize
good chromosomes that are coming in from previous generations then
perhaps it is not the best choice (but maybe this doesn't matter?).
We're mainly wondering how returning random (yet limited) values from an
updater would affect the algorithms efficiency.
An obvious solution is to just define a fitness function that makes sure
event B is in the same week as event A, however since the range of
possible values is very limited based on the value of event A, we wanted
to avoid having the genetic algorithm create obviously unsuitable
solutions. As far as we know this is the idea behind updater functions,
but they are built not for a possible pool of values but for a specific
determined value.
Any advice is appreciated.
Jon Collins
Received on Tue Sep 26 02:22:36 2006

This archive was generated by hypermail 2.1.8 : Tue Sep 26 2006 - 06:32:22 CEST