Explicación de ramas y límites

9

Tengo una prueba sobre la rama y el algoritmo enlazado . Entiendo teóricamente cómo funciona este algoritmo, pero no pude encontrar ejemplos que ilustren cómo este algoritmo puede implementarse prácticamente.

Encontré algunos ejemplos como este, pero todavía estoy confundido al respecto. También busqué el problema del vendedor ambulante y no pude entenderlo.

Lo que necesito son algunos problemas y cómo pueden resolverse estos problemas mediante el uso de ramificación y enlace.

MR.NASS
fuente
1
¿Qué fue difícil de entender? ¿Intentaste retroceder antes?
Sí, lo intenté. El problema con el B & B es que si tengo un problema que se puede resolver con B & B, no sé cómo puedo obtener el límite inferior para cada nodo y también cómo puedo obtener la función objetivo. Además, ¿cuál es el primer valor del bestsofar que comparo con cada límite inferior?
MR.NASS
2
@ MR.NASS No estoy seguro de qué dice exactamente en su último comentario. Déjame intentar explicar. B & B es un método para podar el árbol de búsqueda. Se puede aplicar a problemas que tienen que optimizar una función objetivo. Generalmente se aplica a problemas de optimización discretos o combinatorios. En cada paso, intenta encontrar un límite inferior de la función objetivo para todas las posibles soluciones restantes. Si el límite inferior es más alto que la mejor solución actual, puede detener la búsqueda y retroceder (podando el árbol de búsqueda), ya que no puede haber una solución con una puntuación más baja.
George
2
Por lo general, se resuelve una versión relajada del problema para obtener un límite inferior. Para los programas de enteros mixtos, esta suele ser la relajación de la programación lineal.
Opta el
2
@ MR.NASS Esto depende de la función objetivo. Como dijo Sid, generalmente se resuelve una versión relajada del problema dado. Por lo general, se desea usar una versión relajada que ofrezca una buena aproximación del problema inicial y se pueda resolver de manera eficiente. Tenga en cuenta que la versión relajada tiene que dar un límite inferior que sea como máximo tan alto como el límite inferior verdadero para que funcione correctamente. Otro ejemplo: suponga que desea resolver MAXSAT con un método B & B. Para una asignación de verdad parcial dada, puede calcular fácilmente el número de cláusulas satisfechas. Un límite superior (ya que este es un problema de maximización) ...
George

Respuestas:

10

Apliquemos Branch and Bound a Knapsack , con suerte esto le aclarará el concepto.

n1nviiwiT

v1n1v1n1

iinO(2n)

Tn/2n/2+1nn/2+1n2n/2

dO(2d)

Tenga en cuenta que esto se llama ' Límite ' porque generalmente implica algún tipo de límite inferior o superior: para el criterio ' incluso si agrego todos los elementos restantes, el valor de los elementos que he agregado no excederá la mejor configuración He encontrado hasta ahora ', el valor de su mejor configuración hasta el momento es un límite inferior en la mejor configuración, por lo que cualquier cosa que nunca supere este límite inferior está condenado al fracaso.

Puede hacer que la parte 'Límite' sea tan compleja como desee. Por ejemplo, los problemas de programación de enteros a menudo se resuelven usando relajaciones: relaja su programa a un programa lineal, que puede resolver en tiempo polinómico, y luego puede descartar muchos casos para sus variables binarias que nunca funcionarán de todos modos. Luego se ramifica en las opciones restantes.

Tenga en cuenta que Branch and Bound generalmente solo le da un aumento de velocidad en la práctica, pero no en teoría: es difícil decir exactamente cuánto del árbol de búsqueda se corta utilizando sus heurísticas. Esto se demuestra por el número de heurísticas diferentes utilizadas en la práctica en tales problemas. Si no tienes suerte, el árbol de búsqueda restante sigue siendo enorme incluso con muchos límites.

Alex ten Brink
fuente
4

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.

1riLmax

  • 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 :1riLmax

i1234pi4265ri0135di8121110

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:

algoritmo
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.

Rafael
fuente