Created by Scott Robert Ladd at Coyote Gulch Productions.
#include <fuzzy_machine.h>
A fuzzy state machine differs from a finite state machine in the selection of state transitions and outputs. In a finite state machine, each input maps to specific output and state transitions for a given current state. The fuzzy state machine contains probability maps for outputs and inputs; for any given state an input, there is a probability that any valid output could be returned, for example.
InSize | Number of input states | |
OutSize | Number of output states |
libevocosm::fuzzy_machine< InSize, OutSize >::fuzzy_machine | ( | size_t | a_size, | |
double | a_output_base, | |||
double | a_output_range, | |||
double | a_state_base, | |||
double | a_state_range | |||
) | [inline] |
Creates a new finite state machine with a given number of states. The four weight values define the range of weights assigned to outputs and state transitions; the actual roulette tables are randomized in the range (base,base+range).
a_size | - Initial number of states in this machine | |
a_output_base | - Minimum (base) value for an output roulette wheel weight | |
a_output_range | - Range for an output roulette wheel weight | |
a_state_base | - Minimum (base) value for a new roulette wheel weight | |
a_state_range | - Range for a new state roulette wheel weight |
libevocosm::fuzzy_machine< InSize, OutSize >::fuzzy_machine | ( | size_t | a_size | ) | [inline] |
Creates a new finite state machine with a given number of states.
a_size | - Initial number of states in this machine |
libevocosm::fuzzy_machine< InSize, OutSize >::fuzzy_machine | ( | const fuzzy_machine< InSize, OutSize > & | a_parent1, | |
const fuzzy_machine< InSize, OutSize > & | a_parent2 | |||
) | [inline] |
Creates a new fuzzy_machine by combining the states of two parent machines.
libevocosm::fuzzy_machine< InSize, OutSize >::fuzzy_machine | ( | const fuzzy_machine< InSize, OutSize > & | a_source | ) | [inline] |
Creates a new fuzzy_machine identical to an existing one.
a_source | - Object to be copied |
libevocosm::fuzzy_machine< InSize, OutSize >::~fuzzy_machine | ( | ) | [inline, virtual] |
Does nothing in the base class; exists to allow destruction of derived class objects through base class (fuzzy_machine) pointers.
fuzzy_machine< InSize, OutSize > & libevocosm::fuzzy_machine< InSize, OutSize >::operator= | ( | const fuzzy_machine< InSize, OutSize > & | a_source | ) | [inline] |
Sets an existing fuzzy_machine to duplicate another.
a_source | - Object to be copied |
void libevocosm::fuzzy_machine< InSize, OutSize >::mutate | ( | double | a_rate | ) | [inline] |
Mutates a finite state machine object. The four mutations supported are:
a_rate | - Chance that any given state will mutate |
void libevocosm::fuzzy_machine< InSize, OutSize >::set_mutation_weight | ( | mutation_id | a_type, | |
double | a_weight | |||
) | [inline, static] |
Sets the weight value associated with a specific mutation; this changes the relative chance of this mutation happening.
a_type | - ID of the weight to be changed | |
a_weight | - New weight to be assigned |
size_t libevocosm::fuzzy_machine< InSize, OutSize >::transition | ( | size_t | a_input | ) | [inline] |
Based on an input symbol, this function changes the state of an fuzzy_machine and returns an output symbol.
a_input | - An input symbol |
void libevocosm::fuzzy_machine< InSize, OutSize >::reset | ( | ) | [inline] |
Prepares the FSM to start running from its initial state.
size_t libevocosm::fuzzy_machine< InSize, OutSize >::size | ( | ) | const [inline] |
Returns the size of a fuzzy_machine.
const fuzzy_machine< InSize, OutSize >::tranout_t & libevocosm::fuzzy_machine< InSize, OutSize >::get_transition | ( | size_t | a_state, | |
size_t | a_input | |||
) | const [inline] |
Get a transition from the internal state table.
a_state | - Target state | |
a_input | - State information to return |
size_t libevocosm::fuzzy_machine< InSize, OutSize >::num_input_states | ( | ) | const [inline] |
Returns the number of input states
size_t libevocosm::fuzzy_machine< InSize, OutSize >::num_output_states | ( | ) | const [inline] |
Returns the number of output states
size_t libevocosm::fuzzy_machine< InSize, OutSize >::init_state | ( | ) | const [inline] |
Returns the initial (start up) state.
size_t libevocosm::fuzzy_machine< InSize, OutSize >::current_state | ( | ) | const [inline] |
Returns the current (active) state.
tranout_t*** libevocosm::fuzzy_machine< InSize, OutSize >::state_table | ( | ) | [inline] |
Returns the state transition table pointer.
This is a very dangerous function, as it gives unrestricted access to the transition table that defines a machine. Given the complexity of fuzzy state machines, I implemented this function for debugging purposes; it is not intended as a tool for directly altering the transition table. /return Pointer to the transition table for the target machine
© 1996-2005 Scott Robert Ladd. All rights reserved.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.