optimize

Para resolver el problema del viajante (travelling salesman problem), es decir, para construir la mejor ruta que permita pasar por todos los puntos de control especificados y obtener la hora de llegada a cada uno de ellos, utilice el método route/optimize:

Copied!
svc=route/optimize&params={
  "pathMatrix": [
    [<uint>, ...],
    ...
  ],
  "pointSchedules": [
    {
      "from": <uint>,
      "to": <uint>,
      "waitInterval": <uint>
    },
    ...
  ],
  "flags": <uint>
}

Parámetros

Parámetro Descripción
pathMatrix Matriz que especifica el tiempo de desplazamiento (en minutos) entre los puntos (ver a continuación).
pointSchedules Horario que especifica el tiempo de visita y de espera para cada punto. El número de elementos debe ser igual al número de elementos del parámetro pathMatrix.
from
to
Parámetros que definen el intervalo de tiempo (en minutos) dentro del cual el mensajero debe visitar el punto.
waitInterval Tiempo (en minutos) que el mensajero debe esperar en un punto después de llegar.
flags Flags de condición del problema (ver a continuación).

pathMatrix

El parámetro pathMatrix siempre debe ser una matriz cuadrada, cuyo tamaño corresponde al número de puntos especificados.

Ejemplo:

Copied!
"pathMatrix": [[0, 1, 2], [3, 0, 4], [5, 6, 0]]

Esta entrada define el tiempo de desplazamiento (en minutos) entre tres puntos. En otras palabras, muestra cuánto tiempo se tarda en viajar de un punto a otro.

Analicemos cada fila de la matriz.

La primera fila [0, 1, 2] significa:

  • Del punto 1 al punto 1: 0 minutos
  • Del punto 1 al punto 2: 1 minuto
  • Del punto 1 al punto 3: 2 minutos

La segunda fila [3, 0, 4] significa:

  • Del punto 2 al punto 1: 3 minutos
  • Del punto 2 al punto 2: 0 minutos
  • Del punto 2 al punto 3: 4 minutos

La tercera fila [5, 6, 0] significa:

  • Del punto 3 al punto 1: 5 minutos
  • Del punto 3 al punto 2: 6 minutos
  • Del punto 3 al punto 3: 0 minutos

Siempre hay un cero en cada fila porque representa el tiempo de viaje de un punto a sí mismo.

Flags

Los flags de condición del problema se representan como valores hexadecimales.

Flag Descripción
0x01 Los datos de pointSchedules se convierten en una condición obligatoria.
0x08 Es obligatorio iniciar la ruta desde el primer punto.
0x10 Es obligatorio finalizar la ruta en el último punto.

Respuesta

Si la solicitud se completa con éxito, la respuesta se devuelve en el siguiente formato:

Copied!
{
  "success": <bool>,  /* Un valor de 1 significa que el problema está resuelto y se cumplen todas las condiciones (definidas por los flags). Un valor de 0 significa que el problema no está resuelto, o que se resolvió sin cumplir todas las condiciones. */
  "order": [
    {
      "tm": 0,          /* Hora de llegada en segundos. */
      "tmf": "<text>",  /* Hora de llegada con formato. Ejemplo: "horas:minutos". */
      "id": 0           /* Índice del punto en la matriz, empezando desde 0. */
    },
    ...                /* Resultados para los demás puntos. */
  ]
}

Si la solicitud falla, se devuelve un código de error.

Códigos de error

Código de error Descripción
4 Error interno.
7 Error de validación (estructura de matriz no válida, número diferente de elementos en los parámetros pointSchedules y pathMatrix, etc.).

Si nota un error en el texto, por favor resáltelo y presione Ctrl+Intro.