Build Night · Challenge 01

Traffic Lights Arena

Controla cada cruce de una ciudad simulada. Tu estrategia debe mover más coches, reducir la espera y adaptarse a mapas que no has visto.

Disponible al comenzarEntrar como equipo
01

Haz que la ciudad fluya

Tienes 105 minutos para modificar un único archivo. El motor se encarga de los amarillos, los tiempos mínimos y la seguridad; tú decides qué eje recibe el verde en cada cruce.

02

Una función

def control(state):
    return {
        "A1": "NS_GREEN",
        "A2": "EW_GREEN",
    }

State contiene colas, espera, fase actual, edad de fase y ocupación de carreteras. Puedes guardar memoria entre ticks dentro de un mapa y usar toda la biblioteca estándar y NumPy. Cada mapa arranca un proceso nuevo, así que la memoria no pasa de un mapa a otro.

03

Bate al baseline

10,000 baseline · 25,000 gold · 25,000 max overall

Cada mapa da entre 1 y 25.000 puntos: 10.000 al igualar el baseline y 25.000 al alcanzar o superar el objetivo gold. Por encima del coste del baseline, el score baja en proporción al coste. Entre baseline y gold, el avance se eleva al cuadrado: acercarte al gold importa mucho más que una pequeña mejora.

Durante el reto verás un score provisional, con un máximo total de 25.000: la media geométrica de los tres mapas públicos aporta un 20% y la media geométrica de seis mapas privados de validación aporta un 80%. Solo verás el agregado privado, nunca resultados privados por mapa.

Al cerrar entregas, se elige el mejor envío provisional de cada equipo, no necesariamente el más reciente, y se evalúa una sola vez en doce mapas finales sellados agrupados en seis familias. Cada familia aporta el menor de sus dos scores y las seis familias se combinan con media geométrica. Ese resultado, con el mismo reparto 20/80, decide la clasificación final.

04

Prueba, guarda, envía

python run.py
python submit.py login MLG-XXXX
python submit.py

Cada equipo puede aceptar hasta 20 envíos durante los 105 minutos, con un minuto entre envíos. Volver a enviar exactamente el mismo controller devuelve el envío existente y no consume intento ni cooldown. Los errores de tu controller sí consumen el intento aceptado.