Package main

## Class Itinerario

- java.lang.Object
- - java.util.BitSet
  - - org.uma.jmetal.util.binarySet.BinarySet
    - - main.Itinerario

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`

      public class Itinerario
      extends org.uma.jmetal.util.binarySet.BinarySet

  Extiende la implementación de la binary solution de JMetal para brindar información enriquecida y editar la solucion de forma más sencilla en el algoritmo.
  Author:
    Toyos, Vallcorba
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Itinerario​(int numberOfBits, int cantCamiones, int cantContenedores, int cantDias)` | \ Constructor.
    `Itinerario​(org.uma.jmetal.util.binarySet.BinarySet b, int cantCamiones, int cantContenedores, int cantDias)` | \ Constructor por copia.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `get​(int camion, int contenedor, int dia, int turno)` | Obtiene el valor en el itinerario para el camión n, contenedor m el díá d para el turno matutino y nocturno.
    `long` | `getComp()` |
    `int[]` | `getContenedores​(int camion, int dia, int turno)` | Devuelve los contenedores levantados por un camion en un dia y turno especificos
    `int[]` | `getContenedoresLevantadosEnElDia​(int dia)` | Devuelve los contenedores levantados en el día
    `float` | `getDistancia()` |
    `double` | `getFit()` |
    `java.lang.String` | `getResults()` | Imprime la metadata del itinerario.
    `float` | `getTiempo()` |
    `int` | `hayDesborde()` |
    `void` | `set​(int camion, int contenedor, int dia, int turno, boolean valor)` | Edita el valor en el itinerario para el camión n, contenedor m el díá d para el turno matutino y nocturno.
    `Itinerario` | `setComp​(long computingTime)` |
    `Itinerario` | `setDistancia​(float distancia)` |
    `Itinerario` | `setFit​(double objective)` |
    `Itinerario` | `setHayDesborde​(int hayDesborde)` |
    `void` | `setTiempo​(float tiempo)` |
    `void` | `shuffleDiasTurnos()` | Intercambia los turnos de un itinerario moviendolo entre los distitntos dias.
    `void` | `switchTurnos()` | Intercambia los contenedores que se levantan en el día por los que se levantan en el turno nocturno.
    `java.lang.String` | `toString()` | Imprime el itinerario.

    - ### Methods inherited from class org.uma.jmetal.util.binarySet.BinarySet

      `getBinarySetLength`

    - ### Methods inherited from class java.util.BitSet

      `and, andNot, cardinality, clear, clear, clear, clone, equals, flip, flip, get, get, hashCode, intersects, isEmpty, length, nextClearBit, nextSetBit, or, previousClearBit, previousSetBit, set, set, set, set, size, stream, toByteArray, toLongArray, valueOf, valueOf, valueOf, valueOf, xor`

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

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Itinerario

          public Itinerario​(org.uma.jmetal.util.binarySet.BinarySet b,
                            int cantCamiones,
                            int cantContenedores,
                            int cantDias)

      \ Constructor por copia.
      Parameters:
        `cantCamiones` - : filas por matriz de la solución.
        `cantContenedores` - : columnas según la matriz de resolución.
        `cantDias` - : cantidad máxima de dias en las que se puede dejar un contenedor sin atender.
        `b` - : Arreglo bibario a copiar.

    - #### Itinerario

          public Itinerario​(int numberOfBits,
                            int cantCamiones,
                            int cantContenedores,
                            int cantDias)

      \ Constructor. Retorna un arreglo de tamaño cantCamiones*cantContenedores*cantDias*2
      Parameters:
        `numberOfBits` - : tamaño de la matriz en bits.
        `cantCamiones` - : filas por matriz de la solución.
        `cantContenedores` - : columnas según la matriz de resolución.
        `cantDias` - : cantidad máxima de dias en las que se puede dejar un contenedor sin atender.

  - ### Method Detail

    - #### set

          public void set​(int camion,
                          int contenedor,
                          int dia,
                          int turno,
                          boolean valor)

      Edita el valor en el itinerario para el camión n, contenedor m el díá d para el turno matutino y nocturno. Se edita la posición: (dia*2+turno)*cantCamiones*cantContenedores + cantContenedores*camion + contenedor
      Parameters:
        `camion` - : index del camion
        `contenedor` - : index del contenedor
        `dia` - : dia del itinerario
        `turno` - : matutino=0, nocturno=1
        `valor` - : valor a settear

    - #### get

          public int get​(int camion,
                         int contenedor,
                         int dia,
                         int turno)

      Obtiene el valor en el itinerario para el camión n, contenedor m el díá d para el turno matutino y nocturno. Se edita la posición: (dia*2+turno)*cantCamiones*cantContenedores + cantContenedores*camion + contenedor

    - #### getContenedores

          public int[] getContenedores​(int camion,
                                       int dia,
                                       int turno)

      Devuelve los contenedores levantados por un camion en un dia y turno especificos
      Returns:
        arreglo de enteros indicando si el camión levantara algúmn contenedor de basura en este momento.

    - #### getContenedoresLevantadosEnElDia

          public int[] getContenedoresLevantadosEnElDia​(int dia)

      Devuelve los contenedores levantados en el día
      Parameters:
        `dia` - : dia del itinerario
      Returns:
        arreglo de enteros indicando los contenedores que se levantaran en el dia

    - #### setFit

          public Itinerario setFit​(double objective)

    - #### setComp

          public Itinerario setComp​(long computingTime)

    - #### getComp

          public long getComp()

    - #### getFit

          public double getFit()

    - #### toString

          public java.lang.String toString()

      Imprime el itinerario.
      Overrides:
        `toString` in class `org.uma.jmetal.util.binarySet.BinarySet`

    - #### getResults

          public java.lang.String getResults()

      Imprime la metadata del itinerario.
      Returns:
        string que contiene la metadata del itinerario en formato key: val \n

    - #### getDistancia

          public float getDistancia()

    - #### setDistancia

          public Itinerario setDistancia​(float distancia)

    - #### hayDesborde

          public int hayDesborde()

    - #### setHayDesborde

          public Itinerario setHayDesborde​(int hayDesborde)

    - #### getTiempo

          public float getTiempo()

    - #### setTiempo

          public void setTiempo​(float tiempo)

    - #### switchTurnos

          public void switchTurnos()

      Intercambia los contenedores que se levantan en el día por los que se levantan en el turno nocturno.

    - #### shuffleDiasTurnos

          public void shuffleDiasTurnos()

      Intercambia los turnos de un itinerario moviendolo entre los distitntos dias. No asegura que el itinerario siga respetando los tiempos de recogida de los contenedores para evitar desborde.