Está en la página 1de 49

Análisis de Sistemas e Inv.

de Operaciones
Curso de OPTIMIZACION

SECCION 3

PROGRAMACION LINEAL
(Notas de clases en revisión y solo para propósitos del curso)

Prof. José Ascencio Castillo


Departamento Ing. Minas-USACH

Marzo 2008
Análisis de Sistemas e Inv. de Operaciones
Curso de OPTIMIZACION

En la vejez la ciencia es para nosotros un cómodo


refugio; y si no la plantamos de jóvenes, no nos dará
sombra cuando seremos viejos.
Conde de Chesterfield (1694-1773) Político y escritor
inglés.
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Índice

1. Problemas lineales: planteamiento general 1

2. Aplicaciones económicas 8

3. Resultados fundamentales 12

4. Método del Simplex 16


4.1. Algoritmo del Simplex: versión matricial y caso del Máximo . . . 16
4.2. Variables artificiales: Métodos de las penalizaciones y de las dos
fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. La tabla del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 23

5. Dualidad 30
5.1. Método Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.1. Simplex Dual Extendido . . . . . . . . . . . . . . . . . . . 33
5.1.2. Lexicografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6. Problemas propuestos 37

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

En este tema estudiaremos la técnica de optimización más importante (y más


usada en la práctica), como es la Programación Lineal, en donde tanto la fun-
ción objetivo como las restricciones son lineales. La mayorı́a de los problemas
prácticos de optimización o bien son lineales o bien admiten una buena apro-
ximación lineal, y su proceso de resolución es bastante eficiente utilizando el
método conocido como algoritmo del Simplex .
El tema está dividido en cuatro partes: en la primera se establece la terminologı́a
fundamental y una primera forma de resolución con un planteamiento geométri-
co y algebraico, en la segunda se estudian algunas aplicaciones concretas en el
terreno de la Economı́a, en la tercera se estudia en detalle el algoritmo del Sim-
plex, y en la cuarta se estudia el llamado algoritmo primal–dual , basado en el
concepto de dualidad para el caso particular de los programas lineales.

1. Problemas lineales: planteamiento general

A lo largo de este tema se considerará el abierto Ω = IRn , puesto que las fun-
ciones lineales no van a plantear ningún problema de diferenciabilidad en ningún
punto.
Un programa lineal se presenta en forma estándar cuando todas sus restricciones
son de igualdad y sus variables no negativas:


 Min/Max c1 x1 + c2 x2 + . . . + cn xn



 
 a11 x1 + a12 x2 + . . . + a1n xn = b1
 21 x1 + a22 x2 + . . . + a2n xn = b2
a
 

[I]

 sujeto a ·································
a x + am2 x2 + . . . + amn xn = bm
 
 m1 1

 

 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

Un programa lineal se presenta en forma canónica cuando todas sus restricciones


son de desigualdad y sus variables no negativas. El sentido de las desigualdades
depende de que se trate de un problema de Minimización o de Maximización.
• Para el caso de Minimización el problema tiene la siguiente forma:


 Minimizar c1 x1 + c2 x2 + . . . + cn xn



 
 a11 x1 + a12 x2 + . . . + a1n xn ≥ b1
 a21 x1 + a22 x2 + . . . + a2n xn ≥ b2
 

[II]

 sujeto a ·································
a x + am2 x2 + . . . + amn xn ≥ bm
 
 m1 1

 

 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

• Para el caso de Maximización el problema tiene la siguiente forma:



 Minimizar c1 x1 + c2 x2 + . . . + cn xn




 
 a11 x1 + a12 x2 + . . . + a1n xn ≤ b1
 a21 x1 + a22 x2 + . . . + a2n xn ≤ b2
 

[III]

 sujeto a ·································
a x + am2 x2 + . . . + amn xn ≤ bm
 
 m1 1

 

 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

En todos estos problemas, los números reales cj , bij y bi (i = 1, . . . , m y j =


1, . . . , n) son constantes (datos del problema) y las variables a determinar en la
resolución del problema son x1 , . . . , xn .
Es inmediato ver que todo problema lineal puede reducirse a cualquiera de las
formas anteriores utilizando las siguientes reglas:

(i) Si multiplicamos por −1 los dos miembros de una desigualdad, ésta cambia
de sentido.
(ii) Una restricción de igualdad
ai1 x1 + ai2 x2 + . . . + ain xn = bi
equivale a dos restricciones de desigualdad

ai1 x1 + ai2 x2 + . . . + ain xn ≤ bi
ai1 x1 + ai2 x2 + . . . + ain xn ≥ bi

(iii) Una restricción de desigualdad


ai1 x1 + ai2 x2 + . . . + ain xn ≤ bi
puede transformarse en una restricción de igualdad mediante la intro-
ducción de una nueva variable no negativa xn+i , denominada variable de
holgura, sumada en el miembro de la izquierda
ai1 x1 + ai2 x2 + . . . + ain xn + xn+i = bi
Análogamente, una restricción de desigualdad
ai1 x1 + ai2 x2 + . . . + ain xn ≥ bi
puede transformarse en una restricción de igualdad mediante la introduc-
ción de una nueva variable de holgura xn+i ≥ 0, restada al miembro de la
izquierda
ai1 x1 + ai2 x2 + . . . + ain xn − xn+i = bi

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

(iv) Maximizar una función objetivo f equivale a minimizar la función −f , y


viceversa.

En caso de que se aplique la regla (iii), las variables de holgura añadidas no


aparecerán en la función objetivo, lo cual se interpretan como que van con
coeficiente cero.
Al transformar un problema lineal de una forma a otra no varı́a ni el conjunto
factible ni el conjunto de puntos extremos, por lo que podemos emplear siempre
la forma que más nos interese para resolver dicho problema.

Nota 1.1 (Restricciones sobre las variables) Las variables que se usen en
un programa lineal han de estar sujetas por la restricción de no negatividad

xi ≥ 0, ∀i

En caso de no ser ası́ han de usarse las reglas siguientes:

1. Multiplicar por −1 para cambiar de sentido la desigualdad y hacer un cam-


bio de variable: si xi ≤ εi entonces yi := −xi ≥ −εi .

2. Hacer una cambio de variable (traslación), si es necesario, para que la


nueva variable sea no negativa: si xi ≥ δi entonces yi := xi − δi ≥ 0.

3. Si una variable no está restringida (es decir, puede tomar cualquier valor
real, negativo o no negativo), entonces se escribe como diferencia de dos
nuevas variables no negativas: xi := z − t, donde z ≥ 0 y t ≥ 0.
Nótese que dando todos los posibles valores no negativos a z y t se obtienen
todos los posibles valores de xi , aunque haya combinaciones repetidas (por
ejemplo: z = 1 y t = 0 da lugar al mismo valor de xi = z − t que z = 2 y
t = 1).

4. Por último, es evidente que si alguna variable xi está restringida por una
igualdad con una constante, lo lógico es sustituir dicho valor en todas las
apariciones de xi y podemos eliminar una variable que no va a influir en
la solución del problema.

Evidentemente, todos los cambios que se realicen para conseguir las restriccio-
nes de no negatividad de las variables deben reflejarse tanto en el resto de las
restricciones como en la función objetivo, y preferiblemente antes de transformar
una forma (estándar o canónica) en otra.

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Asimismo, tanto la función objetivo como cualquiera de las restricciones pueden


multiplicarse por una constante positiva sin que afecte a la solución. Por ejem-
plo, minimizar 2x+2y es equivalente a minimizar x+y, o la restricción 2x+4y ≤
8 es equivalente a x + 2y ≤ 4, etcetera.

Usaremos a partir de ahora la siguiente notación matricial:


     
c1 x1 b1
 c2   x2   b2 
C= .  X= .  B= .
     
 ..   ..   ..


cn xn bm

 
a11 a12 . . . a1n
 a21 a22 . . . a2n 
A=
 
 . . . . . . ... . . .


am1 am2 . . . amn

De esta forma, el problema [I] puede escribirse de la manera siguiente:


t

 Min/Max C  ·X
[I] A·X=B
 sujeto a
X≥0

Si denotamos    
a11 a1n
 a21   a2n 
P1 =  ..  , . . . , Pn =  ..
   

 .   . 
am1 amn
las restricciones del programa pueden también escribirse como

x 1 P1 + x 2 P2 + . . . + x n Pn = B
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

lo que permite asociar cada variable a una columna de la matriz A.


Utilizando los resultados del tema 2 (sobre conjuntos convexos y funciones con-
vexas), es fácil ver que el conjunto factible del problema [I]

F = {X ∈ IRn | A · X = B ∧ X ≥ 0}

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

es un politopo (un poliedro, en caso de ser acotado), y por tanto un conjunto


convexo. Los elementos de F se llaman soluciones factibles, y si F es vacı́o se
dice que el problema es infactible (o no factible).
Por otra parte, la función objetivo es lineal, y por tanto es a la vez cóncava y
convexa. Como consecuencia, los programas lineales son convexos y sus óptimos
(tanto máximos como mı́nimos) son globales y se alcanzan (en caso de existir,
es decir, en caso de compacidad) en puntos extremos de F .
Una buena idea para buscar una solución factible óptima es buscar entre los pun-
tos extremos, sobre todo si el conjunto factible es un poliedro (compacto). Este
argumento, de tipo topológico y geométrico, es el que usaremos a continuación,
como primera aproximación a la resolución de programas lineales.
Siguiendo las notaciones introducidas en esta sección, supondremos a partir de
ahora que
rango(A) = rango(A|B) = m
En particular, se deduce que m ≤ n, pues si no existirı́an restricciones redun-
dantes y podrı́an ser eliminadas. Hay que notar que la anterior condición sobre
el rango significa, como ya se sabe del Álgebra Lineal, que el sistema lineal
contenido en la forma estándar es compatible (aunque probablemente indeter-
minado), y esto condición necesaria para que el programa planteado sea factible.
La siguiente definición será fundamental en este apartado.

Definición 1.2 En las condiciones anteriores, sea Ab es una matriz cuadrada


m × m no singular (de rango m), formada por m columnas linealmente indepen-
dientes de A, y sea Anb la matriz m × (n − m) cuyas columnas son las restantes
que no están en Ab . Las matrices Ab y Anb se denominan matriz básica y matriz
no básica, respectivamente.
Denotemos por Xb y Xnb los vectores cuyas componentes son las variables aso-
ciadas (respectivamente) a las matrices Ab y Anb , variables que se denominan,
respectivamente, variables básicas y no básicas.
Ası́, tomando Xb = A−1 b · B y Xnb = 0, diremos que (Xb , 0) es una solución
básica. Si dicha solución básica verifica las restricciones Xb ≥ 0 se llamará solu-
ción factible básica, y ésta será degenerada si alguna de las componentes de X b
es cero, siendo no degenerada en caso contrario.
Nótese que una solución básica es una solución particular del sistema lineal
contenido en la forma estándar, donde se da a todos los parámetros el valor
cero una vez se ha escogido, precisamente, qué variables van a ser parámetros. El
problema es que tal solución del sistema lineal puede no cumplir las restricciones

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

de no negatividad, con las que adquirirı́a la condición de ser solución factible


básica.

Nótese que, a pesar de la notación (Xb , 0), no necesariamente las variables


básicas son las m primeras. No obstante, podemos permutar las variables x k
sin que afecte ni a la naturaleza ni a las soluciones del problema con lo que, sin
pérdida de generalidad, podemos suponer que las variables básicas son precisa-
mente x1 , . . . , xm , lo cual simplifica notablemente la notación.
Es evidente, por otra parte, que el número de soluciones factibles básicas de F
es, a lo sumo, el número de submatrices de A de tamaño m × m, es decir
 
n
m
El siguiente resultado, que no demostraremos, garantiza la existencia de solu-
ciones factibles básicas.

Proposición 1.3 Dado el programa lineal en forma estándar [I] con la condi-
ción rango(A) = m, si el conjunto factible F es no vacı́o, entonces el programa
posee al menos una solución factible básica.

El contrarrecı́proco de la proposición anterior tiene también una interpretación


interesante: si no es posible encontrar ninguna solución factible básica entonces
podemos deducir que el programa planteado no es factible.
Por otra parte, se tiene la siguiente caracterización geométrica de las soluciones
factibles básicas:

Proposición 1.4 En las condiciones de la proposición 1.3, y suponiendo que


F 6= ∅, entonces X ∈ F es solución factible básica si y sólo si X ∈ F es un
punto extremo de F .

En consecuencia, podemos deducir  quesi el programa [I] es factible entonces su


n
conjunto factible F tiene a lo más puntos extremos.
m
Resumiendo los resultados fundamentales de Programación Convexa aplicados
al caso lineal, podemos establecer el siguiente resultado (para el caso del máximo
es análogo).

Teorema 1.5 En las condiciones de la proposición 1.4, se tiene que:

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

(1) Si el conjunto factible F es acotado, entonces el programa lineal alcanza


el mı́nimo y el máximo global en uno de los puntos extremos (soluciones
factibles básicas) de F .

(2) Si el programa lineal posee una solución factible óptima (mı́nima o máxi-
ma) finita, entonces también admite una solución factible básica óptima
(mı́nima o máxima, y finita).

(3) Si el mı́nimo del programa se alcanza en más de un punto extremo (solu-


ciones factibles básicas alternativas), entonces el objetivo es también mı́ni-
mo en cualquier punto que sea combinación lineal convexa de dichos pun-
tos.

Del teorema anterior se deduce un procedimiento (teórico) para la obtención


de las soluciones óptimas (mı́nimas o, análogamente, máximas) de un programa
lineal:

(1) Hallar todas las soluciones factibles básicas


  (puntos extremos) del conjunto
n
factible F , cuyo número es a lo más .
m
(2) Evaluar la función objetivo en dichos puntos.

(3) Elegir aquellos puntos extremos en donde la función objetivo sea mı́nima
(o máxima, análogamente).

Ahora bien, este método no puede considerarse eficiente por varios motivos:

El procedimiento no detecta ciertos casos extremos (problema no acotado,


solución no acotada . . . ).

En problemas de gran dimensión (número de variables y de restricciones)


el número de soluciones factibles básicas (puntos extremos) suele ser muy
elevado, lo cual supone mucho tiempo en calcularlos.

Para resolver problemas de Programación Lineal de manera eficiente se utiliza el


llamado algoritmo del Simplex , que estudiaremos más adelante en este capı́tulo,
y que se utiliza mucho en la práctica. Dicho método consiste básicamente en ma-
nipulaciones lineales de matrices y comprobaciones de tipo numérico, que pueden
interpretarse como un algoritmo voraz con cierta interpretación geométrica y
combinatoria, como ya veremos.

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

2. Aplicaciones económicas

Veremos brevemente en este apartado algunos modelos económicos clásicos que


se suelen plantear (y resolver) mediante programas lineales.

Ejemplo 2.1 (El problema de la dieta) Consideremos una granja dedicada


a la crı́a de pollos, y supongamos que éstos deben ser alimentados a partir de
n productos alimenticios (trigo, maı́z, etc), los cuales contienen distintas canti-
dades de m nutrientes (vitaminas, proteı́nas, grasas, etc).
El problema (de la dieta) consiste en determinar la cantidad de cada uno de
los alimentos que ha de constituir la dieta de los pollos, teniendo en cuenta
que en ella debe haber unas cantidades mı́nimas de los citados nutrientes, y de
forma que el coste de la dieta sea mı́nima. Dicho problema puede plantearse en
términos de un programa lineal de la siguiente manera:

Sean x1 , . . . , xn las cantidades (variables a determinar) de cada uno de los


n alimentos.

Sean c1 , . . . , cn los precios unitarios (por unidad) de cada uno de dichos


alimentos.

Sean b1 , . . . , bm las cantidades mı́nimas de cada uno de los m nutrientes


que ha de contener la dieta.

Sea aij (i = 1, . . . , m y j = 1, . . . , n) la cantidad de nutriente i que


contiene una unidad de alimento j.

Ası́, el problema se reduce a resolver el siguiente programa lineal:



 Minimizar c1 x1 + c2 x2 + . . . + cn xn



 
 a11 x1 + a12 x2 + . . . + a1n xn ≥ b1
 a21 x1 + a22 x2 + . . . + a2n xn ≥ b2
 


 sujeto a ·································
a x + am2 x2 + . . . + amn xn ≥ bm
 
 m1 1

 

 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

Ejemplo 2.2 (El problema del transporte) Consideremos una empresa que
posee m fábricas dedicadas a la producción de un mismo producto, que se comer-
cializa en n puntos de venta. Supongamos que cada fábrica posee una capacidad
de producción limitada (para el producto considerado) en un perı́odo de tiempo

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

considerado (por ejemplo, un año), y que cada uno de los puntos de venta ha de
recibir (en dicho perı́odo) una cantidad determinada del producto.
El problema que se plantea (problema del transporte) es determinar las canti-
dades de producto que cada fábrica i ha de enviar a cada punto de venta j, de
forma que el coste del transporte sea mı́nimo. Dicho problema se modeliza de la
siguiente forma:

Sea xij (i = 1, . . . , m y j = 1, . . . , n) el número de unidades (variables


a determinar) de producto que hay que transportar desde la fábrica i al
punto de venta j.

Sea cij (i = 1, . . . , m y j = 1, . . . , n) el coste de transportar una unidad


del producto desde la fábrica i al punto de venta j.

Sean a1 , . . . , am las capacidades productivas de cada una de las fábricas.

Sean b1 , . . . , bn las cantidades de producto que han de recibir cada uno de


los puntos de venta.

Ası́, se ha de resolver el siguiente programa lineal:

Minimizar c11 x11 + . . . + c1n x1n + · · · + cm1 xm1 + . . . + cmn xmn




 



 
 x11 + x12 + . . . + x1n = a1







 ························
 xm1 + xm2 + . . . + xmn = am
 


 sujeto a x11 + x21 + . . . + xm1 = b1
 ························

 


 
x + x2n + . . . + xmn = bn

 

 1n

 

x11 ≥ 0, . . . , xmn ≥ 0

Ejemplo 2.3 (El problema de la producción) En el problema de la pro-


ducción se pueden plantear (en principio) dos cuestiones: maximizar ingresos
o minimizar costes.

Problema de la producción para maximizar ingresos:


Consideremos una empresa dedicada a la producción de n bienes (o pro-
ductos), para lo que debe utilizar m factores productivos (o recursos) que
dispone en una cantidad limitada (en un perı́odo de tiempo fijado, por
ejemplo, disponibilidad diaria). El objetivo consiste en maximizar el in-
greso por la venta de lo producido, sabiendo los precios de venta de cada

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

producto, y suponiendo que se va a vender todo lo producido (es decir, sin


tener en cuenta la demanda). El planteamiento es el siguiente:

Sean x1 , . . . , xn las cantidades (variables a determinar) que hay que


producir de cada uno de los n posibles productos.
Sean c1 , . . . , cn los precios de venta unitarios de cada uno de dichos
productos.
Sean b1 , . . . , bm las disponibilidades (en el perı́odo temporal fijado) de
cada uno de los factores productivos.
Sea aij (i = 1, . . . , m y j = 1, . . . , n) la cantidad del factor produc-
tivo i necesaria para producir una unidad del producto j.

Como se puede observar, en este problema no se tienen en cuenta los


costes de los factores productivos. Ası́, el problema se reduce a resolver el
siguiente programa lineal:


 Maximizar c1 x1 + c2 x2 + . . . + cn xn



 
 a11 x1 + a12 x2 + . . . + a1n xn ≤ b1
 a21 x1 + a22 x2 + . . . + a2n xn ≤ b2
 


 sujeto a ·································
 am1 x1 + am2 x2 + . . . + amn xn ≤ bm

 


 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0
 

Problema de la producción para minimizar costes:


En este caso, la empresa produce m bienes, de los que ha de satisfacer una
determinada demanda, y ha de utilizar n factores productivos. El objetivo
es ahora minimizar costes, para lo cual habrá que determinar que canti-
dades de factores productivos hay que emplear para satisfacer la demanda
de productos. El planteamiento es ahora el siguiente:

Sean x1 , . . . , xn las cantidades (variables a determinar) que hay que


utilizar de cada uno de los n factores productivos.
Sean c1 , . . . , cn los costes unitarios de cada uno de dichos factores
productivos.
Sean b1 , . . . , bm las cantidades demandadas de cada uno de los m
productos.
Sea aij (i = 1, . . . , m y j = 1, . . . , n) las unidades producidas del
bien i por cada unidad empleada del recurso j.

10

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Como se puede observar, en este caso no se tiene en cuenta la disponibili-


dad de recursos ni los precios de venta de los productos. Ası́, el problema
se reduce a resolver el siguiente programa lineal:


 Minimizar c1 x1 + c2 x2 + . . . + cn xn



 
 a11 x1 + a12 x2 + . . . + a1n xn ≥ b1
 a21 x1 + a22 x2 + . . . + a2n xn ≥ b2
 


 sujeto a ·································
 am1 x1 + am2 x2 + . . . + amn xn ≥ bm

 


 
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0
 

En cada uno de los dos problemas hay factores que no se tienen en cuenta, y
que vienen determinados por la solución al problema planteado:

En el caso de maximizar ingresos, los costes de los recursos determinarı́an


asimismo el beneficio, y habrı́a que negociar (a posteriori) los precios con
los proveedores en el caso de que el beneficio no fuese satisfactorio. Por
otra parte, se corre el riesgo de no poder vender toda la producción, en
caso de que la demanda fuese limitada.

En el problema de minimizar costes, los precios de venta determinan los


ingresos y, por tanto, el beneficio, con lo que éste se determinarı́a a poste-
riori, una vez conocidos los costes, fijando los precios adecuados. Además,
si la disponibilidad de recursos no es compatible con la solución hallada,
ésta serı́a inviable.

En general, cualquier modelo lineal va a obviar ciertos factores, y se trata de


considerar sólo aquéllos que sean más relevantes en un problema real concreto.
Por ejemplo, suponiendo que la disponibilidad de recursos y la demanda son irre-
levantes, puede plantearse el maximizar beneficios (ingresos menos costes). Se
recomienda al lector (como ejercicio) el planteamiento de este modelo mediante
un programa lineal.
Existen muchas otras aplicaciones prácticas de la programación lineal, tales
como los problemas de “planificación de mano de obra”, de “planificación de
equipos en ejecución de proyectos”, de “destilación de crudos”, de “corte ópti-
mo”, etc (ver por ejemplo el libro de Rı́os Insua [2]). Sin embargo, a veces son
reformulaciones de los anteriores, cambiando la terminologı́a propia del proble-
ma concreto, combinando restricciones de varios problemas (por ejemplo, combi-
nar restricciones de disponibilidad de recursos con satisfacción de la demanda),
o simplemente el nombre del problema (por ejemplo, el llamado “problema de

11

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

asignación de recursos” no es más que el problema de la producción para maxi-


mizar ingresos).

3. Resultados fundamentales

La idea de lo que será el algoritmo del Simplex para hallar una solución factible
óptima es empezar tomando como aproximación inicial uno de los elementos
extremos (solución factible básica) del conjunto factible F , para moverse luego
por el resto de los puntos extremos hasta llegar a aquél que dé el valor óptimo de
la función objetivo. El argumento para moverse de un vértice a otro del politopo
F será el que hallemos una mejora en la función objetivo, hasta constatar que o
bien no podemos mejorar (y entonces habrı́amos obtenido la solución) o bien de-
tectar que el problema es no acotado (o de solución no acotada). En esta sección
únicamente estableceremos los resultados teóricos sobre los que se fundamenta
dicho método, que será enunciado con detalle en la siguiente sección.
Consideraremos a partir de ahora el programa lineal de Minimización en forma
estándar:
t

 Minimizar C  ·X
[I] A·X=B
 sujeto a
X≥0
donde
rango(A) = rango(A|B) = m
(El problema de Maximización se tratarı́a de forma análoga, considerándolo
siempre en forma estándar).
Se considera una matriz básica Ab que, salvo permutación de variables, podemos
suponer que consiste en las m primeras columnas de A, y sea Anb la correspon-
diente matriz no básica. Sean respectivamente Xb y Cb los vectores formados
por las variables básicas (es decir, x1 , . . . , xm ) y los coeficientes de dichas varia-
bles en la función objetivo, y se definen análogamente Xnb y Cnb con respecto
a las variables no básicas (es decir, xm+1 , . . . , xn ).
Recuérdese que si Xb = A−1b · B ≥ 0, haciendo Xnb = 0 se obtiene una solución
factible básica (Xb , 0).
Representaremos por J el conjunto de los subı́ndices correspondientes a las
variables no básicas, es decir

J = {m + 1, . . . , n}

12

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Evidentemente, toda columna de Anb puede escribirse como combinación lineal


de las columnas de Ab , puesto que estas últimas constituyen una base de IRm .
Denotaremos dichas dependencias lineales como
Pj = µ1j P1 + . . . + µmj Pm
si j ∈ J, donde  
µ1j
 .. 
A−1
b · Pj =  . 
µmj

En primer lugar, el siguiente resultado es un sencillo ejercicio de Álgebra Lineal.

Lema 3.1 Si v1 , . . . , vm ∈ IRm son linealmente independientes y v ∈ IRm es


combinación lineal de ellos
X m
v= λ i vi
i=1
de forma que λk 6= 0, entonces los vectores
v1 , . . . , vk−1 , vk+1 , . . . , vm , v
son también linealmente independientes.

El siguiente resultado nos indica cómo pasar de una solución factible básica a
otra.

Proposición 3.2 Sean una matriz básica Ab = (P1 , . . . , Pm ), una solución


factible básica X = (Xb , 0) = (x1 , . . . , xm , 0, . . . , 0) (donde Xb = A−1
b · B ≥ 0),
y sea Pj (j ∈ J) una columna no básica de A tal que
m
X
Pj = µij Pi
i=1

con algún µij > 0. Sea k el ı́ndice tal que


 
xk xi
= mı́n | µij > 0
µkj 1≤i≤m µij

Entonces Y = (y1 , . . . , yn ) definida por


xk

 xi − µij µkj
 si i = 1, . . . , k − 1, k + 1, . . . , m
xk
yi = µ si i = j
 0 kj

en el resto de las componentes
es también una solución factible básica.

13

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

En las condiciones anteriores, es fácil ver que la nueva solución factible básica
es Yb = A−1
b · B, donde la nueva matriz básica es ahora

Ab = (P1 , . . . , Pk−1 , Pk+1 , . . . , Pm , Pj )

Esto corresponde a haber pasado a un vértice (o punto extremo) adyacente al


inicial, puesto que hemos cambiado exactamente una de las “caras” que define
dicho vértice por otra cara diferente del politopo F .
Sabemos pues cómo generar una nueva solución factible básica si se ha decidido
previamente qué columna no básica es la que va a formar parte de la base en
sustitución de otra columna básica. Veamos ahora cuál es la variación en el valor
de la función objetivo cuando se efectúa el cambio de base dado por el resultado
anterior.

Proposición 3.3 Sean X e Y las soluciones factibles básicas consideradas en


la proposición 3.2, y sean Z0 = Ct ·X y Z1 = Ct ·Y los correspondientes valores
de la función objetivo. Se define

zj = c1 µ1j + . . . + cm µmj

Entonces
Z1 = Z0 − yj · (zj − cj )
donde yj = xk /µkj .

Conviene fijarse un poco para saber qué significan las expresiones que estamos
manejando y cual es el proceso que se está realizando. En este sentido:

La expresión yj = xk /µkj es el valor de una posición pivote, que elegimos


con valor mı́nimo para que la nueva solución básica obtenida (mediante
un cambio de base) verifique las restricciones de no negatividad.

La expresión
xk
xi − µij
µkj
de la proposición 3.2 nos recuerda el proceso de eliminación Gaussiana,
en la que queremos anular yk sumándole a una fila un múltiplo adecuado
de otra. Este proceso de eliminación se realiza para que el cambio de base
dado por los µij dé una solución básica (con n − m ceros en las posiciones
no básicas).

14

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Por último, la expresión yj · (zj − cj ) mide la variación del objetivo por


culpa de haber introducido la posición j en la nueva base y los cambios
derivados de haber hecho cero la posición k.

En el siguiente resultado, generalización del anterior, se considera la variación


de la función objetivo con respecto a una solución factible cualquiera (básica o
no). Ahora habrá que considerar la variación no sólo respecto de un nuevo j sino
de todos los posibles j ∈ J que puedan variar respecto de la solución factible
básica inicial.

Proposición 3.4 Si X = (x1 , . . . , xm , 0, . . . , 0) es una solución factible básica


e Y = (y1 , . . . , yn ) es una solución factible cualquiera, entonces
X
Ct · Y = Z 0 − yj · (zj − cj )
j∈J

donde Z0 = Ct · X.

El siguiente resultado es la clave del método de resolución de programas lineales


conocido como método del Simplex, y justifica el hecho de que dicho método
funcione correctamente.

Teorema 3.5 Sea X = (x1 , . . . , xm , 0, . . . , 0) es una solución factible básica.

(i) Si se verifica que zj − cj ≤ 0 ∀j ∈ J, entonces X es una solución factible


básica óptima (mı́nima).

(ii) Si para algún j ∈ J (ı́ndice no básico) se tiene que zj − cj > 0 y los


correspondientes µ1j , . . . , µmj son menores o iguales que cero, entonces el
programa es no acotado.

(iii) Si X es solución factible básica mı́nima y no degenerada, y si para algún


j ∈ J se tiene que zj − cj = 0, entonces el programa admite soluciones
alternativas. En concreto, sustituyendo la variable básica xk adecuada por
cada una de las variables no básicas xj que verifiquen la anterior igual-
dad, se van obteniendo todas las soluciones (factibles básicas) mı́nimas
alternativas, y el conjunto de soluciones óptimas serı́a el cierre convexo
de éstas.

15

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

En el apartado (iii), si X es degenerada pueden no darse soluciones múltiples


alternativas, es decir, es un caso dudoso, y habrı́a que hacer un análisis más fino
para cada caso concreto.
Nótese por último que los anteriores resultados están enunciados, por simplici-
dad, suponiendo que las variables básicas son las m primeras, pero esto no tiene
ninguna influencia en los resultados, pues lo único que importa es saber quién es
el conjunto J de posiciones no básicas y hacer la comprobaciones y sustituciones
correspondientes en las posiciones adecuadas. Evidentemente, aunque comence-
mos con la situación “cómoda”, en cuanto hagamos una sustitución vamos a
obtener un conjunto J que no consiste en las últimas n − m posiciones . . .

4. Método del Simplex

En esta sección expondremos el método del Simplex para resolver programas


lineales. Basándose en los resultados de la sección anterior, el proceso geométrico
(o combinatorio, según se mire) serı́a el siguiente:

(0) Hallar un punto extremo del conjunto factible (solución factible básica).
(1) Estudiar la variación de objetivo con respecto a los vértices adyacentes.
(2) Si no es posible mejorar el objetivo es que estamos ya en la solución óptima;
en caso contrario, nos trasladamos a un vértice que mejore el objetivo y
repetimos el paso (1) hasta llegar a la solución óptima.

Los indicadores que hay que estudiar para el avance del algoritmo (que es de
tipo voraz ) son los siguientes:

El conjunto de posiciones no básicas J hacia donde nos podemos mover.


zj − cj para j ∈ J nos indican si va a ser posible mejorar el objetivo.
µij nos determina la nueva variable de entrada en la base.
xk /µkj nos determina la variable de salida de la base.

4.1. Algoritmo del Simplex: versión matricial y caso del Máximo

El algoritmo del Simplex, en su versión matricial, funciona de la manera siguien-


te:

16

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Algoritmo 4.1 (Simplex matricial)

(0) Hallar una solución factible básica inicial X = (Xb , Xnb ).


(En la sección siguiente profundizaremos en esta cuestión).
Se denota por Ab la matriz básica, Anb la matriz no básica, y J el conjunto
de “posiciones no básicas”.
Recuérdese que Xb = A−1
b · B ≥ 0 y Xnb = 0.

(1) Cálculo de los indicadores de mejora del objetivo

(zj − cj ) ∀j ∈ J

que se calculan como

(zj − cj )j∈J = Ctb A−1 t


b Anb − Cnb

junto con sus respectivos µij que se calcula como

A−1
b Anb = [µij ]1≤i≤m,j∈J

(2) Estudio de los indicadores:

(a) Si (zj − cj ) ≤ 0 ∀j ∈ J entonces X es una solución factible básica


mı́nima y se termina el algoritmo.
Si X es no degenerada y alguna de las diferencias (zj − cj ) es
cero, podemos encontrar soluciones alternativas dando entrada
en la base a la correspondiente columna Pj a cambio de otra, y
la solución serı́a el cierre convexo de todas ellas.
(b) Si no se da (a) y para algún j ∈ J se da (zj − cj ) > 0 y sus co-
rrespondientes µij son todos menores o iguales que cero, entonces el
problema es no acotado y se termina el algoritmo.
(c) Si para algún j ∈ J se da (zj − cj ) > 0 y no se da (b), debemos
cambiar de solución factible básica, para volver al paso (1) con dicha
solución Y en vez de X. Para ello:
(c1) Determinación de la nueva base:
• Variable de entrada: variable no básica xs que maximice (zj −
cj ), (para aquellos j ∈ J en los que dicha diferencia sea positiva),
eligiendo una cualquiera en caso de “empate”.
(No es necesario maximizar estas diferencias, pero heurı́stica-
mente es la mejor táctica, pues el objetivo varı́a ası́ de la manera

17

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

más rápida posible; este procedimiento se conoce como método


del descenso más rápido).
• Variable de salida: variable básica xk tal que
 
xk xi
= mı́n | µis > 0
µks i∈J
/ µis
(c2) Obtención de la nueva solución factible básica:
• Nueva matriz básica Ab : eliminar en la antigua Ab la columna
Pk y añadir la columna Ps de A.
(La nueva matriz no básica Anb estarı́a formada por el resto de
las columnas).
• Nuevo conjunto de posiciones no básicas J:

J ← (J \ {s}) ∪ {k}

• Reordenando las columnas de Ab y Anb de forma que los subı́n-


dices de las variables asociadas a cada columna estén ordenados
en forma creciente, obtenemos la nueva solución factible básica
insertando en las posiciones adecuadas los vectores Yb = A−1b B
e Ynb = 0.

Nota 4.2 En caso de no existir soluciones factibles básicas degeneradas, las


sucesivas soluciones factibles básicas obtenidas supondrán una disminución es-
tricta en el valor de la función objetivo. En consecuencia, tras un número finito
de pasos el proceso desemboca en uno de los casos (a) o (b) del paso (2), y
por tanto el algoritmo termina (nótese que el número de vértices es finito). El
hecho de que el algoritmo es correcto (es decir, que halla la solución óptima del
programa lineal dado) deriva de los resultados de la sección anterior.
Si existen soluciones factibles básicas degeneradas, no tiene porqué disminuir el
objetivo, y el proceso conduce a un fenómeno conocido como “ciclado”: obtención
cı́clica de un mismo conjunto de soluciones factibles básicas, y por tanto el
algoritmo podrı́a no terminar (bucle infinito). Existen técnicas avanzadas para
evitar dichos ciclos, por ejemplo, el método de las perturbaciones o la regla de
Bland, que son las más utilizadas. Veremos esta última (la regla de Bland) al
final después de ver la tabla del Simplex.

Nota 4.3

Evidentemente, si no somos capaces de encontrar una solución factible


básica inicial, podemos deducir que el problema es infactible. Hay otro

18

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

método más eficiente para comprobar si el problema es o no factible, como


veremos cuando hablemos más adelante de “variables artificiales”.

El caso de solución ilimitada (también conocida como “rayo óptimo”)


puede detectarse cuando, una vez hallada una solución óptima en el paso
(2), para dicha solución existe j ∈ J tal que zj − cj = 0 sin que ninguno
de los µij asociados sea positivo. Nótese que si zj − cj = 0 es que en esa
dirección el objetivo no varı́a, y como no podemos cambiar ningún vector
de la base es que en dicha dirección no encontramos un vértice óptimo
distinto, con lo que la interpretación geométrica es que en esa dirección
hay una arista infinita que da lugar al mismo valor de la función objetivo.

En el caso de que el programa en forma estándar sea de Maximizar en vez de


Minimizar, la solución óptima puede ser hallada de dos formas alternativas:

1. Cambiar la función objetivo por su opuesta y resolver de problema de


Minimización.

2. Modificar el algoritmo matricial del Simplex sustituyendo el paso (2) por:


(2’) Estudio de los indicadores:

(a) Si (zj − cj ) ≥ 0 ∀j ∈ J entonces X es una solución factible básica


máxima y se termina el algoritmo. El estudio de soluciones óptimas
(máximas) alternativas es análogo.
(b) Si no se da (a) y para algún j ∈ J se da (zj − cj ) < 0 y sus co-
rrespondientes µij son todos menores o iguales que cero, entonces el
problema es no acotado y se termina el algoritmo.
(c) Si para algún j ∈ J se da (zj − cj ) < 0 y no se da (b), debemos
cambiar de solución factible básica, para volver al paso (1) con dicha
solución Y en vez de X. Para ello, se procede a los pasos (c1) y
(2), con la salvedad de elegir en (c1) la variable de entrada xs que
minimice (zj − cj ), para aquellos j ∈ J en los que dicha diferencia
sea negativa.

4.2. Variables artificiales: Métodos de las penalizaciones y de


las dos fases

El problema que abordamos ahora es encontrar una solución factible básica


inicial, para poder empezar el proceso del Simplex. Este problema no es trivial

19

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

si se tiene en cuenta que el número de variables puede ser elevado, y que no


toda solución básica (obtenida a partir de una submatriz de rango máximo)
tiene porqué ser factible (verificar las restricciones de no negatividad en todas
las componentes).
Hay un caso particular en el que este problema tiene fácil solución: supongamos
que tenemos un programa lineal en forma estándar
t

 Min/Max C  ·X
A·X=B
 sujeto a
X≥0

donde las restricciones son no negativas, es decir B ≥ 0, y donde la matriz


A tiene como submatriz a la matriz identidad de orden m. En este caso, se ve
fácilmente que si se toma dicha submatriz como matriz básica, es decir A b = Im ,
obtendrı́amos una solución factible básica de la forma (Xb , Xnb ), donde Xb =
A−1b B = B y Xnb = 0.

De esta manera simplificarı́amos, además, los cálculos posteriores, que necesitan


calcular la inversa de Ab y después multiplicar

Ctb A−1 t
b Anb − Cnb

para calcular los indicadores (zj − cj ) que aparecen en el algoritmo del Simplex.
Se trata pues de reducir cualquier caso al anterior mediante el siguiente proce-
dimiento:

(1) Hallar la forma estándar del programa lineal introduciendo, si fuese nece-
sario, las correspondientes variables de holgura Xh ≥ 0.

(2) Multiplicar tantas restricciones (de igualdad) como fuese necesario por −1
para conseguir que B ≥ 0.

(3) Si la matriz A resultante tiene una submatriz identidad de orden m se


procede como en el caso particular; en caso contrario, se añaden “variables
artificiales” Xa ≥ 0 y se considera el programa lineal
t t t

 Min/Max C  · X + 0 · Xh + 0 · Xa
A · (X|Xh ) + Im · Xa = B
 sujeto a
X ≥ 0, Xh ≥ 0, Xa ≥ 0,

que, claramente, tiene como solución factible básica

X = 0 , X h = 0 , Xa = B

20

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

En el caso más desfavorable, necesitarı́amos añadir m variables de holgura


 
xn+1
Xh = 
 .. 
. 
xn+m

más m variables artificiales


 
xn+m+1
Xa = 
 .. 
. 
xn+2m

Por supuesto, en casos intermedios puede que sólo haga falta introducir alguna
variable de holgura (o incluso ninguna, si el programa inicial nos lo dan ya en
forma estándar), y también es posible que sólo hagan falta algunas variables
artificiales para completar una submatriz identidad de orden m. Esto último
sucede, por ejemplo, cuando encontramos una submatriz identidad de orden
k ≤ m con la condición de que en las k columnas que la forma los coeficientes
sean cero en las m − k filas restantes; en este caso, basta introducir m − k
variables artificiales en dichas filas para completar una submatriz identidad de
orden m.
La introducción de variables artificiales nos permite, además, detectar si el pro-
blema inicialmente planteado es o no factible. Efectivamente, una vez resuelto
el problema auxiliar con variables artificiales, la solución deberı́a de tener (ob-
viamente) ceros en las componentes correspondientes a las variables artificiales,
y si no dicha solución no nos sirve para nada. De hecho, podrı́amos deducir
que si la solución óptima hallada tiene algún valor estrictamente positivo en las
variables artificiales, entonces el problema inicial es infactible, lo que se inter-
preta (en el modelo económico del problema de la producción para maximizar
ingresos), como que los recursos no son suficientes para satisfacer la demanda o
los requisitos planteados en el modelo.
Interesa pues que en la solución óptima hallada se anulen las variables artificiales.
Hay dos métodos sencillos para tratar de que esto suceda de forma rápida,
conocidos como método de las penalizaciones y método de las dos fases.

Método de las penalizaciones: Consiste, como su nombre indica, en “pe-


nalizar”a las soluciones que no se anulen en las variables artificiales asig-
nando un coeficiente arbitrariamente grande a dichas variables en la fun-
ción objetivo, en vez de que éstas vayan con coeficiente cero. Este método
se llama también (por razones obvias) como método de la M grande.

21

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Ası́, en un programa de minimización se considerarı́a como objetivo

Minimizar Ct · X + 0t · Xh + M · Xa

donde M es una constante arbitrariamente grande, que se elige heurı́stica-


mente, y en un programa de maximización se considerarı́a análogamente

Maximizar Ct · X + 0t · Xh − M · Xa

Con esto se pretende que si una solución factible básica no se anula en


alguna variable artificial sea poco probable que dicha solución sea óptima,
al considerar la función objetivo tan penalizada en dicho punto. Evidente-
mente, existe una constante adecuada M que nos resuelve esta cuestión,
pero el problema es que no es conocida a priori, con lo que tendrı́amos
que manejar M como si fuera una indeterminada. Obviamente esto sólo
se puede hacer en resoluciones a mano (o con manipuladores simbólicos),
pues para hacer un programa con ordenador M ha de tomar un valor cons-
tante concreto, y habrá que tantear (posiblemente varias veces, hasta que
tomemos una decisión, positiva o negativa), y de ahı́ la expresión “M se
elige heurı́sticamente”.
Sin entrar en excesivos detalles, resumiremos brevemente los principales
resultados con respecto a este método:

Si en la solución óptima (finita) del “programa penalizado” se anulan


todas las variables artificiales, entonces dicha solución es también
óptima del programa inicial.
Si en la solución óptima (finita) del “programa penalizado” alguna
de las variables artificiales toma valor positivo, entonces el problema
inicial es no factible.
Si el problema es no acotado y en la solución factible básica que nos lo
indica todas las variables artificiales se anulan, entonces el problema
inicial es no acotado.
Si el problema es no acotado y en la solución factible básica que nos
lo indica alguna de las variables artificiales es positiva, entonces el
problema inicial es no factible.

Método de las dos fases: En este método, y también como su nombre indi-
ca, se resuelve el problema inicial en dos etapas (suponiendo que el pro-
grama inicial es de minimización en forma estándar, si no se adaptarı́a
dicho programa a esta situación usando las reglas de transformación ya
conocidas):

22

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

• Primera fase: Resolver el “programa artificial”, donde la función ob-


jetivo se cambia por la suma de las variables artificiales.
• Segunda fase: Resolver el “programa inicial” (sin variables artificiales,
pero posiblemente con variables de holgura), usando como solución factible
básica inicial la solución óptima (mı́nima) hallada en la primera fase.
Al igual que en el método anterior, resumiremos brevemente los principales
resultados sin entrar en detalles:

El programa artificial siempre tiene solución.


Si en la solución óptima (mı́nima) del programa artificial alguna de
las variables artificiales es no nula, entonces el programa inicial es
infactible.
Si en la solución óptima (mı́nima) del programa artificial todas las
variables artificiales son nulas, y además ninguna de ellas es varia-
ble básica, la segunda fase halla la solución óptima (mı́nima) del
programa inicial.
En el caso de que alguna de las variables artificiales estuviese en la
base (caso de solución factible básica degenerada), hay varias posi-
bilidades para poder continuar con la segunda fase y obtener ası́ la
solución buscada: mantener dichas variables artificiales modificando
el método del Simplex de forma que en ningún momento de la segun-
da fase éstas adquieran un valor positivo (ver [10]), eliminarlas sin
más de la base, usando la regla de sustitución entre variables básicas
(ver [1]), o bien modificar en el algoritmo del Simplex de la segun-
da fase la regla se salida de las variables con el fin de dar prioridad
a la salida de la base de las variables artificiales (ver [7]). Dejamos
los detalles de este caso degenerado a la lectura de bibliografı́a más
especializada.

4.3. La tabla del Simplex

La aplicación práctica del algoritmo matricial del Simplex, tal y como se ha ex-
puesto anteriormente, implica la realización de un elevado número de cálculos,
que se crecen y se complican con el tamaño del programa (que depende básica-
mente tanto del número n de variables como el de ecuaciones m). Conviene
recordar que en cada iteración del Simplex hay que calcular una matriz inversa
(la de la matriz básica) y multiplicarla por otras matrices para hallar ası́ los
indicadores que se han de analizar.

23

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

La Tabla del Simplex, que expondremos a continuación, es una herramienta que


nos permite realizar dichos cálculos con mayor facilidad, y nos simplifica el algo-
ritmo desde el punto de vista de la complejidad computacional. Para justificar
el funcionamiento de dicha tabla, necesitamos en primer lugar un resultado de
tipo técnico.

Lema 4.4 Sean L1 , . . . , Lm ∈ IRm linealmente independientes y L ∈ IRm tal


que
Xm
L= λi Li
i=1
de forma que λk 6= 0 (de lo que se deduce que L1 , . . . , Lk−1 , L, Lk+1 , . . . , Lm son
también linealmente independientes, según el lema 3.1).
Sean      
u1 v1 w1
U =  ...  V =  ...  W =  ... 
     

um vm wm
tres vectores de IRm tales que

1. (L1 | · · · |Lm )−1 · U = V


2. wi = vi − λi wk para i = 1, . . . , k − 1, k + 1, . . . , m
3. wk = vk /λk

Entonces:
(L1 | · · · |Lk−1 |L|Lk+1 | · · · |Lm )−1 · U = V

Consideremos el programa lineal de Minimización en forma estándar:


t

 Minimizar C  ·X
[I] A·X=B
 sujeto a
X≥0
donde
rango(A) = rango(A|B) = m

Supongamos que en un momento dado tenemos una solución factible básica


X = (Xb , Xnb ), con Xb ≥ 0 y Xnb = 0. Por simplicidad hemos tomado las
primeras m variables como básicas, pero para el caso general serı́a análogo.
Estamos en condiciones de construir la siguiente tabla, que consiste en m + 1
filas y n + 1 columnas:

24

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Xb Xnb K

Z 0 Ctb A−1 t
b Anb − Cnb Ctb A−1
b B

Xb I = A−1
b Ab A−1
b Anb A−1
b B

La fila Z corresponde a los indicadores y el resto son una para cada una de
las variables básicas. Asimismo, la columna K es para las constantes, con la
solución factible básica actual y su correspondiente valor de la función objetivo,
y el resto son una para cada una de las variables, básicas o no.
Teniendo en cuenta los resultados del apartado anterior, y desarrollando los
bloques de la tabla, obtenemos:

x1 ··· xk ··· xm xm+1 ··· xs ··· xn K


Z 0 ··· 0 ··· 0 zm+1 − cm+1 ··· zs − cs ··· zn − cn Z0
x1 1 ··· 0 ··· 0 µ1,m+1 ··· µ1,s ··· µ1,n h1
.. .. .. .. .. .. .. ..
. . ··· . ··· . . ··· . ··· . .
xk 0 ··· 1 ··· 0 µk,m+1 ··· µk,s ··· µk,n hk
.. .. .. .. .. .. .. ..
. . ··· . ··· . . ··· . ··· . .
xm 0 ··· 0 ··· 1 µm,m+1 ··· µm,s ··· µm,n hm

donde
t
Xb = A−1
b B = [h1 , . . . , hm ]
es la solución factible básica actual (en las posiciones básicas).
Además, si tomamos por convenio

1 i=j
µij =
6 j
0 i=
para i, j = 1, . . . , m tenemos que

[µij ]i,j = A−1


b A

son las dos cajas más grandes de la tabla anterior (salvo las dos primeras filas
y las columnas primera y última).

25

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Asimismo, si consideramos zi − ci = 0 para las variables básicas de la fila Z, se


tiene
(zj − cj )1≤j≤n = Ctb A−1
b A−C
t

Ası́ pues, la tabla anterior no sólo nos representa la solución factible básica
actual, sino que nos proporciona toda la información necesaria para aplicar la
siguiente iteración del método del Simplex.
En efecto, la fila Z nos muestra los indicadores zj − cj y de bajo de cada uno de
ellos se encuentra la columna con los µij correspondientes, con lo cual podemos
decidir si el algoritmo termina o si debemos buscar una nueva solución factible
básica. En este último caso, y una vez elegida la variable de entrada x s , se mira
en la columna xs aquellos i para los que µij > 0 y se minimiza el cociente hi /µij ,
determinando ası́ la variable de salida xk (nótese que la columna con los hi es la
última de la tabla, y hay que dividir por los elementos de la columna xs , fila por
fila). Después de este proceso, la nueva variable básica xs tomará, en la nueva
solución factible básica, el valor “pivote” hk /µks .
Para obtener la nueva solución factible básica y los nuevos indicadores para la
siguiente iteración, en vez de calcular la inversa de Ab y los correspondientes
productos de matrices, basta realizar las siguientes “operaciones elementales”
en la tabla del Simplex:

1. Dividir la fila xk por µks .

2. A cada una de las filas xi (i = 1, . . . , k − 1, k + 1, . . . , m) se le resta la


nueva fila xk multiplicada por el escalar µis .
Con la fila Z se efectúa la misma operación pero con el escalar zs − cs
en lugar de µis (nótese que todos estos escalares se hallan en la misma
columna: xs ).

3. En la primera columna, se cambia la “etiqueta” xk por xs .

Se obtiene ası́ la tabla siguiente:

26

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

x1 ··· xk ··· xm xm+1 ··· xs ··· xn K


Z 0 ··· z k − ck ··· 0 z m+1 − cm+1 ··· 0 ··· z n − cn Z1
x1 1 ··· µ1,k ··· 0 µ1,m+1 ··· 0 ··· µ1,n h1
.. .. .. .. .. .. .. ..
. . ··· . ··· . . ··· . ··· . .
xk 0 ··· µs,k ··· 0 µk,m+1 ··· 1 ··· µk,n hk
.. .. .. .. .. .. .. ..
. . ··· . ··· . . ··· . ··· . .
xm 0 ··· µm,k ··· 1 µm,m+1 ··· 0 ··· µm,n hm

y se sigue el proceso.
Nótese que el término “pivote” está justificado por el hecho de que hemos hecho
una especie de eliminación Gaussiana para hacer ceros en la columna x s excepto
un 1 en la fila xs , para conseguir que dicha variable entre en la nueva base
(representado en la tabla por una submatriz identidad).
Sin entrar en detalles, la demostración de que el procedimiento anterior nos da el
mismo resultado que en la versión matricial del Simplex, consiste en verificar que
las operaciones realizadas, escritas en forma de fórmula, nos permiten aplicar el
lema 4.4, evitándonos el tener que invertir y multiplicar matrices y ahorrando
operaciones en consecuencia. Se remiten a la bibliografı́a (por ejemplo [1]) los
detalles de esta demostración.
Las operaciones matriciales quedan reducidas ası́ a la etapa inicial. Además,
en el caso particular de que A contenga una submatriz identidad de orden m
y que B ≥ 0 (véase el apartado de variables artificiales y los métodos de las
penalizaciones y de las dos fases), la tabla inicial del Simplex será más fácil de
calcular. Por ejemplo, si dicha submatriz se halla en las primeras m columnas,
dicha tabla serı́a:

Xb Xnb K

Z 0 Ctb Anb − Ctnb Ctb B

Xb I Anb B

ya que Ab = I.

27

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Nota 4.5 (Aspectos computacionales) Obviamente, para hacer resolucio-


nes “a mano” mediante el método del Simplex, los programas deberán ser “sufi-
cientemente pequeños”. En caso contrario se requiere la ayuda de un ordenador
(bien programarlo en algún lenguaje o manipulador simbólico, bien usando pa-
quetes comerciales o libre con el algoritmo ya implementado).
En cuanto a la implementación práctica (en ordenador) del método del Simplex,
hay que tener en cuenta una serie de consideraciones de tipo computacional.

En primer lugar, hay varios problemas de tipo “numérico”, motivados por


los errores de redondeo, a la hora de aproximar el valor de la solución
factible básica actual y su correspondiente valor de la función objetivo.
En este sentido, pudiera ocurrir que en un momento dado la solución
obtenida no sea factible debido a los errores de redondeo acumulados, o
que aunque cumpla las restricciones no sea realmente óptima la que se
obtiene al final (por el mismo motivo). Esto se suele controlar con una
“tolerancia” como medio de control. Por ejemplo, una tolerancia de error
consiste en calcular de vez en cuando el error entre la solución actual
calculada por el Simplex y la calculada mediante inversión de la matriz
básica, y si este error supera una cierta cota (o tolerancia) se realiza el
siguiente paso mediante la versión matricial, para seguir después con el
siguiente paso como antes (esta técnica se denomina ”reinversión”). Otra
técnica es la “tolerancia del pivote”, evitando dividir por un elemento µ ks
cuando éste es demasiado pequeño, para prevenir errores de redondeo (un
nivel de tolerancia usual en la práctica es 10−5 ).

En segundo lugar, y para problemas de gran tamaño, conviene evitar en lo


posible restricciones redundantes, que nos multiplica el número de variables
adicionales (de holgura y artificiales) que se necesita añadir al ya elevado
número de variables que hay. Además, convendrı́a también evitar el ma-
yor número posible de variables artificiales, aprovechando la existencia de
submatrices identidad que puedan ampliarse a una de orden m.

Además, conviene prevenir el problema del ciclado que puede darse en el


caso degenerado, mediante técnicas como el método de las perturbaciones
o la regla de Bland, que detallaremos a continuación.

Por último, podemos analizar con precisión la complejidad del Simplex:


Si las dimensiones de la tabla son m filas y n columnas, la inicialización
de la tabla requiere O(mn) operaciones aritméticas. Por otra parte, cada
iteración es (grosso modo) equivalente a la multiplicación de la matriz por
un vector, lo cual requiere asimismo O(mn) operaciones. Por último, y

28

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

suponiendo ausencia de ciclado, el caso peor es que “visitaremos”


 todos
m+n
los posibles puntos extremos, que son a lo más , y por tan-
m
to éste será el máximo número posible de iteraciones. En conclusión la
complejidad del Simplex es
  
m+n
O · mn
m
lo cual no es un polinomio de un grado constante, y por lo tanto el algo-
ritmo del Simplex “no es polinomial”.
De forma más explı́cita, se puede ver en [3] el siguiente resultado:

“Para todo d > 1 existe un programa lineal con 2d ecuaciones


y 3d variables, cuyos coeficientes son enteros con valor absoluto
acotado por 4, y tal que el Simplex requiere 2d − 1 iteraciones
para encontrar la solución óptima”.

No obstante, y a pesar de lo anterior, el método del Simplex suele ser


bastante eficiente en la práctica. De hecho, su “complejidad media” sı́ que
es polinomial, mediante una versión probabilı́stica y una regla especial de
pivotaje que no veremos (Borgwardt’s Schatteneckenalgorithmus 1982, ver
[9]).

Veamos por último cómo evitar el problema del ciclado, aludido anteriormente.
Una primera opción es realizar las elecciones de variables de entrada de manera
aleatoria, con lo que con probabilidad 1 nos saldremos de cualquier bucle. No
obstante, aparte de que la mayorı́a de la gente prefiere algoritmos deterministas
en vez de probabilı́sticos, se pierde la optimalidad en las elecciones, y por tanto
disminuye (heurı́sticamente) la velocidad del método.
Otra opción es usar un criterio determinista para evitar el ciclado, como por
ejemplo la llamada Regla de Bland, que consiste en lo siguiente:

1. Se elige la variable de entrada xj0 tal que


j0 := mı́n{j : zj − cj > 0}
(es decir, la columna favorable con subı́ndice más bajo).
2. Se elige la variable xi0 de salida tal que
hi hk
i0 = mı́n{i : (xi,j > 0) ∧ (displaystyle ≤ ∀k with xk,j0 > 0)}
xi,j0 xk,j0
(la de menor subı́ndice que puede salir de la base).

29

ASIOP: PLnotes02/2007
DEPARTAMENTO INGENIERIA MINAS
Curso OPTIMIZACION prof. Jose Ascencio C.

DIAGRAMA DE FLUJO ALGORITMO SIMPLEX


FASE I Y FASE II
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

5. Dualidad

El concepto de problema dual está ya introducido en el tema de Programación


Convexa. Sin embargo, el caso lineal es muy particular, y da lugar a técnicas
interesantes en la resolución de problemas.
Efectivamente, si consideramos el problema lineal primal
t

 Minimizar C  ·X
[P] A·X≥B
 sujeto a
X≥0

Entonces su problema dual es


t

 ·X
 Maximizar B
[D] At · Y ≤ C
 sujeto a
Y≥0

Como ya dijimos en el tema de Programación Convexa, la solución óptima Y


del programa dual representa los multiplicadores de Kuhn–Tucker del problema
primal. Si el programa se presenta en forma estándar, y por tanto con restric-
ciones de igualdad (por ejemplo después de introducir las variables de holgura),
éstos son en realidad los multiplicadores de Lagrange.
Se comprueba fácilmente que

Teorema 5.1 El dual del problema dual [D] es el problema primal [P].

En consecuencia, y aplicando los resultados generales sobre Dualidad, se ob-


tienen (entre otros) los siguientes resultados:

1. Si uno de los dos ([P] ó [D]) es factible y acotado, el otro también es


factible y acotado, y sus valores óptimos coinciden.

2. Si uno de los dos ([P] ó [D]) es factible y no acotado, el otro es infactible.

3. Puede ocurrir que ambos ([P] y [D]) sean infactibles simultáneamente.

Asimismo, se pueden establecer las llamadas condiciones de holgura comple-


mentaria. Efectivamente, si (X, Y) es un par primal-dual factible (es decir, X
es factible respecto a [P] e Y es factible respecto a [D]), entonces es un par

30

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

primal-dual óptimo (es decir, X es solución óptima [P] e Y es solución óptima


de [D]), si y sólo si

ui := yi (Fi X − bi ) = 0 ∀i = 1, . . . , m
vj := (cj − YAj )xj = 0 ∀j = 1, . . . , n
donde Aj denota la columna j de la matriz A y por Fi denotamos la fila i de
dicha matriz A.
Lo más interesante para nosotros es que una vez obtenida la tabla del Simplex
correspondiente a la solución óptima del problema primal (que llamaremos tabla
óptima primal), en dicha tabla está también contenida la solución óptima dual.
En efecto, se puede deducir que la primera fila de dicha tabla, que corresponde
a los indicadores del Simplex, representa los multiplicadores de Kuhn–Tucker
(con signo menos), y por tanto a la solución óptima dual (nótese, en particular,
que dicha solución es factible dual, lo cual significa que los multiplicadores de
Kuhn–Tucker son todos no negativos).
En particular, se puede resolver el problema primal aplicando el método del
Simplex al problema dual y leyendo la información dual en dicha tabla óptima
que, según todo lo que acabamos de ver, nos dará la solución óptima primal, al
ser éste el dual del problema dual. Siempre es bueno tener dos alternativas para
resolver un problema, puesto que siempre podemos tratar de resolver aquél de
ambos problemas que resulte más sencillo, sabiendo que la solución final es la
misma.

Nota 5.2 (Interpretación económica del problema dual) Si los términos


independientes de las restricciones B se interpretan como limitaciones sobre los
recursos, y como cada componente yi de la solución dual es un multiplicador
(de Kuhn–Tucker), según lo que se vio en el tema de Programación Convexa yi
indica la contribución por unidad de recurso i-ésimo (es decir, bi ) a la variación
en el valor óptimo actual del objetivo. Por ejemplo, si y2 = 3 significarı́a que
por cada unidad que sumemos a b2 el valor óptimo del objetivo se incrementarı́a
en 3 unidades.
Los valores óptimos de las variables duales se denominan “precios sombra” (tam-
bién precios marginales o de equilibrio), y se utilizan para ver si resulta o no
ventajoso introducir cantidades adicionales de recursos económicos.

5.1. Método Simplex Dual

La idea del algoritmo del Simplex que hemos visto para resolver el problema
primal consiste, básicamente, en que partiendo de una solución básica que sea

31

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

factible primal, vamos cambiando a otras soluciones básicas que mantienen la


condición de ser factibles primales, hasta que finalmente consigamos una que
además sea factible dual, momento en el que habremos hallado la solución óptima
(aplicando “el teorema de Dualidad”).
De manera análoga podemos pensar en el procedimiento dual , es decir: partimos
de una solución básica que sea factible dual y, manteniendo esta factibilidad
dual, consigamos finalmente una solución que sea además factible primal, y por
tanto óptima. Esta idea da lugar al llamado Método Simplex Dual . El algoritmo
consiste en lo siguiente:

Algoritmo 5.3 (Simplex Dual)

(1) Inicio: Se plantea la tabla del Simplex, tal y como se hace en el Simplex
primal, pero a partir de una solución básica que sea factible dual (es decir,
todos los indicadores son menores o iguales que cero).
(2) Iteración: Estudio de las componentes:

(a) Si todas las componentes xi de la solución actual son no negativas, la


solución actual es factible primal (y por tanto óptima), y se termina
el algoritmo.
(b) Si existe componentes negativas, se toma aquélla que sea más neg-
ativa xr < 0, y de entre todas las columnas no básicas j tales que
µrj < 0 se toma aquélla columna k que maximice el cociente
zj − c j
pj :=
µrj
Ası́, xr es la variable de salida, xk la variable de entrada, y el ele-
mento µrk es el pivote de la siguiente iteración. Se actualiza la tabla
con la nueva base y se reinicia el algoritmo.
(c) Si no se puede efectuar la iteración anterior, el dual es no acotado,
y por tanto el primal es infactible.

Para terminar de entender cómo funcional el método, es preciso hacer varias


observaciones:

Si no podemos encontrar una solución inicial dual factible, entonces el


problema dual es infactible y, por tanto, el problema primal puede ser
infactible o factible y no acotado. Veremos más adelante cómo analizar
esta posibilidad (o bien encontrar dicha solución inicial), mediante lo que
se denomina Simplex Dual Extendido.

32

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

La iteración puede hacerse: bien en forma matricial (se escribe la tabla


del Simplex correspondiente a la nueva base dual factible), bien en forma
de tabla, análogamente al caso primal (mediante operaciones elementales
por filas, conseguir un 1 en la posición del pivote y ceros en el resto de la
columna).

También aquı́ existe el problema del ciclado en el caso de soluciones básicas


factibles duales degeneradas (con más ceros de los previstos). Veremos
también después cómo se resuelve este problema en el caso dual. Sin em-
bargo, no entraremos en detalles en cuanto a la posibilidad de soluciones
múltiples.

Por último, existe una relación estrecha entre el Simplex Primal aplicado
al problema dual y el Simplex Dual, de forma que cada iteración de uno
se corresponde con una iteración del otro (ver detalles en [3]).

5.1.1. Simplex Dual Extendido

Para evitar el problema de encontrar una solución inicial para el Simplex Dual
(es decir, una solución básica dual factible), se recurre al Método del Simplex
Dual Extendido, también conocido como método de la restricción artificial . La
idea del método es la misma que la de añadir variables artificiales en el caso
primal, pero como el problema dual está relacionado con los multiplicadores
de Kuhn–Tucker asociado a las restricciones, lo que hemos de introducir ahora
será una restricción adicional que haga las veces de variables artificiales, y que
llamaremos “restricción artificial”.
Para ello se toma inicialmente una solución básica cualquiera, y si existen indi-
cadores positivos (solución dual infactible) se añade la restricción
X
xj ≤ M
j∈H

donde H es el conjunto de ı́ndices para los cuales los indicadores son positivos,
y M es una constante “arbitrariamente grande”, de manera análoga al método
de penalizaciones. A esta restricción se le añade su correspondiente variable de
holgura y se añade también a la tabla inicial del Simplex Dual.
Inicialmente, se toma además como variable de entrada la que corresponda al
indicador más positivo (como en el Simplex Primal) y como variable de salida la
variable de holgura de la restricción artificial. Tras este proceso de inicialización,
y habiendo elegido M suficientemente grande, se consigue que en la siguiente

33

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

iteración todos los indicadores sean menores o iguales que cero (dual factible),
y se continúa normalmente con el Simplex Dual.
Los posibles resultados de este método son:

1. Se consigue la solución óptima si la variable de holgura de la restricción


artificial está en la base final con valor positivo.

2. En caso contrario, es decir, si en la tabla final o bien dicha variable no


es básica o bien es básica pero con valor cero, el problema es factible no
acotado (o bien no se ha elegido una constante M suficientemente grande).

3. El problema es infactible si una iteración del Simplex Dual ası́ lo determi-


na.

5.1.2. Lexicografı́a

Para evitar el ciclado en el método del Simplex Dual veremos, en vez de la regla
de Bland, una técnica más clásica basada en el orden lexicográfico aplicado a
los vectores de la tabla del Simplex. Dicho orden es un orden total , análogo al
orden con que se ordenan alfabéticamente las palabras en un diccionario, y de
ahı́ su nombre.

Definición 5.4 Dados dos vectores x, y ∈ IRn se dice que x es menor o igual
que y lexicográficamente si o bien y − x = 0, o bien la primera componente no
nula de y − x es positiva. Lo denotaremos por

x ≤L y

La idea es deshacer empates en las elecciones del Simplex mediante un criterio


lexicográfico, es decir, una vez elegida la variable de entrada, la variable de
salida se elige como aquélla que minimiza (o maximiza), con respecto al orden
lexicográfico, los vectores correspondiente de la tabla del Simplex, en vez de
minimizar (o maximizar) un cierto cociente escalar.
De forma más precisa, se tiene:

Regla Lexicográfica Primal: Supongamos que el Simplex Primal comienza


con todas las filas lexicográficamente positivas (mayores que el vector cero)
excepto la fila de los indicadores, y se aplica la siguiente regla:

1. Elegir cualquier columna s con indicador positivo.

34

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

2. Elegir la fila i = r que minimice


Fi
{ }
µis | µis > 0

con respecto al orden lexicográfico (Fi es la fila i).

Entonces:

Dichas filas permanecen siempre lexicográficamente positivas a lo


largo de las iteraciones del Simplex.
Las sucesivas filas de los indicadores forman una sucesión estricta-
mente decreciente, también con respecto al orden lexicográfico.
El algoritmo del Simplex Primal termina en un número finito de pasos
(es decir, no se produce ciclado).

Regla Lexicográfica Dual: Supongamos que el Simplex Dual comienza con


todas las columnas lexicográficamente positivas excepto la columna de las
constantes, y se aplica la siguiente regla:

1. Elegir cualquier fila r con una componente xr negativa.


2. Elegir la columna j = s que maximice
Aj
{ }
µrj | µrj < 0

con respecto al orden lexicográfico (Aj es la columna j).

Entonces:

Dichas columnas permanecen siempre lexicográficamente positivas a


lo largo de las iteraciones del Simplex.
Las sucesivas columnas de las constantes forman una sucesión estric-
tamente creciente, también con respecto al orden lexicográfico.
El algoritmo del Simplex Dual termina en un número finito de pasos
(es decir, no se produce ciclado).

Nótese que los máximos o mı́nimos con respecto al orden lexicográfico son únicos
debido al hecho de ser un orden total.
Lo único que queda pendiente para que este método sea efectivo es explicar
cómo se puede conseguir que en la tabla inicial las filas (o columnas) sean lexi-
cográficamente positivas, lo cual se deja como ejercicio.

35

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

Nota 5.5

Algoritmo Primal–Dual: existe otro método que combina adecuadamente el


Simplex Primal y el Simplex Dual, y que llega de forma más rápida a la
solución óptima. Dicho método se denomina algoritmo Primal–Dual (ver
[1]).

Análisis de Sensibilidad: se recomienda al lector aplicar los resultados es-


tudiados en el tema de Programación Convexa sobre el significado de los
multiplicadores de Kuhn–Tucker, y de cómo varı́a la solución del problema
ante pequeños cambios en los datos (ver [1]). Dichos cambios pueden ser
discretos o paramétricos, y esto último lleva a lo que se denomina Análisis
Paramétrico (ver ambos tipos de análisis en [2]).

36

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

6. Problemas propuestos

1. Se consideran los siguientes programas lineales:




 Minimizar 2x 1 + 3x2
 3x1 + x2 ≥ 3

[1]

 sujeto a 2x1 + 8x2 ≥ 6
x 1 ≥ 0, x2 ≥ 0
 


 Maximizar 2x 1 + 2x2
x1 + 2x2 ≤ 8


 

[2] x1 + x 2 ≤ 5

sujeto a
2x1 + x2 ≤ 9



 

x1 ≥ 0, x2 ≥ 0
 


 Minimizar −x
 1 − 2x2
x1 − x2 ≥ −2


 

[3] 3x1 + x2 ≥ 3

sujeto a
x + 3x2 ≥ 3

 1

 
 
x1 ≥ 0, x2 ≥ 0



 Maximizar 3x 1 + 2x2
 3x1 + x2 ≤ 9

[4]

 sujeto a x1 + 2x2 ≤ 8
x1 ≥ 0, x2 ≥ 0
 

(a) Resolver geométricamente dichos programas.


(b) Hallar de forma algebraica sus soluciones factibles básicas, y hallar
sus soluciones óptimas a partir de dichas soluciones.
(c) Reescribir los programas en las formas alternativas
(canónica, estándar, de maximización y de minimización).

2. Se considera el siguiente programa lineal:




 Minimizar 8x 1 + 3x2
 2x1 + x2 ≥ 4

 sujeto a
 2x1 + 3x2 ≥ 8
x1 ≥ 0, x2 ≥ 0
 

(a) Resolver el programa lineal mediante la versión matricial del algorit-


mo del Simplex.
(b) Interpretar geométricamente el proceso de solución mediante dicho
algoritmo.

37

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

(c) Resolver el programa de forma alternativa mediante al menos otros


dos métodos, de entre los ya estudiados a lo largo del curso.

3. Resolver el programa lineal




 Maximizar 2x
 1 + 5x2
 x1 + x 2 ≥ 4

 sujeto a
 x1 ≥ 2
x1 ≥ 0, x2 ≥ 0
 

4. Resolver el programa lineal




 Minimizar 5x
 1 + 3x2
 x1 + x 2 ≥ 5

 sujeto a
 x1 + 3x2 ≥ 9
x1 ≥ 0, x2 ≥ 0
 

utilizando

1. El método de las penalizaciones, tanto en forma matricial como con


la Tabla del Simplex.
2. El método de las dos fases, tanto en forma matricial como con la
Tabla del Simplex.

5. Se considera el programa lineal




 Maximizar 2x
 1 + 6x2
 x1 + 3x2 ≤ 9


 sujeto a 2x1 + x2 ≤ 8
x1 ≥ 0, x2 ≥ 0
 

(a) Resolverlo mediante la Tabla del Simplex.


(b) Comprobar que se verifican las condiciones de Kuhn–Tucker.

6. Resolver el programa lineal




 Minimizar 8x
 1 + 2x2
 2x1 + 2x2 ≤ 1

 sujeto a
 3x1 + x2 ≥ 4
x1 ≥ 0, x2 ≥ 0
 

38

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

7. Resolver el programa lineal




 Minimizar −3x
 1 + x2
 x1 + x 2 ≤ 5

 sujeto a
 x2 ≤ 4
x1 ≥ 0, x2 ≥ 0
 

8. Se considera el programa lineal




 Minimizar x+ y − 2z
 x+y+z ≤3


 sujeto a z≤2
x ≥ 0, y ≥ 0, z ≥ 0
 

(a) Demostrar que el conjunto factible es compacto.


(b) Calcular algebraicamente todas las soluciones factibles básicas.
(c) Utilizando los apartados anteriores, hallar la solución óptima de dicho
programa.

9. Modelizar el siguiente problema práctico mediante un programa lineal:

“La empresa Volkswagen gana 100 euros por cada Polo, 200 eu-
ros por cada Golf y 300 euros por cada Passat, y el rendimiento
de cada modelo, medido en kilómetros por por litro de com-
bustible, es de 20, 17 y 14, respectivamente.
Por otra parte, la ley obliga a todas las empresas automovilı́sti-
cas a que el rendimiento medio de un coche fabricado sea de (al
menos) 18 kilómetros por litro.
Por último, una planta de fabricación de Volkswagen puede mon-
tar un Polo en 1 minuto, un Golf en 2 minutos y un Passat en
3 minutos.
¿Cuál es la ganancia máxima posible en una jornada de 8 ho-
ras?”

10. Modelizar el siguiente problema práctico mediante un programa lineal:

“Una empresa elabora una bebida mezclando zumo de naranja


con zumo de piña, comercializándose en botellas de 0, 2 litros.
El zumo de naranja tiene una concentración en azúcar del 15 %
(en volumen) y 25 mg de vitamina C por litro, mientras que
el zumo de piña tiene una concentración del 25 % en azúcar y
10 mg de vitamina C por litro. Por otra parte, el litro de zumo

39

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

de naranja cuesta 20 céntimos de euro, mientras que el de piña


cuesta 30 céntimos.
Por último, la normativa interna de la empresa en cuanto a
control de calidad obliga a que cada botella contenga al menos
3 mg de vitamina C y que su concentración en azúcar no baje
del 20 %.
¿Cuál ha de ser la proporción de la mezcla para minimizar
costes?”

11. Se considera el siguiente programa lineal:




  1 − 3x2
Minimizar 2x
 x1 + x 2 ≤ 4


 sujeto a x1 − x 2 ≤ 1
x1 ≥ 0, x2 ≥ 0
 

(a) Resolverlo mediante el método del Simplex.


(b) Calcular de manera algebraica todas sus soluciones factibles básicas,
evaluar la función objetivo en dichas soluciones, y comprobar que el
resultado obtenido por el método del Simplex es correcto.
(c) Resolver geométricamente el programa y justificar de forma gráfica
los resultados obtenidos en los apartados anteriores.

12. Se considera el siguiente programa lineal:




 Minimizar x 1 + x2 + 4x3
 x1 + 2x2 − x3 ≥ 20


 sujeto a 3x1 + x3 = 14
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

(a) Resolverlo mediante el “método de las dos fases”.


(b) Calcular de forma algebraica todas sus soluciones factibles básicas,
evaluar la función objetivo en dichos puntos, y comprobar que el
resultado obtenido en el apartado anterior es correcto.

13. Se considera la tabla inicial del Simplex

x1 x2 x3 x4 x5 x6 x7 K
Z 3/4 -20 1/2 -6 0 0 0 3
x1 1/4 -8 -1 9 1 0 0 0
x2 1/2 -12 -1/2 3 0 1 0 0
x3 0 0 1 0 0 0 1 1

40

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

y se aplica la siguientes reglas:

(a) Seleccionar la variable no básica con indicador más positivo.


(b) En caso de empate, seleccionar la variable básica de salida con el
menor subı́ndice.

Se pide:

1. Comprobar que se produce ciclado en el Simplex.


2. Deshacer el ciclado usando tanto la regla de Bland como la técnica
lexicográfica.

14. Hallar los problemas duales de problemas lineales en forma estándar, y


convertir a su vez dichos duales a forma estándar.

15. Hallar el dual de los siguientes programas lineales:




 Maximizar 2x  1 + x2 − x3
3x1 − x2 + x3 = 12


 

[1] x1 + x2 + 2x3 ≥ 2

sujeto a
2x 1 + 3x3 ≤ 8



 

x1 ≥ 0, x2 ≥ 0, x3 ∈ IR
 


 Maximizar −x
 1 − 2x2 − x3
 x1 + 3x2 + 2x3 ≥ 6

[2]

 sujeto a x1 + x2 + 5x3 ≥ 9
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

 Maximizar x 1 + 2x2 + 3x3 + x4
[3] x1 + x2 + x3 + x4 ≤ 12
 sujeto a
 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0

 Minimizar x
1 + 2x2 + x3
 x1 + x 2 + x 3 = 4

[4]

 sujeto a x1 − x2 + 2x3 = 3
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

16. Encontrar un ejemplo de problema lineal tal que tanto el primal como el
dual sean infactibles.

17. Resolver el siguiente programa lineal mediante el Simplex Dual :




 Minimizar 2x
 1 + x2 + 4x3
 2x1 − x2 + 3x3 ≥ 8


 sujeto a x1 + 3x2 + 2x3 ≥ 7
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

41

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

18. Resolver los siguientes programas lineales mediante el Simplex Dual :




 Maximizar −x 1 − 2x2 − x3
 3x1 + x2 + 2x3 ≥ 6

[1]

 sujeto a x1 + 3x2 + 4x3 ≥ 10
x 1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 


 Minimizar 3x 1 + 4x2 + x3
 x1 + 2x2 + x3 ≥ 12

[2]

 sujeto a 2x1 + x2 + 4x3 ≥ 14
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

19. Se considera el siguiente programa lineal:




 Minimizar x 1 + x3
 x1 + 2x2 ≤ 5


 sujeto a x2 + 2x3 = 6
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

(a) Hallar el programa dual y resolverlo por el Simplex.


(b) Resolver el programa primal mediante el Simplex Dual, usando como
solución dual factible inicial la que corresponda a la inicial (factible
primal) usada en el apartado anterior.
(c) Comparar las iteraciones seguidas en ambos métodos y explicar la
relación existente entre dichos algoritmos.
(d) Comprobar las condiciones de holgura complementaria.

20. Resolver el siguiente programa lineal mediante el Simplex Dual Extendido:




 Minimizar 4x 1 + x2
 4x1 + 3x2 ≤ 12

 sujeto a
 2x1 + x2 ≥ 4
x1 ≥ 0, x2 ≥ 0
 

21. Resolver los siguientes programas lineales mediante el Simplex Dual Ex-

42

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

tendido:


 Minimizar 2x  1 + 4x2 − x3
3x1 + 6x2 − 2x3 ≥ 8


 

[1] x1 + 2x2 + x3 = 4

sujeto a
 2x1 − x2 + 3x3 ≤ 12



 
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 


 Maximizar x
1 x2 + 2x3
+
 2x1 + x2 + x3 ≥ 8

[2]

 sujeto a x1 − 2x2 + 2x3 ≤ 10
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 


 Maximizar −x
 1 − 2x2
4x1 + 3x2 ≤ 12


 

[3] x1 + 3x2 ≥ 6

sujeto a
2x 1 + x2 ≥ 4



 

x1 ≥ 0, x2 ≥ 0
 

22. Se considera el siguiente programa lineal:




 Maximizar 2x 1 + 4x2
−2x1 − 3x2 ≥ −12


 

x1 + x 2 = 4

sujeto a
5x1 + 6x2 ≤ 18



 

x1 ≥ 0, x2 ∈ IR
 

(a) Resolver el problema dual.


(b) Obtener la solución óptima del problema primal mediante las condi-
ciones de holgura complementaria.

23. Se considera el siguiente programa lineal:




 Maximizar 2x  1 + 4x2 + x3
x1 + 2x2 − x3 ≤ 5


 

2x1 − x2 + 2x3 = 2

sujeto a
 −x1 + 2x2 + 2x3 ≥ 1



 
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 

(a) Resolverlo mediante el Simplex primal.


(b) Leer la solución dual en la tabla óptima final anterior.
(c) Escribir su dual, resolverlo y comparar su solución óptima con la
obtenida en el apartado anterior.

43

ASIOP: PLnotes02/2007
CURSO OPTIMIZACION (17015) prof. Jose Ascencio Castillo
PROGRAMACION LINEAL Departamento Ing. Minas

24. Una fábrica de cerveza obtiene un beneficio de

4x1 + 7x2 + 3x3

donde x1 es el número de litros de cerveza rubia, x2 el de cerveza negra y


x3 el de cerveza sin alcohol. Se sabe que:

Cada litro de cerveza rubia requiere 2 kg de malta y 1 kg de levadura.


Cada litro de cerveza negra requiere 1 kg de malta y 2 kg de levadura.
Cada litro de cerveza sin alcohol requiere 2 kg de malta y 2 kg de
levadura.

Asimismo, la disponibilidad de malta es de 30000 kg y la de levadura es


de 45000 kg.

1. Determinar la solución óptima y los precios sombra.


2. Experimentar cómo varı́a la solución óptima al variar la disponibili-
dad de recursos, y relacionar estas variaciones con los precios sombra.
Sugerencia: aplicar el método Simplex utilizando algún programa
de ordenador, como MuPAD, SciLab o Ampl.

44

ASIOP: PLnotes02/2007
Referencias
BIBLIOGRAFIA B ASICA

[0] H.Taha: Investigacionde Operaciones.UnaIntroduccion, Ed. Prentice Hall (2003)


[1] A.BalbasyJ.A.Gil: ProgramacionMatematica,Ed.AC(1990).
[2] S. Rios Insua: Investigación Operativa: Programación Lineal y Aplicaciones, Ed.
Centro de Estudios Ramon Areces, S.A.(1996).
[3] Ch.H. Papadimitriou, K. Steiglitz: Combinatorial Optimization: Algorithms and
Complexity, Ed.Dover (1998).

BIBLIOGRAFIA PR ACTICA

[4] R. Fourer, D.M. Gay,B.W. Kernighan: AMPL: A Modeling Language for


Mathematical Programming, Ed. Thomson (2003).
[5] J.Gerhard, W. Oevel, F.Postel, S. Wehmeier: MuPAD Tutorial (English Edition),
Ed.Springer–Verlag(2000).
[6] C. Gomez: Engineering and Scientific Computing with Scilab, Ed. Birkhauser (1997).

BIBLIOGRAFIA COMPLEMENTARIA

[7] F. Hillier, G. Lieberman: Introduccion a l a Investigación de Operaciones,


Ed.McGrawHill(1991).
[8] K. Mathur, D.Solow: Investigación de Operaciones, Ed. PrenticeHall(1996).
[9] A. Schrijver: Theory of Linear and Integer Porgramming, Ed. JohnWiley(1998).
[10] W. L.Winston: Investigación de Operaciones: Aplicaciones y Algoritmos, Ed. Grupo
Editorial Iberoamericana (1994).

REFERENCIA COMPLEMENTARIA

[11] www.phpsimplex.com: PhpSimplex, portal de herramienta online para resolver


problemas de programación.
[12] Programa Excel: Addins @Solver para resolver problemas de programación lineal.
[13] Programa TORA, software con diversos algoritmos de solución de técnicas de IO,
adjunto al texto de referencia [0].

45

También podría gustarte