Problema #304
Autor:IOAI 2026 Organizing Team
Dificuldade
A tua melhor pontuação
N/D
Estão a treinar um robô de entregas num mapa urbano composto por 8 × 8 células. Em cada episódio, o robô parte de uma célula livre, chega ao depósito onde se encontra a encomenda, recolhe-a, desloca-se para outro depósito — o destino — e entrega-a. Cada mapa contém seis depósitos e oito células bloqueadas.
O objetivo é aprender o comportamento do robô a partir de um número intencionalmente reduzido de demonstrações de especialistas. Este é um problema de clonagem comportamental: treinam um modelo com exemplos de observação/ação e depois executam-no passo a passo em novos episódios.
Os depósitos são indexados por 0..5 e identificados por A..F. Um episódio termina com sucesso quando o robô executa uma ação dropoff válida no destino enquanto transporta a encomenda. São permitidas, no máximo, 120 actions.
| ID | Ação |
|---|---|
| 0 | sul |
| 1 | norte |
| 2 | este |
| 3 | oeste |
| 4 | recolher a encomenda (pickup) |
| 5 | entregar a encomenda (dropoff) |
Mover-se contra uma parede ou para fora do mapa não altera a posição do robô, mas consome um passo. pickup só tem sucesso no depósito da encomenda quando o robô ainda não a transporta. dropoff só tem sucesso no destino quando o robô transporta a encomenda. Um pickup ou dropoff inválido não altera o state e consome um passo.
Cada observação de treino contém:
grid: um tensor float32 com a forma (6, 8, 8);vector: 13 valores numéricos normalizados;action_mask: seis valores booleanos que indicam as actions válidas;state: (row, column, package_field, destination).Os canais do tensor grid representam:
O vector contém, por ordem: a linha e a coluna normalizadas do robô, o campo da encomenda, o destino, o indicador de transporte, a linha e a coluna do alvo atual, as diferenças relativamente ao alvo, seguidas por quatro indicadores de movimento bloqueado na ordem sul, norte, este, oeste.
O conjunto de dados público contém:
O pacote da plataforma utiliza JSON e matrizes NumPy seguras em vez de ficheiros pickle de Python. Consultem starter_kit.py para conhecerem os nomes exatos e o código de carregamento. Carreguem os ficheiros NumPy com allow_pickle=False.
Cada layout_id é partilhado por quatro episódios. A chave única é sempre:
(layout_id, episode_seed)Treinem um modelo determinístico que preveja a ação seguinte a partir da observação atual. Executem o modelo ao longo de episódios completos e gerem uma sequência de ações para cada cenário de teste.
Podem utilizar as demonstrações fornecidas para o treino. Não lhes é permitido obter rótulos de especialistas para os conjuntos de validação ou teste, nem gerar demonstrações de especialistas adicionais através de pesquisa, planeamento ou outro modelo especialista. As soluções baseadas em regras ou explicitamente codificadas de forma rígida podem ser analisadas pelo Comité Científico. Os organizadores podem solicitar o notebook ou o código-fonte utilizado para gerar a submissão.
Submetam um arquivo ZIP denominado predictions.zip, que contenha exatamente um ficheiro na sua raiz: predictions.json.
O ficheiro deve conter uma matriz JSON com exatamente 1,600 objetos, um para cada episódio de teste:
[ {"layout_id":"test_0000","episode_seed":300000,"actions":[1,1,2,4,0,5]}]Requisitos:
(layout_id, episode_seed), não pela ordem das linhas;actions deve ser uma lista JSON de números inteiros — não valores booleanos — entre 0 e 5;Arquivos inválidos ou submissões incompletas são rejeitados.
A métrica é a taxa de sucesso dos episódios:
SR = successful deliveries / evaluated episodesscore = 100 × SRNão é atribuída pontuação parcial por alcançar a encomenda, aproximar-se do alvo ou utilizar menos passos.
Para a tabela classificativa da plataforma, os mapas de teste são divididos de forma determinística:
Durante a competição, é apresentada a pontuação parcial, enquanto a tabela classificativa final utiliza o conjunto completo. A pertença aos dois subconjuntos não está incluída nos dados públicos. O número médio de passos e as tentativas inválidas de pickup/dropoff podem aparecer nos registos do avaliador, mas não afetam a pontuação.
Adaptado de «Academia de entregas robotizadas: programa preparatório» (IOAI 2026, Home Task 2). A representação segura dos dados, as regras de validação, a divisão da tabela classificativa e o avaliador são adaptações para a plataforma MLCompete.