Solucionar problema de generación de rutas para vehículos (Listo para usar)

Resumen

Resuelve un problema de generación de rutas para vehículos (VRP) para hallar las mejores rutas para una flota de vehículos.

Un controlador encargado de administrar una flota de vehículos se ve a menudo obligado a tomar decisiones sobre las rutas que deben tomar los vehículos. Tales decisiones implican encontrar la mejor forma de asignar un grupo de clientes a una flota de vehículos, así como de secuenciar y programar sus visitas. Los objetivos para resolver tales VRP consisten en proporcionar un alto nivel de servicio al cliente respetando cualquier ventana de tiempo y manteniendo al mismo tiempo los costes operativos y de inversión lo más bajos posible para cada ruta. Las restricciones consisten en completar las rutas con los recursos disponibles y dentro de los límites horarios impuestos por los turnos de trabajo de los conductores, las velocidades máximas y los compromisos con los clientes.

Este servicio se puede usar para encontrar soluciones para estas tareas de administración de flotas complejas.

Considere como ejemplo la distribución de género depositado un almacén central entre una serie de supermercados. El almacén central dispone de una flota de tres camiones El almacén solo funciona en una ventana de tiempo determinada, de 8.00 a. m. a 5.00 p. m.Durante este tiempo, todos los camiones deben regresar al almacén. Cada camión tiene una capacidad de 15,000 libras, que limita el volumen de género que puede transportar. Cada tienda demanda una determinada cantidad de género (en libras) que se le debe entregar; además, tiene sus propias ventanas de tiempo que delimitan los momentos en los que se pueden realizar entregas. Además, un conductor solo puede trabajar ocho horas al día, necesita un descanso para comer y se le paga el tiempo que invierta en conducir el camión y entregar el género en las tiendas. El objetivo consiste en proponer un itinerario (o ruta) para cada conductor tal que permita realizar todas las entregas cumpliendo todos los requisitos de servicio y minimizando el tiempo total que debe invertir un conductor en una ruta en concreto. La siguiente imagen muestra tres rutas obtenidas a partir de la resolución de este problema de generación de rutas para vehículos.

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

Ilustración

Es el resultado de resolver un problema de generación de rutas para vehículos

Uso

  • La herramienta Solucionar problema de generación de rutas para vehículos genera rutas para flotas de vehículos que necesitan visitar muchos lugares para realizar entregas, recogidas o responder a llamadas de servicio. La herramienta se ejecuta en modo asíncrono y resulta adecuada para los problemas grandes que tardan más tiempo en resolverse.

  • Las herramientas de la caja de herramientas listas para usar son servicios de geoprocesamiento de ArcGIS Online que usan datos alojados y capacidades de análisis de ArcGIS Online.

  • Puede añadir hasta 2000 órdenes y 100 rutas. Además, puede asignar un máximo de 200 órdenes a una ruta.

  • Puede añadir hasta 250 barreras de punto. Puede añadir cualquier cantidad de barreras de línea o polígono, pero las barreras de línea no se pueden intersecar con más de 500 entidades de calle ni las barreras de polígono se pueden intersecar con más de 2000 entidades.

  • Con independencia de que el parámetro use_hierarchy_in_analysis esté activado (True), la jerarquía siempre se usa cuando la distancia en línea recta entre las órdenes o los depósitos o las órdenes y los depósitos supera los 50 millas (80,46 kilómetros).

  • La distancia en línea recta entre cualquier orden o depósito no puede ser superior a 27 millas (43,45 kilómetros) cuando travel_mode está definido como A pie o cuando está definido como Personalizado y se utiliza la restricción A pie.

  • Si la distancia entre un punto de entrada y la calle más próxima que se puede atravesar es mayor que 12.42 millas (20 kilómetros), el punto se excluye del análisis.

  • El uso de este servicio consume créditos. Para obtener más información, consulte Descripción general de los créditos de servicio.

Sintaxis

arcpy.agolservices.SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, {analysis_region}, {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}, {use_hierarchy_in_analysis}, restrictions, {attribute_parameter_values}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {travel_mode}, {impedance}, {time_zone_usage_for_time_fields}, {save_output_layer}, {overrides}, {save_route_data}, {time_impedance}, {distance_impedance}, {populate_stop_shapes}, {output_format}, {ignore_invalid_order_locations})
ParámetroExplicaciónTipo de datos
orders

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

Cuando se especifican las órdenes, se pueden definir propiedades para cada una, como su nombre o tiempo de servicio, mediante los siguientes atributos:

ObjectID

Campo de Id. administrado por el sistema.

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.

Description

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

ServiceTime

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

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

TimeWindowStart1

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

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

Los campos de la ventana de tiempo (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 y TimeWindowEnd2) pueden contener un valor solo de hora o un valor de fecha y hora en un campo de fecha y no pueden ser enteros que representen milisegundos desde un tiempo. 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 TimeWindowStart1 tiene un valor solo de hora (por ejemplo, 8:00 a.m.), se asume que la fecha es la predeterminada que se define para el análisis. El uso de valores de fecha y hora (por ejemplo, 7/11/2010 8:00 AM) permite establecer ventanas de tiempo que abarcan varios días.

Cuando se resuelve un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada orden hacen referencia a la zona horaria en la que se encuentra la orden.

TimeWindowEnd1

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

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 el contrario, un valor nulo indica que no existe ningún límite en el tiempo de infracción permitido. Un valor distinto de cero especifica la cantidad máxima de retraso; por ejemplo, una ruta puede llegar a una orden hasta 30 minutos después del final de su primera ventana de tiempo.

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

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

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

Al asignar un nivel de importancia para el parámetro Importancia de violación de ventana de tiempo, está eligiendo en esencia una de estas tres opciones. En cualquier caso, sin embargo, 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.

Notas:

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

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

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

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

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.

Notas:

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

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

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

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

DeliveryQuantities

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

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

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

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

Una cadena vacía o un valor nulo equivale a que todas las dimensiones 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 en cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen. No se puede, sin embargo, utilizar valores negativos. Este campo es análogo al campo DeliveryQuantities de Órdenes.

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

Revenue

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

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

Los ingresos se incluyen al optimizar el valor de la función objetivo, pero no forma parte del coste operativo de la solución; es decir, el campo TotalCost de la clase de ruta nunca incluye los ingresos en su salida. Sin embargo, las rentas ponderan la importancia relativa de servir 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 para la clase Órdenes y rutas debe coincidir exactamente para que el solucionador de VRP pueda vincularlos de forma conjunta.

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

AssignmentRule

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

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

Este campo no puede contener un valor nulo.

CurbApproach

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

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

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

RouteName

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

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

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

Sequence

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

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

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

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. El valor de secuencia de salida más pequeño posible para una orden enrutada es 2, dado que una ruta siempre comienza en un depósito.

Bearing

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

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

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

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

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 0 y menores que 180. Un valor de 30 significa que cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados a cada lado del eje (izquierdo y derecho) y en ambas direcciones digitalizadas del eje.

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

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 coste 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 NavLatency son las mismas que las unidades del atributo de impedancia.

Feature Set
depots

Especifica uno o varios depósitos para el problema de generación de rutas para vehículos especificado. Un depósito es una ubicación desde la que sale un vehículo al comienzo de su día laborable y a la que vuelve al final del mismo. Los vehículos (para las entregas) se cargan o descargan (para las recogidas) en los depósitos en 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.

Cuando se especifican los depósitos, se pueden definir propiedades para cada uno, como su nombre o tiempo de servicio, mediante los siguientes atributos:

ObjectID

Campo de Id. administrado por el sistema.

Name

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

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

Description

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

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

TimeWindowStart1

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

Los campos de la ventana de tiempo (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 y TimeWindowEnd2) pueden contener un valor solo de hora o un valor de fecha y hora en un campo de fecha y no pueden ser enteros que representen milisegundos desde un tiempo. 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 TimeWindowStart1 tiene un valor solo de hora (por ejemplo, 8:00 a.m.), se asume que la fecha es la predeterminada que se define para el análisis. El uso de valores de fecha y hora (por ejemplo, 7/11/2010 8:00 AM) permite establecer ventanas de tiempo que abarcan varios días.

Cuando se resuelve un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada depósito hacen referencia a la zona horaria en la que se encuentra el depósito.

TimeWindowEnd1

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

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

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

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

Bearing

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

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

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

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

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 0 y menores que 180. Un valor de 30 significa que cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados a cada lado del eje (izquierdo y derecho) y en ambas direcciones digitalizadas del eje.

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

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 coste 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 NavLatency son las mismas que las unidades del atributo de impedancia.

Feature Set
routes

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

Las rutas se pueden especificar con los siguientes atributos:

Name

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

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

StartDepotName

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

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

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

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

EndDepotName

El nombre del depósito final para la ruta. Este campo es una clave externa para el campo Name en 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 para este valor de campo la especifica el parámetro Unidades de campo de tiempo.

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

EndDepotServiceTime

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

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

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

EarliestStartTime

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

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

Cuando se resuelve un problema que abarca varias zonas horarias, la zona horaria EarliestStartTime coincide con la zona horaria en la 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 hora predeterminado de 10:00 AM. El valor predeterminado se interpreta como 10:00 a.m. en la fecha predeterminada definida para el análisis.

Cuando se resuelve un problema que abarca varias zonas horarias, la zona horaria LatestStartTime coincide con la zona horaria en la 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 deba reducir la velocidad y detenerse en un descanso y acelerar después, el solucionador de VRP no puede agregar el valor ArriveDepartDelay para los descansos. Esto significa que, si una ruta deja una orden, para durante un descanso y continúa en la siguiente orden, el retardo de llegada/salida se añade solo una vez, no dos veces.

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

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

Capacities

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

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

Si está realizando un rastreo de varias dimensiones, separe los valores numéricos con un espacio. Por ejemplo, si está registrando 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.

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

Una cadena vacía o un valor nulo equivale a que todos los valores son cero. Los valores de capacidad no pueden ser negativos.

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

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

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 para este valor de campo la especifica el parámetro time_units.

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 la especifica el parámetro distance_units.

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 para este valor de campo la especifica el parámetro time_units.

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

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 para este valor de campo la especifica el parámetro time_units.

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 para este valor de campo la especifica el parámetro time_units.

MaxTotalDistance

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

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

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 de caracteres separada por espacios que contiene los nombres de las especialidades requeridas por la orden. Un valor nulo indica que la orden no requiere especialidades.

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

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

AssignmentRule

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

Este campo no puede contener un valor nulo.

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

Record Set
breaks

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

No se permiten descansos de ventana de tiempo si las órdenes o los depósitos están en varias zonas horarias, a no ser que las horas estén en UTC.

Cuando se especifican los descansos, se pueden definir propiedades para cada uno, como su nombre o tiempo de servicio, mediante los siguientes atributos:

ObjectID

Campo de Id. administrado por el sistema.

RouteName

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

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

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. El valor predeterminado es 60.

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

TimeWindowStart

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

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

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

Los campos de la ventana de tiempo de los 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 un tiempo. 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 p.m.) 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.

TimeWindowEnd

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

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

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 según el parámetro Importancia de infracción de la ventana de tiempo.

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

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

MaxTravelTimeBetweenBreaks

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

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

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

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

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

MaxCumulWorkTime

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

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

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

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

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

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

IsPaid

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

Sequence

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

Record Set
time_units

Las unidades de tiempo para todos los valores de campo basados en el tiempo para el análisis. 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.

  • SecondsLa unidad de tiempo es segundos.
  • MinutesLa unidad de tiempo es minutos.
  • HoursLa unidad de tiempo es horas.
  • DaysLa unidad de tiempo es días.

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

String
distance_units

Las unidades de distancia para todos los valores de campo basados en la distancia para el análisis. 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.

  • MetersLa unidad lineal es metros.
  • KilometersLa unidad lineal es kilómetros.
  • FeetLa unidad lineal es pies.
  • YardsLa unidad lineal es yardas.
  • MilesLa unidad lineal es millas.
  • NauticalMilesLa unidad lineal es millas náuticas.

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

String
analysis_region
(Opcional)

La región en la que se realizará el análisis. Si no se especifica un valor para este parámetro, la herramienta calcula automáticamente el nombre de la región en función de la ubicación de los puntos de entrada. Es obligatorio definir el nombre de la región solamente si la detección automática del nombre de la región no es precisa para sus entradas.

Para especificar una región, utilice uno de los siguientes valores:

  • EuropeLa región de análisis es Europa.
  • JapanLa región de análisis es Japón.
  • KoreaLa región de análisis es Corea.
  • MiddleEastAndAfricaLa región de análisis es Oriente Medio y África.
  • NorthAmericaLa región de análisis es Norteamérica.
  • SouthAmericaLa región de análisis es Sudamérica.
  • SouthAsiaLa región de análisis es Sur de Asia.
  • ThailandLa región de análisis es Tailandia.
Heredado:

Ya no se admiten los siguientes nombres de regiones, que se eliminarán en versiones futuras. Si especifica uno de los nombres de región obsoletos, la herramienta asignará automáticamente un nombre compatible para su región.

  • Grecia redirige a Europa
  • India redirige a SouthAsia
  • Oceanía redirige a SouthAsia
  • Sureste asiático redirige a SouthAsia
  • Taiwán redirige a SouthAsia

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. Puede encontrar estos campos de hora en diversos parámetros de entrada, como los atributos ServiceTime de los parámetros de las órdenes y los descansos.

Date
uturn_policy
(Opcional)

Especifica si se restringe o se permite que en el área de servicio se realicen cambios de sentido en los cruces. Para comprender los valores del parámetro, plantéese la siguiente terminología: un cruce es un punto en el que termina un segmento de calle y puede conectar con uno o varios segmentos distintos; un pseudocruce es un punto exacto en el que dos calles se conectan entre sí; una intersección es un punto en el que se conectan tres o más calles; y un callejón sin salida es el punto en el que un segmento de calle acaba sin conectar con otro.

  • ALLOW_UTURNSLos cambios de sentido están permitidos en todas partes. Permitir los cambios de sentido implica que el vehículo puede dar la vuelta en cualquier cruce y volver atrás por la misma calle. Este es el valor predeterminado.
  • NO_UTURNSLos cambios de sentido están prohibidos en todos los cruces: pseudocruces, intersecciones y calles sin salida. Sin embargo, los cambios de sentido se pueden permitir aunque se haya elegido esta opción. Para impedir los cambios de sentido en los incidentes y las instalaciones, defina el valor de campo CurbApproach de modo que prohíba los cambios de sentido.
  • ALLOW_DEAD_ENDS_ONLYLos cambios de sentido están prohibidos en todos los cruces, excepto los que tienen solo una entidad de calle conectada (una calle sin salida).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYLos cambios de sentido están prohibidos en los pseudocruces donde se encuentran exactamente dos calles adyacentes, aunque están permitidos en intersecciones y calles sin salida. Impide que se dé la vuelta en medio de la carretera cuando una longitud de la carretera se ha digitalizado como dos entidades de calle.

El valor introducido para este parámetro se ignora a menos que el parámetro Modo de viaje esté establecido en Personalizado, que es el valor predeterminado.

String
time_window_factor
(Opcional)

Especifica la importancia de respetar las ventanas de tiempo.

  • HighLa importancia se asigna a llegar a tiempo a las paradas en lugar de minimizar los tiempos de conducción. Por ejemplo, las organizaciones que realizan entregas con tiempos críticos o a las que les preocupa la atención al cliente eligen Alto.
  • MediumLa importancia se equilibra entre minimizar los tiempos de conducción y llegar dentro de las ventanas de tiempo. Este es el valor predeterminado.
  • LowLa importancia se asigna a minimizar los tiempos de conducción en lugar de 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 Bajo, aunque los clientes sufran las molestias de las llegadas tardías.
String
spatially_cluster_routes
(Opcional)

Especifica si las rutas se agruparán espacialmente.

  • CLUSTER (True): se crean automáticamente puntos de semilla dinámicos para todas las rutas y las órdenes asignadas a una ruta individual se agrupan 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 diferentes líneas de ruta; sin embargo, la agrupación también tiende a aumentar los tiempos globales de viaje.
  • NO_CLUSTER (False): no se crean puntos de semilla dinámicos. Elija 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 a fin de dar servicio solo a las órdenes que queden dentro o cerca del área especificada. A continuación, se muestran algunos ejemplos que indican cuándo pueden ser útiles las zonas de ruta:

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

Al especificar las zonas de ruta, debe establecer propiedades para cada una, como su ruta asociada, mediante los siguientes atributos:

ObjectID

Campo de Id. administrado por el sistema.

RouteName

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

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 1 (Verdadero). Un valor Falso (0) indica que se pueden seguir asignando dichas órdenes, pero el coste de atender 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.

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

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

Al especificar las renovaciones de ruta, debe establecer propiedades para cada una, como el nombre del depósito en el que puede producirse la renovación de ruta, mediante los siguientes atributos:

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 ningún valor nulo y es una clave externa para el campo Name en los depósitos.

RouteName

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

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 el parámetro time_units.

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. Especificar pares de órdenes evita que el análisis asigne solo una de las órdenes a una ruta: o bien se asignan ambas órdenes a la misma ruta o no se asigna ninguna.

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

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

Cuando se especifican los pares de órdenes, se deben establecer propiedades para cada uno, como los nombres de las dos órdenes, mediante los siguientes atributos:

ObjectID

Campo de Id. administrado por el sistema.

FirstOrderName

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

SecondOrderName

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

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

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

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 de este valor de campo la especifica la propiedad timeUnits del objeto 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 el solucionador de VRP para que adopte uno de estos tres enfoques:

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

Al asignar un nivel de importancia para el parámetro excess_transit_factor, está eligiendo, de hecho, 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.

  • HighLa importancia se asigna al menor exceso de tiempo de tránsito entre órdenes asociadas a costa de aumentar los costes de viaje generales. Se suele utilizar esta configuración al transportar personas entre órdenes asociadas y si desea acortar el tiempo de viaje. Esto es característico de los servicios de taxi.
  • MediumLa importancia se equilibra entre reducir el exceso de tiempo de tránsito y reducir el coste general de la solución. Este es el valor predeterminado.
  • LowLa importancia se asigna a minimizar el coste total de la solución, independientemente del exceso de tiempo de tránsito. En general, esta configuración se usa para servicios de correo. Debido a que los servicios de mensajería transportan paquetes y no personas, no se preocupan por el tiempo de viaje. El ajuste Bajo permite que los servicios de mensajería puedan cumplir con las órdenes asociadas en la secuencia adecuada y minimizar el coste total de la solución.
String
point_barriers
(Opcional)

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

La herramienta impone un límite de 250 puntos que se pueden añadir como barreras.

Cuando se especifican las barreras de punto, se pueden definir propiedades para cada una de ellas, como su nombre o el tipo de barrera, mediante el uso de los siguientes atributos:

Name

El nombre de la barrera.

BarrierType

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

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

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

Additional_Time

El tiempo de viaje agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado.

El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida.

Additional_Distance

La distancia agregada cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado.

El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida.

Additional_Cost

El coste agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado.

FullEdge

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

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

CurbApproach

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

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

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

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

Bearing

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

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

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

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

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 0 y menores que 180. Un valor de 30 significa que cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados a cada lado del eje (izquierdo y derecho) y en ambas direcciones digitalizadas del eje.

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

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 coste 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 NavLatency son las mismas que las unidades del atributo de impedancia.

Feature Set
line_barriers
(Opcional)

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

La herramienta impone un límite en el número de calles que se pueden restringir usando el parámetro Barreras de línea. Aunque no existe un límite para el número de líneas que se pueden especificar como barreras de línea, el número combinado de calles que se intersecan con todas las líneas no puede ser superior a 500.

Cuando se especifican las barreras de línea, puede definir propiedades de nombre y tipo de barrera para cada una de ellas mediante los siguientes atributos:

Name

El nombre de la barrera.

Feature Set
polygon_barriers
(Opcional)

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

El servicio impone un límite en el número de calles que se pueden restringir usando el parámetro Barreras de polígono. Aunque no existe un límite para el número de polígonos que se pueden especificar como barreras de polígono, el número combinado de calles que se intersecan con todos los polígonos no puede ser superior a 2000.

Cuando se especifican las barreras de polígono, se pueden definir propiedades para cada una de ellas, como su nombre o el tipo de barrera, mediante el uso de los siguientes atributos:

Name

El nombre de la barrera.

BarrierType

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

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

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

ScaledTimeFactor

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

Este campo solo se aplica a barreras con coste escalado.

ScaledDistanceFactor

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

Este campo solo se aplica a barreras con coste escalado.

ScaledCostFactor

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

Este campo solo se aplica a barreras con coste escalado.

Feature Set
use_hierarchy_in_analysis
(Opcional)

Especifica si la jerarquía se usará para buscar las mejores rutas.

  • Activado (True): se usará la jerarquía al buscar las rutas. Cuando se usa la jerarquía, la herramienta identifica las calles de orden superior, como las autovías, antes que las de orden inferior, como las carreteras locales, y se puede usar para simular la preferencia del conductor por viajar por autovías en lugar de carreteras locales, aunque esto signifique un viaje más largo. Ocurre especialmente al buscar rutas hasta ubicaciones lejanas, porque los conductores que realizan viajes de larga distancia prefieren viajar por autovías y así evitar paradas, intersecciones y giros. Desde el punto de vista del cómputo, usar la jerarquía es más rápido, especialmente en rutas a distancias largas, porque la herramienta identifica la mejor ruta en un subconjunto de calles relativamente más pequeño.
  • Desactivado (False): no se usará la jerarquía al buscar las rutas. Si no se utiliza la jerarquía, la herramienta tiene en cuenta todas las calles y no identifica necesariamente las calles de mayor orden al buscar una ruta. A menudo esto se usa al buscar rutas a corta distancia dentro de una ciudad.

La herramienta vuelve automáticamente a usar la jerarquía si la distancia en línea recta entre órdenes, depósitos, o entre órdenes y depósitos es de más de 50 millas (80,47 km), incluso si este parámetro está desactivado (False).

Este parámetro se ignora a menos que Modo de viaje esté establecido en Personalizado, que es el valor predeterminado.

Boolean
restrictions
[restrictions,...]

Las restricciones que la herramienta respetará a la hora de buscar las mejores rutas.

Una restricción representa una preferencia o un requisito de conducción. En la mayoría de los casos, las restricciones ocasionan la prohibición de carreteras. Por ejemplo, al usar la restricción Evitar carreteras con peaje, se generará una ruta que solo incluirá carreteras con peaje cuando sea necesario viajar por ellas para llegar a un incidente o a una instalación. Restricción de altura permite circular evitando cualquier altura que sea inferior a la altura de su vehículo. Si está transportando materiales corrosivos en el vehículo, utilizar la restricción Prohibidos todos los materiales peligrosos impide transportar los materiales en las carreteras en las que está marcado como ilegal hacerlo.

Nota:

Los valores introducidos para este parámetro se ignoran a menos que el parámetro Modo de viaje esté establecido en Personalizado.

Nota:

Algunas restricciones requieren la especificación de un valor adicional para poder usarlas. Este valor se debe asociar con el nombre de la restricción y con un parámetro concreto creado para funcionar con la restricción. Puede identificar esas restricciones si sus nombres aparecen en la columna AttributeName del parámetro Valores de los parámetros de atributos. El campo ParameterValue se debe especificar en el Valores de los parámetros de atributos para que la restricción se use correctamente para encontrar carreteras transitables.

Nota:

Algunas restricciones solo se admiten en ciertos países. Su disponibilidad se indica por región en la lista siguiente. Para las restricciones con una disponibilidad limitada dentro de una región, puede determinar si están disponibles en un país concreto revisando la tabla de la sección Lista de países de Cobertura de análisis de red. Si un país tiene el valor en la columna Atributos de logística, la restricción con disponibilidad de selección en la región se admite en ese país. Si se especifican nombres de restricción que no están disponibles en el país en el que se encuentran sus incidentes, el servicio pasa por alto las restricciones no válidas. El servicio también pasa por alto las restricciones cuando el valor del parámetro de atributos Uso de restricciones está comprendido entre 0 y 1 (consulte el parámetro Valor de parámetro de atributos). Prohíbe todas las restricciones cuando el valor del parámetro Uso de restricciones es mayor que 0.

La herramienta admite las siguientes restricciones:

  • Any Hazmat ProhibitedLos resultados no incluirán carreteras donde esté prohibido el transporte de cualquier material peligroso. Disponibilidad: Selecciona países de Norteamérica y Europa
  • Avoid Carpool RoadsLos resultados evitarán las carreteras designadas exclusivamente para los vehículos compartidos. Disponibilidad: Todos los países
  • Avoid Express LanesLos resultados evitarán las carreteras designadas como vías exprés. Disponibilidad: Todos los países
  • Avoid FerriesLos resultados evitarán los ferris. Disponibilidad: Todos los países
  • Avoid GatesLos resultados evitarán las carreteras en las que haya puertas, como los accesos con clave o las entradas controladas por guardas.Disponibilidad: Todos los países
  • Avoid Limited Access RoadsLos resultados evitarán las carreteras que sean de acceso limitado.Disponibilidad: Todos los países
  • Avoid Private RoadsLos resultados evitarán las carreteras que no sean de propiedad y mantenimiento públicos.Disponibilidad: Todos los países
  • Avoid Roads Unsuitable for PedestriansLos resultados evitarán las carreteras que no sean aptas para peatones.Disponibilidad: Todos los países
  • Avoid StairwaysLos resultados evitarán todos los tramos de escalera de una ruta adecuada para peatones.Disponibilidad: Todos los países
  • Avoid Toll RoadsLos resultados evitarán todas las carreteras de peaje para automóviles.Disponibilidad: Todos los países
  • Avoid Toll Roads for TrucksLos resultados evitarán todas las carreteras de peaje para camiones.Disponibilidad: Todos los países
  • Avoid Truck Restricted RoadsLos resultados evitarán las carreteras donde no estén permitidos los camiones excepto para hacer entregas.Disponibilidad: Todos los países
  • Avoid Unpaved RoadsLos resultados evitarán las carreteras no pavimentadas (por ejemplo, de tierra, gravilla y similares). Disponibilidad: Todos los países
  • Axle Count RestrictionLos resultados no incluirán carreteras donde esté prohibida la circulación de camiones con el número de ejes especificado. El número de ejes se puede especificar mediante el parámetro de restricción Número de ejes.Disponibilidad: Selecciona países de Norteamérica y Europa
  • Driving a BusLos resultados no incluirán carreteras donde estén prohibidos los autobuses. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único. Disponibilidad: Todos los países
  • Driving a TaxiLos resultados no incluirán carreteras donde estén prohibidos los taxis. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único. Disponibilidad: Todos los países
  • Driving a TruckLos resultados no incluirán carreteras donde estén prohibidos los camiones. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único. Disponibilidad: Todos los países
  • Driving an AutomobileLos resultados no incluirán carreteras donde esté prohibida la circulación de automóviles. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único. Disponibilidad: Todos los países
  • Driving an Emergency VehicleLos resultados no incluirán carreteras donde estén prohibidos los vehículos de emergencia. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.Disponibilidad: Todos los países
  • Height RestrictionLos resultados no incluirán las carreteras donde la altura del vehículo supere la altura máxima permitida por la carretera. La altura del vehículo se puede especificar utilizando el parámetro de restricción Altura del vehículo (metros). Disponibilidad: Selecciona países de Norteamérica y Europa
  • Kingpin to Rear Axle Length RestrictionLos resultados no incluirán las carreteras donde la longitud del vehículo supere la distancia máxima entre el eje de dirección y el eje posterior permitida para todos los camiones que circulen por la carretera. La longitud entre el eje de dirección y el eje trasero se puede especificar usando el parámetro de restricción Longitud de eje de dirección a eje trasero del vehículo (metros). Disponibilidad: Selecciona países de Norteamérica y Europa
  • Length RestrictionLos resultados no incluirán las carreteras en las que la longitud del vehículo supere la longitud máxima permitida para la carretera. La longitud del vehículo se puede especificar utilizando el parámetro de restricción Longitud del vehículo (metros). Disponibilidad: Selecciona países de Norteamérica y Europa
  • Preferred for PedestriansLos resultados utilizarán rutas preferidas adecuadas para la navegación para peatones. Disponibilidad: Selecciona países de Norteamérica y Europa
  • Riding a MotorcycleLos resultados no incluirán carreteras donde estén prohibidas las motocicletas. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.Disponibilidad: Todos los países
  • Roads Under Construction ProhibitedLos resultados no incluirán las carreteras en obras.Disponibilidad: Todos los países
  • Semi or Tractor with One or More Trailers ProhibitedLos resultados no incluirán carreteras donde estén prohibidos los camiones o tractores con uno o varios remolques. Disponibilidad: Selecciona países de Norteamérica y Europa
  • Single Axle Vehicles ProhibitedLos resultados no incluirán carreteras donde estén prohibidos los vehículos con un solo eje.Disponibilidad: Selecciona países de Norteamérica y Europa
  • Tandem Axle Vehicles ProhibitedLos resultados no incluirán carreteras donde estén prohibidos los vehículos con ejes en tándem.Disponibilidad: Selecciona países de Norteamérica y Europa
  • Through Traffic ProhibitedLos resultados no incluirán las carreteras donde no se permita el tráfico de paso (no local).Disponibilidad: Todos los países
  • Truck with Trailers RestrictionLos resultados no incluirán carreteras donde esté prohibida la circulación de camiones con el número de remolques especificado. El número de remolques del camión se puede especificar mediante el parámetro de restricción Número de remolques del camión.Disponibilidad: Selecciona países de Norteamérica y Europa
  • Use Preferred Hazmat RoutesLos resultados preferirán las carreteras designadas para el transporte de cualquier tipo de material peligroso. Disponibilidad: Selecciona países de Norteamérica y Europa
  • Use Preferred Truck RoutesLos resultados darán prioridad a las carreteras que se hayan diseñado como rutas para camiones, como las que forman parte de la red nacional descrita en la National Surface Transportation Assistance Act de Estados Unidos, las carreteras que se hayan diseñado como rutas de camiones en un estado o una provincia, o aquellas que prefieran los camioneros cuando conducen por un área.Disponibilidad: Selecciona países de Norteamérica y Europa
  • WalkingLos resultados no incluirán carreteras donde los peatones estén prohibidos.Disponibilidad: Todos los países
  • Weight RestrictionLos resultados no incluirán las carreteras donde el peso del vehículo supere el peso máximo permitido por la carretera. El peso del vehículo se puede especificar utilizando el parámetro de restricción Peso del vehículo (kilogramos).Disponibilidad: Selecciona países de Norteamérica y Europa
  • Weight per Axle RestrictionLos resultados no incluirán las carreteras donde el peso por eje del vehículo supere el peso por eje máximo permitido por la carretera. El peso por eje del vehículo se puede especificar usando el parámetro de restricción Peso por eje del vehículo (kilogramos).Disponibilidad: Selecciona países de Norteamérica y Europa
  • Width RestrictionLos resultados no incluirán las carreteras donde la anchura del vehículo supere la anchura máxima permitida por la carretera. El ancho del vehículo se puede especificar usando el parámetro de restricción Ancho del vehículo (metros).Disponibilidad: Selecciona países de Norteamérica y Europa
String
attribute_parameter_values
(Opcional)

Utilice este parámetro para especificar valores adicionales requeridos por un atributo o restricción, como por ejemplo para especificar si la restricción prohíbe, evita o prefiere circular en carreteras restringidas. Si la restricción se ha ideado para evitar carreteras o darles preferencia, puede especificar en qué medida se deben evitar o se les debe dar preferencia usando este parámetro. Por ejemplo, puede elegir que nunca se usen carreteras de peaje, que se eviten en la medida de lo posible o que se les dé preferencia.

Nota:

Los valores introducidos para este parámetro se ignoran a menos que el parámetro Modo de viaje esté establecido en Personalizado.

Si especifica el parámetro Valores de los parámetros de atributos de una clase de entidad, los nombres de los campos de la clase de entidad deben coincidir con los campos que se describen a continuación:

  • AttributeName: el nombre de la restricción.
  • ParameterName: el nombre del parámetro asociado con la restricción. Una restricción puede tener uno o varios valores de campo ParameterName dependiendo del uso previsto para ella.
  • ParameterValue: el valor de ParameterName utilizado por la herramienta al evaluar la restricción.

El parámetro Valores de los parámetros de atributos depende del parámetro Restricciones. El campo ParameterValue solo se usa si el nombre de la restricción se ha especificado como valor del parámetro Restricciones.

En Valores de los parámetros de atributos, cada restricción (mostrada como AttributeName) tiene un valor de campo ParameterName, Uso de restricción, que especifica si la restricción prohíbe, evita o prefiere los viajes por las carreteras asociadas con la restricción, además de en qué medida las carreteras se evitan o tienen preferencia. El Uso de restricción ParameterName se puede asignar a cualquiera de los siguientes valores de cadena de caracteres o a los valores numéricos equivalentes que se muestran entre paréntesis:

  • PROHIBITED (-1): está totalmente prohibido viajar por las carreteras que usan la restricción.
  • AVOID_HIGH (5): es muy poco probable que la herramienta incluya en la ruta las carreteras asociadas a la restricción.
  • AVOID_MEDIUM (2): es poco probable que la herramienta incluya en la ruta las carreteras asociadas con la restricción.
  • AVOID_LOW (1.3): es algo improbable que la herramienta incluya en la ruta las carreteras asociadas con la restricción.
  • PREFER_LOW (0.8): es algo probable que la herramienta incluya en la ruta las carreteras asociadas con la restricción.
  • PREFER_MEDIUM (0.5): es probable que la herramienta incluya en la ruta las carreteras asociadas con la restricción.
  • PREFER_HIGH (0.2): es muy probable que la herramienta incluya en la ruta las carreteras asociadas a la restricción.

En la mayoría de casos, puede usar el valor predeterminado, PROHIBITED, como valor de Uso de restricción si la restricción depende de una característica del vehículo como su altura. Sin embargo, en algunos casos, el valor de Uso de restricción depende de las preferencias de generación de rutas del usuario. Por ejemplo, la restricción Evitar carreteras con peaje tiene el valor predeterminado AVOID_MEDIUM para el atributo Uso de restricción. Esto significa que, cuando se utilice la restricción, la herramienta intentará circular fuera de las carreteras con peaje siempre que sea posible. AVOID_MEDIUM también indica lo importante que es evitar las carreteras con peaje al buscar la mejor ruta; tiene una prioridad media. Si se selecciona AVOID_LOW, se da una importancia menor a evitar los peajes, mientras que si se selecciona AVOID_HIGH se le da más importancia y, por lo tanto, es más aceptable que el servicio genere rutas más largas para evitar los peajes. Elegir PROHIBITED no permite viajar en las carreteras con peaje y hará imposible que una ruta viaje por cualquier parte de una carretera de peaje. Tenga en cuenta que evitar o prohibir carreteras con peaje, y evitando así los pagos de peaje, es el objetivo para algunos. En cambio, otros prefieren conducir en las carreteras con peaje porque evitar el tráfico es más valioso para ellos que el dinero gastado en los peajes. En el último caso, elija PREFER_LOW, PREFER_MEDIUM o PREFER_HIGH como valor de Uso de la restricción. Cuanto más alta sea la preferencia, más se apartará la herramienta de su camino para viajar por las carreteras asociadas con la restricción.

Record Set
populate_route_lines
(Opcional)

Especifica si se generará la línea de ruta de salida.

  • Activado (True): las rutas de salida tendrán exactamente la misma forma que las calles subyacentes.
  • Desactivado (False): no se genera ninguna forma para las rutas de salida, pero las rutas seguirán conteniendo información tabular sobre la solución. No puede generar las indicaciones de conducción si no se crean líneas de ruta.

Cuando el parámetro Forma de la ruta se ha definido como Forma verdadera, la generalización de la forma de la ruta se puede controlar mejor usando los valores apropiados para el parámetro Tolerancia de simplificación de líneas de ruta.

Sea cual sea el valor elegido para el parámetro Forma de la ruta, las mejores rutas siempre se determinan minimizando el viaje por las calles, nunca usando la distancia en línea recta. Esto significa que solo las formas de la ruta son diferentes, no las calles subyacentes en las que se realizan las búsquedas para encontrar la ruta.

Boolean
route_line_simplification_tolerance
(Opcional)

La cantidad por la que se simplificará la geometría de las líneas de salida para rutas e indicaciones.

El valor introducido para este parámetro se ignora a menos que el parámetro Modo de viaje esté establecido en Personalizado, que es el valor predeterminado.

La herramienta ignora este parámetro si el parámetro populate_route_lines está desactivado (False).

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 que forman parte de la geometría de la ruta. Esto mejora el tiempo de ejecución de la herramienta.

Linear Unit
populate_directions
(Opcional)

Especifica si la herramienta generará indicaciones de conducción para cada ruta.

  • Activado (True en Python): se generarán y configurarán indicaciones basándose en los valores de los parámetros Idioma de indicaciones, Nombre de estilo de indicaciones y Unidades de distancia de las indicaciones.
  • Desactivado (False en Python): no se generarán indicaciones y la herramienta devolverá una capa Indicaciones vacía.

Boolean
directions_language
(Opcional)

El idioma que se utilizará para generar las indicaciones de viaje.

Este parámetro solo se usa cuando el parámetro Completar indicaciones está activado (True en Python).

El valor del parámetro se puede especificar usando uno de los siguientes códigos de idiomas de dos o cinco caracteres:

  • ar: árabe
  • bs: bosnio
  • ca: catalán
  • cs: checo
  • da: danés
  • de: alemán
  • el: griego
  • en: inglés
  • es: español
  • et: estonio
  • fi: finlandés
  • fr: francés
  • he: hebreo
  • hr: croata
  • hu: húngaro
  • id: indonesio
  • it: italiano
  • ja: japonés
  • ko: coreano
  • lt: lituano
  • lv: letón
  • nb: noruego
  • nl: neerlandés
  • pl: polaco
  • pt-BR: portugués brasileño
  • pt-PT: portugués europeo
  • ro: rumano
  • ru: ruso
  • sl: esloveno
  • sr: serbio
  • sv: sueco
  • th: tailandés
  • tr: turco
  • uk: ucraniano
  • vi: vietnamita
  • zh-CN: chino simplificado
  • zh-HK: chino tradicional (Hong Kong)
  • zh-TW: chino tradicional (Taiwán)

Primero, la herramienta busca una coincidencia exacta del idioma especificado, incluida cualquier localización de idioma. Si no se encuentra ninguna coincidencia exacta, intenta hacer una coincidencia con la familia lingüística. Si no se encuentra ninguna coincidencia, la herramienta devuelve las indicaciones en inglés, el idioma predeterminado. Por ejemplo, si el idioma de las indicaciones se especifica como es-MX (español de México), la herramienta generará las indicaciones en español, puesto que admite el código de idioma es, pero no es-MX.

Precaución:

Si un idioma admite la localización, como el portugués brasileño (pt-BR) y el portugués europeo (pt-PT), especifique la familia lingüística y la localización. Si solo especifica la familia lingüística, la herramienta no hará coincidir dicha familia y, en su lugar, devolverá indicaciones en inglés, el idioma predeterminado. Por ejemplo, si el idioma de las indicaciones se especifica como pt, la herramienta generará las indicaciones en inglés porque no puede determinar si se deben generar en pt-BR o pt-PT.

String
directions_style_name
(Opcional)

Especifica el nombre del estilo de formato para las indicaciones. Este parámetro solo se usa cuando el parámetro Completar indicaciones está activado (True en Python).

  • NA DesktopIndicaciones paso a paso adecuadas para imprimir.
  • NA NavigationIndicaciones paso a paso, diseñadas para un dispositivo de navegación desde el vehículo.
String
travel_mode
(Opcional)

El modo de transporte que se debe modelar en el análisis. Los modos de viaje se administran en ArcGIS Online y el administrador de su organización puede configurarlos para reflejar los flujos de trabajo de la organización. Debe especificar el nombre de un modo de viaje admitido con su organización.

Para obtener una lista de los nombres de modos de viaje admitidos, ejecute la herramienta Obtener modos de viaje de la caja de herramientas Utilidades en la misma conexión de servidor SIG que utilizó para acceder a la herramienta. La herramienta Obtener modos de viaje agrega una tabla, Supported Travel Modes, a la aplicación. Cualquier valor del campo Travel Mode Name de la tabla Supported Travel Modes se puede especificar como entrada. También puede especificar el valor del campo Travel Mode Settings como entrada. De esta forma, se acelera la ejecución de la herramienta, ya que esta no tiene que buscar la configuración a partir del nombre del modo de viaje.

El valor predeterminado, Personalizado, le permite configurar su propio modo de viaje usando los parámetros de modo de viaje personalizado (Giros en U en cruces, Utilizar jerarquía, Restricciones, Valores de los parámetros de atributos e Impedancia). Los valores predeterminados de los parámetros de modo de viaje personalizado se basan en viajes en coche. Puede elegir el modo Personalizado y establecer los parámetros de modo de viaje personalizado enumerados arriba para modelar un peatón con una velocidad de caminata rápida o un camión con una altura y un peso determinados y con una carga de ciertos materiales peligrosos. Puede probar distintas configuraciones hasta conseguir los resultados de análisis que desee. Una vez que haya identificado la configuración de análisis, trabaje con el administrador de su organización y guardar esta configuración como parte de un modo de viaje nuevo o existente para que todos los usuarios de su organización puedan ejecutar el análisis con la misma configuración.

Precaución:

Al elegir el modo Personalizado, los valores que establezca para los parámetros del modo de viaje personalizado se incluirán en el análisis. Si se especifica otro modo de viaje definido por su organización, se pasará por alto cualquier valor que haya establecido para los parámetros del modo de viaje personalizado; la herramienta los sobrescribirá con valores del modo de viaje especificado.

String
impedance
(Opcional)

Especifica la impedancia, que es un valor que representa el esfuerzo o el coste de viajar a lo largo de segmentos de carretera o en otras partes de la red de transporte.

El tiempo de viaje es una impedancia: un coche puede tardar 1 minuto en viajar un kilómetro a lo largo de una carretera vacía. Los tiempos de viaje pueden variar según el modo de viaje: un peatón puede tardar más de 20 minutos en caminar el mismo kilómetro, por lo que es importante elegir la impedancia correcta para el modo de viaje que se está modelando.

La distancia de viaje también puede ser una impedancia; la longitud de una carretera en kilómetros se puede considerar impedancia. En este sentido, la distancia de viaje es la misma para todos los modos: un kilómetro para un peatón es, igualmente, un kilómetro para un coche. (Lo que puede cambiar son los caminos por los que los diferentes modos tienen permitido viajar, lo cual afecta a la distancia entre puntos, que se modela mediante la configuración del modo de viaje.)

Precaución:

El valor introducido para este parámetro se ignora a menos que el parámetro Modo de viaje esté establecido en Personalizado, que es el valor predeterminado.

  • TravelTimeSe utilizan datos de tráfico históricos y en directo. Esta opción resulta útil para modelar el tiempo que tardan los automóviles en desplazarse por carreteras a una hora concreta del día utilizando datos de velocidad del tráfico en directo si están disponibles. Si utiliza TravelTime, si lo desea puede definir el parámetro de atributos TravelTime::Vehicle Maximum Speed (km/h) para especificar los límites físicos de la velocidad a la que el vehículo es capaz de desplazarse.
  • MinutesNo se utilizan datos de tráfico en directo, sino velocidades medias históricas de los datos de automóviles.
  • TruckTravelTimeSe utilizan datos de tráfico históricos y en directo, pero se establece una velocidad máxima al límite de velocidad especificado para camiones. Resulta útil para modelar el tiempo que tardan los camiones en desplazarse por carreteras a una hora concreta del día. Si utiliza TruckTravelTime, si lo desea puede definir el parámetro de atributos TruckTravelTime::Vehicle Maximum Speed (km/h) para especificar los límites físicos de la velocidad a la que el camión es capaz de desplazarse.
  • TruckMinutesNo utiliza datos de tráfico en directo, pero sí utiliza las velocidades más bajas del promedio histórico para automóviles y los límites de velocidad permitidos para camiones.
  • WalkTimeEl valor predeterminado es una velocidad de 5 km/h en todas las carreteras y caminos, pero se puede configurar mediante el parámetro de atributos WalkTime::Walking Speed (km/h).
  • TimeAt1KPHEl valor predeterminado es 1 km/h en todas las carreteras y caminos. No es posible cambiar la velocidad con ningún parámetro de atributos.
  • Drive TimeModela los tiempos de viaje para un coche. Estos tiempos de viaje son dinámicos y fluctúan según los flujos de tráfico en zonas para las que hay datos de tráfico disponibles. Este es el valor predeterminado.
  • Truck TimeModela los tiempos de viaje para un camión. Estos tiempos de viaje son estáticos para cada carretera y no fluctúan con el tráfico.
  • Walk TimeModela los tiempos de viaje para un peatón.

Si elige una impedancia basada en el tiempo, como TravelTime, TruckTravelTime, Minutes, TruckMinutes o WalkTime, el parámetro Unidades de descanso se debe configurar con un valor basado en el tiempo; si prefiere una impedancia basada en la distancia, como Millas o Kilómetros, las Unidades de descanso deben estar basadas en la distancia.

Heredado:

Los valores de impedancia de Tiempo de conducción, Tiempo en camión, Tiempo de recorrido a pie y Distancia de viaje ya no se admiten y se eliminarán en versiones futuras. Si utiliza uno de estos valores, la herramienta usa el valor del parámetro Impedancia de tiempo para valores basados en el tiempo y del parámetro Impedancia de distancia para valores basados en la distancia.

String
time_zone_usage_for_time_fields
(Opcional)

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

  • GEO_LOCALLos 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 AM y 5 PM, los valores de la ventana de tiempo se tratarán como 8 AM y 5 PM en la hora estándar del este.
  • UTCLos 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 AM y 5 PM, los valores de la ventana de tiempo se tratarán como 12:00 AM y 9:00 PM en la hora estándar del este, suponiendo que la hora estándar del este está siguiendo el horario de verano.
  • GEO_LOCALGEO_LOCAL
  • UTCUTC

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 si 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.

String
save_output_layer
(Opcional)

Especifica la configuración del análisis se guardará como un archivo de capa de análisis de red. No puede trabajar directamente con este archivo, aunque lo abra en una aplicación de ArcGIS Desktop, por ejemplo, ArcMap. Se debe enviar al Soporte técnico de Esri para diagnosticar la calidad de los resultados devueltos por la herramienta.

  • Activado (True): se guardará el archivo de capa de análisis de red. El archivo se descarga en un directorio temporal en su equipo. En ArcGIS Pro, la ubicación del archivo descargado se puede determinar visualizando el valor del parámetro Capa de análisis de red de salida en la entrada correspondiente a la ejecución de la herramienta en el historial de geoprocesamiento del proyecto. En ArcMap, la ubicación del archivo se puede determinar accediendo a la opción Copiar ubicación del menú contextual del parámetro Capa de análisis de red de salida de la entrada correspondiente a la ejecución de la herramienta en la ventana Resultados de geoprocesamiento.
  • Desactivado (False): no se guardará el archivo de capa de análisis de red. Esta es la opción predeterminada.

Boolean
overrides
(Opcional)

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. Para obtener una lista de los parámetros de invalidación admitidos para cada solucionador y sus valores admisibles, póngase en contacto con el Soporte técnico de Esri.

String
save_route_data
(Opcional)

Especifica si la salida incluye un archivo .zip que contiene una geodatabase de archivos con 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 Portal for ArcGIS.

  • Activado (True): los datos de la ruta se guardarán como un archivo .zip. El archivo se descarga a un directorio temporal en su equipo. En ArcGIS Pro, la ubicación del archivo descargado se puede determinar visualizando el valor del parámetro Datos de ruta de salida en la entrada correspondiente a la ejecución de la herramienta en el historial de geoprocesamiento del proyecto. En ArcMap, la ubicación del archivo se puede determinar accediendo a la opción Copiar ubicación del menú contextual del parámetro Datos de ruta de salida de la entrada correspondiente a la ejecución de la herramienta en la ventana Resultados de geoprocesamiento.

  • Desactivado (False): los datos de la ruta no se guardarán. Esta es la opción predeterminada.

Boolean
time_impedance
(Opcional)

La impedancia basada en el tiempo es un valor que representa el tiempo de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte.

Nota:
Si la impedancia del modo de viaje, según se especifica con el parámetro Impedancia, está basada en el tiempo, los valores de los parámetros Impedancia de tiempo e Impedancia deben ser los mismos. De lo contrario, el servicio devolverá un error.
  • MinutesLa impedancia de tiempo se expresa en minutos.
  • TravelTimeLa impedancia de tiempo es el tiempo de viaje.
  • TimeAt1KPHLa impedancia de tiempo es el tiempo a un kilómetro por hora.
  • WalkTimeLa impedancia de tiempo es el tiempo de recorrido a pie.
  • TruckMinutesLa impedancia de tiempo son los minutos de camión.
  • TruckTravelTimeLa impedancia de tiempo es el tiempo de viaje en camión.
String
distance_impedance
(Opcional)

La impedancia basada en la distancia es un valor que representa la distancia de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte.

Nota:
Si la impedancia del modo de viaje, según se especifica con el parámetro Impedancia, está basada en la distancia, los valores de los parámetros Impedancia de distancia e Impedancia deben ser los mismos. De lo contrario, el servicio devolverá un error.
  • MilesLa impedancia de distancia se expresa en millas.
  • KilometersLa impedancia de distancia se expresa en kilómetros.
String
populate_stop_shapes
(Opcional)

Especifica si la herramienta creará las formas de las paradas asignadas y sin asignar de salida.

  • Activado (True): las paradas asignadas y sin asignar de salida se crean como entidades de puntos. Puede resultar útil para visualizar qué paradas se asignan a rutas y cuáles no se pueden asignar a ninguna ruta.

  • Desactivado (False): las paradas asignadas y sin asignar de salida se crean como tablas y no tendrán formas. Esta es la opción predeterminada. Use esta opción únicamente si no es necesario que su aplicación visualice las paradas de salida y puede funcionar solo con los atributos de las paradas.

Boolean
output_format
(Opcional)

Especifica el formato en el que se crearán las entidades de salida.

  • Feature SetLas entidades de salida se generarán como tablas y clases de entidad. Esta es la opción predeterminada.
  • JSON FileLas entidades de salida se devolverán como un archivo comprimido que contiene la representación JSON de las salidas. Si se especifica esta opción, la salida será un archivo único (con una extensión .zip) que contiene uno o varios archivos JSON (con una extensión .json) para cada una de las salidas que crea el servicio.
  • GeoJSON FileLas entidades de salida se devolverán como un archivo comprimido que contiene la representación GeoJSON de las salidas. Si se especifica esta opción, la salida será un archivo único (con una extensión .zip) que contiene uno o varios archivos GeoJSON (con una extensión .geojson) para cada una de las salidas que crea el servicio.

Cuando se especifica un formato de salida basado en archivos, como Archivo JSON o Archivo GeoJSON, no se agregará ninguna salida a la visualización, puesto que la aplicación, por ejemplo, ArcMap o ArcGIS Pro, no puede dibujar el contenido del archivo de resultados. En cambio, el archivo de resultados se descarga en un directorio temporal en su equipo. En ArcGIS Pro, la ubicación del archivo descargado se puede determinar visualizando el valor del parámetro Archivo de resultados de salida en la entrada correspondiente a la ejecución de la herramienta en el historial de geoprocesamiento del proyecto. En ArcMap, la ubicación del archivo se puede determinar accediendo a la opción Copiar ubicación del menú de acceso directo del parámetro Archivo de resultados de salida de la entrada correspondiente a la ejecución de la herramienta en la ventana Resultados de geoprocesamiento.

String
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.

  • Activado (True): 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 de VRP para el siguiente día laborable o turno de trabajo.

  • Desactivado (False): 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, como: la orden se encuentra en un elemento de red prohibido, no se encuentra en la red o se encuentra en una parte desconectada de la red.

Boolean

Salida derivada

NombreExplicaciónTipo de datos
solve_succeeded

Determina si la solución del análisis del problema de generación de rutas para vehículos se realizó correctamente.

Booleano
out_unassigned_stops

Ofrece acceso a las órdenes que ninguna otra ruta pudo visitar. Asimismo, puede determinar la razón por la que las órdenes no se pudieron visitar y realizar los cambios necesarios para corregir el problema.

Conjunto de entidades
out_stops

Proporciona información acerca de las paradas realizadas en los depósitos, órdenes y descansos. La información indica cuales rutas hacen las paradas, las horas de llegada y salida y la secuencia de paradas.

Conjunto de entidades
out_routes

Ofrece acceso a los conductores, vehículos y vías de rutas de un análisis de problema de generación de rutas para vehículos.

Conjunto de entidades
out_directions

Ofrece acceso a las indicaciones paso a paso para cada ruta resultante.

Conjunto de entidades
out_network_analysis_layer

La 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
out_result_file

Un archivo .zip que contiene los resultados del análisis, con uno o varios archivos para cada salida. El formato de los archivos individuales viene especificado por el parámetro Formato de salida.

Archivo

Muestra de código

Ejemplo 1 de SolveVehicleRoutingProblem (script independiente)

El siguiente script de Python muestra cómo usar la herramienta Solve Vehicle Routing Problem en un script.

"""This example shows how to obtain the schema for the inputs, populate the inputs,
excute the tool and save the results.
"""

import sys
import time
import arcpy

# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"

vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)

# Add the geoprocessing service as a toolbox.
# Check https://pro.arcgis.com/en/pro-app/arcpy/functions/importtoolbox.htm for
# other ways in which you can specify credentials to connect to a geoprocessing service.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"

# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"

# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)

# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
    for i, order in enumerate(orders):
        order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
        row = (order_shape, "O{}".format(i + 1), 3)
        cursor.insertRow(row)

# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
    for i, depot in enumerate(depots):
        depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
        row = (depot_shape, "D{}".format(i + 1))
        cursor.insertRow(row)

# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on 
# routes has same value as the Name field on input depots. AssignmentRule for routes
# is 1 which specifies that the tool must include the route.
# CostPerUnitTime and MaxOrderCount are fields that cannot have null values if the route
# is to be considered as a valid route.  
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
                                          "EndDepotName", "AssignmentRule",
                                          "CostPerUnitTime", "MaxOrderCount")) as cursor:
    row = ("R1", "D1", "D1", 1, 1, 10)
    cursor.insertRow(row)

# Call the tool
result = arcpy.SolveVehicleRoutingProblem_VehicleRoutingProblem(input_orders, input_depots, input_routes)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))

# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
    time.sleep(1)

# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
    arcpy.AddError("An error occured when running the tool")
    arcpy.AddError(result.getMessages(2))
    sys.exit(2)
elif result_severity == 1:
    arcpy.AddWarning("Warnings were returned when running the tool")
    arcpy.AddWarning(result.getMessages(1))

# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)
Ejemplo 2 de SolveVehicleRoutingProblem (script independiente)

El siguiente ejemplo muestra cómo realizar un análisis de problema de generación de rutas para vehículos con un modo de viaje personalizado que modela camiones que transportan cargas anchas.

"""This example shows how to perform a vehicle routing problem analysis using a custom travel mode that
models trucks carrying wide load."""

import sys
import time
import json
import arcpy

# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"

vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)

# Add the geoprocessing service as a toolbox.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"

# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"

# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)

# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
    for i, order in enumerate(orders):
        order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
        row = (order_shape, "O{}".format(i + 1), 3)
        cursor.insertRow(row)

# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
    for i, depot in enumerate(depots):
        depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
        row = (depot_shape, "D{}".format(i + 1))
        cursor.insertRow(row)

# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on routes has same
# value as the Name field on input depots. AssignmentRule for routes is 1 which specifies that the tool
# must include the route. CostPerUnitTime and MaxOrderCount are fields that cannot have null values if
# the route is to be considered as a valid route.  
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
                                          "EndDepotName", "AssignmentRule",
                                          "CostPerUnitTime", "MaxOrderCount")) as cursor:
    row = ("R1", "D1", "D1", 1, 1, 10)
    cursor.insertRow(row)

# Change Vehicle Width attribute parameter value to 4.5 (about 15 feet) for the Trucking Time travel mode
# used for the analysis
portal_url = "https://www.arcgis.com"
arcpy.SignInToPortal(portal_url, username, password)
travel_mode_list = arcpy.na.GetTravelModes(portal_url)
tt = travel_mode_list["Trucking Time"]
tt_json = str(tt)
tt_dict = json.loads(tt_json)
tt_dict["restrictionAttributeNames"].append("Width Restriction")

for attr_param in tt_dict["attributeParameterValues"]:
    if attr_param['attributeName'] == 'Width Restriction' and attr_param['parameterName'] == 'Vehicle Width (meters)':
        attr_param['value'] = 4.5
travel_mode = json.dumps(tt_dict)

# Call the tool
result = arcpy.SolveVehicleRoutingProblem_VehicleRoutingProblem(input_orders, input_depots,
                                                                input_routes, travel_mode=travel_mode)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))

# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
    time.sleep(1)

# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
    arcpy.AddError("An error occured when running the tool")
    arcpy.AddError(result.getMessages(2))
    sys.exit(2)
elif result_severity == 1:
    arcpy.AddWarning("Warnings were returned when running the tool")
    arcpy.AddWarning(result.getMessages(1))

# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)

Entornos

Esta herramienta no utiliza ningún entorno de geoprocesamiento.

Temas relacionados