N-Ways
Documentação para programadoresOtimização de rotas

Otimização de rotas

Indique-nos as paragens e os estafetas; receba quem vai aonde, por que ordem e a que horas chega.

Nesta página

Um estafeta tem doze encomendas para esta tarde; ou três estafetas dividem quarenta. A otimização de rotas decide quem leva o quê, por que ordem, com o menor tempo total na estrada, sem sobrecarregar ninguém.

Planear um lote

cURL
curl -X POST "https://nways.ng/maps/v1/routes/optimize?key=A_SUA_CHAVE_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: 'A_SUA_CHAVE_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')

O pedido

CampoDescrição
stopsObrigatório. De 1 a 50 paragens, cada uma com o seu id, a sua location (um ponto, { postcode }, { ghanaPost } ou { plusCode }), a sua demand (o espaço que ocupa, 1 por omissão) e serviceS (os segundos passados no local, até 4 horas).
vehiclesObrigatório. De 1 a 5 veículos, cada um com um id, um start, um end opcional (caso contrário, termina na última paragem) e uma capacity (0 para sem limite).
modedrive (por omissão), van, okada, keke e danfo (que respeitam as suas proibições, como em Percursos), motorbike e dispatch (motas de estafetas: só se aplicam as proibições a todas as motas), walk ou bicycle.
geometryfalse para obter apenas a ordem e os tempos, sem o percurso de cada veículo.
langen ou fr, para as instruções dos percursos.

A resposta

  • routes: para cada veículo usado, as suas stops pela ordem de passagem, arrivalsS (os segundos desde a partida até cada paragem), durationS, distanceM, load e o seu route (como em Percursos), exceto se geometry for false.
  • unassigned: as paragens que nenhum veículo pôde levar (acima de todas as capacidades, ou numa zona proibida para o modo; essas estão também em notAllowed, com a proibição).
  • durationS: o tempo de condução e de serviço de todo o plano.

A resposta é um bom plano encontrado em segundos, não um plano provado como o melhor. Referência