Package main
Class BasuraProblem
- java.lang.Object
-
- org.uma.jmetal.problem.AbstractGenericProblem<org.uma.jmetal.solution.binarysolution.BinarySolution>
-
- org.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
-
- main.BasuraProblem
-
- All Implemented Interfaces:
java.io.Serializable
,org.uma.jmetal.problem.binaryproblem.BinaryProblem
,org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.binarysolution.BinarySolution>
public class BasuraProblem extends org.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
Clase que extiende el AbstractBinaryProblem con los detalles del problema de la recolección de basura. La función utiliza un thredpool para evaluar de forma paralela cada una de las rutas de los itinerarios utilizando TSPSolver. Si existe algun problema en la creación del thread se procede a la utilización de una operación alternativa que es secuencial.- Author:
- Toyos, Vallcorba
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description BasuraProblem(java.lang.String pathToInstanceFolder, int[] estadoInicialContenedores, int cantidadCamiones, int capacidadCamiones, int cores)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.uma.jmetal.solution.binarysolution.BinarySolution
createSolution()
Crea una solución posible.org.uma.jmetal.solution.binarysolution.BinarySolution
evaluate(org.uma.jmetal.solution.binarysolution.BinarySolution solution)
Calcula el fitness de la solución.org.uma.jmetal.solution.binarysolution.BinarySolution
evaluateSingleThreaded(org.uma.jmetal.solution.binarysolution.BinarySolution solution)
int
getBitsFromVariable(int index)
int
getFactorTiempo()
int
getFactorTurnoDiurno()
java.util.List<java.lang.Integer>
getListOfBitsPerVariable()
double
getTiempoMaximo()
BasuraProblem
setCoefTermiantion(int iterations, float variance)
void
setFactorTiempo(int factorTiempo)
void
setFactorTurnoDiurno(int factorTurnoDiurno)
void
setTiempoMaximo(double tiempoMaximo)
BasuraProblem
setTimeTermination(int time)
-
Methods inherited from class org.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
getTotalNumberOfBits
-
Methods inherited from class org.uma.jmetal.problem.AbstractGenericProblem
getName, getNumberOfConstraints, getNumberOfObjectives, getNumberOfVariables
-
-
-
-
Constructor Detail
-
BasuraProblem
public BasuraProblem(java.lang.String pathToInstanceFolder, int[] estadoInicialContenedores, int cantidadCamiones, int capacidadCamiones, int cores)
Constructor.- Parameters:
pathToInstanceFolder
- : carpeta con los archivos de la instancia.estadoInicialContenedores
- : estado inicial de los contenedores con los dias desde que fue levantado por ultima vezcantidadCamiones
- : cantidad máxima de camionescapacidadCamiones
- : capacidad máxima de los camionescores
- : tamaño del pool de nucleos para la función de evaluación.
-
-
Method Detail
-
getBitsFromVariable
public int getBitsFromVariable(int index)
- Specified by:
getBitsFromVariable
in interfaceorg.uma.jmetal.problem.binaryproblem.BinaryProblem
- Overrides:
getBitsFromVariable
in classorg.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
-
getListOfBitsPerVariable
public java.util.List<java.lang.Integer> getListOfBitsPerVariable()
- Specified by:
getListOfBitsPerVariable
in interfaceorg.uma.jmetal.problem.binaryproblem.BinaryProblem
- Specified by:
getListOfBitsPerVariable
in classorg.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
-
createSolution
public org.uma.jmetal.solution.binarysolution.BinarySolution createSolution()
Crea una solución posible. Una solución consiste de un itinerario con los contenedores que levantará cada camión en cada turno de cada día. La solución está representada como un conjunto de matrices para cada turno de cada dia. Donde las filas son cada camión y las columnas los contenedores. Una entrada 1 en la fila i columna j indica que el camión i levantará el contenedor j para el turno y día que representa dicha matriz. Para crear la solucion se escoge una estrategia de forma aleatoria. Las estrategias a utilizar son: Generación por algoritmo Greedy, generación con Greedy más shuffle de turnos y generación aleatoria. Las estrategias se escogen con probabilidad 0.33,0.33 y 0.66 respectivamente.- Specified by:
createSolution
in interfaceorg.uma.jmetal.problem.Problem<org.uma.jmetal.solution.binarysolution.BinarySolution>
- Overrides:
createSolution
in classorg.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
- Returns:
- Retorna la matriz codificada como una BinarySolution.
-
evaluate
public org.uma.jmetal.solution.binarysolution.BinarySolution evaluate(org.uma.jmetal.solution.binarysolution.BinarySolution solution)
Calcula el fitness de la solución. El fitness se calcula en base a las restricciones de capacidades, distancia y tiempo del itinerario.- Parameters:
solution
- solución a evaluar.- Returns:
- solución evaluada.
-
evaluateSingleThreaded
public org.uma.jmetal.solution.binarysolution.BinarySolution evaluateSingleThreaded(org.uma.jmetal.solution.binarysolution.BinarySolution solution)
-
getFactorTurnoDiurno
public int getFactorTurnoDiurno()
-
setFactorTurnoDiurno
public void setFactorTurnoDiurno(int factorTurnoDiurno)
-
getTiempoMaximo
public double getTiempoMaximo()
-
setTiempoMaximo
public void setTiempoMaximo(double tiempoMaximo)
-
getFactorTiempo
public int getFactorTiempo()
-
setFactorTiempo
public void setFactorTiempo(int factorTiempo)
-
setTimeTermination
public BasuraProblem setTimeTermination(int time)
-
setCoefTermiantion
public BasuraProblem setCoefTermiantion(int iterations, float variance)
-
-