Motor procedural

GA + NFP + SA. Determinístico. Explicable.

Un genético con No-Fit Polygon optimiza aprovechamiento. Un score de matching de 3 componentes evalúa cada junta. Simulated annealing refina el resultado. Sin datos de entrenamiento, sin caja negra, mismo input → mismo output con seed fija.

Aprovechamiento

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.

Calidad de junta

Score de matching

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, 70% verde garantizado.

Refinamiento

Simulated annealing

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.

El motor en movimiento

Cómo se resuelve un layout.

No es una caja negra. Tres etapas, terminología real del worker, el mismo input siempre da el mismo output.

  1. Fase 1 · GA

    Población de layouts evolucionando

    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.

  2. Fase 2 · NFP

    No-Fit Polygon probando encajes

    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.

  3. Fase 3 · SA

    Simulated annealing refina el matching

    Sobre el mejor candidato del genético, la temperatura decreciente permite escapar de óptimos locales y mejorar el score de junta sin perder aprovechamiento.

Score matching0.62
Temperatura SA
Performance

Tres minutos. Mismo resultado siempre.

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.

< 0 min

Cómputo p95

0.00

Score matching

0%

Aprovechamiento

0%

Determinismo seed

< 0s

Pipeline imagen p50

< 0s

Pipeline imagen p95

0

Datos de entrenamiento

DEAP · scipy · Shapely

Stack

Por qué decidimos contra IA

Costo, explicabilidad, determinismo.

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.

  • Funciona desde día 1, sin dataset
  • Cada decisión es trazable a un score numérico
  • Costo de cómputo predecible (CPU, no GPU)
  • Sin sorpresas — mismo input, mismo output
Onyx Oro
OXO-2026-0001
Aislamiento

RLS Postgres + set_config.

Las 13 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 ADVERSARIALES EN CI · 0 PASSED

¿Querés verlo correr?

Demo con tu placa.En menos de tres minutos.

Motor procedural — GA + NFP + SA, determinístico y explicable · Veta