Speaking about the solution, we have to mention three levels of expected usage of our system. This division respects the user's knowledge of the genetic algorithms topic and his programming skills. We expect these levels of users:
- The high-level user with no special knowledge about genetic algorithms. He uses a prepared application of the system. He prepares the input data for the problem the kernel is applied for. He adjusts certain basic parameters to influence the speed of convergence or the quality of the result.
- The middle-level user specifies a problem that the system should be applied for (definition of a completely new application of the system). This user can change more complex aspects of the genetic algorithm e.g. definition of a sequence of genetic operators, training of a neural network. For these purposes we include a set of tools within the package.
- The low-level user is a programmer, who extends the system components. He can override the classes that are not suitable for his purposes or replace the whole component of the system. In fact he produces a new package for dealing with genetic algorithms. We have prepared all the C++ classes present in the system for an easy inheritance. This means the standardized interface, one predecessor and well-structured methods (primarily virtual ones).
In the section 3.1 we describe the main component of the system performing the genetic algorithm itself. Section 3.2 is devoted to an introduction to the neural networks and their role in our project. In section 3.3 we describe the user interface and its principles. Section 3.4 describes the principles of the parallelization of genetic algorithm and contains description of the supported parallelization method.
For detail information on the implementation and the used techniques see Programmer's Guide.