Package main

Class 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
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.uma.jmetal.problem.Problem

        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 vez
        cantidadCamiones - : cantidad máxima de camiones
        capacidadCamiones - : capacidad máxima de los camiones
        cores - : 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 interface org.uma.jmetal.problem.binaryproblem.BinaryProblem
        Overrides:
        getBitsFromVariable in class org.uma.jmetal.problem.binaryproblem.impl.AbstractBinaryProblem
      • getListOfBitsPerVariable

        public java.util.List<java.lang.Integer> getListOfBitsPerVariable()
        Specified by:
        getListOfBitsPerVariable in interface org.uma.jmetal.problem.binaryproblem.BinaryProblem
        Specified by:
        getListOfBitsPerVariable in class org.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 interface org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.binarysolution.BinarySolution>
        Overrides:
        createSolution in class org.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)