Matt, ECJ can indeed change its function set mid-run. I believe you
should be able to just extend (replace with a bigger one) the array in
GPFunctionSet.nodes_h.get(returnType) and then call
GPFunctionSet.postProcessFunctionSet() to rebuild the arrays. Don't
quote me on that; it's 4 in the morning (EST -- I'm still at GECCO).
ECJ can also change its constraints and types mid-run as well.
However, I'm somewhat a loss as to why you'd need to do any of this
given the description you gave below. ECJ uses tree-based GP; why
would this not be able to have an arbitrary number of terminals?
They're just leaf nodes in the tree.
On Jun 30, 2004, at 11:54 PM, Matt Hall wrote:
> Hi Everyone,
> I'm working on a project closely related to the Karl Sims evolved
> creatures work (interesting paper at
> http://www.genarts.com/karl/papers/alife94.pdf) and would love to use
> ECJ to do the evolution of the nervous system of the creatures.
> the issue I'm running into is that the ECJ GP system seems to be really
> geared towards a static problem in the sense that the number of
> terminals or inputs is fixed with the problem definition, and you
> java classes for each of them and so on. My problem is that if we
> consider a sensor that one of these creatures might have on an
> to be an input into the nervous system then you can see how the number
> of terminals for the problem will vary for each creature, as each
> creature's body type can be quite different.
> So my question: Is there a way to programatically build the constraints
> and terminals that are now specified in the parameter file?
> Thanks for any assistance or advice, I'd be happy to provide more
> information if the above is unclear.