public AlgoritmoGenetico(int tP, int tI, int np, double pMut, IProblema pr)
 {
     poblacion = new Poblacion(tP, tI, pr);
     problema = pr;
     probMutacion = pMut;
     pasos = np;
 }
 public AlgoritmoGenetico(int tP, int tI, int np, double pMut, IProblema pr)
 {
     poblacion    = new Poblacion(tP, tI, pr);
     problema     = pr;
     probMutacion = pMut;
     pasos        = np;
 }
Beispiel #3
0
 public BuscaEmArvoreBase(IProblema <T> problema)
 {
     Problema = problema;
     Raiz     = new No <T>
     {
         Estado = Problema.Inicial
     };
 }
Beispiel #4
0
        /// <summary>
        /// Crea un array de Individuos de tamano tP.
        /// </summary>
        /// <param name="tP">Numero de individuos de la publiacion</param>
        /// <param name="tI">Longitud del cromosoma de los individuos</param>
        /// <param name="pr">Metodo a usar para calcular el fitness de cada individuo</param>
        public Poblacion(int tP, int tI, IProblema pr)
        {
            individuos = new Individuo[tP];

            for (int i = 0; i < individuos.Length; i++)
            {
                individuos[i] = new Individuo(tI, pr);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Crea un array de Individuos de tamano tP.
        /// </summary>
        /// <param name="tP">Numero de individuos de la publiacion</param>
        /// <param name="tI">Longitud del cromosoma de los individuos</param>
        /// <param name="pr">Metodo a usar para calcular el fitness de cada individuo</param>
        public Poblacion(int tP, int tI, IProblema pr)
        {
            individuos = new Individuo[tP];

            for (int i = 0; i < individuos.Length; i++)
            {
                individuos[i] = new Individuo(tI, pr);
            }
        }
Beispiel #6
0
        public BuscaEmProfundidade(IProblema <T> problema, int?limite = null)
        {
            Problema    = problema;
            this.limite = limite;
            Raiz        = new No <T>
            {
                Estado = problema.Inicial
            };

            borda.Push(Raiz);
        }
Beispiel #7
0
 public AGUniforme(int tP, int tI, int np, double pMut, IProblema pr) : base(tP, tI, np, pMut, pr)
 {
 }
Beispiel #8
0
 public Individuo(int tam, IProblema pr)
 {
     cromosoma = new Cromosoma(tam, true);
     fitness = pr.Evalua(cromosoma);
 }
Beispiel #9
0
 public Individuo(Cromosoma cr, IProblema pr)
 {
     cromosoma = cr.Copia();
     fitness = pr.Evalua(cromosoma);
 }
Beispiel #10
0
 public BuscaAprofundamentoIterativo(IProblema <T> problema)
 {
     Problema = problema;
     algoritmoProfundidade = new BuscaEmProfundidadeComVisitados <T>(problema, Limite);
 }
Beispiel #11
0
 public AGUnPunto(int tP, int tI, int np, double pMut, IProblema pr)
     : base(tP,tI,np,pMut,pr)
 {
 }
Beispiel #12
0
 public BuscaEmLargura(IProblema <T> problema) :
     base(problema)
 {
     borda.Enqueue(Raiz);
 }
Beispiel #13
0
 public Individuo(int tam, IProblema pr)
 {
     cromosoma = new Cromosoma(tam, true);
     fitness   = pr.Evalua(cromosoma);
 }
Beispiel #14
0
 public Individuo(Cromosoma cr, IProblema pr)
 {
     cromosoma = cr.Copia();
     fitness   = pr.Evalua(cromosoma);
 }
Beispiel #15
0
 public BuscaCustoUniforme(IProblema <T> problema) : base(problema)
 {
     Raiz.Custo = 0;
     borda.Add(Raiz);
 }
Beispiel #16
0
 public BuscaEmProfundidadeComVisitados(IProblema <T> problema, int?limite = null)
     : base(problema)
 {
     this.limite = limite;
     borda.Push(Raiz);
 }
Beispiel #17
0
        static IAlgoritmo <T> InstanciaAlgoritmo <T>(IProblema <T> problema, Dictionary <string, string> dict)
        {
            var a = dict.GetValueOrDefault("a", "bfs");

            switch (a)
            {
            case "bfs":
                return(new BuscaEmLargura <T>(problema));

            case "dfs":
                return(new BuscaEmProfundidade <T>(problema, dict.GetIntOrDefault("l", null)));

            case "dfsv":
                return(new BuscaEmProfundidadeComVisitados <T>(problema, dict.GetIntOrDefault("l", null)));

            case "idfs":
                return(new BuscaAprofundamentoIterativo <T>(problema));

            case "bb":
                #region Busca Bidirecional
                if (!(problema is ProblemaMapa))
                {
                    throw new ArgumentException("Problema não suportado por Busca Bidirecional.");
                }
                TipoAlgoritmo
                    a1 = TipoAlgoritmo.BuscaEmLargura,
                    a2 = TipoAlgoritmo.BuscaEmLargura;

                switch (dict.GetValueOrDefault("a1", "bfs"))
                {
                case "bfs":
                    a1 = TipoAlgoritmo.BuscaEmLargura;
                    break;

                case "dfs":
                    a1 = TipoAlgoritmo.BuscaEmProfundidade;
                    break;

                default:
                    throw new ArgumentException("Algoritmo inválido para Busca Bidirecional.");
                }

                switch (dict.GetValueOrDefault("a2", "bfs"))
                {
                case "bfs":
                    a2 = TipoAlgoritmo.BuscaEmLargura;
                    break;

                case "dfs":
                    a2 = TipoAlgoritmo.BuscaEmProfundidade;
                    break;

                default:
                    throw new ArgumentException("Algoritmo inválido para Busca Bidirecional.");
                }

                return(new BuscaBidirecional(problema as ProblemaMapa, a1, a2) as IAlgoritmo <T>);

                #endregion
            case "bcu":
                return(new BuscaCustoUniforme <T>(problema));

            case "bgl":
            {
                if (problema is IProblemaHeuristica <T> p)
                {
                    return(new BuscaGulosa <T>(p));
                }
                throw new ArgumentException("Tipo de problema não suportado por Busca Gulosa.");
            }

            case "ba*":
            {
                if (problema is IProblemaHeuristica <T> p)
                {
                    return(new BuscaAEsrela <T>(p));
                }

                throw new ArgumentException("Tipo de problema não suportado Busca A*.");
            }

            default:
                throw new ArgumentException("Algoritmo inválido.");
            }
        }