>I've been doing testing and am limited by the memory issue with strong
>I'm moving my code over to one of our university's blade servers to get more
Having the extra resources of the university's server didn't help much in
controlling the memory exploitation issue of strong data typing. I didn't have
time to look into the root issue in ECJ with strong data typing, but I assume it
uses a greedy algorithm in tree construction. Maybe I'll look into it later. This
post is for the benefit of others who may need to work around the issue as I
Ignoring the core dumps, the main problem is the limitation on population size.
In my case I found a population of 350 to be the maximum I could push out.
Once the run got past the first 2-3 gens it had no further issues. Since I used
ERCs to generate numbers randomly, the curtailed diversity from a 350
population was a problem. I made a few changes to adjust for this lower initial
1. I put parsimony pressure into the fitness function and increased tree depth
to increase diversity in the tree (breaking the rules :)
2. the timetable had 75 slots and I evaluated only the first 75 items which
could be slotted in, ignoring the rest (except to count the excess baggage to
apply toward parsimony pressure) -- this reduced selection pressure and
carried forward genetic material
3. with 10 fitness measures to track I multiplied them (adjusting to 1-base
level) then took their power to normalise the number (ie n x m x o -->
nmo^1/3) -- this reduced selection pressure for large individual excursions of
fitness with the benefit that individual small changes created more relative
effect -- therefore more genetic material was carried forward retaining diversity
with selection pressure increasing as it neared a solution.
This is just a simplified explanation of course. I found tuning of these values to
be critical and sometimes counter-intuitive.
If anyone has specific questions, email me.
>This is a school timetable app. There are primarily 3 parts to the timetable:
>rooms, timeslots and course offerings. Then there are constraints which
>instructor availability, room purpose, and curriculum concurrency, among
>The terminal set is 3 ERCs, one each for the 3 parts of the timetable. Then
>ERC join function restricted to one of each ERC type, and a generic join
>restricted to ERC join types. Generally, this is an optimisation problem where
>one needs to find the right sets of ERCs which satisfy the constraints. I have
>plans to extend the tree with a conditional function later if I have time.