/// <summary> /// Ermittelt alle Nachbarn aus zwei Genomen für ein bestimmtes Allel /// </summary> /// <returns>Liste mit Nachbarn</returns> /// <param name="value">Allel</param> /// <param name="genomeA">Genome A</param> /// <param name="genomeB">Genome B</param> private Genome GetNeighboursOfValue(double value, Genome genomeA, Genome genomeB) { //Kreisgenom simulieren List<double> a = genomeA.ToList(); a.Insert(0,genomeA[genomeA.Count-1]); a.Add(genomeA[0]); List<double> b = genomeB.ToList(); b.Insert(0,genomeB[genomeB.Count-1]); b.Add(genomeB[0]); //Nachbarn Genome neighbours = new Genome(); neighbours.Add(a[genomeA.IndexOf(value)]); neighbours.Add(a[genomeA.IndexOf(value)+2]); neighbours.Add(b[genomeB.IndexOf(value)]); neighbours.Add(b[genomeB.IndexOf(value)+2]); //Doppelte Einträge entfernen und ab damit return new GenomeReal(neighbours.Distinct().ToArray()); }