Robotikk · Robotflåter for lager (vare-til-person)
Færre roboter, høyere ytelse
Hundrevis av lagerroboter planlagt live i nettleseren din. Finn flåtestørrelsen der flere roboter begynner å koste ytelse.
Oversikt
En trafikkplanlegger for vare-til-person-lagerroboter som kjører i nettleseren din. Opptil 400 simulerte rutenettroboter får nye oppdrag fortløpende: hent en lagerreol, kjør den til en av 16 plukkstasjoner, vent mens den plukkes, og hent så den neste. Kollisjoner er utelukket per konstruksjon, og det oppsto ingen vranglåser i 4 775 kjøringer med fast seed. Legg til roboter til ytelsen slutter å stige, mal så enveiskjørte ganger, som planleggeren vekter i stedet for å håndheve, og se toppen av kurven flytte seg.
På vårt gulv, med denne planleggeren og 6 sekunders gjennomsnittlig plukktid, når ytelsen toppen ved rundt 5 134 reolpresentasjoner per time. Toppen er flat: alt fra 196 til 235 roboter ligger innenfor 0,5 % av det beste, og den glattede kurven har toppunkt ved 214. Forbi det punktet koster hver robot ytelse, og stadig mer: omtrent 1 presentasjon per time for hver robot like forbi toppen, omtrent 4 per robot rundt 250 og omtrent 7 per robot nær 400. Ved 400 roboter leverer gulvet 20,5 % mindre enn på sitt beste, og 48 % av robotene underveis er ikke nærmere målet sitt enn de var 8 sekunder tidligere.
Mal gangene enveiskjørte, som preferanser og ikke som regler, så når det samme gulvet toppen ved 6 439 reolpresentasjoner per time med 191 roboter: 25,4 % høyere ytelse med 23 færre roboter. Utgangspunktet er toveistrafikk i ganger med ett kjørefelt, noe reelle layouter unngår, så en gevinst er å vente. Det interessante er hvor den stopper. Når plukktiden øker til 24 sekunder per reol, er det stasjonene som setter grensen, og malingen flytter ytelsen med høyst 2,5 % i begge retninger.
Disse tallene gjelder en rutenettmodell med denne planleggeren. Robotene flytter seg én rute på 1 meter per sekund i takt, kan kjøre rett bak hverandre uten mellomrom og har verken akselerasjon eller svingtid. Lagerblokkene er massive (robotene kjører aldri under dem), returen av en reol er slått sammen med neste henting, og stasjonene har ingen køfelt. Ved beste flåtestørrelse er gulvet omtrent 40 % fullt, langt tettere enn en reell flåte ville kjørt. Tallene forutsetter denne kjøringen uten mellomrom: med en variant av planleggeren som holder avstand (ingen robot får kjøre inn i en rute i samme sekund som en annen forlater den), var den beste flåtestørrelsen vi kjørte 80 roboter med rundt 1 880 per time, og ved 160 roboter står trafikken helt fast (10 kjøringer med fast seed per punkt). Reelle flåter kjører seg fast tidligere, og en annen planlegger ville flyttet toppen.
Hva vi bygde
- En kontinuerlig («lifelong») flerrobotplanlegger basert på PIBT (priority inheritance with backtracking, Okumura et al.), skrevet ut fra artikkelen. Den kjører i en Web Worker i nettleseren din, og den samme planleggerkoden kjørte alle simuleringene bak hovedtallene på denne siden.
- Myke enveisganger: malte retninger blir vekter på et urettet rutenett. Å kjøre mot dem koster 3 steg i stedet for 1, så robotene kjører fortsatt mot dem når omveien ville vært lengre, eller når en annen robot trenger plassen. En karteditor avviser enhver endring, enten en rute sperres eller åpnes, som ville etterlatt en korridor som ikke ligger på noen sløyfe: betingelsen PIBTs bevis for nåbarhet krever. Et søk etter broer i grafen kontrollerer dette.
- Utførelse i takt med tilfeldige stopp. Hvert sekund holdes 1 % av de planlagte flyttene tilbake tilfeldig før noen beveger seg, og robotene i kø bak en stoppet robot holdes tilbake sammen med den, så ingen robot flyttes noen gang inn i en opptatt rute. En uavhengig kontroll verifiserer hvert steg.
- Plukkstasjoner med en plukktid som trekkes tilfeldig for hver reol (gammafordeling). I live-visningen kan du bytte gjennomsnittet mellom 3, 6, 12 og 24 sekunder.
- Et sveip på 4 740 timelange kjøringer med fast seed: 20 til 400 roboter på hovedgulvet, pluss et større gulv som kontroll. Hvert punkt har 95 % konfidensbånd, og toppen har et bootstrap-intervall.
Teknologistakk
JavaScript (ES-moduler) i en Web Worker · three.js · Node.js worker threads for sveipene · Python og NumPy for statistikken
Tall
| Tall | Slik målte vi det |
|---|---|
| 5 134 per time | Toppen av gjennomstrømningskurven: toveisganger, 6 s gjennomsnittlig plukktid. Én reol presentert ved en plukkstasjon er én presentasjon; ett steg i rutenettet regnes som ett sekund. Det er maksimum av en glattet kurve (LOESS) tilpasset 1 400 timelange kjøringer med fast seed ved 20 til 400 roboter (95 %-intervall 5 130 til 5 139). |
| 196 til 235 roboter | Den flate toppen: hver flåtestørrelse i dette området ligger innenfor 0,5 % av det beste. Den glattede kurven har toppunkt ved 214 roboter (bootstrap-intervall 213 til 216); andre glattebredder flytter det punktet mellom 212 og 216. |
| −1 → −7 per robot | Hva hver ekstra robot koster, ut fra den tilpassede kurven, med 95 % bootstrap-intervaller:
|
| −20,5 % | Gjennomstrømning ved 400 roboter (4 080 per time) sammenlignet med toppen, på den samme tilpassede kurven. |
| +25,4 % | Gevinst på toppen med malte enveisganger: 6 439 per time ved 191 roboter. Målt på ytterligere 1 400 kjøringer med fast seed med samme gulv og innstillinger; 95 %-bootstrap-intervallet er 25,3 % til 25,5 %. |
| Innenfor 2,5 % | Med 24 s plukktid holder malte og umalte gulv seg innenfor 2,5 % av hverandre ved alle flåtestørrelser (10 kjøringer med fast seed per punkt). De 16 stasjonene begrenser ytelsen til 2 400 per time. |
| 35 % → 48 % | Andelen av robotene underveis som ikke er nærmere målet enn 8 s tidligere, ved 214 og ved 400 roboter (toveisganger, 10 timelange kjøringer med fast seed for hver). Dette er de grå rutene i filmen og i live-visningen. |
| 0 kollisjoner | I 4 775 kjøringer med fast seed (21,2 millioner simulerte steg, der 0 til 5 % av de planlagte flyttene ble holdt tilbake tilfeldig) fant en uavhengig kontroll ingen robot som delte rute, byttet plass eller hoppet i noe steg. Planleggeren og utførelsesregelen utelukker dette per konstruksjon. |
| 0 vranglåser i 4 775 kjøringer | Observert, ikke bevist. Etter 10 minutters oppvarming hadde ingen kjøring en periode på 5 minutter uten et fullført plukk. Med 6 s plukktid sto ingen robot underveis stille lenger enn 111 s. Med 24 s plukktid var det verste 316 s, en robot i kø til en opptatt stasjon. De 4 775 kjøringene omfatter 35 kjøringer på 10 simulerte timer hver ved 400 roboter. |
| 0,11 ms | Gjennomsnittlig planleggingstid per steg for 400 roboter (Node.js på en bærbar Apple M1 Pro, under sveipet). Den samme koden brukte 0,13 til 0,4 ms per steg i Chrome for desktop på den samme maskinen. |
Stillbilder
Prøv det live
En interaktiv visning som kjører i nettleseren din. Ingenting lastes før du åpner den.