¿Tu modelo de optimización da infactible o es demasiado lento? Te ayudo a que resuelva
§Trabajemos juntos →
Si tu modelo de optimización da "infactible", o corre durante horas sin cerrar el gap, el problema no suele ser el solver: es la formulación. Una regla que contradice a otra, un "big M" demasiado grande o un modelo correcto pero débil alcanzan, cada uno por su cuenta, para frenar en seco a un buen solver. Encontrar cuál de ellos es la mayor parte del trabajo, y es un trabajo que ya hice en modelos de scheduling, carga, ruteo y otros problemas combinatorios.
Por qué fallan los modelos
- Infactible: dos o más restricciones no se pueden cumplir a la vez. Muchas veces es un problema de datos (una fecha de entrega anterior a la llegada de las piezas) o una regla escrita más estricta de lo que el negocio realmente necesita.
- Demasiado lento: el modelo es válido, pero le da al solver poco con qué trabajar: cotas flojas, restricciones big-M, muchas soluciones equivalentes (simétricas) o un tamaño que crece más rápido que los datos.
- Respuestas incorrectas: resuelve, pero el plan viola una regla que nadie dejó por escrito.
Formas de arreglarlo
| Qué hace | Sirve para | Límites | |
|---|---|---|---|
| Parámetros del solver y límites de tiempo | Ajustar parámetros, aceptar un gap "suficientemente bueno" | Modelos que ya son casi lo bastante rápidos | No arregla una formulación débil |
| Encontrar las reglas en conflicto | El análisis de conflictos del solver (un conjunto infactible irreducible, o IIS), o restricciones blandas con penalizaciones que muestran qué reglas se rompen | "Infactible" sin ninguna pista de por qué | Igual sos vos quien decide qué regla cede |
| Reformular | Restricciones más ajustadas, menos big-Ms, ruptura de simetría, otro enfoque de modelado (p. ej., programación con restricciones para scheduling) | Modelos lentos pero válidos | Requiere experiencia en modelado |
| Descomponer o combinar métodos | Dividir el problema, o usar una heurística alrededor de un solver exacto | Instancias reales grandes | Más código para mantener |
Con qué trabajé
Modelos de programación entera mixta en OR-Tools, CPLEX y Gurobi; formulaciones en Pyomo y PuLP; programación con restricciones para scheduling; metaheurísticas (recocido simulado, búsqueda tabú, algoritmos genéticos) cuando un solver exacto no escala; e híbridos de ambos enfoques. El scheduler detrás de mi caso de la fábrica planifica 746 tareas en 8 bahías y 26 operarios.
Qué necesito de vos
El modelo (código o una descripción escrita), una instancia de datos que muestre el problema, y qué significa para vos "infactible" o "demasiado lento" (cuánto tiempo puede correr, qué tan buena tiene que ser la respuesta).
Cómo empezar
Escribime a cdesivo92@gmail.com con una breve descripción del modelo y de qué es lo que falla, o contratame en Freelancer.com si preferís los contratos y la protección de pago de la plataforma.