Statement of Requirements

  1. Customer Goals
    1. The aim is to provide a library of components to simplify the construction of genetic algorithms.
    2. Components should be written in Ada 95.
    3. As a minimum the toolkit should be able to implement the classic genetic algorithm with:
      1. Bit string genetic representation,
      2. Random binary initialisation,
      3. Binary mutation and single point crossover genetic operator,
      4. Generation replacement model.
    4. In addition other techniques may be included, such as:
      1. Vector, ordered list, number genetic representation,
      2. Distributed and random search initialisation,
      3. Other mutation, multi-point crossover, and inversion genetic operators,
      4. Steady-state, elitist, and without-duplicate models.
    5. Other facilities which the toolkit should support:
      1. User provided fitness values for potential solutions,
      2. Family trees to relate all previous solutions,
      3. Decision support which helps the user explore the solution space,
      4. Saving of genetic algorithm state to be recreated later.
    6. The toolkit should be extensible so that components specific to a particular genetic algorithm can be added by the programmer.
    7. Components should be contained so the use of one does not require the use of another.
    8. Advanced techniques such as meta-genetic algorithms, adaptive genetics, and interpolative genetics should be implementable using the toolkit but need not be implemented.
    9. The toolkit should be proved by creating two dissimilar genetic algorithms using its components.

  2. Technical Goals
    1. Functional Requirements
      1. Toolkit components should be divided into three classes
        1. core toolkit - components required for classic genetic algorithm with: binary string representation, random binary initialisation, simple mutation and single point crossover, generation replacement model
        2. auxiliary toolkit - components to extend functionality of genetic algorithms such as decision support
        3. extended toolkit - components for other genetic algorithm techniques
      2. The core toolkit has highest priority, then the auxiliary toolkit and finally the extended toolkit.
      3. Component organisation must:
        1. allow for the large number of possible genetic algorithms,
        2. be extensible with user defined components.
        3. not restrict the user within components
        4. be savable
      4. Two dissimilar genetic algorithms should be created to show the power and functionality of the toolkit.
      5. A manual to explain the use of the toolkit should be made.
    2. Non-functional Requirements
      1. All components should be written in Ada 95.
      2. Typical population sizes in genetic algorithms do not exceed a few hundred but storing individuals permanently will increase this by several orders of magnitude.
      3. Deadlines:
        1. The core toolkit and the first demonstration genetic algorithm should be completed by the end of week 10,
        2. The second demonstration genetic algorithm and the rest of the project should be delivered by the end of week 20.