Upload
hoangdieu
View
217
Download
0
Embed Size (px)
Citation preview
Tema 18
Programación lineal
18.1. Formulación primal de un programa lineal
Dentro de la programación matemática hablamos de programación lineal (PL) si tanto la función obje-
tivo como las restricciones son funciones lineales. en general, nos encontramos con: desigualdades menor
o igual, desigualdades mayor o igual, e igualdades y problema adquiere la forma general
opt c1x1 + c2x2 + · · · cnxn
s.a. a11x1 + a12x2 + · · · + a1nxn ≤ b1
...
ak1x1 + ak2x2 + · · · + aknxn ≤ bk
ak+11x1 + ak+12x2 + · · · + ak+1nxn ≥ bk+1
...
al1x1 + al2x2 + · · · + alnxn ≥ bl
al+11x1 + al+12x2 + · · · + al+1nxn = bl+1
...
am1x1 + am2x2 + · · · + amnxn = bm
x1 ≥ 0, x2 ≥ 0, · · · xn ≥ 0
I Las variables se representan por un vector x = (x1, . . . , xn) ∈ Rn.
I Los coeficientes de la función objetivo se representan por otro vector c = (c1, . . . , cn) ∈ Rn y reciben
el nombre de costes; con lo que la función objetivo adquiere la forma f (x) = ctx.
593
Bloque V. PROGRAMACIÓN MATEMÁTICA
I Los coeficientes de las restricciones se representan en una matriz A = ai j ∈ Mm×n(R) y reciben el
nombre de coeficientes técnicos.
� Un problema de optimización se puede escribir de distintas formas.
I Todo problema de maximización puede reducirse a uno de minimización y viceversa, ya que los
máximos de una función son los mínimos de la función cambiada de signo y viceversa.
I Se puede considerar sólo desigualdades de un tipo sin pérdida de generalidad, ya que en una desigual-
dad del tipo mayor o igual se transforman en una del tipo menor o igual multiplicando por −1 y viceversa.
Las igualdades se transforman descomponiéndolas en dos desigualdades y multiplicando una de ellas por
−1.
I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de
generalidad, ya que si alguna de las variables puede tomar valores negativos la descomponemos como
diferencia de dos variables no negativas.
I Entre todas consideraremos como forma canónica de un problema de minimización la compuesta
sólo por desigualdades del tipo menor o igual y como forma canónica de un problema de maximización la
compuesta sólo por desigualdades del tipo mayor o igual. Con c ∈ Rn, x ∈ Rn, b ∈ Rm y A ∈ Mm×n serían:
Forma Canónica (por inecuaciones)
mın c1x1 + c2x2 + · · · cnxn
s.a. a11x1 + a12x2 + · · · + a1nxn ≥ b1
a21x1 + a22x2 + · · · + a2nxn ≥ b2
...
am1x1 + am2x2 + · · · + amnxn ≥ bm
x1 ≥ 0, x2 ≥ 0, · · · xn ≥ 0
max c1x1 + c2x2 + · · · cnxn
s.a. a11x1 + a12x2 + · · · + a1nxn ≤ b1
a21x1 + a22x2 + · · · + a2nxn ≤ b2
...
am1x1 + am2x2 + · · · + amnxn ≤ bm
x1 ≥ 0, x2 ≥ 0, · · · xn ≥ 0
Forma Canónica (matricial)
mın ctx
s.a. Ax ≥ b
x ≥ 0
max ctx
s.a. Ax ≤ b
x ≥ 0
En un problema general de Programación Lineal si el conjunto factible es un conjunto vacío el problema
carece de sentido y hablamos de un problema infactible. La función objetivo siempre es continua (por ser
lineal) y si el conjunto factible es no vacío también es cerrado (por incluir las restricciones lineales el caso
PROYECTO MATECO 3.1 Página 594
TEMA 18. PROGRAMACIÓN LINEAL
igual), por tanto, para poder aplicar el teorema de Weierstrass la condición que falta es que el conjunto
factible esté acotado. Esto no siempre sucede y si el conjunto factible no está acotado hablamos de un pro-
blema no acotado, en el que puede suceder tanto que que la función aumente o disminuya indefinidamente
como que alcance un valor máximo o mínimo en un número infinito de puntos (rayo óptimo). Si el conjunto
factible está acotado entonces es un poliedro convexo con un número finito de vértices en el que podemos
asegurar que el problema posee solución y que esta solución se alcanzan en uno de sus vértices (puntos
extremos). Puede suceder que estos óptimos sean únicos (problema con solución única) o no. Si el óptimo
se alcanza en dos vértices del conjunto factible también se alcanza en el segmento que los une, ya que sus
puntos son combinación lineal convexa de los vértices, y tendremos un problema con infinitas soluciones.
Aunque si el conjunto factible está acotado bastaría comprobar el valor de la función objetivo en los
distintos vértices del conjunto factible y elegir el que nos dé el valor óptimo para la función objetivo, el
número de vértices puede ser muy grande y necesitamos un método para resolver un problema general de
programación lineal.
El primer paso va a ser la formulación del problema de programación lineal mediante igualdades, en lo
que llamaremos su forma estándar. Esto permite calcular los vértices del conjunto de oportunidades como
soluciones de un sistema de ecuaciones lineales. La idea es medir la diferencia entre el primer y segundo
miembro de la inecuación mediante una variable y añadirla a la correspondiente inecuación para convertirla
en una ecuación lineal.
I Cuando la desigualdad es del tipo menor o igual la nueva variable recibe el nombre de variable
de holgura y la sumamos al primer miembro. Cuando la desigualdad es del tipo mayor o igual la nueva
variable recibe el nombre de variable de exceso y la restamos al primer miembro
ak1x1 + ak2x2 + · · · + aknxn ≤ bk ⇔ x1 + ak2x2 + · · · + aknxn + yk = bk
as1x1 + as2x2 + · · · + asnxn ≥ bs ⇔ as1x1 + as2x2 + · · · + asnxn − ys = bs
De esta forma las desigualdades se transforman en igualdades y se buscan tanto para las nuevas variables
como para las variables originales valores óptimos no negativos que resuelvan el nuevo problema (como ya
hemos comentado, si una variable original no tiene restricción de signo la descomponemos como diferencia
de dos variables no negativas). Este problema en forma matricial estándar es; con x, c ∈ Rn, b ∈ Rm y
Página 595 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
A ∈ Mm×n(R):
opt ctx
s.a. Ax = b
x ≥ 0
De las soluciones del sistema sólo nos interesan los puntos que puedan ser óptimos del problema, que
son aquellos que verifican las condiciones de no negatividad y que a la vez son vértices del conjunto fac-
tible. Todo punto del conjunto factible x∗ = (x∗1, x∗2, . . . , x
∗n) tiene las coordenadas no negativas y verifica el
sistema, por lo que podemos escribir
x∗1a1 + x∗2a2 + · · · + x∗nan = b,
donde a1, a2,. . .,an son las columnas de la matriz A y b el vector de términos independientes.
Se puede probar que en un vértice del conjunto factible los vectores correspondientes a las columnas
de la matriz asociados a coordenadas estrictamente positivas son linealmente independientes. Al tener las
columnas m componentes, a lo más hay m vectores linealmente un vértice y, por tanto, cada vértice tiene
asociadas a lo más m coordenadas estrictamente positiva (al menos hay n−m coordenadas nulas). Este hecho
es lo que nos va a permitir caracterizar a los vértices del conjunto factible como soluciones del sistema con
al menos n −m coordenadas nulas (en cada vértice las columnas asociadas a las coordenadas estrictamente
positivas son siempre linealmente independientes).
Definición 18.1 Un punto es una solución básica del problema en forma estándar si es una solución del
sistema Ax = b con al menos n − m coordenadas nulas. Si además las coordenadas no nulas son positivas
diremos que es una solución factible básica. Nos referiremos a las variables que no se hacen cero como
variables básicas y a las que se hacen cero como variables no básicas. ♣
Proposición 18.2 En un problema en forma estándar un punto de la región factible es un vértice si y sólo
si es una solución factible básica (toda solución óptima es una solución factible básica). ♣
Ejemplo 18.3 Obtener las soluciones básica del siguiente problema e indicar cuales son factibles
opt 2x1 − 3x2
s.a. x1 + x2 ≤ 4
x1 − x2 ≤ 6
x1, x2 ≥ 0
PROYECTO MATECO 3.1 Página 596
TEMA 18. PROGRAMACIÓN LINEAL
Solución
En primer lugar, escribimos el problema en forma estándar y consideramos su matriz
opt 2x1 − 3x2
s.a. x1 + x2 + y1 = 4
x1 − x2 + y2 = 6
x1, x2, y1, y2 ≥ 0
=⇒ A =
1 1 1 0
1 −1 0 1
b =
4
6
El sistema es compatible indeterminado y la solución se puede expresar en función de dos de las varia-
bles. Aunque hay múltiples combinaciones posibles, la elección de las variables dependientes e indepen-
diente no afecta a la resolución del sistema y sólo afecta a la expresión de las soluciones. Sin embargo, por
cada m = 2 columnas independientes podemos obtener una solución con las restantes n−m = 2 coordenadas
nulas sin más que sustituir las correspondientes variables por cero. Así, considerando combinaciones de dos
columnas independientes obtenemos las soluciones básicas y de entre ellas excluimos aquellas soluciones
que tengan coordenadas negativas para obtener las soluciones básicas factibles (los posibles óptimos del
sistema).
y1 = 0
y2 = 0⇔
x1 + x2 = 4
x1 − x2 = 6⇒
x1 = 5
x2 = −1
x2 = 0
y2 = 0⇔
x1 + y1 = 4
x1 = 6⇒
x1 = 6
y1 = −2
x2 = 0
y1 = 0⇔
x1 = 4
x1 + y2 = 6⇒
x1 = 4
y2 = 2
x1 = 0
y2 = 0⇔
x2 + y1 = 4
−x2 = 6⇒
y1 = 10
x2 = −6
x1 = 0
y1 = 0⇔
x2 = 4
−x2 + y2 = 6⇒
x2 = 4
y2 = 10
x1 = 0
x2 = 0⇔
y1 = 4
y2 = 6
Soluciones básicas (4,0), (0,4) ,(0,0) (factibles) y (5,-1), (6,0), (0,-6) (no factibles).
Si calculamos el valor de la función objetivo en las soluciones factibles básicas en el vértice con el
mayor valor se alcanzará un máximo y en el vértice con el menor valor un mínimo. ♣
18.2. Algoritmo del simplex
Como el número de vértices puede ser muy grande, para resolver un problema general de programación
lineal vamos a utilizar un método iterativo que sólo recorre algunos vértices del conjunto factible y recibe
el nombre de método del simplex. En este método se parte de una solución básica factible y se buscan los
Página 597 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
óptimos pasando a vertices adyacentes en los que mejore la función. Se repite el proceso hasta que tengamos
el óptimo (o hasta que podamos concluir que no lo hay).
El primer paso es escribir el problema en forma estándar con términos independientes no negativos
opt ctx
s.a. Ax = b
x ≥ 0
donde c, x ∈ Rn, b ∈ Rm, A ∈ Mm×n y bi ≥ 0 ∀i = 1, · · · ,m.
En lo que llamaremos algoritmo primal del simplex partimos de una solución básica factible en la que
hay m coordenadas básicas asociadas a la base canónica. Para mejorar el valor de la función cambiamos
una variable no básica (antes de valor cero) por una variable básica (antes de valor no negativo) de forma
que el nuevo punto siga siendo una solución básica factible. Así, si pasamos de un vértice (x∗1, x∗2, . . . , x
∗n)
asociado a una base B a otro vértice adyacente (x′1, x′2, . . . , x
′n) en el primer vértice habrá una coordenada x∗i
distinta de cero que en el segundo vértice pasa a ser cero y en el segundo vértice una coordenada x′j distinta
de cero que era cero en el primer vértice (el resto de coordenada serán iguales).
Para estudiar si la función mejora en este cambio de vértice escribimos la diferencia entre el valor de la
función en el segundo vértice, z′, y el valor de la función en el primero, z∗, como
z′ − z∗ = x′j(c j − z j) con z j = ctBa′j
donde a′j es el vector con las coordenadas de la columna a j con respecto a la base B (la propia columna si
B es la base canónica) y cB son los coeficientes de las variables básicas del primer vértice.
I El valor RC j = c j − z j corresponde a la variación unitaria de la función, recibe el nombre de coste
reducido y permite analizar la posible mejora de la función al cambiar de vértice, ya que si es positivo
podemos aumentar el valor de la función introduciendo esta variable y si es negativo disminuirlo. Si todos
los costes reducidos de las variables básicas son cero estaremos en un óptimo.
En el algoritmo del simplex cambiamos de vértice aplicando el método de Gauss al sistema para trans-
formarlo en uno equivalente de forma que las variables básicas del nuevo vértice sean las que están asociadas
a la base canónica. Para calcular los costes reducidos vamos a denotar por z el valor de la función y añadir
la ecuación ctx− z = 0 al sistema. En cada paso vamos a hacer que en la correspondiente ecuación sólo apa-
rezcan las variables no básicas de forma que sólo tenga valor la variable z. En esta ecuación los coeficientes
PROYECTO MATECO 3.1 Página 598
TEMA 18. PROGRAMACIÓN LINEAL
de las variables no básicas son los correspondientes costes reducidos y el término independiente es el valor
la función objetivo en el vértice cambiado de signo (al ser el valor de las variables no básicas cero).
En nuestro caso vamos a trabajar con el método del simplex en forma de tabla, de forma que cada tabla
representa una solución básica e incluye la información adicional que permite tanto determinar si es un
óptimo como pasar de una solución básica a otra adyacente cuando no lo sea.
En estas tablas aparece ademas de la fila de encabezamiento:
Una columna por cada una de las variables de decisión y holgura presentes en la función objetivo con
los coeficientes de las variables en el sistema.
Una columna adicional con los términos independientes de cada restricción.
Una última fila que recoge los costes reducidos (que muestran la posibilidad de mejora en la solución)
y el valor la función objetivo (cambiado de signo en la última casilla).
Nota (Algoritmo primal del simplex)
1. Se considera una solución factible básica inicial.
2. Se determina si la solución es óptima.
Si no es posible mejorar la función objetivo:
FIN (la solución actual es óptima).
Si es posible mejorar la función objetivo:
CONTINUAR AL SIGUIENTE ,PASO (paso 3).
3. Se busca una solución factible básica adyacente con mejor valor de la función objetivo cambiando
una variable básica por una no básica:
Se determina qué variable no básica debe entrar en la base de forma que proporcione el mejor
valor de la función objetivo.
Criterio de entrada entre estas variable
• Maximización (entre las variables con coste reducido positivo):
Mayor valor del coste reducido.
• Minimizaciön (entre las variables con coste reducido negativo):
Menor valor del coste reducido (valor más negativo).
Página 599 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
Se determina qué variable básica debe salir de la base de forma que la nueva solución siga siendo
factible.
Criterio de salida entre variables con el coeficiente de la variable que entra positivo
• Maximización y minimizaciön:
Menor valor del cociente entre el término independiente y el coeficiente de la variable que
entra.
SE VUELVE AL PASO 2 ♣
El algoritmo primal del simplex se puede utilizar siempre que tengamos una solución básica inicial que
va a estar asociada a la base canónica de Rm de forma que las variables básicas coincidan con los términos
independientes del sistema. Por este motivo, el primer problema es obtener esta solución básica factible
inicial.
Si las inecuaciones son del tipo menor o igual y los términos independientes son todos positivos es
posible determinar fácilmente una solución básica factible. En este caso, si sumamos una variable de holgura
por cada ecuación el vértice correspondiente al origen es una solución básica inicial con xi = 0 para las
variables iniciales e y j = b j para las variables de holgura.
Ejemplo 18.4opt 2x1 − 3x2
s.a. x1 + x2 ≤ 4
x1 − x2 ≤ 6
x1, x2 ≥ 0
⇐⇒
opt z = 2x1 − 3x2
s.a. x1 + x2 + y1 = 4
x1 − x2 + y2 = 6
x1, x2, y1, y2 ≥ 0
En este ejemplo las inecuaciones son del tipo menor o igual con términos independientes positivo y al
sumar una variable de holgura por cada ecuación el sistema asociado a estas variables tiene como matriz a
la identidad y tenemos una solución básica factible:
x1 x2 y1 y2 b
1 1 1 0 4
1 −1 0 1 6
rc 2 −3 0 0 0
PROYECTO MATECO 3.1 Página 600
TEMA 18. PROGRAMACIÓN LINEAL
� Problema de maximización: Se puede mejorar el valor de la función, ya que hay variables con costes
reducidos positivos que aumentan el valor de la función al entrar:
x1 x2 y1 y2 b
1 1 1 0 4
1 −1 0 1 6
rc 2 −3 0 0 0
Variables básicas (z = 0) :
y1 = 4
y2 = 6
Criterio de entrada para maximización (entre las variables con coste reducido positivo):
Mayor valor del coste reducido =⇒ Entra x1 en la base
Criterio de salida (entre las variables tales que el coeficiente de la variable que entra es positivo):
Menor valor del término independiente dividido por el coeficiente de la variable que entra
Renglón 1 sale y1 ⇔ y1 = 0 (y2 = 6, x2 = 0) =⇒ x1 ≤41
Renglón 2 sale y2 ⇔ y2 = 0 (y1 = 4, x2 = 0) =⇒ x1 ≤61
=⇒ sale y1.
x1 x2 y1 y2 b
1 1 1 0 4
0 −2 −1 1 2
rc 0 −5 −2 0 −8
Variables básicas (z = 8) :
x1 = 4
y2 = 2
Como todos los costes reducidos (rc) son negativos o nulos y es un problema de maximización hemos
terminado y la solución óptima es (holguras y1 = 0, y2 = 2)
x1 = 4
x2 = 0
Página 601 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
� Problema de minimización: Se puede mejorar el valor de la función, ya que hay variables con costes
reducidos negativos que disminuyen el valor de la función al entrar:
x1 x2 y1 y2 b
2 −3 0 0
1 1 1 0 4
1 −1 0 1 6
rc 2 −3 0 0 0
Variables básicas (z = 0) :
y1 = 4
y2 = 6
Criterio de entrada para minimización (entre las variables con coste reducido negativo):
Menor valor del coste reducido (valor más negativo) =⇒ Entra x2 en la base
Criterio de salida (entre las variables tales que el coeficiente de la variable que entra es positivo):
Menor valor del término independiente dividido por el coeficiente de la variable que entra
Renglón 1 y1 = 0 (y2 = 6, x1 = 0) x2 ≤41
Renglón 2 y2 = 0 (y1 = 4, x1 = 0) Coeficiente negativo
=⇒ sale y1.
x1 x2 y1 y2 b
2 −3 0 0
1 1 1 0 4
2 0 1 1 10
rc 5 0 3 0 12
Variables básicas (z = −12) :
x2 = 4
y2 = 10
Como todos los costes reducidos (rc) son positivos o nulos y es un problema de minimización hemos
terminado y la solución óptima es (holguras y1 = 0, y2 = 10) x1 = 0
x2 = 4 ♣
Nota En el algoritmo primal del simplex se presentan diferentes tipos de soluciones para un problema de
optimización (como siempre parte de una solución básica factible si podemos aplicar el algoritmo primal
del simplex el problema es factible):
� Si en algún cuadro obtenido al aplicar el algoritmo primal del simplex hay una variable no básica can-
didata a entrar en la base con los coeficientes negativos en todas las restricciones (renglones de la tabla) el
PROYECTO MATECO 3.1 Página 602
TEMA 18. PROGRAMACIÓN LINEAL
problema de optimización es un problema no acotado pues el valor de la función puede mejorar indefini-
damente aumentando esta variable sin salir de la región factible.
� Si en el cuadro óptimo obtenido tras aplicar el algoritmo primal del simplex todas las variables básicas
tienen coeficiente reducido nulo (rc=0)
a) Si todas las variables no básicas tienen coeficiente reducido distinto de cero el problema de optimización
tiene solución única.
b) Si existe al menos una variable no básica que también tiene coeficiente reducido nulo el problema de
optimización tiene múltiples soluciones, ya que esta variable podría entrar en la base sin cambiar el
valor de la función objetivo dando lugar a un óptimo alternativo (también serían óptimos todos los
puntos que se obtienen como combinación convexa de ellos). ♣
Ejemplo 18.5 (problema con múltiples soluciones)
max 12 x1 −
13 x2
s.a. 3x1 − 2x2 ≤ 6
x1 + 13 x2 ≤ 5
x1, x2 ≥ 0
⇐⇒
max z = 12 x1 −
13 x2
s.a. 3x1 − 2x2 + y1 = 6
x1 + 13 x2 + y2 = 5
x1, x2, y1, y2 ≥ 0
x1 x2 y1 y2 b
3 −2 1 0 6
1 13 0 1 5
rc 12 −1
3 0 0 0
Entra x1
x1 ≤63 = 2 sale y1
x1 ≤51 = 5
x1 x2 y1 y2 b
1 −23
13 0 2
0 1 −13 1 3
rc 0 0 −16 0 −1
El punto (2, 0) es un óptimo, pero como existe una variable no básica que también tiene coeficiente
reducido nulo, x2, esta variable podría entrar en la base sin que cambie el valor de la función (saliendo y2)
obteniendo el cuadro óptimo
x1 x2 y1 y2 b
1 0 19
23 4
0 1 −13 1 3
rc 0 0 −16 0 −1
En este caso obtenemos como óptimo el punto (4, 3) y, por tanto, todos los
puntos del segmento que une (2, 0) con (4, 3) son óptimos
Obsérvese que si volvemos a aplicar el algoritmo entraría y2 y saldría x2
con lo que entrariamos en un bucle. ♣
Página 603 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
Ejemplo 18.6 (Problema no acotado)
max 3x1 + 2x2
s.a. 3x1 − 2x2 ≤ 6
x1 + x2 ≥ −2
x1, x2 ≥ 0
⇐⇒
max z = 3x1 + 2x2
s.a. 3x1 − 2x2 + y1 = 6
−x1 − x2 + y2 = 2
x1, x2, y1, y2 ≥ 0
x1 x2 y1 y2 b
3 −2 1 0 6
−1 −1 0 1 2
rc 3 2 0 0 0
v. bas.
y1 = 6
y2 = 2
z = 0
Entra x1
x1 ≤63 = 2
sale y1
x1 x2 y1 y2 b
1 −23
13 0 2
0 −53
13 1 4
rc 0 4 −1 0 −6
Como la variable x2 es candidata a entrar en la base y los coeficientes son negativos en todas las restric-
ciones (renglones de la tabla) es un problema no acotado, ya que sin salir de la región factible aumentando
esta variable el valor de la función aumenta indefinidamente. ♣
Si hay desigualdades mayor o igual el origen no es una solución básica factible y puede ser complicado,
o imposible, obtener una solución básica factible inicial para aplicar el algoritmo primal. Cuando se tiene
una solución que cumple las condiciones de óptimo pero no es factible vamos a utilizar el algoritmo dual
del simplex para obtener, si es posible, una solución básica factible inicial y posteriormente en combinación
con el algoritmo primal obtener una solución óptima factible.
Nota (Algoritmo Dual del Simplex)
1. Se lleva el modelo a su forma estándar agregando variables de exceso en las desigualdades mayor o
igual y para que el origen sea la solución básica inicial se multiplica cada una de estas restricciones
por -1 (la solución obtenida en este primer paso es infactible),.
2. Se determina si la solución es factible.
Si todas las variables básicas son no negativas la solución es factible:
FIN (le aplicamos el algoritmo primal).
Si alguna variable básica es negativa la solución es infactible:
CONTINUAR AL SIGUIENTE PASO (paso 3).
3. Se busca una solución básica que sea factible:
PROYECTO MATECO 3.1 Página 604
TEMA 18. PROGRAMACIÓN LINEAL
Si hay una variable básica negativa con el coeficiente positivo en todas las ecuaciones el proble-
ma de optimización es un problema infactible.
Si hay una variable básica negativa con el coeficiente negativo en alguna ecuación se cambia
una variable básica por una no básica.
• Se determina qué variable básica negativa debe salir de la base:
Criterio de salida entre estas variables:
Menor valor de la variable (lado derecho "más negativo")
• Se determina qué variable no básica debe entrar en la base:
Criterio de entrada entre variables con el coeficiente de la variable que sale negativo:
Menor valor absoluto del cociente entre el coste reducido y el coeficiente de la variable.
SE VUELVE AL PASO 2 ♣
Ejemplo 18.7mın 4x1 + 6x2
s.a. x1 + 2x2 ≥ 2
x1 − x2 ≥ 3
x1, x2 ≥ 0
⇐⇒
mın z = 4x1 + 6x2
s.a. x1 + 2x2 − y1 = 2
x1 − x2 − y2 = 3
x1, x2, y1, y2 ≥ 0
Para construir la tabla inicial multiplicamos las ecuaciones por -1 (las variables de exceso tienen coefi-
cientes negativos) obteniendo una solución básica infactible.
x1 x2 y1 y2 b
−1 −2 1 0 −2
−1 1 0 1 −3
rc 4 6 0 0 0
v. bas.
y1 = −2
y2 = −3
z = 0
Sale y2 de la base, ya que tiene el menor valor (el
lado derecho mas negativo).
Entra x1 en la base ya que es la única que tiene coefi-
ciente negativo (en el correspondiente renglón).
En general si hay más de una variable con coeficiente negativo entra la variable que nos da el menor
valor del coste reducido entre el correspondiente coeficiente negativo en valor absoluto.
x1 x2 y1 y2 b
0 −3 1 −1 1
1 −1 0 −1 3
rc 0 10 0 4 −12
v. bas.
x1 = 3
y1 = 1
z = 12
La solución obtenida es factible, ya que todas las
variables básicas son no negativas. Además al ser
todos los costes reducidos positivos es un mínimo
(solución óptima y factible). ♣
En este caso hemos obtenido directamente una solución óptima pero en general los algoritmos primal y
dual se combinan en la resolución del problema. Tras conseguir, si es posible, soluciones factibles mediante
el algoritmo dual obtenemos soluciones óptimas mediante el algoritmo primal.
Página 605 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
Ejemplo 18.8min 2x1 − 3x2
s.a. x1 + x2 ≤ 4
−x1 + x2 ≥ 1
x1, x2 ≥ 0
⇐⇒
min z = 2x1 − 3x2
s.a. x1 + x2 + y1 = 4
−x1 + x2 − y2 = 1
x1, x2, y1, y2 ≥ 0
Para construir la tabla inicial multiplicamos la segunda ecuación por -1 (la variable de exceso tiene
coeficiente negativo) obteniendo una solución básica infactible, por lo que el primer paso es aplicar el
algoritmo dual.
x1 x2 y1 y2 b
1 1 1 0 4
1 −1 0 1 −1
rc 2 −3 0 0 0
v. bas.
y1 = 4
y2 = −1
z = 0
Algoritmo dual:
Sale y2 por ser la única negativa.
Entra x2 por ser la única con coeficiente negativo.
x1 x2 y1 y2 b
2 0 1 1 3
−1 1 0 −1 1
rc −1 0 0 −3 3
v. bas.
y1 = 3
x2 = 1
z = −3
La solución es factible pero no óptima y aplicamos el
algoritmo primal:
Entra y2 al tener el menor coste reducido negativo.
Sale y1 al ser la única con coeficiente positivo.
x1 x2 y1 y2 b
2 0 1 1 3
1 1 1 0 4
rc 5 0 3 0 12
v. bas.
y2 = 3
x2 = 4
z = −12
La solución obtenida es un mínimo al ser todos los costes no negativos y además es el único al ser todos
los costes correspondientes a las variables no básicas estrictamente positivos. ♣
Ejemplo 18.9 (problema infactible)
max 3x1 + 2x2
s.a. 3x1 − 2x2 ≤ 6
x1 + x2 ≥ −2
x1 − 2x2 ≥ 4
x1, x2 ≥ 0
⇐⇒
max z = 3x1 + 2x2
s.a. 3x1 − 2x2 + y1 = 6
−x1 − x2 + y2 = 2
x1 − 2x2 − y3 = 4
x1, x2, y1, y2, y3 ≥ 0
Para construir la tabla inicial multiplicamos la tercera ecuación por -1 (la variable de exceso tiene coeficiente
negativo) obteniendo una solución básica infactible, por lo que el primer paso es aplicar el algoritmo dual.
PROYECTO MATECO 3.1 Página 606
TEMA 18. PROGRAMACIÓN LINEAL
x1 x2 y1 y2 y3 b
3 −2 1 0 0 6
−1 −1 0 1 0 2
−1 2 0 0 1 −4
rc 3 2 0 0 0 0
v. bas.
y1 = 6
y2 = 2
y3 = −4
z = 0
Algoritmo dual:
Sale y3 por ser la única negativa.
Entra x1 por ser la única con coeficiente negativo.
x1 x2 y1 y2 y3 b
0 4 1 0 3 −6
0 −3 0 1 −1 6
1 −2 0 0 −1 4
rc 0 8 0 0 3 −12
v. bas.
y1 = −6
y2 = 6
x1 = 4
z = −12
Al continuar con el algoritmo dual tendría que salir y1 de la base, ya que tiene valor negativo, sin
embargo los coeficientes de todas las variables en dicha ecuación son positivos y no puede cambiar de
signo con lo que tenemos un problema infactible. ♣
Cuando hay inecuaciones que son desigualdades mayor o igual, tenemos un método alternativo para la
búsqueda de una solución inicial factible básica. Este método recibe el nombre de método de la M grande,
se basa en la introducción de variables artificiales y se aplica siempre que hay ecuaciones de igualdad
entre las restricciones.
Ejercicio 18.10mın 2x1 − 3x2
s.a. x1 + x2 ≤ 4
−x1 + x2 ≥ 1
x1, x2 ≥ 0
Solución
El primer paso es transformar el problema en su forma estándar y añadir una variable artificial en
la restricción correspondiente a la desigualdad mayor o igual. Al ser un problema de minimización esta
variable se introduce con coeficiente M > 0 en la función, de forma que suponga una penalización en el
valor de la función.
Página 607 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
mın z = 2x1 − 3x2 + Mxa3
s.a. x1 + x2 + y1 = 4
−x1 + x2 − y2 + xa3 = 1
x1, x2, y1, y2, xa3 ≥ 0
⇐⇒
x1 x2 y1 y2 xa3 b
1 1 1 0 0 4
−1 1 0 −1 1 1
rc 2 −3 0 0 M 0
Para utilizar y1 y xa3 como variables básicas tenemos que hacer cero sus costes reducidos:
x1 x2 y1 y2 xa3 b
1 1 1 0 0 4
−1 1 0 −1 1 1
rc 2 + M −3 − M 0 M 0 −M
v. bas.
y1 = 4
xa3 = 1
z = M
Entra x2
x2 ≤41
x2 ≤11 sale xa
3
x1 x2 y1 y2 xa3 b
2 0 1 1 −1 3
−1 1 0 −1 1 1
rc −1 0 0 −3 3 + M 3
v. bas.
y1 = 3
x2 = 1
z = −3
Entra y2
y2 ≤31 sale y1
x1 x2 y1 y2 xa3 b
2 0 1 1 −1 3
1 1 1 0 0 4
rc 5 0 3 0 M 12
v. bas.
y2 = 3
x2 = 4
z = −12
Como todos los costes de las variables no básicas son positivos es un mínimo y es único. ♣
Ejercicio 18.11max 3x1 + 2x2
s.a. 3x1 − 2x2 ≤ 6
x1 + x2 ≥ −2
x1 − 2x2 ≥ 4
x1, x2 ≥ 0
Solución
El primer paso es transformar el problema en su forma estándar y añadir una variable artificial en
la restricción correspondiente a la desigualdad mayor o igual. Al ser un problema de maximización esta
variable se introduce con coeficiente −M < 0 en la función, de forma que suponga una penalización en el
valor de la función.
PROYECTO MATECO 3.1 Página 608
TEMA 18. PROGRAMACIÓN LINEAL
max z = 3x1 + 2x2 − Mxa3
s.a. 3x1 − 2x2 + y1 = 6
−x1 − x2 + y2 = 2
x1 − 2x2 − y3 + xa3 = 4
x1, x2, y1, y2, xa3 ≥ 0
Para poder utilizar y1, y2 y xa3 como variables básicas tenemos que hacer cero sus costes reducidos:
x1 x2 y1 y2 y3 xa3 b
3 −2 1 0 0 0 6
−1 −1 0 1 0 0 2
1 −2 0 0 −1 1 4
rc 3 + M 2 − 2M 0 0 −M 0 4M
v. bas.
y1 = 6
y2 = 2
xa3 = 4
z = −4M
Entra x1
x1 ≤63 sale y1
x1 ≤41
x1 x2 y1 y2 y3 xa3 b
1 −23
13 0 0 0 2
0 −53
13 1 0 0 4
0 −43 −1
3 0 −1 1 2
rc 0 4 − 4M3 −1 − M
3 0 −M 0 2M − 6
v. bas.
x1 = 2
y2 = 4
xa3 = 2
z = 6 − 2M
La solución obtenida es un máximo pero la variable artificial está en la base con valor positivo, por
tanto, tenemos un problema infactible. ♣
18.3. Formulación dual de un programa lineal
Asociado a cada problema de programación lineal existe otro problema de programación lineal, denomi-
nado problema dual (PD), cuya solución está asociada con la solución del problema lineal original, que para
diferenciarlo del dual se denomina problema primal (PP). Las relaciones entre ambos problemas permiten
que sea suficiente con resolver uno de ellos para poder obtener las soluciones óptimas y valores óptimos de
ambos problemas. En particular, podemos obtener la solución de problemas lineales con mayor numero de
restricciones que de variables resolviendo el problema dual, que nos proporciona de forma automática la
solución del problema original.
Proposición 18.12 (construcción del problema dual)
Página 609 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
a) Si el programa primal es un problema de maximización el programa dual es un problema de minimiza-
ción y viceversa.
b) El problema dual tiene tantas variables como restricciones tiene el programa primal.
c) El problema dual tiene tantas restricciones como variables tiene el programa primal
d) Los coeficientes de la función objetivo del problema dual son los términos independientes de las restric-
ciones del programa primal.
e) Los términos independientes de las restricciones del dual son los coeficientes de la función objetivo del
problema primal.
f) La matriz de coeficientes técnicos del problema dual es la traspuesta de la matriz técnica del problema
primal.
g) El sentido de las desigualdades de las restricciones y el signo de las variables del problema dual depen-
den del signo de las variables y del sentido de las restricciones del problema primal (tabla de Tucker).
Tabla de Tucker Primal Dual
Objetivo Minimización Maximización
≤ ≥
Restricciones ≥ ≤ Variables
>< =
≥ ≥
Variables ≤ ≤ Restricciones
= >< ♣
El problema dual que se obtiene de un problema primal en forma canónica es también un problema en
forma canónica (llevan asociadas desigualdades de la forma mayor o igual en los problemas de minimiza-
ción y desigualdades menor o igual para los problemas de maximización).
Así, para A ∈ Mm×n, c ∈ Rn, b ∈ Rm x ∈ Rn y λ ∈ Rm
(PP)
mın ctx
s.a. Ax ≥ b
x ≥ 0
(D)
max btλ
s.a. Atλ ≤ c
λ ≥ 0
⇐⇒
max λtb
s.a. λtA ≤ c
λ ≥ 0
PROYECTO MATECO 3.1 Página 610
TEMA 18. PROGRAMACIÓN LINEAL
Ejemplo 18.13
(P)
mın 4x1 + 6x2
s.a. x1 + 2x2 ≥ 2
x1 − x2 ≥ 3
x1, x2 ≥ 0
⇐⇒ (D)
max 2λ1 + 3λ2
s.a. λ1 + λ2 ≤ 4
2λ1 − λ2 ≤ 6
λ1, λ2 ≥ 0
(P)
mın(
4 6) x1
x2
s.a.
1 2
1 −1
x1
x2
≥ 2
3
x1, x2 ≥ 0
⇐⇒ (D)
max(λ1 λ2
) 2
3
s.a.
(λ1 λ2
) 1 2
1 −1
≤ 4
6
λ1, λ2 ≥ 0
Proposición 18.14 (Relación Primal-Dual)
a) El problema dual del problema (D) es el problema (P).
b) El lagrangiano de ambos problemas viene dado por:
LP(x; λ) = ctx + λt(b − Ax) = λtb + (ct − λtA)x = LD(λ; x)
c) (Teorema de existencia) La condición necesaria y suficiente para que un problema de programación
lineal tenga solución es que los conjuntos de oportunidades de los problemas primal y dual sean no
vacíos (sucede si y sólo si ambos problemas son factibles).
d) El dual de un problema no acotado es siempre infactible pero el dual de un problema infactible puede
ser tanto no acotado como infactible.
e) El valor objetivo del problema de minimización es mayor o igual que el del problema de maximización
ctx ≥ λtb
f) (Teorema de la dualidad) La condición necesaria y suficiente para que x∗ y λ∗ sean las respectivas
soluciones óptimas de los problemas primal y dual es que los respectivos valores de sus funciones
objetivos sean iguales:
ctx∗ = btλ∗
Página 611 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
En ese caso, λ∗ son los precios sombra de (P) y x∗ los precios sombra de (D).
g) (Teorema de la holgura complementaria) x∗ y λ∗ son las respectivas soluciones óptimas de (P) y (D) si
y sólo si:
λt(b − Ax) = 0 y (ct − λtA)x = 0
En ese caso, en la tabla óptima del primal los costes reducidos de las holguras son los valores óptimos
de las variables duales y los costes reducidos de las variables primales son los valores óptimos de las
holguras duales (siempre en valor absoluto). En la tabla óptima del dual el resultado es análogo. ♣
Ejemplo 18.15 En las tablas óptimas de los problemas del ejemplo 18.13 se tiene
P x1 x2 y1 y2 b
0 −3 1 −1 1
1 −1 0 −1 3
rc 0 10 0 4 −12
holguras variables
duales duales
variables
x1 = 3
x2 = 0
holguras
y1 = 1
y2 = 0
D λ1 λ2 yd1 yd2 b
1 1 1 0 4
3 0 1 1 10
rc −1 0 −3 0 −12
holguras variables
primales(-) primales(-)
variables
λ1 = 0
λ2 = 4
holguras
yd1 = 0
yd2 = 10
PROYECTO MATECO 3.1 Página 612
TEMA 18. PROGRAMACIÓN LINEAL
Ejercicios del tema.
Ejercicio 18.16 Dado el problema de programación lineal:
max x1 + 3x2
s.a. x1 + x2 ≤ 6
−x1 + 2x2 ≤ 8
x1, x2 ≥ 0
Dibujar la región factible, resolver gráficamente el problema, escribir el problema en su forma estandar y
determinar los puntos extremos identificando sus variables básicas y no básicas. ♣
Ejercicio 18.17 Resolver gráficamente los siguientes problemas:
(a)
max 2x + 5y
s.a. x + 3y ≤ 16
4x + y ≤ 20
x ≤ 4
x, y ≥ 0
(b)
max 4x + 2y
s.a. x + y ≥ 10
x ≥ 6
x, y ≥ 0
(c)
max 7x + 7y
s.a. x + y ≤ 6
x − y ≤ 2
x + 3y ≥ 6
Ejercicio 18.18 Resolver los siguientes problemas por el método del simplex y gráficamente los que sean
posibles (si es necesario utilizar el algoritmo primal y/o dual del simplex para resolverlos).
(a)
max x1 + x2
s.a. x1 + x2 ≤ 4
x1 − x2 ≥ 5
x1, x2 ≥ 0
(b)
max 4x1 + x2
s.a. 8x1 + 2x2 ≤ 16
5x1 + 2x2 ≤ 12
x1, x2 ≥ 0
(c)
max −x1 + 3x2
s.a. x1 − x2 ≤ 4
x1 + 2x2 ≥ 4
x1, x2 ≥ 0
(d)
max 3x1 + x2
s.a. 2x1 + x2 ≤ 6
x1 + 3x2 ≤ 9
x1, x2 ≥ 0
(e)
mın x1 − x2
s.a. x1 + x2 ≤ 6
x1 − x2 ≥ 0
x2 − x1 ≥ 3
x1, x2 ≥ 0
(f)
mın 3x1 + 5x2
s.a. 3x1 + 2x2 ≥ 36
3x1 + 5x2 ≥ 45
x1, x2 ≥ 0
(g)
mın x1 − 2x2 + 3x3
s.a. x1 + x2 + x3 ≤ 6
2x1 − x2 + x3 ≤ 5
x1, x2, x3 ≥ 0
(h)
max 2x1 + x2 + x3
s.a. 2x1 − 3x2 + 2x3 ≤ 2
−3x1 + 2x2 + 2x3 ≤ 2
2x1 + 2x2 − 3x3 ≤ 2
x1, x2, x3 ≥ 0
(i)
mın x1 − 2x2 + 3x3
s.a. x1 − x2 + x3 + 2x4 = 10
x2 − x3 + x5 = 1
x2 + 2x4 + x6 = 8
∀i = 1, . . . , 6, xi ≥ 0
Página 613 PROYECTO MATECO 3.1
Bloque V. PROGRAMACIÓN MATEMÁTICA
Ejercicio 18.19 Formular el problema dual de los problemas del ejercicio 18.18 y resolverlos por el método
del simplex (usar el algoritmo primal y/o dual). A partir de su solución óptima obtener los valores de las
variables primales y comprobar que coinciden con las soluciones obtenidas en el ejercicio 18.18.
Ejercicio 18.20 Resolver, si es posible, los problemas de PL que se plantearon en los ejercicios del tema
16 suponiendo, si es necesario, que las variables son continuas
PROYECTO MATECO 3.1 Página 614