Genético + NFP
Población de layouts evolucionando por crossover y mutación. Cada candidato evaluado con No-Fit Polygon: cuánto material queda usable después de colocar todas las piezas. Operador de reparación para soluciones inválidas.
Un algoritmo genético con No-Fit Polygon (GA + NFP) acomoda las piezas para aprovechar el material. Un puntaje de 3 componentes evalúa cada junta y el recocido simulado (SA) afina el resultado. Sin datos de entrenamiento ni caja negra: con la misma semilla da el mismo resultado cuando el corte es por generaciones.
En la app hoy: el acomodo automático de los trabajos se calcula con el genético + NFP, que optimiza el aprovechamiento de la placa. El score de matching de vetas y el refinamiento con simulated annealing que se describen abajo se miden en la suite de referencia del motor; el acomodo automático de la app no optimiza hoy el matching de vetas.
Población de layouts evolucionando por crossover y mutación. Cada candidato evaluado con No-Fit Polygon: cuánto material queda usable después de colocar todas las piezas. Operador de reparación para soluciones inválidas.
Tres componentes ponderados automáticamente: suavidad de la línea de junta, diferencia de orientación de veta, delta de color entre placas. Un solo número por junta: verde, ámbar o rojo.
Búsqueda local con temperatura decreciente sobre el mejor candidato del genético. Permite escapar de óptimos locales del NFP y mejorar el score de matching sin perder aprovechamiento.
No es una caja negra. Tres etapas, terminología real del worker, el mismo input siempre da el mismo output.
El algoritmo genético mantiene muchos acomodos candidatos a la vez. Crossover y mutación combinan los mejores; un operador de reparación corrige los inválidos.
Cada candidato se evalúa con No-Fit Polygon: dónde puede entrar cada pieza sin solaparse con las demás. Se maximiza el material usable de la placa.
Sobre el mejor candidato del genético, la temperatura decreciente permite escapar de óptimos locales y mejorar el score de junta sin perder aprovechamiento.
El motor está benchmarkeado en trabajos típicos de marmolería: 8-12 piezas, 1-3 placas. Las cifras son del p95 medidas sobre la suite golden con seed fija.
< 3 min
Cómputo p95
≥ 82%
Aprovechamiento
0
Datos de entrenamiento
DEAP · scipy · Shapely
Stack
Una red entrenada en placas naturales necesitaría miles de ejemplos etiquetados, un costo de inferencia por trabajo y una explicación posible de cada decisión. El motor procedural resuelve los tres en una sola arquitectura.

Todas las tablas con taller_id tienen Row-Level Security forzada a nivel base de datos. El rol de la aplicación es NOBYPASSRLS: ni siquiera un bug del backend puede mostrar datos de otro taller.
TESTS DE AISLAMIENTO RLS EN CI · 240+ PASSED

2000+
Tests backend pasando
100%
Tablas de talleres con RLS forzado
15
Docs fundacionales
3-2-1
Política de backup
RS256
JWT + refresh httpOnly
AES-256-GCM
Cifrado PII
WCAG 2.1 AA
Accesibilidad como objetivo