using System; using System.Threading.Tasks; namespace AForge.Genetic { public abstract class ChromosomeBase : IChromosome, IComparable { public Guid ID; public double? fitness=null; public double Fitness { get { while (fitness == null) ; if (fitness is double f) //while (fitness == null) ; //return fitness??0; return f; else return 999999; } } public double[] AttemptArray = null; public abstract void Generate(); public abstract IChromosome CreateNew(); public abstract IChromosome Clone(); public abstract void Mutate(); public abstract void Crossover(IChromosome pair); public virtual void Evaluate(IFitnessFunction function) { fitness = function.Evaluate(this); } public int CompareTo(object o) { double num = ((ChromosomeBase)o).Fitness; if (fitness != num) { if (!(fitness < num)) { return -1; } return 1; } return 0; } } }