Beruflich Dokumente
Kultur Dokumente
REA DE MATEMTICA
OPTIMIZACIN (771)
TAREA 2013-1
Jos G. Gmez A., C.I. 12030397
C.L. CARABOBO
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.
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
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:
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
3
Figura 2: Suma de vectores.
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
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
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
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 .
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.
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
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.
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
Entonces
1 1 1 5 0 3 1
C = AB = 4 2 5 3 0 = 19 5
2 0 1 1 1 11 1
Matrices Especiales
MATRIZ 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 .
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.
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
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
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
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
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
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.
Conjuntos Convexos
12
Puntos 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.
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
d 0, d 6= 0, y Ad = 0
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 :
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.
Una funcin f es cncava si y slo si f es convexa. Esto se puede establecer de la siguiente manera:
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.
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.
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.
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.
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 3. Si una solucin ptima existe, entonces un punto extremo ptimo (o equivalentemente una
solucin bsica factible ptima) existe.
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
Paso de Inicializacin
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
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.
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.
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.
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.
La definicin precedente del problema dual conduce a relaciones importantes entre los programas
lineales primal y dual.
21
Como ejemplo de la aplicacin de este lema considrese el siguiente programa lineal y su dual:
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.
Este corolario indica que la no acotabilidad en uno de los problemas implica la infactibilidad en el
otro problema.
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.
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
(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.
M inimizar cx
Sujeto a Ax b
x0
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
= 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
n
X
Sujeto a aij xj bi i = 1, 2, . . . , m
j=1
xj 0 j = 1, 2, . . . , n
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.
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
26
Caso I: xk es no bsica
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
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.
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
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
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.
Caso: xj bsica
En este caso
cB
cB = cB + ej
Entonces,
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.
29
Condiciones de optimalidad:
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)
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)
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.
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,
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
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:
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.
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:
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).
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
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.
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
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.
Paso de Inicializacin
Encontrar una base B del problema primal tal que zj cj = cB B1 aj cj 0 para todo j.
Paso Principal
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).
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:
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.
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)
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.
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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.
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.
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
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.
60
Formulacin del modelo
x1 = no. de escritorios,
Variables de decisin: x2 = no. de mesas,
x3 = no. sillas.
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
61
Figura 25: Solucin ptima con la funcin simplex para el problema 3
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
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.
cx5 = 10 0.5
cx6 = 10 + 1.5
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.
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
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 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?
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
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 =
-->
-->
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.
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).
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).
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).
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).
Descripcin
[zopt,xopt,t,ib,inb] = asccv(c,b,ic,nv,IB,INB,tabla,0) -
[zopt,xopt,t,ib,inb] = asccv(c,b,ic,nv,IB,INB,tabla,1) -
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.
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).
Descripcin
[zopt,xopt,t,ib,inb] = entero2(c,A,sentido,b,0) -
[zopt,xopt,t,ib,inb] = entero2(c,A,sentido,b,1) -
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