algoritmo simplex 2014

Upload: carlos-antonio-vergara-aliaga

Post on 16-Oct-2015

33 views

Category:

Documents


1 download

TRANSCRIPT

  • 5/26/2018 Algoritmo Simplex 2014

    1/16

    ICS1113 Optimizacion.

    Notas de Clases

    Prof. Jorge R. VeraDept. de Ingeniera Industrial y de Sistemas

    Escuela de Ingeniera, Pontificia Universidad Catolica de Chile

    Abril 2014

    c2013 Jorge Vera Andreo

    4 El algoritmo Simplex

    En este captulo del curso vamos a desarrollar en detalle el algoritmo que usaremos para resolver problemasde Programacion Lineal. Este es el Algoritmo Simplex.

    4.1 Descomposicion Basica

    Vamos a recordar la definicion de solucion basica factible (SBF), ya que ese es el objeto fundamental queestamos buscando. Sabemos que ah encontraremos una solucion al problema. Recordemos que estamostrabajando con la forma estandar de PL:

    min cTxs.t. Ax= b, x 0

    Si x Rn es una SBF, entonces existen m columnas linealmente independientes de A, AB(1), . . . , AB(m)tales que si i =B(1), . . . , B(m) entonces xi = 0. En lo que sigue asumiremos, por simplicidad, que esas m

    columnas son las m primeras y particionamos A como:

    A= [B|R], B Rmm,R Rm(nm)

    La misma particion se aplica a x:

    x= [xB, xR], xB Rn, xR R

    nm

    Recordemos que las variables xB se llaman variables basicas y las otras no basicas.Tenemos entonces que:

    Ax= b BxB+RxR= b

    B es invertible (Por que?) y tenemos:

    xB =B

    1(b RxR),

    y esto es la forma de despejar las variables basicas en terminos de las variables no basicas, como si estasultimas fueran las variables independientes y las basicas depeden de ellas. Como ya sabemos, en una SBFse tiene que xB = B

    1b, xR= 0.En lo que sigue denotaremosIB = {B(1), . . . , B(m)} andIR= {1, . . . , n} IB a los conjuntos de los ndicesde las variables basicas y no basicas.

    1

  • 5/26/2018 Algoritmo Simplex 2014

    2/16

    Ejemplo: Continuaremos con el problema de la seccion anterior, que era:

    max x1 +3x2s.t. x1 +4x2 100

    x1 +2x2 60x1 +x2 50xj 0 j = 1, . . . , 2

    Este problema no esta en la forma estandar, pero lo transformaremos a ella agregando tres nuevas variables,que llamaremos variables de holgura, y que nos permitir an transformar las desigualdades en igualdades.Tambien cambiaremos el sentido de la optimizacion:

    min x1 3x2s.t. x1 +4x2 +x3 +0 +0 = 100

    x1 +2x2 +0 +x4 +0 = 60x1 +x2 +0 +0 +x5 = 50

    xj 0 j = 1, . . . , 5

    Tenemos, entonces:

    A=

    1 4 1 0 01 2 0 1 0

    1 1 0 0 1

    , b=

    10060

    50

    Tomemos la base que corresponde a las columnas 1, 3 y 4, que son l.i., luego, IB = {1, 3, 4}, IN= {2, 5}.

    B =

    1 1 01 0 1

    1 0 0

    , R=

    4 02 0

    1 1

    , B1 =

    0 0 11 0 1

    0 1 1

    Entonces las variables basicas son:

    xB =B1b=

    0 0 11 0 1

    0 1 1

    10060

    50

    =

    5050

    10

    Luegox = (50, 0, 50, 10, 0) es una SBF, de hecho es el verticeCen nuestro ejemplo, y que se muestra en la

    figura:

    Figure 1: El vertice C es SBF

    2

  • 5/26/2018 Algoritmo Simplex 2014

    3/16

    Notemos que aca estamos viendo el vertice C, representado por los valores de las variables x1 y x2. Sinembargo, el problema en forma estandar tiene 5 variables. Los valores de esas otras variables no se venexplcitamente en el dibujo, sin embargo, pueden se deducidos del hecho que tanto la restricion 2 como la 1no son activas. Eso explica que las variablesx3 y x4 tengan valores estrictamente positivos ya que son lasholguras de esas restricciones.

    4.2 Los Costos Reducidos

    Ya hemos visto como expresar m variables en terminos de las otras n m utilizando para eso una matrizcorrespondiente a una base. Ahora veremos que esa misma descomposicion se puede aplicar a la funcionobjetivo del problema. Esto lo hacemos para poder ver como cambia el costo a medida que se mueven losvalores de las variables independientes, es decir, las no basicas.En nuestro ejemplo, la funcion objetivo es:

    minx1 3x2 minx1 3x2+ 0x3+ 0x4+ 0x5

    Recordemos que del despeje de variables a traves de la base tenemos que:

    x1 = 50 x2 x5x3 = 50 3x2+x5x4 = 10 x2+x5

    Sustituyendo estas expresiones en la formula anterior, obtenemos:

    min(50 x2 x5) 3x2+ 0x3+ 0x4+ 0x5

    y esto es igual amin50 +x2+x5 3x2 min50 2x2+x5.

    Notemos entonces que ahora la funcion objetivo solo depende de las variables no basicas, las que al tener valornulo, dan un valor actual de -50. Las variables basicas no han desaparecido: estan implcitas en el sistema deecuaciones transformado. De hecho, el problema completo original puede ser escrito de la siguiente forma:

    min z= 50 2x2 +x5s.t. 1x1 +1x2 +0x3 +0x4 +1x5 = 50

    0x1 +3x2 +1x3 +0x4 1x5 = 500x1 +1x2 +0x3 +1x4 1x5 = 10

    xj 0 j = 1, . . . , 5

    Mas generalmente, el vector de la funcion objetivo,c, tambien lo descomponemos en parte basica y no basica:c= [cB, cR].Tenemos entonces:

    cTx = cTBxB+ cTRxR

    = cTBB1(b RxR) +c

    TRxR

    = cTBB1b+ (cTR c

    TBB

    1R)xR

    Sea cTR= (cTR c

    TBB

    1R). Entonces:

    cT

    x= cTBB

    1

    b+ cTRxR.

    Observemos tambien que cTB = (cTB c

    TBB

    1B) = 0.

    Definition 4.1 El vectorcT =cT cTBB

    1A

    se llama vector de costos reducidos.

    3

  • 5/26/2018 Algoritmo Simplex 2014

    4/16

    Observemos que los costos reducidos de las variables basicas son = 0 por construccion. En una SBFxR= 0,luegocTx= cTBB

    1b.De este modo, la ecuacion completa que define los costos reducidos se puede escribir:

    c= c AT

    donde= (cTBB

    1)T

    Los valores son llamados a veces multiplicadores del Simplex.

    4.3 Costos reducidos y el cambio en la Funcion Objetivo

    Recordemos que con el reemplazo que hicimos el problema completa queda expresado de una forma diferente,donde las variables basicas estan despejadas en terminos de las no basicas.Si continuamos con el ejemplo, en nuestra solucion actual tenemos que x2 = 0, x5 = 0. Lo que queremoshacer es lo siguiente: cambiar el valor de alguna de esas dos variables desde su valor actual de 0. Al hacereso, debemos mantener el sistema de ecuaciones y por esas raz on las otras variables tambien cambiaran devalor, pero tambien lo hara la funcion objetivo. Ese es el analisis que haremos ahora. Tomemos ahora unavariable no basica particular, digamos la de ndicej . Tenemos:

    cTx= cTBB1b+ cjxj ,

    donde inicialmentexj = 0. Ahora queremos saber que pasa si cambiamos el valor de, digamos, xj , en >0.Consideremos entonces la funcion objetivo parametricamente en terminos de :

    cTx() = cTBB1b+ cj

    Como >0, lo que le pase a la funcion objetivo depende del signo que tenga cj . Especfcamente:

    Si cj >0 = cTx() aumenta

    Si cj

  • 5/26/2018 Algoritmo Simplex 2014

    5/16

    Tambien podemos hacer este calculo con los multiplicadores del Simplex, dados por T =cTBB1, y notemos

    quecTR= c

    TR

    TR.

    En nuestro ejemplo,

    T =cTBB1 =

    1 0 0

    0 0 11 0 10 1 1

    = 0 0 1

    Mostramos aqu el uso de este valor intermedio porque sera importante mas adelante.Podemos ver claramente que el criterio de optimalidad del teorema no se cumple. La pregunta que noshacemos ahora es, como buscamos una solucion mejor?. La respuesta es, moviendo alguna de las variables.Cual de las dos variables basicas conviene incrementar de valor?

    4.4 Mejorando la solucion

    En nuestro ejemplo, es claro que como el costo reducido de la variables 2 es < 0, entonces conviene aumentarsu valor y la funcion objetivo disminuira. (Pregunta: y si estuvieramos maximizando?)Mas en general, supongamos que tenemos un ndice de variable no basica j tal que cj < 0. Entonces,aumentar xj en > 0 hace disminuir el valor de la funci on objetivo. La pregunta es en cuanto puedeaumentar . Para responder esta pregunta nos tenemos que dar cuenta que las otras variables tienen quemoverse simultaneamente para preservar las ecuaciones del sistema y deben mantenerse 0.Especficamente, recordemos que la base permite expresar el sistemaAx = b en la forma equivalente

    xB =B1(b RxR) = B

    1b B1RxR

    Vamos a introducir ahora la siguiente notacion: b = B1b, R = B1R, y A = B1A. El cambio en losvalores de las variables basicas en terminos de las no basicas es:

    xB =b RxR

    En nuestro caso, x2 cambia a andx5 permanece en 0. Luego,

    xB() =b R2,

    donde R2 denota la columna de

    R asociada a la variables 2. puede cambiar siempre y cuando xB() 0.tenemos:

    xB() =

    x1()x3()

    x4()

    =

    5050

    10

    13

    1

    Que tan grande puede ser para mantener la desigualdad xB() 0?. Del sistema anterior, es claro quedebe cumplirse simultaneamente que:

    50 0; 50 3 0; 10 0.

    De aqu se deduce que debe cumplirse 10.Si nos movemos lo que calculamos, obtenemos la nueva solucion:

    xB(10) =x1(10)x3(10)

    x4(10)

    = 505010

    131

    10 = 40200

    Juntando todas las variables, tenemos ahora el nuevo vector es [40, 10, 20, 0, 0], que corresponde al vertice Ben el ejemplo y que se muestra en la figura:

    5

  • 5/26/2018 Algoritmo Simplex 2014

    6/16

    Figure 2: El vertice B es ahora la nueva SBF

    Notemos que al hacer esta operacion, x4 ya no es variable basica y x2 se transforma en variable basica,permaneciando las demas sin cambios en su estatus (si en sus valores). La nueva base corresponde a las

    columnas{1, 3, 2}. Tambien observamos que nos hemos movido desde un punto extremo a otro adyacente.Mas aun, la funcion objetivo disminuyo despues de hacer el cambio: el nuevo valor es igual a 70 y elanterior era 50. Esta operacion la llamaremos cambio de base.

    Theorem 4.2 La operacion de cambio de base lleva de una SBF correspondiente a un punto extremo, a otraSBF correspondiente a otro punto extremo adyacente (conectado al anterior por una arista) cuyo valor de

    funcion objetivo es al menos igual o menor que el anterior.

    En general, tenemos un ndice de una variable no basica, j tal que cj 0

    biRij

    (Test de la razon mnima)

    El desarrollo anterior asume que existe al menos un Rij > 0. Si no fuera el caso y Rij 0 para todo i,tenemos:

    xB(i)() =bi Rij 0, 0, i= 1, . . . , m

    Al mismo tiempo, cj

  • 5/26/2018 Algoritmo Simplex 2014

    7/16

    4.5 El Algoritmo Simplex

    0. Comenzar con una base factibleB = [AB(1), . . . , AB(m)].

    1. Las variables basicas actuales son xB =b= B1by el valor objetivo es z = cTB b.

    2. Calcular cj =cj cTBB

    1Rj ,j IR.

    IF cj 0, j IR, x es optimo, STOP.

    ELSE, elegir j tal que cj 0

    biui

    y sea s el ndice donde min se alcanza.

    5. Formar una nueva base reemplazando la columnaAB(s) por la columna Aj.

    6. IR A 1.

    El procedimiento que hemos descrito es el famoso Algoritmo SIMPLEX. Fue desarrallado durante la decada

    de 1940 por George Dantzig (se publico en 1947), mientras este trabajaba para la Fuerza Aerea de los EstadosUnidos durante la Segunda Guerra Mundial. Revisaremos ahora algunas propiedades de este algoritmo yotra forma de trabajar la operatoria.

    4.6 Es correcto el algoritmo?

    Nuestro desarrollo en realidad solo ha mostrado que podemos movernos desde un vertice a otro de mejorvalor, si se cumplen las condiciones descritas en la deducci on. Pero, que nos garantiza que efectivamentellegaremos a una solucion optima?. Notemos lo siguiente: hemos dicho que el procedimiento va de un verticea otro del poliedro, mejorando el valor de la funcion objetivo. Si es as, solo nos basta observar que cualquierpoliedro solo tiene un numero finito de vertices. Luego, el procedimiento tiene que terminar en la solucionoptima o en la condicion que detecta no acotamiento. Luego, el SIMPLEX encontrara una solucion optimadel problema.El argumento anterior tiene, eso s, un problema. Supongamos que en la etapa de seleccion de la variableque deja la base (el test de razon mnima), que pasa si hay un empate en los ndices? En este caso, seselecciona cualquiera, pero seran dos las variables basicas que alcanzan valor = 0 simultaneamente. Solouna deja de ser basica y la otra sigue como basica, pero con valor = 0. En la proxima iteracion, el testde razon mnima apuntara a esa variable y el valor de sera cero. Es decir, no nos moveremos de vertice,aunque s cambiara la base. Este fenomeno se conoce como degenerancia y lo abordaremos en mas detalleun poc mas adelante. Mientras, asumiremos que el algoritmo efectivamente es capaz de mejorar la funcionobjetivo y, de ese modo, tenemos una forma de encontrar un vertice optimo o, demostrar que el problemaes no acotado.

    4.7 El Tableau

    Ha sido tradicional representar las operaciones del algoritmo SIMPLEX mediante una tabla ordenada, que seconoce como TABLEAU. Esta estructura permite resolver un problema a mano y la explicaremos ahora.Es importante hacer notar, eso s, que en un computador el SIMPLEX funciona en la forma matricial queexplicamos antes en detalle. La estructura del tableau es la siguiente:

    B1A B1b

    c cTBB1b

    7

  • 5/26/2018 Algoritmo Simplex 2014

    8/16

    Veamos ahora en detalle un ejemplo. Tomaremos el mismo problema que ya hemos usado. Este es:

    min x1 3x2s.t. x1 +4x2 +x3 +0 +0 = 100

    x1 +2x2 +0 +x4 +0 = 60x1 +x2 +0 +0 +x5 = 50

    xj 0 j = 1, . . . , 5

    El tableau inicial para este problema es:

    Hemos destacado aqu que la ultima fila (antes de los nombres) es la de costos reducidos. Se muestra tambienque en la ultima columna esta el lado derecho, y ah aparecera sucesivamente el vector b. Por ultimo, en elrecuadro de abajo a la derecha, aparecera el valor actual de la funcion objetivo.Las variables basicas iniciales son x3, x4 y x5. Dada la forma del problema, los costos reducidos inicialesson los costos originales, y no son 0, luego elegimos una negativo. Vamos a elejir el mas negativo;esto es razonable ya que garantiza una rapida tasa de cambio de la funcion objetivo, al menos en formainstantanea. Elejimos, entonces la variable x2 para entrar a la base. Ahora tenemos que determinar quevariable sale de la base y hacemos esto calculando:

    = mini:Rij>0

    biRij

    = min

    100

    4 ,

    60

    2 ,

    50

    1

    =

    100

    4 = 25

    que se alcanza en la fila 1. Luego,s=1. El elemento de la tabla en la fila 1 y la columna 2 lo llamaremospivote:

    Ahora lo que tenemos que hacer es reemplazar la columna de x3 por la columna de x2 en la base y resolverpara las demas variables. Esto es equivalente a que deben quedar despejadas las variables x2, x4 y x5.La forma de hacer esto es pivoteando en la posici on del pivote, esto es similar a resolver un sistema deecuaciones donde la incognita es x2 y queremos despejarla en la primera fila. primero dividimos la fila 1 por4:

    8

  • 5/26/2018 Algoritmo Simplex 2014

    9/16

    Luego restamos multiplos de la fila 1 a las otras filas, incluyendo la fila de los costos, para dejar el despeje:

    Ahora las variables basicas sonx2,x4 y x5, que son precisamente las que estan despejadas en el Tableu. Losvalores de estas variables se pueden leer en el lado derecho, la columna de b, que observamos que cambiode valores al hacer el pivote. Tambien notamos que en la fila de los costos han aparecido los nuevos costosreducidos. Podemos ver que este Tableu todava tiene costos reducidos negaticos, as que aun no estamos enel optimo.Elejimos la variable x1 para entrar a la base y la variables que sale se determina de:

    = mini:Rij>0

    biRij

    = min

    25

    1/4,

    10

    1/2,

    25

    3/4

    =

    10

    1/2= 20

    el que se alcanza en la fila 2. Luego, s=2. El elemento en la fila 2 y columna 1 es el nuevo pivote:

    La variable x4 tiene que salir de la base. Es decir, reemplazamos la columna de x4 por la columna de x1 yresolvemos para las otras variables. Esto se hace nuevamente pivoteando:

    9

  • 5/26/2018 Algoritmo Simplex 2014

    10/16

    Ahora todos los costos reducidos son 0, as que hemos llegado a la solucion optima del problema. Esta es[20, 20, 0, 0, 10] la cual, como sabemos, corresponde al punto A en nuestro ejemplo. De hecho, comenzamosen el punto D, nos movimos al E y terminamos en el A, como muestra la figura:

    Figure 3: El camino seguido por las iteraciones del SIMPLEX

    Podemos ver, de este modo, como el Tableau proporciona una forma practica para resolver un problemaa mano. Debe recordarse, eso s, que ningun problema real se resolvera con el Tableau, se usaran lasoperaciones matriciales que mostramos antes.

    Ejercicio: Repita el ejemplo anterior, paso a paso, usando la operatoria algebraica-matricial del metodosSIMPLEX. En cada paso, compruebe se va obteniendo exactamente lo mismo que en el Tableau. Entreotras, cosas, trate de identificar donde estan en el Tableau los valores que usamos como paso intermedioal calcular los costos reducidos.

    4.8 Seleccion del costo reducido negativo

    En nuestro ejemplo, seleccionamos el costo reducido mas negativo para entrar a la base. Esto se justificobajo el argumento de que eso representa la mejor tasa instantanea de mejora. Sin embargo, el verdaderomejoramiento depende no solo de cj sino tambien de . Luego, puede ocurrir que si se selecciona otro costonegativo, el avance neto sea mayor. El software sofisticado de Programacion Lineal tiene mecanismos paraestimar mejor cual debe ser el costo reducido negativo seleccionado, pero paa efectos de la operacion simpleseguiremos usando el mas negativo, a menos que se especifique lo contrario.

    4.9 Mutiples soluciones

    Un problema lineal puede tener multiples soluciones. La situacion que debe darse es la que muestra la figura,en donde la funcion objetivo es paralela una cara del poliedro que contiene soluciones optimas:

    10

  • 5/26/2018 Algoritmo Simplex 2014

    11/16

    Figure 4: Geometra de la existencia de multiples soluciones

    Ahora, como se puede detectar eso en el SIMPLEX?. Consideremos el siguiente ejemplo:

    max 2x1+x2s.a. x1+ 3x2 9

    2x1+x2 6x1, x2 0

    El problema en forma estandar considera las variables de holgura x3 y x4:

    max 2x1+x2s.a. x1+ 3x2+x3 = 9

    2x1+x2+x4 = 6x1, x2 0

    El tableau inicial es

    y al resolver con el SIMPLEX se obtiene (observar que es un problema de maximizaci on, as que l optimalidadimplica tener c ):

    Notemos que la variablex2, pese a no ser basica tiene costo reducido = 0. Que pasara si forzamos la entradade x2 a la base?. Esto se puede hacer siguiendo el metodo de pivoteo del SIMPLEX, es decir haciendo unaiteracion dummy, cuyo impacto en la funcion objetivo sera nulo, pero despejara la variable x2 en formaexplcita llevandonos a otra base del problema. El resultado es el siguiente:

    11

  • 5/26/2018 Algoritmo Simplex 2014

    12/16

    Notese que cambio la base y tambien el vertice solucion, pero el valor objetivo es todava el mismo. Lo quehicimos fue calcular otra solucion alternativa. Tenemos dos soluciones: (3, 0) y (1.2857, 3.4286), cualquierpunto combinacion convexa de esos dos es tambien solucion optima del problema.En resumen, la existencia en el optimo de un costo reducidos nulo en las variables no basicas es un indicadorde la posible existencia de soluciones alternativas. Es importante hacer nota aca que, si bien en el ejemplo,era obvio que la funcion objetivo era paralela a una de las restricciones, eso por s solo no implica multiplessoluciones ya que esa restriccion tal vez podra no siquiera ser activa en el optimo.

    4.10 Fase I: Como encontrar una solucion inicial

    En los ejemplos que hemos resuelto hasta ahora siempre ha habido una soluci on inicial a la vista. Estasuele corresponder a las variables de holgura del problema. Sin embargo, en la mayora de las veces, no entodas las restricciones se agregan variables de holgura y no siempre es f acil identificar una solucion inicial.Consideremos, por ejemplo, el siguiente problema:

    min 2x1 2x2s.a. x1+ 3x2+x3 = 9

    2x1 x2+x4 = 6x1, x2, x3, x4 0

    Este problema ya esta en forma estandar, as que no hay variables de holgura que agregar y no se ve demanera obvia ninguna identidad de la cual despejar variables basicas factibles.Lo que vamos a hacer es construir un problema auxiliar, que lo llamaremos problema de Fase I, el cual

    permitira determinar una SBF inicial o, en su defecto, permitira concluir que el problema es infactible.Especficamente, supongamos que tenemos el problema:

    min cTxs.a. Ax= b

    x 0

    Vamos a suponer que b 0. Notemos que siempre podemos lograr esto multiplicando alguna fila por 1 sies necesario. Vamos a consider el siguiente problema:

    w= min y1+ +yms.t. Ax+Iy= b

    x 0, y 0

    (dondeIes la identidad de m m.) O, en forma mas extendida:

    min y1+ +yms.t. a11x1+. . . a1nxn +y1 =b1

    a21x1+. . . a2nxn +y2 =b2...

    ......

    . . . ...

    am1x1+. . . amnxn +ym =bmxj 0 j = 1, . . . , nyi 0 i= 1, . . . , m

    12

  • 5/26/2018 Algoritmo Simplex 2014

    13/16

    Las variables y1, . . . , ym se llaman variables artificiales. Notese la logica detras de este problema: estamosminimizando la suma de las variables artificiales. Si estas son llevadas a valor = 0, entonces en la solucionfinal de este problema habremos encontrado una SBF solo con las variables originales x. Esa sera la SBF departida para optimizar la funcion objetivo original.En nuestro ejemplo, el problema de Fase I es:

    min y1+y2s.a. x1+ 3x2+x3+y1 = 9

    2x1+x2 x4+y2 = 6x1, x2, x3, x4, y1, y2 0

    Si aplicamos el algoritmo SIMPLEX para resolver este problema obtenemos el siguiente tableau final:

    Podemos ver que las variables basicas son x1 y x2, que son parte de las variables originales del problema.Las variables artificiales son no basicas. Lo que hacemos ahora es eliminar del tableau las columnas corre-spondientes a las variables artificiales y reemplazar en la fila de los costos la funci on objetivo original, paraobtener:

    Este tableau tiene todava que ser tranformado para que los cotos reducidos de las variables basicas seanigual a 0, (esto se llama forma canonica). Para hacer esto, restamos multiplos adecuados de las filas 1 y2 a la fila de costos para obtener:

    Este es el Tableau que usaremos para continuar con las iteraciones hasta el optimo.

    Ejemplo:

    Consideremos ahora el siguiente problema:

    13

  • 5/26/2018 Algoritmo Simplex 2014

    14/16

    min 2x1 2x2s.a. 2x1+ 2x2 9

    x1+ 2x2 8x1, x2 0

    Para llevar este problema al formato adecuado, vamos primero a transformar las restricciones en igualdades.Para eso vamos a sumar una variable de holgura a la primera restriccion y restar otra a la segunda para

    obtener:

    min 2x1 2x2s.a. 2x1+ 2x2+x3 = 9

    x1+ 2x2 x4 = 8x1, x2, x3, x4 0

    Como podemos ver, si bien parece haber algo como una identidad en las columnas 3 y 4, no se despeja avalores factibles ya que dara un x4 negativo. Vamos a formar entonces el problema de Fase I:

    min y1+y2s.a. 2x1+ 2x2+x3+y1 = 9

    x1+ 2x2 x4+y2 = 8x1, x2, x3, x4, y1, y2 0

    El tableau final de este problema es:

    Podemos observar en este Tableau que la base optima final del problema de Fase I esta formada por las

    variables x2 e y1, con y1 = 2. Este es el valor optimo y significa que no existe ninguna combinacion devalores de las variables que de un valor mejor a 2. Con esto podemos concluir que el problema es infactible.Este resultado es importante, es precisamente el problema de Fase I el que nos permitira determinar si unproblema de Programacion Lineal es factible o no y, en caso de serlo, nos determinar a un base inicial factiblepara continuar la optimizacion. La continuacion de la Optimizacion es lo que se conoce como FASE II. Hayvarios otros resultados posibles de la Fase I, los cuales revisaremos en ejercicios.

    4.11 El algoritmo SIMPLEX Completo

    las etapas totales del procedimiento son las siguientes:

    Se reduce el problema a forma estandar

    Si no hay una base factible inicial evidente, se formula el problema de FASE I Se resuelve el problema de FASE I

    El resultado de FASE I puede ser:

    El problema es infactible

    El problema es factible, tiene filas redundantes y se eliminan

    El problema es factible y tengo una base inicial

    14

  • 5/26/2018 Algoritmo Simplex 2014

    15/16

    Si el problema es factible, se rescata la base factible inicial y se inicia la FASE II:

    Se resuelve el problema hasta que:

    Se llegue a una solucion optima

    Se detecte que el problema es no acotado

    4.12 Degenerancia

    Nuestro argumento de terminacion del algoritmo que dimos en 4.6 depende de un supuesto: que en cadaiteracion nos movemos a una solucion mejor. Esto, en realidad, puede no siempre ser as. La razon laexplicamos ahora.Supongamos que al hacer el Test de la Razon mnima hay un empate al calcular:

    = mini:Rij>0

    biRij

    Especficamente, supongamos que hay dos ndices en donde se alcanza el mnimo: i1 e i2. En ese caso, almovernos la cantidad, las dos variables basicasxB(i1)y xB(i2)se haran cero simultaneamente. El algoritmoestablece que una de ellas (cualquiera) y solo una de ellas deja de ser basica. Entonces, nuestra nueva solucionbasica sera tal que una de las variables basicas tiene valor = 0.

    Definition 4.2 Una solucion basica factiblexB =B1bse dice degenerada si alguna de sus componentes

    tiene valor= 0.

    Entonces, cuando ocurre empate al hacer el Test de la Razon mnima, al inicio de la siguiente iteraciontendremos una solucion degenerada. Esto significa que, suponiendo que el problema no sea no acotado,cuando calculemos nuevamente

    = mini:Rij>0

    biRij

    uno de los bi sera igual a 0 y, por lo tanto, = 0. Luego, en esa siguiente iteracion, el cambio en la funcionobjetivo sera igual a cj = 0. Luego, no nos moveremos y la funcion objetivo no cambiara. Sin emabrgo, shabra un cambio de base. Esto significa que estamos en presencia de un vertice que esta descrito por masde una base. Esta situacion puede darse cuando hay sobredeterminacion del vertice. Si estamos en Rn, se

    necesitann hiperplanos o restricciones activas para determinar un punto. Si hay mas de n restricciones quesean activas en el vertice, entonces puede darse el fenomeno de degenerancia.

    4.13 Degenerancia y la terminacion del SIMPLEX

    En presencia de degenerancia, entonces, puede ocurrir que no avancemos. Idealmente, despues de algunasiteraciones puede que finalmente salgamos del punto actual, pero eso podra no ser siempre as. En sulibro Linear Programming and Extensions, Dantizig[1963] mostro el siguiente ejemplo de problema lineal:

    min 34x1+ 150x2 150

    x3s.a. 14x1 60x2

    125x3+ 9x4 0

    12

    x1 90x2 150

    x3+ 3x4 0x3 1

    La secuencia de Tableau se muestra a continuacion (La figura esta tomada de Dantzig[1963], los puntosindican las variables basicas y las flechas indican las que han sido seleccionadas para entrar a la base):

    15

  • 5/26/2018 Algoritmo Simplex 2014

    16/16

    En el ultimo Tableau, entra x6 y sale x4. La nueva base es{5, 6, 7} que es la misma del inicio. Luego, lasiteraciones se repetiran igual y ciclaremos permanentemente. Este fenomeno se llama ciclaje.Puede ser evitado el ciclaje? La respuesta es s, existen reglas alternativas que hacen que el algoritmoprogrese siempre de una SBF a otra mejor. Por ejemplo:

    Regla de Bland: Elegir siempre el costo reducido negativo con menor ndice y, si hay empate en el Testde la Razon Mnima, tambien elegir el menor ndice.

    Esta regla, increblemente simple, evita el ciclaje. Existen algunas otras reglas que tambien pueden usarsepara evitar la ocurrencia de esto. Si bien el fenomeno de ciclaje puede ser muy poco frecuente en problemasreales, la degenerancia s se presenta y genera, en el mejor de los casos, tiempo malgastado en operacionesinnecesarias. De ah la importancia real de estas reglas.

    16