/// <summary> /// Converts this IGEPChromosome to its corresponding IDebuggableChromosome. An IDebuggableChromosome is an IChromosome that /// treats the IChromosome's IGenes as a "program". An IDebuggableChromosome can be "stepped" into. /// </summary> /// <returns></returns> public IDebuggableChromosome ToDebuggableChromosome(IGEPChromosomeSurroundings surroundings) { this.LocalGlobalRegistry.Clear(); var debuggableMain = this.Main.ToDebuggableGene(new GEPGeneSurroundings(surroundings, this.CreateGeneExecutionDataDictionary())); return new DebuggableChromosome(debuggableMain); }
/// <summary> /// Given the IGEPChromosome's immediate surroundings (i.e. the "input"), /// "Runs" the IGEPChromosome which results in its Behavior (i.e. the "ouput"). /// </summary> /// <returns></returns> public virtual IGEPChromosomeBehavior Behave(IGEPChromosomeSurroundings surroundings) { this.LocalGlobalRegistry.Clear(); var geneBehavior = this.Main.Behave(new GEPGeneSurroundings(chromosomeSurroundings: surroundings, geneExecutionDataDictionary: this.CreateGeneExecutionDataDictionary())); return new GEPChromosomeBehavior(success: geneBehavior.Success); }
/// <summary> /// /// </summary> /// <param name="chromosomeSurroundings">The data passed to the parent IGEPChromosome.</param> /// <param name="geneExecutionDataDictionary">The IGeneExecutionData for each IGEPGene in the parent IGEPOrganism.</param> public GEPGeneSurroundings(IGEPChromosomeSurroundings chromosomeSurroundings, IDictionary<IGeneIdentifier, IGeneExecutionData> geneExecutionDataDictionary) : base(chromosomeSurroundings, geneExecutionDataDictionary) { }
/// <summary> /// /// </summary> /// <param name="chromosomeSurroundings">The data passed to the parent IGEPChromosome.</param> /// <param name="geneExecutionDataDictionary">The IGeneExecutionData for each IGEPGene in the parent IGEPOrganism.</param> protected GEPGeneSurroundingsBase(IGEPChromosomeSurroundings chromosomeSurroundings, IDictionary<IGeneIdentifier, IGeneExecutionData> geneExecutionDataDictionary) : base(chromosomeSurroundings) { this.GeneExecutionDataDictionary = geneExecutionDataDictionary; }