Hi Ian,
It sounds as though you need to create a new type of Node which will
operate in a similar way to an ephemeral random constant, but for
dates. The easiest way to do this is probably to extend Literal, and
use your DateTime object as the value. Take a look at the source code
for DoubleERC, to see how this is done with Doubles, including
constraints. The important thing is to implement the newInstance()
method so that a new instance of your node is created with a randomly
generated date (within any constraints you have set).
You then need to supply an instance of your node (and any other nodes)
to the GPModel through the setSyntax method. This is where the
initialisation and mutation operators will get the set of nodes to use
from.
All the standard mutation operators should be able to work with your
new node. They won't change the value of one of your DateTimeERC nodes
(they are constants after all), but will potentially replace one with
another.