#pragma once #include /* Разница между значениями генов и признаков состоит в том, что значения генов наследуются "как есть" (за исключением мутаций), а значения признаков вычисляются исходя из 1) значений генов двух аллельных вариантов 2) генетического и/или аллельного окружения генов в хромосоме 3) плейотропии и/или полигении 4) внутреннего состояния организма (в т.ч. и возраст???) 5) окружающей среды, субстраты, стресс и т.д. */ class Gene { friend class Derevyanko2015RecpmbinationStrategy; public: enum GeneType { Continious, Discrete, Sequence }; typedef unsigned int idType; protected: GeneType geneType; // Дискретный или непрерывный idType ID; // Идентификатор std::string name; // Название признака float geneValueCont;// Значение признака, если он непрерывный int geneValueDiscr; // Значение признака, если он дискретный std::string sequence; public: Gene(idType _ID, std::string _name, float value); Gene(idType _ID, std::string _name, int value); Gene(idType _ID, std::string _name, std::string seq); GeneType getGeneType() const { return geneType; } idType getID() const { return ID; } std::string getName() const { return name; } float getGeneValueCont() const { return geneValueCont; } int getGeneValueDiscr() const { return geneValueDiscr; } std::string getSequence()const { return sequence; } void setName(const std::string& _name) { name = _name; } void setID(idType _ID) { ID = _ID; } void setGeneValue(float _value); void setGeneValue(int _value); void setGeneValue(std::string _seq); };