The basic architecture of a macro-learning system requires a mechanism for generating training problems and a method for filtering them (or, alternatively, a method for ordering them). The main goal of the filter is to save learning resources by concentrating on helpful problems. To focus the attention of the learner, our acquisition method considers only macros that are parts of the solution path. Therefore, to save learning resources, a good problem generator should generate only solvable problems. In addition, it is desirable to order the training problems in increasing levels of difficulty. This saves learning resources by acquiring as much knowledge as possible using easy problems.
One good way to implement such a problem generation methodology is to require a domain-specific generator for each domain. For example, solvable problems in the NxN puzzle domain can be generated by performing an even permutation on the goal state. Since one of our main goals was to make the algorithm as domain-independent as possible, we have supplied a default domain-independent generator that works in many domains, including the sliding-tile puzzle. Our default problem generator assumes the following:
In Section 5 we describe a method for increasing the difficulty of training problems by increasing the parameter that characterizes the domain (such as N in the case of NxN puzzles). For most parameterized domains, such as the NxN puzzle, increasing the parameter indeed increases the difficulty of problems. The framework of processing input examples by order of difficulty, called learning from exercises, was studied formally by Natarajan  and empirically by Reddy and Tadepalli . Both works assume a teacher who supplies a sequence of problems in increasing order of difficulty. Our default generator attempts to produce such a sequence automatically, freeing the learner from the need of a teacher.