While this SMART operator paradigm has been used successfully on tree-structured programs [Teller and Veloso 1995c] there has not yet been a system using tree-structured functions (evolved programs with no loops, recursion, or memory) that has used SMART operators, successfully or otherwise. This leaves open the possibility that SMART operators may (or may not) work in a more constrained language space, such as tree-structured functions. The studies we have done do not tell us what tree-structured SMART operator functions could get done. The effect that representation and language expressiveness (of both the programs to be recombined and the SMART operators) has on the effectiveness of the SMART operator technique is an area requiring further investigation.
This chapter has already mentioned several of our current and future research directions. There are two directions, however, that stand out as most important and interesting to us. The first is a more thorough investigation of alternative SMART operator application paradigms. Two such alternatives that this chapter touched on were conservation SMART operator re-application and fixed (non-co-evolved) SMART operator populations. These and other alternative approaches may eventually turn out to be superior to the basic application strategy outlined in this chapter.
The second avenue of research that we are actively pursuing is further theoretical analysis to improve our understanding of how SMART operators really work. Understanding the SMART operators and how they work can lead to two developments. First, this understanding can tell us how to improve the SMART operators and potentially give us general insights into the intelligent exploration of the space of algorithms. Second, learning what the SMART operators are doing may lead to improvements in the representation on which they operate. In other words, it may be the SMART operators who make the best suggestions (albeit subtly) about how to change the language representation.