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  analyzer
 Reports on a given population. More...
class  prng
 The random number generator used by Evocosm. More...
class  globals
 Elements shared by all classes in Evocosm. More...
class  evocosm
 Associates organisms with the components of an evolutionary system. More...
class  evoreal
 Tools for evolving real numbers. More...
class  fopt_global
 Global things used by all optimizer classes. More...
class  function_solution
 A potential solution to the problem at hand. More...
class  function_mutator
 Mutates solutions. More...
class  function_reproducer
 Implements reproduction. More...
class  function_landscape
 Defines the test for a population of solutions. More...
class  function_analyzer
 Reports the state of a population of solutions. More...
class  function_listener
 An listener implementation that ignores all events. More...
class  function_optimizer
 A generic function optimizer. More...
class  fuzzy_machine
 A finite state machine. More...
class  landscape
 An abstract interface defining a fitness landscape. More...
class  listener
 An abstract interface defining a listener. More...
class  null_listener
 An listener implementation that ignores all events. More...
class  machine_tools
class  mutator
 Mutates organisms. More...
class  organism
 An evolving organism. 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  null_scaler
 A do-nothing scaler. More...
class  linear_norm_scaler
 A linear normalization scaler. More...
class  windowed_scaler
 A windowed fitness scaler. More...
class  exponential_scaler
 An exponential fitness scaler. More...
class  quadratic_scaler
 A quadratic scaler. More...
class  sigma_scaler
 A sigma scaler. More...
class  selector
 Selects organisms that survive. More...
class  null_selector
 A do-nothing selector. More...
class  all_selector
 A do-nothing selector. More...
class  elitism_selector
 Implements a elitism selector. More...
class  simple_machine
 A simple finite state machine with integer-indexed states. More...
class  state_machine
 A finite state machine. More...
class  fitness_stats
 Population fitness statistics. More...
class  validation_error
 Standard validation exception. 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.
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.
template<typename Type >
void validate_less (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is less than constraint.
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.
template<typename Type >
void validate_greater (const Type &object, const Type &constraint, const string &message=string())
 Validates that an object is greater than constraint.
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.
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.
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.
template<typename Type >
void enforce_lower_limit (Type &object, const Type &low_value)
 Enforce a lower limit on the value of an object.
template<typename Type >
void enforce_upper_limit (Type &object, const Type &high_value)
 Enforce an upper limit on the value of an object.
template<typename Type >
void enforce_index (Type &object, const Type &array_length)
 Enforce an maximum index on the value of an object.
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.
string build_location_string (const char *filename, long line_no)
 Utility function to create a location string.

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.