Roboți în labirint - 9/10
Autor: Mihai Nan
Context
Într-un centru de cercetare pentru sisteme autonome sunt testate mai multe tipuri de roboți. Pentru aceste experimente au fost folosite mai multe tipuri de arene, iar fiecare robot urmează o anumită strategie de explorare. În timpul fiecărui experiment, robotul este echipat cu un set de senzori și sisteme de monitorizare care colectează informații despre activitatea sa. Datele înregistrate descriu diferite aspecte ale comportamentului robotului și ale mediului în care operează.
Acestea pot include valori numerice (de exemplu, viteza medie, distanța parcursă, numărul de coliziuni sau obiecte colectate), dar și informații categoriale sau descriptive (precum tipul arenei sau condițiile de mediu). Prin analiza acestor date se pot observa tipare în modul în care roboții se deplasează, explorează spațiul, colectează obiecte sau reacționează la obstacole.
Analiza acestor date este importantă pentru:
- identificarea strategiei urmate de un robot pe baza comportamentului observat;
- înțelegerea trăsăturilor care diferențiază strategiile între ele;
- construirea unor modele capabile să recunoască automat tiparele de explorare.
Pentru rezolvarea acestei probleme veți avea la dispoziție două fișiere:
train.csv– conține exemple etichetate, folosite pentru analiză și antrenarea modelelor;test.csv– conține aceleași variabile, fără coloanastrategy_label, și este folosit pentru generarea predicțiilor.
Strategiile roboților
În experimente sunt utilizate patru tipuri de strategii:

- explorer – robot care încearcă să viziteze cât mai multe zone diferite;
- collector – robot care urmărește colectarea obiectelor;
- guardian – robot care patrulează și revine frecvent în aceleași regiuni;
- sprinter – robot care se deplasează rapid, cu accent pe viteză și acoperire într-un timp scurt.
Descrierea setului de date
Fiecare linie din fișierele train.csv și test.csv corespunde unui experiment.
Setul de date conține coloane care descriu diferite aspecte ale comportamentului robotului. Exemple de astfel de caracteristici sunt:
| Column | Type | Descriere |
|---|---|---|
| robot_id | string | Identificator unic al experimentului |
| arena_type | string | Tipul arenei în care a avut loc experimentul |
| weather | string | Condițiile de mediu din experiment |
| difficulty | int | Nivelul de dificultate al arenei |
| laps | int | Numărul de ture realizate |
| avg_speed_mps | float | Viteza medie a robotului (m/s) |
| distance_m | float | Distanța totală parcursă |
| battery_used_pct | float | Procentul de baterie consumat |
| collisions | int | Numărul de coliziuni cu obstacole |
| unique_cells | float | Numărul de zone distincte explorate |
| items_collected | int | Numărul de obiecte colectate |
| pause_count | int | Numărul de pauze sau opriri |
| turn_rate | float | Frecvența schimbărilor de direcție |
| scan_accuracy | float | Acuratețea scanărilor efectuate |
| return_time_s | float | Timpul necesar revenirii la punctul de start |
| efficiency_score | float | Scor agregat al eficienței robotului |
| coverage_ratio | float | Proporția din arenă explorată |
| scan_turn_sync | float | Sincronizarea dintre scanări și schimbări de direcție |
| pickup_efficiency | float | Eficiența colectării obiectelor |
| detour_index | float | Indice al deviațiilor de traseu |
| safety_margin | float | Marja de siguranță față de obstacole |
| patrol_consistency | float | Consistența patrulării unei zone |
| speed_burst | float | Intensitatea accelerărilor rapide |
| risk_index | float | Indice de risc al deplasării |
| strategy_label | string | Strategia robotului (doar în train.csv) |
Cerințe
Task 1 - Numărul tipurilor de arene (15 puncte)
Folosind datele din fișierul train.csv, determinați câte valori distincte apar în coloana arena_type.
Task 2 - Viteza maximă observată (15 puncte)
Folosind datele din fișierul train.csv, determinați maximul valorilor din coloana avg_speed_mps.
Task 3 - Arena cea mai frecvent utilizată (10 puncte)
Pe baza datelor din fișierul train.csv, determinați care este tipul de arenă care apare cel mai frecvent în coloana arena_type.
Task 4 - Performanța maximă de colectare (10 puncte)
Pe baza datelor din fișierul train.csv, determinați valoarea maximă a coloanei items_collected.
Task 5 – Identificarea strategiei robotului (50 puncte)
Construiți un model care determină strategia robotului pentru fiecare experiment din test.csv.
Valorile posibile sunt:
explorer
collector
guardian
sprinter
Formatul fișierului de submisie
Fișierul de submisie trebuie să fie în format csv și să conțină următoarele coloane:
| Column | Descriere |
|---|---|
| robot_id | Identificatorul robotului din test.csv |
| subtaskID | ID-ul task-ului pentru care se trimite răspunsul |
| answer | Valoarea calculată sau prezisă pentru task-ul respectiv |
Valorile posibile pentru subtaskID sunt:
| subtaskID | Task |
|---|---|
| 1 | Numărul tipurilor de arene |
| 2 | Viteza maximă observată |
| 3 | Arena cea mai frecvent utilizată |
| 4 | Performanța maximă de colectare |
| 5 | Strategia robotului |
Pentru Task 1 – Task 4, rezultatul este o valoare calculată global pe baza datelor din train.csv.
În fișierul de submisie, aceasta trebuie transmisă o singură dată, folosind valoarea specială GLOBAL pentru robot_id.
Pentru Task 5, trebuie raportată strategia prezisă pentru fiecare robot din test.csv.
Valorile posibile sunt:
explorer
collector
guardian
sprinter
Exemplu de fișier submission.csv
robot_id,subtaskID,answer
GLOBAL,1,10
GLOBAL,2,4.31
GLOBAL,3,forest
GLOBAL,4,7
TR_1000,5,explorer
TR_1001,5,guardian
TR_1002,5,collector
Evaluare
Punctajul total este de 100 puncte.
Task 1 – Task 4 (50 puncte)
Pentru primele patru task-uri, răspunsurile sunt determinate exclusiv pe baza datelor din train.csv.
Evaluarea se face prin comparare exactă (egalitate) între valoarea transmisă în fișierul de submisie și valoarea corectă calculată din train.csv.
Task 5 – Identificarea strategiei robotului (50 puncte)
Pentru acest task se evaluează corectitudinea strategiilor prezise pentru roboții din test.csv.
Se utilizează metrica Macro-F1, care calculează scorul F1 pentru fiecare clasă și apoi face media acestor valori.
Pentru o clasă c:

Scorul final Macro-F1 este media scorurilor F1 pentru toate clasele:

unde K este numărul de clase. În această problemă, K = 4.
Punctajul acordat pentru Task 5 este:
score = 50 x MacroF1 (dacă MacroF1 < 0.93)
score = 50 (dacă MacroF1 >= 0.93)