Considere la programación , la tarea de asignar trabajos con ciertas duraciones y plazos a las máquinas. Asumimos un tiempo discreto. Muchos de estos problemas son NP (O) -hard.
1∣ri∣Lmax
- en una máquina
- problemas con las fechas de lanzamiento y nosotros
- minimizar la tardanza máxima , que es la diferencia máxima entre la fecha límite y el tiempo de finalización en todos los trabajos.Lmax
La versión de decisión de este problema es NP-hard; esto se puede ver por reducción de 3PARTITION .
Curiosamente, si permitimos la preferencia , que es intercambiar trabajos activos, el problema puede resolverse en tiempo cuadrático mediante la primera heurística de fecha de vencimiento más temprana (en fechas de vencimiento modificadas). Es fácil ver que la solución óptima de esta variante no puede ser peor que la solución óptima del problema original.
Ahora, para aplicar Branch & Bound a este problema, necesitamos corregir algunos parámetros:
- Calculamos los límites inferiores al permitir la preferencia y el uso de EDD.
- Nos ramificamos arreglando cada uno de los trabajos no programados como el siguiente.
- Vamos al niño con el límite inferior más pequeño primero.
Tienes que hacer esto para cada aplicación de B&B.
Para un ejemplo concreto, considere esta instancia de :1∣ri∣Lmax
ipiridi1408221123631145510
con los tiempos de procesamiento de los trabajos, las fechas de lanzamiento y las fechas de vencimiento.piridi
Ejecutando B & B como se especifica anteriormente, esto sucede:
Este GIF no se repite. Vuelva a cargarlo en una nueva pestaña para verlo desde el principio.
[ fuente ] [ versión estática ]
Tenga en cuenta que de 41 nodos, solo cuatro se visitan correctamente y solo para diez se calculan los límites inferiores.