private List <ArquivoChaves> ProcedureSimpleMutation(List <string> Chaves) { Stopwatch tempo = new Stopwatch(); Random MutacaoRandomico = new Random(); List <ArquivoChaves> Armazenamento = new List <ArquivoChaves>(); tempo.Start(); for (int i = 0; i < filhos.Count; i++) { ArquivoChaves Keys = new ArquivoChaves(); StringBuilder NovaString = new StringBuilder(Chaves[i]); float PorcentagemC = Consecutivo(NovaString.ToString()) / (float)TamanhoKey; float PorcentagemR = Repetir(NovaString.ToString()) / (float)TamanhoKey; float Total = (PorcentagemC + PorcentagemR) / 2; int pontoMutacao = 0; int NovoChar = 0; double u = FuncaoFitness(PorcentagemC, PorcentagemR); Keys.geracao = NovaString.ToString(); Keys.IdU = u; Armazenamento.Add(Keys); /* Console.WriteLine("IND APÓS MUTACAO({0}): {1} *PontoMut:{2} *String:{3} *C:{4}% *R:{5}%",i,NovaString,pontoMutacao,NovoChar,PorcentagemC*100,PorcentagemR*100); * Console.WriteLine("_____________________________________________________________");*/ } tempo.Stop(); TimeSimpleMutation = tempo.Elapsed.TotalMilliseconds; return(Armazenamento); }
private List <ArquivoChaves> ProcedureMultiPermutation(List <string> Chaves) { Stopwatch tempo = new Stopwatch(); List <ArquivoChaves> Armazenamento = new List <ArquivoChaves>(); tempo.Start(); for (int i = 0; i < Chaves.Count; i++) { ArquivoChaves keys = new ArquivoChaves(); StringBuilder NovaString = new StringBuilder(filhos[i]); int TamanhoMax = TamanhoKey / 10; for (int j = 0; j < TamanhoMax; j++) { Random PontoA = new Random(); Random PontoB = new Random(); int Ponto0 = PontoA.Next(0, NovaString.Length); int Ponto1 = PontoB.Next(0, NovaString.Length); char StringA = NovaString[Ponto0]; char StringB = NovaString[Ponto1]; NovaString.Remove(Ponto0, 1); NovaString.Insert(Ponto0, StringB); NovaString.Remove(Ponto1, 1); NovaString.Insert(Ponto1, StringA); } float PorcentagemC = Consecutivo(NovaString.ToString()) / (float)TamanhoKey; float PorcentagemR = Repetir(NovaString.ToString()) / (float)TamanhoKey; double u = FuncaoFitness(PorcentagemC, PorcentagemR); keys.geracao = NovaString.ToString(); keys.IdU = u; Armazenamento.Add(keys); /* Console.WriteLine("________________________________________________________"); * Console.WriteLine(" IND APÓS MUTACAO({0}): {1} *C:{2}% *R:{3}%", i, NovaString, PorcentagemC*100, PorcentagemR * 100); * Console.WriteLine("_____________________________________________________________");*/ } tempo.Stop(); TimeMultiPermutation = tempo.Elapsed.TotalMilliseconds; return(Armazenamento); }
private List <ArquivoChaves> ProcedureMutationPermutation(List <string> Chaves) { Stopwatch tempo = new Stopwatch(); List <ArquivoChaves> Armazenamento = new List <ArquivoChaves>(); tempo.Start(); for (int i = 0; i < Chaves.Count; i++) { ArquivoChaves Keys = new ArquivoChaves(); StringBuilder NovaString = new StringBuilder(Chaves[i]); int DivisaoSenha = (NovaString.Length) / 2; Random p0 = new Random(); Random p1 = new Random(); float PorcentagemC = Consecutivo(NovaString.ToString()) / (float)TamanhoKey; float PorcentagemR = Repetir(NovaString.ToString()) / (float)TamanhoKey; int Ponto0 = p0.Next(0, DivisaoSenha); int Ponto1 = p1.Next(DivisaoSenha, NovaString.Length); char StringA = NovaString[Ponto0]; char StringB = NovaString[Ponto1]; NovaString.Remove(Ponto0, 1); NovaString.Insert(Ponto0, StringB); NovaString.Remove(Ponto1, 1); NovaString.Insert(Ponto1, StringA); double u = FuncaoFitness(PorcentagemC, PorcentagemR); Keys.geracao = NovaString.ToString(); Keys.IdU = u; Armazenamento.Add(Keys); /* Console.WriteLine("IND APÓS MUTACAO({0}): {1} *PontoMut:{2} : {3} *String:{3} *C:{4}% *R:{5}%", i, NovaString, Ponto0, Ponto1, PorcentagemC * 100, PorcentagemR * 100); * Console.WriteLine("_____________________________________________________________");*/ } tempo.Stop(); TimeSimplePermutation = tempo.Elapsed.TotalMilliseconds; return(Armazenamento); }