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"); } }
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); }