/// <summary> /// Генерировать новый ген для хромосомы. /// </summary> /// <param name="geneIndex">Индекс гена.</param> /// <returns>Новый объект гена.</returns> public override Gene GenerateGene(int geneIndex) { try { return(new Gene(TopologySection.GenerateGeneValue(this, geneIndex))); } catch (Exception ex) { Console.WriteLine("GenerateGene failed! {0}", ex.Message); return(new Gene()); } }
/// <summary> /// Создать новую топологию - декодировать фенотип хромосомы на базе её текущего генотипа. /// </summary> /// <param name="chromosome">Декодируемая хромосома.</param> public Topology(TopologyChromosome chromosome) { try { Sections = new TopologySection[chromosome.CurrentProject.MCZs.Length]; Pathes = new Dictionary <DataAcquisitionSectionPart, IEnumerable <TopologyPath> >(); DecodeSections(chromosome); GroupDADs(chromosome); DecodePathes(chromosome); } catch (Exception ex) { Console.WriteLine("Topology failed! {0}", ex.Message); } }
/// <summary> /// Поочерёдно декодировать каждую секцию хромосомы. /// </summary> /// <param name="chromosome">Декодируемая хромосома.</param> protected void DecodeSections(TopologyChromosome chromosome) { try { for (var sectionIndex = 0; sectionIndex < chromosome.Length / TopologyChromosome.GENES_IN_SECTION; sectionIndex++) { if (Sections[sectionIndex] == null) { Sections[sectionIndex] = new TopologySection(); } Sections[sectionIndex].Decode(chromosome, sectionIndex); } } catch (Exception ex) { Console.WriteLine("DecodeSections failed! {0}", ex.Message); } }