bool Genome::same(const Genome& other) const { if(!(valid() && other.valid())) return false; if(other.m_Alleles.size()!=m_Alleles.size()) return false; for(int i=0;i<m_Alleles.size();i++) { if(m_Alleles[i].first!=other.m_Alleles[i].first || m_Alleles[i].second!=other.m_Alleles[i].second) return false; } return true; }
bool Genome::operator==(const Genome& other) const { if(valid() && other.valid()) return fitness()==other.fitness(); return false; }
bool Genome::operator>(const Genome& other) const { if(valid() && other.valid()) return fitness()>other.fitness(); return valid(); }