¿Qué estrategias o algoritmos se utilizan para agrupar rutas de pasajeros en función de la ubicación y la hora de salida?

El problema relacionado con la búsqueda del conjunto óptimo de rutas que atiende a un conjunto de pasajeros con ubicaciones de origen y destino, así como una ventana de tiempo de tiempos de recogida permitidos, se refiere al Problema de enrutamiento del vehículo con ventanas de tiempo de recogida y entrega. Además de ser un problema de optimización de NP-Hard, es una versión muy restringida del problema general de enrutamiento de vehículos, que es NP-Hard para empezar. Como resultado, las restricciones de la recogida y la entrega y la ventana de tiempo agregan una cantidad decente de complejidad a un problema que ya era desafiante.

Este tipo de problema generalmente es inviable de resolver utilizando métodos exactos, y es muy difícil generar soluciones de buena calidad (aunque no óptimas) utilizando la heurística de construcción de soluciones. Además, a menos que [math] \ mathcal {P} = \ mathcal {NP} [/ math], sea imposible escribir un algoritmo de aproximación de tiempo polinómico para este problema en general, porque en el caso de que solo haya un vehículo y una recolección las ubicaciones y las ventanas de tiempo no están restringidas, incluye el problema del vendedor ambulante, que no se puede aproximar en tiempo polinómico para gráficos generales (es decir, sin la desigualdad triangular) a menos que [math] \ mathcal {P} = \ mathcal {NP} [/ math] .

La conclusión es que para generar de manera eficiente soluciones de calidad decentes para su problema, se deberá utilizar algún tipo de metaheurística. Hay una infinidad de opciones, pero un enfoque simple y probablemente efectivo es implementar una búsqueda de vecindario variable con vecindarios entre rutas (intercambiar dos pasajeros entre dos rutas) e intrarutas (2 opciones).

More Interesting

¿Por qué las personas usan mid = low + (high-low) / 2 en lugar de (low + high) / 2?

¿Cuál es la diferencia entre binario, algoritmo y lenguaje de programación?

Dadas las coordenadas de 3 puntos, cómo encontrar el centro del círculo formado por estos puntos con alta precisión. Para lograr una alta precisión, debe haber algún proceso de división. ¿Hay alguna forma de hacerlo?

¿Cuáles son algunas buenas implementaciones de un algoritmo evolutivo / genético en C / C ++?

¿Por qué un árbol de segmentos necesita una matriz de tamaño 4n? ¿Por qué no 2n-1?

¿Cuál es la diferencia entre binary y Algoritmo?

Entre Palantir, Facebook y Google, ¿qué algoritmos de la compañía son los más rápidos y eficientes en la obtención de resultados a través de información basada en datos?

Cómo aprender estructuras de datos y algoritmos lo suficientemente buenos como para conseguir un trabajo en 10 meses

¿Cuál es el mejor instituto para estructuras de datos y algoritmos en Hyderabad?

Cómo encontrar el salto más pequeño

¿Por qué obtener más puntos de datos soluciona el problema de la alta variación en un algoritmo de aprendizaje automático?

¿Cómo predicen las señales de tráfico en las autopistas cuánto tiempo llevará llegar desde su posición actual a un destino más adelante?

¿Cuáles son los mejores algoritmos de agrupamiento para puntos de datos numéricos multidimensionales?

¿Cuál es el mejor enfoque para adivinar los diacríticos árabes mediante programación?

Si factoro números grandes en [matemáticas] O (n ^ 2) [/ matemáticas] ¿puedo ganar dinero con eso?