Problema #304
Autore:IOAI 2026 Organizing Team
Difficoltà
Il tuo miglior punteggio
N/D
State addestrando un robot per le consegne su una mappa urbana composta da 8 × 8 celle. In ogni episodio, il robot parte da una cella libera, raggiunge il deposito in cui si trova il pacco, lo preleva, si sposta verso un altro deposito — la destinazione — e lo consegna. Ogni mappa contiene sei depositi e otto celle bloccate.
L’obiettivo è apprendere il comportamento del robot da un numero volutamente ridotto di dimostrazioni di esperti. Questo è un problema di clonazione comportamentale: addestrate un modello su esempi di osservazione/azione e poi lo eseguite passo dopo passo su nuovi episodi.
I depositi sono indicizzati con 0..5 ed etichettati con A..F. Un episodio termina con successo quando il robot esegue un’azione dropoff valida alla destinazione mentre trasporta il pacco. Sono consentite al massimo 120 actions.
| ID | Azione |
|---|---|
| 0 | sud |
| 1 | nord |
| 2 | est |
| 3 | ovest |
| 4 | prelevare il pacco (pickup) |
| 5 | consegnare il pacco (dropoff) |
Muoversi contro un muro o fuori dalla mappa non cambia la posizione del robot, ma consuma un passo. pickup riesce solo presso il deposito del pacco, quando il robot non lo sta già trasportando. dropoff riesce solo alla destinazione, quando il robot trasporta il pacco. Un pickup o dropoff non valido non modifica lo state e consuma un passo.
Ogni osservazione di addestramento contiene:
grid: un tensore float32 di forma (6, 8, 8);vector: 13 valori numerici normalizzati;action_mask: sei valori booleani che indicano le actions valide;state: (row, column, package_field, destination).I canali del tensore grid rappresentano:
Il vector contiene, nell’ordine: la riga e la colonna normalizzate del robot, il campo del pacco, la destinazione, l’indicatore di trasporto, la riga e la colonna dell’obiettivo corrente, le differenze rispetto all’obiettivo, seguite da quattro indicatori di movimento bloccato nell’ordine sud, nord, est, ovest.
Il set di dati pubblico contiene:
Il pacchetto della piattaforma utilizza JSON e array NumPy sicuri anziché file pickle Python. Consultate starter_kit.py per i nomi esatti e il codice di caricamento. Caricate i file NumPy con allow_pickle=False.
Ogni layout_id è condiviso da quattro episodi. La chiave univoca è sempre:
(layout_id, episode_seed)Addestrate un modello deterministico che predica l’azione successiva dall’osservazione corrente. Eseguite il modello su episodi completi e generate una sequenza di azioni per ogni scenario di test.
Potete utilizzare per l’addestramento le dimostrazioni fornite. Non vi è consentito ottenere etichette di esperti per i set di validazione o di test, né generare ulteriori dimostrazioni di esperti tramite ricerca, pianificazione o un altro modello esperto. Le soluzioni basate su regole o esplicitamente codificate in modo rigido possono essere esaminate dal Comitato scientifico. Gli organizzatori possono richiedere il notebook o il codice sorgente utilizzato per generare l’invio.
Inviate un archivio ZIP denominato predictions.zip, contenente esattamente un file nella sua radice: predictions.json.
Il file deve contenere un array JSON con esattamente 1,600 oggetti, uno per ogni episodio di test:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]Requisiti:
(layout_id, episode_seed), non in base all’ordine delle righe;actions deve essere un elenco JSON di numeri interi — non valori booleani — compresi tra 0 e 5;Gli archivi non validi o gli invii incompleti vengono rifiutati.
La metrica è il tasso di successo degli episodi:
SR = successful deliveries / evaluated episodesscore = 100 × SRNon viene assegnato alcun punteggio parziale per aver raggiunto il pacco, essersi avvicinati all’obiettivo o aver utilizzato meno passi.
Per la classifica della piattaforma, le mappe di test sono suddivise in modo deterministico:
Durante la competizione viene mostrato il punteggio parziale, mentre la classifica finale utilizza il set completo. L’appartenenza ai due sottoinsiemi non è inclusa nei dati pubblici. Il numero medio di passi e i tentativi non validi di pickup/dropoff possono comparire nei registri del valutatore, ma non influiscono sul punteggio.
Adattato da «Accademia delle consegne robotizzate: programma preparatorio» (IOAI 2026, Home Task 2). La rappresentazione sicura dei dati, le regole di validazione, la suddivisione della classifica e il valutatore sono adattamenti per la piattaforma MLCompete.