Empirical
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
emp::AvidaGP Class Reference

#include <AvidaGP.h>

Inheritance diagram for emp::AvidaGP:
emp::AvidaCPU_Base< AvidaGP >

Public Types

using base_t = AvidaCPU_Base< AvidaGP >
 
using genome_t = Genome
 
using inst_lib_t = AvidaCPU_InstLib< hardware_t, arg_t, INST_ARGS >
 
using this_t = AvidaCPU_Base< AvidaGP >
 
using hardware_t = AvidaGP
 
using inst_t = Instruction
 
using arg_t = size_t
 
using stack_t = emp::vector< double >
 
using arg_set_t = emp::array< arg_t, INST_ARGS >
 

Public Member Functions

 AvidaGP (const genome_t &in_genome)
 
 AvidaGP (Ptr< const inst_lib_t > inst_lib)
 
 AvidaGP (const inst_lib_t &inst_lib)
 
 AvidaGP ()=default
 
 AvidaGP (const AvidaGP &)=default
 
 AvidaGP (AvidaGP &&)=default
 
virtual ~AvidaGP ()
 
void ExitScope ()
 
bool UpdateScope (size_t new_scope, ScopeType type=ScopeType::BASIC)
 
void BypassScope (size_t scope)
 
bool operator< (const this_t &other) const
 
void Reset ()
 Reset the entire CPU to a starting state, without a genome. More...
 
virtual void ResetHardware ()
 Reset just the CPU hardware, but keep the genome and traits. More...
 
void ResetIP ()
 Reset the instruction pointer to the beginning of the genome AND reset scope. More...
 
Ptr< const inst_lib_tGetInstLib () const
 
inst_t GetInst (size_t pos) const
 
const genome_tGetGenome () const
 
const size_t GetSize () const
 
double GetReg (size_t id) const
 
double GetInput (int id) const
 
const std::unordered_map< int, double > & GetInputs () const
 
size_t GetNumInputs () const
 
double GetOutput (int id) const
 
const std::unordered_map< int, double > & GetOutputs () const
 
size_t GetNumOutputs () const
 
const stack_tGetStack (size_t id) const
 
int GetFunStart (size_t id) const
 
size_t GetIP () const
 
emp::vector< ScopeInfo > GetScopeStack () const
 
size_t CurScope () const
 
ScopeType CurScopeType () const
 
ScopeType GetScopeType (size_t id)
 
emp::vector< RegBackup > GetRegStack () const
 
emp::vector< size_t > GetCallStack () const
 
size_t GetNumErrors () const
 
double GetTrait (size_t id) const
 
const emp::vector< double > & GetTraits ()
 
size_t GetNumTraits () const
 
void SetInst (size_t pos, const inst_t &inst)
 
void SetInst (size_t pos, size_t id, size_t a0=0, size_t a1=0, size_t a2=0)
 
void SetGenome (const genome_t &g)
 
void SetReg (size_t id, double val)
 
void SetInput (int input_id, double value)
 
void SetInputs (const std::unordered_map< int, double > &vals)
 
void SetInputs (std::unordered_map< int, double > &&vals)
 
void SetOutput (int output_id, double value)
 
void SetOutputs (const std::unordered_map< int, double > &vals)
 
void SetOutputs (std::unordered_map< int, double > &&vals)
 
double PopStack (size_t id)
 
void PushStack (size_t id, double value)
 
void SetFunStart (size_t id, int value)
 
void SetIP (size_t pos)
 
void PushRegInfo (size_t scope_id, size_t reg_id)
 
void PushCallInfo (size_t pos)
 
void IncErrors ()
 
void SetTrait (size_t id, double val)
 
void PushTrait (double val)
 
inst_t GetRandomInst (Random &rand)
 
void RandomizeInst (size_t pos, Random &rand)
 
void PushInst (size_t id, size_t a0=0, size_t a1=0, size_t a2=0)
 
void PushInst (const std::string &name, size_t a0=0, size_t a1=0, size_t a2=0)
 
void PushInst (const Instruction &inst)
 
void PushInst (Instruction &&inst)
 
void PushInstString (std::string info)
 
void PushRandom (Random &rand, const size_t count=1)
 
bool Load (std::istream &input)
 
bool Load (const std::string &filename)
 
void ProcessInst (const inst_t &inst)
 Process a specified instruction, provided by the caller. More...
 
size_t InstScope (const inst_t &inst) const
 Determine the scope associated with a particular instruction. More...
 
void SingleProcess ()
 Process the NEXT instruction pointed to be the instruction pointer. More...
 
void Process (size_t num_inst)
 Process the next SERIES of instructions, directed by the instruction pointer. More...
 
void PrintInst (const inst_t &inst, std::ostream &os=std::cout) const
 Print out a single instruction, with its arguments. More...
 
void PrintGenome (std::ostream &os=std::cout) const
 Print out this program. More...
 
void PrintGenome (const std::string &filename) const
 
size_t PredictNextInst () const
 Figure out which instruction is going to actually be run next SingleProcess() More...
 
void PrintState (std::ostream &os=std::cout) const
 Print out the state of the virtual CPU. More...
 
void Trace (size_t num_inst, std::ostream &os=std::cout)
 Trace the instructions being exectured, with full CPU details. More...
 
void Trace (size_t num_inst, const std::string &filename)
 

Public Attributes

genome_t genome
 
emp::array< double, CPU_SIZEregs
 
std::unordered_map< int, double > inputs
 
std::unordered_map< int, double > outputs
 
emp::array< stack_t, CPU_SIZEstacks
 
emp::array< int, CPU_SIZEfun_starts
 
size_t inst_ptr
 
emp::vector< ScopeInfo > scope_stack
 
emp::vector< RegBackup > reg_stack
 
emp::vector< size_t > call_stack
 
size_t errors
 
emp::vector< double > traits
 

Static Public Attributes

static constexpr size_t CPU_SIZE
 
static constexpr size_t INST_ARGS
 
static constexpr size_t STACK_CAP
 

Member Typedef Documentation

using emp::AvidaCPU_Base< AvidaGP >::arg_t = size_t
inherited
using emp::AvidaCPU_Base< HARDWARE >::genome_t = Genome
using emp::AvidaCPU_Base< AvidaGP >::stack_t = emp::vector<double>
inherited

Constructor & Destructor Documentation

emp::AvidaGP::AvidaGP ( const genome_t in_genome)
inline
emp::AvidaGP::AvidaGP ( Ptr< const inst_lib_t inst_lib)
inline
emp::AvidaGP::AvidaGP ( const inst_lib_t inst_lib)
inline
emp::AvidaGP::AvidaGP ( )
default
emp::AvidaGP::AvidaGP ( const AvidaGP )
default
emp::AvidaGP::AvidaGP ( AvidaGP &&  )
default
virtual emp::AvidaGP::~AvidaGP ( )
inlinevirtual

Member Function Documentation

void emp::AvidaCPU_Base< AvidaGP >::BypassScope ( size_t  scope)
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::CurScope ( ) const
inlineinherited
ScopeType emp::AvidaCPU_Base< AvidaGP >::CurScopeType ( ) const
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::ExitScope ( )
inlineinherited
emp::vector<size_t> emp::AvidaCPU_Base< AvidaGP >::GetCallStack ( ) const
inlineinherited
int emp::AvidaCPU_Base< AvidaGP >::GetFunStart ( size_t  id) const
inlineinherited
const genome_t& emp::AvidaCPU_Base< AvidaGP >::GetGenome ( ) const
inlineinherited
double emp::AvidaCPU_Base< AvidaGP >::GetInput ( int  id) const
inlineinherited
const std::unordered_map<int,double>& emp::AvidaCPU_Base< AvidaGP >::GetInputs ( ) const
inlineinherited
inst_t emp::AvidaCPU_Base< AvidaGP >::GetInst ( size_t  pos) const
inlineinherited
Ptr<const inst_lib_t> emp::AvidaCPU_Base< AvidaGP >::GetInstLib ( ) const
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::GetIP ( ) const
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::GetNumErrors ( ) const
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::GetNumInputs ( ) const
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::GetNumOutputs ( ) const
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::GetNumTraits ( ) const
inlineinherited
double emp::AvidaCPU_Base< AvidaGP >::GetOutput ( int  id) const
inlineinherited
const std::unordered_map<int,double>& emp::AvidaCPU_Base< AvidaGP >::GetOutputs ( ) const
inlineinherited
inst_t emp::AvidaCPU_Base< AvidaGP >::GetRandomInst ( Random rand)
inlineinherited
double emp::AvidaCPU_Base< AvidaGP >::GetReg ( size_t  id) const
inlineinherited
emp::vector<RegBackup> emp::AvidaCPU_Base< AvidaGP >::GetRegStack ( ) const
inlineinherited
emp::vector<ScopeInfo> emp::AvidaCPU_Base< AvidaGP >::GetScopeStack ( ) const
inlineinherited
ScopeType emp::AvidaCPU_Base< AvidaGP >::GetScopeType ( size_t  id)
inlineinherited
const size_t emp::AvidaCPU_Base< AvidaGP >::GetSize ( ) const
inlineinherited
const stack_t& emp::AvidaCPU_Base< AvidaGP >::GetStack ( size_t  id) const
inlineinherited
double emp::AvidaCPU_Base< AvidaGP >::GetTrait ( size_t  id) const
inlineinherited
const emp::vector<double>& emp::AvidaCPU_Base< AvidaGP >::GetTraits ( )
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::IncErrors ( )
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::InstScope ( const inst_t inst) const
inherited

Determine the scope associated with a particular instruction.

bool emp::AvidaCPU_Base< AvidaGP >::Load ( std::istream &  input)
inherited
bool emp::AvidaCPU_Base< AvidaGP >::Load ( const std::string &  filename)
inlineinherited
bool emp::AvidaCPU_Base< AvidaGP >::operator< ( const this_t other) const
inlineinherited
double emp::AvidaCPU_Base< AvidaGP >::PopStack ( size_t  id)
inlineinherited
size_t emp::AvidaCPU_Base< AvidaGP >::PredictNextInst ( ) const
inherited

Figure out which instruction is going to actually be run next SingleProcess()

void emp::AvidaCPU_Base< AvidaGP >::PrintGenome ( std::ostream &  os = std::cout) const
inherited

Print out this program.

void emp::AvidaCPU_Base< AvidaGP >::PrintGenome ( const std::string &  filename) const
inherited
void emp::AvidaCPU_Base< AvidaGP >::PrintInst ( const inst_t inst,
std::ostream &  os = std::cout 
) const
inherited

Print out a single instruction, with its arguments.

void emp::AvidaCPU_Base< AvidaGP >::PrintState ( std::ostream &  os = std::cout) const
inherited

Print out the state of the virtual CPU.

void emp::AvidaCPU_Base< AvidaGP >::Process ( size_t  num_inst)
inlineinherited

Process the next SERIES of instructions, directed by the instruction pointer.

void emp::AvidaCPU_Base< AvidaGP >::ProcessInst ( const inst_t inst)
inlineinherited

Process a specified instruction, provided by the caller.

void emp::AvidaCPU_Base< AvidaGP >::PushCallInfo ( size_t  pos)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushInst ( size_t  id,
size_t  a0 = 0,
size_t  a1 = 0,
size_t  a2 = 0 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushInst ( const std::string &  name,
size_t  a0 = 0,
size_t  a1 = 0,
size_t  a2 = 0 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushInst ( const Instruction inst)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushInst ( Instruction &&  inst)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushInstString ( std::string  info)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushRandom ( Random rand,
const size_t  count = 1 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushRegInfo ( size_t  scope_id,
size_t  reg_id 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushStack ( size_t  id,
double  value 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::PushTrait ( double  val)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::RandomizeInst ( size_t  pos,
Random rand 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::Reset ( )
inlineinherited

Reset the entire CPU to a starting state, without a genome.

virtual void emp::AvidaCPU_Base< AvidaGP >::ResetHardware ( )
inlinevirtualinherited

Reset just the CPU hardware, but keep the genome and traits.

void emp::AvidaCPU_Base< AvidaGP >::ResetIP ( )
inlineinherited

Reset the instruction pointer to the beginning of the genome AND reset scope.

void emp::AvidaCPU_Base< AvidaGP >::SetFunStart ( size_t  id,
int  value 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetGenome ( const genome_t g)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetInput ( int  input_id,
double  value 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetInputs ( const std::unordered_map< int, double > &  vals)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetInputs ( std::unordered_map< int, double > &&  vals)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetInst ( size_t  pos,
const inst_t inst 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetInst ( size_t  pos,
size_t  id,
size_t  a0 = 0,
size_t  a1 = 0,
size_t  a2 = 0 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetIP ( size_t  pos)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetOutput ( int  output_id,
double  value 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetOutputs ( const std::unordered_map< int, double > &  vals)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetOutputs ( std::unordered_map< int, double > &&  vals)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetReg ( size_t  id,
double  val 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SetTrait ( size_t  id,
double  val 
)
inlineinherited
void emp::AvidaCPU_Base< AvidaGP >::SingleProcess ( )
inlineinherited

Process the NEXT instruction pointed to be the instruction pointer.

void emp::AvidaCPU_Base< AvidaGP >::Trace ( size_t  num_inst,
std::ostream &  os = std::cout 
)
inlineinherited

Trace the instructions being exectured, with full CPU details.

void emp::AvidaCPU_Base< AvidaGP >::Trace ( size_t  num_inst,
const std::string &  filename 
)
inlineinherited
bool emp::AvidaCPU_Base< AvidaGP >::UpdateScope ( size_t  new_scope,
ScopeType  type = ScopeType::BASIC 
)
inlineinherited

Member Data Documentation

emp::vector<size_t> emp::AvidaCPU_Base< AvidaGP >::call_stack
inherited
constexpr size_t emp::AvidaCPU_Base< AvidaGP >::CPU_SIZE
staticinherited
size_t emp::AvidaCPU_Base< AvidaGP >::errors
inherited
emp::array< int, CPU_SIZE > emp::AvidaCPU_Base< AvidaGP >::fun_starts
inherited
genome_t emp::AvidaCPU_Base< AvidaGP >::genome
inherited
std::unordered_map<int, double> emp::AvidaCPU_Base< AvidaGP >::inputs
inherited
constexpr size_t emp::AvidaCPU_Base< AvidaGP >::INST_ARGS
staticinherited
size_t emp::AvidaCPU_Base< AvidaGP >::inst_ptr
inherited
std::unordered_map<int, double> emp::AvidaCPU_Base< AvidaGP >::outputs
inherited
emp::vector<RegBackup> emp::AvidaCPU_Base< AvidaGP >::reg_stack
inherited
emp::array<double, CPU_SIZE> emp::AvidaCPU_Base< AvidaGP >::regs
inherited
emp::vector<ScopeInfo> emp::AvidaCPU_Base< AvidaGP >::scope_stack
inherited
constexpr size_t emp::AvidaCPU_Base< AvidaGP >::STACK_CAP
staticinherited
emp::vector<double> emp::AvidaCPU_Base< AvidaGP >::traits
inherited

The documentation for this class was generated from the following file: