Sie sind auf Seite 1von 76

UNIVERSIDAD NACIONAL ABIERTA

REA DE MATEMTICA
OPTIMIZACIN (771)
TAREA 2013-1
Jos G. Gmez A., C.I. 12030397
C.L. CARABOBO

ASESOR: Prof. Gilberto Noguera (Nivel Central)


ndice

I Pregunta 1 2
1. Aspectos Matemticos Bsicos 2
1.1. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3. Ecuaciones Lineales Simultneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Conjuntos Convexos y Funciones Convexas . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Mtodo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1. Puntos Extremos y Optimalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.2. Soluciones Bsicas Factibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.3. Mejorando una Solucin Bsica Factible . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6. Mtodo Simplex Revisado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7. Mtodo Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.8. Anlisis de Sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.8.1. Cambio en el Vector de Costo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.8.2. Cambio en el Vector del Lado Derecho b (RHS) . . . . . . . . . . . . . . . . . . . . 27
1.8.3. Anlisis de Sensibilidad con la Tabla Simplex . . . . . . . . . . . . . . . . . . . . . 27
1.8.4. Anlisis de Sensibilidad Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.8.5. Anlisis de Sensibilidad Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.9. Programacin Lineal Entera (PLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

II Pregunta 2 34
2. Desarrollo de Algoritmos en Scilab 34
2.1. Mtodo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2. Mtodo Simplex Revisado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3. Mtodo Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4. Anlisis de Sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.5. Programacin Lineal Entera (PLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

III Pregunta 3 42
3. Problemas Resueltos 42
3.1. Problemas Resueltos con el Algoritmo Simplex . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2. Problemas Resueltos con el Algoritmo Simplex Revisado . . . . . . . . . . . . . . . . . . . 45
3.3. Problemas Resueltos con el Algoritmo Simplex Dual . . . . . . . . . . . . . . . . . . . . . 48
3.4. Anlisis de Sensibilidad (Problemas Resueltos) . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5. Problemas Resueltos de Programacin Lineal Entera (PLE) . . . . . . . . . . . . . . . . . 65

IV Pregunta 4 68
4. Manual de Uso de las Rutinas Programadas 68
4.1. Librera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2. Rutina simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3. Rutina revisado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4. Rutina dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.5. Rutina asccv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.6. Rutina entero2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

1
Parte I
Pregunta 1
1. Aspectos Matemticos Bsicos
En esta seccin se tratan los fundamentos tericos de la Programacin Lineal. La Programacin Li-
neal (PL) est comprendida dentro de un campo ms amplio de la matemtica aplicada conocido como
Investigacin de Operaciones (IO). Una definicin de IO que la describe de manera muy acertada es la
aparece en la pgina 20 de [3] y que se transcribe a continuacin: La Investigacin de Operaciones es la
aplicacin, por grupos interdisciplinarios, del mtodo cientfico a problemas relacionados con el control de
las organizaciones o sistemas (hombre-mquina) a fin de que se produzcan soluciones que mejor sirvan a
los objetivos de toda la organizacin. De esta definicin se concluye que la naturaleza de los problemas
a tratar es tal que hace necesario recurrir a prcticas que son propias de la ciencia, as como la conver-
gencia de diversa formacin terica sobre un mismo hecho. Las personas que hacen trabajo en el mundo
de la IO se agrupan en dos grandes bandos, los que se dedican a producir algoritmos, y aquellos que
despus de recibir una exposicin terica superficial sobre los temas pertinentes aprenden a emplearlos
en aplicaciones prcticas. La llegada y modernizacin de las computadoras ha librado al hombre de tener
que emplearse en el desarrollo mecnico de algoritmos. Existe una larga lista de paquetes de software
(ver [4]) con los que se aplica una basta coleccin de algoritmos para la resolucin de una multitud de
problemas que surgen en la vida real, sin embargo, la parte del trabajo interdisciplinario que corresponde
a los matemticos consiste en comprender los fundamentos con el fin de producir soluciones a proble-
mas que no hayan sido consideradas con anterioridad, o mejorar las existentes. Es caracterstica de los
modelos matemticos de los problemas de IO, la existencia de una (o mltiples) funcin objetivo que se
desea optimizar en presencia de restricciones sobre las variables. La PL se ocupa de los problemas en los
cuales tanto la funcin objetivo como las restricciones son de tipo lineal. sta seccin est dirigida ms
al porqu, que al cmo, de los algoritmos.

A continuacin se exponen los resultados bsicos del lgebra lineal y el anlisis convexo que sustentan
el mtodo simplex para resolver problemas de PL.

1.1. Vectores
 fila o columna de n nmeros. Por ejemplo, a =(1, 2, 3, 1, 4) es un
Un n vector es un arreglo (o n-tupla)
1
vector fila de tamao n = 5, y a = es un vector columna de tamao n = 2. La figura 1 muestra
1
algunos vectores en el espacio 2-dimensional. Cada vector se representa geomtricamente mediante un
punto o mediante un lnea recta desde el origen al punto, con una flecha en el extremo final de la lnea.

Vectores Especiales

Vector Cero

El vector cero, denotado mediante 0, es un vector con todas las componentes iguales a cero. Este vector
tambin es llamado el origen.

i-simo Vector Unitario

Este es un vector con componentes cero, que contiene un 1 en la i-sima posicin. Este vector se denota
mediante ei y es a veces llamado el i-simo vector coordenado.
i-sima posicin

ei = (0, 0, . . . , 1, . . . , 0, 0)

2
Figura 1: Algunos ejemplos de vectores

Vector Suma

Este es un vector en el cual cada componente es igual a 1. El vector suma es denotado mediante 1.

Adicin y Multiplicacin de Vectores

Adicin

Dos vectores del mismo tamao pueden ser sumados, donde la suma es realizada componente a compo-
nente. Por ejemplo, sean a1 y a2 los siguientes dos n-vectores:
a1 = (a11 , a21 , . . . , an1 )
a2 = (a12 , a22 , . . . , an2 )
Entonces la adicin de a1 y a2 , denotada mediante a1 + a2 , es el siguiente vector:

a1 + a2 = (a11 + a12 , a21 + a22 , . . . , an1 + an2 )

La operacin de suma vectorial se ilustra en la figura 2. Ntese que a1 + a2 es la diagonal del paralelogramo
de lados a1 y a2 .

Multiplicacin Escalar

La operacin de multiplicacin de un vector a por un escalar k se realiza componente a componente. Si


a =(a1 , a2 , . . . , an ), entonces el vector ka =(ka1 , ka2 , . . . , kan ). Esta operacin se muestra en la figura 3.
Si k > 0, entonces los puntos de ka estn en la misma direccin que a. Contrariamente, si k < 0, entonces
los puntos de ka estn en la direccin opuesta de a.
Producto Interno
Cualesquiera dos n-vectores a y b pueden ser multiplicados. El resultado de esta multiplicacin es un

3
Figura 2: Suma de vectores.

Figura 3: Multiplicacin de Vector por Escalar.

nmero real llamado producto interno de los dos vectores. El producto interno se define como sigue:
n
X
ab = a1 b1 + a2 b2 + + an bn = aj bj
j=1
 
2
Por ejemplo, si a=(1, 1) y a = , entonces ab = 3.
1

Norma de un Vector

Pueden usarse varias normas (medidas de tamao) de un vector. La que se usa en los mtodos de solucin
de programas lineales estudiados en este trabajo es la Norma Euclideana. Esta norma es la raz cuadrada
del producto interno
qP del vector consigo mismo. Es decir, la norma de un vector a, denotada mediante
n 2
k a k, es dada por j=1 aj . Ntese que

k a + b k2 = k a k2 + k b k2 + 2ab

para cualesquiera dos vectores a y b del mismo tamao.

Desigualdad de Schwartz

Dados dos vectores a y b del mismo tamao, se cumple la siguiente desigualdad, llamada la desigualdad
de Schwartz:
| ab | k a kk b k

4
Espacio Euclideano

Un espacio Euclideano n-dimensional, denotado por E n , es la coleccin de todos los vectores de dimen-
sin n. Ya se defini la adicin y multiplicacin por un escalar, de vectores en E n . Tambin, asociado
con cualquier vector en E n est su norma, y asociado con cualesquiera dos vectores a, b E n est su
producto interior ya definido.

Combinacin Lineal
Pk
Un vector b en E n se dice que es una combinacin lineal de a1 , a2 , . . . , ak en E n , si b = j=1 j aj ,
donde 1 , 2 , . . . , k son nmeros reales.

Independencia Lineal

Una coleccin de vectores a1 , a2 , . . . , ak de dimensin n se llama linealmente independiente si


k
X
j aj = 0 implica que j = 0 para j = 1, 2, . . . , k
j=1

Por ejemplo, sean a1 = (1, 2) y a2 = (1, 1). Estos dos vectores son linealmente independientes porque
1 (1, 2) + 2 (1, 1) = (0, 0) implica que 1 = 2 = 0.
Una coleccin de vectores se llama linealmente dependiente si no son linealmente independientes. Por
lo
Pk tanto, a1 , a2 , . . . , ak son linealmente dependientes si existen 1 , 2 , . . . , k , no todos cero, tales que
j=1 j aj = 0. Por ejemplo, sean a1 = (1, 2, 3), a2 = (1, 1, 1) y a3 = (0, 3, 2). Estos tres vectores son
linealmente dependientes porque 1 a1 + 2 a2 + 3 a3 = 0 para 1 = 2 = 1 y 3 = 1.

Conjunto Abarcador

Una coleccin de vectores a1 , a2 , . . . , ak in E n se dice que abarca E n si cualquier vector en E n puede


n
escribirse como una combinacin lineal Pkde a1 , a2 , . . . , ak . Es decir, dado b E , se pueden encontrar
escalares 1 , 2 , . . . , k tales que b = j=1 j aj .
Para ilustrar, sea n = 2 y considrese a1 = (1, 0), a2 = (1, 3), y a3 = (2, 1). Los vectores a1 , a2 , a3
abarcan E 2 puesto que cualquier vector b E 2 se puede representar como una combinacin lineal de
estos vectores. Por ejemplo, b =(b1 , b2 ) se puede representar como 1 a1 + 2 a2 + 3 a3 donde 1 =
b1 + 13 b2 , 2 = 13 b2 , y 3 = 0. En este caso la representacin no es nica. Se obtiene otra representacin
haciendo 1 = b1 2b2 , 2 = 0 y 3 = b2 .

Bases

Una coleccin de vectores a1 , a2 , . . . , ak forma una base de E n si se cumplen las siguientes condiciones:
1. a1 , a2 , . . . , ak abarcan E n .

2. Si cualquiera de los vectores es removido, la coleccin de vectores restantes no abarca E n .


Se puede demostrar que las condiciones dadas son equivalentes a los siguientes dos requerimientos: k = n
y a1 ,
a2 , . .. , an sonlinealmente
 independientes. Para ilustrarlo considrense los siguientes dos vectores:
1 0
a1 = y a2 = en E . Estos dos vectores forman una base de E 2 puesto que k = n = 2, y a1
2
1 1
y a2 son linealmente independientes.
Dada una base de E n formada por los vectores Pn a1 , a2 , . . . , an , cualquier
Pvector b en E n es nicamente
n 0 Pn
representado en trminos de esta base. Si b = j=1 j aj y tambin b = j=1 j aj entonces j=1 (j

5
0 0
j )aj = 0, lo cual implica que j = j para cada j, puesto que de otro modo se violara la independencia
lineal de a1 , a2 , . . . , an .
Dado que una base en E n debe siempre tener n vectores, la dimensin de una base es nica, preci-
samente n. Pero una base no es ella misma nica, puesto que cualquier conjunto de n vectores que sean
linealmente independientes formarn una base.

Reemplazo de un Vector en la Base por Otro Vector

En el mtodo simplex, se generan diferentes bases, donde un vector de la ltima base es reemplazado por
otro vector. Se debe ser cuidadoso en la eleccin de los vectores que entran y salen de la base, porque
de otro modo los nuevos vectores pueden no ser independientes, y por tanto no formarn una base. Para
ilustrar esto, los vectores a1 =(1, 2, 1), a2 =(3, 0, 1) y a3 =(2, 2, 1) son linealmente independientes, y por
tanto forman una base en E 3 . No se puede reemplazar a3 por (2, 2, 0), porque a1 , a2 y (2, 2, 0) son
linealmente dependientes y no forman una base.
Esto hace surgir la siguiente pregunta: Si se tiene una base de E n , cul es la condicin que garantizar
que si un vector aj , de la base, es reemplazado por cualquier otro vector a, el nuevo conjunto de vectores
todava formar una base?
Sean a1 , a2 , . . . , an una base de E n . Se quiere reemplazar aj por a. Puesto que a1 , . . . , an forman una
base, entonces a se puede representar como una combinacin lineal de estos vectores, esto es
n
X
a= i ai
i=1
Pn
Sustituyendo a = i=1 i ai , se obtiene

X n
X
i ai + i ai = 0
i6=j i=1

X
(i + i )ai + j aj = 0
i6=j

Pero puesto que a1 , a2 , . . . , aj , . . . , an son linealmente independientes, entonces j = 0, y i + i =


0 para i 6= j. Dado que
P se ha supuesto que j 6= 0, entonces = 0. Pero esto implica que i = 0 para i 6= j.
En otras palabras, i6=j i ai + a = 0 es nicamente posible si = 0 y i = 0 para i 6= j, y por tanto
a y ai (i 6= j) son linealmente independientes y deben formar una base. De esta discusin es obvio que
la condicin j 6= 0 es suficiente para que el nuevo conjunto de vectores sea linealmente P independiente.
Obviamente la condicin tambin es necesaria, porque si j fuera cero, entonces a i6=j i ai = 0, y por
tanto a, y ai (i 6= j) seran linealmente dependientes.

1.2. Matrices
Una matriz es un arreglo rectangular de nmeros. Si la matriz tiene m filas y n columnas, se llama una
matriz de m n. Ejemplo de matriz 3 2:

1 1
A = 2 2
3 1

La entrada de la matriz en la fila i y la columna j se denota como aij ; por ejemplo, a12 = 1 y a31 = 3.
Una matriz A de m n se puede representar mediante sus columnas o filas. Si se denotan las columnas
de A por a1 , a2 , . . . , an , entonces A = [a1 , a2 , . . . , an ]. Similarmente, A se puede representar como
1
a
a2
A = .

..
am

6
donde a1 , a2 , . . . , am son las filas de A. Ntese que todo vector es una matriz, pero no toda matriz es un
vector.

Suma de Matrices

La suma de dos matrices de la misma dimensin se define componente a componente; esto es, si A y B
son matrices mn, entonces C = A + B se define como cij = aij +bij para i = 1, 2, . . . , m y j = 1, 2, . . . , n.

Multiplicacin por un Escalar

Sean A una matriz m n, y k un escalar. Entonces kA es una matriz m n cuya posicin ij es kaij .

Multiplicacin de Matrices

Sean A una matriz m n, y B una matriz n p. Entonces el producto AB es la matriz C de m p


definida como
n
X
cij = aik bkj , para i = 1, . . . , m, j = 1, . . . , p
k=1

Es decir, la entrada ij de C es determinada como el producto interno de la i-sima fila de A y la j-sima


columna de B. Por ejemplo, sean

1 1 1 5 0
A = 4 2 5 y B = 3 0
2 0 1 1 1

Entonces
1 1 1 5 0 3 1
C = AB = 4 2 5 3 0 = 19 5
2 0 1 1 1 11 1

Se enfatizan los siguientes puntos. Si A es una matriz m n y B es una matriz p q, entonces


1. AB est definida solo si n = p. AB es entonces una matriz m q.
2. BA est definida solo si q = m. BA es entonces una matriz p n.

3. An si AB y BA estn ambos definidos (si m = n = p = q), AB no es necesariamente igual BA.


Ntese que AB en el ejemplo anterior est definido, pero BA no lo est.

Matrices Especiales

MATRIZ CERO

Una matriz m n es llamada matriz cero si cada entrada de la matriz es cero.

MATRIZ IDENTIDAD

Una matriz cuadrada A de n n es llamada matriz identidad, denotada por I (a veces se usa la notacin
In para denotar el tamao), si las entradas en la diagonal son iguales a uno y el resto de las entradas son

7
cero. Ntese que AIn = A y Im A = A para cualquier matriz A de m n.

MATRIZ TRIANGULAR

Una matriz cuadrada A de nn se llama una matriz triangular superior si todos los elementos por debajo
de la diagonal son ceros. De igual manera, una matriz de n n se llama triangular inferior si todos los
elementos por encima de la diagonal son ceros.

Transposicin de Matrices

Dada una matriz m m A con aij en la posicin ij, la tranpuesta de A, denotada por At , es una matriz
n m cuya posicin ij contiene a aji . Es decir, At se forma haciendo que la j-sima columna de A sea
la j-sima fila de At , y que la j-sima fila de A sea la j-sima columna de At . Una matriz cuadrada A
es llamada simtrica si A = At . Se tienen los siguientes resultados:
1. (At )t = A.
2. Si A y B tienen la misma dimensin, entonces (A + B)t = At +Bt .
3. Si AB est definida, entonces (AB)t = Bt At .

Operaciones Matriciales Elementales

Dada una matriz A de m n podemos realizar algunas operaciones elementales de fila y columna. Estas
operaciones son tiles en la solucin de sistemas de ecuaciones lineales y en la bsqueda de la inversa de
una matriz. Una operacin elemental de fila sobre una matriz A es una de las siguientes operaciones:
1. La fila i y la fila j de la matriz A son intercambiadas.
2. La fila i es multiplicada por un escalar no cero k.
3. La fila i es reemplazada por la fila i ms k veces la fila j.
Las operaciones elementales de fila sobre una matriz A son equivalentes a premultiplicar A por una
matriz especfica. Las operaciones elementales de columna se definen de manera similar. Las operaciones
elementales de columna sobre A son equivalentes a postmultiplicar A por una matriz especfica.

Ejemplo:

2 1 1 10
Sea A = 1 2 1 8
1 1 2 2

Realizaremos las siguientes operaciones elementales sobre A. Dividir la fila 1 por 2, sumar la nueva
fila 1 a la fila 2, y restarla de la fila 3. Esto da:
1 1

1 2 2 5

5 3

0 13
2 2

3 3
0 2 2 3
2 3
Ahora, multiplicar la fila fila 2 por 5, multiplicar la nueva fila 2 por 2 y sumar el resultado a la fila 3.
Esto da:
1 12 1

2 5

3 26

0 1
5 5

0 0 24 10
24
5

8
24
A continuacin divir la fila 3 por 10 . Esto da:
1 1

1 2 2 5

3 26

0 1
5 5

0 0 1 2

Ntese que la matriz original A ha sido reducida a travs de operaciones elementales de fila.

Solucin de un Sistema de Ecuaciones Lineales Mediante


Operaciones Elementales de Matriz

Considrese el sistema Ax = b de m ecuaciones en n variables, donde A es una matriz de m n, b es


un m-vector, y x es un n-vector de variables. El siguiente hecho es til en la solucin de este sistema:
Ax = b si y slo si A0 x = b0 , donde (A0 , b0 ) se obtiene de (A, b) mediante un nmero finito de operaciones
elementales de fila. Para ilustrar, considrese el siguiente sistema:

2x1 + x2 + x3 = 10
x1 + 2x2 + x3 = 8
x1 x2 + 2x3 = 2

2 1 1 10
(A, b) = 1 2 1 8
1 1 2 2
Esta matriz fue reducida en el ejemplo anterior usando operaciones elementales de fila a la siguiente

1 21 21 5



0 1 3 26
5 5

0 0 1 2

Por lo tanto x resuelve el sistema original si y slo si resuelve el siguiente sistema

x1 + 12 x2 + 21 x3 = 5

x2 + 53 x3 = 26
5

x3 = 2

Ntese que A0 es triangular superior, y se puede resolver el sistema mediante sustitucin hacia atrs. De
la tercera ecuacin x3 = 2, y de la segunda ecuacin x2 = 4, y de la primera ecuacin x1 = 2. El proceso
de reducir A a una matriz triangular superior con unos en la diagonal se llama Reduccin Gaussiana del
sistema.

Inversin de la Matriz

Sea A una matriz cuadrada n n. Si B es una matriz n n tal que AB = I y BA = I, entonces B se


llama la inversa de A. La matriz inversa, si existe, es nica y se denota mediante A1 . Si A tiene inversa,
A se llama no singular; en caso contrario A se llama singular.

9
CONDICION PARA LA EXISTENCIA DE LA INVERSA

Dada una matriz A de n n, esta tiene inversa, si y slo si, las filas de A son linealmente independientes,
o equivalentemente, las columnas de A son linealmente independientes.

CALCULO DE LA INVERSA

La matriz inversa, si existe, se puede obtener mediante un nmero finito de operaciones elementales
de fila. Esto se puede hacer tomando en cuenta que si una sucesin de operaciones elementales de fila
1
reduce A a la identidad, entonces la misma sucesin de operaciones reducir (A, I) a (I, A ). En efecto,
1
esto es quivalente a premultiplicar el sistema por A . Adems, si (A, B) es reducido a (I, F) mediante
operaciones elementales de fila, entonces F = A1 B.
Con el fin de calcular la inversa, se une en un arreglo la identidad a A. La matriz A es reducida
a la identidad mediante operaciones elementales de fila. Esto resulta en la reduccin de la identidad a
A1 . Por supuesto, si A1 no existe, entonces las operaciones elementales de fila fallarn en producir la
identidad.

Ejemplo

Considrese la siguiente matriz A:



2 1 1
A = 1 2 1
1 1 2
Para encontrar la inversa, se forma la matriz aumentada (A, I). Se reduce la matriz A a la identidad
mediante operaciones elementales de fila. La matriz en el lugar de I es A1 :

2 1 1 1 0 0
(A, I) = 1 2 1 0 1 0
1 1 2 0 0 1
Se divide la primera fila por 2. Se suma la nueva primera fila a la segunda fila y se resta el resultado de
la tercera fila:
1 1 1

1 2 2 2 0 0
5 3 1

0 1 0
2 2 2
3 3 1
0 2 2 2 0 1
Se multiplica la segunda fila por 52 . Se multiplica la nueva segunda fila por 21 y se suma a la primera
fila, luego se multiplica la nueva segunda fila por 32 y se suma a la tercera fila:
1 2
51 0

1 0 5 5
3 1 2

0 1 0
5 5 5
12 1 3
0 0 5 5 5 1
5
Se multiplica la tercera fila por 12 . A continuacin se multiplica la nueva tercera fila por 35 y se suma
a la segunda fila, luego se multiplica la nueva tercera fila por 15 y se suma a la primera fila:
5 3 1

1 0 0 12 12 12
3 3 3

0 1 0
12 12 12
1 3 5
0 0 1 12 12 12

Por lo tanto la inversa de A existe, y es:



5 3 1
A1 = 12
1
3 3 3
1 3 5

10
Los siguientes hechos acerca de la inversin de matrices son tiles:
1 t
1. Si A es no singular, entonces At es no singular, y (At )1 = (A ).
1
2. Si A y B son matrices n n no singulares, entonces AB es no singular, y (AB) = B1 A1 .
3. Una matriz triangular (inferior o superior) con elementos no ceros en la diagonal tiene inversa. Esto
puede ser establecido tomando en cuenta que tal matriz se puede reducir a la identidad mediante
un nmero finito de operaciones elementales de fila.
4. Sea la matriz A particionada de la siguiente manera, donde D es no singular
 
I C
A=
0 D

Entonces A es no singular, y
I CD1
 
A1 =
0 D1

El Rango de una Matriz

Sea A una matriz m n. El rango fila de la matriz es igual al mximo nmero de filas linealmente
independientes de A. El rango columna de A es el mximo nmero de columnas linealmente independien-
tes de A. Se puede demostrar que el rango fila de una matriz es siempre igual a su rango columna, y por
tanto el rango de la matriz es igual al nmero mximo de filas (o columnas) linealmente independientes
de A. Por lo tanto es claro que rango(A) mnimo(m, n). Si rango(A) mnimo(m, n), se dice que
A es de rango
  completo. Se puede demostrar que el rango de A es k, si y slo si, A se puede reducir a
Ik Q
a travs de una sucesin finita de operaciones elementales de matriz.
0 0

1.3. Ecuaciones Lineales Simultneas


Considrese el sistema Ax = b y la matriz aumentada (A, b), con m filas y n + 1 columnas. Si el rango de
(A, b) es mayor que el rango de A, entonces b no se puede respresentar como una combinacin lineal de
a1 , a2 , . . . , an y por tanto no hay solucin al sistema Ax = b (y en particular no hay solucin al sistema
Ax = b, x 0).
Ahora supngase que rango(A) =rango(A, b) = k. Despus de posiblemente reacomodar las filas de
(A, b), sea " #
A1 b1
(A, b) =
A2 b2
donde A1 es de k n, b1 es un k-vector, A2 es una matriz de (m k) n, b2 es un (m k)-vector, y
rango(A1 ) =rango(A1 , b1 ) = k.
Ntese que si un vector x satisface A1 x = b1 , entonces automticamente satisface A2 x = b2 . As,
se pueden desechar las restricciones redundantes o dependientes, A2 x = b2 , y mantener las restric-
ciones independientes A1 x = b1 . Puesto que rango(A1 ) = k, se pueden escoger k columnas linealmente
independientes de A1 . Despus de posiblemente reacomodar las columnas de A1 , sea A1 = (B, N), donde
B es una matriz k k no singular, y N es k (n k). Ntese que tal matriz B existe puesto que A1
tiene rango k. Aqu B se llama la matriz bsica (puesto que las columnas de B forman una base de
E k ) y N se llama la matriz no bsica. En conformidad con esto descompngase x en xB xN , donde xB
est compuesto
" de x1 , x2 , . . . , xk y xN est compuesto de xk+1 , . . . , xn . Ahora A1 x = b1 significa que
#
xB
(B, N) = = b1 ; esto es, BxB + NxN = b1 . Dado que B tiene inversa, se puede resolver xB en
xN
trminos de xN premultiplicando por B1 , y se obtiene

xB = B1 b1 B1 NxN

11
En el caso en que k = n, N es vaco, y se tiene una solucin nica al sistema A1 x = b1 , a saber
xB = B1 b1 = A1 1 b1 . Por otra parte, si n > k, entonces asignando valores arbitrarios al vector xN , se
puede resolver" de manera
# nica para xB , mediante la ecuacin xB = B1 b1 B1 NxN , para obtener
xB
una solucin al sistema A1 x = b1 . En este caso se tiene un nmero infinito de soluciones al
xN
sistema A1 x = b1 (y por tanto al sistema Ax = b). Ntese que la nocin de descomponer A1 en B y N
y resolver xB = B1 b1 B1 NxN se puede interpretar como sigue. Se tiene un sistema de k ecuaciones
en n variables. Asignando valores arbitrarios a n k variables, correspondientes a xN , y resolviendo
entonces para el sistema formado por las restantes k ecuaciones en k variables. Esto es hecho de manera
tal que las k ecuaciones en las k variables tengan una solucin nica, y es por eso que se requiere que B
tenga inversa. Tal solucin obtenida haciendo xN = 0 y xB = B1 b1 es llamada una solucin bsica del
sistema A1 x = b1 . A continuacin se resumen los diferentes casos que se pueden presentar:
1. Rango(A, b) > rango(A), y por tanto Ax = b no tiene solucin.
2. Rango(A, b) = rango(A) = k = n, y por tanto existe una solucin nica al sistema Ax = b.

3. Rango(A, b) = rango(A) = k < n, y se tiene un nmero infinito de soluciones al sistema Ax = b.

1.4. Conjuntos Convexos y Funciones Convexas


En este apartado se consideran algunas propiedades bsicas sobre conjuntos convexos, funciones con-
vexas y funciones cncavas.

Conjuntos Convexos

Un conjunto X en E n es llamado un conjunto convexo si dados cualesquiera dos puntos x1 y x2 en X,


entonces x1 + (1 )x2 X para cada [0, 1].
Ntese que x1 + (1 )x2 para en el intervalo [0, 1] representa un punto en el segmento de lnea
que une los puntos x1 y x2 . Cualquier punto de la forma x1 + (1 )x2 donde 0 1, se llama
una combinacin convexa (o promedio pesado) de x1 y x2 . Si (0, 1), entonces la combinacin convexa
es llamada estricta. Por tanto, la convexidad de X se puede interpretar geomtricamente de la siguiente
manera: Para cada par de puntos x1 y x2 en X, el segmento de lnea que los une, o las combinaciones
convexas de los dos puntos, deben pertenecer a X.
La figura 4 muestra un ejemplo de un conjunto convexo y un ejemplo de un conjunto no convexo.
En el ltimo caso se puede ver que no todas las combinaciones convexas de x1 y x2 pertenecen a X. A
continuacin algunos ejemplos de conjuntos convexos:

1. (x1 , x2 ) : x21 + x22 1 .
2. {x : Ax = b}, donde A es una matriz m n y b es un m-vector.

3. {x : Ax = b, x 0}, donde A es una matriz m n y b es un m-vector.

Figura 4: Ejemplo de conjuntos convexos y no convexos.

12
Puntos Extremos

La nocin de puntos extremos desempea un papel especialmente importante en la teora de la progra-


macin lineal. Un punto x en un conjunto convexo X se llama un punto extremo de X, si x no se puede
representar como una combinacin convexa estricta de dos puntos distintos en X. En otras palabras, si
x =x1 + (1 )x2 con (0, 1) y x1 , x2 X, entonces x = x1 = x2 .
La figura 5 muestra algunos ejemplos de puntos extremos y no extremos de un conjunto convexo.
Ntese que x1 es un punto extremo de X mientras que x2 y x3 no lo son.

Figura 5: Puntos extremos y no extremos.

Rayos y Direcciones

Otro ejemplo de conjunto convexo es un rayo. Un rayo es una coleccin de puntos de la forma {x0 + d : 0},
donde d es un vector no cero. Aqu x0 se llama el vrtice del rayo, y d es la direccin del rayo.

Direcciones de un Conjunto Convexo

Dado un conjunto convexo, un vector no cero d se llama una direccin del conjunto, si para cada x0 en el
conjunto, el rayo {x0 + d : 0} tambin pertenece al conjunto. Es claro que si el conjunto es acotado,
entonces no tiene direcciones.
Considrese el conjunto polidrico no vaco X = {x : Ax = b, x 0}. Entonces un vector no cero d
es una direccin de X si y slo si
A(x + d) = b
x + d 0

para cada 0 y cada x X. Puesto que x X, entonces Ax = b y la ecuacin de arriba se reduce a


Ad = 0. Tambin, puesto que x + d tiene que ser no negativo para arbitrariamente grande, entonces
d debe ser no negativo. En resumen, d es una direccin de X si y slo si

d 0, d 6= 0, y Ad = 0

Similarmente, se puede demostrar que d es una direccin del conjunto no vaco X = {x : Ax b, x 0}


si y slo si d 6= 0, d 0 y Ad 0. El conjunto de direcciones forma un conjunto convexo.

DIRECCIONES EXTREMAS DE UN CONJUNTO CONVEXO

La nocin de direcciones extremas es similar a la nocin de puntos extremos. Una direccin extrema de
un conjunto convexo es una direccin del conjunto que no se puede representar como una combinacin
positiva de dos direcciones distintas del conjunto. Dos vectores, d1 y d2 , se dice que son distintos o
no equivalentes si d1 no se puede representar como un mltiplo positivo de d2 . Cualquier rayo que es-
t contenido en el conjunto convexo, y cuya direccin sea una direccin extrema se llama un rayo extremo.

13
Funciones Convexas y Cncavas

Las funciones convexas y cncavas juegan un papel importante en problemas de optimizacin. Estas
funciones surgen de manera natural en problemas de optimizacin lineal cuando se trabaja con anlisis
paramtrico.
Una funcin f del vector (x1 , x2 , . . . , xn ) se dice que es convexa si la siguiente desigualdad se cumple
para cualesquiera dos vectores x1 y x2 :

f (x1 + (1 )x2 ) f (x1 ) + (1 )f (x2 ), para todo [0, 1]

La figura 6a muestra un ejemplo de una funcin convexa. Ntese que la desigualdad anterior se puede
interpretar de la siguiente manera: f (x1 ) + (1 )f (x2 ) donde [0, 1] representa la altura de la
cuerda que une (x1 , f (x1 )) y (x2 , f (x2 )) en el punto x1 + (1 )x2 . Puesto que f (x1 ) + (1 )f (x2 )
f (x1 + (1 )x2 ), entonces la altura de la cuerda es por lo menos tan grande como la altura de la
funcin.

Figura 6: Ejemplos de funciones convexas y cncavas.

Una funcin f es cncava si y slo si f es convexa. Esto se puede establecer de la siguiente manera:

f (x1 + (1 )x2 ) f (x1 ) + (1 )f (x2 ), para todo [0, 1]

para cualesquiera x1 y x2 . La figura 6b muestra un ejemplo de una funcin cncava. Un caso de una
funcin que no es convexa ni cncava se muestra en la figura 6c.

1.5. Mtodo Simplex

1.5.1. Puntos Extremos y Optimalidad


Cuando una solucin ptima de un problema de programacin lineal existe, un punto extremo ptimo
tambin existe. Este hecho siempre es verdadero.

Considrese el siguiente problema de programacin lineal

M inimizar cx
Sujeto a Ax = b
x0

Sean x1 , x2 , . . . , xk los puntos extremos del conjunto restringido, y sean d1 , d2 , . . . , dl las direcciones
extremas del conjunto restringido. Puesto que cualquier punto x tal que Ax = b y x 0 puede ser

14
representado como
k
X l
X
x= j xj + j dj
j=1 j=1

donde
k
X
j = 1
j=1

j 0 j = 1, 2, . . . , k
j 0 j = 1, 2, . . . , l
Por lo tanto el problema de programacin lineal puede ser transformado en un problema en las
variables 1 , 2 , . . . , k , 1 , 2 , . . . , l , resultando el siguiente programa lineal
Pk Pl
M inimizar j=1 (cxj )j + j=1 (cdj )j
Pk
Sujeto a j=1 j = 1
j 0 j = 1, 2, . . . , k
j 0 j = 1, 2, . . . , l

Puesto que los j s pueden ser arbitrariamente grandes, el mnimo es si cdj < 0 para algn j =
1, 2, . . . , l. Si cdj 0 para todo j = 1, 2, . . . , l, entonces el correspondiente j puede ser elegido como
Pk
cero (0). Ahora, con el fin de minimizar j=1 (cxj )j sobre 1 , 2 , . . . , k satisfaciendo j 0 para
Pk
j = 1, 2, . . . , k, y j=1 j = 1, simplemente se busca el mnimo cxj , es decir, cxp , con p = 1, y todos
los otros j s iguales a cero.
En resumen, la solucin ptima de un problema lineal es finita si y slo si cdj 0 para todas
las direcciones extremas. Adems, en este caso, entonces se encuentra el punto mnimo eligiendo el valor
objetivo mnimo entre todos los puntos extremos. Esto muestra que si una solucin ptima existe, debemos
ser capaces de encontrar un punto extremo ptimo. Por supuesto, si el mnimo cxj ocurre en ms de un
ndice, entonces cada punto extremo correspondiente es un punto ptimo, y tambin cada combinacin
convexa de estos puntos es una solucin ptima.

1.5.2. Soluciones Bsicas Factibles


La nocin de punto extremo es una nocin geomtrica, pero se necesita una caracterizacin algebraica
de los puntos extremos antes de poder ser utilizados desde un punto de vista computacional. A continua-
cin se introducen las soluciones bsicas factibles, y se muestra que ellas corresponden a puntos extremos.

Definicin (Soluciones Bsicas Factibles)

Considrese el sistema Ax = b y x 0, donde A es una matriz m n y b es un m-vector. Supngase


que rank(A, b) = rank(A) = m. Despus de posiblemente rearreglar las columnas de A, sea A =
 [A, B]
xB
donde B es una matriz m n invertible y N es una matriz de m (n m). El punto x = , donde
xN

xB = B1 b
xN = 0

es llamado una solucin bsica del sistema. Si xB 0, entonces x es llamada una solucin bsica factible
del sistema. Aqu B es llamada la matriz bsica (o simplemente la base) y N es llamada la matriz no
bsica. Las componentes de xB son llamadas variables bsicas, y las componentes de xN son llamadas
variables no bsicas. Si xB > 0, entonces x es llamada una solucin bsica factible no degenerada, y si por
lo menos una componente de xB es cero (0), entonces x es llamada una solucin bsica factible degenerada.

Correspondencia Entre Soluciones Bsicas Factibles y Puntos Extremos

Ahora se mostrar que la coleccin de soluciones bsicas factibles y la coleccin de puntos extremos son
equivalentes. En otras palabras, un punto es una solucin bsica factible si y slo si es un punto extremo.

15
Puesto que un problema de programacin lineal, con valor ptimo finito, tiene su solucin ptima en un
punto extremo, siempre puede hallarse una solucin bsica factible ptima.
Considrese el siguiente problema
M inimizar cx
Sujeto a Ax = b
x0
donde A es una matriz mn con rank = m. Sea x un punto extremo de la regin factible. Se mostrar que
x es tambin una solucin bsica factible del sistema Ax = b, x 0. Despus de posiblemente reacomodar
las componentes de x y las columnas de A, sean x1 , x2 , . . . , xp valores positivos y xp+1 , . . . , xn iguales a
cero. Primero se mostrar que a1 , a2 , . . . , ap son linealmente independientes. Por contradiccin, si estos
vectores no fueran Pp linealmente independientes entonces deben existir escalares 1 , 2 , . . . , p , no todos
cero, tales que j=1 j aj = 0. A continuacin se exponen dos soluciones factibles distintas, x0 y x00 , tales
que x = 21 x0 + 12 x00 , lo cual viola la asuncin de que x es un punto extremo. Sean x0 y x00 los siguientes
vectores: 
xj + j j = 1, 2, . . . , p
x0j =
0 j = p + 1, . . . , n

xj j j = 1, 2, . . . , p
x00j =
0 j = p + 1, . . . , n
Puesto que xj > 0 para j = 1, 2, . . . , p, entonces independientemente de los valores de 1 , 2 , . . . , p , se
puede elegir > 0 tal que x0j , x00j > 0 para j = 1, 2, . . . , p. Tomando en cuenta que los j s no son todos
cero, se tiene que x0 6= x00 . Adems
p
X
Ax0 = aj x0j
j=1

p
X
= aj (xj + j )
j=1

p
X p
X
= aj xj + aj j
j=1 j=1

= b+0

= b

Similarmente, Ax00 = b. Por lo tanto, x0 y x00 son soluciones factibles distintas, y x = 21 x0 + 12 x00 , lo cual
viola el hecho de que x es un punto extremo. Por tanto, a1 , a2 , . . . , ap son linealmente independientes.
Puesto que A tiene rango completo, se pueden extraer m p vectores de ap+1 , . . . , an los cuales junto
con a1 , . . . , ap forman un conjunto linealmente independiente. Despus de, posiblemente, reacomodar
las columnas, sean estos vectores, ap+1 , . . . , am . Sea B = [a1 , a2 , . . . , ap , ap+1 , . . . , am ]. Ntese que las
columnas de B son linealmente independientes y por lo tanto B es una base. Adems, x puede ser
descompuesto en xB y xN donde xN = 0 y xB =(x1 , x2 , . . . , xp , 0, 0, . . . , 0). Finalmente Ax = b, y por
tanto x es necesariamente una solucin bsica factible.
Recprocamente, supngase que x es una solucin bsica factible del sistema Ax = b, x 0. Se quie-
re demostrar
" # que x es un punto extremo. Sea B la base correspondiente a x y en conformidad sea
xB
x= . Supngase que x =x0 + (1 )x00 , donde 0 < < 1 y x0 y x00 son factibles. Para mostrar
0
" # " #
0 00 0
x0B 00
x00B
que x es un punto extremo, es suficiente mostrar que x = x = x . Sea x = yx = . Ntese
x0N x00N
que x0N 0 y x00N 0. Pero puesto que
" # " # " #
xB x0B x00B
= +(1 ) , 0<<1
0 x0N x00N

16
1
y x0N , x00N 0, entonces x0N = x00N = 0. Ahora b = Ax0 = Bx0B + Nx0N = Bx0B y por tanto x0B = B b.
En otras palabras, x0B = xB , y puesto que x0N = xN = 0, entonces x0 = x. Similarmente x00 = x. Por lo
tanto, x es un punto extremo. Esto muestra que cada solucin bsica factible es un punto extremo y
viceversa.

Existencia de Puntos Extremos (Soluciones Bsicas Factibles)

Se mostrar que cada conjunto polidrico no vaco de la forma X = {x : Ax = b, x 0} tiene por lo


menos una solucin bsica factible. Sin perdida de generalidad, supngase que rango(A) = m y sea x una
solucin bsica factible. Adems supngase que x1 , . . . , xp > 0 y que xp+1 = = xn = 0. Si a1 , . . . , ap
son linealmente independientes, entonces x es una solucin Ppbsica factible. En caso contrario existen
escalares 1 , . . . , p con por lo menos un j positivo tal que j=1 j aj = 0. Considrese el siguiente punto
x0 : (
0
xj j j = 1, . . . , p
xj =
0 j = p + 1, . . . , n
donde
 
xj xk
= Mnimo : j > 0 = >0
j k

Sea j {1, . . . , p}. Si j 0, entonces x0j > 0 puesto que tanto xj como son positivos. Si j > 0,
entonces por la definicin de se tiene que xj /j y por tanto x0j = xj j 0. As x0 0. Adems,
Pp Pp
x0k = 0 y por tanto x0 tiene al menos p1 componentes positivas. Tambin Ax0 = j=1 x0j aj = j=1 (xj
Pp Pp
j )aj = j=1 xj aj j=1 j aj = b 0 = b. En resumen, se ha construido un punto factible x0 (puesto
que Ax0 = b y x0 0) con al menos p 1 componentes positivas. Si las columnas correspondientes a
estas componentes positivas son linealmente independientes, entonces x0 es una solucin bsica factible.
En caso contrario se repite el proceso. Eventualmente se obtendr una solucin bsica factible.
A continuacin se resumen algunos hechos importantes acerca del problema de programacin lineal,
donde A es una matriz m n con rango m.

M inimizar cx
Sujeto a Ax = b
x0

Teorema 1. La coleccin de puntos extremos corresponde a la coleccin de soluciones bsicas factibles,


y ambas colecciones son no vacas, siempre que la regin factible sea no vaca.
Teorema 2. Asumiendo que la regin factible es no vaca, una solucin ptima finita existe si y slo
si cdj 0 para j = 1, . . . , l, donde d1 , . . . , dl son las direcciones extremas de la regin factible. De otro
modo, la solucin ptima es no acotada.

Teorema 3. Si una solucin ptima existe, entonces un punto extremo ptimo (o equivalentemente una
solucin bsica factible ptima) existe.

1.5.3. Mejorando una Solucin Bsica Factible


Dada una solucin bsica factible, se describir un mtodo para obtener una nueva solucin bsica factible
con un mejor valor objetivo. Este es el fundamento del mtodo simplex.
Considrese el siguiente problema de programacin lineal

M inimizar cx
Sujeto a Ax = b
x0

17
!
B1 b
donde A es una matriz mn con rango m. Supngase que se tiene una solucin bsica factible
0
cuyo valor objetivo z0 est dado por
! !
B1 b B1 b
z0 = c = (cB , cN ) = cB B1 b (1)
0 0
!
xB
Ahora sea x = una solucin factible arbitraria. Entonces xB 0, xN 0, y b = Ax = BxB + NxN .
xN
Multiplicando por B1 y reacomodando trminos, se tiene
xB = B1 b B1 NxN
X
= B1 b B1 aj xj (2)
jR

donde R es el conjunto actual de ndices asociados a las variables no bsicas. Tomando en cuenta las
ecuaciones (1) y (2), y haciendo que z denote la funcin objetivo en x, se tiene
z = cx
= cB xB + cN xN

X X
= cB B1 b B1 aj xj + cj x j
jR jR
X
= z0 (zj cj )xj (3)
jR

donde zj = cB B1 aj para cada variable no bsica. La ecuacin (3) puede servir de gua en el proceso de
mejora de la solucin bsica factible actual. Puesto que se quiere minimizar z, sera ventajoso incrementar
xj (de su nivel actual de cero) siempre que zj cj > 0. Se adopta la siguiente regla. Fijar cada variable
no bsica xj a cero, excepto una variable no bsica xk con un valor positivo de zk ck (zk ck es el ms
positivo zj cj ). De la ecuacin (3), el nuevo valor objetivo z es dado por
z = z0 (zk ck )xk (4)
Puesto que zk ck > 0, sera conveniente incrementar xk tanto como sea posible. Como xk se incre-
menta, las variables bsicas actuales se deben modificar de acuerdo a la ecuacin (2), y en consecuencia
1
xB = B1 b B1 ak xk = b yk xk , donde yk = B1 ak y b = B b. Denotando las componentes de xB
y b mediante xB1 , xB2 , . . . , xBm y b1 , b2 , . . . , bm , la ecuacin vectorial anterior se escribe como:

x B1 b1 y1k
xB2 b2 y2k
.. .. ..

. . .
xBr = br yrk xk (5)


. . .
.. .. ..
xBm bm ymk

Si yik 0, entonces xBi crece tanto como crezca xk y as xBi sigue siendo no negativa. Si yik > 0, entonces
xBi decrecer tanto como decrezca xk . Con el fin de satisfacer la no negatividad, xk es incrementada hasta
el punto en el cual una variable bsica xBr se hace cero. Examinando la ecuacin (5), queda claro que la
primera variable que se hace cero corresponde al mnimo de bi /yik para yik positivo. Ms precisamente,
 
br bi
= Mnimo : yik > 0 = xk (6)
yrk 1im yik

En ausencia de degeneracin br > 0, y por tanto xk = br /yrk > 0. De la ecuacin (4) y del hecho que
zk ck > 0, se tiene que z < z0 , y la funcin objetivo estrictamente mejora. Como xk se incrementa

18
desde el valor 0 al valor br /yrk , se obtiene una nueva solucin bsica factible. Sustituyendo xk = br /yrk
en la ecuacin (5), se tiene el siguiente punto:
yik
xBi = bi br , i = 1, 2, . . . , m
yrk

br
xk = (7)
yrk
xj = 0, j 6= Bi , k
De la ecuacin (7), xBr = 0, y por tanto, a lo sumo m variables son positivas. Las columnas correspondien-
tes son aB1 , aB2 , . . . , aBr1 , ak , aBr+1 , . . . , aBm . Ntese que estas columnas son linealmente independientes
puesto que yrk 6= 0 (Si aB1 , . . . , aBr , . . . , aBm son linealmente independientes, y si ak reemplaza a aBr ,
entonces las nuevas columnas son linealmente independientes si y slo si yrk 6= 0). En consecuencia, el
punto dado por la ecuacin (7) es una solucin bsica factible.
En resumen, se ha descrito un procedimiento que se mueve desde una solucin bsica factible a otra
solucin bsica factible. Esto se hace mediante el incremento del valor de una variable no bsica xk con
valor positivo de zk ck y ajustando en consecuencia, los valores de las variables bsicas actuales. En el
proceso, la variable xBr se hace cero. Se dice entonces que la variable xk entra a la base y que la variable
xBr deja la base. En ausencia de degeneracin (valor cero de alguna variable bsica actual) el valor de
la funcin objetivo estrictamente decrece y por tanto los puntos generados son distintos. Puesto que hay
slo un nmero finito de soluciones bsicas factibles, el procedimiento termina en un nmero finito de
pasos.

Algoritmo Simplex

El esquema general del algoritmo simplex es el siguiente (Problema de Minimizacin):

Paso de Inicializacin

Seleccionar una solucin bsica factible con base B.

Paso Principal
1. Resolver el sistema BxB = b (con solucin nica xB = B1 b = b). Sea xB = b, xN = 0, y z =
cB xB .
2. Resolver el sistema wB = cB (con solucin nica w = cB B1 ). Calcular zj cj = waj cj para
todas las variables no bsicas. Sea
zk ck = M a
ximo zj cj
jR

donde R es el actual conjunto de ndices asociados con las variables no bsicas. Si zk ck 0,


entonces parar con la solucin bsica factible actual como una solucin ptima. En caso contrario
ir al paso 3.
3. Resolver el sistema Byk = ak (con solucin nica yk = B1 ak ). Si yk 0, entonces parar con la
conclusin de que la solucin ptima es no acotada a lo largo del rayo
    
b yk
+ xk : xk 0
0 ek
donde ek es un n m vector cuyas componentes son cero, excepto la k-sima posicin que es igual
a 1. Si yk  0, ir al paso 4.
4. Aqu xk entra a la base y la variable xBr deja la base, donde el ndice r es determinado usando la
siguiente prueba de la mnima razn:
 
br bi
= Mnimo : yik > 0
yrk 16i6m yik

19
Se actualiza la base B donde ak (k-sima columna de la matriz base B) reemplaza a aBr (Br -sima
columna de la matriz base B), el conjunto de ndices R y se repite el paso 1.

1.6. Mtodo Simplex Revisado


El mtodo simplex revisado es un procedimiento sistemtico para implementar los pasos del mtodo
simplex en un arreglo ms pequeo, esto ahorra espacio de almacenamiento. Suponga que tenemos una
solucin bsica factible con base B y base inversa B1 (Mtodo Simplex - Problema de Minimizacin).
Se construye el siguiente arreglo donde w = cB B1 y b = B1 b

BASE INVERSA RHS


w cB b
B1 b
Ntese que la columna del lado derecho denota los valores de la funcin objetivo y las variables bsicas.
Puesto que w es conocido, el paso 2 en el esquema general del mtodo simplex:
Calcular w = cB B1 . Para cada variable no bsica, calcular zj cj = cB B1 aj cj . Sea
zk ck = M a
ximo zj cj . Si zk ck 0, entonces parar; la solucin actual es ptima. De
otro modo ir al paso 3.
puede ser realizado fuera de la tabla con el fin de determinar si se detiene el proceso o se introduce una
nueva variable en la base. Supngase que zk ck > 0. Usando B1 podemos computar yk = B1 ak . Si 
zk ck
yk 0, se detiene el proceso con una solucin ptima no acotada. En caso contrario la columna
yk
es insertada a la derecha del arreglo anterior, llevando a la siguiente tabla
BASE INVERSA RHS xk
w cB b zk ck
b1 y1k
b2 y2k
.. ..
. .
B1
br yrk
.. ..
. .
bm ymk

El ndice r del paso 3 puede ahora ser calculado por la usual prueba de la mnima razn. Ms importante,
pivoteando en yrk se obtienen los nuevos valores de w, B1 , b y cB b, y a continuacin el proceso se
repite.
El mtodo simplex revisado sigue exactamente los mismos pasos del mtodo simplex, con la excepcin
de que nicamente se presenta una parte de la tabla y otra informacin es generada slo cuando se requiere.

1.7. Mtodo Simplex Dual


Asociado con cada problema de programacin lineal hay otro problema de programacin lineal lla-
mado el dual. El problema lineal dual posee propiedades importantes relativas al programa lineal original
(primal). Hay dos fomas (definiciones) importantes de la dualidad: la forma cannica de la dualidad y la
forma estndar de la dualidad. Estas dos formas son completamente equivalentes.

Forma Cannica del Problema Dual

Supngase que el programa lineal primal est dado en la forma:

P : M inimizar cx
Sujeto a Ax b
x0

20
Entonces el programa lineal dual est definido por:
D : M aximizar wb
Sujeto a wA c
w0
Ntese que hay exctamente una variable dual por cada restriccin primal y exctamente una restric-
cin dual por cada variable primal.
En la definicin cannica de la dualidad es importante para el problema P (primal) tener para la
Minimizacin de un objetivo, todas las restricciones del tipo mayor o igual que y todas las variables
no negativas. En teora, para aplicar la definicin cannica de la dualidad se debe primero convertir
el programa lineal primal al formato anterior, sin embargo en la prctica es posible escribir el problema
dual inmediatamente a partir del primal.

Forma Estndar del Problema Dual

Otra definicin equivalente de dualidad aplica cuando las restricciones son igualdades. Suponga que
el programa lineal primal est dado en la forma:
P : M inimizar cx
Sujeto a Ax = b
x0
Entonces el programa lineal dual est definido por:
D : M aximizar wb
Sujeto a wA c
w no restringida
Dada una de las definiciones, la cannica o la estndar, se puede demostrar que la otra definicin es
vlida. Por ejemplo, supngase que aceptamos la forma estndar como definicin y deseamos demostrar
que la forma cannica es correcta. Aadiendo las variables de holgura (xs ) a la forma cannica de un
programa lineal, podemos aplicar la forma estndar de la dualidad para obtener el problema dual.
P: Minimizar cx D: Maximizar wb
Sujeto a Ax Ixs = b Sujeto a wA c
x, xs 0 wI 0
w no restringida
Pero puesto que wI 0 es lo mismo que w 0, obtenemos la forma cannica del problema dual.

Relacin Entre los Valores Objetivo (Primal-Dual)

La definicin precedente del problema dual conduce a relaciones importantes entre los programas
lineales primal y dual.

Considrese la forma cannica de la dualidad y sean x0 y w0 soluciones factibles a los programas


primal y dual respectivamente. Entonces Ax0 b, x0 0, w0 A c y w0 0. Multiplicando Ax0 b
por la izquierda, por w0 0, y w0 A c por la derecha, por x0 0, obtenemos
cx0 w0 Ax0 w0 b
Este resultado es el siguiente:
Lema 1. El valor de la funcin objetivo para cualquier solucin factible del problema de minimizacin, es
siempre mayor o igual que el valor de la funcin objetivo para cualquier solucin factible del problema de
maximizacin. En particular, el valor objetivo de cualquier solucin factible del problema de minimizacin
da una cota superior para el valor objetivo ptimo del problema de maximizacin. Similarmente, el valor
objetivo de cualquier solucin factible del problema de maximizacin es una cota inferior para el objetivo
ptimo del problema de minimizacin.

21
Como ejemplo de la aplicacin de este lema considrese el siguiente programa lineal y su dual:

P : M inimizar 6x1 + 8x2


Sujeto a 3x1 + x2 4
5x1 + 2x2 7
x1 , x2 0

D : M aximizar 4w1 + 7w2


Sujeto a 3w1 + 5w2 6
w1 + 2w2 8
w1 , w2 0

Supngase que se eligen las soluciones factibles primal y dual x0 =( 57 , 0) y w0 =(2, 0). Entonces cx0 =
42
5 = 8.4 y w0 b = 8. As la solucin ptima para calquiera de los problemas tiene valor objetivo entre 8
y 8.4. Esto nos permite detener un proceso de solucin para un programa lineal con una solucin ptima
cercana.

Los siguientes corolarios son consecuencias inmediatas del Lema precedente.


Corolario 1. Si x0 y w0 son soluciones factibles a los problemas primal y dual tales que cx0 = w0 b,
entonces x0 y w0 son soluciones ptimas a sus respectivos problemas.
Corolario 2. Si alguno de los problemas tiene un valor objetivo no acotado, entonces el otro problema
posee solucin no factible.

Este corolario indica que la no acotabilidad en uno de los problemas implica la infactibilidad en el
otro problema.

Dualidad y las Condiciones de Optimalidad de Kuhn-Tucker

Las condiciones de optimalidad de Kuhn-Tucker para un programa lineal establecen que una condicin
necesaria y suficiente para que x sea un punto ptimo para el programa lineal: Minimizar cx sujeto a
Ax b, x 0 es que exista un vector w tal que:
1. Ax b, x 0

2. w A c, w 0
3. w (Ax b) = 0
(c w A)x = 0
La condicin 1 simplemente requiere que el punto ptimo x debe ser factible al primal. La condicin
2 indica que el vector w debe ser un punto factible para el problema dual. De la condicin 3, tenemos
que cx = w b. Por lo tanto w debe ser una solucin ptima para el problema dual. Las condiciones de
optimalidad de Kuhn-Tucker para el problema dual implican la existencia de una solucin factible primal
cuyo valor objetivo es igual al valor objetivo ptimo del dual. Esto conduce al siguiente lema.
Lema 2. Si uno de los problemas posee una solucin ptima, entonces ambos problemas poseen soluciones
ptimas y los dos valores objetivos ptimos son iguales.

Es posible ver cmo las condiciones de optimalidad de Kuhn-Tucker dan origen de manera natural a
la definicin del problema dual. En lugar de resolver directamente para el valor objetivo ptimo x del
problema primal, se puede razonablemente elegir buscar en los valores de w que satisfagan la condicin 2
dada arriba. Sabiendo que cualquier punto factible w0 (condicin 2) satisface w0 b cx y que el ptimo
w satisface w b = cx , esto conduce de forma natural a la maximizacin de la forma lineal wb sobre
todos los valores factibles de w que satisfagan la condicin 2.

Combinando lo resultados de los lemas y corolarios precedentes obtenemos el siguiente

22
Teorema 4 (Teorema Fundamental de la Dualidad). Considerando los problemas de programacin lineal
primal y dual, exctamente una de las siguientes sentencias es verdadera:
1. Ambos poseen soluciones ptimas x y w con cx = w b.

2. Uno de los problemas tiene valor objetivo no acotado, en cuyo caso el otro problema deber ser
infactible.
3. Ambos problemas son infactibles.

De este teorema se desprende que la dualidad no es completamente simtrica. Lo mejor que se puede
decir es (P = Primal, D = Dual, OPTIMO significa valor objetivo ptimo finito y NO ACOTADO sig-
nifica valor objetivo ptimo no acotado):

P OPTIMO D OPTIMO
P NO ACOTADO D INFACTIBLE
D NO ACOTADO P INFACTIBLE
P INFACTIBLE D NO ACOTADO O INFACTIBLE
D INFACTIBLE P NO ACOTADO O INFACTIBLE

Holgura Complementaria

Sean x y w cualquier par de soluciones ptimas a los problemas primal y dual en forma cannica
respectivamente. Entonces
cx w Ax w b
Pero cx = w b puesto que cx denota el valor objetivo ptimo del primal y w b denota el valor objetivo
ptimo del dual y los valores objetivos ptimos de un problema y de su dual son iguales. Por tanto

cx = w Ax = w b

Esto da w (Ax b) = 0 y (c w A)x = 0. Puesto que w 0 y Ax b 0, entonces w (Ax b) =


0 implica que wi (ai x bi ) = 0 para i = 1, . . . , m. Similarmente (c w A)x = 0 implica que
(cj w aj )xj = 0 para j = 1, . . . , n.

Tenemos as el siguiente teorema.


Teorema 5 (Teorema Dbil de Holgura Complementaria). Si x y w son cualesquiera puntos ptimos
para los problemas primal y dual en la forma cannica, entonces

(cj w aj )xj = 0, j = 1, . . . , n

y
wi (ai x bi ) = 0, i = 1, . . . , m

Este es un teorema muy importante relativo a los problemas primal y dual. Indica que por lo menos
uno de los trminos en cada expresin dada arriba debe ser cero. En particular

xj > 0 w aj = cj

w aj < cj xj = 0
wi >0 ai x = bi
i
a x > bi wi = 0

El teorema dbil de holgura complementaria puede tambin ser escrito como sigue: en la optimalidad Si
una variable en uno de lo problemas (primal o dual) es positiva, entonces la restriccin correspondiente

23
en el otro problema debe ser estrecha (ser una igualdad), y Si una restriccin en uno de los problemas
no es estrecha, entonces la variable correspondiente en el otro problema debe ser cero.
Sean xn+i = ai x bi 0, i = 1, . . . , m las m variables de holgura en el problema primal, y sean
wm+j = cj waj 0, j = 1, . . . , n las n variables de holgura en el problema dual. Entonces se pueden
reescribir las condiciones de holgura complementaria de la siguiente manera:

xj wm+j

= 0, j = 1, . . . , n

wi xn+i = 0, i = 1, . . . , m
Esto relaciona las variables en uno de los problemas (primal o dual) a las variables de holgura en el
otro problema. Debe observarse que si x y w son factibles a sus respectivos problemas y satisfacen las
condicones de holgura complementaria, entonces son ptimos.

Interpretacin de la Dualidad sobre la Tabla Simplex Primal

Considrese el siguiente problema de programacin lineal:

M inimizar cx
Sujeto a Ax b
x0

Sea B una base no necesariamente factible, y considrese la siguiente tabla:


z x1 x2 ... xn xn+1 ... xn+m RHS
z 1 z1 c1 z2 c2 ... zn cn zn+1 cn+1 ... zn+m cn+m cB b
x B1 0 y11 y12 ... y1n y1,n+1 ... y1,n+m b1
x B2 0 y21 y22 ... y2n y2,n+1 ... y2,n+m b2
.. .. .. .. .. .. .. .. .. ..
. . . . . . . . . .
x Bm 0 ym1 ym2 ... ymn ym,n+1 ... ym,n+m bm

con xn+1 , . . . , xn+m como variables de holgura. La tabla presenta una solucin factible primal si bi
1
0 para i = 1, 2, . . . , m; esto es, si b = B b 0. Adems, la tabla es ptima si zj cj 0 para j =
1, 2, . . . , n + m. Defnase w = cB B1 . Para j = 1, 2, . . . , n se tiene

zj cj = cB B1 aj cj = waj cj

Por lo tanto, zj cj 0 para j = 1, 2, . . . , n implica que waj cj 0 para j = 1, 2, . . . , n, lo cual a su


vez implica que wA c. Adems, ntese que an+i = ei y cn+i = 0 para i = 1, 2, . . . , m, y entonces se
tiene
zn+i cn+i = wan+i cn+i

= w(ei ) 0

= wi i = 1, 2, . . . , m
Adicionalmente, si zn+i cn+i 0 para i = 1, 2, . . . , m, entonces wi 0 para i = 1, 2, . . . , m y
por tanto w 0. Se ha mostrado que zj cj 0 para j = 1, 2, . . . , n + m implica que wA c
y w 0, donde w = cB B1 . En otras palabras, la factibilidad dual es precisamente el criterio de
optimalidad simplex zj cj 0 para todo j. En la optimalidad w = cB B1 y el objetivo dual
1
w b =(cB B1 )b = cB (B b) = cB b = z ; esto es, los objetivos primal y dual son iguales. As, se tiene
el siguiente resultado
Lema 3. En la optimalidad del problema de minimizacin primal en forma cannica (esto es, zj cj 0
para todo j), w = cB B1 es una solucin ptima para el problema dual. Adems wi = (zn+i cn+i ) =
zn+i por i = 1, 2, . . . , m.

24
Interpretacin Econmica del Dual

Considrese el siguiente programa lineal y su dual


P: Minimizar cx D: Maximizar wb
Sujeto a Ax b Sujeto a wA c
x0 w0
Si B es la base ptima para el problema primal y cB es el vector de coeficientes de costo asociados a las
variables bsicas, entonces
z = cB B1 b = w b
de donde
z
= cB B1 = w
b
As wi es la tasa de cambio del valor objetivo ptimo con un incremento unitario en el i-simo valor de
la columna de la derecha (RHS). Puesto que wi 0, z crecer o permanecer constante a medida que
bi crece.
Econmicamente, podemos pensar a w como un vector de precios sombra para el vector del lado dere-
cho (RHS). Para ilustrar, supngase que la i-sima restriccin representa una demanda para la produccin
de al menos bi unidades del i-simo producto y cx representa el costo total de produccin, entonces wi
es el incremento en el costo por producir una unidad ms del i-simo producto. Puesto de otra forma,
wi es el precio justo que pagaramos por tener una unidad extra del i-simo producto.
Podemos interpretar tambin todo el problema dual econmicamente. Supngase que se contrata a
una empresa para producir cantidades especficas b1 , b2 , . . . , bm de m productos o mercancas. La empresa
puede participar en cualquiera de las n actividades a diferentes niveles para producir las mercancas. Cada
actividad j tiene su propia unidad de costo cj , y se puede acordar pagar el costo total de produccin. Al
contratante le gustara tener el control sobre las operaciones de la empresa as que ste puede especificar
la mezcla y niveles de las actividades a que la empresa se comprometer con el fin de minimizar el costo
total de produccin.
Pn Si aij denota la cantidad de producto i generada por una unidad de la actividad
j, entonces j=1 aij xj representa las unidades de producto i que se producen. Esta cantidad debe ser
mayor o igual que la cantidad requerida bi . Por lo tanto, se desea resolver el siguiente problema, el cual
es precisamente el problema primal:
n
X
M inimizar cj xj
j=1

n
X
Sujeto a aij xj bi i = 1, 2, . . . , m
j=1

xj 0 j = 1, 2, . . . , n

En lugar de tratar de controlar la operacin de la empresa para obtener la mezcla ms deseable de


actividades, supngase que se acuerda pagar a la empresa los precios unitarios w1 , w2 , . . . , wm para cada
una de las m mercancas. Sin embargo, se estipula que estos precios anunciados por la empresa deben
ser justos. Puesto que aij es el nmero de unidades de mercancaPi producidas por 1 unidad de actividad
m
j, y puesto que wi es precio unitario de mercanca i, entonces j=1 aij wi puede interpretarse como el
precio unitario de la actividad j en consonancia con los precios
Pmw1 , w2 , . . . , wm . Por lo tanto, se pide a
Pm i=1 aij wi , no exceda el precio actual cj .
la empresa que el precio implcito de la actividad j, a saber
En consecuencia, la empresa debe cuplir las restricciones i=1 aij wi cj para j = 1, 2, . . . , n. Dentro de
estas restricciones a la empresa le gustara seleccionar un conjunto de precios que maximice su retorno

25
Pm
i=1 wi bi . Esto conduce al siguiente problema dual de la empresa:
m
X
M aximizar wi bi
i=1

m
X
Sujeto a aij wi cj j = 1, 2, . . . , n
i=1

wi 0 i = 1, 2, . . . , m

El principal teorema de la dualidad establece que hay un equilibrio entre el conjunto de actividades y
el conjunto de precios en el cual el costo mnimo de produccin es igual al retorno mximo. El hecho de
que los dos objetivos son iguales en la optimalidad se hace intuitivamente claro tomando en cuenta que
ellos representan un cargo justo para el cliente, donde el objetivo primal se deriva por las consideraciones
de costo y al objetivo dual se llega a travs de un mecanismo de precios.

1.8. Anlisis de Sensibilidad


En la mayora de las aplicaciones prcticas, algunos de los datos del problema no son conocidos
exctamente y por tanto son estimados tan bien como sea posible. Es importante poder encontrar la nueva
solucin ptima del problema as como otros estimados de algunos de los datos que estn disponibles, sin
la costosa tarea de resolver el problema desde el principio. Tambin puede ocurrir que en las primeras
etapas de la formulacin del problema algunos factores sean pasados por alto. Es importante actualizar la
solucin actual en forma tal que tome cuidado de estos factores. Adicionalmente, en muchas situaciones
las restricciones no son muy rgidas. Por ejemplo, una restriccin puede reflejar la disponibilidad de algn
recurso. Esta disponibilidad puede ser incrementada por compras extra, sobretiempo, compra de nuevo
equipamiento, etc. Es deseable examinar el efecto de relajar algunas de las restricciones sobre el valor
del objetivo ptimo sin tener que resolver el problema. Estos y otros tpicos relacionados constituyen el
anlisis de sensibilidad. Discutiremos algunos mtodos para actualizar la solucin ptima bajo diferentes
variaciones del problema.
Considrese el siguiente problema

M inimizar cx
sujeto a Ax = b
x0

Supngase que el mtodo simplex produjo una base ptima B. Se describir como hacer uso de las condi-
ciones de optimalidad (relaciones primal-dual) con el fin de encontrar la nueva solucin ptima, cuando
alguno de los datos del problema cambia, sin resolver el problema desde el principio. En particular, se
considerarn las siguientes variaciones del problema

Cambio en el vector de costo c.

Cambio en el vector del lado derecho b.

Cambio en la matriz restriccin A.

Adicin de una nueva actividad (variable).

Adicin de una nueva restriccin.

1.8.1. Cambio en el Vector de Costo


Dada una solucin bsica factible ptima, supngase que el coeficiente de costo de una (o ms) de las
variables es cambiado de ck a c0k . El efecto de este cambio sobre la tabla simplex final ocurrir en la fila
costo; esto es, la factibilidad dual puede perderse. Considrense los siguientes dos casos

26
Caso I: xk es no bsica

En este caso cB no es afectado, y por tanto zj = cB B1 aj no cambia para ningn j. As zk ck es


reemplazado por zk c0k . Ntese que zk ck 0 puesto que el punto actual es una solucin ptima del
problema original. Si zk c0k = (zk ck ) + (ck c0k ) es positivo, entonces xk debe ser introducida en la
base y el mtodo simplex (primal) contina de la manera usual. En caso contrario la solucin que se tena
es todava ptima con respecto al nuevo problema.

Caso II: xk es bsica, es decir xk xBt

Aqu cBt es reemplazado por c0Bt . Sea zj0 el nuevo valor de zj . Entonces zj0 cj se calcula como sigue:
1
zj0 cj = c0B B aj cj

= (cB B1 aj cj ) + (0, . . . , 0, c0Bt cBt , 0, . . . , 0)yj

= (zj cj ) + (c0Bt cBt )ytj , para todo j

En particular para j = k, zk ck = 0, y ytk = 1, y por tanto zk0 ck = c0k ck . Como cabra esperar,
zk0 c0k es todava igual a cero. Por lo tanto la fila costo puede ser actualizada sumando el cambio neto
en el costo de xBt xk veces la fila t actual de la tabla final, a la fila costo original. Entonces zk0 ck es
1
actualizado a zk0 c0k = 0. Por supuesto, el nuevo valor objetivo c0B B b = cB B1 b + (c0Bt cBt )bt ser
obtenido en el proceso.

1.8.2. Cambio en el Vector del Lado Derecho b (RHS)


Si el vector del lado derecho b es reemplazado por b0 , entonces B1 b ser reemplazado por B1 b0 .
El nuevo lado derecho puede calcularse sin evaluar explcitamente B1 b0 . Esto es evidente tomando en
1
cuenta que B1 b0 = B P b + B1 (b0 b). Si las primeras m columnas
Pm originalmente forman la identidad,
m
1 0
entonces B (b b) = j=1 yj (b0j bj ) y por tanto B1 b0 = b+ j=1 yj (b0j bj ). Puesto que zj cj 0
para todas las variables no bsicas (para un problema de minimizacin), la nica violacin posible de la
optimalidad es que el nuevo vector B1 b0 puede tener algunas entradas negativas. Si B1 b0 0, entonces
la misma base permanece ptima, y los valores de las variables bsicas son B1 b0 y el objetivo tiene valor
cB B1 b0 . De otro modo se usa el mtodo simplex dual para encontrar la nueva solucin ptima mediante
la restauracin de la factibilidad.

1.8.3. Anlisis de Sensibilidad con la Tabla Simplex


El anlisis de sensibilidad para programas lineales implica el clculo de intervalos para los coeficientes
de la funcin objetivo y para los valores de los lados derechos, as como tambin de los precios sombra
y/o duales.

Coeficientes de la Funcin Objetivo

El anlisis de sensibilidad para un coeficiente de la funcin objetivo implica determinar un margen


para los valores del coeficiente. A tal margen se le denomina intervalo de optimalidad. Mientras el valor
del coeficiente de la funcin objetivo se mantenga dentro del intervalo de optimalidad, la solucin bsica
factible seguir siendo ptima. Por ello, para una variable no bsica, el intervalo de optimalidad define los
posibles valores del coeficiente correspondiente de la funcin objetivo para los cuales esa variable sigue
siendo no bsica. Para una variable bsica define los valores del coeficiente correspondiente de la funcin
objetivo para los cuales la variable sigue siendo bsica.

Al evaluar el intervalo de optimalidad para un coeficiente de la funcin objetivo, se supone que todos
los dems coeficientes del problema conservan sus valores originales; en otras palabras, slo cambia un
coeficiente a la vez.

27
1.8.4. Anlisis de Sensibilidad Global
Dependencia de c

G(c) = Minimizar cx
Sujeto a Ax=b
x0
G(c)= mini=1,...,N cxi es una funcin cncava de c.

Dependencia de b

Primal Dual

F(b) = Minimizar cx F(b) = Maximizar wb


Sujeto a Ax = b Sujeto a wA c
x0 w0
F(b)= maxi=1,...,N wi b es una funcin convexa de b.

1.8.5. Anlisis de Sensibilidad Local


Cambios en b
bi se convierte en bi + , p.e.
P: Minimizar cx P 0: Minimizar cx
Sujeto a Ax = b = Sujeto a Ax = b+ei
x0 x0

Sea B una base ptima para (P).


Es B ptima para (P 0 )?

Es necesario comprobar
1. Factibilidad: B1 (b+ei ) 0
2. Optimalidad: c cB B1 A 0
Observasiones:
1. Los cambios en b afectan la factibilidad.
2. Las condiciones de optimalidad no son afectadas.
B1 (b+ei ) 0

ij = (B1 )ij

bj = (B1 b)j
En consecuencia
(B1 b)j + (B1 ei )j 0 bj + ji 0
   
bj bj
max min
ji >0 ji ji <0 ji

Dentro de este rango

28
La base B actual, es ptima.
z = cB B1 (b+ei ) = cB B1 b + wi
Qu pasa si = ?, o > ? En este caso la solucin actual es infactible, pero satisface las condi-
ciones de optimalidad, entonces se debe usar el mtodo simplex dual.

Cambios en c
Aqu cj cj + . Es ptima la base B actual?

Es necesario comprobar
1. Factibilidad: B1 b 0, no es afectada.
2. Optimalidad: c cB B1 A 0, es afectada.
Hay dos casos:
xj es bsica.
xj es no bsica.
Caso: xj no bsica

cB no es afectado.

(cj + ) cB B1 Aj 0 cj + 0.

Hay solucin ptima si cj .

Caso: xj bsica

En este caso

cB
cB = cB + ej
Entonces,

cB B1 A)i 0 ci (cB +ej )B1 Ai 0,


(c

(B1 A)ji = aji ,

   
ci ci
ci aji 0 max min .
aji <0 aji aji >0 aji

Qu pasa si est fuera de este rango? Debe usarse el mtodo simplex primal.

Adicin de una Nueva Variable

Minimizar cx Minimizar cx + cn+1 xn+1


Sujeto a Ax = b = Sujeto a Ax + an+1 xn+1 = b
x0 x0

En el nuevo problema es xn+1 = 0 xn+1 > 0 (p.e. es la nueva actividad rentable?)


Sea la base actual B. Es la solucin x = B1 b, xn+1 = 0 ptima?
Las condiciones de factibilidad son satisfechas.

29
Condiciones de optimalidad:

cn+1 cB B1 an+1 0 cn+1 wan+1 0 ?

Si se cumple la sentencia anterior, la solucin x = B1 b, xn+1 = 0 es ptima.


En caso contrario, se debe usar el algoritmo simplex primal.

Adicin de una Nueva Restriccin

Minimizar cx Minimizar cx
Sujeto a Ax = b = Sujeto a Ax = b
x0 am+1 x = bm+1
x0

Si la solucin actual es factible, es ptima, en caso contrario, aplicar el algoritmo simplex dual.

30
1.9. Programacin Lineal Entera (PLE)

Adicin de una Nueva Restriccin


Supngase que se aade una nueva restriccin al problema. Si la solucin ptima al problema original
satisface la restriccin aadida, entonces el punto solucin es tambin una solucin ptima del nuevo
problema. Si, por otra parte, el punto solucin no satisface la nueva restriccin, esto es, si la restriccin
corta el punto ptimo, se puede usar el mtodo simplex dual para encontrar la nueva solucin ptima.
Ambos casos se ilustran en la figura 7.

Figura 7: Aadiendo una nueva restriccin.

Supngase que B es la base ptima antes de aadir la nueva restriccin am+1 x bm+1 . Entonces se tiene

z + (cB B1 N cN )xN = cB B1 b
1
xB + B NxN = B1 b (8)

La restriccin am+1 x bm+1 es reescrita como am+1 B xB + am+1


N xN + xn+1 = bm+1 , donde am+1 se
m+1 m+1
descompone en (aB , aN ) y xn+1 es una variable de holgura no negativa. Multiplicando la ecuacin
(8) por am+1
B y restando de la nueva restriccin se tiene el siguiente sistema:

z + (cB B1 N cN )xN = cB B1 b
xB + B1 NxN = B1 b
(am+1
N am+1
B B1 N)xN + xn+1 = bm+1 am+1
B B1 b

Estas ecuaciones dan una solucin bsica para el nuevo sistema. La nica violacin posible de la opti-
malidad del nuevo problema es el signo de bm+1 am+1B B1 b. As si bm+1 am+1
B B1 b 0, entonces
m+1 1
la solucin actual es ptima. En caso contrario, si bm+1 aB B b < 0, entonces se usa el mtodo
simplex dual para restaurar la factibilidad.

El Problema de Programacin Lineal Entera


El problema de programacin lineal entera puede ser establecido como sigue

M inimizar cx
Sujeto a Ax = b
x0
xZ

Un mtodo natural para resolver este problema es ignorar la ltima condicin x Z, y resolver el
problema como un programa lineal ordinario. Si en la solucin ptima, todas las variables tienen valores
enteros, entonces se tiene la solucin al programa entero original. En caso contrario, se considera aadir

31
una nueva restriccin al programa lineal. Esta restriccin adicional debera cortar la solucin ptima
actual no entera del programa lineal sin cortar o anular cualquier solucin factible entera. Aadiendo
la nueva restriccin a la tabla ptima del programa lineal continuo (no entero), se aplica el algoritmo
simplex dual para reoptimizar el nuevo programa lineal. La nueva solucin puede entonces ser entera o
no. El proceso de aadir restricciones se repite hasta que todas las variables de la solucin toman valores
enteros o hasta que resulta la infactibilidad (indicando que no hay solucin entera). A continuacin se
describe cmo generar la nueva restriccin cortante.
Considrese la tabla simplex ptima cuando resulta una solucin no entera. Sea br no entero. Se asume
que las variables bsicas estn indexadas de 1 a m. La ecuacin asociada con br es
n
X
xr + yrj xj = br
j=m+1

Sea Irj el mayor entero que es menor o igual que yrj (Irj se llama la parte enterea de yrj ). De manera
similar, sea Ir la parte entera de br . Sean Frj y Fr , las respecticas partes fraccionarias, esto es,

Frj = yrj Irj y Fr = br Ir

Entonces 0 Frj < 1 y 0 < Fr < 1. Usando estas relaciones se puede reescribir la ecuacin bsica para
xr de la siguiente manera
Xn
xr + (Irj + Frj )xj = Ir + Fr
j=m+1

Rearreglando trminos se tiene


n
X n
X
xr + Irj xj Ir = Fr Frj xj
j=m+1 j=m+1

Ahora el lado izquierdo de esta ecuacin ser entero para cualquier solucin entera factible. El lado
derecho es estrictamente menor que 1, puesto que Fr < 1, Frj 0 y xj 0. Pero puesto que el lado
derecho debe tambin ser entero, porque es igual al lado izquierdo, se puede concluir que debe ser menor
o igual que cero (no hay enteros mayores que cero y menores que uno). As, se puede escribir
n
X
Fr Frj xj 0
j=m+1

Sin embargo, puesto que xj es actualmente no bsica (y por tanto xj = 0) para j = m + 1, . . . , n y Fr > 0,
la solucin ptima actual del programa lineal (no entera), no satisface esta restriccin adicional. En otras
palabras, esta nueva restriccin cortar la solucin ptima actual si se aade a la tabla ptima actual.
Despus de aadir la nueva restriccin a la tabla ptima del programa lineal, se aplica el mtodo simplex
dual para obtener una nueva solucin ptima del programa lineal, la cual se inspecciona para ver si es
entera. El procedimiento descrito es llamado un algoritmo de plano cortante. En la figura 8 se muestra
la regin factible para un problema de programacin lineal con dos restricciones. Se observan los puntos
enteros factibles, y tambin la restriccin de corte (Cut) aadida para encontrar la solucin ptima entera.

32
Figura 8: Regin factible con puntos solucin enteros sealados.

33
Parte II
Pregunta 2
2. Desarrollo de Algoritmos en Scilab
2.1. Mtodo Simplex
El esquema seguido en la codificacin del algoritmo es el que usa el formato tabular del mtodo simplex.
El algoritmo es el siguiente (Problema de Minimizacin) :

Paso de Inicializacin

Encontrar una solucin bsica factible inicial con base B. Formar la siguiente tabla inicial:

z xB xN RHS
1
z 1 0 cB B N cN cB b
xB 0 I B1 N b
Paso Principal

Sea zk ck = M aximo{zj cj : j R}, donde R es el actual conjunto de ndices asociados a las variables
no bsicas. Si zk ck 0, entonces parar; la solucin actual es ptima. En caso contrario examinar yk .
Si yk 0, entonces parar; la solucin ptima es no acotada a lo largo del rayo:
 1    
B b yk
+ xk : xk 0
0 ek

donde ek es un vector cuyas componentes son cero, excepto la k-sima posicin que es igual a 1. Si yk  0,
determinar el ndice r como sigue:
 
br bi
= Mnimo : yik > 0
yrk 16i6m yik

Se actualiza la tabla pivoteando sobre yrk . Se actualizan las variables bsicas y no bsicas donde xk entra
a la base y xBr deja la base, y se repite el paso principal.

Implementacin en Scilab
Se implement en Scilab el Mtodo Simplex en formato tabular. Se defini una funcin llamada
simplex almacenada en un archivo de nombre simplex.sci. La funcin simplex toma los siguientes
argumentos de entrada:

c : Vector fila con los coeficientes de costo (funcin objetivo).


A : Matriz con los coeficientes de las restricciones.
b : Vector fila con los lados derechos de las restricciones.
maximizar : Variable auxiliar, si su valor es cero (0) entonces el problema es para minimizar la
funcin objetivo; si su valor es uno (1) entonces el problema es para maximizar la funcin objetivo.
El algoritmo comienza fijando el nmero de variables bsicas y no bsicas. A continuacin se arma la
tabla simplex, sobre la cual se lleva a cabo el proceso de pivoteo. En la tabla se incluyen los coeficientes
de costo del problema original ms los coefientes de costo correspondientes a las variables de holgura, a
estos ltimos se asigna valor cero (0); tambin se incluye en la tabla la matriz A y la submatriz identidad
correspondiente a las variables de holgura en las restricciones y que al mismo tiempo representa la base
inicial B. La tabla se completa con el lado derecho de las restricciones (vector b), el cual pasa a ser la

34
columna RHS de la tabla. Seguidamente se comprueba que el vector b 0 y se inicializan los ndices
asociados a las variables bsicas (vector IB) y no basicas (vector INB). A continuacin se entra en la
iteracin principal buscando en la primera fila de la tabla el mayor valor positivo (zj cj ) asociado a las
variables no basicas, para encontrar la columna pivote y pasar luego a ubicar la fila pivote aplicando la
prueba de la mnima razn.

Pivoteo

Una vez ubicado el elemento pivote (el elemento de la interseccin de la fila y columna pivote), el
prximo paso es realizar la operacin pivote sobre las filas distintas a la fila pivote. Siendo la variable
xk la que entra a la base (k representa la columna pivote), xBr la variable que deja la base (r representa
la fila pivote), y yrk el elemento pivote, la operacin pivote consiste en el siguiente proceso:
1. Se divide la fila r entre yrk .
2. Para i = 1, . . . , m e i 6= r, actualizar la i-sima fila sumndole yik veces la nueva r-sima fila.
3. Actualizar la primera fila de la tabla sumndole ck zk veces la nueva r-sima fila.
A continuacin se actualizan apropiadamente los ndices asociados a las variables bsicas y no bsicas, y
se realiza una nueva iteracin. El proceso se repite hasta que no sea posible ubicar una nueva columna
pivote, en cuyo caso se ha obtenido una solucin ptima finita, o hasta que no sea posible hallar una fila
pivote, en cuyo caso la solucin ptima es no acotada.

2.2. Mtodo Simplex Revisado


Algoritmo Simplex Revisado
El esquema general del algoritmo simplex revisado en formato tabular es el siguiente (Problema de Mi-
nimizacin):

Paso de Inicializacin

Encontrar una solucin bsica factible inicial con base inversa B1 . Calcular w = cB B1 , b = B1 b, y
formar la siguiente tabla:

BASE INVERSA RHS


w cB b
B1 b
Paso Principal

Para cada variable no bsica, calcular zj cj = waj cj . Sea zk ck = M a


ximo zj cj . Si zk ck 0,
1
parar; la actual solucin bsica factible es ptima. En caso contrario calcular
  B ak . Si yk 0,
yk =
zk ck
parar; la solucin ptima es no acotada. Si yk  0, insertar la columna a la derecha de la
yk
tabla anterior, conduciendo a la siguiente tabla
BASE INVERSA RHS xk
w cB b zk ck
B1 b yk
Se determina el ndice r como sigue:
 
br bi
= Mnimo : yik > 0
yrk 16i6m yik

A continuacin se realiza el Pivoteo sobre yrk (elemento pivote). Esto actualiza la tabla. Ahora la columna
correspondiente a la variable xk es completamente eliminada de la tabla y se repite el paso principal.

35
Implementacin en Scilab

Se implement en Scilab el Mtodo Simplex Revisado. Se sigui el esquema del simplex revisado en su
forma tabular. Se realizan principalmente operaciones de tipo matricial basadas en las funciones nativas
de Scilab. El algoritmo se codific en una funcin llamada revisado almacenada en un archivo de nombre
revisado.sci, dicha funcin requiere los siguientes argumentos:
c : Vector fila con los coeficientes de costo (funcin objetivo).

A : Matriz de los coeficientes de las restricciones.


b : Vector fila con los lados derechos de las restricciones.
maximizar : Variable auxiliar, si su valor es cero (0) entonces el problema es para minimizar la
funcin objetivo; si su valor es uno (1) entonces el problema es para maximizar la funcin objetivo.

Lo primero que realiza el cdigo es fijar el nmero de variables bsicas, el nmero de variables no
bsicas, los ndices asociados a las variables bsicas (IB), los ndices asociados a las variables no bsicas
(INB), agregar los coeficientes de costo ceros (0), correspondientes a las variables de holgura, al vector
de coeficientes de costo (c); se asignan los coeficientes de costo asociados a las variables bsicas (c_B) y
los coeficientes de costo asociados a las variables no bsicas (c_N). Inicialmente se toman como variables
no bsicas a las variables del problema original y como variables bsicas a las variables de holgura. Se
construye la matriz A en la cual se incluye la submatriz identidad correspondiente a las variables de
holgura y que adems es la base inicial B. Se calcula la inversa de la base (B1 ) y se asigna a la variable
1
inversa_de_B, a continuacin se calcula w = cB B1 y b = B b (variable b_barra). Se construye la
tabla conteniendo la inversa de la base B1 y el vector b con los lados derechos de las restricciones. El
paso siguientes es encontrar el mayor valor de los zj cj para determinar el ndice de la variable no bsica
que entrar a la base, si el mayor zj cj es igual a 0, el algoritmo se detiene puesto que ha llegado a una
solucin ptima, a continuacin se escribe el punto solucin ptimo y el valor objetivo ptimo (argumentos
de salida xopt y zopt, respectivamente). En caso de no haber alcanzado una solucin ptima, el mayor
zj cj determina la columna de la matriz A que se utiliza para formar el vector temporal yk, multiplican-
do dicha columna por la inversa de la base B1 . Se construye entonces el vector columna columna_xk
el cual se utiliza para determinar el elemento pivote (yrk ), mediante la prueba de la mnima razn, la
intencin es encontrar el elemento pivote y al mismo tiempo la variable que sale de la base (determina-
da por el ndice r). Seguidamente se realiza el proceso de pivoteo con el fin de actualizar la inversa de
la base (B1 ) y el lado derecho de la tabla (columna m+1) con los valores de las variables bsicas actuales.

Pivoteo

El proceso de pivoteo sigue el siguiente esquema:


1. Se divide la fila r de la tabla entre yrk (elemento pivote).
2. Para cada fila i = 1, . . . , m + 1, i 6= r, de la tabla, el multiplicador es el negativo del i-simo
elemento de columna_xk.

3. Se suma a dicha fila, multiplicador veces la r-sima fila.


Finalmente, como ltima accin del paso principal del algoritmo, se actualizan apropiadamente in-
tercambiados los ndices asociados a las variables bsicas (IB) y no bsicas (INB), se actualizan los
coeficientes de costo asociados a las variables bsicas (c_B) y los coeficientes de costo asociados a las
variables no bsicas (c_N), se actualiza la variable inversa_de_B, con la submatriz contenida en ta-
bla, y se calcula la nueva w = cB B1 . A continuacin se realiza una nueva iteracin. El proceso contina
hasta que para cada variable no bsica se tenga zj cj 0, en cuyo caso se tiene una solucin ptima
finita, o hasta que todo yik 0, i = 1, . . . , m en cuyo caso la solucin en no acotada.

36
2.3. Mtodo Simplex Dual
A continuacin se describe el mtodo simplex dual, el cual resuelve el problema dual directamente en
la tabla simplex (primal). En cada iteracin nos movemos de una solucin bsica factible del problema
dual a una solucin bsica factible mejorada, hasta que la optimalidad del dual (y tambin del primal)
es alcanzada, o sino, hasta que concluimos que el dual es no acotado y el primal es infactible.

Considrese el siguiente problema de programacin lineal:

M inimizar cx
Sujeto a Ax = b
x0

En ciertas casos es difcil encontrar una solucin bsica de inicio que sea factible (bi 0, para todo
i) para un programa lineal sin aadir variables artificiales. En estos mismos casos es a menudo posible
encontrar una solucin bsica de inicio, pero no necesariamente factible, solucin que es dual-factible
(zj cj 0, para todo j, para un problema de minimizacin). En tales casos es til desarrollar una
variante del mtodo simplex que producira una serie de tablas simplex que mantienen la factibilidad
dual y se encamina hacia la factibilidad primal.

Consideremos la siguiente tabla la cual representa una solucin bsica en una iteracin cualquiera:
z x1 ... xj ... xk ... xn RHS
z 1 z1 c1 ... z j cj ... z k ck ... z n cn cB b
xB1 0 y11 ... y1j ... y1k ... y1n b1
xB2 0 y21 ... y2j ... y2k ... y2n b2
.. .. .. .. .. .. .. .. .. ..
. . . . . . . . . .

x Br 0 yr1 ... yrj ... y ... yrn br
 rk 
.. .. .. .. .. .. .. .. .. ..
. . . . . . . . . .
x Bm 0 ym1 ... ymj ... ymk ... ymn bm

Supngase que la tabla es dual-factible (zj cj 0 para un problema de minimizacin). Entonces, si


la tabla es tambin primal-factible (bi 0, para todo i), se tiene la solucin ptima. En caso cotrario,
considrese algn br < 0. Seleccionando la fila r como fila pivote y alguna columna k tal que yrk < 0
como columna pivote podemos hacer la nueva columna de la derecha (RHS) b0r > 0. A travs de una
serie de tales pivotes esperamos hacer todo bi 0 mientras que se mantiene zj cj 0 para todo j, y
as alcanzar la optimalidad. La cuestin que resta es cmo hacer para seleccionar la columna pivote y
adicionalmente mantener la factibilidad dual despus del pivoteo? La columna pivote k es determinada a
travs de la siguiente prueba de la mnima razn
 
zk ck zj cj
= Mnimo : yrj < 0 (9)
yrk j yrj

Ntese que las nuevas entradas en la fila 0 (fila objetivo) de la tabla despus de la operacin pivote
estn dadas por:
yrj
(zj cj )0 = (zj cj ) (zk ck )
yrk
Si yrj 0, puesto que zk ck 0 y yrk < 0, entonces (yrj /yrk )(zk ck ) 0 y por lo tanto (zj cj )0
zj cj . Puesto que la solucin anterior era dual-factible, entonces zj cj 0 y por tanto (zj cj )0 0.
Ahora considrese el caso donde yrj < 0. De la ecuacin (9) tenemos:
zk ck zj cj

yrk yrj

Multiplicando ambos lados por yrj < 0, tenemos (zj cj ) (yrj /yrk )(zk ck ) 0, esto es, (zj cj )0 0.
Resumiendo, si la columna pivote se selecciona de acuerdo a la ecuacin (9), entonces la nueva base

37
obtenida despus de pivotar en yrk , sigue siendo dual-factible. Adems, el objetivo dual despus del pi-
voteo es dado por cB B1 b (zk ck )br /yrk . Puesto que zk ck 0, br < 0, y yrk < 0, entonces
(zk ck )br /yrk 0 y el objetivo dual mejora el del valor actual de cB B1 b = wb.

Se ha descrito un proceso que se mueve desde una solucin bsica factible dual a otra solucin bsica
factible dual mejorada (por lo menos no peor). Para completar el anlisis se debe considerar el caso
cuando yrj 0 para todo j, y por tanto P ninguna columna es elegible para ser columna pivote. En este
caso la i-sima fila de la tabla se lee: j yrj xj = br . Puesto que yrj 0 para todo j y se requiere que
P
xj sea no negativa, entonces j yrj xj 0 para cualquier solucin factible. Sin embargo, br < 0. Esta
contradiccin muestra que el primal es infactible y el dual es no acotado.

Algoritmo Simplex Dual


El esquema general del algoritmo simplex dual en formato tabular es el siguiente (Problema de Minimi-
zacin):

Paso de Inicializacin

Encontrar una base B del problema primal tal que zj cj = cB B1 aj cj 0 para todo j.

Paso Principal

1. Si b = B1 b 0, parar; la solucin actual es ptima. En caso contrario seleccionar la fila pivote


r con br < 0, es decir, br = Mnimo{bi }.
2. Si yrj 0 para todo j, parar; el dual es no acotado y el primal es infactible. En caso contrario
seleccionar la columna pivote k aplicando la siguiente prueba de la mnima razn:
 
zk ck zj cj
= Mnimo : yrj < 0
yrk j yrj

3. Pivotar en yrk y regresar al paso 1.

Implementacin en Scilab

Se ha implementado en Scilab el esquema del Mtodo Simplex Dual en su forma tabular. Se program
una funcin llamada dual almacenada en el archivo de nombre dual.sci. La funcin dual toma los
siguientes argumentos de entrada:
c : Vector fila con los coeficientes de costo (funcin objetivo).

A : Matriz de los coeficientes de las restricciones.


b : Vector fila con los lados derechos de las restricciones.
maximizar : Variable auxiliar, si su valor es cero (0) entonces el problema es para minimizar la
funcin objetivo; si su valor es uno (1) entonces el problema es para maximizar la funcin objetivo.

El cdigo comienza fijando el nmero de variables bsicas (igual al nmero de restricciones del pro-
blema primal), el nmero de variables no bsicas (igual al nmero de variables del problema primal), a
continuacin se arma la tabla simplex como la que se mostr antes y sobre la cual se llevan a cabo las
operaciones del mtodo simplex dual. La primera fila de la tabla contiene los coeficientes de costo del
problema ms los coeficientes de costo asociados a las variables de holgura (a estos se asigna el valor 0);
tambin se incluye en la tabla la matriz A y la matriz identidad que se corresponde con las variables
de holgura en las restricciones y que al mismo tiempo representa la base inicial B. La tabla se comple-
ta con el lado derecho de las restricciones (vector b), el cual, junto a la posicin en la primera fila de
la misma columna, conforman la columna RHS de la tabla. A continuacin se comprueba que b 0 y

38
en conformidad se fijan los ndices iniciales asociados a las variables bsicas (IB) y los ndices iniciales
asociados a las variables no bsicas (INB). Seguidamente el cdigo comienza la iteracin simplex dual.
En primer lugar se ubica el ms grande valor negativo, es decir, el ms negativo bi , de la columna de la
derecha de la tabla (RHS); esto con el fin de encontrar la fila pivote. Si el menor bi 0, entonces se tiene
una solucin ptima del problema primal y se procede a escribirla. Si no se tiene una solucin ptima, se
obtiene una fila pivote (variable fp) y al mismo tiempo se seala la variable bsica que abandonar a la
base, entonces el cdigo procede a la bsqueda de la columna pivote inspeccionando las entradas de la
tabla en la fila pivote asociadas a las variables no bsicas; si las entradas en la tabla de la fila pivote son
todas no positivas, entonces se escribe un mensaje advirtiendo que la solucin del problema primal es no
factible. Luego, con aquellos elementos de la fila pivote asociados a las variables no bsicas que sean no
negativos se aplica la prueba de la mnima razn, y la columna pivote ser aquella para la cual se tenga
el ms pequeo de los cocientes (zj cj )/yrj (r seala la fila pivote, j INB). Al tener la columna pivote
(variable cp), tenemos entonces al elemento pivote, el cual es el elemento en la interseccin de la fila
pivote (fp) y la columna pivote (cp) de la tabla, la columna pivote seala tambin el ndice de la variable
que entrar a la base. A continuacin se realiza el proceso de pivoteo para actualizar la inversa de la base
(submatriz B1 de la tabla) y la columna RHS con los valores de las variables bsicas actuales.

Pivoteo

Siendo la variable xk la que entra a la base (k representa la columna pivote), xBr la variable que deja
la base (r representa la fila pivote), y yrk el elemento pivote, la operacin pivote se realiza siguiendo los
pasos:

1. Se divide la fila r entre yrk .


2. Para i = 1, . . . , m e i 6= r, actualizar la i-sima fila sumndole yik veces la nueva r-sima fila.
3. Actualizar la primera fila de la tabla sumndole ck zk veces la nueva r-sima fila.

A continuacin se actualizan apropiadamente los ndices asociados a las variables bsicas y no bsicas
para reflejar cual variable entr y cual sali de la base, y se realiza una nueva iteracin. El proceso se
repite hasta que no sea posible ubicar una nueva fila (bi 0 para todo i), en cuyo caso se ha obtenido
una solucin ptima finita al problema primal, o hasta que no sea posible hallar una columna pivote
(yrj 0 para j INB) , en cuyo caso la solucin al problema primal no es factible.

2.4. Anlisis de Sensibilidad


Implementacin en Scilab

Para ayudar en el anlisis de sensibilidad se escribi un cdigo Scilab almacenado en el archivo llamado
asccv.sci. Se utiliza entonces la funcin asccv asociada, en el caso en que se inspecciona un cambio en
algn coeficiente de costo. Este cdigo continua las iteracines del mtodo simplex a partir de la tabla
ptima final para el problema que se examina. Los argumentos que recibe la funcin son:
c : Coeficientes de costo (funcin objetivo)

b : vector del lado derecho de las restricciones


ic : Indica el nmero del ndice que se modifica
nuevo_valor : El nuevo valor que se le asigna al coeficiente
IB : Indices de las variables bsicas finales del problema examinado

INB : Indices de las variables no bsicas finales del problema examinado


t : Tabla ptima del problema examinado
maximizar : Variable que indica si el problema es de maximizacin o minimizacin (0 = minimiza-
cin, 1 = maximizacin)

39
Y puede tomar como argumentos de salida:
zopt : Nuevo valor objetivo ptimo
xopt : Nuevo punto solucin ptimo
t : Nueva tabla final ptima
IB : Indices asociados a las variables bsicas finales
INB : Indices asociados a las variables no bsicas finales
El cdigo escrito comienza sustituyendo en el vector de coeficientes de costo, en la posicin del coeficiente
a modificar (ic), el nuevo valor asignado a este (nuevo_valor). A continuacin fija el nmero de variables
bsicas y no bsicas del problema. Luego verifica si el coeficiente modificado est asociado a una variable
bsica o a una variable no bsica puesto que el procedimiento a seguir es distinto en cada caso. Si el
coeficiente ck , modificado a c0k , est asociado con una variable no bsica, se hace zk c0k = (zk ck ) +
(ck c0k ) y se observa si este cambio resulta en un valor zk c0k > 0, lo cual produce que la variable no
bsica xk asociada entre a la base, y a partir de all contina el algoritmo simplex primal de la manera
tradicional. Si zk c0k  0, entonces la solucin ptima actual sigue siendo ptima y no hay iteraciones
adicionales. La modificacin adecuada a la tabla simplex correspondiente a este caso se realiza en Scilab
con las instrucciones
pos = INB(indice);
t(1,pos) = t(1,pos)+(cc(pos)-nuevo_valor);

en donde la variable pos contiene el nmero de columna de la tabla simplex final actual, que est asociada
con la variable no bsica considerada, y la variable cc contiene una copia del vector c de los coeficientes
de costo. La variable t representa a la tabla simplex actual. En este caso se suma a la fila de costo
(fila objetivo), en la columna correspondiente a la variable no bsica, el cambio (zk ck ) + (ck c0k )
t(1,pos)+(cc(pos)-nuevo_valor) el cual produce el valor modificado zk c0k . A partir de aqu continua
el mtodo simplex tradicional tal como en la rutina simplex, hasta llegar a una nueva solucin bsica
factible ptima.
En el caso de que el coeficiente modificado est asociado a una variable bsica, se procede a calcular
el cambio neto en el coeficiente modificado y a continuacin se suma a la fila objetivo de la tabla, la fila
asociada a la variable bsica multiplicada por el cambio neto en el coeficiente. Esto se lleva a cabo con
las siguientes instrucciones
pos = IB(indice);
cambio_neto = nuevo_valor-cc(indice);
for j = 1:RHS
if (j ~= pos) then
t(1,j) = t(1,j)+t(indice+1,j)*cambio_neto;
end
end

en donde la variable pos contiene el nmero de columna de la tabla simplex final actual, que est asociada
con la variable bsica considerada, la variable cc contiene una copia del vector c de los coeficientes de
costo, la variable t representa a la tabla simplex actual.

2.5. Programacin Lineal Entera (PLE)


Implementacin en Scilab

Para resolver el problema de programacin lineal entera (PLE) se escribi un cdigo Scilab llamado
entero2.sci. Este cdigo aplica en primera instancia el algoritmo simplex ordinario en su forma tabular,
utilizando el metodo de dos fases para encontrar una solucin bsica factibla inicial para el programa
lineal continuo. Una vez que se llega a la tabla ptima se comprueba si la solucin obtenida es entera.
Para hacer esto se resta a cada valor del punto solucin obtenido, su valor redondeado y la diferencia se

40
compara contra la cota 1e 10. Si el error en la diferencia es mayor que ese valor, el punto solucin se
considera no entero; si el error es menor, el punto solucin se considera entero.
Si hay puntos solucin no enteros, se procede a aadir una nueva restriccin a la tabla ptima. Se
construye la ecuacin de corte correspondiente a la 1era. variable bsica utilizando las expresiones

Frj = yrj Irj y Fr = br Ir


correspondientes a las entradas de la tabla asociadas a la fila de la 1era. variable bsica y al valor del
lado derecho (solucin) correspondiente. Ahora la nueva tabla contiene una fila ms. Entonces comienza
el algoritmo simplex dual buscando en la columna RHS un valor < 0. Este corresponder a la nueva
restriccin. Igualmente se aade una nueva variable bsica (correspondiente a la nueva variable de holgura)
por tanto la tabla ahora contiene tambin una columna ms. Se busca el elemento pivote mediante la
prueba de la mnima razn del simplex dual y se realiza el proceso de pivoteo. Entonces se vuelve a
comprobar si la nueva solucin es entera. Si los nuevos valores del punto solucin son enteros, se tiene una
solucin ptima entera y se escribe; sino se repite el proceso. La rutina entero2 requiere los argumentos
c: vector de coeficientes de costos.

A: matriz de coeficientes de las restricciones.


sentido: vector en el que se guarda una indicacin del sentido de desigualdad de cada restriccin (0:
, 1: =, 2: ).
b: vector del lado derecho de las restricciones o de necesidades.

maximizar : Variable que indica si el problema es de maximizacin o minimizacin (0 = minimiza-


cin, 1 = maximizacin)

41
Parte III
Pregunta 3
3. Problemas Resueltos
3.1. Problemas Resueltos con el Algoritmo Simplex
Problema 1
M aximizar 2x1 + x2 3x3 + 5x4
Sujeto a x1 + 2x2 + 4x3 x4 6
2x1 + 3x2 x3 + x4 12
x1 + x3 + x4 4
x1 , x2 , x3 , x4 0

Figura 9: Solucin con la rutina simplex al problema 1

El problema 1 es tomado de [1], pg. 129. La salida generada por la rutina simplex (Scilab) se
muestra en la figura 9.

42
Problema 2
M inimizar 6x1 5x2
Sujeto a x1 + 4x2 16
6x1 + 4x2 28
2x1 5x2 6
x1 10
x2 10
x1 , x2 0

Figura 10: Solucin con la rutina simplex al problema 2

El problema 2 es tomado de [5]. La salida generada por la rutina simplex (Scilab) se muestra en
la figura 10.

Problema 3
M inimizar x1 2x2 + x3 x4 4x5 + 2x6
Sujeto a x 1 + x2 + x3 + x4 + x5 + x6 6
2x1 x2 2x3 + x4 4
x3 + x4 + 2x5 + x6 4
x1 , x2 , x3 , x4 , x5 , x6 0

El problema 3 es tomado de [1], pg. 191. La salida generada por la rutina simplex (Scilab) se
muestra en la figura 11.

43
Figura 11: Solucin con la rutina simplex al problema 3

44
3.2. Problemas Resueltos con el Algoritmo Simplex Revisado
Problema 1
M aximizar x1 + x2 + 3x3
Sujeto a x1 + x2 + x3 12
x1 + x2 5
x2 + 2x3 8
0 x1 3
0 x2 6
0 x3 4

Figura 12: Solucin con la rutina revisado al problema 1

El problema 1 es tomado de [1], pg. 221. La forma en que se definen los parmetros que se pasan
a la rutina revisado (Scilab) y la salida generada por ella se muestran en la figura 12.
Problema 2
M aximizar 6x1 + 4x2 + 2x3
Sujeto a 4x1 3x2 + x3 8
x1 + 2x2 + 4x3 10
0 x1 3
0 x2 2
0 x3

El problema 2 es tomado de [1], pg. 224. La forma de definir los parmetros que se le pasan a la
rutina revisado (Scilab) y la salida generada por sta se muestran en la figura 13.

45
Figura 13: Solucin con la rutina revisado al problema 2

Problema 3
M aximizar 3x1 + 4x2 + x3 + 7x4
Sujeto a 8x1 + 3x2 + 4x3 + x4 7
2x1 + 6x2 + x3 + 5x4 3
x1 + 4x2 + 5x3 + 2x4 8
x1 , x2 , x3 , x4 0

El problema 3 es tomado de [1], pg. 220. La forma de definir los parmetros que se le pasan a la
rutina revisado (Scilab) y la salida generada por sta se muestran en la figura 14.

46
Figura 14: Solucin con la rutina revisado al problema 3

47
3.3. Problemas Resueltos con el Algoritmo Simplex Dual
Problema 1
M inimizar 2x1 + 3x2 + 4x3
Sujeto a x1 + 2x2 + x3 3
2x1 x2 + 3x3 4
x1 , x2 , x3 0

Figura 15: Solucin con la rutina dual al problema 1

El problema 1 es tomado de [1], pg. 254. La forma en que se definen los parmetros que se pasan
a la rutina dual (Scilab) y la salida generada por ella se muestran en la figura 15.
Problema 2
M inimizar 3x1 + 4x2 + 6x3 + 7x4 + x5
Sujeto a 2x1 x2 + x3 + 6x4 5x5 6
x1 + x2 + 2x3 + x4 + 2x5 3
x1 , x2 , x3 , x4 , x5 0

El problema 2 es tomado de [1], pg. 261. La forma de definir los parmetros que se le pasan a la
rutina dual (Scilab) y la salida generada por sta se muestran en la figura 16.
Problema 3
M inimizar 315x1 + 110x2 + 50x3
Sujeto a 15x1 + 2x2 + x3 200
7.5x1 + 3x2 + x3 150
5x1 + 2x2 + x3 120
xi 0, i = 1, 2, 3

48
Figura 16: Solucin con la rutina dual al problema 2

El problema 3 es tomado de [7]. La forma de definir los parmetros que se le pasan a la rutina dual
(Scilab) y la salida generada por sta se muestran en la figura 17.

49
Figura 17: Solucin con la rutina dual al problema 3

50
3.4. Anlisis de Sensibilidad (Problemas Resueltos)
Problema 1
M inimizar 2x1 + x2 x3
Sujeto a x 1 + x2 + x3 6
x1 + 2x2 4
x1 , x2 , x3 0

Figura 18: Resultados con Scilab para el problema 1 (anlisis de sensibilidad)

El problema 1 es tomado de [1], pg. 268. La figura 18 muestra la manera de definir los parmetros
que se pasan a la funcin simplex y los resultados que esta genera para el problema considerado. Se
ve la solucin ptima y la tabla final correspondiente as como los indices asociados a las variables
bsicas (ib) y no bsicas (inb) finales. Recurdese que cuando se utiliza el mtodo simplex para

51
x1 x2 x3 x4 x5 RHS
z 0 1 1 2 0 12
x1 1 1 1 1 0 6
x5 0 3  1 1 1 10

Cuadro 1: Tabla simplex final despus de modificar c2

resolver un programa lineal, se reconoce una solucin ptima cuando todas las entradas en la fila
de la funcin objetivo (zj cj ) son 0. Como la tabla final satisface este criterio (las entradas de
la fila 1 son 0), es ptima la solucin que se muestra all.

Modificacin de un Coeficiente de Costo (cj )

Supngase que el coeficiente de costo c2 = 1 es reemplazado por c02 = 3. Puesto que en la solucin
ptima x2 es no bsica, entonces z2 c02 = (z2 c2 ) + (c2 c02 ) = 3 + 4 = 1, y todos los otros
zj cj no son afectados. Entonces x2 entra a la base (Vase el cuadro 1; se resalta el nuevo elemento
pivote). En la figura 19 se muestra el resultado generado con la funcin asccv despus de introducir

Figura 19: Resultado de la funcin asccv para el problema 1 (cambio en c2 )

el cambio en el coeficiente c2 . Se ve que este cambio produce una nueva solucin ptima. Es decir,
la solucin del problema es sensible a este cambio en uno de los coeficientes asociado a una variable
no bsica final.
Supngase ahora que el coeficiente de costo c1 = 2 es reemplazado por c01 = 0. Puesto que x1
es variable bsica en la solucin ptima del problema original, como se puede apreciar en la figura
18, entonces la nueva fila de coeficientes de costo (fila 1 de la tabla), excepto la entrada z1 c1 ,
es obtenida mediante sumar a la fila de coeficientes de costo actual, la fila correspondiente a la
variable x1 multiplicada por el cambio neto en c1 : 0 (2) = 2. El nuevo valor de z1 c1 sigue
siendo cero. Ntese que el nuevo valor de z3 c3 es ahora positivo y por tanto x3 entra a la base
(Vase el cuadro 2; se resalta el nuevo elemento pivote). En la figura 20 se muestra el resultado

52
x1 x2 x3 x4 x5 RHS
z 0 1 1 0 0 0
x1 1 1 1  1 0 6
x5 0 3 1 1 1 10

Cuadro 2: Tabla simplex final despus de modificar c1

Figura 20: Resultado de la funcin asccv para el problema 1 (cambio en c1 )

generado con la funcin asccv despus de introducir el cambio en el coeficiente c1 . De nuevo se


optiene una nueva solucin ptima. Es decir, la solucin del problema es sensible a este cambio en
uno de los coeficientes asociado a una variable bsica final.

Cambio en el Vector del Lado Derecho b (RHS)


 
0 3
Supngase que el lado derecho del problema es reemplazado por b = . Puesto que las variables
4
   
1 0 1 0
bsicas finales son x1 y x5 , la base ptima es B = y B1 = , por tanto B1 b0 =
1 1 1 1
    
1 0 3 3
= . Entonces B1 b0 0. En consecuencia la nueva solucin ptima es x1 = 3, x5 =
1 1 4 7
7, x2 = x3 = x4 = 0. Esto se puede comprobar si se ejecuta la funcin simplex para este problema,
con la modificacin indicada para b. La solucin y la tabla final se muestran en la figura 21.

53
Figura 21: Resultados con Scilab para el problema 1 (Cambio en el Lado Derecho b)

Problema 2
M aximizar 50x1 + 40x2
Sujeto a 3x1 + 5x2 150
x2 20
8x1 + 5x2 300
x1 , x2 0

En la figura 22 se puede ver la solucin y la tabla ptimas para el problema 2. Cuando un cambio
en los coeficientes de la funcin objetivo ocasiona que uno o ms valores zj cj se vuelva positivo,
entonces la solucin actual ya no es ptima. Por ello, el intervalo de optimalidad para un coeficiente
de la funcin objetivo se determina mediante los valores de los coeficientes que conservan zj cj 0
para todo j.

Se determinar el intervalo de optimalidad para c1 . Utilizando c1 (en lugar de 50) como coeficiente
de x1 en la funcin objetivo, resulta la tabla simplex final modificada que se presenta en el cuadro
3.
Como los elementos zj cj correspondientes a las variables bsicas siguen siendo 0, la solucin
actual seguir siendo ptima mientras el valor de c1 d como resultado zj cj 0 para las dos

54
Figura 22: Solucin ptima con la funcin simplex para el problema 2

variables no bsicas x3 y x5 . Entonces, se debe tener


c1 64
0 = c1 64,
5
y
24 c1
0 = c1 24.
5
Por lo tanto el intervalo de optimalidad para c1 es: 24 c1 64.
Para ver como se puede usar esta informacin en el anlisis de sensibilidad, supngase que una
variacin en el sistema que representa el modelo produce una reduccin de c1 = 50 a c1 = 30. El
intervalo de optimalidad para c1 indica que la solucin actual x1 = 30, x2 = 12, x4 = 8, sigue siendo
ptima. Para verificar esto, se vuelve a calcular la tabla simplex final haciendo c1 = 30. El cuadro

x1 x2 x3 x4 x5 RHS
z 0 0 (c1 64)/5 0 (24 c1 )/5 (480 + 30c1 )
x2 0 1 8/25 0 3/25 12
x4 0 0 8/25 1 3/25 8
x1 1 0 5/25 0 5/25 30

Cuadro 3: Tabla ptima modificada (problema 2)

55
x1 x2 x3 x4 x5 RHS
z 0 0 34/5 0 6/5 1380
x2 0 1 8/25 0 3/25 12
x4 0 0 8/25 1 3/25 8
x1 1 0 5/25 0 5/25 30

Cuadro 4: Tabla ptima para c1 = 30

Figura 23: Solucin ptima con la funcin simplex para el problema 2 despus de modificar c1

4 muestra el resultado (comprese con la figura 23). Como zj cj 0 para todas las variables, la
solucin original sigue siendo ptima. Sin embargo se tiene una reduccin en el valor del objetivo.
Si ahora se reduce el valor de c1 de 30 a 20, se observa que el valor 20 est fuera del intervalo
de optimalidad de c1 ; por ello se sabe que un cambio de esa magnitud produce una base ptima
diferente. Para verificarlo, considrese de nuevo la modificacin de la tabla simplex ptima que ya
se tena, reemplazando c1 por 20 en vez de 30. El cuadro 5 muestra la tabla resultante.
Como se poda esperar, la solucin actual (x1 = 30, x2 = 12, x4 = 8) ya no es ptima porque
z5 c5 = 45 0. Esto implica que se debe realizar por lo menos una iteracin ms del mtodo

56
x1 x2 x3 x4 x5 RHS
z 0 0 44/5 0 4/5 1080
x2 0 1 8/25 0 3/25 12
x4 0 0 8/25 1 3/25 8
x1 1 0 5/25 0 5/25 30

Cuadro 5: Tabla modificada para c1 = 20

x1 x2 x3 x4 x5 RHS
z 0 0 cx3 14/5 0 26/5 1980
x2 0 1 8/25 0 3/25 12
x4 0 0 8/25 1 3/25 8
x1 1 0 5/25 0 5/25 30

Cuadro 6: Cambio en un coeficiente de variable N.B.

simplex para llegar a la solucin ptima.

Se indicar ahora cmo encontrar el intervalo de optimalidad para las variables no bsicas. Este
caso es ms sencillo puesto que un cambio en el coeficiente de la funcin objetivo correspondiente a
una variable no bsica, ocasiona que solamente cambie el valor zj cj que corresponda de la tabla
simplex ptima.
Si se reemplaza el coeficiente que corresponde a la variable de holgura x3 , c3 = 0 por el valor cx3
en la tabla simplex ptima del problema, se obtiene la tabla mostrada en el cuadro 6.
Obsrvese que el nico cambio que se da en la tabla est en la columna que corresponde a x3 . Al
aplicar la desigualdad para calcular el intervalo de optimalidad, se tiene
14 14
cx3 0 = cx3 .
5 5
14
Por lo tanto, mientras el coeficiente de x3 en la funcin objetivo sea menor o igual a 5 , la solucin
seguir siendo ptima.

Pasos para Determinar el intervalo de Optimalidad

1. Reemplazar el valor numrico del coeficiente de la funcin objetivo para xk , con ck , en todos
los casos en que aparezca en la tabla simplex final.
2. Si la variable xk es una variable bsica, volver a calcular zj cj para cada variable no bsica;
si xk es una variable no bsica, slo es necesario volver a calcular zk ck .
3. Haciendo zj cj 0, resolver cada desigualdad a fin de obtener los lmites inferior y superior
de ck . Si existen dos o ms lmites superiores para ck , el menor de ellos es el lmite superior
del intervalo de optimalidad. Si existen dos o ms lmites inferiores, el mayor de ellos ser el
lmite inferior del intervalo de optimalidad.
4. Si el problema original es uno de minimizacin que se convirti a uno de maximizacin para
aplicar el mtodo simplex, multiplicar por 1 las desigualdades que se obtienen en el paso 3,
y cambiar el sentido de las desigualdades para obtener los intervalos de optimalidad para el
problema original de minimizacin.

Valores de los Lados Derechos

En muchos problemas de programacin lineal pueden interpretarse los valores de los lados derechos
de las restricciones (bi ) como los recursos disponibles. Los precios sombra ofrecen informacin sobre
el valor de los recursos adicionales; los intervalos correspondientes a los valores de los lados derechos

57
determinan los mrgenes dentro de los cuales esos precios sombra son vlidos.

Precios Sombra

A los cambios en el valor de la funcin objetivo por los aumentos unitarios en los valores del lado
derecho de las restricciones se les denomina precios sombra. Cuando se utiliza el mtodo simplex
para resolver un problema de programacin lineal, es fcil obtener los valores de los precios sombra;
se encuentran en la fila z de la tabla simplex final.
Considrese de nuevo la tabla final de la figura 22. Los valores zj cj para las tres variables de
holgura x3 , x4 y x5 , son z3 c3 = 2.8, z4 c4 = 0 y z5 c5 = 5.2. Entonces, el precio sombra para
la primera restriccin del problema es 2.80, para la segunda restriccin es 0.00, y para la tercera
restriccin es 5.20.
Para ver por qu son precios sombra los valores de zj cj para las variables de holgura de la tabla
simplex final, considrese primero el caso de las variables de holgura que son parte de la solucin
bsica factible ptima (variables bsica). Cada una de estas variables de holgura tiene un valor de
zj cj = 0, lo que indica un precio sombra nulo para la restriccin correspondiente.
Considrense ahora las variables de holgura no bsicas, por ejemplo x3 . La solucin al problema
arroja que el valor final z3 c3 correspondiente a la variable de holgura x3 es 2.8. Supngase que
el problema modela la operacin de una compaa ensambladora y la primera restriccin representa
el tiempo de ensamblaje para el producto que la compaa vende. Entonces se puede concluir que
2.80 u.m. es el valor que tiene para la compaa una unidad de tiempo (u.t.) de ensamblaje utilizada
en la produccin. Por ello, si se puede tener tiempo adicional, la compaa debe estar dispuesta a
pagar hasta 2.80 u.m. por cada u.t.
Se puede dar una interpretacin similar al valor de zj cj para cada una de las variables de holgura
no bsicas. Es decir, zj cj es el valor de una unidad adicional del recurso en la fila correspondiente
a esa variable de holgura.

Intervalo de Factibilidad

Como se acaba de explicar, se puede utilizar la fila z de la tabla simplex final para determinar el
precio sombra, y como resultado, pronosticar el cambio que se da en el valor de la funcin objetivo
que corresponde a un cambio unitario en el valor de bi . A continuacin lo que interesa es calcular
un intervalo de valores sobre los que pueda variar una bi especfica, sin que ninguna de las variables
bsicas actuales se convierta en no factible. A tal intervalo de valores se le denomina intervalo de
factibilidad.
Continuando con el problema 2, considrese un aumento en la cantidad disponible de tiempo de
ensamblaje (restriccin 1), de 150 a 160 u.m.; la base actual sigue ofreciendo una solucin factible?
Si la respuesta es s, dado un precio sombra de 2.80 u.m. para la restriccin de tiempo de ensamblaje,
puede esperarse un aumento de 10(2.8) = 28, en el valor de la funcin objetivo. En la figura 24 se
muestra la tabla simplex final que corresponde a un aumento de 10 u.t. en el tiempo de ensamblaje.
La misma base, que consiste en las variables bsicas x2 , x4 y x1 , es factible porque todas las variables
bsicas son no negativas. Ntese tambin que, el valor de la solucin ptima ha aumentado en 28
unidades (de 1980 a 2008).
Los nicos cambios en la tabla simplex final (en comparacin con la tabla final cuando b1 = 150)
son las diferencias en los valores de las variables bsicas y el valor de la funcin objetivo, es decir,
slo ha cambiado la ltima columna (RHS) de la tabla simplex. Los elementos de esta nueva
columna se obtuvieron simplemente sumando los 4 elementos de la columna x3 (variable de holgura
correspondiente a la 1era. restriccin), multiplicados por 10, a la ltima columna de la tabla anterior:


1980. 2.8 2008.
12. 0.32 15.2
Solucin Nueva = + 10
0.32
=
8. 4.8
30. 0.2 28.

58
Figura 24: Solucin ptima con la funcin simplex para el problema 2 despus de modificar b1

Recurdese que cada coeficiente de la columna x3 indica la magnitud de la disminucin que ocurrir
en la correspondiente variable bsica al aumentar x3 en una unidad.
El cambio en el valor de la funcin objetivo que corresponde a un aumento de una unidad en b1
est dado por el valor de zj cj en esa columna (el precio sombra). En el caso anterior, se aument
en 10 unidades la disponibilidad del tiempo se ensamblaje; por ello, se multiplicaron por 10 los 4
elementos de la columna x3 con el objeto de obtener el cambio en el valor de la solucin.
Cmo se sabe cundo un cambio en b1 es tan grande que la base en cuestin se vuelve no factible?
Se responde esta pregunta especficamente para el problema 2 que se ha venido tratando.
Se comenzar mostrando como se calculan los lmites superior e inferior para la cantidad mxima
en que puede cambiar b1 antes de que la base ptima se vuelva no factible. Ya se ha visto el modo
de encontrar los nuevos valores bsicos factibles de la solucin, para un aumento de 10 unidades en
b1 . En general, dado un cambio b1 , los nuevos valores de las variables bsicas del problema estn

59
dados por

x2 12 0.32 12 + 0.32b1
x4 = 8 + b1 0.32 = 8 0.32b1
x1 30 0.2 30 0.2b1

Mientras el nuevo valor de las variables bsicas siga siendo no negativo, la base sigue siendo factible,
y por lo tanto ptima. Se puede hacer que las variables bsicas sigan siendo no negativas limitando
el cambio en b1 (es decir b1 ), de manera que se satisfaga cada una de las siguientes condiciones:

12 + 0.32b1 0

8 0.32b1 0

30 0.2b1 0

Obsrvese que los lados izquierdos de las desigualdades anteriores representan los nuevos valores de
las variables bsicas despus de que b1 ha variado a b1 .
Despejando b1 en las desigualdades anteriores, se obtiene:

b1 12/0.32 = 37.5

b1 8/0.32 = 25

b1 30/0.2 = 150

Como deben satisfacerse las tres desigualdades, se deben satisfacer tambin los lmites ms estrictos
que tenga b1 , para que todas las variables bsicas sigan siendo no negativas. Por ello, b1 debe
satisfacer

37.5 b1 25

El tiempo inicial disponible de ensamblaje era 150 u.m. Por ello, b1 = 150 + b1 , en donde b1 es
la cantidad disponible de tiempo se ensamblaje. Se suma 150 a cada uno de los tres trminos de la
expresin anterior para obtener
112.5 150 + b1 175

Reemplazando 150 + b1 por b1 se obtiene el intervalo de factibilidad para b1 :

112.5 b1 175

Este intervalo indica que mientras el tiempo de ensamblaje se mantenga entre 112.5 y 175 u.t., la
base ptima en cuestin seguir siendo factible. Es por esto que se denomina a esta intervalo el
intervalo de factibilidad.

Problema 3
Una compaa de muebles fabrica escritorios, mesas y sillas. La produccin requiere madera, trabajo
de carpintera y trabajo de acabado.

Escritorio Mesa (m) Silla Disponibilidad


Beneficio 60 30 20
Madera (m) 8 6 1 48
Hrs. Acabado 4 2 1.5 20
Hrs. Carpinter. 2 1.5 0.5 8

60
Formulacin del modelo

x1 = no. de escritorios,
Variables de decisin: x2 = no. de mesas,
x3 = no. sillas.

Entonces se tiene el siguiente programa lineal:

M aximizar 60x1 + 30x2 + 20x3


Sujeto a 8x1 + 6x2 + x3 48
4x1 + 2x2 + 1.5x3 20
2x1 + 1.5x2 + 0.5x3 8
x1 , x2 , x3 0

Luego de resolver el problema con la rutina simplex, se obtiene la tabla final (ver figura 25).

x1 x2 x3 x4 x5 x6 RHS
z 0 5 0 0 10 10 280
x4 0 2 0 1 2 8 24
x3 0 2 1 0 2 4 8
x1 1 1.25 0 0 0.5 1.5 2

Informacin en la Tabla

Cul es la base B?
1 1 8
B = 0 1.5 4
0 0.5 2

Cul es B1 ?
1 2 8
1
B = 0 2 4
0 0.5 1.5
Cul es la solucin ptima?
Cul es el valor objetivo ptimo?
Es sorpresivo el valor objetivo ptimo?
Cul es la solucin dual ptima?
Cul es el precio sombra de la restriccin sobre la madera?
Cul es el precio sombra de la restriccin sobre las horas de acabado?
Cul es el costo reducido para x2 ?

Precios Sombra

Por qu el precio dual de la restriccin sobre las horas de acabado es 10?

Supngase que la disponibilidad de las horas de acabado es 21 (en lugar de 20).


Actualmente slo son producidos escritorios (x1 ) y sillas (x3 ).
Las restricciones asociadas a las horas de acabado y carpintera son de igualdad.

61
Figura 25: Solucin ptima con la funcin simplex para el problema 3

Este cambio hace dejar la base ptima actual?

Nueva Previa
8x1 + x3 + x4 = 48 x4 = 26 24
Nueva solucin:
4x1 + 1.5x3 = 21 x1 = 1.5 2
2x1 + 0.5x3 = 8 x3 = 10 8

Cambio en la solucin:
z 0 z = (60 1.5 + 20 10) (60 2 + 20 8) = 10

Otra comprobacin

1 2 8
1
c0B B = (0, 20, 60) 0 2 4 = (0, 10, 10)
0 0.5 1.5

Reduccin de Costos

62
Qu significa que la reduccin de costo para x2 es 5?
Supngase que la fbrica se ve forzada a producir x2 = 1 (1 mesa)
Cunto decrecer el beneficio?

8x1 + x3 + x4 +61 = 48 x4 = 26
4x1 + 1.5x3 +21 = 20 x1 = 0.75
2x1 + 0.5x3 + 1.5 1 = 8 x3 = 10
z 0 z = (60 0.75 + 20 10) (60 2 + 20 8 + 30 1) = 35 + 30 = 5

Otra forma de calcular el beneficio obtenido es como sigue: Si x2 = 1

Beneficio directo de la tabla +30


La madera se incrementa por 6 60 = 0
Las horas de acabado se incrementan por 2 2 (10) = 20
Las horas de carpinteria se incrementan por 1.5 1.5 (10) = 15
Efecto total 5

Rangos de los Coeficientes de Costos

Supngase que el beneficio por los escritorios se hace 60 + . Para qu valores de permanece
ptima la base actual?

Condiciones de optimalidad:

cj cB B1 aj 0 = w = cB B1
1 2 8
= [0, 20, (60 + )] 0 2 4
0 0.5 1.5
 
= 0, 10 0.5, 10 + 1.5

x4 , x3 , x1 son bsicas.

Reduccin de costos de variables no bsicas



6
c2 = c2 wa2 = 30 + [0, 10 0.5, 10 + 1.5] 2 = 5 + 1.25
1.5

cx5 = 10 0.5
cx6 = 10 + 1.5

Base ptima actual:



5 + 1.25 0
10 0.5 0 4 20
10 + 1.5 0

Esto implica que si 56 c1 80, la solucin contina siendo ptima; es decir, si c1 < 56 o c1 > 80,
la base actual ya no es ptima.

Rangos de los Valores de la Columa RHS

63
Supngase que la disponibilidad de horas de trabajo de acabado cambia en una cantidad (20+),
qu sucedera?

48 1 2 8 48
B1 20 + = 0 2 4 20 +
8 0 0.5 1.5 8

24 + 2
= 8 + 2
2 0.5

4 4, la base actual es ptima.

Ntese que an si la base actual es ptima, los valores de las variables que forman la solucin
ptima, cambian:
x4 = 24 + 2
x3 = 8 + 2
x1 = 2 0.5
z = 60(2 0.5) + 20(8 + 2) = 280 + 10

Supngase que = 10, entonces


x4 44
x3 = 28
x1 3

Nueva Actividad (Variable)

Supngase que la compaa tiene la oportunidad de producir taburetes. El beneficio ser 15 u.m.;
la fabricacin de un taburete requiere 1m de madera, 1 hr. de trabajo de acabado y 1 hr. de trabajo
de carpintera. Debera la compaa producir los taburetes?

M aximizar 60x1 + 30x2 + 20x3 + 15x4


8x1 + 6x2 + x3 + x4 +x5 = 48
4x1 + 2x2 + 1.5x3 + x4 +x6 = 20
2x1 + 1.5x2 + 0.5x3 + x4 x7 =8
xi 0, i = 1, . . . , 7


1
c4 cB B1 a4 = 15 (0, 10, 10) 1 = 35 0
1
La base actual todava es ptima. Entonces no se producen los taburetes.

64
3.5. Problemas Resueltos de Programacin Lineal Entera (PLE)
Problema 1
M inimizar 3x1 + 4x2
Sujeto a 3x1 + x2 4
x1 + 2x2 4
x1 , x2 0
x1 , x2 Z

Figura 26: Solucin ptima con la rutina entero2 (Scilab) para el problema 1

El problema 1 es tomado de [1] pag. 275. En la figura 26 se ve la forma de definir los parmetro, la
forma en que se pasan a la rutina entero2 y la salida generada por ella.
Problema 2
M aximizar x1 + 5x2
Sujeto a x1 + 10x2 20
x1 2
x1 , x2 0
x1 , x2 Z

En la figura 27 se ve la forma de definir los parmetros, la manera en que se pasan a la rutina


entero2 y el resultado que ella genera.

65
Figura 27: Solucin ptima con la rutina entero2 (Scilab) para el problema 2

Problema 3
M aximizar 5x1 + 4x2
Sujeto a x 1 + x2 5
10x1 + 6x2 45
x1 3
x1 , x2 0
x1 , x2 Z

La figura 28 muestra la manera de definir los parmetros, la forma en que se pasan a la rutina
entero2 y el resultado generado por ella.

66
Figura 28: Solucin ptima con la rutniaentero2 (Scilab) para el problema 3

67
Parte IV
Pregunta 4
4. Manual de Uso de las Rutinas Programadas
4.1. Librera
Hay dos maneras de utilizar las rutinas programadas para este trabajo. La primera manera de hacerlo
es copiar los archivos de extensin .sci contenidos en el CD en una carpeta en el Disco Duro, y luego
usar el comando Scilab genlib el cual genera versiones binarias de los scripts que quedan inmediatamente
disponibles para ser utilizados.

Supngase que se copian los archivos .sci en la carpeta llamada libreria en la raz del Disco Duro C. A
continuacin se ejecuta la orden
-->genlib("milibreria","C:\libreria")
-->milibreria
milibreria =

Ubicacin de los archivos de funcin : C:\libreria\.

asccv dual entero2 revisado simplex

-->

La funcin genlib genera los siguientes archivos en la carpeta "C:\libreria"


asccv.bin: la versin binaria de la funcin asccv.sci,
dual.bin: la versin binaria de la funcin dual.sci,
entero2.bin: la versin binaria de la funcin entero2.sci,
revisado.bin: la versin binaria de la funcin revisado.sci,
simplex.bin: la versin binaria de la funcin simplex.sci,
lib: una versin binaria de la libreria,
names: un archivo de texto que contiene la lista de funciones de la libreria.
Otra forma de utilizar las funciones es cargar la librera directamente con el comando lib. Se puede
cargar directamente desde el CD. Para esto se ejecuta la orden
-->milibreria = lib("C:\libreria")
milibreria =

Ubicacin de archivos de funcin: C:\libreria\.

asccv dual entero2 revisado simplex

-->

Si se quiere cargar desde el CD simplemente se sustituye la letra de unidad del lector de CD/DVD
por C: en la lnea de comando.
Una vez realizado alguno de estos procedimientos las funciones se pueden ejecutar de la manera en
que se muestra en las figuras 6, 7, . . . , 25.

A continuacin se da una descripcin de cada rutina programada.

68
4.2. Rutina simplex
Los programas lineales resueltos tienen la forma: min/max z(x), s.a Ax b, x 0; donde A es una
matriz m n de nmeros reales, b es un m-vector de nmeros reales no negativos y x es un n-vector de
nmeros reales.

Nombre
simplex - solver para programas lineales

Secuencia de Llamada
[zopt,xopt] = simplex(c,A,b,?)

Parmetros
c - Vector fila de valores reales de coeficientes de costo (dimensin n).

A - Matriz de valores reales de coeficientes de las


restricciones (dimensin m x n).

b - Vector fila de valores reales de los lados derechos de las


restricciones (dimensin m).

? - Representa el valor 0 cuando se trata de un problema de minimizacin


y el valor 1 cuando se trata de un problema de maximizacin.

Descripcin
[zopt,xopt] = simplex(c,A,b,0) Minimiza c*x bajo las restriccin A*x <= b, x >= 0.

[zopt,xopt] = simplex(c,A,b,1) Maximiza c*x bajo las restriccin A*x <= b, x >= 0.

Ejemplo
-->// Encontrar en R^2 el punto (x1,x2) tal que sea el punto donde ocurre el
-->// valor mximo de la funcin:
-->// 200*x1 + 160*x2
-->// sujeto a las restricciones:
-->// 5*x1 + 3*x2 <= 105
-->// 2*x1 + 4*x2 <= 70
-->// x1 >= 0
-->// x2 >= 0
-->c = [200 160];
-->A = [5 3; 2 4];
-->b = [105 70];
-->[zopt,xopt] = simplex(c,A,b,1)
xopt =
15.
10.
zopt =
4600.

69
4.3. Rutina revisado
Los programas lineales resueltos tienen la forma: max z(x), s.a Ax b, x 0; donde A es una matriz
m n de nmeros reales, b es un m-vector de nmeros reales no negativos y x es un n-vector de nmeros
reales.

Nombre
revisado - solver para programas lineales

Secuencia de Llamada
[zopt,xopt] = revisado(c,A,b,?)

Parmetros
c - Vector fila de valores reales de coeficientes de costo (dimensin n).

A - Matriz de valores reales de coeficientes de las


restricciones (dimensin m x n).

b - Vector fila de valores reales de los lados derechos de las


restricciones (dimensin m).

? - Representa el valor 0 cuando se trata de un problema de minimizacin


y el valor 1 cuando se trata de un problema de maximizacin.

Descripcin
[zopt,xopt] = revisado(c,A,b,0) Minimiza c*x bajo las restricciones A*x <= b, x >= 0.

[zopt,xopt] = revisado(c,A,b,1) Maximiza c*x bajo las restricciones A*x <= b, x >= 0.

Ejemplo
-->// Encontrar en R^3 el punto (x1,x2,x3) tal que sea el punto donde ocurre el
-->// valor mximo de la funcin:
-->// 10*x1 + 15*x2 + 5*x3
-->// sujeto a las restricciones:
-->// 2*x1 + x2 <= 6000
-->// 3*x1 + 3*x2 + x3 <= 9000
-->// x1 + 2*x2 + 2*x3 <= 4000
-->// x1 >= 0
-->// x2 >= 0
-->// x3 >= 0
-->c = [10 15 5];
-->A = [2 1 0; 3 3 1; 1 2 2];
-->b = [6000 9000 4000];
-->[zopt,xopt] = revisado(c,A,b,1)
xopt =
2000.
1000.
0.
zopt =
35000.

70
4.4. Rutina dual
Los programas lineales resueltos tienen la forma: min z(x), s.a Ax b, x 0; donde A es una matriz
m n de nmeros reales, b es un m-vector de nmeros reales no negativos y x es un n-vector de nmeros
reales.

Nombre
dual - solver para programas lineales aplicando el mtodo simplex dual

Secuencia de Llamada
[zopt,xopt] = dual(c,A,b,?)

Parmetros
c - Vector fila de valores reales de coeficientes de costo (dimensin n).

A - Matriz de valores reales de coeficientes de las


restricciones (dimensin m x n).

b - Vector fila de valores reales de los lados derechos de las


restricciones (dimensin m).

? - Representa el valor 0 cuando se trata de un problema de minimizacin


y el valor 1 cuando se trata de un problema de maximizacin.

Descripcin
[zopt,xopt] = dual(c,A,b,0) Minimiza c*x bajo las restricciones A*x >= b, x >= 0.

[zopt,xopt] = dual(c,A,b,1) Maximiza c*x bajo las restricciones A*x >= b, x >= 0.

Ejemplo
-->// Encontrar en R^4 el punto (x1,x2,x3,x4) tal que sea el punto donde ocurre el
-->// valor mnimo de la funcin:
-->// 4*x1 + 15*x2 + 12*x3 + 2*x4
-->// sujeto a las restricciones:
-->// 2*x2 + 3*x3 + x4 >= 1
-->// x1 + 3*x2 + x3 - x4 >= 1
-->// x1 >= 0
-->// x2 >= 0
-->// x3 >= 0
-->// x4 >= 0
-->c = [4 15 12 2];
-->A = [0 2 3 1; 1 3 1 -1];
-->b = [1 1];
-->[zopt,xopt] = dual(c,A,b,0)
xopt =
0.
0.2857143
0.1428571
0.
zopt =
6.

71
4.5. Rutina asccv
Los programas lineales resueltos son de la forma: min z(x), s.a Ax b, x 0; donde A es una matriz
m n de nmeros reales, b es un m-vector de nmeros reales no negativos y x es un n-vector de nmeros
reales. Se ejecutan iteraciones adicionales sobre la tabla simplex final en caso de que la modificacin del
coeficiente de costo especificado ocasione que la solucin actual deje de ser ptima.

Nombre
asccv - solver para programas lineales aplicando el mtodo simplex (anlisis
de sensibilidad)

Secuencia de Llamada
[zopt,xopt,topt,ib,inb] = asccv(c,b,ic,nv,IB,INB,tabla,?)

Parmetros
c - Vector fila de valores reales de coeficientes de costo (dimensin n).

b - Vector fila de valores reales de los lados derechos de las


restricciones (dimensin m).

ic - Identifica el coeficiente a ser modificado.

nv - Indica el nuevo valor del coeficiente modificado.

IB - Indices de los coeficientes de costo asociados a las variables bsicas en


la solucin ptima del programa lineal examinado antes de ser modificado
el valor del coeficiente.

INB - Indices de los coeficientes de costo asociados a las variables no bsicas


en la solucin ptima del programa lineal examinado antes de ser modificado
el valor del coeficiente.

? - Representa el valor 0 cuando se trata de un problema de minimizacin


y el valor 1 cuando se trata de un problema de maximizacin.

Descripcin
[zopt,xopt,t,ib,inb] = asccv(c,b,ic,nv,IB,INB,tabla,0) -

- Minimiza c*x bajo las restricciones A*x >= b, x >= 0.

[zopt,xopt,t,ib,inb] = asccv(c,b,ic,nv,IB,INB,tabla,1) -

- Maximiza c*x bajo las restricciones A*x >= b, x >= 0.

Ejemplo
-->// Verificar si la solucin ptima al siguiente programa lineal es sensible a un
-->// cambio en uno de los coeficientes de costo.
-->// Encontrar en R^3 el punto (x1,x2,x3) en el que ocurre el valor mnimo
-->// de la funcin:
-->// -2*x1 + x2 - x3
-->// sujeto a las restricciones:
-->// x1 + x2 + x3 <= 6

72
-->// -x1 + 2*x2 <= 4
-->// x1 >= 0
-->// x2 >= 0
-->// x3 >= 0
-->c = [-2 1 -1];
-->A = [1 1 1; -1 2 0];
-->b = [6 4];
-->[zopt,xopt,tabla,IB,INB] = simplex(c,A,b,0)
INB =
4. 2. 3.
IB =
1. 5.
tabla =
0. -3. -1. -2. 0. -12.
1. 1. 1. 1. 0. 6.
0. 3. 1. 1. 1. 10.
xopt =
6.
0.
0.
zopt =
-12.

-->// Con la funcin asccv se ve que sucede si el coeficiente a1 = -2 es cambiado a 0


-->[z,x,t,ib,inb] = asccv(c,b,1,0,IB,INB,tabla,0)
inb =
4. 2. 1.
ib =
3. 5.
t =
-1. -2. 0. -1. 0. -6.
1. 1. 1. 1. 0. 6.
-1. 2. 0. 0. 1. 4.
x =
0.
0.
6.
z =
-6.

4.6. Rutina entero2


Los programas lineales resueltos tienen la forma: min z(x), s.a Ax b, x 0, x Z; max z(x), s.a
Ax b, x 0, x Z; donde A es una matriz m n de nmeros reales, b es un m-vector de nmeros
reales no negativos y x es un n-vector.

Nombre
entero2 - solver para programas lineales cuya solucin debe ser entera

Secuencia de Llamada
[zopt,xopt,topt,ib,inb] = entero2(c,A,sentido,b,?)

Parmetros

73
c - Vector fila de valores reales de coeficientes de costo (dimensin n).

A - Matriz de valores reales de coeficientes de las


restricciones (dimensin m x n).

sentido - Vector que se utiliza para indicar el sentido de cada desigualdad


(dimension m):
0 - Menor o igual que ( <= ),
1 - Igual que ( = ),
2 - Mayor o igual que ( >= ).

b - Vector fila de valores reales de los lados derechos de las


restricciones (dimensin m).

? - Representa el valor 0 cuando se trata de un problema de minimizacin


y el valor 1 cuando se trata de un problema de maximizacin.

Descripcin
[zopt,xopt,t,ib,inb] = entero2(c,A,sentido,b,0) -

- Minimiza c*x bajo las restricciones A*x (<=,=,>=) b, x >= 0.

[zopt,xopt,t,ib,inb] = entero2(c,A,sentido,b,1) -

- Maximiza c*x bajo las restricciones A*x (<=,=,>=) b, x >= 0.

Ejemplo
-->// Encontrar en R^2 el punto (x1,x2), con x1,x2 nmero enteros no negativos, en el que
-->// ocurre el valor mnimo de la funcin:
-->// -8*x1 - 5*x2
-->// sujeto a las restricciones:
-->// x1 + x2 <= 6
-->// 9x1 + 5*x2 <= 45
-->// x1 >= 0
-->// x2 >= 0
-->// x1, x2 enteros
-->c = [-8 -5];
-->A = [1 1; 9 5];
-->sentido = [0 0];
-->b = [6 45];
-->[zopt,xopt] = entero2(c,A,sentido,b,0)
xopt =
5.
0.
zopt =
-40.

74
Referencias
[1] Mokhtar S. Bazaraa, John J. Jarvis. Linear Programming and Network Flows. Wiley, 1977.

[2] John Abreu, Libuska Juricek, Oswaldo Monagas, Jos Ramn Ortiz, Sergio Rivas. Introduccin a la
teora de la optimizacin. Universidad Nacional Abierta, 1985.
[3] Juan Prawda. Mtodos y modelos de Investigacin de Operaciones. Limusa, 2000.
[4] http://en.wikipedia.org/wiki/List_of_optimization_software

[5] http://www.i2c2.aut.ac.nz/Wiki/OPTI/index.php/Probs/LP
[6] http://www.konradlorenz.edu.co/images/stories/suma_digital_matematicas/Metodo simplex.pdf
[7] http://www.investigaciondeoperaciones.net/metodo_simplex_dual.html

[8] http://efrainpadilla.wikispaces.com/file/view/sensibilidad+y+dualidad+simplex.pdf
[9] http://es.scribd.com/doc/67943541/Ejercicios-Resueltos-Programacion-Lineal

75

Das könnte Ihnen auch gefallen