Program Listing for File EfficientHost.h¶
↰ Return to documentation for file (source/efficient_mode/EfficientHost.h
)
#ifndef EFFHOST_H
#define EFFHOST_H
#include "../default_mode/Host.h"
#include "EfficientWorld.h"
class EfficientHost: public Host {
protected:
double efficiency;
emp::Ptr<EfficientWorld> my_world = NULL;
public:
EfficientHost(emp::Ptr<emp::Random> _random, emp::Ptr<EfficientWorld> _world, emp::Ptr<SymConfigBase> _config,
double _intval =0.0, emp::vector<emp::Ptr<Organism>> _syms = {},
emp::vector<emp::Ptr<Organism>> _repro_syms = {},
double _points = 0.0, double _efficient = 0.1) :
Host(_random, _world, _config, _intval, _syms, _repro_syms, _points) {
efficiency = _efficient;
my_world = _world;
}
EfficientHost(const EfficientHost &) = default;
EfficientHost(EfficientHost &&) = default;
EfficientHost() = default;
std::string const GetName() {
return "EfficientHost";
}
void SetEfficiency(double _in) {
if(_in > 1 || _in < 0) throw "Invalid efficiency chance. Must be between 0 and 1 (inclusive)";
efficiency = _in;
}
double GetEfficiency() {return efficiency;}
emp::Ptr<Organism> MakeNew(){
emp::Ptr<EfficientHost> host_baby = emp::NewPtr<EfficientHost>(random, my_world, my_config, GetIntVal());
host_baby->SetEfficiency(GetEfficiency());
return host_baby;
}
};
#endif