public static IChromosome CopyChromosome
        (
            this ISwitchableGroupGenome switchableGroupGenome,
            IRando randy,
            double mutationRate,
            double insertionRate,
            double deletionRate
        )
        {
            switch (switchableGroupGenome.SwitchableGroupGenomeType)
            {
            case SwitchableGroupGenomeType.UInt:
                var chrom = (IChromosome <IGeneUintModN>)switchableGroupGenome.Chromosome;
                return(chrom.StandardPropigate(randy, mutationRate, insertionRate, deletionRate));

            case SwitchableGroupGenomeType.ULong:
                var chrom2 = (IChromosome <IGeneUlongModN>)switchableGroupGenome.Chromosome;
                return(chrom2.StandardPropigate(randy, mutationRate, insertionRate, deletionRate));

            case SwitchableGroupGenomeType.BitArray:
                var chrom3 = (IChromosome <IGeneBits>)switchableGroupGenome.Chromosome;
                return(chrom3.StandardPropigate(randy, mutationRate, insertionRate, deletionRate));

            case SwitchableGroupGenomeType.IntArray:
                var chrom4 = (IChromosome <IGenePermutation>)switchableGroupGenome.Chromosome;
                return(chrom4.StandardPropigate(randy, mutationRate, insertionRate, deletionRate));

            default:
                throw new Exception("SwitchableGroupGenomeType not handled");
            }
        }
Beispiel #2
0
        public static ISwitchableGroup ToSwitchableGroup(this ISwitchableGroupGenome genome)
        {
            switch (genome.SwitchableGroupGenomeType)
            {
            case SwitchableGroupGenomeType.UInt:

                return(((IChromosome <IGeneUintModN>)genome.Chromosome)
                       .Blocks.Select(b => b.Val.ToSwitchableUint(genome.KeyCount))
                       .ToSwitchableGroup(genome.Guid, genome.KeyCount));

            case SwitchableGroupGenomeType.ULong:

                return(((IChromosome <IGeneUlongModN>)genome.Chromosome)
                       .Blocks.Select(b => b.Val.ToSwitchableUlong(genome.KeyCount))
                       .ToSwitchableGroup(genome.Guid, genome.KeyCount));

            case SwitchableGroupGenomeType.BitArray:

                return(((IChromosome <IGeneBits>)genome.Chromosome)
                       .Blocks.Select(b => b.Bits.ToSwitchableBitArray())
                       .ToSwitchableGroup(genome.Guid, genome.KeyCount));

            case SwitchableGroupGenomeType.IntArray:

                return(((IChromosome <IGenePermutation>)genome.Chromosome)
                       .Blocks.Select(b => b.Items.ToSwitchableIntArray())
                       .ToSwitchableGroup(genome.Guid, genome.KeyCount));

            default:
                throw new Exception(string.Format("SwitchableGroupGenomeType: {0} unkown", genome.SwitchableGroupGenomeType));
            }
        }
 public static object SwitchableGroupRefScore(ISwitchableGroupGenome switchableGroupGenome)
 {
     return(0);
 }