A Versatile Genetic Algorithm System in Ada: Implementation and Applications
Max Edwards
The following table shows the dependencies present within a complete program built using VAGAS, where packages at each level are only "visible" to units at subsequent levels:
Level | Package/program unit name | Description |
|
|
|
0 a. b. c. |
Maths_Constants Maths_Library Text_IO | Auxiliary packages System packages assumed to be available, providing fundamental IO and mathematical facilities not specific to this project |
1 d. e. f. g. |
Genetic c Graphics c Maths ab Random_Numbers bc | General VAGAS packages Non-generic GA types and routines Simple graphical interface Useful mathematical functions Basic random-number facilities |
2 h. i. j. k. l. |
Permutation_Chromosome cdg* Report cde Scaling cd Selection cdg Standard_Chromosome cdg* | Building block packages Chromosome package for permutation strings Simple user interface Useful fitness-scaling routines Useful selection routines Chromosome package for standard n-ary strings |
3 m. n. |
Genetic_Algorithm cdgi*hjkl Fixed_Point_Coding cl* |
Generic package providing complete GA facility Binary chromosome + parameter coding/decoding |
4 o. p. q. r. |
DeJong_Pack cdn* Meta_Pack cdilm*hjkl TSP_Pack cdghl* TTBL_Pack cdgl* | Problem packages DeJong's optimisation test functions A meta-level "GA-parameter optimising GA" Travelling Salesperson Problem implementation A simple time tabling problem |
5 | Main | The user-defined main program |
Notes
• the "levels" in this table bear no direct relation to the package categories described in section 3.4., and represent levels of dependency
• unit names in bold are those which the programmer using VAGAS will always need, even if s/he supplies all other components; those underlined are consequently always present in any working program, even when not explicitly included
• letters in italic after a package name indicate the other packages which are directly used by it, in its Ada "with" clause
• a * after a package name indicates that the package is generic, requiring the user to provide constants, types and/or sub-programs in order to instantiate it into a working package
• letters after a * indicate packages which will often be used as sources of instantiation sub-programs, to implement common GA variations, as they are designed for just this purpose.