DEV Community

RoomCraft AI: optimizar la distribución de una habitación con Simulated Annealing

Pipeline de tres etapas

Parser con LLM: el usuario describe su habitación en texto libre ("un dormitorio de 4x3 con la puerta al norte y una ventana al este"). Un LLM (Llama 3.1 vía Groq) lo convierte en una estructura de datos validada con Pydantic: dimensiones, aberturas, muebles deseados. Latencia: <1s.

Optimizador con Simulated Annealing: aquí está el corazón del proyecto.

Visualización y export: los layouts se renderizan en 3D en el navegador con Three.js y se exportan como plano técnico en PDF con ReportLab.

Por qué Simulated Annealing

El espacio de disposiciones posibles es combinatorio y lleno de óptimos locales. Una búsqueda voraz se queda atascada en la primera solución "decente". El Simulated Annealing imita el enfriamiento de un metal: al principio acepta movimientos malos con cierta probabilidad (alta "temperatura"), lo que le permite escapar de óptimos locales; según baja la temperatura, se vuelve cada vez más exigente y converge. Es una metaheurística ideal cuando el espacio de soluciones es irregular y no tienes gradiente.

La función objetivo puntúa cada disposición de 0 a 100 según ergonomía: espacio de circulación, relaciones entre muebles, acceso a luz y aberturas. El sistema devuelve el top 5 de layouts, no solo el mejor, para dar opciones.

Rendimiento

  • Parse: <1s
  • Optimización: 2–5s
  • Export PDF: <1s
  • Footprint en reposo: ~100 MB de RAM

Qué aprendí

Que combinar un LLM (para entender lenguaje) con una metaheurística clásica (para optimizar de verdad) es un patrón potentísimo: el LLM traduce el problema humano a uno formal, y un algoritmo determinista y barato lo resuelve mejor -y de forma más explicable- que pedirle al propio LLM que "coloque los muebles".

Publicado originalmente en adrianmoreno-dev.com.

Comments

No comments yet. Start the discussion.