RUTE
Ruteplanlægning med AI: opsætningen
Fra ordre til afgangstid, uden at nogen sidder og planlægger. Det her er opsætningen bag videoen.
Først det vigtige: AI'en regner ikke selv ruten ud. Det gør en optimeringsmotor, som er bygget til netop det. AI'en (fx Claude) gør resten: læser ordrer og fakturaer, finder leveringstiderne, kalder motoren og skriver en besked til chaufføren. Tallene i videoen (18 km → 11 km) er et eksempel, ikke en måling.
Sådan hænger det sammen
- Ordrer ind. Fra webshop, ERP eller regnskabssystem (API eller CSV-eksport).
- Leveringstid fra fakturaen. AI'en læser fakturaen (PDF eller felter) og trækker leveringsvinduet ud som data, fx
{"ordre": "1042", "fra": "10:00", "til": "11:00"}. - Adresse → koordinater (geokodning). Google Geocoding API, eller Nominatim på OpenStreetMap. Den offentlige Nominatim-server tillader højst 1 opslag i sekundet; til større mængder skal du bruge din egen server eller en betalt udbyder.
- Rækkefølge og tid (optimering). Vælg én:
- Google Route Optimization API (
optimizeTours): du sender stop med tidsvinduer og dine biler og får rækkefølge og tider tilbage. MedconsiderRoadTrafficregner den med trafik. Koster penge pr. kald. - Google OR-Tools (gratis, open source): løser "Vehicle Routing Problem with Time Windows". Den skal have en tidsmatrix, som du kan hente fra OSRM (open source, OpenStreetMap) eller fra Google Routes API. - Afgangstid. Regn baglæns fra det første stop: start på vinduet − køretid − en buffer på fx 10 minutter.
- Kø undervejs. Kør optimeringen igen med friske trafiktider, fx hvert 10. minut, eller når en ankomsttid skrider mere end 5 minutter.
- Besked til chaufføren. Afgangstid og stopliste på SMS, Slack eller mail. Lad et menneske godkende de første par uger.
Prompt 1: byg det (Claude Code)
Byg et Python-projekt "ruteplan", der:
1. læser dagens ordrer fra orders.csv (ordre, adresse, fakturafil),
2. bruger Claude til at læse hver faktura-PDF og udtrække leveringsvinduet som JSON
(fra, til). Hvis den ikke findes, så markér ordren til manuel kontrol i stedet for at gætte,
3. geokoder adresserne og cacher resultatet i en lokal fil,
4. henter en tidsmatrix (OSRM) og løser en VRP med tidsvinduer i OR-Tools
for 1 bil, der starter og slutter på lageret,
5. skriver en plan: rækkefølge, ankomsttid pr. stop, samlet km og seneste afgangstid
(med 10 minutters buffer).
Skriv tests med 3 kendte ordrer, hvor jeg kan regne svaret efter i hånden.
Ingen API-nøgler i koden; de skal ligge i .env.
Prompt 2: hold den opdateret
Lav en kommando "ruteplan opdater", der henter friske køretider for resten af turen,
løser igen fra bilens nuværende position og kun sender en ny besked, hvis
en ankomsttid flytter sig mere end 5 minutter eller et tidsvindue er i fare.
Log hver ændring med grund (kø, ny ordre, forsinkelse).
Prompt 3: forklar planen
Skriv planen som en kort besked til chaufføren på dansk: afgangstid, stop i rækkefølge
med adresse og tidsvindue, og én linje om, hvorfor rækkefølgen er valgt.
Ingen gæt: brug kun tal fra planen.
Husk
- Persondata: Adresser på privatkunder er persondata. Brug udbydere, du har en databehandleraftale med, og send ikke mere end nødvendigt.
- Start småt: Én bil og én dag. Sammenlign med den rute, I kører i dag, før du stoler på den.
- Tal: Hvor meget du sparer, afhænger af dine stop. Mål det selv.
Kilder: Google Route Optimization API (developers.google.com/maps/documentation/route-optimization) · OR-Tools VRPTW-guiden (developers.google.com/optimization/routing/vrptw) · Nominatims brugspolitik (operations.osmfoundation.org/policies/nominatim).