The space of all problems, particularly those with computational solutions.
For Genetic Programming, the Problem Space is divided into Individual, Environment, and History implementations. This is similar to the logical organization used by other Evolutionary Algorithms techniques.
In this framework, all problems must implement, at minimum, the IIndividual, IEnvironment, and IHistory interfaces defined in the ProblemSpace namespace. However, since implementations of classes like IEnvironment tend to be less problem-specific, they are often shared between problems.
For example, in the case of the Artificial Ant problem, the same environment may be used to represent both the path-finding and obstacle-avoidance versions of the problem. As long as the IEnvironment can keep track of both obstacles and food, and appropriate initialization files are used, the path-finding version can simply restrict itself to the subset of the IEnvironment implementation that uses only food.
Some problems may also require a new implementation of IPrecodeTree. Since IPrecodeTree can represent a tree of appropriately formatted methods from any class, the default implementations will be adequate for most problems. However, if new method signatures are used in the IIndividual Base Class, a new IPrecodeTree implementation will be required.
GeneticProgrammingEngine.ProblemSpace Namespace | IIndividual Interface | IEnvironment Interface | IHistory Interface | IPrecodeTree Interface