Optimisation de tournées
Donnez-nous les arrêts et les livreurs ; recevez qui va où, dans quel ordre, et à quelle heure.
Sur cette page
Un livreur a douze colis pour cet après-midi ; ou trois livreurs s’en partagent quarante. L’optimisation de tournées décide qui prend quoi, dans quel ordre, pour le moins de temps possible sur la route au total, sans surcharger personne.
Planifier un lot
cURL
curl -X POST "https://nways.ng/maps/v1/routes/optimize?key=VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{"mode": "dispatch", "vehicles": [{"id": "bike-17", "start": {"lat": 6.5965, "lng": 3.3421}, "capacity": 8}], "stops": [{"id": "order-1", "location": {"lat": 6.6018, "lng": 3.3515}, "serviceS": 120}, {"id": "order-2", "location": {"lat": 6.6107, "lng": 3.3589}, "serviceS": 120}, {"id": "order-3", "location": {"lat": 6.5934, "lng": 3.3602}, "serviceS": 120}]}'JavaScript
import { createClient } from '@nways/maps'
const nways = createClient({ key: 'VOTRE_CLE_API' })
const plan = await nways.optimize({
mode: 'dispatch',
vehicles: [{ id: 'bike-17', start: { lat: 6.5965, lng: 3.3421 }, capacity: 8 }],
stops: [
{ id: 'order-1', location: { lat: 6.6018, lng: 3.3515 }, serviceS: 120 },
{ id: 'order-2', location: { lat: 6.6107, lng: 3.3589 }, serviceS: 120 },
{ id: 'order-3', location: { lat: 6.5934, lng: 3.3602 }, serviceS: 120 },
],
})
for (const r of plan.routes) console.log(r.vehicle, r.stops.join(' → '), Math.round(r.durationS / 60), 'min')La requête
| Champ | Description |
|---|---|
stops | Obligatoire. De 1 à 50 arrêts, chacun avec votre id, son location (un point, { postcode }, { ghanaPost } ou { plusCode }), sa demand (la place qu’il prend, 1 par défaut) et serviceS (les secondes passées sur place, jusqu’à 4 heures). |
vehicles | Obligatoire. De 1 à 5 véhicules, chacun avec un id, un start, un end facultatif (sinon il finit à son dernier arrêt) et une capacity (0 pour aucune limite). |
mode | drive (par défaut), van, okada, keke et danfo (qui respectent leurs interdictions, comme Itinéraires), motorbike et dispatch (motos de coursiers : seules les interdictions visant toutes les motos s’appliquent), walk ou bicycle. |
geometry | false pour n’obtenir que l’ordre et les temps, sans l’itinéraire de chaque véhicule. |
lang | en ou fr, pour les instructions des itinéraires. |
La réponse
routes: pour chaque véhicule utilisé, sesstopsdans l’ordre de passage,arrivalsS(les secondes entre le départ et chaque arrêt),durationS,distanceM,load, et sonroute(comme dans Itinéraires), sauf sigeometryvautfalse.unassigned: les arrêts qu’aucun véhicule n’a pu prendre (au-delà de toutes les capacités, ou dans une zone interdite pour le mode ; ceux-là sont aussi dansnotAllowed, avec l’interdiction).durationS: le temps de conduite et de service de tout le plan.
La réponse est un bon plan trouvé en quelques secondes, pas un plan dont on a prouvé qu’il est le meilleur. Référence