Evocosm - A C++ Framework for Evolutionary Computing

Main Index

Created by Scott Robert Ladd at Coyote Gulch Productions.


Classes | Functions
libevocosm Namespace Reference

A toolkit and framework for implementing evolutionary algorithms. More...

Classes

class  all_selector
 A do-nothing selector. More...
 
class  analyzer
 Reports on a given population. More...
 
class  elitism_selector
 Implements a elitism selector. More...
 
class  evocosm
 Associates organisms with the components of an evolutionary system. More...
 
class  evoreal
 Tools for evolving real numbers. More...
 
class  exponential_scaler
 An exponential fitness scaler. More...
 
class  fitness_stats
 Population fitness statistics. More...
 
class  fopt_global
 Global things used by all optimizer classes. More...
 
class  function_analyzer
 Reports the state of a population of solutions. More...
 
class  function_landscape
 Defines the test for a population of solutions. More...
 
class  function_listener
 An listener implementation that ignores all events. More...
 
class  function_mutator
 Mutates solutions. More...
 
class  function_optimizer
 A generic function optimizer. More...
 
class  function_reproducer
 Implements reproduction. More...
 
class  function_solution
 A potential solution to the problem at hand. More...
 
class  fuzzy_machine
 A finite state machine. More...
 
class  globals
 Elements shared by all classes in Evocosm. More...
 
class  landscape
 An abstract interface defining a fitness landscape. More...
 
class  linear_norm_scaler
 A linear normalization scaler. More...
 
class  listener
 An abstract interface defining a listener. More...
 
class  machine_tools
 A set of common tools for finite state machines. More...
 
class  mutator
 Mutates organisms. More...
 
class  null_listener
 An listener implementation that ignores all events. More...
 
class  null_scaler
 A do-nothing scaler. More...
 
class  null_selector
 A do-nothing selector. More...
 
class  organism
 An evolving organism. More...
 
class  population
 
class  prng
 The random number generator used by Evocosm. More...
 
class  quadratic_scaler
 A quadratic scaler. More...
 
class  reproducer
 Creates new organisms from an existing population. More...
 
class  roulette_wheel
 A simulated roulette wheel for weighted selection. More...
 
class  scaler
 Fitness scaling for a population. More...
 
class  selector
 Selects organisms that survive. More...
 
class  sigma_scaler
 A sigma scaler. More...
 
class  simple_machine
 A simple finite state machine with integer-indexed states. More...
 
class  state_machine
 A finite state machine. More...
 
class  validation_error
 Standard validation exception. More...
 
class  windowed_scaler
 A windowed fitness scaler. More...
 

Functions

template<typename Type >
void validate_equals (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object has a specific value. More...
 
template<typename Type >
void validate_not (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object does not have a specific value. More...
 
template<typename Type >
void validate_less (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is less than constraint. More...
 
template<typename Type >
void validate_less_eq (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is less than or equal to constraint. More...
 
template<typename Type >
void validate_greater (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is greater than constraint. More...
 
template<typename Type >
void validate_greater_eq (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is greater than or equal to constraint. More...
 
template<typename Type >
void validate_range (const Type &object, const Type &low_bound, const Type &high_bound, const string &message=string())
 Validates that an object has a value in a specified range. More...
 
template<typename Type , typename Predicate >
void validate_with (const Type &object, const Predicate &constraint, const string &message=string())
 Validates an object with a given predicate. More...
 
template<typename Type >
void enforce_lower_limit (Type &object, const Type &low_value)
 Enforce a lower limit on the value of an object. More...
 
template<typename Type >
void enforce_upper_limit (Type &object, const Type &high_value)
 Enforce an upper limit on the value of an object. More...
 
template<typename Type >
void enforce_index (Type &object, const Type &array_length)
 Enforce an maximum index on the value of an object. More...
 
template<typename Type >
void enforce_range (Type &object, const Type &low_value, const Type &high_value)
 Enforce an range limit on the value of an object. More...
 
string build_location_string (const char *filename, long line_no)
 Utility function to create a location string. More...
 

Detailed Description

Evocosm classes abstract the fundamental components of an evolutionary algorithm. Evolutionary algorithms come in a variety of shapes and flavors, but at their core, they all share certain characteristics: populations that reproduce and mutate through a series of generations, producing future generations based on some measure of fitness. An amazing variety of algorithms can be built on that general framework, which lead me to construct a set of core classes as the basis for future applications.

Function Documentation

string libevocosm::build_location_string ( const char *  filename,
long  line_no 
)
inline

This function formats a string from a given file name and line number. If C++ incorporates parts of C99, this function could be extended to support the __func__ macro that names the current function.

Parameters
filenameThe name of a file, usually the Standard C __FILE__ macro
line_noA line number in the file, usually the Standard C __LINE__ macro
See also
LIBEVOCOSM_LOCATION
template<typename Type >
void libevocosm::enforce_index ( Type &  object,
const Type &  array_length 
)

If object's value is greater than or equal to array_length, as per the >= operator, object will be set equal to array_length.

Parameters
objectObject to undergo enforcement
array_lengthLength of array that object must address
template<typename Type >
void libevocosm::enforce_lower_limit ( Type &  object,
const Type &  low_value 
)

If object's value is less than low_value, as per the < operator, object will be set equal to low_value.

Parameters
objectObject to undergo enforcement
low_valueLower limit on the value of object
template<typename Type >
void libevocosm::enforce_range ( Type &  object,
const Type &  low_value,
const Type &  high_value 
)

If object's value is less than low_value, as per the < operator, object will be set equal to low_value. If object's value is greater than high_value, as per the > operator, object will be set equal to high_value.

Parameters
objectObject to undergo enforcement
low_valueLower limit on the value of object
high_valueUpper limit on the value of object
template<typename Type >
void libevocosm::enforce_upper_limit ( Type &  object,
const Type &  high_value 
)

If object's value is greater than high_value, as per the > operator, object will be set equal to high_value.

Parameters
objectObject to undergo enforcement
high_valueUpper limit on the value of object
template<typename Type >
void libevocosm::validate_equals ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value is not equal to constraint, as defined by the appropriate == operator, this function throws a validation_error.

Parameters
objectObject to be tested against constraint
constraintExpected value of object
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_greater ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value is less than or equal to constraint (using the <= operator), this function throws a validation_error.

Parameters
objectObject to be tested
constraintObject must be > than this value
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_greater_eq ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value is less than or equal to constraint (using the <= operator), this function throws a validation_error.

Parameters
objectObject to be tested
constraintObject must be > than this value
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_less ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value is greater than or equal to constraint (using the >= operator), this function throws a validation_error.

Parameters
objectObject to be tested
constraintObject must be < than this value
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_less_eq ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value is greater than or equal to constraint (using the >= operator), this function throws a validation_error.

Parameters
objectObject to be tested
constraintObject must be < than this value
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_not ( const Type &  object,
const Type &  constraint,
const string &  message = string() 
)

If value equals the constraint, as defined by the appropriate == operator, this function throws a validation_error.

Parameters
objectObject to be tested against constraint
constraintValue that object should not equal
messageAdditional text to be included in a validation_error
template<typename Type >
void libevocosm::validate_range ( const Type &  object,
const Type &  low_bound,
const Type &  high_bound,
const string &  message = string() 
)

If value is less than low_bound (using the < operator) or greater than high_bound (using the > operator), this function throws a validation_error. The function does not verify that low_bound is less than high_bound.

Parameters
objectObject to be tested
low_boundLow boundary (inclusive) on value of object
high_boundHigh boundary (inclusive) on value of object
messageAdditional text to be included in a validation_error
template<typename Type , typename Predicate >
void libevocosm::validate_with ( const Type &  object,
const Predicate &  constraint,
const string &  message = string() 
)

If predicate(object) is false – indicating an invalid object in the context defined by predicate – this function throws a validation_error.

Parameters
objectObject to be tested against the predicate
constraintA function or functor returning true for valid objects and false for an invalid object
messageAdditional text to be included in a validation_error

© 1996-2005 Scott Robert Ladd. All rights reserved.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.