-
Notifications
You must be signed in to change notification settings - Fork 0
Algunos datos de vrptools
Se define enlace estático con la biblioteca OSRM, su inicialización y métodos/funciones de consulta y retorno de información -originalmente viaroute- y luego locate y nearest.
Se definen elementos principales de los nodos nid (interno), id, x, y, hint, valid. Se definen funciones básicas distancia a segmentos, distancias entre nodos, si un nodo esta a la derecha de un segmento.
Hereda de Node. Define los tipos de nodos: kStart, kPickup, kEnd y varios otros. Métodos para establecer y saber que tipo de nodo es. Demanda, apertura, cierre y calle en la que esta el nodo.
Hereda de Twnode. Se agregan elementos y datos relacionados con el path del vehiculo, nodos anteriores, tiempos, etc. Aparece evaluateOsrm que es el primero en referencias a OSRM.
No hereda. Las ideas vienen de paper.
Aparecen tablas de tiempos y consultas
#define Trashnode Tweval
Eso es todo.
Carga los datos de entrada (excepto la matriz de tiempo) desde archivos de tiempo.
Luego pueden ser usados en la solución.
Carga los datos de entrada desde estructura de datos, inclusive la matriz de tiempo.
Hereda de Prob_Trash.
Encuentra la solución del problema.
-
Pide una única instancia de OSRM
-
Si no hay ninguna la crea con servicio "viaroute"
-
invariant() -basicOerations.cpp- realiza cálculos para comprobar que los tamaños de la subdivisión de nodos al combinarlos se siguen manteniendo:
void Basicoperations::invariant() {
#if 0
if ((unassigned.size() + assigned.size()) != 109) {
DLOG(INFO) << "assigned:" << assigned.size();
assigned.dumpid();
DLOG(INFO) << "unassigned" << unassigned.size();
unassigned.dumpid();
assert ((unassigned.size() + assigned.size()) == 109);
}
#endif
assert(pickups.size() == (unassigned.size() + problematic.size() + assigned.size()));
assert(pickups == (unassigned + problematic + assigned));
assert(!(unassigned * problematic).size());
assert(!(unassigned * assigned).size());
assert(!(problematic * assigned).size());
}
-
Comienza a asignar viajes hasta que estén todos asignados
-
Pide un camión para comenzar
-
En fleetOpt.cpp hace la optimización de la secuencia
-
- Llama a Fleetopt::optimize() y ese a Fleetopt::extract_trips()
-
- En esta funcion llama varias veces a intraTripOptimizationNoOsrm(); quien llama a Trip::getNodesOnPath y este llama a twc->getNodesOnPath(path, dumpSite, nodes, nodesInOrder);