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;
|
}
|
|
public bool isValid()
|
{
|
return true;
|
}
|
}
|
}
|