VehicleRoutingProblem input data types for schema version One

The input data types that can be specified when performing a vehicle routing problem (VRP) analysis using the VehicleRoutingProblemSchemaVersion.One schema version are described below.

Orders

Especifica una o varias ubicaciones que visitarán las rutas del análisis de VRP. Una orden puede representar una entrega (por ejemplo, una entrega de muebles), una recogida (como un autobús que recoge pasajeros para ir al aeropuerto) o algún tipo de servicio o inspección (un trabajo para cortar un árbol o una inspección de una construcción, por ejemplo).

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre de la orden. El nombre debe ser único. Si el nombre queda nulo, en el momento de resolución se genera automáticamente un nombre.

Text

Description

La información descriptiva sobre la orden. Puede contener cualquier información textual para la orden y no tiene ninguna restricción de singularidad. Es posible que desee almacenar el número de Id. de un cliente en el campo Name y el nombre real del cliente o la dirección en el campo Description.

Text

ServiceTime

Esta propiedad especifica la cantidad de tiempo que se pasará en la ubicación de red cuando la ruta la visite; es decir, almacena el valor de impedancia de la ubicación de red. Un valor de cero o nulo indica que la ubicación de red no requiere ningún tiempo de servicio.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

TimeWindowStart1

El tiempo inicial de la primera ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo inicial.

Una ventana de tiempo solo indica cuando puede llegar un vehículo a una orden; no indica cuándo se debe completar el tiempo de servicio. Para tener en cuenta el tiempo de servicio y partida antes de que se agote la ventana de tiempo, reste ServiceTime al campo TimeWindowEnd1.

Los campos de la ventana de tiempo (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 y TimeWindowEnd2) pueden contener un valor solo de hora o un valor de fecha y hora. Si un campo de hora como TimeWindowStart1 tiene un valor solo de hora (por ejemplo, 8:00 AM), se asume que la fecha es la predeterminada que se define para el análisis. El uso de valores de fecha y hora (por ejemplo, 7/11/2010 8:00 AM) permite establecer ventanas de tiempo que abarcan varios días.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

TimeWindowEnd1

El tiempo final de la primera ventana para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo final.

Date

TimeWindowStart2

El tiempo inicial de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo indica que no hay segunda ventana de tiempo.

Si la primera ventana de tiempo es nula según lo especificado por los campos TimeWindowStart1 y TimeWindowEnd1, la segunda ventana de tiempo también debe ser nula.

Si ambas ventanas de tiempo son no nulas, no pueden superponerse. Además, la segunda ventana de tiempo debe ocurrir después de la primera.

Date

TimeWindowEnd2

El tiempo final de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo.

Cuando tanto TimeWindowStart2 como TimeWindowEnd2 son nulos, no hay segunda ventana de tiempo.

Cuando TimeWindowStart2 no es nulo, pero TimeWindowEnd2 sí es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.

Date

MaxViolationTime1

Se considera que se ha infringido una ventana de tiempo si la hora de llegada ocurre después de que la ventana de tiempo ha finalizado. Este campo especifica la hora máxima permitida de infracción de la primera ventana de tiempo de la orden. Puede contener un valor cero, pero no puede contener valores negativos. Un valor cero indica que no es aceptable una infracción de ventana de tiempo en la primera ventana de tiempo de la orden; es decir, la primera ventana de tiempo es estricta. Por el contrario, un valor nulo indica que no existe ningún límite en el tiempo de infracción permitido. Un valor distinto de cero especifica la cantidad máxima de retraso; por ejemplo, una ruta puede llegar a una orden hasta 30 minutos después del final de su primera ventana de tiempo.

The unit for this field value is specified by the timeUnits property of the analysis object.

El solucionador puede realizar un seguimiento y ponderación de las infracciones de la ventana de tiempo. Como consecuencia, puede dirigir el solucionador de VRP para que realice una de las siguientes opciones:

  • Minimizar el tiempo de infracción total, con independencia del aumento del coste de viaje para la flota.
  • Encontrar una solución que equilibre el tiempo de infracción total y el coste del viaje.
  • Ignorar el tiempo de infracción total y minimizar el coste de viaje para la flota.

By assigning an importance level for the timeWindowFactor property of the analysis object, you are essentially choosing one of these options. In any case, however, the solver will return an error if the value set for MaxViolationTime1 is surpassed.

Double

MaxViolationTime2

Tiempo máximo de infracción permitido para la segunda ventana de tiempo de la orden. Este campo es análogo al campo MaxViolationTime1.

Double

InboundArriveTime

Define el momento en que el elemento que se va a entregar a la orden estará listo en el depósito inicial.

La orden solo se puede asignar a una ruta si la hora de llegada de la entrada precede al valor de la última hora de inicio; de este modo, la ruta no podrá salir del depósito antes de que el elemento esté preparado para cargarse en ella.

Este campo puede resultar útil en escenarios de modelos en los que se producen transbordos de ondas entrantes. Sería el caso, por ejemplo, de un trabajo de una orden que requiere materiales especiales que, en ese momento, no están disponibles en el depósito. Los materiales se están enviando desde otra ubicación y llegarán al depósito a las 11:00. Para garantizar que una ruta que sale antes de que llegue el cargamento no se asigne a la orden, la hora de llegada de la entrada de la orden se establece a las 11:00. Los materiales especiales llegan a las 11:00, se cargan en el vehículo y este sale del depósito para visitar las órdenes asignadas.

Notes:

  • La hora de inicio de la ruta, incluidos los tiempos de servicio, debe ser posterior a la hora de llegada de la entrada. Si una ruta empieza antes de la hora de llegada de la entrada de la orden, esta no se podrá asignar a la ruta. La asignación no será válida aunque la ruta tenga un tiempo de servicio en el depósito inicial que dure hasta que haya pasado la hora de llegada de la entrada.

  • Este campo de tiempo puede tener un valor de solo hora o un valor de fecha y hora. Si se define un valor solo de hora (por ejemplo, 11:00 AM), se asume que la fecha es la fecha predeterminada que se ha definido para el análisis. No obstante, la fecha predeterminada se omite cuando un campo de tiempo incluye una fecha con la hora en los campos de depósitos, rutas, órdenes o descansos. En este caso, deberá indicar una fecha y hora en todos estos campos (por ejemplo, 7/11/2015 11:00).

  • El solucionador de VRP respeta InboundArriveTime independientemente del valor de DeliveryQuantities.

  • Si también se especifica una hora de partida de la salida, el valor de hora debe ser posterior a la hora de llegada de la entrada.

Date

OutboundDepartTime

Define el momento en que el elemento que se va a recoger en la orden debe llegar al depósito final.

La orden solo se puede asignar a una ruta si esta puede visitar la orden y llegar a su depósito final antes de la hora de partida de la salida que se haya especificado.

Este campo puede resultar útil en escenarios de modelos en los que se producen transbordos de ondas salientes. Supongamos que una empresa de transportes envía camiones de reparto para recoger paquetes de órdenes y los entrega en un depósito donde, a continuación, se llevan a otras instalaciones para entregarlos a su destino final. Cada día, a las 15:00, un tráiler para en el depósito para recoger los paquetes urgentes y los lleva directamente a una estación de central de procesamiento. Para evitar retrasar la entrega de los paquetes urgentes hasta las 15:00 del día siguiente, la empresa de transportes intenta que los camiones de reparto recojan los paquetes urgentes de las órdenes y los lleven del depósito antes de las 15:00. Esto se consigue estableciendo la hora de partida de la salida a las 15:00.

Notes:

  • La hora de finalización de la ruta, incluidos los tiempos de servicio, debe ser anterior a la hora de partida de la salida. Si la ruta llega al depósito pero no completa su tiempo de servicio en el depósito final antes de la hora de partida de la salida de la orden, no es posible asignar la orden a la ruta.

  • Este campo de tiempo puede tener un valor de solo hora o un valor de fecha y hora. Si se define un valor solo de hora (por ejemplo, 11:00 AM), se asume que la fecha es la fecha predeterminada que se ha definido para el análisis. No obstante, la fecha predeterminada se omite cuando un campo de tiempo incluye una fecha con la hora en los campos de depósitos, rutas, órdenes o descansos. En este caso, deberá indicar una fecha y hora en todos estos campos (por ejemplo, 7/11/2015 11:00).

  • El solucionador de VRP respeta OutboundDepartTime independientemente del valor de PickupQuantities.

  • Si también se especifica una hora de llegada de la entrada, el valor de hora debe ser anterior a la hora de partida de la salida.

Date

DeliveryQuantities

El tamaño de la entrega. Puede especificar el tamaño en cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen.

Introduzca las cantidades de entrega sin indicar unidades. Por ejemplo, si es necesario entregar un objeto de 300 libras a una orden, introduzca 300. Es necesario recordar que el valor es en libras.

Si está realizando un rastreo de varias dimensiones, separe los valores numéricos con un espacio. Por ejemplo, si está registrando el peso y el volumen de una entrega que pesa 2.000 libras y tiene un volumen de 100 pies cúbicos, introduzca 2000 100. De nuevo, es necesario recordar las unidades; en este caso, libras y pies cúbicos. También es necesario recordar la secuencia en la que se introducen los valores y sus unidades correspondientes.

Asegúrese de que Capacities para Rutas y DeliveryQuantities y PickupQuantities para Órdenes se especifiquen de igual forma, es decir, los valores deben estar en las mismas unidades. Si está utilizando varias dimensiones, esas dimensiones deben aparecer en la misma secuencia para todos los parámetros. Por ejemplo, si especifica el peso en libras seguido del volumen en pies cúbicos para DeliveryQuantities, es necesario especificar la capacidad de las rutas y las cantidades de recogida de las órdenes de la misma manera: el peso en libras y el volumen en pies cúbicos. Si combina unidades o cambia la secuencia, obtendrá resultados no deseados sin ningún mensaje de advertencia.

Una cadena vacía o un valor nulo equivale a que todas las dimensiones sean infinitas. Si la cadena de caracteres tiene un número de valores insuficiente en relación al recuento de capacidad o dimensiones rastreadas, los valores restantes se tratan como infinitos. Las cantidades de entrega no pueden ser negativas.

Text

PickupQuantities

El tamaño de la recogida. Puede especificar el tamaño en cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen. No se puede, sin embargo, utilizar valores negativos. Este campo es análogo al campo DeliveryQuantities de Órdenes.

En el caso de una visita de intercambio, una orden puede tener cantidades de entrega y de recogida.

Text

Revenue

El ingreso generado si la orden se incluye en una solución. Este campo puede contener un valor nulo (un valor nulo indica una renta de cero), pero no puede tener un valor negativo.

Los ingresos se incluyen al optimizar el valor de la función objetivo, pero no forma parte del coste operativo de la solución; es decir, el campo TotalCost de las rutas nunca incluye los ingresos en su salida. Sin embargo, las rentas ponderan la importancia relativa de servir las órdenes.

Double

SpecialtyNames

Una cadena de caracteres separada por espacios que contiene los nombres de las especialidades requeridas por la orden. Un valor nulo indica que la orden no requiere especialidades.

La ortografía de cualquier especialidad enumerada para la clase Órdenes y rutas debe coincidir exactamente para que el solucionador de VRP pueda vincularlos de forma conjunta.

Para ilustrar qué especialidades son y cómo funcionan, asuma que una empresa de cuidado de céspedes y poda árboles tiene una parte de sus órdenes que requiere un camión recolector a podar árboles altos. La empresa introducirá BucketTruck en el campo SpecialtyNames de estas órdenes para indicar su necesidad especial. SpecialtyNames se deja nulo para el resto de órdenes. De manera similar, la empresa también introduce BucketTruck en el campo SpecialtyNames de las rutas que recorren los camiones con brazos hidráulicos. Deja el campo nulo para el resto de rutas. En el momento de la resolución, el solucionador de VRP asigna órdenes sin necesidades especiales a cualquier ruta, pero solo se asigna órdenes que necesitan camiones recolectores para las rutas que disponen de ellos.

Text

AssignmentRule

Especifica la regla para asignar la orden a una ruta. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Excluir): la orden se excluirá de la siguiente operación de resolución.
  • 1 (Conservar la ruta y la secuencia relativa): el solucionador debe asignar siempre la orden a la ruta preasignada en la secuencia relativa preasignada durante la operación de resolución. Si no se puede seguir esta regla de asignación, se produce una infracción de orden. Con esta configuración, solo se mantiene la secuencia relativa, no la secuencia absoluta. Para ilustrar lo que esto significa, imagine que hay dos órdenes: A y B. Tienen valores de secuencia de 2 y 3, respectivamente. Si se establecen sus valores de campo AssignmentRule en la ruta Conservar y la secuencia relativa, los valores de secuencia de A y B pueden cambiar después de la resolución porque otras órdenes, descansos y visitas al depósito se pueden secuenciar antes, entre, o después de A y B. Sin embargo, B no se puede secuenciar antes que A.
  • 2 (Conservar la ruta): el solucionador siempre debe asignar la orden a la ruta preasignada durante la operación de resolución. También se debe establecer una secuencia válida, aunque la secuencia pueda o no conservarse. Si la orden no se puede asignar a la ruta especificada, se produce una infracción de la orden.
  • 3 (Invalidación): el solucionador intenta conservar la preasignación de ruta y de secuencia para la orden durante la operación de resolución. Sin embargo, puede asignarse una nueva ruta o secuencia para la orden si esto ayuda a minimizar el valor total de la función objetivo. Este es el valor predeterminado.
  • 4 (Delimitar primero): el solucionador ignora la ruta y la preasignación de secuencia (si existe) para la orden durante la operación de resolución. Asigna una ruta a la orden y la convierte en la primera orden de esa ruta para minimizar el valor total de la función objetivo.
  • 5 (Delimitar último): el solucionador ignora la ruta y la preasignación de secuencia (si existe) para la orden durante la operación de resolución. Asigna una ruta a la orden y la convierte en la última orden de esa ruta para minimizar el valor total de la función objetivo.

Este campo no puede contener un valor nulo.

Long

RouteName

El nombre de la ruta a la que se ha asignado la orden.

Este campo se utiliza para preasignar una orden a una ruta concreta. Puede contener un valor nulo que indica que la orden no se ha preasignado a ninguna ruta y el solucionador identifica la mejor asignación de ruta posible para la orden. Si está establecido en nulo, el campo Sequence también debe estar establecido en nulo.

Después de una operación de resolución, si se enruta la orden, el campo RouteName contiene el nombre de la ruta a la cual se asigna la orden.

Text

Sequence

Esto indica la secuencia de la orden en su ruta asignada.

Este campo se utiliza para especificar la secuencia relativa de una orden en la ruta. Este campo puede contener un valor nulo que especifica que la orden se puede realizar en cualquier parte a lo largo de la ruta. Un valor nulo solo puede ocurrir junto con un valor RouteName nulo.

Los valores de secuencia de entrada son positivos y exclusivos para cada ruta (compartida en las visitas al depósito de reanudación, órdenes y descansos), pero no tienen que empezar a partir de 1 ni ser contiguos.

Long

CurbApproach

Especifica la dirección en la que un vehículo puede llegar a la orden y partir de ella. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Cualquier lado del vehículo): el vehículo puede aproximarse a la orden y abandonarla en cualquier dirección, de modo que se admite un cambio de sentido en el incidente. Puede elegir esta configuración si es posible y práctico que un vehículo dé la vuelta en la orden. Esta decisión puede depender del ancho de la calle y del volumen de tráfico, o de si la orden dispone de aparcamiento en el que los vehículos pueden entrar y maniobrar.
  • 1 (Lado derecho del vehículo): cuando el vehículo se aproxima a la orden y la abandona, la orden debe estar en el lado derecho del vehículo. Los cambios de sentido están prohibidos. Esto se usa normalmente para vehículos como los autobuses que deben llegar con la parada a la derecha.
  • 2 (Lado izquierdo del vehículo): cuando el vehículo se aproxima a la orden y la abandona, el bordillo debe estar en el lado izquierdo del vehículo. Los cambios de sentido están prohibidos. Esto se usa normalmente para vehículos como los autobuses que deben llegar con la parada a la izquierda.
  • 3 (Sin giro en U): cuando el vehículo se aproxima a la orden, el bordillo puede estar a uno otro lado del vehículo; no obstante, el vehículo debe partir sin cambiar de sentido.

El atributo CurbApproach se ha diseñado para trabajar con los dos tipos de estándares nacionales de circulación: por la derecha (Estados Unidos) y por la izquierda (Reino Unido). En primer lugar, considere una orden que se encuentra en el lado izquierdo de un vehículo. Siempre estará situada el lado izquierdo, independientemente de si el vehículo circula por la mitad izquierda o derecha del camino. Los estándares de circulación nacionales pueden influir en su decisión de aproximarse a la orden por una de las dos direcciones posibles, de modo que quede en el lado derecho o en el lado izquierdo del vehículo. Por ejemplo, si desea llegar a una orden y que no haya un carril entre el vehículo y la orden, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.

Long

Bearing

La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.

Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.

Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.

Más información sobre el rumbo y la tolerancia de rumbo

Double

BearingTol

El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.

Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.

Más información sobre el rumbo y la tolerancia de rumbo

Double

NavLatency

Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.

The time units of NavLatency are the same as the units specified by the timeUnits property of the analysis object.

Double

Network location fields

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Conjuntamente, estas propiedades describen el punto en la red donde se encuentra el objeto.

Obtener más información sobre ubicación de entradas en una red

Depots

Especifica uno o varios depósitos para el problema de generación de rutas para vehículos especificado. Un depósito es una ubicación desde la que sale un vehículo al comienzo de su día laborable y a la que vuelve al final del mismo. Los vehículos (para las entregas) se cargan o descargan (para las recogidas) en los depósitos. En algunos casos, un depósito también puede actuar como ubicación de renovación donde el vehículo puede descargarse o volverse a cargar y seguir realizando entregas y recogidas. Un depósito tiene horas de apertura y cierre, tal y como se especifica en una ventana de tiempo estricta. Los vehículos no pueden llegar a un depósito fuera de esta ventana de tiempo.

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre del depósito. Los campos StartDepotName y EndDepotName de las rutas hacen referencia a los nombres que especifique aquí. Las renovaciones de ruta también hacen referencia a los mismos, cuando se utilizan.

Los nombres de depósitos no hacen distinción entre mayúsculas y minúsculas, pero tienen que ser únicos y no estar vacíos.

Text

Description

La información descriptiva sobre la ubicación del depósito. Puede contener cualquier información textual y no tiene ninguna restricción de singularidad.

Por ejemplo, si desea tener en cuenta en qué región está un depósito o la dirección y número de teléfono del mismo, puede introducir la información aquí en lugar de en el campo Name.

Text

TimeWindowStart1

El tiempo inicial de la primera ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo inicial.

Los campos de la ventana de tiempo (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 y TimeWindowEnd2) pueden contener un valor solo de hora o un valor de fecha y hora. Si un campo de hora como TimeWindowStart1 tiene un valor solo de hora (por ejemplo, 8:00 AM), se asume que la fecha es la predeterminada que se define para el análisis. El uso de valores de fecha y hora (por ejemplo, 7/11/2010 8:00 AM) permite establecer ventanas de tiempo que abarcan varios días.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

TimeWindowEnd1

El tiempo final de la primera ventana para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo final.

Date

TimeWindowStart2

El tiempo inicial de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo indica que no hay segunda ventana de tiempo.

Si la primera ventana de tiempo es nula, según lo especificado por los campos TimeWindowStart1 y TimeWindowEnd1, la segunda ventana de tiempo también debe ser nula.

Si ambas ventanas de tiempo son no nulas, no pueden superponerse. Además, la segunda ventana de tiempo debe ocurrir después de la primera.

Date

TimeWindowEnd2

El tiempo final de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo.

Cuando tanto TimeWindowStart2 como TimeWindowEnd2 son nulos, no hay segunda ventana de tiempo.

Cuando TimeWindowStart2 no es nulo, pero TimeWindowEnd2 sí es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.

Date

CurbApproach

Especifica la dirección en la que un vehículo puede llegar al depósito y partir de él. El valor de campo se especifica como uno de los siguientes enteros que se muestran entre paréntesis (use el código numérico, no el nombre entre paréntesis):

  • 0 (Cualquier lado del vehículo): el vehículo puede aproximarse al depósito y abandonarlo en cualquier dirección, de modo que se admite un cambio de sentido en el incidente. Puede elegir esta configuración si es posible y práctico que un vehículo dé la vuelta en el depósito. Esta decisión puede depender del ancho de la calle y del volumen de tráfico, o de si el depósito dispone de aparcamiento en el que los vehículos pueden entrar y maniobrar.
  • 1 (Lado derecho del vehículo): cuando el vehículo se aproxima al depósito y lo abandona, el depósito debe estar en el lado derecho del vehículo. Los cambios de sentido están prohibidos. Esto se usa normalmente para vehículos como los autobuses que deben llegar con la parada a la derecha.
  • 2 (Lado izquierdo del vehículo): cuando el vehículo se aproxima al depósito y lo abandona, el bordillo debe estar en el lado izquierdo del vehículo. Los cambios de sentido están prohibidos. Esto se usa normalmente para vehículos como los autobuses que deben llegar con la parada a la izquierda.
  • 3 (Sin giro en U): cuando el vehículo se aproxima al depósito, el bordillo puede estar a uno u otro lado del vehículo; no obstante, el vehículo debe partir sin cambiar de sentido.

El atributo CurbApproach se ha diseñado para trabajar con los dos tipos de estándares nacionales de circulación: por la derecha (Estados Unidos) y por la izquierda (Reino Unido). En primer lugar, considere un depósito en el lado izquierdo de un vehículo. Siempre estará situada el lado izquierdo, independientemente de si el vehículo circula por la mitad izquierda o derecha del camino. Las normas de circulación nacionales pueden influir en su decisión de aproximarse a un depósito desde una de las dos direcciones posibles, de modo que quede en el lado derecho o en el lado izquierdo del vehículo. Por ejemplo, si desea llegar a un depósito y que no haya un carril entre el vehículo y el depósito, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.

Long

Bearing

La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.

Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.

Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.

Más información sobre el rumbo y la tolerancia de rumbo

Double

BearingTol

El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.

Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.

Más información sobre el rumbo y la tolerancia de rumbo

Double

NavLatency

Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.

The time units of NavLatency are the same as the units specified by the timeUnits property of the analysis object.

Double

Network location fields

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Conjuntamente, estas propiedades describen el punto en la red donde se encuentra el objeto.

Obtener más información sobre ubicación de entradas en una red

Routes

Especifica una o varias rutas que describen las características del vehículo y del conductor. Una ruta puede tener los tiempos de servicio de inicio y fin en el depósito, un tiempo de inicio fijo o flexible, costes operativos basados en el tiempo, costes operativos basados en la distancia, varias capacidades, diversas restricciones en un día laborable del conductor y así sucesivamente.

Nota:

Unlike other data types, such as Orders and Depots, this data type is a table and does not include any location information.

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre de la ruta. El nombre debe ser único.

La herramienta genera un nombre exclusivo en el momento de la resolución si el valor del campo es nulo; por consiguiente, la introducción de un valor es opcional en la mayoría de los casos. Sin embargo, debe introducir un nombre si su análisis incluye descansos, reanudaciones de ruta, zonas de ruta u órdenes preasignadas porque el nombre de ruta se utiliza como clave externa en estos casos. En los nombres de ruta no se distingue entre mayúsculas y minúsculas.

Text

Description

The descriptive information about the route. This can contain any textual information and does not need to be unique.

Text

StartDepotName

El nombre del depósito inicial para la ruta. Este campo es una clave externa para el campo Name en Depósitos.

Si el valor StartDepotName es nulo, la ruta comenzará desde la primera orden asignada. Omitir el depósito inicial es útil cuando no se conoce la ubicación inicial del vehículo o es irrelevante para el problema. Sin embargo, cuando StartDepotName es nulo, EndDepotName no puede ser nulo.

No se permiten depósitos iniciales virtuales si las órdenes o los depósitos están en varias zonas horarias.

Si la ruta está realizando entregas y StartDepotName es nulo, se supone que el cargamento se carga en el vehículo en un depósito virtual antes de que comience la ruta. Para una ruta que no tiene visitas de renovación, sus órdenes de entrega (aquellas con valores DeliveryQuantities distintos de cero en Órdenes) se cargan en el depósito de inicio o en el depósito virtual. Para una ruta que tiene visitas de reanudación, solo se cargan en el depósito de inicio o en el depósito virtual las órdenes de entrega antes de la primera visita de reanudación.

Text

EndDepotName

El nombre del depósito final para la ruta. Este campo es una clave externa para el campo Name en Depósitos.

Text

StartDepotServiceTime

El tiempo de servicio en el depósito inicial. Esto se puede utilizar para modelar el tiempo dedicado a cargar el vehículo. Este campo puede contener un valor nulo; un valor nulo indica un tiempo de servicio cero.

The unit for this field value is specified by the timeUnits property of the analysis object.

Los tiempos de servicio de los depósitos inicial y final son valores fijos (dados por los valores de campo StartDepotServiceTime y EndDepotServiceTime) y no tienen en cuenta la carga real para una ruta. Por ejemplo, el tiempo necesario para cargar un vehículo en el depósito inicial puede depender del tamaño de los pedidos. A los tiempos de servicio de los depósitos se les pueden asignar valores que correspondan a un camión completamente cargado, con una carga media o hacer su propia estimación de tiempo.

Double

EndDepotServiceTime

El tiempo de servicio en el depósito final. Se puede utilizar para modelar el tiempo dedicado a descargar el vehículo. Este campo puede contener un valor nulo; un valor nulo indica un tiempo de servicio cero.

The unit for this field value is specified by the timeUnits property of the analysis object.

Los tiempos de servicio de los depósitos inicial y final son valores fijos (dados por los valores de campo StartDepotServiceTime y EndDepotServiceTime) y no tienen en cuenta la carga real para una ruta. Por ejemplo, el tiempo necesario para cargar un vehículo en el depósito inicial puede depender del tamaño de los pedidos. A los tiempos de servicio de los depósitos se les pueden asignar valores que correspondan a un camión completamente cargado, con una carga media o hacer su propia estimación de tiempo.

Double

EarliestStartTime

El tiempo de inicio más temprano permitido para la ruta. El solucionador utiliza esto junto con la ventana de tiempo del depósito inicial para determinar los tiempos de inicio de ruta factibles.

Este campo no puede contener valores nulos y tiene un valor solo de hora predeterminado de 8:00 AM. El valor predeterminado se interpreta como 8:00 a.m. en la fecha predeterminada definida para el análisis.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

LatestStartTime

El tiempo de inicio más tardío permitido para la ruta.

Este campo no puede contener valores nulos y tiene un valor solo de hora predeterminado de 10:00 AM. El valor predeterminado se interpreta como 10:00 a.m. en la fecha predeterminada definida para el análisis.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

ArriveDepartDelay

Este campo almacena la cantidad de tiempo de viaje necesario para acelerar el vehículo a velocidades de viaje normales, decelerarlo hasta una parada y meterlo y sacarlo de la red (por ejemplo, entrar y salir del aparcamiento). Al incluir un valor ArriveDepartDelay, se impide que el solucionador de VRP envíe muchas rutas para dar servicio a órdenes físicamente coincidentes.

El coste para esta propiedad se incurre entre visitas a órdenes no coincidentes, depósitos y reanudaciones de ruta. Por ejemplo, cuando una ruta empieza en un depósito y visita la primera orden, el retraso de llegada/salida se agrega al tiempo de viaje. Lo mismo es aplicable al viajar desde la primera orden a la segunda. Si la segunda y la tercera orden coinciden, el valor ArriveDepartDelay no se agrega entre ellas, puesto que el vehículo no tiene que desplazarse. Si la ruta viaja a una reanudación de ruta, el valor se añade de nuevo al tiempo de viaje.

Aunque un vehículo deba reducir la velocidad y detenerse en un descanso y acelerar después, el solucionador de VRP no puede agregar el valor ArriveDepartDelay para los descansos. Esto significa que, si una ruta deja una orden, para durante un descanso y continúa en la siguiente orden, el retardo de llegada/salida se añade solo una vez, no dos veces.

Por ejemplo, supongamos que hay cinco órdenes coincidentes en un edificio alto y a las que dan servicio tres rutas diferentes. Significa que se incurre en tres retrasos de llegada/salida; es decir, tres conductores tienen que buscar estacionamiento por separado y entrar en el mismo edificio. Sin embargo, si en cambio una ruta puede dar servicio a las órdenes, tan solo un conductor tiene que aparcar y entrar en el edificio y solo se incurre en un retraso de llegada/salida. Dado que el solucionador de VRP intenta minimizar el coste, trata de limitar los retrasos de llegada/salida y, de este modo, identificar la opción de ruta única. (Observe que es posible que sea necesario enviar varias rutas cuando otras restricciones, tales como especialidades, ventanas de tiempo o capacidades, lo requieran.)

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

Capacities

La capacidad máxima del vehículo. Puede especificar la capacidad de cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen.

Introduzca capacidades sin indicar las unidades. Por ejemplo, si el vehículo puede llevar un máximo de 40.000 libras; introduzca 40000. Recuerde que el valor se indica en libras.

Si está realizando un rastreo de varias dimensiones, separe los valores numéricos con un espacio. Por ejemplo, si está registrando peso y volumen, y su vehículo puede transportar un peso máximo de 40.000 libras y un volumen máximo de 2.000 pies cúbicos, introduzca el valor Capacities como 40000 2000. De nuevo, es necesario recordar las unidades. También es necesario recordar la secuencia en que se introducen los valores y sus unidades correspondientes (en este caso, libras y luego pies cúbicos).

Es importante recordar las unidades y la secuencia de las unidades por un par de razones: la primera, para interpretar la información más tarde; la segunda, para introducir correctamente los valores de los campos DeliveryQuantities y PickupQuantities para las órdenes. Tenga en cuenta que el solucionador de VRP simultáneamente se refiere a Capacities, DeliveryQuantities y PickupQuantities para verificar que no se sobrecargue ninguna ruta. Las unidades no se pueden introducir en el campo y la herramienta VRP no puede hacer conversiones de unidades. Debe introducir los valores para los tres campos utilizando las mismas unidades y la misma secuencia de unidades para garantizar que los valores se interpreten correctamente. Si combina unidades o cambia la secuencia en cualquiera de los tres campos, se producen resultados no deseados sin ningún mensaje de advertencia. Se recomienda establecer una unidad y una secuencia de unidades estándar de antemano y consultarla continuamente al introducir los valores para estos tres campos.

Una cadena vacía o un valor nulo equivale a infinito. Los valores de capacidad no pueden ser negativos.

Si el campo Capacities tiene un número insuficiente de valores en relación con los campos DeliveryQuantities o PickupQuantities para las órdenes, los valores restantes se tratan como infinitos.

El solucionador de VRP solo realiza una comprobación booleana simple para determinar si se superan las capacidades. Si el valor de capacidad de una ruta es mayor o igual a la cantidad total transportada, el solucionador de VRP supondrá que la carga cabe en el vehículo. Esto podría ser incorrecto, dependiendo de la forma real de la carga y el vehículo. Por ejemplo, el solucionador de VRP le permite ajustar una esfera de 1.000 pies cúbicos en un camión de 1.000 pies cúbicos que tiene 8 pies de ancho. En realidad, sin embargo, dado que la esfera tiene un diámetro de 12,6 pies, no cabría en el camión de 8 pies de ancho.

Text

FixedCost

Un coste monetario fijo en el que solo se incurre si la ruta se utiliza en una solución (es decir, tiene órdenes asignadas a la misma). Este campo puede contener valores nulos; un valor nulo indica un coste fijo cero. Este coste forma parte del coste operativo de ruta total.

Double

CostPerUnitTime

El coste monetario incurrido, por tiempo unitario de trabajo, para la duración total de la ruta, incluidos los tiempos de viaje así como los tiempos de servicio y de espera en órdenes, depósitos y descansos. Este campo no puede contener un valor nulo y tiene un valor predeterminado de 1,0.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

CostPerUnitDistance

El coste monetario incurrido, por unidad de distancia viajada, para la longitud de la ruta (distancia de viaje total). Este campo puede contener valores nulos; un valor nulo indica un coste cero.

The unit for this field value is specified by the distanceUnits property of the analysis object.

Double

OvertimeStartTime

La duración de tiempo de trabajo normal antes de que se inicie el cálculo de horas extra. Este campo puede contener valores nulos; un valor nulo indica que no se aplican horas extraordinarias.

The unit for this field value is specified by the timeUnits property of the analysis object.

Por ejemplo, si al conductor se le pagan horas extra cuando la duración total de la ruta supera las ocho horas, OvertimeStartTime se especifica como 480 (8 horas * 60 minutos/hora), siempre que las unidades de tiempo sean minutos.

Double

CostPerUnitOvertime

El coste monetario en el que se incurre por unidad de tiempo de hora extra. Este campo puede contener valores nulos; un valor nulo indica que el valor CostPerUnitOvertime es igual que el valor CostPerUnitTime.

Double

MaxOrderCount

El máximo número permitido de órdenes en la ruta. Este campo no puede contener valores nulos y tiene un valor predeterminado de 30.

Long

MaxTotalTime

La duración máxima permitida de la ruta. La duración de la ruta incluye los tiempos de viaje, así como los tiempos de servicio y de espera en órdenes, depósitos y descansos. Este campo puede contener valores nulos; un valor nulo indica que no hay ninguna restricción en la duración de la ruta.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

MaxTotalTravelTime

El tiempo de viaje máximo permitido para la ruta. El tiempo de viaje incluye solo el tiempo empleado en conducir en la red y no incluye tiempos de servicio o de espera.

Este campo puede contener valores nulos; un valor nulo indica que no hay ninguna restricción en el tiempo máximo de viaje permitido. Este valor de campo no puede ser mayor que el valor de campo MaxTotalTime.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

MaxTotalDistance

La distancia de viaje máxima permitida para la ruta.

The unit for this field value is specified by the distanceUnits property of the analysis object.

Este campo puede contener valores nulos; un valor nulo indica que no hay ninguna restricción en la distancia máxima de viaje permitida.

Double

SpecialtyNames

Una cadena separada por espacios contiene los nombres de las especialidades admitidas por la ruta. Un valor nulo indica que la ruta no admite ninguna especialidad.

Este campo es una clave externa para el campo SpecialtyNames en las órdenes.

Para ilustrar qué especialidades son y cómo funcionan, asuma que una empresa de cuidado de céspedes y poda árboles tiene una parte de sus órdenes que requiere un camión recolector a podar árboles altos. La empresa introducirá BucketTruck en el campo SpecialtyNames de estas órdenes para indicar su necesidad especial. SpecialtyNames se deja nulo para el resto de órdenes. De manera similar, la empresa también introduce BucketTruck en el campo SpecialtyNames de las rutas que recorren los camiones con brazos hidráulicos. Deja el campo nulo para el resto de rutas. En el momento de la resolución, el solucionador de VRP asigna órdenes sin necesidades especiales a cualquier ruta, pero solo se asigna órdenes que necesitan camiones recolectores para las rutas que disponen de ellos.

Text

AssignmentRule

Especifica si se puede utilizar la ruta o no al resolver el problema. Este campo está restringido por un dominio de valores que se muestran a continuación (use el código numérico, no el nombre entre paréntesis).

  • 1 (Incluir): la ruta está incluida en la operación de resolución. Este es el valor predeterminado.
  • 2 (Excluir): la ruta está excluida de la operación de resolución.

Long

Breaks

Son los periodos de pausa o descansos de las rutas en un problema de generación de rutas para vehículos determinado. Un descanso está asociado a una ruta exactamente y puede realizarse después de finalizar una orden, mientras se encuentra en ruta para dar servicio a una orden o antes de dar servicio a una orden. Tiene una hora de inicio y una duración y el conductor puede cobrar o no durante el mismo. Existen tres opciones para establecer el momento en que comienza un descanso: una ventana de tiempo, un tiempo de viaje máximo o un tiempo de trabajo máximo.

Unlike other data types, such as Orders or Depots, this data type is a table and does not include any location information.

The data type supports the following fields:

FieldDescriptionData type

RouteName

El nombre de la ruta a la cual se aplica el descanso. Aunque un descanso se asignado a exactamente una ruta, puede haber muchos descansos asignados a la misma ruta.

Este campo es una clave externa para el campo Name de las rutas, por lo que no puede tener ningún valor nulo.

Text

Precedence

Los valores de precedencia ordenan en secuencia los descanso de una ruta determinada. Los descansos con un valor de precedencia de 1 aparecen antes de aquéllos con un valor 2, etc.

Todos los descansos deben tener un valor de precedencia, sin tener en cuenta si son descansos de ventana de tiempo, tiempo máximo de viaje o tiempo máximo de trabajo.

Long

ServiceTime

La duración del descanso. Este campo no puede contener valores nulos. El valor predeterminado es 60.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

TimeWindowStart

La hora de inicio de la ventana de tiempo del descanso. Debe especificare el tiempo de inicio y el tiempo de fin.

Si este campo tiene un valor, los valores de campo MaxTravelTimeBetweenBreaks y MaxCumulWorkTime deben ser nulos y el resto de descansos del análisis deben tener valores nulos para MaxTravelTimeBetweenBreaks y MaxCumulWorkTime.

Durante la resolución aparecerá un error si una ruta tiene varios descansos con ventanas de tiempo solapadas.

Los campos de ventana de tiempo en los descansos pueden contener un valor de solo hora o un valor de fecha y hora. Si un campo de hora como TimeWindowStart tiene un valor solo de hora (por ejemplo, 12:00 PM), se asume que la fecha es la especificada por el parámetro default_date. El uso de valores fecha y hora (por ejemplo, 11/7/2012 12:00 PM) le permite especificar ventanas de tiempo que abarquen dos o más días. Es beneficioso cuando se debe realizar un descanso en algún momento antes o después de medianoche.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

TimeWindowEnd

La hora de finalización de la ventana de tiempo del descanso. Debe especificare el tiempo de inicio y el tiempo de fin.

Si este campo tiene un valor, MaxTravelTimeBetweenBreaks y MaxCumulWorkTime deben ser nulos y el resto de descansos del análisis deben tener valores nulos para MaxTravelTimeBetweenBreaks y MaxCumulWorkTime.

The value for this attribute can be specified using a datetime Python object, such as datetime.datetime(2019, 5, 11, 8, 30, 0), which represents Saturday May 11 2019 8:30:00 AM. If you want to specify a time-only value, datetime.time(8, 30, 0) represents 8:30 AM on the default date that is set using the defaultDate property.

The time zone for the value is specified by the timeZoneForTimeFields property of the analysis object.

Date

MaxViolationTime

Este campo especifica el tiempo de infracción máximo permitido para una ventana de tiempo de descanso. Se considera que se ha infringido una ventana de tiempo si la hora de llegada está fuera del intervalo de tiempo.

Un valor cero indica que no se puede infringir la ventana de tiempo; es decir, la ventana de tiempo es estricta. Un valor distinto de cero especifica la cantidad máxima de retraso. Por ejemplo, el descanso puede comenzar hasta 30 minutos después del final de su ventana de tiempo, pero el retraso se sanciona según el parámetro Importancia de infracción de la ventana de tiempo.

Esta propiedad puede ser nula. Un valor nulo con valores de TimeWindowStart y TimeWindowEnd indica que no existe ningún límite en el tiempo de infracción permitido. Si MaxTravelTimeBetweenBreaks o MaxCumulWorkTime tienen un valor, MaxViolationTime debe ser nulo.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

MaxTravelTimeBetweenBreaks

La cantidad máxima de tiempo de viaje que se puede acumular antes de realizar un descanso. El tiempo de viaje se acumula desde el fin del descanso anterior o, si todavía no se ha realizado un descanso, desde el inicio de la ruta.

Si se trata del descanso final de la ruta, MaxTravelTimeBetweenBreaks también indica el tiempo máximo de viaje que se puede acumular desde el descanso final hasta depósito final.

Este campo está diseñado para limitar cuánto tiempo puede conducir una persona hasta que sea necesario un descanso. Por ejemplo, si la unidad de tiempo del análisis está establecida en minutos y MaxTravelTimeBetweenBreaks tiene un valor de 120, el conductor realizará un descanso después de conducir dos horas. Para asignar un segundo descanso después de dos horas más de conducción, la propiedad MaxTravelTimeBetweenBreaks del segundo descanso debe ser 120.

Si este campo tiene un valor, TimeWindowStart, TimeWindowEnd, MaxViolationTime y MaxCumulWorkTime deben ser nulos para que un análisis se resuelva correctamente.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

MaxCumulWorkTime

La cantidad máxima de tiempo de trabajo que se puede acumular antes de realizar un descanso. El tiempo de trabajo siempre se acumula desde el inicio de la ruta.

El tiempo de trabajo es la suma de tiempo de viaje y de los tiempos de servicio en órdenes, depósitos y descansos. Tenga en cuenta, sin embargo, que esto excluye el tiempo de espera, que es el tiempo que una ruta (o conductor) espera en una orden o depósito a que comience una ventana de tiempo.

Este campo limita el tiempo que puede trabajar una persona hasta que se necesite un descanso. Por ejemplo, si la unidad de tiempo del análisis está establecida en minutos, MaxCumulWorkTime tiene un valor de 120 y ServiceTime tiene un valor de 15, el conductor obtendrá un descanso de 15 minutos después de dos horas de trabajo.

Continuando con el último ejemplo, suponga que se necesita un segundo descanso después de tres horas más de trabajo. Para especificar este descanso, introduzca 315 (cinco horas y 15 minutos) como el valor MaxCumulWorkTime del segundo descanso. Este número incluye los valores MaxCumulWorkTime y ServiceTime del descanso anterior, junto con las tres horas adicionales de trabajo antes de conceder el segundo descanso. Para evitar realizar descansos de tiempo de trabajo máximo prematuramente, recuerde que acumulan el tiempo de trabajo desde el principio de la ruta y ese tiempo de trabajo incluye el tiempo de servicio en los depósitos, órdenes y descansos visitados previamente.

Si este campo tiene un valor, TimeWindowStart, TimeWindowEnd, MaxViolationTime y MaxTravelTimeBetweenBreaks deben ser nulos para que un análisis se resuelva correctamente.

The unit for this field value is specified by the timeUnits property of the analysis object.

Double

IsPaid

Un valor booleano que indica si se paga o no durante el descanso. Al definir este valor de campo como 1 se indica que el tiempo que se pasa en el descanso está incluido en el cómputo de coste de la ruta y la determinación de horas extra. Un valor de 0 indica lo contrario. El valor predeterminado es 1.

Long

Sequence

Indica la secuencia del descanso en su ruta. Este campo puede contener valores nulos, lo que provoca que el solucionador asigne la secuencia de descanso. Si se especifican valores de secuencia, deben ser positivos y únicos para cada ruta (compartida en las visitas al depósito de renovación, órdenes y descansos), pero no tienen que empezar a partir de 1 ni ser contiguos.

Long

OrderPairs

Empareja las órdenes de recogida y entrega de modo que sean atendidas en la misma ruta. Especificar pares de órdenes evita que el análisis asigne solo una de las órdenes a una ruta: o bien se asignan ambas órdenes a la misma ruta o no se asigna ninguna.

A veces se requiere que se emparejen la recogida y entrega de las órdenes. Por ejemplo, una compañía de mensajería podría necesitar tener una ruta para recoger un paquete de alta prioridad de una orden y entregarlo a otra sin volver a un depósito o estación de ordenación para minimizar el tiempo de entrega. Estas órdenes relacionadas pueden estar asignadas a la misma ruta con la secuencia adecuada utilizando pares de órdenes. Las restricciones sobre cuánto tiempo puede permanecer el paquete en el vehículo también se pueden asignar; por ejemplo, el paquete puede ser una muestra de sangre que se debe transportar desde la consulta del médico al laboratorio antes de dos horas.

Algunas situaciones podrían requerir dos pares de órdenes. Por ejemplo, supongamos que desea transportar a una persona mayor desde su casa al médico y llevarla de regreso a casa. El trayecto desde su casa al médico es un par de órdenes con una hora de llegada deseada al médico, mientras que el trayecto del médico a casa es otro par con un tiempo de recogida deseado.

The data type supports the following fields:

FieldDescriptionData type

FirstOrderName

El nombre de la primera orden del par. Este campo es una clave externa para el campo Name en las órdenes.

Text

SecondOrderName

El nombre de la segunda orden del par. Este campo es una clave externa para el campo Name en las órdenes.

La primera orden del par debe ser una orden de recogida; es decir, el valor del campo DeliveryQuantities es nulo. La segunda orden del par debe ser una orden de entrega; es decir, el valor del campo PickupQuantities es nulo. La cantidad que se recoge en la primera orden debe coincidir con la cantidad que se entrega en la segunda orden. Como caso especial, ambas órdenes pueden tener cantidades cero para escenarios donde no se utilizan las capacidades.

Las cantidades de órdenes no se cargan o descargan en los depósitos.

Text

MaxTransitTime

El tiempo máximo de tránsito para el par. El tiempo de tránsito es la duración de tiempo desde la hora de salida de la primera orden a la hora de llegada en la segunda orden. Esta restricción limita el tiempo en vehículo o tiempo de trayecto, entre las dos órdenes. Cuando un vehículo lleva personas o bienes perecederos, el tiempo de trayecto suele ser más corto que el de un vehículo que transporta paquetes o bienes no perecederos. Este campo puede contener valores nulos; un valor nulo indica que no hay ninguna restricción en el tiempo de trayecto.

The unit for this field value is specified by the timeUnits property of the analysis object.

El solucionador puede realizar el seguimiento y ponderar el tiempo de tránsito en exceso (medido con respecto al tiempo de viaje directo entre pares de órdenes). Por ello, puede dirigir el solucionador de VRP para que adopte uno de estos tres enfoques:

  • Minimizar el exceso de tiempo en tránsito total sin tener en cuenta el aumento del coste de viaje para la flota.
  • Encontrar una solución que equilibre el tiempo de infracción total y el coste del viaje.
  • Ignorar el exceso de tiempo en tránsito total; en lugar de eso, minimizar el coste del viaje para la flota.

By assigning an importance level using the excessTransitFactor property of the analysis object, you are, in effect, choosing one of these three options. Regardless of the importance level, the solver will always return an error if the MaxTransitTime value is surpassed.

Double

RouteRenewals

Especifica los depósitos intermedios que las rutas pueden visitar para volver a cargar o descargar la carga que están entregando o recogiendo. Concretamente, una reanudación de ruta vincula una ruta a un depósito. La relación indica que la ruta se puede reanudar (volver a cargar o descargar en ruta) en el depósito asociado.

Las renovaciones de ruta se pueden utilizar para modelar escenarios en los que un vehículo recoge una carga completa de entregas en el depósito inicial, da servicio a las órdenes, vuelve al depósito para reanudar su carga de entregas y sigue dando servicio a más órdenes. Por ejemplo, en la entrega de gas propano, el vehículo podría realizar varias entregas hasta que el depósito se quede casi vacío o vacío por completo, visita un punto de recarga y realiza más entregas.

Aquí aparecen algunas reglas y opciones a tener en cuenta:

  • El punto de recarga/descarga o la ubicación de reanudación, pueden ser distintos del depósito inicial o final.
  • Cada ruta puede tener una o varias ubicaciones de reanudación predeterminadas.
  • Una única ruta puede utilizar una ubicación de renovación más de una vez.
  • En aquellos casos donde podría haber varias ubicaciones de renovación posibles para una ruta, el solucionador identifica la ubicación de renovación disponible más cercana.

The data type supports the following fields:

FieldDescriptionData type

RouteName

El nombre de la ruta a la que corresponde esta renovación. Este campo no puede contener ningún valor nulo y es una clave externa para el campo Name en las rutas.

Text

DepotName

El nombre del depósito donde tiene lugar esta reanudación. Este campo no puede contener ningún valor nulo y es una clave externa para el campo Name en los depósitos.

Text

ServiceTime

El tiempo del servicio para la reanudación. Este campo puede contener un valor nulo; un valor nulo indica un tiempo de servicio cero.

The unit for this field value is specified by the timeUnits property of the analysis object.

El tiempo que tarda en cargarse un vehículo en un depósito de reanudación puede depender del tamaño del vehículo y de lo lleno o vacío que esté el vehículo. Sin embargo, el tiempo de servicio para una reanudación de ruta es un valor fijo y no tiene en cuenta la carga real. En consecuencia, al tiempo de servicio de reanudación se le debería dar un valor correspondiente a un camión completamente cargado, con una carga media o podría realizar otra estimación de tiempo propia.

Double

Sequences

Specifies a space-separated string of sequence values of visits to the renewal depot. This field can contain a null value and is used to preassign visits to the renewal depot.

Text

RouteZones

Delinea los territorios de trabajo para determinadas rutas. Una zona de ruta es una entidad poligonal que se utiliza para restringir rutas a fin de dar servicio solo a las órdenes que queden dentro o cerca del área especificada. A continuación se muestran algunos ejemplos que indican cuándo pueden ser útiles las zonas de ruta:

  • Algunos de los empleados no tienen los permisos requeridos para realizar el trabajo en ciertos estados o comunidades. Puede crear una zona de ruta estricta de modo que solo visiten órdenes en aquellas áreas en las que cumplen los requisitos.
  • Uno de los vehículos se estropea con frecuencia y desea minimizar el tiempo de respuesta haciendo que visite solo las órdenes que queden cerca del taller de mantenimiento. Puede crear una zona de ruta estricta o no estricta para mantener el vehículo cerca.

The data type supports the following fields:

FieldDescriptionData type

RouteName

El nombre de la ruta a la que se aplica esta zona. Una zona de ruta puede tener un máximo de una ruta asociada. Este campo no puede contener valores nulos y es una clave externa para el campo Name en las rutas.

Text

IsHardZone

A Boolean value indicating a hard or soft route zone. A field value of 1 indicates that the route zone is hard; that is, an order that falls outside the route zone polygon can't be assigned to the route. The default value is 1. A field value of 0 indicates that such orders can still be assigned, but the cost of servicing the order is weighted by a function that is based on the Euclidean distance from the route zone. Basically, this means that as the straight-line distance from the soft zone to the order increases, the likelihood of the order being assigned to the route decreases.

Long

PointBarriers

Utilice este parámetro para especificar uno o varios puntos que actuarán como restricciones temporales o representen el tiempo o la distancia adicionales que puede que se necesiten para viajar en las calles subyacentes. Por ejemplo, una barrera de punto se puede usar para representar un árbol caído en una calle o el retraso acumulado en un cruce de ferrocarril.

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre de la barrera.

Text

BarrierType

Especifica si la barrera de punto restringe el recorrido completamente o agrega tiempo o distancia cuando se cruza. El valor de este atributo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Restricción): prohíbe viajar por la barrera. La barrera se conoce como barrera de punto de restricción, ya que actúa como una restricción.

  • 2 (Coste agregado): viajar a través de la barrera aumenta el tiempo o la distancia de viaje en la cantidad especificada en el campo Additional_Time, Additional_Distance o AdditionalCost. Este tipo de barrera se denomina barrera de punto de coste añadido.

Long

Additional_Time

El tiempo de viaje agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado y cuando el valor del parámetro Unidades de medida se basa en el tiempo.

This field value must be greater than or equal to zero, and the values are interpreted to be in the units specified by the timeUnits property.

Double

Additional_Distance

La distancia agregada cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado y cuando el valor del parámetro Unidades de medida se basa en la distancia.

This field value must be greater than or equal to zero, and the values are interpreted to be in the units specified by the distanceUnits property.

Double

AdditionalCost

El coste agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado y cuando el valor del parámetro Unidades de medida no se basa en el tiempo ni en la distancia.

This field value must be greater than or equal to zero, and the values are interpreted to be in unknown units.

Double

FullEdge

Especifica cómo se aplican las barreras de punto de restricción a los elementos de eje durante el análisis. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Falso): permite viajar por el eje hasta la barrera, pero no a través de ella. Este es el valor predeterminado.
  • 1 (Verdadero): restringe el viaje a cualquier punto del eje asociado.

Long

CurbApproach

Especifica la dirección de tráfico que se ve afectada por la barrera. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Cualquier lado del vehículo): la barrera afecta al viaje por el eje en ambas direcciones.
  • 1 (Lado derecho del vehículo): los vehículos solo se ven afectados si la barrera se encuentra a su lado derecho al acercase a ella. La barrera no afecta a los vehículos que atraviesan el mismo eje, pero se acercan la barrera por su lado izquierdo.
  • 2 (Lado izquierdo del vehículo): los vehículos solo se ven afectados si la barrera se encuentra a su lado izquierdo al acercase a ella. La barrera no afecta a los vehículos que atraviesan el mismo eje, pero se acercan la barrera por su lado derecho.

Debido a que los cruces son puntos y no tienen lados, las barreras sobre cruces afectan a todos los vehículos, independientemente de la aproximación a borde.

El atributo CurbApproach trabaja con los dos tipos de estándares nacionales de circulación: por la derecha (Estados Unidos) y por la izquierda (Reino Unido). En primer lugar, considere una instalación en el lado izquierdo de un vehículo. Siempre estará situada el lado izquierdo, independientemente de si el vehículo circula por la mitad izquierda o derecha del camino. Los estándares de circulación nacionales pueden influir en su decisión de aproximarse a una instalación por una de las dos direcciones posibles, de modo que quede en el lado derecho o en el lado izquierdo del vehículo. Por ejemplo, para llegar a una instalación y que no haya un carril entre el vehículo y la instalación, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.

Long

Bearing

La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.

Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.

Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.

Más información sobre el rumbo y la tolerancia de rumbo

Double

BearingTol

El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.

Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.

Más información sobre el rumbo y la tolerancia de rumbo

Double

NavLatency

Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.

The time units of NavLatency are the same as the units specified by the timeUnits property of the analysis object.

Double

Network location fields

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Conjuntamente, estas propiedades describen el punto en la red donde se encuentra el objeto.

Obtener más información sobre ubicación de entradas en una red

LineBarriers

Utilice este parámetro para especificar una o varias líneas que prohíban viajar a cualquier ubicación en la que las líneas se intersequen con las calles. Por ejemplo, un desfile o una protesta que bloquee el tráfico por varios segmentos de calle se puede modelar con una barrera de línea. Una barrera de línea también puede cercar rápidamente varios caminos para que no se puedan atravesar, alejando así las posibles rutas de las partes no deseadas de la red de calles.

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre de la barrera.

Text

BarrierType

Especifica si la barrera restringe el viaje completamente o si escala el coste (por ejemplo, el tiempo o la distancia) para viajar a través de ella. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Restricción): prohíbe viajar por ningún punto en el que la barrera se interseque con la red de transporte. La barrera se conoce como una barrera de línea de restricción.

  • 1 (Coste en escala): escala el coste (por ejemplo, el tiempo o la distancia) requerido para recorrer las calles subyacentes por un factor especificado mediante el campo ScaledTimeFactor o ScaledDistanceFactor. Si las calles están parcialmente cubiertas por la barrera, el tiempo o la distancia del viaje se prorratea y se ajusta. Por ejemplo, un factor de 0,25 significa que se espera que el viaje por las calles subyacentes sea cuatro veces más rápido de lo normal. Un factor de 3,0 significa que se espera que el viaje por las calles subyacentes dure tres veces más de lo normal. Este tipo de barrera se denomina barrera de línea con coste en escala. Se puede utilizar para modelar ralentizaciones debidas al cierre de carriles de tráfico durante la construcción, por ejemplo.

Long

ScaledTimeFactor

Este es el factor por el cual se multiplica el tiempo de viaje de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado y cuando el parámetro Unidades de medida se basa en tiempo.

Double

ScaledDistanceFactor

Este es el factor por el cual se multiplica la distancia de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado y cuando el parámetro Unidades de medida se basa en distancia.

Double

ScaledCostFactor

Este es el factor por el cual se multiplica el coste de las calles que se intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado cuando el parámetro Unidades de medida no se basa ni en tiempo ni en distancia.

Double

Locations

La información de este campo define qué ejes y cruces de red cubre la línea o el polígono y la parte de cada elemento de eje cubierta. No puede leer ni editar directamente la información contenida en este campo, pero Network Analyst la interpreta al resolver un análisis.

Obtener más información sobre ubicación de entradas en una red

Blob

PolygonBarriers

Utilice este parámetro para especificar polígonos que restrinjan completamente el viaje o ajusten de una forma proporcional el tiempo o la distancia que se requieren para viajar por las calles que se intersecan con los polígonos.

The data type supports the following fields:

FieldDescriptionData type

Name

El nombre de la barrera.

Text

BarrierType

Especifica si la barrera restringe el viaje completamente o si escala el coste (por ejemplo, el tiempo o la distancia) para viajar a través de ella. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):

  • 0 (Restricción): prohíbe atravesar cualquier parte de la barrera. La barrera se conoce como barrera de polígono de restricción, ya que prohíbe viajar por las calles que se intersecan con la barrera. Un uso de este tipo de barrera consiste en modelar inundaciones cubriendo áreas de las calles que hacen inviables los viajes por esas calles.

  • 1 (Coste en escala): escala el coste (por ejemplo, el tiempo o la distancia) requerido para recorrer las calles subyacentes por un factor especificado mediante el campo ScaledTimeFactor o ScaledDistanceFactor. Si las calles están parcialmente cubiertas por la barrera, el tiempo o la distancia del viaje se prorratea y se ajusta. Por ejemplo, un factor de 0,25 significa que se espera que el viaje por las calles subyacentes sea cuatro veces más rápido de lo normal. Un factor de 3,0 significa que se espera que el viaje por las calles subyacentes dure tres veces más de lo normal. Este tipo de barrera se denomina barrera de polígono con coste en escala. Se puede utilizar para modelar tormentas que reducen las velocidades de viaje en regiones concretas, por ejemplo.

Long

ScaledTimeFactor

Este es el factor por el cual se multiplica el tiempo de viaje de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado y cuando el parámetro Unidades de medida se basa en tiempo.

Double

ScaledDistanceFactor

Este es el factor por el cual se multiplica la distancia de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado y cuando el parámetro Unidades de medida se basa en distancia.

Double

ScaledCostFactor

Este es el factor por el cual se multiplica el coste de las calles que se intersecan con la barrera. El valor del campo debe ser mayor que cero.

Este campo solo es aplicable para barreras con coste escalado cuando el parámetro Unidades de medida no se basa ni en tiempo ni en distancia.

Double

Locations

La información de este campo define qué ejes y cruces de red cubre la línea o el polígono y la parte de cada elemento de eje cubierta. No puede leer ni editar directamente la información contenida en este campo, pero Network Analyst la interpreta al resolver un análisis.

Obtener más información sobre ubicación de entradas en una red

Blob