/** * Permite realizar la configuración del algoritmo de Búqueda Tabú. Los valores * de la configuración deben haber sido establecidos previamente, de lo * contrario se tomarán los valores por defecto * @param algoritmoBusqueda es el objeto al que se le va a aplicar la * configuración */ public void aplicarConfiguración(ref TabuSearch algoritmoBusqueda) { this.aplicarCriterioAspiracion(ref algoritmoBusqueda); this.aplicarCriterioParada(ref algoritmoBusqueda); //this.aplicarComparador(algoritmoBusqueda); algoritmoBusqueda.setAspiracionPorDefecto(new AspiracionPorDefault()); algoritmoBusqueda.setListaTabu(listaTabu); }
/** * Permite aplicar la configuracion del criterio de parada elegido * @param algoritmoBusqueda es el objeto al que se le va a aplicar la * configuración */ private void aplicarCriterioParada(ref TabuSearch algoritmoBusqueda) { switch (this.tipoParada) { case CriteriosParadaEnum.NUM_ITERACIONES: algoritmoBusqueda.setEstrategiaParada(new StrategyParadaNumIteraciones((int)objetivo)); break; case CriteriosParadaEnum.NUM_ITERACIONES_SIN_MEJORA: algoritmoBusqueda.setEstrategiaParada(new StrategyParadaNumIteracionesSinMejora((int)objetivo, maximizacion)); break; case CriteriosParadaEnum.EVALUACION_OBJETIVO: algoritmoBusqueda.setEstrategiaParada(new StrategyParadaEvaluacionObjetivo(objetivo, maximizacion, 100000)); break; default: algoritmoBusqueda.setEstrategiaParada(new StrategyParadaNumIteraciones((int)objetivo)); break; } }
/** * Permite aplicar la configuración del criterio de aspiración elegido * @param algoritmoBusqueda es el objeto al que se le va a aplicar la * configuración */ private void aplicarCriterioAspiracion(ref TabuSearch algoritmoBusqueda) { switch (this.tipoAspiracion) { case CriteriosAspiracionEnum.POR_OBJETIVO: algoritmoBusqueda.setEstrategiaAspiracion(new StrategyAspiracionPorObjetivo(maximizacion)); break; case CriteriosAspiracionEnum.POR_DIRECCION_BUSQUEDA: algoritmoBusqueda.setEstrategiaAspiracion(new StrategyAspiracionPorDireccionBusqueda(maximizacion)); break; case CriteriosAspiracionEnum.POR_DEFAULT: algoritmoBusqueda.setEstrategiaAspiracion(null); break; default: algoritmoBusqueda.setEstrategiaAspiracion(new StrategyAspiracionPorObjetivo(maximizacion)); break; } }