Solucionar problema de generación de rutas para vehículos (Network Analyst)

Resumen

Crea una capa de análisis de red para problema de generación de rutas para vehículos (VRP), establece las propiedades de análisis y resuelve el análisis, lo que es ideal para la creación de un servicio web VRP. Una capa de análisis de VRP encuentra las rutas mejores para una flota de vehículos.

Más información sobre la salida de Solucionar problema de generación de rutas para vehículos

Heredado:

Esta es una herramienta obsoleta. Esta funcionalidad ha sido sustituida por la herramienta Crear capa de análisis de Problema de generación de rutas para vehículos y el botón Problema de generación de rutas para vehículos en el menú desplegable Análisis de red, en la cinta Análisis.

Uso

  • El cuadro de diálogo de la herramienta agrupa los diversos parámetros opcionales en las siguientes seis categorías para hacer que sea más fácil administrarlos:

    • Análisis avanzado
    • Barreras
    • Modo de viaje personalizado
    • Ubicaciones de red
    • Salida
    • Capacidades de servicio

Sintaxis

arcpy.na.SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, network_dataset, output_workspace_location, output_unassigned_stops_name, output_stops_name, output_routes_name, output_directions_name, {default_date}, {uturn_policy}, {time_window_factor}, {spatially_cluster_routes}, {route_zones}, {route_renewals}, {order_pairs}, {excess_transit_factor}, {point_barriers}, {line_barriers}, {polygon_barriers}, {time_attribute}, {distance_attribute}, {use_hierarchy_in_analysis}, {restrictions}, {attribute_parameter_values}, {maximum_snap_tolerance}, {exclude_restricted_portions_of_the_network}, {feature_locator_where_clause}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {save_output_layer}, {service_capabilities}, {ignore_invalid_order_locations}, {travel_mode}, {ignore_network_location_fields}, {time_zone_usage_for_time_fields}, {overrides}, {save_route_data})
ParámetroExplicaciónTipo de datos
orders

Las órdenes que deben visitar 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).

El conjunto de entidades de las órdenes tiene una tabla de atributos asociada. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

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.

ServiceTime:

Esta propiedad especifica cuánto tiempo se empleará en la ubicación de red cuando la ruta la visite; es decir, almacena el valor de impedancia para 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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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.

Nota:
  • 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 salida antes de que se agote la ventana de tiempo, reste el valor de campo ServiceTime del valor de campo TimeWindowEnd1.

  • Los campos de la ventana de tiempo pueden contener un valor solo de hora o un valor de fecha y hora en un campo de fecha y no pueden ser enteros que representen milisegundos desde Epoch. La zona horaria de los campos de ventana de tiempo se especifica con el parámetro time_zone_usage_for_time_fields. Si un campo de tiempo tal como TimeWindowStart1 tiene un valor solo de tiempo (por ejemplo, 8:00 AM), se asume que la fecha es la que especifica la propiedad Fecha predeterminada de la capa de 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.

  • La fecha predeterminada se omite cuando un campo de ventana de tiempo incluye una fecha con la hora. Para evitar cualquier error en esta situación, el formato de todas las ventanas de tiempo de Depósitos, Rutas, Órdenes y Pausas también debe incluir la fecha con la hora.

  • Si está utilizando datos de tráfico, los campos de hora del día para la ubicación de red siempre hacen referencia a la misma zona horaria que el borde en el que se encuentra la ubicación de red.

TimeWindowEnd1:

El tiempo final 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 final.

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.

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 es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.

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 otro lado, 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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

El solucionador puede realizar un seguimiento y ponderación de las infracciones de la ventana de tiempo. Por ello, puede dirigir el solucionador de VRP para que adopte uno de estos tres enfoques:

  • Minimizar el tiempo de infracción 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 tiempo de infracción total, en su lugar, minimizar el coste del viaje para la flota.

Al asignar un nivel de importancia para el parámetro Importancia de violación de ventana de tiempo (time_window_factor en Python), está eligiendo en esencia uno de estos tres enfoques. En cualquier caso, el solucionador devolverá un error si el valor establecido para MaxViolationTime1 se supera.

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.

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 asegurarse de que a la orden no se va a asignar ninguna ruta que salga antes de que llegue el envío, 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.

Nota:

  • 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), se asume que la fecha es la fecha especificada mediante la propiedad Fecha predeterminada de la capa de 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 cortes. En este caso, deberá indicar una fecha y hora para 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.

  • El Solucionador VRP no está diseñado para resolver problemas de más de un año de duración. Por lo tanto, todos los tiempos de servicio y las ventanas de tiempo deben ser de menos de un año.

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.

Nota:
  • 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), se asume que la fecha es la fecha especificada mediante la propiedad Fecha predeterminada de la capa de 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 cortes. En este caso, deberá indicar una fecha y hora para 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.

DeliveryQuantities:

El tamaño de la entrega. Puede especificar el tamaño de cualquier dimensión que desee, como peso, volumen o cantidad. Incluso 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 especifican de la misma manera; es decir, los valores deben estar en las mismas unidades, y si está utilizando varias dimensiones, las dimensiones se deben enumerar en la misma secuencia para todos los parámetros. Por lo tanto, si especifica el peso en libras seguido del volumen en pies cúbicos para DeliveryQuantities, es necesario indicar 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 mezcla unidades o cambia la secuencia, obtendrá resultados no deseados sin recibir ningún mensaje de advertencia.

Una cadena vacía o un valor nulo equivale a que todas las dimensiones que son cero. 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 ceros. Las cantidades de entrega no pueden ser negativas.

PickupQuantities:

El tamaño de la recogida. Puede especificar el tamaño de cualquier dimensión que desee, como peso, volumen o cantidad. Incluso 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.

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

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.

Rentas se incluye al optimizar el valor de función objetivo pero no forma parte del coste operativo de la solución. Es decir, el campo TotalCost en la clase de ruta nunca incluye rentas en su resultado; sin embargo, la renta pondera la importancia relativa de dar servicio a las órdenes.

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 en las clases Órdenes y Rutas debe coincidir exactamente para que el solucionador de VRP pueda vincularlas juntas.

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ía BucketTruck en el campo SpecialtyNames para que estas órdenes indiquen su necesidad especial. SpecialtyNames se dejaría como nulo para las otras órdenes. De manera similar, la empresa también introducirá BucketTruck en el campo SpecialtyNames de las rutas que conducen los camiones con los brazos hidráulicos. Dejará el campo nulo para las otras 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.

AssignmentRule:

Este campo especifica la regla para asignar la orden a una ruta. Este está restringido por un dominio de valores, que se muestran a continuación (sus valores codificados se muestran entre paréntesis).

  • Excluir (0): la orden se va a excluir de la siguiente operación de resolución.
  • Conservar la ruta y la secuencia relativa (1): el solucionador debe asignar siempre la orden a la ruta preasignada y 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, sólo se mantiene la secuencia relativa, no la secuencia absoluta. Para ilustrar lo que esto significa, imagine que hay dos órdenes, A y B. Tienen respectivamente los valores de secuencia 2 y 3. Si se establecen los valores del campo AssignmentRule en Conservar ruta y secuencia relativa, los valores de secuencia reales de A y B pueden cambiar después de la solución porque otras órdenes, descansos y visitas al depósito aún se pueden secuenciar antes, entre, o después de A y B. Sin embargo, B no se puede secuenciar antes que A.

  • Conservar la ruta (2): 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.
  • Excepción (3): 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 y una secuencia a la orden para minimizar el valor total de la función objetivo. Este es el valor predeterminado.
  • Delimitar primero (4): 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 a fin de minimizar el valor total de la función objetivo.
  • Delimitar último (5): 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 a fin de minimizar el valor total de la función objetivo.

Este campo no puede contener un valor nulo.

CurbApproach:

La propiedad CurbApproach especifica la dirección por la que un vehículo puede llegar a una ubicación de red y partir de ella. Hay cuatro opciones (sus valores codificados se muestran entre paréntesis):

  • Cualquier lado del vehículo (0): el vehículo puede aproximarse a la ubicación de red y abandonarla en cualquier sentido. Los cambios de sentido están permitidos. Debe elegir esta configuración si el vehículo puede realizar un cambio de sentido en la parada o si puede entrar en un camino o un estacionamiento y dar la vuelta.
  • Lado derecho del vehículo (1): cuando el vehículo se aproxima a la ubicación de red y la abandona, el bordillo debe estar en el lado derecho del vehículo. Los cambios de sentido están prohibidos.
  • Lado izquierdo del vehículo (2): cuando el vehículo se aproxima a la ubicación de red y la abandona, el bordillo debe estar en el lado izquierdo del vehículo. Los cambios de sentido están prohibidos.
  • Sin cambio de sentido (3): cuando el vehículo se aproxima a la ubicación de red, el bordillo puede estar a uno u otro lado del vehículo; no obstante, el vehículo debe partir sin cambiar de sentido.

RouteName:

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

Como campo de entrada, 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 determina la mejor asignación de ruta posible para la orden. Si está establecido en nulo, el campo de secuencia 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 que está asignada la orden.

Sequence:

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

Como campo de entrada, este campo se utiliza para especificar la secuencia relativa para 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 la secuencia de entrada son no negativos y únicos para cada ruta (se comparten en las visitas al depósito, órdenes y descansos), pero no tienen que empezar a partir de 0 ni ser contiguos.

Después de una operación de resolución, el campo Sequence contiene el valor de secuencia de la orden en su ruta asignada. Los valores de secuencia de salida para una ruta se comparten en las visitas a depósito, órdenes y descansos; empiezan a partir de 1 (en el depósito de inicio); y son consecutivos. Así que el valor Secuencia de salida más pequeño posible para una orden enrutada es 2, dado que una ruta siempre comienza en un depósito.

Feature Set
depots

Un depósito es una ubicación desde la que sale un vehículo al comienzo de la jornada de trabajo y a la que vuelve al final de la misma. Los vehículos (para las entregas) se cargan o descargan (para las recogidas) en los depósitos en el inicio de la ruta. 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.

El conjunto de entidades de los depósitos tiene una tabla de atributos asociada. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

Name:

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

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

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.

Nota:
  • Los campos de ventana de tiempo pueden tener un valor de solo hora o un valor de fecha y hora. Si un campo de hora tiene un valor solo de hora (por ejemplo, 8:00 a. m.), se asume que la fecha es la fecha especificada por el parámetro Fecha predeterminada de la capa de 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.

  • La fecha predeterminada se omite cuando un campo de ventana de tiempo incluye una fecha con la hora. Para evitar cualquier error en esta situación, el formato de todas las ventanas de tiempo de Depósitos, Rutas, Órdenes y Pausas también debe incluir la fecha con la hora.

  • Si está utilizando datos de tráfico, los campos de hora del día para la ubicación de red siempre hacen referencia a la misma zona horaria que el borde en el que se encuentra la ubicación de red.

TimeWindowEnd1:

El tiempo final 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 final.

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.

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 es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.

CurbApproach:

La propiedad CurbApproach especifica la dirección por la que un vehículo puede llegar a una ubicación de red y partir de ella. Hay cuatro opciones (sus valores codificados se muestran entre paréntesis):

  • Cualquier lado del vehículo (0): el vehículo puede aproximarse a la ubicación de red y abandonarla en cualquier sentido. Los cambios de sentido están permitidos. Debe elegir esta configuración si el vehículo puede realizar un cambio de sentido en la parada o si puede entrar en un camino o un estacionamiento y dar la vuelta.
  • Lado derecho del vehículo (1): cuando el vehículo se aproxima a la ubicación de red y la abandona, el bordillo debe estar en el lado derecho del vehículo. Los cambios de sentido están prohibidos.
  • Lado izquierdo del vehículo (2): cuando el vehículo se aproxima a la ubicación de red y la abandona, el bordillo debe estar en el lado izquierdo del vehículo. Los cambios de sentido están prohibidos.
  • Sin cambio de sentido (3): cuando el vehículo se aproxima a la ubicación de red, el bordillo puede estar a uno u otro lado del vehículo; no obstante, el vehículo debe partir sin cambiar de sentido.

Bearing:

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

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

Utilizar este campo tiende a evitar agregar ubicaciones a los bordes 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 Network Analyst a determinar en qué lado de la calle está el punto.

Para obtener más información, consulte Rumbo y BearingTol.

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 borde más cercano.

Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que cero y menores que 180.

Un valor de 30 significa que cuando Network Analyst intenta agregar una ubicación de red en un borde, se genera un rango de valores de rumbo aceptable 15º a cada lado del borde (izquierdo y derecho) y en ambas direcciones digitalizadas del borde.

Para obtener más información, consulte Rumbo y BearingTol.

NavLatency:

Este campo solo se utiliza en el proceso de resolución si Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto tiempo se espera que transcurra 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. Las unidades de tiempo de NavLatency son las mismas que las unidades del atributo de coste especificado por el parámetro Atributo de tiempo.

Feature Set
routes

Las rutas que están disponibles para un problema de generación de rutas para vehículos determinado. Una ruta especifica las características del vehículo y del conductor; después de la resolución, también representa la ruta entre los depósitos y las órdenes.

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.

El conjunto de registros de rutas tiene varios atributos. Los campos en la tabla de atributos se muestran y describen a continuación.

Name:

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

Network Analyst genera un nombre exclusivo en el momento de la resolución si el valor de campo es nulo. Por consiguiente, introducir un valor es opcional en la mayoría de los casos. Sin embargo, debe introducir un nombre si su análisis incluye descansos, renovaciones de ruta, zonas de ruta u órdenes preasignadas a una ruta, porque el nombre de ruta se utiliza como clave externa en estos casos. Tenga en cuenta que los nombres de ruta no distinguen entre mayúsculas y minúsculas.

StartDepotName:

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

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 reanudación, sus órdenes de entrega (aquéllas con valores de DeliveryQuantities distintos de cero en la clase Ó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.

EndDepotName:

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

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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

Nota:

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. En consecuencia, los tiempos de servicio de depósito podrían ser valores dados correspondientes a un camión completamente cargado o con una carga media, o podría realizarse una estimación propia del tiempo.

EndDepotServiceTime:

El tiempo de servicio en el depósito final. Esto 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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

Nota:

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. En consecuencia, los tiempos de servicio de depósito podrían ser valores dados correspondientes a un camión completamente cargado o con una carga media, o podría realizarse una estimación propia del tiempo.

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 tiempo predeterminado de 8:00 a.m.; el valor predeterminado se interpreta como 8:00 a.m. en la fecha proporcionada por el parámetro Fecha predeterminada (default_date en Python).

La fecha predeterminada se omite cuando un campo de ventana de tiempo incluye una fecha con la hora. Para evitar cualquier error en esta situación, el formato de todas las ventanas de tiempo de Depósitos, Rutas, Órdenes y Pausas también debe incluir la fecha con la hora.

Al utilizar los datasets de red con datos de tráfico en varias zonas horarias, la zona horaria para EarliestStartTime es igual a la zona horaria del eje o cruce en los que se encuentra el depósito inicial.

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 tiempo predeterminado de 10:00 a. m.; el valor predeterminado se interpreta como 10:00 a.m. en la fecha proporcionada por la propiedad Fecha predeterminada de la capa de análisis.

Al utilizar los datasets de red con datos de tráfico en varias zonas horarias, la zona horaria para LatestStartTime es igual a la zona horaria del eje o cruce en los que se encuentra el depósito inicial.

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 tenga que 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.

Para ilustrar, digamos que hay cinco órdenes coincidentes en un edificio alto y a las que dan servicio tres rutas diferentes. Esto significa que se incurrirían en tres retrasos de llegada/salida; es decir, tres conductores tendrían que buscar estacionamiento por separado y entrar en el mismo edificio. Sin embargo, si solo una ruta pudiera dar servicio a las órdenes en su lugar, solo tendría que aparcar un conductor y entrar en el edificio, solo se incurriría en un retraso de llegada/salida. Dado que el solucionador de VRP intenta minimizar el coste, intentará limitar los retrasos de llegada/salida y, de este modo, elegir 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.)

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

Capacities:

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

Introduzca capacidades sin indicar las unidades. Por ejemplo, suponiendo que el vehículo puede llevar un máximo de 40,000 libras; debe introducir 40000. Es necesario recordar que el valor de referencia para el futuro es 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, Capacities se debe introducir 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 Órdenes. Profundizando en el segundo punto, tenga en cuenta que el solucionador de VRP simultáneamente se refiere a Capacities, DeliveryQuantities y PickupQuantities para garantizar que no se sobrecargue ninguna ruta. Como no se pueden introducir unidades en el campo, Network Analyst no puede convertir unidades, por lo que deberá 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, obtendrá resultados no deseados sin recibir ningún mensaje de advertencia. Por lo tanto, es buena idea 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 que todos los valores son cero. Los valores de capacidad no pueden ser negativos.

Si la cadena de caracteres de 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 cero.

Precaución:

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, dado que la esfera tiene un diámetro de 12,6 pies, no cabría en el camión de 8 pies de ancho.

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.

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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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.

La unidad para este valor de campo se especifica con el parámetro Unidades de campo de distancia (distance_unitspara Python).

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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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), si el parámetro Unidades de campo de tiempo está establecido en Minutos.

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.

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.

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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

MaxTotalDistance:

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

La unidad para este valor de campo se especifica con el parámetro Unidades de campo de distancia (distance_unitspara Python).

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

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 del parámetro Ó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ía BucketTruck en el campo SpecialtyNames para que estas órdenes indiquen su necesidad especial. SpecialtyNames se dejaría como nulo para las otras órdenes. De manera similar, la empresa también introducirá BucketTruck en el campo SpecialtyNames de las rutas que conducen los camiones con los brazos hidráulicos. Dejará el campo nulo para las otras 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.

AssignmentRule:

Esto especifica si se puede utilizar o no la ruta al resolver el problema. Un dominio de valores restringe este campo y los valores posibles son los siguientes:

  • Incluir: la ruta está incluida en la operación de resolución. Este es el valor predeterminado.
  • Excluir: la ruta se excluye de la operación de resolución.

Record Set
breaks

Los períodos de descanso, o descansos, para 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 cuando comienza un corte: mediante una ventana de tiempo, un tiempo de viaje máximo o un tiempo de trabajo máximo.

El conjunto de registros de descanso tiene atributos asociados. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

RouteName:

El nombre de la ruta a la que 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 en la clase Rutas y no puede tener un valor nulo.

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.

ServiceTime

La duración del descanso. Este campo no puede contener valores nulos y tiene un valor predeterminado de 60.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

TimeWindowStart:

La hora de inicio de la ventana de tiempo del descanso. Las ventanas de tiempo semiabiertas no son válidas para los descansos.

Si este campo tiene un valor, MaxTravelTimeBetweenBreaks y MaxCumulWorkTime deben ser nulos; el resto de descansos de la capa de 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 la ventana de tiempo en descansos pueden contener un valor solo de hora o un valor de fecha y hora en un campo de fecha y no pueden ser enteros que representen milisegundos desde Epoch. La zona horaria de los campos de ventana de tiempo se especifica con el parámetro time_zone_usage_for_time_fields. Si un campo de hora como TimeWindowStart tiene un valor solo de hora (por ejemplo, 12:00 p. m.), se asume que la fecha es la especificada por el parámetro Fecha predeterminada (default_date en Python). 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.

La fecha predeterminada se omite cuando un campo de ventana de tiempo incluye una fecha con la hora. Para evitar cualquier error en esta situación, el formato de todas las ventanas de tiempo de Depósitos, Rutas, Órdenes y Pausas también debe incluir la fecha con la hora.

TimeWindowEnd:

La hora de finalización de la ventana de tiempo del descanso. Las ventanas de tiempo semiabiertas no son válidas para los descansos.

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

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 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 conforme al parámetro Importancia de la violación de ventana de tiempo (time_window_factor en Python).

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

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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 el parámetro Unidades de campo de tiempo (time_units en Python) del análisis está establecido 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, el valor de campo 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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

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 está diseñado para limitar el tiempo que puede trabajar una persona hasta que sea necesario un descanso. Por ejemplo, si el parámetro Unidades de campo de tiempo (time_units en Python) está establecido 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 corte después de tres horas más de trabajo. Para especificar este descanso, introduciría 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.

La unidad de este valor de campo se especifica mediante el parámetro Unidades de campo de tiempo (time_units en Python).

IsPaid:

Un valor booleano que indica si se paga o no durante el descanso. Un valor True indica que el tiempo dedicado en el descanso está incluido en el cálculo de coste de la ruta y la determinación de horas extra. Un valor False indica lo contrario. El valor predeterminado es True.

Sequence:

Como campo de entrada, indica la secuencia del descanso en su ruta. Este campo puede contener valores nulos. Los valores de secuencia de entrada son positivos y únicos para cada ruta (compartida en las visitas a depósito de renovación, órdenes y descansos), pero no tienen que empezar a partir de 1 o ser contiguos.

El solucionador modifica el campo de secuencia. Después de la resolución, este campo contiene el valor de secuencia del descanso en su ruta. Los valores de secuencia de salida para una ruta se comparten en las visitas a depósito, órdenes y descansos; empiezan a partir de 1 (en el depósito de inicio); y son consecutivos.

Record Set
time_units

Especifica las unidades de tiempo para todos los valores de campo basados en tiempo del análisis.

  • SecondsSegundos
  • MinutesMinutos
  • HoursHoras
  • DaysDías

Muchas entidades y registros de un análisis de VRP tienen campos para almacenar valores de tiempo como, por ejemplo, ServiceTime para Órdenes y CostPerUnitTime para Rutas. Para minimizar los requisitos de entrada de datos, estos valores de campo no incluyen unidades. En lugar de ello, todos los valores de campo basados en la distancia, se deben introducir en las mismas unidades y este parámetro se utiliza para especificar las unidades de esos valores.

Tenga en cuenta que los campos de salida basados en el tiempo utilizan las mismas unidades especificadas por este parámetro.

Esta unidad de tiempo no tiene que coincidir con la unidad de tiempo del parámetro Atributo de tiempo de la red (time_attribute en Python).

String
distance_units

Especifica las unidades de distancia para todos los valores de campo basados en tiempo del análisis.

  • MilesMillas
  • KilometersKilómetros
  • FeetPies
  • YardsYardas
  • MetersMetros
  • NauticalMilesMillas náuticas

Muchas entidades y registros en un análisis de VRP tienen campos para almacenar valores de distancia como, por ejemplo, MaxTotalDistance y CostPerUnitDistance para Rutas. Para minimizar los requisitos de entrada de datos, estos valores de campo no incluyen unidades. En lugar de ello, todos los valores de campo basados en la distancia, se deben introducir en las mismas unidades y este parámetro se utiliza para especificar las unidades de esos valores.

Tenga en cuenta que los campos de salida basados en la distancia utilizan las mismas unidades especificadas por este parámetro.

Esta unidad de distancia no tiene que coincidir con la unidad de distancia del Atributo de distancia de la red (distance attribute en Python).

String
network_dataset

El dataset de red donde se realizará el análisis del problema de generación de rutas para vehículos. El dataset de red debe tener un atributo de coste basado en tiempo debido a que el solucionador de VRP minimiza el tiempo.

Network Dataset Layer
output_workspace_location

La geodatabase de archivos o el espacio de trabajo en memoria en los que se crearán las clases de entidad de salida. Este espacio de trabajo ya debe existir. El espacio de trabajo de salida predeterminado está en la memoria.

Workspace
output_unassigned_stops_name

El nombre de la clase de entidad de salida que contendrá los depósitos inalcanzables o las órdenes no asignadas.

String
output_stops_name

El nombre de la clase de entidad que contendrá las paradas visitadas por las rutas. Esta clase de entidad incluye paradas en los depósitos, órdenes y descansos.

String
output_routes_name

El nombre de la clase de entidad que contendrá las rutas del análisis.

String
output_directions_name

El nombre de la clase de entidad que contendrá las indicaciones para las rutas.

String
default_date
(Opcional)

La fecha predeterminada para los valores del campo de hora que especifica una hora del día sin incluir una fecha.

Date
uturn_policy
(Opcional)

Especifica la política de cambio de sentido que se usará en los cruces. Permitir cambios de sentido implica que el solucionador puede dar la vuelta en un cruce y regresar por la misma calle. Debido a que los cruces representan intersecciones de calles y callejones sin salida, distintos vehículos pueden dar la vuelta en algunos cruces, pero no en otros; depende de si el cruce representa una intersección o un callejón sin salida. Para dar cabida a esta situación, el parámetro de la política de cambios de sentido se especifica implícitamente por la cantidad de ejes que se conectan en el cruce, lo que se conoce como valencia de cruce. Los valores aceptables para este parámetro se enumeran a continuación; cada uno seguido de una descripción de su significado en términos de valencia de cruce.

  • ALLOW_UTURNSSe permiten los cambios de sentido en los cruces con cualquier cantidad de bordes adyacentes. Este es el valor predeterminado.
  • NO_UTURNSLos cambios de sentido están prohibidos en todos los cruces, independientemente de la valencia de cruce. No obstante, los cambios de sentido siguen estando permitidos en las ubicaciones de red, aunque se elija esta configuración; pero también puede establecer la propiedad CurbApproach de cada ubicación de red individual para prohibir los cambios de sentido.
  • ALLOW_DEAD_ENDS_ONLYLos cambios de sentido están prohibidos en todos los cruces, excepto los que tienen solo un borde adyacente (una calle sin salida).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYLos cambios de sentido están prohibidos en los cruces donde se encuentran dos bordes adyacentes, pero están permitidos en las intersecciones (cruces con tres o más bordes adyacentes) o calles sin salida (cruces con exactamente un borde adyacente). A menudo, las redes tienen cruces extraños en medio de segmentos de carretera. Esta opción evita que los vehículos hagan cambios de sentido en estas ubicaciones.

Si necesita una política de cambios de sentido definida de forma más precisa, plantéese agregar un evaluador de retraso de giro global a un atributo de coste de red, o bien ajuste su configuración si existe, y preste especial atención a la configuración de los giros inversos. También puede definir la propiedad CurbApproach de sus ubicaciones de red.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

String
time_window_factor
(Opcional)

Especifica la importancia de respetar las ventanas de tiempo. Hay tres opciones, que se muestran y se describen a continuación.

  • LowAsigna más importancia a minimizar los tiempos de conducción y menos a llegar a tiempo a las paradas. Puede utilizar esta configuración si tiene varios trabajos atrasados de solicitudes de servicio. Para poder cumplir con más órdenes en un día y reducir el trabajo atrasado, puede elegir este ajuste, aunque los clientes sufran las molestias de las llegadas tardías.
  • MediumBalancea la importancia de minimizar los tiempos de conducción y la llegada dentro de las ventanas de tiempo. Este es el valor predeterminado.
  • HighAsigna más importancia a llegar a tiempo a las paradas y menos a minimizar los tiempos de conducción. Las organizaciones que realizan entregas con tiempos críticos o a las que les preocupa la atención al cliente eligen este ajuste.
String
spatially_cluster_routes
(Opcional)

Especifica si se va a utilizar el clustering espacial.

  • CLUSTER Las órdenes asignadas a una ruta individual se agruparán espacialmente. La agrupación de órdenes tiende a mantener las rutas en áreas más pequeñas y a reducir la frecuencia con que se intersecan entre sí las líneas de ruta; sin embargo, el clustering puede aumentar los tiempos globales de viaje. Esta es la opción predeterminada.
  • NO_CLUSTEREl solucionador no concederá prioridad a las órdenes de clustering espacial y las líneas de ruta podrían intersecarse. Utilice esta opción si las zonas de ruta están especificadas.
Boolean
route_zones
(Opcional)

Delinea los territorios de trabajo para determinadas rutas. Una zona de ruta es una entidad poligonal que se utiliza para restringir rutas para que den servicio solo a las órdenes que quedan 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, de forma que desea minimizar el tiempo de respuesta haciendo que solo visite aquellas órdenes que queden cerca del taller de mantenimiento. Puede crear una zona de ruta estricta o no estricta para mantener el vehículo cerca.

El conjunto de entidades de las zonas de ruta tiene una tabla de atributos asociada. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

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 al campo Name en la capa de entidades Rutas.

IsHardZone:

Un valor booleano que indica una zona de ruta estricta o no. Un valor True indica que la zona de ruta es estricta; es decir, una orden que caiga fuera del polígono de la zona de ruta no se puede asignar a la ruta. El valor predeterminado es Verdadero (1). Un valor Falso (0) indica que tales órdenes se pueden seguir asignando, pero el coste de dar servicio a la orden se pondera mediante función basada en la distancia euclidiana desde la zona de ruta. Básicamente, esto significa que como la distancia en línea recta desde la zona no estricta a la orden aumenta, disminuye la probabilidad de asignar la orden a la ruta.

Feature Set
route_renewals
(Opcional)

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.

A continuación, se muestran algunas reglas y opciones a tener en cuenta al trabajar con puntos de semilla de ruta:

  • 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 ruta única puede utilizar una ubicación de reanudación más de una vez.
  • En algunos casos donde puede haber varias ubicaciones de renovación potenciales para una ruta, el solucionador elige la ubicación de reanudación más cercana disponible.

El conjunto de registros de reanudaciones de ruta tiene atributos asociados. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

DepotName:

El nombre del depósito donde tiene lugar esta reanudación. Este campo no puede contener un valor nulo y es una clave externa al campo Name en la capa de entidades Depósitos.

RouteName:

El nombre de la ruta a la que se aplica esta reanudación. Este campo no puede contener un valor nulo y es una clave externa al campo Name en la capa de entidades Rutas.

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.

La unidad para este valor de campo la especifica la propiedad Time Field Units de la capa de análisis.

Nota:

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.

Record Set
order_pairs
(Opcional)

Empareja las órdenes de recogida y entrega de modo que sean atendidas en la misma ruta.

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. Además, 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 tiene que ser transportada desde la consulta del médico al laboratorio en un plazo de dos horas.

El conjunto de registros de pares de órdenes tiene atributos asociados. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo de Id. administrado por el sistema.

FirstOrderName:

El nombre de la primera orden del par. Este campo es una clave externa al campo Name en la capa de entidades Órdenes.

SecondOrderName:

El nombre de la segunda orden del par. Este campo es una clave externa al campo Name en la capa de entidades Ó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.

Nota:

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

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.

La unidad para este valor de campo la especifica la propiedad Time Field Units de la capa de análisis.

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 al solucionador de VRP para que adopte uno de estos tres enfoques: minimizar el tiempo de tránsito en exceso total, sin tener en cuenta el aumento en coste de viaje para la flota; buscar una solución que equilibre el tiempo de infracción total y el coste del viaje; o ignorar el tiempo de tránsito en exceso total y, en su lugar, minimizar el coste de viaje para la flota. Al asignar un nivel de importancia para el parámetro Importancia del exceso de tiempo de tránsito (excess_transit_factor en Python), está eligiendo en efecto uno de estos tres enfoques. Sin tener en cuenta el nivel de importancia, el solucionador devolverá siempre un error si se supera el valor MaxTransitTime.

Record Set
excess_transit_factor
(Opcional)

Especifica la importancia de reducir el exceso de tiempo de tránsito de los pares de órdenes. El exceso de tiempo de tránsito es la cantidad de tiempo que excede el tiempo requerido para viajar directamente entre las órdenes asociadas. El exceso de tiempo puede ser causado por los descansos del conductor o por viajes a las órdenes y los depósitos intermedios.

  • LowAsigna más importancia a minimizar el coste general de la solución y menos al exceso de tiempo de tránsito. En general, esta configuración se usa para servicios de mensajería. Debido a que los servicios de correo transportan paquetes y no personas, no necesitan preocuparse por el tiempo de viaje. Al utilizar este ajuste, los servicios de correo pueden cumplir con las órdenes asociadas en la secuencia adecuada y minimizar el coste total de la solución.
  • MediumEquilibra la importancia de reducir el exceso de tiempo de tránsito y el coste general de la solución. Este es el valor predeterminado.
  • HighAsigna más importancia al tiempo de tránsito más corto entre las órdenes asociadas y menos al coste general del viaje. Resulta lógico utilizar esta configuración si está transportando personas entre órdenes asociadas y desea acortar el tiempo de viaje. Esto es característico de los servicios de taxi.
String
point_barriers
(Opcional)

Especifica barreras de punto, que se dividen en dos tipos: barreras de restricción y barreras de punto de coste añadido. Restringen temporalmente el trazado poligonal en toda la red o agregan impedancia a puntos de la red. Las barreras de punto se definen mediante un conjunto de entidades, y los valores de atributo que especifica para las entidades de punto determinan si son barreras de restricción o de coste agregado. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo ID administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

Name:

El nombre de la barrera.

BarrierType:

Especifica si la barrera restringe completamente el viaje o agrega coste cuando se viaja a través de ella. Existen dos opciones:

  • Restricción (0): prohíbe atravesar la barrera. Este es el valor predeterminado.
  • Coste agregado (2): atravesar la barrera aumenta el coste de la red en el importe especificado en los campos Additional_Time y Additional_Distance.

Additional_Time:

Si BarrierType se establece en coste agregado, el valor del campo Additional_Time indica cuánto tiempo se agrega a una ruta cuando la ruta atraviesa la barrera.

La unidad para este valor de campo la especifica la propiedad Unidades de campo de tiempo de la capa de análisis.

Additional_Distance:

Si BarrierType se establece en coste agregado, el valor del campo Additional_Distance indica cuánta impedancia se agrega a una ruta cuando la ruta atraviesa la barrera.

La unidad para este valor de campo la especifica el parámetro Unidades de campo de distancia.

Feature Set
line_barriers
(Opcional)

Especifica las barreras de línea, que restringen temporalmente el trazado poligonal en ellos. Las barreras de línea se definen mediante un conjunto de entidades. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo ID administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

Name:

El nombre de la barrera.

Feature Set
polygon_barriers
(Opcional)

Especifica barreras de polígono, que se dividen en dos tipos: barreras de restricción y barreras de polígono de coste escalado. Restringen temporalmente el trazado poligonal o la impedancia de escala en las partes de la red que cubren. Las barreras de polígono se definen mediante un conjunto de entidades, y los valores de atributo que especifica para las entidades de polígono determinan si son barreras de restricción o de coste de escala. Los campos en la tabla de atributos se muestran y describen a continuación.

ObjectID:

Campo ID administrado por el sistema.

Shape:

Campo de geometría que indica la ubicación geográfica del objeto de análisis de red.

Name:

El nombre de la barrera.

BarrierType:

Especifica si la barrera restringe completamente el viaje o escala el coste de viajar a través de ella. Existen dos opciones:

  • Restricción (0): prohíbe recorrer cualquier parte de la barrera. Este es el valor predeterminado.
  • Coste en escala (1): escala la impedancia de los bordes subyacentes multiplicándola por el valor de la propiedad Attr_[Impedance]. Si la barrera cubre parcialmente los ejes, la impedancia se prorratea y se multiplica.

Scaled_Time:

Los valores basados en el tiempo de impedancia de los bordes subyacentes de la barrera se multiplican por el valor establecido en este campo. Este campo solo es pertinente cuando la barrera es una barrera de coste escalado.

Scaled_Distance:

Los valores basados en la distancia de impedancia de los bordes subyacentes de la barrera se multiplican por el valor establecido en este campo. Este campo solo es pertinente cuando la barrera es una barrera de coste escalado.

Feature Set
time_attribute
(Opcional)

El atributo de coste de red que se utiliza al determinar el tiempo de viaje de los elementos de red.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

String
distance_attribute
(Opcional)

El atributo de coste de red que se utiliza al determinar la distancia de los elementos de red.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

String
use_hierarchy_in_analysis
(Opcional)
  • USE_HIERARCHYEl atributo de jerarquía se usará para el análisis. Utilizar una jerarquía hace que el solucionador prefiera bordes de orden superior en lugar de bordes de orden inferior. Las soluciones jerárquicas son más rápidas y se pueden utilizar para simular la preferencia de un conductor que opta por viajar por autopistas en lugar de por carreteras locales cuando sea posible, aunque signifique un viaje más largo. Esta opción es válida solo si el dataset de red de entrada tiene atributos de jerarquía.
  • NO_HIERARCHYEl atributo de jerarquía no se usará para el análisis. Si no se utiliza la jerarquía, el resultado es una ruta exacta para el dataset de red.

El parámetro no se utiliza si no se definen atributos de jerarquía en el dataset de red utilizado para realizar el análisis.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

Boolean
restrictions
[restriction,...]
(Opcional)

Indica qué atributos de restricción de red se respetan en el momento de la resolución.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

String
attribute_parameter_values
(Opcional)

Especifica los valores de parámetro de atributos de red que tienen parámetros. El conjunto de registros tiene dos columnas que trabajan juntas para identificar parámetros de forma única y otra columna que especifica el valor del parámetro.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

El conjunto de registros de valores de parámetro tiene atributos asociados. Los campos en la tabla de atributos se enumeran y describen a continuación.

ObjectID:

Campo ID administrado por el sistema.

AttributeName:

El nombre del atributo de red cuyo parámetro de atributos se establece por la fila de tabla.

ParameterName:

El nombre del parámetro de atributos cuyo valor se establece por la fila de tabla. (Los parámetros de tipo Objeto no se pueden actualizar utilizando esta herramienta).

ParameterValue:

El valor que desea para el parámetro de atributos. Si no se especifica el valor, el valor de los parámetros de atributos se establecerá en Nulo.

Record Set
maximum_snap_tolerance
(Opcional)

La máxima tolerancia de alineación es la distancia más lejana que busca Network Analyst al ubicar o reubicar un punto en la red. La búsqueda busca bordes o cruces adecuados y alinea el punto con el más cercano. Si no se encuentra una ubicación adecuada dentro de la máxima tolerancia de alineación, el objeto se marca como no ubicado.

Linear Unit
exclude_restricted_portions_of_the_network
(Opcional)

Especifica dónde se encuentran las ubicaciones de red.

  • EXCLUDELas ubicaciones de red solo se colocan en porciones transitables de la red. Esto evita situar ubicaciones de red sobre elementos a los que no puede acceder debido a restricciones o barreras. Antes de agregar las ubicaciones de red con esta opción, asegúrese de haber agregado todas las barreras de restricción a la capa de entrada de análisis de red para obtener los resultados esperados. Esta opción no se aplica cuando se agregan objetos de barrera. En tales casos, utilice "#" como el valor de parámetro.
  • INCLUDELas ubicaciones de red se colocan en todos los elementos de la red. Las ubicaciones de red que se agregan con esta opción pueden ser inalcanzables durante el proceso de resolución si se colocan en elementos restringidos.
Boolean
feature_locator_where_clause
[[dataset_name, SQL_Query],...]
(Opcional)

Una expresión SQL utilizada para seleccionar un subconjunto de entidades de origen que limita los elementos de la red en que se pueden ubicar las órdenes y los depósitos. Por ejemplo, para garantizar que las órdenes y los depósitos no se encuentran en autopistas de acceso limitado, escribir una expresión SQL que excluya estas entidades de origen. Tenga en cuenta que, durante la carga, los otros objetos de análisis de red como, por ejemplo, barreras, ignoran la cláusula WHERE del localizador de entidad.

Value Table
populate_route_lines
(Opcional)

Especifica si se generarán líneas que muestren la forma real de las rutas.

  • NO_ROUTE_LINESNo se generará ninguna forma para las rutas de salida. No puede generar las indicaciones de conducción si no se crean líneas de ruta.
  • ROUTE_LINESLas rutas de salida tendrán la misma forma que las fuentes de red subyacentes.
Boolean
route_line_simplification_tolerance
(Opcional)

La distancia de simplificación de la geometría de ruta.

La simplificación mantiene puntos críticos de una ruta, como los giros en intersecciones, para definir la forma esencial de la ruta y quita el resto de los puntos. La distancia de simplificación que especifique será el desplazamiento máximo permisible que puede apartarse la línea simplificada de la línea original. La simplificación de una línea reduce el número de vértices y tiende a reducir los tiempos de dibujo.

El valor de este parámetro se invalida cuando Modo de viaje (travel_mode en Python) está establecido en cualquier otro valor que no sea personalizado.

Linear Unit
populate_directions
(Opcional)

Especifica si se generarán indicaciones de conducción.

  • DIRECTIONSSe generarán indicaciones de conducción. La clase de entidad especificada en el parámetro output_directions_name se rellena con instrucciones giro por giro para cada ruta. El dataset de red debe admitir indicaciones de conducción; de lo contrario, se producirá un error al resolver con indicaciones.
  • NO_DIRECTIONSNo se generarán indicaciones.
Boolean
directions_language
(Opcional)

El idioma en el que se generarán las indicaciones de conducción. Los idiomas que están disponibles en la lista desplegable varían en función de los paquetes de idioma de ArcGIS que se hayan instalado en su equipo.

Si va a publicar esta herramienta como parte de un servicio en un servidor separado, el paquete de idioma de ArcGIS que corresponde al idioma que elija se debe instalar en ese servidor para que la herramienta funcione correctamente. Además, si el paquete de idioma no está instalado en su equipo, el idioma no aparecerá en la lista desplegable; sin embargo, puede escribir un código de idioma en su lugar.

String
directions_style_name
(Opcional)

Especifica el estilo de formato de las indicaciones.

  • NA DesktopInstrucciones giro por giro para imprimir
  • NA NavigationInstrucciones giro por giro diseñada para un dispositivo de navegación desde el vehículo
  • NA CampusIndicaciones paso a paso a pie, diseñadas para las rutas peatonales
String
save_output_layer
(Opcional)

Especifica si la salida incluye una capa de análisis de red de los resultados.

  • NO_SAVE_OUTPUT_LAYERLa salida no incluye una capa de análisis de red de los resultados.
  • SAVE_OUTPUT_LAYERLa salida incluye una capa de análisis de red de los resultados.

En cualquier caso, las tablas y las clases de entidad independiente se devuelven. Sin embargo, un administrador del servidor puede generar una capa de análisis de red para que el programa de instalación y los resultados de la herramienta se puedan depurar utilizando los controles de Network Analyst en el entorno de ArcGIS Desktop. Esto puede hacer que el proceso de depuración sea más fácil.

En ArcGIS Desktop, la ubicación de salida predeterminada para la capa de análisis de red está en el espacio de trabajo temporal, en el mismo nivel que la geodatabase de temporal; es decir, almacenado como un hermano de la geodatabase temporal. La capa de análisis de red de salida se almacena como un archivo .lyr cuyo nombre empieza por _ags_gpna seguido de un GUID alfanumérico.

Boolean
service_capabilities
[[String, {Long}],...]
(Opcional)

Especifica la cantidad máxima de procesamiento informático que se produce cuando se ejecuta esta herramienta como un servicio de geoprocesamiento. Es posible que desee hacer esto por dos razones: para impedir que su servidor resuelva problemas que requieren más recursos o tiempo de procesamiento del que desea permitir, o para crear varios servicios con diferentes capacidades de VRP para admitir un modelo de negocio. Por ejemplo, si tiene un modelo de negocio con niveles de servicio, es posible que desee proporcionar un servicio de VRP gratuito que admita un máximo de cinco rutas por solución y otro servicio que se base en una cuota y apoye más de cinco rutas por solución.

Además de limitar el número máximo de rutas, puede limitar el número de órdenes o barreras de puntos que se pueden agregar al análisis. Otra forma de controlar problema de los tamaños es mediante el establecimiento de un número máximo de entidades, por lo general entidades de calles, que las barreras de líneas o de polígonos pueden intersecar. El último método es para forzar una solución jerárquica, incluso si el usuario elige no utilizar una jerarquía, cuando las órdenes están dispersas geográficamente más allá de una determinada distancia en línea recta.

  • MAXIMUM POINT BARRIERSEl número máximo de barreras de punto permitido. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
  • MAXIMUM FEATURES INTERSECTING LINE BARRIERSEl número máximo de entidades de origen que pueden ser intersecadas por todas las barreras de línea en el análisis. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
  • MAXIMUM FEATURES INTERSECTING POLYGON BARRIERSEl número máximo de entidades de origen que pueden ser intersecadas por todas las barreras de polígono en el análisis. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
  • MAXIMUM ORDERSEl número máximo de órdenes permitidas en el análisis. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
  • MAXIMUM ROUTESEl número máximo de rutas permitidas en el análisis. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
  • FORCE HIERARCHY BEYOND DISTANCELa distancia máxima en línea recta entre las órdenes antes de resolver el problema de generación de rutas para vehículos utilizando jerarquía de la red. Las unidades para este valor son las mismas que aquellas especificadas en el parámetro Unidades de campo de distancia.Si la red no tiene un atributo de jerarquía, se ignora esta restricción. Si se activa Utilizar jerarquía en el análisis, la jerarquía se utiliza siempre. Si el parámetro Utilizar jerarquía en el análisis no está activado y esta restricción tiene un valor nulo, no se fuerza la jerarquía.
  • MAXIMUM ORDERS PER ROUTENúmero máximo de órdenes que se pueden asignar a cada ruta. Si se supera este límite, se muestra un error. Un valor nulo indica que no hay ningún límite.
Value Table
ignore_invalid_order_locations
(Opcional)

Especifica si las órdenes no válidas se deben ignorar al resolver el problema de generación de rutas para vehículos.

  • HALT La operación de resolución fallará si se encuentran órdenes no válidas. Una orden no válida es una orden que el solucionador VRP no puede completar. Es posible que no se pueda completar una orden por diversos motivos, entre otros: se encuentra en un elemento de red prohibido, no se encuentra en la red o se encuentra en una parte desconectada de la red. Este es el valor predeterminado, equivalente a un falso booleano.
  • SKIP La operación de resolución ignorará cualquier orden no válida y devolverá una solución, siempre y cuando no encuentren otros errores.Si necesita generar rutas y enviarlas de inmediato a los conductores, puede ignorar las órdenes no válidas, resolverlas y distribuir las rutas a los conductores. A continuación, resuelva las órdenes no válidas desde la última resolución e inclúyalas en el análisis VRP para el siguiente día laborable o turno de trabajo. Este valor es equivalente a un booleano verdadero.
Boolean
travel_mode
(Opcional)

Seleccione el modo de transporte para el análisis. CUSTOM siempre es una opción. Para que aparezcan otros nombres de modo de viaje, estos deben estar presentes en el dataset de red especificado en el parámetro Network_Dataset. (La función arcpy.na.GetTravelModes proporciona un diccionario de los objetos de modo de viaje configurados en un dataset de red, y la propiedad name devuelve el nombre de un objeto de modo de viaje).

Un modo de viaje se define en un dataset de red y proporciona valores de invalidación para los parámetros que, juntos, modelan coches, camiones, peatones u otros modos de viaje. Al elegir aquí un modo de viaje, no tiene que proporcionar valores para los siguientes parámetros, que se invalidan con los valores especificados en el dataset de red:

  • uturn_policy
  • time_attribute
  • distance_attribute
  • use_hierarchy_in_analysis
  • restrictions
  • attribute_parameter_values
  • route_line_simplification_tolerance

  • CUSTOMDefina un modo de viaje que se ajuste a sus necesidades específicas. Si selecciona CUSTOM, la herramienta no invalida los parámetros de modo de viaje enumerados anteriormente. Este es el valor predeterminado.
String
ignore_network_location_fields
(Opcional)

Especifica si los campos de ubicación de red se tendrán en cuenta al localizar órdenes, depósitos o barreras en la red.

  • IGNORELos campos de ubicación de red no se tendrán en cuenta al localizar las entradas en la red. En su lugar, las entradas siempre se localizarán realizando una búsqueda espacial.
  • HONORLos campos de ubicación de red se tendrán en cuenta al localizar las entradas en la red. Este es el valor predeterminado.
Boolean
time_zone_usage_for_time_fields
(Opcional)

Especifica la zona horaria para los siguientes campos de fecha/hora de entrada que se admiten en la herramienta: TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime y OutboundDepartTime para órdenes; TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 y TimeWindowEnd2 para depósitos; EarliestStartTime y LatestStartTime para rutas; y TimeWindowStart y TimeWindowEnd para descansos.

  • GEO_LOCAL Los valores de fecha y hora asociados a las órdenes o depósitos están en la zona horaria en la que se encuentran las órdenes y depósitos. Para las rutas, los valores de fecha y hora están basados en la zona horaria en la que se encuentra el depósito inicial para la ruta. Si una ruta no tiene un depósito inicial, todas las órdenes y los depósitos de todas las rutas deben estar en una única zona horaria. Para los descansos, los valores de fecha y hora están basados en la zona horaria de las rutas. Por ejemplo, si el depósito está ubicado en un área que sigue la hora estándar del este y tiene los valores de la primera ventana de tiempo (especificados como TimeWindowStart1 y TimeWindowEnd1) 8 a. m. y 5 p. m. respectivamente, los valores de la ventana de tiempo se tratarán como 8 a. m. y 5 p. m. en la hora estándar del este.
  • UTC Los valores de fecha y hora asociados a las órdenes o depósitos están en hora universal coordinada (UTC) y no se basan en la zona horaria en la que se encuentran las órdenes o depósitos. Por ejemplo, si el depósito está ubicado en un área que sigue la hora estándar del este y tiene los valores de la primera ventana de tiempo (especificados como TimeWindowStart1 y TimeWindowEnd1) 8 a. m. y 5 p. m. respectivamente, los valores de la ventana de tiempo se tratarán como 12 a. m. y 9 p. m. en la hora estándar del este, suponiendo que la hora estándar del este siga el horario de verano.

Especificar valores de fecha y hora en UTC resulta útil si no conoce la zona horaria en la que se encuentran las órdenes o depósitos o cuando tiene órdenes y depósitos en varias zonas horarias y desea que todos los valores de fecha y hora empiecen simultáneamente. La opción UTC solo es aplicable cuando su dataset de red define un atributo de zona horaria. De lo contrario, todos los valores de fecha y hora se tratan siempre como Geo Local (GEO_LOCAL en Python).

String
overrides
(Opcional)

Especifica ajustes adicionales que pueden influir en el comportamiento del solucionador al buscar soluciones para problemas de análisis de red.

Se debe especificar el valor para este parámetro en la notación de objetos JavaScript (JSON). Por ejemplo, un valor válido tiene el siguiente formato {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. El nombre del parámetro de invalidación siempre está incluido entre comillas dobles. Los valores pueden ser un número, operador booleano o cadena de caracteres.

El valor predeterminado para este parámetro es ningún valor, lo que indica que no se debe invalidar ningún parámetro del solucionador.

Las invalidaciones son parámetros avanzados que se deben utilizar solamente después de un análisis cuidadoso de los resultados obtenidos antes y después de aplicar los parámetros. Puede ponerse en contacto con el Soporte técnico de Esri para obtener una lista de los parámetros de invalidación compatibles para cada solucionador y sus valores aceptables.

String
save_route_data
(Opcional)

Especifica si se debe guardar un archivo .zip que contiene una geodatabase de archivos que alberga las entradas y las salidas del análisis en un formato que se puede usar para compartir las capas de ruta con ArcGIS Online o ArcGIS Enterprise.

En ArcGIS Desktop, la ubicación de salida predeterminada para este archivo de salida está en la carpeta temporal. Puede determinar la ubicación de la carpeta temporal usando arcpy.env.scratchFolder.

  • SAVE_ROUTE_DATA La herramienta genera un archivo .zip que contiene un espacio de trabajo de geodatabase de archivos que alberga las entradas y las salidas del análisis.
  • NO_SAVE_ROUTE_DATALos datos de la ruta no se guardan. Esta es la opción predeterminada.
Boolean

Salida derivada

NombreExplicaciónTipo de datos
solve_succeeded

Booleano que indica si la solución del análisis del problema de generación de rutas para vehículos fue correcta.

Booleano
out_unassigned_stops

Tabla que enumera las órdenes que no se pudieron visitar por ninguna ruta.

Tabla
out_stops

Tabla que proporciona información acerca de las paradas realizadas en los depósitos, órdenes y descansos.

Tabla
out_routes

Clase de entidad que representa a los conductores, vehículos y rutas de vehículos en un problema de generación de rutas para vehículos.

Clase de entidad
out_directions

Indicaciones paso a paso para que los conductores sigan sus rutas asignadas.

Clase de entidad
out_network_analysis_layer

Capa de análisis de red con propiedades configuradas en los parámetros de la herramienta que se puede utilizar para análisis posteriores o para depurar el mapa.

Archivo
out_route_data

Archivo .zip que contiene toda la información para una ruta en concreto.

Archivo

Muestra de código

Ejemplo 1 de SolveVehicleRoutingProblem (ventana de Python)

Ejecutar la herramienta utilizando solo los parámetros requeridos.

import arcpy
orders = arcpy.FeatureSet()
orders.load("Stores")
depots = arcpy.FeatureSet()
depots.load("DistributionCenter")
routes = arcpy.RecordSet()
routes.load("RoutesTable")
arcpy.na.SolveVehicleRoutingProblem(orders, depots, routes, "","Minutes",
                                    "Miles", "Streets_ND")
Ejemplo 2 de SolveVehicleRoutingProblem (script independiente)

El siguiente script de Python independiente muestra cómo se puede utilizar la herramienta SolveVehicleRoutingProblem para cumplir con un conjunto de órdenes usando una flota de vehículos.

# Name: SolveVehicleRoutingProblem_Workflow.py
# Description: Find the best routes for a fleet of vehicles, which is operated 
#              by a distribution company, to deliver goods from a main 
#              distribution center to a set of grocery stores.
# Requirements: Network Analyst Extension 

#Import system modules
import arcpy
from arcpy import env
import datetime

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    impedanceAttribute = "TravelTime"
    timeUnits = "Minutes"
    distanceUnits = "Miles"
    inOrders = "Analysis/Stores"
    inDepots = "Analysis/DistributionCenter"
    inRoutes = "RoutesTable"
    outGeodatabase = "C:\data\output\VRPOutputs.gdb"
    
    #Create two new feature sets and one record set with same schema as
    #Orders, Deopts and Routes parameter in Solve Vehicle Routing Problem tool.
    #Load the feature from the existing feature classes and table in the feature
    #set. Note that Solve Vehicle Routing Problem tool does not provide a way to
    #map field names between your input feature classes and table and the
    #feature set or record set parameters. To ensure that the attributes are
    #correctly transfered, the input feature classes and table must have same
    #field names as the feature sets and record sets.
    orders = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",0)    
    orders.load(inOrders)
    depots = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",1)    
    depots.load(inDepots)
    routes = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",2)    
    routes.load(inRoutes)
    
    #Call the SolveVRP tool and store the results in the result object
    result = arcpy.na.SolveVehicleRoutingProblem(orders,depots, routes,"",
                                                 timeUnits, distanceUnits,
                                                 inNetworkDataset, outGeodatabase,
                                                 populate_directions="DIRECTIONS")
    
    #print the solve status and output any warning messages from tool execution
    solveSucceeded = result.getOutput(0)
    print("Solve Succeeded: {0}".format(solveSucceeded))
    print("Messages from solver are printed below.")
    print(result.getMessages(1))
    
    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

Información de licenciamiento

  • Basic: Requiere Network Analyst
  • Standard: Requiere Network Analyst
  • Advanced: Requiere Network Analyst