Por qué nosotros
Lo que sabemos hacer, y cómo se puede comprobar
Casi todo el mundo dice que su optimizador es el mejor. Nosotros preferimos enseñar los números y decir de dónde sale cada uno, incluidos los que todavía no ha verificado nadie de fuera.
Un banco de pruebas público es un conjunto de problemas que llevan años abiertos y contra los que compite todo el mundo: universidades, laboratorios y empresas. La gracia es que las respuestas están publicadas y cualquiera puede comprobar si mientes. Por eso medimos ahí. Antes de las cifras conviene entender cómo funciona el asunto, porque es justo lo que permite distinguir un dato de un folleto.
Cómo funciona un banco de pruebas
Una instancia es un problema concreto guardado en un fichero: sus trabajos, sus duraciones, sus dependencias y sus medios limitados. Está congelada desde hace años, la tiene todo el mundo, y es idéntica para ti y para el laboratorio con el que te comparas.
Para muchas instancias se publica su óptimo: el mejor resultado que existe, ya demostrado. Y aquí viene la parte que casi nadie cuenta: encontrar un plan bueno y demostrar que no hay ninguno mejor son dos logros distintos y el segundo es muchísimo más caro. Un motor puede dar con el mejor plan posible y no ser capaz de probarlo dentro del tiempo que se le dio.
La demostración se apoya en una cota inferior: un número por debajo del cual está probado que no cabe ningún plan. Cuando el plan que tienes y la cota coinciden, se acabó la discusión, y eso es lo que convierte «no he encontrado nada mejor» en «no existe nada mejor».
Hay un detalle contraintuitivo que dice mucho de si alguien mide en serio: en nuestro banco de pruebas, sacar un número mejor que el óptimo publicado no es un récord, es un fallo. Significa que el modelo se está saltando alguna restricción. Por eso nuestro control falla igual si un resultado empeora que si mejora de más.
Qué preguntarle a cualquiera que presuma de resultados
Nosotros incluidos. Con estas cinco preguntas se desmonta casi cualquier cifra inflada, y todas tienen respuesta en esta página.
- ¿Cuántos segundos por instancia? Compararse en un minuto contra un óptimo que a otro le costó ochenta es hacer trampa en las dos direcciones.
- ¿En qué máquina y con cuántos hilos? Un resultado con el número de hilos sin declarar no se puede repetir.
- ¿Sobre cuántas instancias, y sobre el conjunto entero o una selección? Elegir a dedo las que salen bien es el truco más viejo del oficio. A nosotros nos pasó al revés: por medir veinte en vez de las quinientas treinta y seis se nos escapó un defecto que rompía una de cada doscientas.
- ¿Es una media o es el peor caso? Una media buena esconde desastres puntuales, y en un proyecto real el desastre puntual es el que te come.
- ¿Lo ha comprobado alguien de fuera? Esta es la que ordena la página entera, y por eso van tres niveles y no una lista.
Tres niveles, y no los mezclamos
Esto es lo que separa un dato de una promesa, así que va por delante y no en una nota al pie.
Verificado y publicado por un tercero
Comprobable hoyLo mejor conocido en una instancia del archivo público de cuadrantes de personal, verificado y publicado por quien mantiene ese archivo, no por nosotros.
| Problema | Nuestro resultado | Lo mejor publicado antes | Cota |
|---|---|---|---|
| MER, cuadrante de un hospital del área de Montreal: 54 personas, seis semanas | 7080 | 7081 | 7079 |
La instancia llevaba desde 2010 sin moverse. La cota inferior es 7079, o sea que lo perfecto está a un punto de donde llegamos.
Compruébalo sin fiarte de nosotros: la tabla de mejores resultados del archivo está en schedulingbenchmarks.org/nrp/bounds.html. Busca MER y verás el 7080 con su fecha y su autor, que es quien firma esta página. En esa misma tabla salimos tres veces: MER, BCV-3.46.1 y HED01b.
Aparte de estos tres, hay cuatro resultados enviados y todavía sin respuesta, que van en el nivel siguiente y no aquí. Ninguno está aceptado a día de hoy, y decirlo de otra manera sería el tipo de cosa que esta página se compromete a no hacer.
Enviado, pendiente de que lo publiquen
En revisiónResultados que hemos mandado a quien mantiene cada banco y que están en su cola. Hasta que aparezcan publicados, aquí no cuentan como nuestros: los enseñamos para que se vea en qué estamos, no como aval.
| Banco | Qué hemos mandado | Estado |
|---|---|---|
| MSS, secuenciación de una universidad italiana | Dos instancias | Enviado, sin respuesta todavía |
Y dos instancias de MIPLIB en las que confirmamos por nuestra cuenta un óptimo que ya se conocía: sus valores estaban publicados en un trabajo de 2016 que no conocíamos. Llegamos a ellos de forma independiente, pero no los descubrimos, y los mantenedores del banco dan crédito compartido.
Lo contamos así a propósito. Presentarlo como récord nuestro sería falso y se comprueba en dos minutos, y quien lo comprobara dejaría de creerse el resto de esta página con toda la razón.
Demostrado por nosotros, sin verificación externa
Interno, no auditado por tercerosVeinticinco instancias de MMLIB y PSPLIB, que son los bancos de planificación de proyectos con recursos: exactamente la familia de esta herramienta. En todas ellas el motor no solo encuentra el mejor plan sino que demuestra que no hay ninguno mejor, que es una afirmación distinta y mucho más fuerte.
Cada una tiene su certificado guardado con la fecha, el tiempo que costó y la huella del fichero exacto que se resolvió. No están auditadas por nadie de fuera, y por eso están en este nivel y no en el primero.
Para que la cuenta quede clara y no se sumen cosas distintas: son 25 óptimos de nuestra familia con certificado interno y, aparte, 4 resultados enviados y todavía sin respuesta (dos de MSS y dos de MIPLIB), que están en el nivel de arriba. Ni son la misma cosa ni se suman, y ninguno de los cuatro está aceptado por nadie a día de hoy.
Los tiempos van de 37 segundos a 80 minutos según la instancia. Son problemas que llevan años estudiados: ahí no se gana por tener un ordenador más grande.
Lo que corremos antes de tocar una sola línea
Aparte de los récords, hay una rutina menos vistosa y más importante para quien va a usar esto: mil dieciséis problemas con óptimo publicado, resueltos enteros, cada vez que cambia el motor. Si un solo resultado empeora respecto a la vez anterior, el cambio no entra. Ni una media que baja: uno.
| Banco | Qué son | Instancias | Clavamos el óptimo |
|---|---|---|---|
| PSPLIB j30 | Proyectos con medios limitados: obra, parada de planta, implantación | 480 | 480 |
| PSPLIB j10mm | Lo mismo, pero cada trabajo se puede hacer de varias maneras | 536 | 536 |
Y como esta página va de declarar el ámbito de cada número, aquí está el de estos dos:
- Medido el
- 28 ago 2026
- Tiempo por instancia
- 60 s
- Hilos
- 2
- Motores
- los dos
- Planes inválidos
- 0
- Máquina
- sin declarar
Las dos pasadas se repiten con cada uno de los dos motores que sabemos usar por dentro, o sea cuatro vueltas completas por versión. Cada plan pasa además por un comprobador independiente del que lo resolvió, porque que un solver diga «óptimo» no prueba nada si el problema estaba mal escrito.
Dos honestidades sobre esta tabla. La primera: el 480 de 480 no es una ley física, es una medida; en una máquina más lenta una instancia concreta se queda a las puertas de demostrar lo que ya ha encontrado, y por eso lo que vigilamos son los resultados y no el contador. La segunda: el registro no guarda en qué máquina se midió, así que ahí ponemos «sin declarar» en vez de un número que quedaría mejor. Está apuntado para arreglarlo.
Y a ti qué te importa esto
Seamos claros: si llevas un proyecto, te da igual el óptimo de un problema de laboratorio llamado J1002_3, y haces bien. Eso no se compra.
Lo que sí te afecta es la consecuencia. Competir ahí obliga al motor a saber demostrar que no existe nada mejor, no solo a encontrar algo bueno. Y esa es exactamente la pregunta que vas a hacer cuando te enseñemos un plan: ¿seguro que no se puede acabar antes?
Sin esa disciplina, la respuesta honesta sería «no he encontrado nada mejor», que no es lo mismo y tú lo notarías el día que alguien te enseñara uno más corto.
La regla que nos ponemos. En esta página no hay ninguna cifra que no podamos enseñar con su fuente o declarar como interna. Si un día encontramos que algo estaba mal, lo corregimos aquí y lo decimos: preferimos una lista corta a una larga con asteriscos, porque quien pilla un asterisco deja de creerse todo lo demás.
Cómo trabajamos
Tres cosas que explican por qué esta herramienta se comporta como se comporta.
Nunca te acusamos de un fallo que es nuestro
Es la regla que más código nos ha costado. Un ejemplo real de esta semana: señalábamos 137 choques de fechas que no existían, porque reconstruíamos el final de cada trabajo en vez de leer el que tú habías escrito. Se arregló leyendo tu dato. Cuando algo no lo sabemos comprobar, lo decimos y no lo comprobamos: preferimos callarnos a acusarte de algo que no has hecho.
El mismo fichero da el mismo informe
Suena obvio y no lo era. Durante un tiempo el resultado dependía de lo cargada que estuviera la máquina: los planes eran igual de buenos, pero salían distintos. Un plan que no se puede repetir es un plan que no puedes defender en una reunión, así que ahora se calcula de forma que dos veces el mismo fichero den el mismo documento.
Cada número lleva de dónde sale
Cuando te decimos que algo no cuadra, te decimos en qué fila de tu fichero mirarlo. Y cuando publicamos una cifra, decimos sobre qué se midió y cuándo. Una cifra sin eso es una opinión con formato de dato.
Quiénes somos
Team Banzai es un estudio pequeño de Madrid que construye software con optimización y datos. Esta herramienta es una de sus demos técnicas públicas: se puede usar hoy, gratis y sin registrarse.
Más en team-banzai.com, donde están el resto de demos con la misma disciplina de cifras.