public static RodouAG RodarAg() { var text1 = ""; var text2 = ""; var text3 = ""; //Define a solu��o AlgGenetico.Algoritimo.Solucao = Convert.ToInt32(config.SolucaoMax); // Ler o arquivo com os genes e respectivos valores e configura as vari�veis de Jobs e Maquinas que est�o no arquivo TXT AlgGenetico.Algoritimo.lerArquivo(Convert.ToInt32(HttpContext.Current.Session["idUsuario"])); //taxa de crossover de 60% AlgGenetico.Algoritimo.TaxaDeCrossover = config.TaxaCrossover; //taxa de muta��o de 3% AlgGenetico.Algoritimo.TaxaDeMutacao = config.TaxaMutacao; //elitismo bool eltismo = config.Eltismo; //tamanho da popula��o int tamPop = config.TotalPopulacao; //numero m�ximo de gera��es int numMaxGeracoes = config.TotalGeracao; //define o n�mero de genes do indiv�duo baseado na solu��o int numGenes = AlgGenetico.Algoritimo.Jobs.Length; if(numGenes == 0) { return new RodouAG() { text1 = "O algotirimo não pode trabalhar sem nenhum dado lançado!", text2 = "", text3 = "" }; } //cria a primeira popula��o aleat�ria AlgGenetico.Populacao populacao = new AlgGenetico.Populacao(numGenes, tamPop); bool temSolucao = false; int geracao = 0; text1 = "Iniciando... Aptidão da solução: " + AlgGenetico.Algoritimo.Solucao; //loop at� o crit�rio de parada while (!temSolucao && geracao < numMaxGeracoes) { geracao++; //cria nova populacao populacao = AlgGenetico.Algoritimo.novaGeracao(populacao, eltismo); text2 = "Geração " + geracao + " | Aptidão: " + populacao.getIndivduo(0).Aptidao + " | Melhor: "; for (int i = 0; i < populacao.getIndivduo(0).Genes.Length; i+=4) { text2 += populacao.getIndivduo(0).Genes.Substring(i, 4) + "\n"; } temSolucao = populacao.temSolocao(AlgGenetico.Algoritimo.Solucao); } if (geracao == numMaxGeracoes) { text3 = "Número Maximo de Gerações atingido! Solução acima foi a melhor encontrada!\n\n"; } if (temSolucao) { text3 = "Encontrado resultado na geração " + geracao + "\n\n"; } var t = populacao.getIndivduo(0).Genes; lstGenes = new List<Genes>(); DAO dao; for (int i = 0; i < t.Length; i += 4) { var sku = t.Substring(i, 4).Substring(0, 3); var maq = t.Substring(i, 4).Substring(3, 1); dao = new DAO(); var vlr = dao.getValorGene(sku, maq, Convert.ToInt32(HttpContext.Current.Session["idUsuario"])); DateTime inicio; DateTime fim; inicio = DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute); fim = DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(vlr * 60).AddMinutes(DateTime.Now.Minute); foreach (var item in lstGenes) { if(maq == item.Maq) { inicio = item.Final.AddMinutes(30); fim = inicio.AddMinutes(60 * vlr); } } lstGenes.Add(new Genes() { Sku = sku, Maq = maq, Inicio = inicio, Final = fim }); } dao = new DAO(); dao.setarResultado(lstGenes, Convert.ToInt32(HttpContext.Current.Session["idUsuario"])); return new RodouAG() { text1 = text1, text2 = text2, text3 = text3 }; }