Está en la página 1de 53

30 de Octubre de 2017

RESOLUCIÓN DE
MODELOS DE
PROGRAMACIÓN LINEAL
(Parte 2)
Ingeniería Industrial – Ingeniería Informática
Facultad de Ingeniería
Universidad Católica Andrés Bello
Programación Lineal José Luis Quintero 1
30 de Octubre de 2017

MECÁNICA DEL
MÉTODO SIMPLEX
Caso Sencillo
Postgrado de Investigación de Operaciones
Facultad de Ingeniería
Universidad Central de Venezuela
Programación Lineal José Luis Quintero 2
Puntos a tratar

1. Introducción
2. Caso sencillo
3. Ejemplo ilustrativo 1
4. Ejemplo ilustrativo 2
Programación Lineal José Luis Quintero 3
Introducción
• En esta sesión se resolverá un problema de PL
aplicando el Método Simplex (MS). No se
justificará la validez matemática de las
operaciones a realizar: se explorará y se
manejará la mecánica del método apelando a la
lógica y al sentido común.

• Primero se revisará el caso sencillo (cuando se


dispone de una solución inicial de arranque),
luego se introduce la técnica de las variables
artificiales para resolver el problema con el MS
(cuando no se dispone de una solución de
arranque).
Programación Lineal José Luis Quintero
Introducción

• Se trabajará los dos métodos más conocidos para


eliminar las variables artificiales: el método de las
dos fases y el de penalización.

Programación Lineal José Luis Quintero


Puntos a tratar

1. Introducción
2. Caso sencillo
3. Ejemplo ilustrativo 1
4. Ejemplo ilustrativo 2
Programación Lineal José Luis Quintero 6
Caso sencillo

• Sea un problema de PL
min z = cT°x s.a.: Ax ≤ b, x ≥ 0
donde:
– x es el vector de variables tal que xT =(x1,x2,...,xn)
– cT es el vector de costos (c1,c2,...,cn)
– A es la matriz tecnológica
 a1,1 a1,2 ... a1,n 
 
 a 2,1 a 2,2 ... a 2,n 
 . . ... . 
 
 ... am,n 
 am,1 am,2
– b es el vector de recursos tal que bT = (b1,b2,...,bm)

Programación Lineal José Luis Quintero


Caso sencillo
• El cual se expresa en forma equivalente por:
n n
min z = ∑c xj=1
j j s.a.
∑a i, j x j ≤ bi para i = 1,2,..., m
j =1

x j ≥ 0 para j = 1,2,..., n

• A continuación se tratará la resolución de este


problema mediante un ejemplo del caso sencillo:
cuando el vector de recursos posee componentes
no negativas y todas las restricciones son de ≤. Si el
problema puede ser expresado así, se dispone de
una solución inicial de arranque para comenzar a
iterar.

Programación Lineal José Luis Quintero


Puntos a tratar

1. Introducción
2. Caso sencillo
3. Ejemplo ilustrativo 1
4. Ejemplo ilustrativo 2
Programación Lineal José Luis Quintero 9
Ejemplo 1

max z = 2x 1 + x 2
s.a.:
8
2x 1 + x 2 ≤ 80
3
3x 1 + x 2 ≤ 60
5
2x 1 + x 2 ≤ 55
3
x 1, x 2 ≥ 0

Programación Lineal José Luis Quintero


Ejemplo 1

• Se tratará el caso de minimización sabiendo que:


n  n 
max ∑ c j x j = min  -
 ∑ c jx j 

j=1  j=1 
y el modelo en forma equivalente es:
min z = −2x 1 − x 2
s.a.:
8
2x 1 + x 2 ≤ 80
3
3x 1 + x 2 ≤ 60
5
2x 1 + x 2 ≤ 55
3
x 1, x 2 ≥ 0

Programación Lineal José Luis Quintero


Ejemplo 1

• La primera etapa consiste en construir un tablero que


represente el problema, para ello:

– Las inecuaciones del modelo deben ser todas del


tipo ≤ y tener lado derecho no negativo. Esa es la
situación del ejemplo. Se puede dar el caso que se
encuentren restricciones del tipo ≥ con el LD
negativo, en cuyo se multiplica por -1 la inecuación
y se logra la configuración deseada. De no ser así, el
problema no corresponde al caso sencillo que se
está estudiando y se resolverá por mecanismos que
se verán luego.

Programación Lineal José Luis Quintero


Ejemplo 1

– Se procede luego a llevar las inecuaciones a


ecuaciones. Se introduce en cada inecuación del
tipo ≤ una nueva variable, llamada holgura. Estas
variables de holgura, que se denotan por si (i=1,2 y 3)
deben ser no negativas (s por slack). Ellas
absorberán las diferencias entre los dos miembros de
las inecuaciones.

Programación Lineal José Luis Quintero


Ejemplo 1

– Se obtiene así el modelo equivalente:


min z = −2x 1 − x 2 s.a.

8
2x1 + x2 + s1 = 80
3
3x1 + x2 + s2 = 60
5
2x1 + x2 + s3 = 55
3
x1 ≥ 0
x2 ≥ 0
s1 ≥ 0
s2 ≥ 0
s3 ≥ 0
Para aplicar el Simplex se hará caso omiso de las
restricciones de no negatividad, pues el método se
encargará de conservar esa condición.
Programación Lineal José Luis Quintero
Ejemplo 1

– Se pasan todos los términos de la función objetivo al


miembro izquierdo de forma tal que el coeficiente
de z sea la unidad: z + 2x 1 + x 2 = 0
y se llega al sistema de 4 ecuaciones con 6
incógnitas:

z + 2x 1 + x2 = 0
8
2x 1 + x2 + s1 = 80
3
3x 1 + x2 + s2 = 60
5
2x 1 + x2 + s3 = 55
3

Programación Lineal José Luis Quintero


Ejemplo 1
– Se construye un tablero similar al siguiente:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55
– En este tablero es fácil identificar varias zonas, las
cuales reflejan los elementos constitutivos del modelo:
La zona dedicada a identificar las columnas:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1
La zona correspondiente a la matriz tecnológica:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

La zona correspondiente al vector de recursos:


z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1

La zona de los coeficientes de la función objetivo:


z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55
La zona que corresponde al valor del objetivo:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Las zonas del vector de recursos y del objetivo se


suelen agrupar bajo el nombre de lado derecho (LD).

Programación Lineal José Luis Quintero


Ejemplo 1

– Por construcción se tiene que:


• En la matriz tecnológica se identifican las columnas
de una matriz identidad:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55
• En la fila de la función objetivo y sobre las columnas
de la identidad, hay sólo valores nulos:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1

• Los valores del vector de recursos son todos no


negativos:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Por cumplirse estas tres propiedades, se dice


que el tablero está en forma canónica (fc).
Si una sola de estas tres propiedades
no se cumple, el tablero no está en
forma canónica.

Programación Lineal José Luis Quintero


Ejemplo 1

• La fc tablero brinda beneficios importantes:

– Permite leer directamente del tablero una solución


básica factible y el valor de la función objetivo.
– Permite identificar si la solución actual es óptima.
– Permite identificar las variables que pueden cambiar
de valor para mejorar el objetivo.

A continuación se revisarán esos beneficios en el


ejemplo actual.

Programación Lineal José Luis Quintero


Ejemplo 1
– La fc permite leer directamente del tablero una solución
básica factible y el valor de la función objetivo, ya que las
variables ubicadas en las columnas de la identidad, toman
el valor del LD ubicado en la fila donde está el 1. Así se
tiene que s1 = 80, s2 = 60 y s3 = 55.
z x1 x2 s1 s2 s3 LD
1 2 1 ⇓0 0 0 0
0 2 8/3 ⇒ 0⇒
1⇒ ⇒ 0⇒
⇒ 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

z x1 x2 s1 s2 s3 LD
1 2 1 0 ⇓0 0 0
0 2 8/3 1 ⇓0 0 80
0 3 1 0 ⇒ 0⇒
1⇒ ⇒ 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1

z x1 x2 s1 s2 s3 LD
1 2 1 0 0 ⇓0 0
0 2 8/3 1 0 ⇓0 80
0 3 1 0 1 ⇓0 60
0 2 5/3 0 0 ⇒ 55
1⇒
Por tanto las variables ubicadas en las columnas restantes,
toman el valor 0, así se tiene que x1 = x2 = 0.

El valor de la función objetivo, se lee directamente en el LD


como se indica; así se tiene que z = 0 .
z x1 x2 s1 s2 s3 LD
⇓1⇒ ⇒ 1⇒
⇒ 2⇒ ⇒ 0⇒
⇒ 0⇒
⇒ 0⇒
⇒ 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1

– Se puede verificar en el modelo que x1 = x2 = 0, s1 = 80,


s2 = 60 y s3 = 55, es una solución básica factible y además
que z = 0. Para aclarar esta primera propiedad de la forma
canónica, basta retomar el sistema de 4 ecuaciones con 6
incógnitas que está representado:
z + 2x 1 + x2 = 0
8
2x 1 + x2 + s1 = 80
3
3x 1 + x2 + s2 = 60
5
2x 1 + x2 + s3 = 55
3

Si x1 y x2 toman el valor 0, el sistema queda entonces:


z = 0
s1 = 80
s2 = 60
s3 = 55
Programación Lineal José Luis Quintero
Ejemplo 1

– Gráficamente se puede apreciar que la solución


actual corresponde al origen de coordenadas:
x2

(0,0)

z=0
x1

Programación Lineal José Luis Quintero


Ejemplo 1
– La fc permite saber si una solución es óptima: Si los coeficientes
no nulos ubicados en la fila de la función objetivo son todos
negativos, la solución actual es óptima (estamos minimizando). En
este caso se tiene:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

por tanto esta solución no es óptima. Para verificarlo basta extraer


del tablero la expresión de z:
z + 2x 1 + x 2 = 0
es decir z = –2x1 – x2 luego, si x1 ó x2 aumentan, el valor del
objetivo mejora. Es claro que se puede buscar otra solución que
mejore el valor de la función objetivo.

Programación Lineal José Luis Quintero


Ejemplo 1

– La forma canónica permite identificar las variables que pueden


cambiar de valor para mejorar el objetivo: Si algún coeficiente
de la fila del objetivo es positivo, la solución actual puede
mejorar. En este caso:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

tanto x1 como x2 mejoran el valor del objetivo, no obstante, la


mejora inmediata será mayor, si se hace aumentar la variable
con el coeficiente de mayor magnitud. Recuerde que en este
caso z = –2x1 – x2 por tanto un aumento unitario x1 en produce
una mejora inmediata mayor en el valor de la función objetivo
que un aumento unitario en x2 .

Programación Lineal José Luis Quintero


Ejemplo 1

– En definitiva, al construir el tablero en forma canónica


del problema, estamos ante la situación siguiente:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

y se sabe que:
– La solución x = (0, 0, 80, 60, 55) es factible y
arroja un valor del objetivo z = 0.
– La solución x = (0, 0, 80, 60, 55) es factible mas
no óptima.

Programación Lineal José Luis Quintero


Ejemplo 1

– Luego se procede a iterar, es decir, a buscar otro punto extremo


que mejore la función objetivo. El criterio del Simplex es
seleccionar aquél que, en forma inmediata, mejora la mayor
cantidad. En la primera iteración de este caso, esto se logra si el
valor de x1 aumenta.
– Para cambiar la solución actual por otra que mejore el objetivo,
hacemos aparecer en la columna de x1 una columna de la matriz
identidad. Para ello acudimos al pivotamiento. Por el momento se
sabe que se debe pivotear en la columna de x1. la columna
sombreada deberá contener un 1 y el resto serán 0.

z ⇓x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 3 1 0 1 0 60
0 2 5/3 0 0 1 55

Programación Lineal José Luis Quintero


Ejemplo 1

– La pregunta obligada es: ¿en cuál fila se hará aparecer el 1?


La interpretación del significado de los elementos del tablero
puede ayudar:

• Recuerde que un elemento cualquiera del vector de


recursos representa, en principio, un recurso disponible.
Así, los valores 80, 60 y 55, representan respectivamente,
la cantidad de malta, cebada y levadura disponibles.
• Un elemento de la matriz tecnológica representa la
variación del recurso respectivo, por una variación
unitaria en el nivel de la variable de decisión asocia-da.
Así, los valores 2, 3 y 2 sombreados en el tablero anterior,
representan respectivamente, la malta, cebada y
levadura que se consumen, por cada unidad adicional
que se produzca de x1.

Programación Lineal José Luis Quintero


Ejemplo 1

– El crecimiento de x1 está entonces limitado por alguno de


los cocientes:
80 60 55
= 40, = 20 y = 27,5
2 3 2

es decir, con la cantidad de malta disponible se pueden


producir hasta 40 unidades de x1, la cebada alcanza para
producir hasta 20 unidades y, la levadura alcanza hasta
producir hasta 27,5 unidades. Es claro que el crecimiento de
x1 está limitado al menor de estos cocientes, es decir, a 20
unidades, pues de lo contrario se violaría uno o más de los
otros requerimientos.
– Esta prueba se conoce como Test de la Razón Mínima (TRM)
y sirve para seleccionar la fila donde se debe pivotear y
cual es la restricción (o las restricciones) que primero frenan
el crecimiento de x1.
Programación Lineal José Luis Quintero
Ejemplo 1
x2

(0,30)

S
Cebada
Levadura
Malta

(0,0) Crecimiento de x 1
(20,0) (27.5,0) (40,0) x1
z=0

El TRM solamente se efectúa sobre coeficientes positivos.


El TRM garantiza la no negatividad de las variables.
¿Por qué?

Programación Lineal José Luis Quintero


Ejemplo 1

– Con el pivotamiento se debe hacer aparecer una


columna de la identidad, es decir, un 1 en la posición
sombreada y 0 en cada elemento del resto de esa
columna:
z ⇓x1 x2 s1 s2 s3 LD TRM
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80 80/2=40
0 3 1 0 1 0 60 ⇐60/3=20
0 2 5/3 0 0 1 55 55/2=27,5

– La operación de pivotamiento es sencilla y se basa en


las operaciones elementales sobre matrices
estudiadas en Álgebra Lineal.
Programación Lineal José Luis Quintero
Ejemplo 1

– En el ejemplo se procede como sigue:


• Se hace aparecer un 1 en la posición pivotal, para lo
cual se divide toda la fila pivote entre el valor del
elemento pivote:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 2 8/3 1 0 0 80
0 1 1/3 0 1/3 0 20
0 2 5/3 0 0 1 55

• Se hace aparecer un 0 en las demás filas de la columna


pivote, para ello basta restar a cada una de las filas en
cuestión, k veces la fila pivote, siendo k el valor
ubicado donde se desea hacer aparecer el 0.

Programación Lineal José Luis Quintero


Ejemplo 1
• Por ejemplo, para la fila de la primera restricción se le
resta a esa fila 2 veces la fila pivote:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 0 2 1 -2/3 0 40
0 1 1/3 0 1/3 0 20
0 2 5/3 0 0 1 55
• Para hacer aparecer el 0 de la tercera fila, se le resta
a esa fila 2 veces la fila pivote:
z x1 x2 s1 s2 s3 LD
1 2 1 0 0 0 0
0 0 2 1 -2/3 0 40
0 1 1/3 0 1/3 0 20
0 0 1 0 -2/3 1 15

Programación Lineal José Luis Quintero


Ejemplo 1

• Análogamente para la fila de la función objetivo, a la


cual se le resta 2 veces la fila pivote:
z x1 x2 s1 s2 s3 LD
1 0 1/3 0 -2/3 0 -40
0 0 2 1 -2/3 0 40
0 1 1/3 0 1/3 0 20
0 0 1 0 -2/3 1 15

– El pivotamiento conserva la fc: en la zona de las


restricciones se identifica una matriz identidad, en la fila
del objetivo sobre las columnas de la identidad, hay sólo
valores nulos y los valores del vector de recursos son todos
no negativos. Por tanto se conservan los beneficios de la
fc, en particular se lee una nueva solución factible x1=20,
x2=0, s1=40, s2=0 y s3=15 y el valor del objetivo, dado por z
= -40.
Programación Lineal José Luis Quintero
Ejemplo 1

– Si se extrae el sistema de 4 ecuaciones con 6


incógnitas que está representado en el tablero, se
tiene: 1 2
z + x2 − s2 = − 40
3 3
2
2x 2 + s1 − s2 = 40
3
1 1
x1 + x2 + s2 = 20
3 3
2
x2 − s2 + s3 = 15
3
Si x2 y s2 valen 0, el sistema queda:
z = − 40
s1 = 40
x1 = 20
s3 = 15
Programación Lineal José Luis Quintero
Ejemplo 1

– Lo que ha ocurrido al pivotear es un cambio de punto


extremo, es decir, de solución básica factible:
x2

z=0 S
z=-40
(0,0)
(20,0)
x1

Programación Lineal José Luis Quintero


Ejemplo 1

– Al revisar el último tablero se aprecia que la solución


actual no es óptima, pues existe una variable de
coeficiente positivo en la fila del objetivo, en este caso x2:
z x1 ⇓ x2 s1 s2 s3 LD
1 0 1/3 0 -2/3 0 -40
0 0 2 1 -2/3 0 40
0 1 1/3 0 1/3 0 20
0 0 1 0 -2/3 1 15

– Al efectuar el TRM se tiene la posición donde pivotear:


z x1 ⇓ x2 s1 s2 s3 LD TRM
1 0 1/3 0 -2/3 0 -40
0 0 2 1 -2/3 0 40 40/2=20
0 1 1/3 0 1/3 0 20 20/(1/3)=60
0 0 1 0 -2/3 1 15 ⇐15/1=15
Programación Lineal José Luis Quintero
Ejemplo 1

– Al hacerlo se llega a:
z x1 x2 s1 s2 s3 LD
1 0 0 0 -4/9 -1/3 -45
0 0 0 1 2/3 -2 10
0 1 0 0 5/9 -1/3 15
0 0 1 0 -2/3 1 15

– De este tablero se puede leer directamente una


nueva solución básica factible:
x1 = 15, x2 = 15, s1 = 10, s2 = 0 y s3 = 0
y el valor de la función objetivo vendrá dado por
z = - 45. Este valor representa una mejoría respecto
al anterior.

Programación Lineal José Luis Quintero


Ejemplo 1

– Como los coeficientes de la función objetivo son todos


negativos, se ha alcanzado la solución óptima. El valor
del objetivo en el problema original es z = 45,
recuerde que se está minimizando y el problema
original es de maximización.
– Al extraer del tablero el sistema de 4 ecuaciones con
6 incógnitas representado en él, se tiene:
4 1
z − s2 − s3 = − 45
9 3
2
s1 + s2 − 2s 3 = 10
3
5 1
x1 + s2 − s3 = 15
9 3
2
x2 − s2 + s3 = 15
3

Programación Lineal José Luis Quintero


Ejemplo 1

– Si las incógnitas s2 y s3 toman el valor 0, el sistema


queda entonces:

z = − 45
s1 = 10
x1 = 15
x2 = 15

y los valores de las soluciones son los que podemos


leer en el tablero.

Programación Lineal José Luis Quintero


Ejemplo 1

• Gráficamente, los cambios de soluciones que han


ocurrido a lo largo del proceso se resumen así:
x2

z*=-45
x*= (15,15)

z=0 S
(0,0)
(20,0)
x1
z=-40

Programación Lineal José Luis Quintero


Resumen

• Resumen:
Si todas las restricciones de un problema de PL son del tipo ≤,
entonces se dispone de una solución inicial que permite
arrancar el Simplex. Dicho punto extremo es el origen
x = (0, 0, ..., 0) del espacio de opciones generado por todas
las variables de decisión. Para resolver el problema proceda
de la siguiente manera:
1 Asegúrese que el LD de cada restricción sea positivo y
que todas las restricciones sean del tipo ≤. De no ser así, el
problema no corresponde al caso sencillo que estamos
trabajando en esta sección.
2 Si el problema es de maximización, transfórmelo en uno
de minimización mediante:
n  n 
max ∑ c j x j = min  - ∑ c j x j 
j=1  j=1 
Programación Lineal José Luis Quintero
Resumen

3 Lleve las inecuaciones a ecuaciones, para ello agregue


una variable de holgura no negativa al miembro izquierdo
de cada una de las restricciones del tipo ≤. No tome en
cuenta las restricciones de no negatividad (recuerde que
de conservar la no negatividad se encarga el TRM).
4 Pase todos los términos de la función objetivo a un solo
miembro, de forma tal que el coeficiente de z sea la
unidad z - f(x) = 0.
5 Construya un tablero de la forma:
z x1 ... xn s1 ... sm LD
1 -c1 ... -cn 0 ... 0 0
0 a1,1 ... a1,n 1 ... 0 b1
... ... ... ... ... ... ... ...
0 am,1 ... am,n 0 ... 1 bm

Programación Lineal José Luis Quintero


Resumen
donde:

z: valor de la función objetivo


x1,x2,...,xn: variables de decisión
s1,s2,...,sm : variables de holgura introducidas
c1,c2,...,cn: coeficientes de costo originales
b1,b2,...,bm: recursos originales (bi≥ 0, i=1,2,...,m)
ai,j (i= 1,2,...,m y j = 1,2,...,n): coeficientes tecnológicos

Este tablero debe estar en forma canónica, es decir, en la


zona de las restricciones se identifican las columnas de la
matriz identidad de orden m, en la fila de la función
objetivo, sobre las columnas de la identidad hay sólo
valores nulos y los valores del LD son no negativos.
Programación Lineal José Luis Quintero
Resumen

6 Si la solución que se lee en el tablero es óptima, detenga el


proceso. La solución óptima se identifica cuando los
coeficientes no nulos de la función objetivo son todos
negativos (estamos en el caso de minimización). Si se
trataba originalmente de un problema de maximización
recuerde cambiar el signo del valor del objetivo.

7 Si la solución actual no es óptima:


• Determine la columna pivote escogiendo la columna de
la variable cuyo coeficiente en la función objetivo sea el
mayor elemento positivo. Sea xj la variable asociada a la
columna seleccionada.
• Determine la fila pivote, para lo cual efectúe el Test de la
Razón Mínima. El TRM se efectúa dividiendo el valor de
cada recurso bi entre los coeficientes positivos de la
columna pivote de xj . La fila pivote será la que arroje la
razón mínima.
Programación Lineal José Luis Quintero
Resumen

• En caso de empate de dos o más filas en el TRM,


escoja como fila pivote cualquiera de las que
resultaren empatadas.
• Si no se puede efectuar el TRM, porque los coeficientes
que hacen de divisores son no positivos, se tiene una
solución ilimitada, en cuyo caso detenga el proceso
indicando esta situación.
8 Efectúe el pivotamiento y vaya al paso 6.

Programación Lineal José Luis Quintero


Puntos a tratar

1. Introducción
2. Caso sencillo
3. Ejemplo ilustrativo 1
4. Ejemplo ilustrativo 2
Programación Lineal José Luis Quintero 49
Ejemplo 2
• El caso de solución ilimitada:
max z = 2x 1 + x 2

s.a.:
− x1 + x 2 ≤ 2
1 7
− x1 + x 2 ≤
4 2
x 1, x 2 ≥ 0
que al llevarlo al formato de minimización queda:

s.a.: min z = −2x1 − x 2

− x1 + x 2 ≤ 2
1 7
− x1 + x 2 ≤
4 2
x 1, x 2 ≥ 0
Programación Lineal José Luis Quintero
Ejemplo 2
 El tablero correspondiente es:
z ⇓ x1 x2 s1 s2 LD
1 2 1 0 0 0
0 -1 1 1 0 2
0 -1/4 1 0 1 7/2

 No se puede realizar el TRM en la columna de x1 (la


variable candidata a aumentar de valor) pues las
entradas correspondientes son negativas. De acuerdo a
la interpretación dada a los coeficientes tecnológicos,
ello implica que un aumento unitario de x1 produce los
recursos asociados en vez de consumirlos, luego ningún
recurso es limitante para el mejoramiento del objetivo.
 Se trata pues de un caso de solución ilimitada, es decir,
el objetivo mejorará tanto como se quiera z = ∞.

Programación Lineal José Luis Quintero


Ejemplo 2
 Gráficamente puede observarse que nada detiene el
aumento de x1, luego el objetivo, por este solo concepto
z → ∞ mientras x1 → ∞ :

x2

Dirección de
aumento S
irresticto de la
función
objetivo
z=0 z=2x1

(0,0) x1

Programación Lineal José Luis Quintero


Pensamiento de hoy

“La experiencia es directamente


proporcional al número de
errores cometidos”
Murphy

Programación Lineal José Luis Quintero 53