Next: , Previous: , Up: Top   [Contents][Index]


2 Implementation

The Software Evolution library is implemented in Common Lisp and is intended for use in Common Lisp programs. Figure 2.1 provides an overview of the Software Evolution system, the specifics of which are given in remainder of this section.

                                                      population functions
 global variables                                     --------------------
 ----------------        +------------------+         incorporate
 *population*            |   *population*   |         evict
 *max-population-size*   |------------------|         tournament
 *tournament-size*       |      list of     |         mutate
 *fitness-predicate*     | software objects |         new-individual
 *cross-chance*          +------------------+         evolve
 *fitness-evals*                  |                   mcmc
 *running*                      +-+-+
                                | | |                 software functions
                         +------------------+         --------------
 evolve arguments        | software object  |         genome
 ----------------        |------------------|         phenome
 max-evals               | edits,           |         copy
 max-time                | fitness          |         pick-good
 target                  | ...              |         pick-bad
 period                  +------------------+         mutate
 period-func                       |                  crossover
 filter                            |
               +---------------+---+------------+----------------+
               |               |                |                |
      +---------------+  +-------------+  +-------------+  +------------+
      |      AST      |  |     ELF     |  |    lisp     |  |    asm     |
      |---------------|  |-------------|  |-------------|  |------------|
      |   Abstract    |  | Executable  |  | lisp source |  |  assembly  |
      |  Syntax Tree  |  |  Linkable   |  +-------------+  |    code    |
      +---------------+  |   Format    |                   +------------+
              |          +-------------+                      |
     +--------------+-------------------+            +------------------+
     |              |                   |            |     asm-range    |
  +-------+  +----------------+   +----------+       |------------------|
  | Clang |  |       CIL      |   |   LLVM   |       | memory efficient |
  |-------|  |----------------|   |----------|       +------------------+
  | C AST |  | C Intermediate |   | LLVM IR  |
  +-------+  |    Language    |   +----------+
             +----------------+

Figure 2.1: Software Evolution API. Exported functions and variables are shown along with the software object class hierarchy.