Algoritmo aditivo de balas

Porcedimiento de enumeración. Varibales. Factibilidad. Algoritmos. Programación. Solución de problemas

  • Enviado por: Dany Kilmister
  • Idioma: castellano
  • País: México México
  • 4 páginas
publicidad

ALGORITMO ADITIVO DE BALAS

Ejemplo de Algoritmo Aditivo:

Resolver el siguiente problema 0-1:

Max w=3y1+2y2-5y3-2y4+3y5

Sujeta a:

y1 + y2 + y3 + 2y4 - y5 " 4

7y1 +3y3 - 4y4 - 3y5 " 8

11y1 -6y2 +3y4 - 3y5 " 5

y1,y2,y3,y4,y5 = (0_1)

El problema se puede poner en la forma inicial requerida por el algoritmo aditivo, utilizando las siguientes operaciones:

  • Multiplique la función objetivo por -1.

  • Multiplique la tercera restricción por -2.

  • Añada las variables s1,s2 y s3 para convertir las tres restricciones en ecuaciones.

  • Sustituya y1=1-x1 , y2=1-x2 , y5=1-x5 , y3=x3 , y y4=x4 para producir todos los coeficientes objetivo positivos.

  • La conversión da por resultado la siguiente función objetivo:

    Min z'=3x1+2x2+5y3-2x4+3x5-8

    Para mayor facilidad, ignoremos la constante -8 y reemplazaremos z' +8 con z, de manera que el problema convertido resultante se lee como:

    Min z=3x1+2x2+5y3-2x4+3x5

    Sujeta a: x1 - x2 + x3 + 2x4 - x5 -s1 = 1

    -7x1 +3x3 - 4x4 - 3x5 -s2 = -2

    11x1 -6x2 -3x4 - 3x5 -s3 = 5

    x1,x2,x3,x4,x5 = (0_1)

    Debido a que el problema modificado busca la minimización de una función objetivo con todos los coeficientes positivos, una solución inicial lógica debe consistir en variables binarias todas cero. En este caso, las holguras actuarán como variables básicas y sus valores los dan los lados derechos de la ecuación. La solución se resume en la siguiente tabla:

    Solución básica factible

    X1

    X2

    X3

    X4

    X5

    S1

    S2

    S3

    Solución

    S1

    -1

    -1

    1

    2

    -1

    1

    0

    0

    1

    S1

    -7

    0

    3

    -4

    -3

    0

    1

    0

    -2

    S1

    11

    -6

    0

    -3

    -3

    0

    0

    1

    -1

    Coeficientes objetivo

    3

    2

    5

    2

    3

    Dada una solución binaria inicial toda cero, la solución de holgura asociada es:

    (s2 ,s2 ,s3 ) = (1,-2,-1) , z=0

    Si todas las variables fueran no negativas, concluiríamos que la solución binaria toda cero es óptima. Sin embargo, debido a que algunas de las variables son no factibles (negativas), necesitamos elevar una o más variables binarias al nivel 1 para lograr la factibilidad (o concluimos que el problema no tiene una solución factible).

    La elevación de una (o de algunas) de las variables binarias cero al nivel 1 ocurre en el algoritmo aditivo una a la vez. La variable elegida se llama variable de ramificación y su selección se basa en el empleo de pruebas especiales.

    La variable de ramificación debe tener el potencial de reducir la no factibilidad de las holguras. Si venos la tabla anterior x3 no se puede seleccionar como una variable de ramificación, debido a que sus coeficientes de restricción en la segunda y tercera restricciones son no negativos. Por tanto, la determinación de x3=1 solo puede empeorar la no factibilidad de s2 y s3. A la inversa, cada una de las variables restantes tiene por lo menos un coeficiente de restricción negativo en las restricciones 2 y 3, de allí que una combinación de estas variables puede producir holguras factibles. Por consiguiente, podemos excluir a x3 ya a considerar x2, x3, x4 y x5 como las únicas candidatas posibles para la variable de ramificación.

    La selección de la variable de ramificación entre las candidatas x2, x3, x4 y x5 se basa en el empleo de la medida de no factibilidad de holgura. Esta medida, que se basa en la suposición de que una variable cero xj se elevará al nivel 1, se define como

    Ij = " min {0,si-aij}

    Donde s1 es el valor actual de la variable i y aij es el coeficiente de restricción de la variable x1 en la restricción i.

    De hecho, Ij no es más que la suma de las variables negativas resultantes de elevar xj al nivel 1. La fórmula, aparentemente complicada, se puede simplificar a:

    Ij = " (negativos sj valor dado xj=1)

    Por ejemplo, cuando determinamos x1=1, obtenemos s1=1-(-1)=2, s2= -2-(-7)=5 y

    s3= -1-11= -12. Así I1= -12. De manera similar I2=-2, I4=-1 y I5=0 (recordando que x3 se excluyó como no prometedora). Debido a que I5 produce la medida más pequeña de no factibilidad, se selecciona x5 como la variable de ramificación. Fa figura 9-10 muestra las dos variables asociadas con x5=1 y x5=0 y la creación de nodos 1 y 2. el nodo 1 produce los valores de holguras factibles (s1 ,s2 ,s3 )= (2,1,2) y z=3. por tanto, se sondea el nodo 1 y z=3 se define como la cota superior actual sobre el óptimo valor objetivo.

    'Algoritmo aditivo de balas'

    Después de sondear el nodo 1, avanzamos al nodo, para lo cual x5=0. Aquí tenemos:

    (s1 ,s2 ,s3 )= (-1,2,-1), z=2

    Que no es factible. Las variables x1,x2,x3 y x4 son las candidatas para la variable de ramificación. (Observe que aun cuando las soluciones en el nodo 0 u el nodo 2 son idénticas, el nodo 2 difiere en que x5 ya no es candidata para la ramificación. Para las variables restantes, x2 y x4, calculamos las medidas de factibilidad como:

    I2 = -2 , I4 = -1

    Por consiguiente, x4 es la variable de ramificación en el nodo 2. La figura 9-11 muestra las ramificaciones x4 = 1 y x4 = 0, que conducen a los nodos 3 y 4. en el nodo 3 (definido al determinar x5 = 0 y x4 = 1), obtendremos:

    (s1 ,s2 ,s3 )= (-1,2,2), z=2

    'Algoritmo aditivo de balas'

    Ésta solución aún no es aún factible. Las candidatas para la ramificación son x1,x2 y x3. Sin embargo la elevación cualquiera de éstas variables al nivel 1 empeorará el valor de z en relación a la cota superior actual z=3. Por consiguiente, todas las variables candidato se excluyen y el nodo 3 se sondea.

    Después, en el nodo restante 4, definido por x5 = x4 = 0 tenemos:

    (s1 ,s2 ,s3 )= (1,-2,-1), z=0

    Las variables x5 y x3, se excluyen por medio de la prueba de la cota superior. (Observe que también se puede excluir debido a que no reduce la factibilidad de la holgura). La variable faltante x2 no puede ser excluida por la cota superior o por la promesa de factibilidad. Por tanto x2 es la variable de ramificación.

    La figura 9-12 muestra la adición de los nodos 5 y 6 que emanan el nodo 4. en el nodo 5 tenemos:

    (s1 ,s2 ,s3 )= (2,-2,5), z=2

    Y x1 y x3 como las candidatas a la ramificación. La variable x1 se excluye por medio de la prueba de la cota superior y x3 se excluye por medio de las pruebas tanto de la factibilidad de la holgura como de la cota superior. Esto significa que el nodo 5 se sondea. El nodo 6 también es sondeado debido a que ni x1 ni x3 pueden producir una mejor solución factible.

    'Algoritmo aditivo de balas'

    Ahora que se han sondeado todos los “pendientes” en la anterior figura y termina el algoritmo de R y A la solución óptima está asociada con el nodo 1, es decir, x5 = 1, z = 3 y todas las demás variables son cero. En términos de las variables originales, la solución es y1= y2=1 y y3= y4= y5= 0 con w=5.

    La figura anterior muestra que, mientras más pequeño es el número de ramificaciones conducentes a un nodo sondeado, más eficiente es el algoritmo. Por ejemplo, el nodo 1 se define fijando una ramificación (x5=1) y su sondeo implica automáticamente de 25-1 = 16 soluciones binarias (todas aquellas que tienen x5=1). A la inversa, el nodo 3 se define fijando dos variables binarias y su sondeo implícitamente implica de 25-1=8 soluciones binarias únicamente.