Beispiel #1
0
        public static void Main(string[] args)
        {
            int numeroDeExecucoes = 50;

            for (int i = 0; i < numeroDeExecucoes; i++)
            {
                AlgoritmoGeneticoImpl ga = new AlgoritmoGeneticoImpl();

                for (int j = 0; j < ga.NUMERO_GERACOES; j++)
                {
                    ga.ProximaGeracao();
                    ga.RealizaCruzamento();
                    ga.RealizaMutacao();
                }

                /*
                 * Trecho de código para imprimir solução da execução
                 *
                 * **/
                Solucao melhorSolucao = ga.Populacao[0];

                ga.Populacao.ForEach(x =>
                {
                    if (melhorSolucao.Fitness < x.Fitness)
                    {
                        melhorSolucao = x;
                    }
                });
                Console.WriteLine(String.Format("Execução {0}: {1}", i + 1, melhorSolucao.ToString()));
            }

            Console.ReadKey();
        }
Beispiel #2
0
        public async Task <string?> VentaPorCategorias(DateTime?date1, DateTime?date2)
        {
            if (!(await trabajadorRepository.EsJefe()).Item2)
            {
                return("No tiene permisos para ver este contenido.");
            }

            if (date1 == null || date2 == null)
            {
                return(null);
            }

            List <ProductoGen> productos = await repOptimizacion.GetVentasEntreFechas(date1.Value, date2.Value);

            if (!productos.Any())
            {
                return(null);
            }

            return(JsonConvert.SerializeObject(AlgoritmoGeneticoImpl.Calcular(productos, 200, 50, 0.5, 0.4)));
        }
Beispiel #3
0
        private void btnExecutarAG_Click(object sender, EventArgs e)
        {
            //Recupera os elementos das textbox
            double taxaMutacao   = double.Parse(txtTaxaMutacao.Text);
            double taxaCrossover = double.Parse(txtTaxaCrossover.Text);
            int    iteracoes     = int.Parse(txtEvolucoes.Text);

            //Instancia do algoritmo genetico
            AlgoritmoGeneticoImpl ag = new AlgoritmoGeneticoImpl(taxaCrossover, taxaMutacao);

            for (int i = 0; i < iteracoes; i++)
            {
                pop = ag.ExecutaAG(pop);

                //Adicionando os pontos ao gráfico
                mediaPopulacao.Add(i, pop.GetMediaPopulacao());

                zedMediaPopulacao.GraphPane.CurveList.Clear();
                zedMediaPopulacao.GraphPane.GraphObjList.Clear();

                zedPopulacao.GraphPane.CurveList.Clear();
                zedPopulacao.GraphPane.GraphObjList.Clear();

                populacaoGrafico = new PointPairList();
                for (int j = 0; j < Constants.sizePopulacao; j++)
                {
                    populacaoGrafico.Add(pop.GetPopulacao()[j].GetInt(), pop.GetPopulacao()[j].GetFitness());
                }

                LineItem media = paneMedia.AddCurve("Média", mediaPopulacao, Color.Red, SymbolType.None);
                LineItem func  = panePop.AddCurve("Função", curvaGrafico, Color.Red, SymbolType.None);
                LineItem indv  = panePop.AddStick("Indivíduo", populacaoGrafico, Color.Blue);

                zedPopulacao.AxisChange();
                zedPopulacao.Invalidate();
                zedPopulacao.Refresh();

                zedMediaPopulacao.AxisChange();
                zedMediaPopulacao.Invalidate();
                zedMediaPopulacao.Refresh();
            }

            //Seleção dos melhores e piores individuos
            pop.OrdenarPopulacao();

            //Piores individuos
            string pioresInd = string.Empty;

            for (int i = 0; i < 10; i++)
            {
                pioresInd += pop.GetPopulacao()[i].PrintIndividuo() + "\n";
            }

            txtPioresIndividuos.Text = pioresInd;

            string melhoresInd = string.Empty;

            for (int i = Constants.sizePopulacao - 1; i > (Constants.sizePopulacao - 1) - 10; i--)
            {
                melhoresInd += pop.GetPopulacao()[i].PrintIndividuo() + "\n";
            }

            txtMelhoresIndividuos.Text = melhoresInd;
        }