Beispiel #1
0
 public void reset_1()
 {
     combinaciones = null;
     padres        = null;
     mejores       = null;
     cant_obj      = 0;
 }
Beispiel #2
0
        public string imprimir_ganadores()
        {
            ElArca aux = mejores;

            if (aux != null)
            {
                double mejor = aux.aptitud;
                int    m_x   = 0;

                while (aux != null)
                {
                    if (aux.aptitud >= mejor)
                    {
                        mejor = aux.aptitud;
                        m_x   = aux.x;
                    }

                    aux = aux.siguiente;
                }
                return(m_x + "\nf(x)=" + mejor);
            }
            else
            {
                return("");
            }
        }
Beispiel #3
0
        public ElArca(String _binario, int _x, double _aptitud)
        {
            siguiente = null;

            binario = _binario;
            x       = _x;
            aptitud = _aptitud;
        }
Beispiel #4
0
 public void reset_2()
 {
     objetos       = null;
     combinaciones = null;
     padres        = null;
     mejores       = null;
     capacidad     = 0;
     respuesta     = "";
     cant_obj      = 0;
 }
Beispiel #5
0
 private Mochila()
 {
     objetos       = null;
     combinaciones = null;
     padres        = null;
     mejores       = null;
     capacidad     = 0;
     respuesta     = "";
     cant_obj      = 0;
 }
Beispiel #6
0
        public void calcular_inicio() //calcular x y aptitud
        {
            double apti  = 0,         //varibale donde se almacenará la aptitud del individuo
                   final = 0;
            int x        = 0;

            String    cuerpo = "";
            Individuo aux    = inicio;
            ElArca    aux_a  = mejores;

            if (aux != null)
            {
                apti = aux.aptitud;
            }

            while (aux.siguiente != null)
            {
                aux.x       = calcular_x(aux.bites);
                aux.aptitud = calcular_aptitud(aux.x);

                if (aux.aptitud > apti)
                {
                    cuerpo = aux.bites;
                    x      = aux.x;
                    apti   = aux.aptitud;
                }

                aux = aux.siguiente;
            }

            if (mejores == null)
            {
                mejores = new ElArca(cuerpo, x, apti);
            }
            else
            {
                aux_a = mejores;

                while (aux_a.siguiente != null)
                {
                    aux_a = aux_a.siguiente;
                }

                aux_a.siguiente = new ElArca(cuerpo, x, apti);
            }
        }
Beispiel #7
0
        public string imprimir_ganadores()
        {
            ElArca aux      = mejores;
            double peso     = 0;
            double ganancia = 0;

            if (aux != null)
            {
                double mejor = aux.ganancia;
                String final = "";

                while (aux != null)
                {
                    if (aux.ganancia >= mejor && aux.peso <= capacidad)
                    {
                        final    = aux.binario;
                        peso     = aux.peso;
                        ganancia = aux.ganancia;
                    }

                    aux = aux.siguiente;
                }
                if (final == respuesta)
                {
                    return("Se encontro la solucion establecida");
                }
                else
                {
                    return("Mejor combinacion encontrada:\n\n " + final + "\n Peso: " + peso + "\n Ganancia: " + ganancia);
                }
            }
            else
            {
                return("Sin combinaciones");
            }
        }
Beispiel #8
0
        ElArca mejores;      //variable que contendrá la lista de los resultados

        public Operaciones() //constructor para iniciar lista
        {
            inicio  = null;
            padres  = null;
            mejores = null;
        }
Beispiel #9
0
        public void calculo_inicial()
        {
            double peso          = 0;
            double ganancia      = 0;
            double best_ganancia = 0;
            double p             = 0;

            Opcion    best  = null;
            Opcion    aux_o = combinaciones;
            Individuo objeto;
            ElArca    aux_m = mejores;
            String    aux   = "";


            while (aux_o != null)
            {
                aux    = aux_o.combinacion;
                objeto = objetos;

                for (int i = 0; i < aux.Length - 1; i++)
                {
                    peso     += Int32.Parse("" + aux[i]) * objeto.peso;
                    ganancia += Int32.Parse("" + aux[i]) * objeto.ganancia;
                    objeto    = objeto.siguiente;

                    if ((objeto.peso / objeto.ganancia) >= p)
                    {
                        p = (objeto.peso / objeto.ganancia);
                    }
                }

                aux_o.peso_total     = peso;
                aux_o.ganancia_total = ganancia;
                aux_o.pmax           = p;

                if (ganancia > best_ganancia && peso <= capacidad)
                {
                    best_ganancia = ganancia;
                    best          = aux_o;
                }

                //reiniciar;
                ganancia = 0;
                peso     = 0;
                p        = 0;
                aux_o    = aux_o.siguiente;
            }
            if (best != null)
            {
                if (mejores == null)
                {
                    mejores = new ElArca(best.combinacion, best.ganancia_total, best.peso_total);
                }
                else
                {
                    aux_m = mejores;

                    while (aux_m.siguiente != null)
                    {
                        aux_m = aux_m.siguiente;
                    }

                    aux_m.siguiente = new ElArca(best.combinacion, best.ganancia_total, best.peso_total);
                }
            }
        }