Problemă #304
Autor:IOAI 2026 Organizing Team
Dificultate
Maximul tău
N/A
Antrenați un robot de livrare pe o hartă urbană de 8 × 8 celule. În fiecare episod, robotul pornește dintr-o celulă liberă, ajunge la depozitul în care se află coletul, îl ridică, se deplasează la un alt depozit — destinația — și îl predă. Fiecare hartă conține șase depozite și opt celule blocate.
Scopul este să învățați comportamentul robotului dintr-un număr intenționat mic de demonstrații expert. Problema este una de clonare comportamentală: antrenați un model pe exemple observație/acțiune, apoi îl rulați pas cu pas pe episoade noi.
Depozitele sunt indexate 0..5 și notate A..F. Episodul se încheie cu succes când robotul execută acțiunea validă dropoff la destinație, având coletul. Sunt permise cel mult 120 de actions.
| ID | Acțiune |
|---|---|
| 0 | sud |
| 1 | nord |
| 2 | est |
| 3 | vest |
| 4 | ridicare colet (pickup) |
| 5 | predare colet (dropoff) |
O deplasare într-un perete sau în afara hărții nu schimbă poziția, dar consumă un pas. pickup reușește numai la depozitul coletului, când robotul nu îl transportă deja. dropoff reușește numai la destinație, când robotul transportă coletul. Un pickup sau dropoff invalid nu schimbă state și consumă un pas.
Fiecare observație de antrenare conține:
grid: tensor float32 cu forma (6, 8, 8);vector: 13 valori numerice normalizate;action_mask: șase valori booleene pentru actions valide;state: (row, column, package_field, destination).Canalele tensorului grid reprezintă:
vector conține, în ordine: linia și coloana normalizate ale robotului, câmpul coletului, destinația, indicatorul de transport, linia și coloana țintei curente, diferențele față de țintă, apoi patru indicatori de deplasare blocată în ordinea sud, nord, est, vest.
Setul public conține:
Pachetul platformei folosește JSON și tablouri NumPy sigure, nu fișiere Python pickle. Consultați starter_kit.py pentru denumirile exacte și codul de încărcare. Încărcați fișierele NumPy cu allow_pickle=False.
layout_id este comun pentru patru episoade. Cheia unică este întotdeauna:
(layout_id, episode_seed)Antrenați un model determinist care prezice următoarea acțiune din observația curentă. Rulați modelul pentru episoade complete și generați câte o secvență de acțiuni pentru fiecare scenariu de test.
Puteți folosi demonstrațiile furnizate pentru antrenare. Nu aveți voie să obțineți etichete expert pentru validare sau test și nici să generați demonstrații expert suplimentare prin căutare, planificare sau un alt model expert. Soluțiile bazate pe reguli ori codificate explicit pot fi analizate de Comisia Științifică. Organizatorii pot solicita notebook-ul sau codul-sursă care a generat trimiterea.
Trimiteți o arhivă ZIP numită predictions.zip, care conține exact un singur fișier la rădăcină: predictions.json.
Fișierul trebuie să conțină un tablou JSON cu exact 1,600 de obiecte, câte unul pentru fiecare episod de test:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]Condiții:
(layout_id, episode_seed), nu prin ordinea liniilor;actions este o listă JSON de numere întregi (nu valori booleene) între 0 și 5;Arhivele invalide sau trimiterile incomplete sunt respinse.
Metrica este rata de succes a episoadelor:
SR = successful deliveries / evaluated episodesscore = 100 × SRNu se acordă punctaj parțial pentru atingerea coletului, apropierea de țintă sau folosirea unui număr mai mic de pași.
Pentru clasamentul platformei, hărțile de test sunt împărțite determinist:
În timpul concursului se afișează scorul parțial, iar clasamentul final folosește setul complet. Apartenența la cele două subseturi nu este inclusă în datele publice. Numărul mediu de pași și tentativele invalide de pickup/dropoff pot apărea în jurnalele evaluatorului, dar nu modifică punctajul.
Adaptare după „Academia de livrări robotizate: Program pregătitor” (IOAI 2026, Home Task 2). Reprezentarea sigură a datelor, regulile de validare, împărțirea clasamentului și evaluatorul sunt adaptări pentru platforma MLCompete.