Problem #304
Författare:IOAI 2026 Organizing Team
Svårighetsgrad
Din bästa poäng
Ej tillgänglig
Ni tränar en leveransrobot på en stadskarta som består av 8 × 8 celler. I varje episod startar roboten i en ledig cell, når depån där paketet finns, hämtar det, tar sig till en annan depå — destinationen — och levererar det. Varje karta innehåller sex depåer och åtta blockerade celler.
Målet är att lära sig robotens beteende från ett avsiktligt litet antal expertdemonstrationer. Detta är ett problem inom beteendekloning: ni tränar en modell på observations-/handlingsexempel och kör den sedan steg för steg i nya episoder.
Depåerna är indexerade med 0..5 och märkta med A..F. En episod avslutas framgångsrikt när roboten utför en giltig dropoff-handling vid destinationen medan den bär paketet. Högst 120 actions är tillåtna.
| ID | Handling |
|---|---|
| 0 | söder |
| 1 | norr |
| 2 | öster |
| 3 | väster |
| 4 | hämta paketet (pickup) |
| 5 | leverera paketet (dropoff) |
En förflyttning in i en vägg eller utanför kartan ändrar inte robotens position, men förbrukar ett steg. pickup lyckas endast vid paketets depå när roboten inte redan bär paketet. dropoff lyckas endast vid destinationen när roboten bär paketet. En ogiltig pickup eller dropoff ändrar inte state och förbrukar ett steg.
Varje träningsobservation innehåller:
grid: en float32-tensor med formen (6, 8, 8);vector: 13 normaliserade numeriska värden;action_mask: sex booleska värden som anger de giltiga actions;state: (row, column, package_field, destination).Kanalerna i grid-tensorn representerar:
vector innehåller, i ordning: robotens normaliserade rad och kolumn, paketfältet, destinationen, bärindikatorn, raden och kolumnen för det aktuella målet, skillnaderna i förhållande till målet, följt av fyra indikatorer för blockerad förflyttning i ordningen söder, norr, öster, väster.
Den offentliga datamängden innehåller:
Plattformspaketet använder JSON och säkra NumPy-arrayer i stället för Python-picklefiler. Se starter_kit.py för de exakta namnen och laddningskoden. Läs in NumPy-filer med allow_pickle=False.
Varje layout_id delas av fyra episoder. Den unika nyckeln är alltid:
(layout_id, episode_seed)Träna en deterministisk modell som förutsäger nästa handling utifrån den aktuella observationen. Kör modellen över fullständiga episoder och generera en handlingssekvens för varje testscenario.
Ni får använda de tillhandahållna demonstrationerna för träning. Ni får inte hämta expertetiketter för validerings- eller testmängderna, och ni får inte heller generera ytterligare expertdemonstrationer genom sökning, planering eller en annan expertmodell. Regelbaserade eller uttryckligen hårdkodade lösningar kan granskas av den Vetenskapliga Kommittén. Arrangörerna kan begära den notebook eller källkod som användes för att generera inlämningen.
Skicka in ett ZIP-arkiv med namnet predictions.zip som innehåller exakt en fil i roten: predictions.json.
Filen måste innehålla en JSON-array med exakt 1,600 objekt, ett för varje testepisod:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]Krav:
(layout_id, episode_seed), inte efter radordning;actions måste vara en JSON-lista med heltal — inte booleska värden — mellan 0 och 5;Ogiltiga arkiv eller ofullständiga inlämningar avvisas.
Måttet är episodernas framgångsfrekvens:
SR = successful deliveries / evaluated episodesscore = 100 × SRInga delpoäng ges för att nå paketet, komma närmare målet eller använda färre steg.
För plattformens topplista delas testkartorna deterministiskt:
Under tävlingen visas delpoängen, medan den slutliga topplistan använder hela mängden. Tillhörigheten till de två delmängderna ingår inte i de offentliga uppgifterna. Det genomsnittliga antalet steg och ogiltiga pickup-/dropoff-försök kan visas i utvärderarens loggar, men de påverkar inte poängen.
Anpassat från ”Akademin för robotleveranser: förberedande program” (IOAI 2026, Home Task 2). Den säkra datarepresentationen, valideringsreglerna, uppdelningen av topplistan och utvärderaren är anpassningar för MLCompete-plattformen.