DEV Community

Adrian
Adrian

Posted on • Originally published at adrianmoreno-dev.com

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

Colocar los muebles de una habitación es un problema de optimización con muchas restricciones: la cama no va delante de la puerta, el escritorio quiere luz natural, hay que poder circular. Hay un número enorme de disposiciones posibles. RoomCraft AI las explora automáticamente a partir de una descripción en lenguaje natural.

El 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.

Top comments (0)