public int IndexOf(IGEPOrganism item) { return base.IndexOf(item: item); }
public void Insert(int index, IGEPOrganism item) { base.Insert(index: index, item: item); }
public void CopyTo(IGEPOrganism[] array, int arrayIndex) { base.CopyTo(array: array, arrayIndex: arrayIndex); }
public bool Remove(IGEPOrganism item) { return base.Remove(item: item); }
public void Add(IGEPOrganism item) { base.Add(organism: item); }
public bool Contains(IGEPOrganism item) { return base.Contains(item: item); }
public GEPPhenome(IGEPOrganism organism, IGEPSurroundings surroundings) : base(organism: organism, surroundings: surroundings) { }
public GEPGenome(IGEPOrganism organism) : base(organism) { }
protected GEPPhenomeBase(IGEPOrganism organism, IGEPSurroundings surroundings) : base(organism: organism, surroundings: surroundings) { }
protected GEPGenomeBase(IGEPOrganism organism) : base(organism) { }
private double GetValue(IGEPOrganism organism, params IRegistry[] inputs) { return inputs.Sum(input => RateOrganism(organism, input)) / inputs.Length; }
private double RateOrganism(IGEPOrganism o, IRegistry inputRegistry) { var behavior = o.Behave(new GEPSurroundings(inputRegistry)); const double worstFitness = 15000; if (behavior.Success) { var resultsRegistry = o.ResultsRegistry; resultsRegistry.MoveToZero(); var resultValue = resultsRegistry.Read().Value; if (double.IsNaN(resultValue) || double.IsInfinity(resultValue)) return worstFitness; var desiredOutput = this.Function(inputRegistry.ReadAt(0).Value); var fitness = Math.Abs(resultValue - desiredOutput); if(double.IsNaN(fitness) || double.IsInfinity(fitness)) return worstFitness; return fitness; } else return worstFitness; }
private IRegistry GetInputRegistry(IGEPOrganism o, double valueAtZeroPosition) { var inputRegistry = new Registry(o.Parent.InputRegistryIdentifier, RegistryType.Input, readOnly: false); inputRegistry.Write(new AminoAcidResult(valueAtZeroPosition)); inputRegistry.ReadOnly = true; return inputRegistry; }