RoomCraft AI: optimizar la distribución de una habitación con 시뮬레이션 어닐링

작성자

카테고리:

← 피드로
DEV Community · Adrian · 2026-07-16 개발(SW)

Adrian

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 4×3 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.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다