private Behaviour <TGenome> EvaluateGenome(TGenome genome) { TPhenome phenome = (TPhenome)genome.CachedPhenome; if (null == phenome) { // Decode the phenome and store a ref against the genome. phenome = _genomeDecoder.Decode(genome); genome.CachedPhenome = phenome; } if (null == phenome) { // Non-viable genome. return(new Behaviour <TGenome>(genome, ObjectiveCount) { NonViable = true }); } // Evaluate the genome! Behaviour <TGenome> behaviour = new Behaviour <TGenome>(genome, ObjectiveCount); behaviour.Evaluation = _phenomeEvaluator.Evaluate(phenome); return(behaviour); }