예제 #1
0
        private void btnCapacidadMochila_Click(object sender, EventArgs e)
        {
            if (ofdAbrirArchivo.ShowDialog() == DialogResult.OK)
            {
                using (StreamReader sr = new StreamReader(ofdAbrirArchivo.FileName))
                {
                    Mochila mochila = Mochila.getInstante();

                    Double capacidad = Double.Parse(sr.ReadLine());

                    mochila.set_capacidad(capacidad);

                    if (mochila.check_capacidad())
                    {
                        MessageBox.Show("Capacidad cargada con exito!");
                        btnCapacidadMochila.Visible = false;
                        btnResOpt.Visible           = true;
                    }
                    else
                    {
                        MessageBox.Show("Error, intente mas tarde");
                    }
                }
            }
        }
예제 #2
0
        private void btnGanancias_Click(object sender, EventArgs e)
        {
            if (ofdAbrirArchivo.ShowDialog() == DialogResult.OK)
            {
                using (StreamReader sr = new StreamReader(ofdAbrirArchivo.FileName))
                {
                    Mochila  mochila  = Mochila.getInstante();
                    String[] solution = sr.ReadToEnd().Split('\n');

                    for (int i = 0; i < solution.Length; i++)
                    {
                        if (solution[i] != String.Empty)
                        {
                            mochila.set_ganancias(solution[i]);
                        }
                    }


                    if (mochila.check_inicio())
                    {
                        MessageBox.Show("Ganancias cargadas con exito!");
                        btnGanancias.Visible = false;
                        btnPesos.Visible     = true;
                    }
                    else
                    {
                        MessageBox.Show("Error, intente mas tarde");
                    }
                }
            }
        }
예제 #3
0
 private void btnGenetico_Click(object sender, EventArgs e)
 {
     gbxMochila.Visible  = false;
     lblFunción.Visible  = true;
     btnTitulo.Text      = "ALGORITMO GENÉTICO PURO";
     tipoAlgoritmo       = 0;
     btnCalcular.Visible = true;
     lblX.Text           = "";
     Mochila.getInstante().reset_2();
 }
예제 #4
0
        private void btnResOpt_Click(object sender, EventArgs e)
        {
            if (ofdAbrirArchivo.ShowDialog() == DialogResult.OK)
            {
                using (StreamReader sr = new StreamReader(ofdAbrirArchivo.FileName))
                {
                    Mochila mochila = Mochila.getInstante();
                    String  opcion  = sr.ReadLine();

                    mochila.set_respuesta(opcion);

                    if (mochila.check_respuesta())
                    {
                        MessageBox.Show("Respuesta " + opcion + " cargada con exito!");
                        btnGanancias.Visible = true;
                        btnResOpt.Visible    = false;
                    }
                    else
                    {
                        MessageBox.Show("Error, intente mas tarde");
                    }
                }
            }
        }
예제 #5
0
        public void mochila_1()
        {
            String poblacion_s,           //numero introducido por el usuario
                   probabilidad_cruce,    //numero introducido por el usuario
                   probabilidad_mutacion, //numero introducido por el usuario
                   gen;                   //numero introducido por el usuario

            double numero_decimal = 0.0,  //variable para comparar con digito decimal
                   probabilidad_c,        //variable para almacenar la probabilidad de cruce
                   probabilidad_m;        //variable para almacenar la probabilidad de mutacion

            int numero_entero = 0,        //variable para compara con digito entero
                poblacion_i,              //numero de la poblacion en numero entero
                generaciones,             //numero de generaciones
                con_gen = 1;              //contador de generaciones

            if ((tbxCruce.Text != "" && tbxGeneraciones.Text != "") && tbxPoblacion.Text != "")
            {
                poblacion_s = tbxPoblacion.Text;                    //Console.ReadLine();
                if (Int32.TryParse(poblacion_s, out numero_entero)) //validar población
                {
                    poblacion_i = Int32.Parse(poblacion_s);         //convertir String a int base 32

                    if (poblacion_i % 2 == 0)
                    {
                        probabilidad_cruce = tbxCruce.Text;
                        if (Double.TryParse(probabilidad_cruce, out numero_decimal)) //validar cruce
                        {
                            probabilidad_c = Double.Parse(probabilidad_cruce);

                            if (probabilidad_c <= 0.80 && probabilidad_c >= 0.65)
                            {
                                probabilidad_mutacion = tbxMutacion.Text;
                                if (Double.TryParse(probabilidad_mutacion, out numero_decimal)) //validar cruce
                                {
                                    probabilidad_m = Double.Parse(probabilidad_mutacion);

                                    if (probabilidad_m <= 0.01 && probabilidad_m >= 0.001)
                                    {
                                        gen = tbxGeneraciones.Text;
                                        if (Int32.TryParse(gen, out numero_entero)) //validar las generaciones
                                        {
                                            generaciones = Int32.Parse(gen);

                                            if (generaciones > 0)
                                            {
                                                Mochila mochila = Mochila.getInstante();

                                                mochila.iniciar_poblacion(poblacion_i);

                                                do
                                                {
                                                    con_gen++;

                                                    mochila.calculo_inicial();

                                                    mochila.cal_final();

                                                    switch (cbOpciones.SelectedIndex)
                                                    {
                                                    case 0:
                                                        mochila.validar_ceros();
                                                        break;

                                                    case 1:
                                                        mochila.validar_uno();
                                                        break;

                                                    default:
                                                        break;
                                                    }

                                                    mochila.generarLosNuevosPadresDeLaPatria(poblacion_i);

                                                    mochila.cruze(probabilidad_c, poblacion_i);

                                                    mochila.mute(probabilidad_m);
                                                } while (con_gen <= generaciones);

                                                lblX.Text = "";

                                                string aux = mochila.imprimir_ganadores();

                                                if (aux != "")
                                                {
                                                    lblX.Text = aux;
                                                }
                                            }
                                            else
                                            {
                                                MessageBox.Show("Se debe introducir un numero entero positivo");
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show("Se debe introducir un numero entero positivo");
                                        }
                                    }
                                    else
                                    {
                                        MessageBox.Show("Se debe introducir un numero entero positivo");
                                    }
                                }
                            }
                            else
                            {
                                MessageBox.Show("Se debe introducir un numero entre esos rangos");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Se debe introducir un numero entre esos rangos");
                        }
                    }
                    else
                    {
                        MessageBox.Show("El tamaño de la poblacion debe ser par");
                    }
                }
                else
                {
                    MessageBox.Show("El tamaño de la poblacion debe ser un número entero y par");
                }
            }
            else
            {
                MessageBox.Show("Favor de llenar todos los campos con la información necesaria");
            }
        }