Package main

## Class TSPSolver

- java.lang.Object
- - main.TSPSolver

- All Implemented Interfaces:
    `java.io.Serializable`

      public class TSPSolver
      extends java.lang.Object
      implements java.io.Serializable

  Modulo para obtener la distancia y tiempo de una ruta. Utiliza la librería Jsprit. La función prinucipal es solve(), para ejecutarla debe haberse ejecutado previamente buildTrucks() y buildCostMatrix().
  Author:
    Toyos,Vallcorba
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `int` | `CAPACIDAD_MAXIMA` |
    `int` | `COSTO_FIJO` |
    `int` | `COSTO_POR_DISTANCIA` |
    `float` | `COSTO_POR_TIEMPO` |
    `com.graphhopper.jsprit.core.problem.Location` | `felipe_cardozo` |
    `double` | `MAX_TIME` |
    `double` | `TIEMPOXCONTENEDOR` | Tras llegar al contenedor, se permanece allí 3 minutos para poder levantarlo

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `TSPSolver` | `buildcostMatrix()` | Construye la matriz de tiempo y de costos.
    `TSPSolver` | `buildTrucks()` | Construye los camiones de basura con los parametros configurados.
    `com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination` | `getCoefTermination()` |
    `com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination` | `getTimeTermination()` |
    `TSPSolver` | `setCapacidadCamiones​(int capMax)` | Setea la cantidad de contenedores que puede levantar un camión
    `TSPSolver` | `setCoefTermiantion​(int iterations, float variance)` | Setea la variación entre soluciones como criterio de parada del algoritmo
    `TSPSolver` | `setDistancia​(float[][] distancia)` | Setea el costo de distancia de viaje entre contenedores.
    `TSPSolver` | `setDistanciaFromStartpoint​(float[] distanciaFromStartpoint)` | Setea el costo de distancia de viaje entre el basurero y contenedores.
    `TSPSolver` | `setDistanciatoStartpoint​(float[] distanciatoStartpoint)` | Setea el costo de distancia de viaje entre contenedores y el basurero
    `TSPSolver` | `setPositions​(float[][] positions)` | Setea la ubiciación de los contenedores.
    `TSPSolver` | `setStartpoint​(int x, int y)` | Setea la ubicación del basurero
    `TSPSolver` | `setTiempo​(float[][] tiempo)` | Setea el costo de tiempo de viaje entre contenedores.
    `TSPSolver` | `setTiempoFromStartpoint​(float[] tiempoFromStartpoint)` | Setea el costo de tiempo de viaje entre el basurero y contenedores.
    `TSPSolver` | `setTiempotoStartpoint​(float[] tiempotoStartpoint)` | Setea el costo de tiempo de viaje entre contenedores y el basurero
    `TSPSolver` | `setTimeTermination​(int time)` | Setea el tiempo maximo de ejecuciíón del algoritmo.
    `float[]` | `solve​(int[] indiceContenedores)` |
    `float[]` | `solve​(int[] indiceContenedores, boolean plotResults)` | Calcula la ruta optima para levatar los contenedores
    `float[]` | `solveVerbose​(int[] indiceContenedores, boolean plotResults)` | Version alternativa de float con tiempo de ejecución e información adicional que se impormie en la salida estandar.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### CAPACIDAD_MAXIMA

          public int CAPACIDAD_MAXIMA

    - #### COSTO_POR_DISTANCIA

          public final int COSTO_POR_DISTANCIA

      See Also:
        Constant Field Values

    - #### COSTO_POR_TIEMPO

          public final float COSTO_POR_TIEMPO

      See Also:
        Constant Field Values

    - #### COSTO_FIJO

          public final int COSTO_FIJO

      See Also:
        Constant Field Values

    - #### MAX_TIME

          public final double MAX_TIME

      See Also:
        Constant Field Values

    - #### TIEMPOXCONTENEDOR

          public final double TIEMPOXCONTENEDOR

      Tras llegar al contenedor, se permanece allí 3 minutos para poder levantarlo
      See Also:
        Constant Field Values

    - #### felipe_cardozo

          public final transient com.graphhopper.jsprit.core.problem.Location felipe_cardozo

  - ### Method Detail

    - #### solveVerbose

          public float[] solveVerbose​(int[] indiceContenedores,
                                      boolean plotResults)

      Version alternativa de float con tiempo de ejecución e información adicional que se impormie en la salida estandar.
      Parameters:
        `indiceContenedores` -
        `plotResults` -
      Returns:
        retorna float[] donde la primer entrada es la distancia recorrida en metros del recorrido y la segunda entrada es el tiempo empleado para hacerlo

    - #### solve

          public float[] solve​(int[] indiceContenedores)

    - #### solve

          public float[] solve​(int[] indiceContenedores,
                               boolean plotResults)

      Calcula la ruta optima para levatar los contenedores

      Todas las matrices del problema deben estar cargadas antes de poder ejecutar esta función. Es decir, deben ejecutarse las funciones buildCostMatrix() y buildTrucks() previamente.

      Parameters:
        `plotResults` - true para imprimir los resultados
        `indiceContenedores` - contiene los contenedores que se quieren levantar segun su posicion en la matriz positions
      Returns:
        retorna float[] donde la primer entrada es la distancia recorrida en metros del recorrido y la segunda entrada es el tiempo empleado para hacerlo

    - #### buildcostMatrix

          public TSPSolver buildcostMatrix()

      Construye la matriz de tiempo y de costos. Las cuales debieron de setearse previamente.
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### buildTrucks

          public TSPSolver buildTrucks()

      Construye los camiones de basura con los parametros configurados.
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setPositions

          public TSPSolver setPositions​(float[][] positions)

      Setea la ubiciación de los contenedores.
      Parameters:
        `positions` - : posición de los contenedores en el mapa
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setTiempo

          public TSPSolver setTiempo​(float[][] tiempo)

      Setea el costo de tiempo de viaje entre contenedores.
      Parameters:
        `tiempo` - : costo de tiempo contenedor a contenedor
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setDistancia

          public TSPSolver setDistancia​(float[][] distancia)

      Setea el costo de distancia de viaje entre contenedores.
      Parameters:
        `distancia` - : costo de distancia contenedor a contenedor
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setCapacidadCamiones

          public TSPSolver setCapacidadCamiones​(int capMax)

      Setea la cantidad de contenedores que puede levantar un camión
      Parameters:
        `capMax` - : capacidad máxima de los camiones
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setTiempotoStartpoint

          public TSPSolver setTiempotoStartpoint​(float[] tiempotoStartpoint)

      Setea el costo de tiempo de viaje entre contenedores y el basurero
      Parameters:
        `tiempotoStartpoint` - : costo de tiempo de los contenedores al basurero
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setTiempoFromStartpoint

          public TSPSolver setTiempoFromStartpoint​(float[] tiempoFromStartpoint)

      Setea el costo de tiempo de viaje entre el basurero y contenedores.
      Parameters:
        `tiempoFromStartpoint` - : costo de tiempotiempo del basurero al contenedor
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setDistanciatoStartpoint

          public TSPSolver setDistanciatoStartpoint​(float[] distanciatoStartpoint)

      Setea el costo de distancia de viaje entre contenedores y el basurero
      Parameters:
        `distanciatoStartpoint` - : costo de distancia de los contenedores al basurero
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setDistanciaFromStartpoint

          public TSPSolver setDistanciaFromStartpoint​(float[] distanciaFromStartpoint)

      Setea el costo de distancia de viaje entre el basurero y contenedores.
      Parameters:
        `distanciaFromStartpoint` - : costo de distancia del basurero al contenedor
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setStartpoint

          public TSPSolver setStartpoint​(int x,
                                         int y)

      Setea la ubicación del basurero
      Parameters:
        `x` - : coordenada
        `y` - : coordenada
      Returns:
        la instancia TSPSolver sobre la que se ejecutó la operación

    - #### setTimeTermination

          public TSPSolver setTimeTermination​(int time)

      Setea el tiempo maximo de ejecuciíón del algoritmo.
      Parameters:
        `time` - : tiempo máximo
      Returns:
        instancia TSPSolver sobre la que se ejecutó la operación

    - #### setCoefTermiantion

          public TSPSolver setCoefTermiantion​(int iterations,
                                              float variance)

      Setea la variación entre soluciones como criterio de parada del algoritmo

    - #### getCoefTermination

          public com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination getCoefTermination()

    - #### getTimeTermination

          public com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination getTimeTermination()