Ejemplo n.º 1
0
        public override void MutateGene(Gene <Synapse> targetGene)
        {
            var randomDeltaWeight = RandomInst.NextDouble()
                                    * 2 * weightMutRange - weightMutRange;

            targetGene.Val = new Synapse(
                targetGene.Val.transmitter,
                targetGene.Val.receiver,
                targetGene.Val.weight + randomDeltaWeight);
        }
Ejemplo n.º 2
0
        private Gene <char> NewRandomGene(int i)
        {
            Gene <char> rs;

            rs = new Gene <char>(i)
            {
                Val = Chars[RandomInst.Next(Chars.Length)]
            };
            return(rs);
        }
Ejemplo n.º 3
0
 public void Mutate(IGenome <T> target)
 {
     foreach (var gene in target.Genes)
     {
         if (RandomInst.NextDouble() <= GeneMutationChance)
         {
             MutateGene(gene);
         }
     }
 }
Ejemplo n.º 4
0
        public override void MutateGene(Gene <char> targetGene)
        {
            int newIndex;

            newIndex  = Chars.IndexOf(targetGene.Val);
            newIndex += RandomInst.Next(-MutationRange, MutationRange);
            if (newIndex < 0)
            {
                newIndex += Chars.Length;
            }
            else if (newIndex >= Chars.Length)
            {
                newIndex -= Chars.Length;
            }
            targetGene.Val = Chars[newIndex];
        }
Ejemplo n.º 5
0
 public override void MutateGene(Gene <int> targetGene)
 {
     targetGene.Val += RandomInst.Next(-MutationRange, MutationRange);
 }
 protected double RandomWeight()
 {
     return(RandomInst.NextDouble() * 2 * WeightRange -
            WeightRange);
 }