public void ParametrosPropiedadesTest() { IParametros p = new Parametros(); p.IntervaloPorVuelta = 1500; Assert.AreEqual(1500, p.IntervaloPorVuelta); }
private void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { IPoblacion poblacionInicial = null; poblacionInicial = new Poblacion(this.GenerarPoblacionInicial()); poblacionInicial.CantidadIndividuos = (int)nudCantidadPoblacion.Value; IFuncionFitness funcionFitness = null; if (rdbFitnessCasillerosAmenazados.Checked) funcionFitness = new SumatoriaAmenazasFitness(); if (rdbFitnessCasillerosLibres.Checked) funcionFitness = new CasillerosSinAmenzasFitness(); if (rdbFitnessReinasVivas.Checked) funcionFitness = new TableroFitness(); IOperadorSeleccion operadorSeleccion = null; var parametrosOperadorSeleccion = new ParametrosSeleccion() { CantidadIndividuosASeleccionar = (int)nudCantidadSeleccionada.Value, FuncionFitness = funcionFitness }; if (rdbSeleccionTorneo.Checked) operadorSeleccion = new OperadorSeleccionPorTorneo(parametrosOperadorSeleccion); if (rdbSeleccionRanking.Checked) operadorSeleccion = new OperadorSeleccionRanking(parametrosOperadorSeleccion); IOperadorCruzamiento operadorCruzamiento = null; var parametrosOperadorCruzamiento = new ParametrosCruzamiento() { Mascara = txtMascara.Text, }; if (rdbCruzarAzar.Checked) operadorCruzamiento = new OperadorCruzamientoAzar(parametrosOperadorCruzamiento); if (rdbMascara.Checked) operadorCruzamiento = new OperadorCruzamientoMascara(parametrosOperadorCruzamiento); IOperadorMutacion operadorMutacion = null; var parametrosMutacion = new ParametrosMutacion() { ProbabilidadMutarPoblacion = (int)nudProbabilidadMutacion.Value, IndiceMutacion = (int)nudIndiceMutacion.Value, }; operadorMutacion = new OperadorMutacionConstante(parametrosMutacion); IOperadorCorte operadorCorte = null; var parametrosCorte = new ParametrosCorte() { //OJO! Hago que corte siempre por cantidad de reinas, ya que no se puede mejorar mas... // FuncionFitness = funcionFitness, FuncionFitness = new TableroFitness(), UmbralCorte = (int)nudUmbralCorte.Value, LimiteIteraciones = (int)nudLimiteVueltas.Value }; operadorCorte = new OperadorCorteSimple(parametrosCorte); this.analisis = new OperadorAnalisisPoblacion(new ParametrosAnalisisPoblacion() { Funcion = funcionFitness, FuncionReinas = new TableroFitness()}); IAlgoritmoGenetico algoritmo = new AlgoritmoGenetico(poblacionInicial, operadorSeleccion, operadorCruzamiento, operadorMutacion, operadorCorte, this.IteracionCancelada); IParametros parametros = new Parametros() { IntervaloPorVuelta = (int)nudIntervaloVuelta.Value, }; algoritmo.IteracionTerminada += algoritmo_IteracionTerminada; var poblacionFinal = algoritmo.Ejecutar(parametros); this.AnalizarPoblacion(poblacionFinal); }