예제 #1
0
        private List <Antibody> Mutation(List <Antibody> antibodies)
        {
            foreach (var antibody in antibodies)
            {
                var rate          = _distance.CalculateMutationRate(antibody.Affinity, antibody.Length);
                var mutateAmount  = (int)(antibody.Length * rate);
                var sequenceIndex = Constants.Random.Next(0, antibody.Length);
                var sequence      = antibody.Sequence;

                for (int j = 0; j < mutateAmount; j++)
                {
                    var nucleotideOrAminoacid = GenerateSequences();
                    sequence[sequenceIndex] = nucleotideOrAminoacid;
                    antibody.Sequence       = sequence;
                    sequenceIndex           = Constants.Random.Next(0, antibody.Length);
                }
            }

            return(antibodies);
        }