Introducción a la Programación Lineal
Introducción a la Programación Lineal
Universidad de Zaragoza
Programación Lineal
2021-2022
Pedro Mateo
mateo@[Link]
4 de octubre de 2021
Contenido I
1
Introducción
Programación Lineal
1. Las variables de decisión implicadas en el problema son no negativas.
2. El criterio de selección, Función Objetivo, función lineal de las
variables.
3. Las reglas de funcionamiento del sistema pueden expresarse como un
conjunto de igualdades o desigualdades lineales.
4. Los valores de las variables de decisión que verifican estas
desigualdades se denominan Soluciones Factibles del problema.
5. La región de R n asociada a los puntos factibles del problema se
denomina Región de Factibilidad del problema.
Programación Lineal
Las condiciones anteriores implican:
I Proporcionalidad: La contribución de cada actividad al valor que
mide el logro del criterio establecido es proporcional al nivel que se
asigna a dicha actividad.
I Aditividad: Cada función en un modelo de programación lineal, tanto
la que representa el criterio como las que representan el
funcionamiento del sistema, se obtienen como la suma de las
contribuciones individuales por parte de cada una de las actividades.
I Divisibilidad: En un principio, las variables de decisión en un modelo
de programación lineal pueden tomar cualquier valor no negativo.
I Certeza: Se supone que los valores asociados a cada parámetro de
un problema de programación lineal son constantes conocidas.
Programación Lineal
Programación Lineal es una técnica muy utilizada:
1. Gran cantidad de problemas pueden aproximarse mediante un
modelado lineal (campo militar, económico, industrial, social, etc).
2. Existen técnicas eficientes para la resolución de estos modelos.
3. La facilidad que presentan para la realización de estudios de variación
de los parámetros del problema sin abandonar el ámbito lineal.
Forma general
Maximizar (Minimizar) Z (x1 , . . . , xn ) = c1 x1 + c2 x2 + · · · + cn xn
sujeto a:
a11 x1 + a12 x2 + · · · + a1n xn (=, ≤, ≥) b1
a21 x1 + a22 x2 + · · · + a2n xn (=, ≤, ≥) b2
..
.
am1 x1 + am2 x2 + · · · + amn xn (=, ≤, ≥) bm
xj ≥ 0, j = 1, . . . , n
Ejemplo
x2
z=300
máx Z = 12x1 + 8x2
(5,30)
s.a: 5x1 + 2x2 ≤ 150
2x1 + 3x2 ≤ 100
4x1 + 2x2 ≤ 80
x1 ≥ 0, x2 ≥ 0.
x1
z=0 z=120
x2
mı́n Z = 40x1 + 36x2
x1 ≤ 8
s.a:
x2 ≤ 10
5x1 + 3x2 ≥ 45
z=380
x1 ≥ 0, x2 ≥ 0
(8,5/3) z=680
x1
Solución múltiple
x2
(0,6)
máx Z = 3x1 + 2x2
s.a: 6x1 + 4x2 ≤ 24
10x1 + 3x2 ≤ 30
x1 ≥ 0, x2 ≥ 0
(24/11,30/11)
x1
Z=6 Z=12
Z=0
Problema no acotado
x2
máx Z = 2x1 + 3x2
s.a:
Z=20
x1 + x2 ≥ 3
x1 − 2x2 ≤ 4
x1 ≥ 0, x2 ≥ 0
x1
Z=12
Problema no factible
x2
máx Z = 4x1 + 3x2
x1 + x2 ≤ 3
s.a:
2x1 − x2 ≤ 3
x1 ≥ 4
x1 ≥ 0, x2 ≥ 0
x1
Ejemplo
Resolver:
máx Z = 15x1 + 10x2
máx Z = 15x1 + 10x2
2x1 + x2 ≤ 1500
s.a: s.a: 2x1 + x2 + x3 = 1500
x1 + x2 ≤ 1200 =⇒ x1 + x2 + x4 = 1200
x1 ≤ 500
x1 + x5 = 500
x1 , x2 ≥ 0 x1 , x2 , x3 , x4 , x5 ≥ 0
máx Z = 3x1 + 4x2
x1 + x2 ≤ 7
s.a:
6x1 + 8x2 ≤ 48 =⇒
−x1 + 4x2 ≤ 8
x1 , x2 ≥ 0.
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
20
Simplex
I El método del simplex es un procedimiento sistemático para resolver
PPL moviéndose desde un punto extremo a otro con una mejora (o
al menos no empeoramiento) de la función objetivo.
I El algoritmo calcula puntos extremos cumpliendo lo anterior hasta
que se alcanza el punto extremo óptimo o hasta que se detecta una
dirección extrema de no acotación (con cd > 0).
I Consideraremos inicialmente el PPL en la forma
máx Z = cx
s. a: Ax = b
x≥0
Definición 2
Solución factible, cualquier punto x verificando Ax = b, x ≥ 0.
Definición 3
Solución básica, SB, es cualquier punto verificando Ax = b en el cual al
menos n − m variables toman valor 0 y cuyas columnas en A son
linealmente independientes.
Definición 4
Solución factible básica, SFB, es una solución básica verificando las
condiciones de no negatividad. Es decir una solución básica que además
es solución factible.
Definición 5
Base, colección de variables con valor no obligatoriamente nulo en un
cierto orden que forman una SB/SFB. Las variables de ésta se denominan
variables básicas.
Definición 6
SFB no degenerada, es una SFB que tiene exactamente m valores no
nulos, y es degenerada en caso contrario.
Definición 7
Una SB/SFB x es adyacente a otra SB/SFB y si coinciden todas las
variables de la base excepto una.
Ejemplo
máx Z = 15x1 + 10x2
s.a: 2x1 + x2 + x3 = 1500
x1 + x2 + x4 = 1200
x1 + x5 = 500
xi ≥ 0, i = 1, . . . , 5
Etapas
1. Inicialización.
2. Prueba de optimalidad.
3. Paso de una SFB a otra SFB:
3.1 Selección de una variable para la nueva SFB.
3.2 Selección de una variable de la antigua SFB para que abandone la
base.
3.3 Operación de cambio de base.
Inicialización
I Para iniciar el algoritmo es necesario una SFB inicial que será
siempre un punto extremo.
I Dicha SFB debe ser tal que su matriz B asociada sea la matriz
identidada . Por ejemplo, problemas en los que se ha introducido una
variable de holgura sumando en cada una de sus restricciones.
Dado el problema
máx Z = −x1 + 3x2
s.a: −x1 + 2x2 + x3 = 6
x1 + x2 + x4 = 5
xj ≥ 0, j = 1, . . . , 4
SFB inicial, x1 = x2 = 0, x3 = 6 y x4 = 5, B = I2 y la base es (x3 , x4 ).
a El caso en el que no existe de forma directa una matriz B igual a la identidad se
pospone.
Prueba de optimalidad
Sea x̄ el punto extremo actual (SFB), sea A = [B, N] entonces
−1
x̄ B b
x̄ = B =
x̄N 0
Ejemplo
−1 2
1 0 x x
A= , x̄B = 3 , x̄N = 1 , J = {3, 4},
0 11 1 x4 x2
−1 −1 6 6
x̄B = B b = I2 = .
5 5
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
Prueba de optimalidad
27
Prueba de optimalidad
Sea x una solución factible cualquiera:
x
x = B y Ax = BxB + NxN = b ⇒ xB = B −1 b − B −1 NxN
xN
El valor de la función objetivo en x:
cx =cB xB + cN xN = cB (B −1 b − B −1 NxN ) + cN xN =
cB B −1 b + (cN − cB B −1 N)xN = cx̄ + (cN − cB B −1 N)xN
Resumiendo
Prueba de optimalidad
Dado x̄ SFB actual y x una solución factible cualquiera tenemos:
I Si cj − cB B −1 Aj ≤ 0 ∀j 6∈ J como xN ≥ 0 entonces
cx ≤ cx̄
y por tanto x̄ es la solución óptima del problema.
I Si cj − cB B −1 Aj > 0 para uno o más j 6∈ J . Si somos capaces de
construir x a partir de x̄ haciendo que una o más de las variables
asociadas a estas componentes j tomen valor positivo entonces:
Ejemplo
I J = {3, 4}, xB = x3 , xN = x1 .
x4 x2
I cB = (0, 0), cN = (−1, 3).
I N = −1 2 , B = 1 0 .
1 1 0 1
−1
−1
I cN − cB B N = (−1, 3) − (0, 0) 1 0 −1 2
= (−1, 3) no
0 1 1 1
son ambas menores o iguales que cero, por tanto la SFB actual no
es óptima.
I Si podemos construir otra solución factible en la que x2 > 0 será
mejor que la actual.
cj − cB B −1 Aj > 0
Definición 8
Dada una SFB con x̄ = (x̄B , x̄N )0 = (B −1 b, 0)0 las cantidades
cj − cB B −1 Aj se denominan costos marginales (reducidos, relativos)
asociados a las variables xj y representan la cantidad en la que la FO
varı́a por cada una unidad que tome la variable xj .
La cantidad cB B −1 Aj se denota mediante zj , con lo que los costos
marginales toman la forma cj − zj .
Observación
Los costos marginales de las variables básicas son cero siempre.
Ejemplo
En nuestro ejemplo la única variable en la que cj − zj > 0 es x2 ,
c2 − z2 = 3, por tanto x2 deberá tomar valor. La nueva base será (x2 , x4 )
o (x3 , x2 ) (SFB adyacentes). Construirlas y comprobarlas!
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
Selección de variable que abandona la base
32
4. Ası́:
b̄ − λ Yj0
x=
λ ej0
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
Selección de variable que abandona la base
34
Ejemplo
I Base inicial (x3 , x4 ), x̄ = (x̄3 , x̄4 , x̄1 , x̄2 )0 = (6, 5, 0, 0)0 , B = I 2 ,
c1 − cB B −1 A1 = −1 y c2 − cB B −1 A2 = 3 con lo que j0 = 2, entra x2
en la nueva SFB.
0
B −1 A2 = A2 = 2 1
6 −2 6 − 2λ
5 −1 5 − λ
x = x̄ + λ dj0 =
0 + λ 0 = 0
0 1 λ
Ejemplo
I Como j0 = 2, Y2 = B −1 A2 = (2, 1)0 > 0, B −1 b = (6, 5)0 la
expresión (3) queda:
b̄i
λ = mı́n1≤i≤2 |yi2 > 0
yi2
6 5
λ = 3 = mı́n{ , } = 3
2 1
I Sale de la base la variable que define el valor de λ , la primera de la
base, x3 . ¿Orden?
I Se pasa de la base (x3 , x4 ) a (x2 , x4 ). x = (x2 , x4 , x1 , x3 )0 :
2 0 −1 1 x2 x
A= , x̄B = , x̄N = 1 , J = {2, 4},
1 1 1 0 x4 x3
−1
2 0 2 0 6 3
B= x̄B = B −1 b = = , xN = 0.
1 1 1 1 5 2
Resumen
I xj0 entra en nueva base, sale xs en la que se alcanza el mı́nimo:
b̄s b̄i
λ= = mı́n1≤i≤m |yij0 > 0 ,
ysj0 yij0
b̄s
Nuevo punto es x = x̄ + λ dj0 y xj0 = λ = ysj0 .
I El VFO en x es:
j0 −B −1 Aj0
cx = cx̄ + c(λ d ) =cx̄ + λ (cB , cN ) =
ej0
cx̄ + xj0 (−cB B −1 Aj0 + cj0 )
c1 c2 . . . cn
x1 x2 . . . xn
c1 x1 y11 .. yn1 b̄1
c2 x2 y12 ..
yn2 b̄2
cB = . xB = . Y = B −1 A = .. b̄ = B −1 b = .
.. .. . ..
cm xm y1m .. ynm b̄m
c − cB B −1 A
Organigrama
Algoritmo
Simplex
Cálculo de SFB
inicial
cj − cB B −1 Aj ≤ 0 Fin
Solución
Óptima
Selecciona j0 que
Cálculo de SFB
maximiza
Adyacente
cj − cB B −1Aj
Problema no
Acotado
Seleccionar i que
minimiza
b̄i /Yij0 |Yij0 > 0
12 8 0 0 0
x1 x2 x3 x4 x5 b̄
0 x3 5 2 1 0 0 150
0 x4 2 3 0 1 0 100
0 x5 4 2 0 0 1 80
12 8 0 0 0 6≤ 0
x1 x2 x3 x4 x5 b̄
0 x3 0 -1/2 1 0 -5/4 50
0 x4 0 2 0 1 -1/2 60
12 x1 1 1/2 0 0 1/4 20
240 0 2 0 0 -3 6≤ 0
x1 x2 x3 x4 x5 b̄
0 x3 0 0 1 1/4 -11/8 65
8 x2 0 1 0 1/2 -1/4 30
12 x1 1 0 0 -1/4 3/8 5
300 0 0 0 -1 -5/2 ≤0
Observaciones
x1 x2 x3 x4 x5 b̄
0 x3 0 0 1 1/4 -11/8 65
8 x2 0 1 0 1/2 -1/4 30
12 x1 1 0 0 -1/4 3/8 5
300 0 0 0 -1 -5/2 ≤0
Ejemplo
má Z = 15x1 + 10x2
s.a: 2x1 + x2 + x3 = 1500
x1 + x2 + x4 = 1200
x1 + x5 = 500
xj ≥ 0, j = 1, . . . , 5
Tabla inicial:
15 10 0 0 0
0 x3 2 1 1 0 0 1500
0 x4 1 1 0 1 0 1200
0 x5 1 0 0 0 1 500
15 10 0 0 0
Entra x1 sale x5 .
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
Aplicación del algoritmo simplex
46
Ejemplo
0 x3 0 1 1 0 -2 500
0 x4 0 1 0 1 -1 700
15 x1 1 0 0 0 1 500
0 10 0 0 -15
Entra x2 sale x3 .
10 x2 0 1 1 0 -2 500
0 x4 0 0 -1 1 1 200
15 x1 1 0 0 0 1 500
0 0 -10 0 5
Entra x5 sale x4 .
Ejemplo
10 x2 0 1 -1 2 0 900
0 x5 0 0 -1 1 1 200
15 x1 1 0 1 -1 0 300
0 0 -5 -5 0
Solución óptima, x1 = 300, x2 = 200, VFO = 13500
(x3 = x4 = 0, x5 = 500).
Problema no acotado
máx Z = x1 + 2x2
s.a: −x1 + x2 ≤ 4
−2x1 + 3x2 ≤ 13
x1 , x2 ≥ 0
0 x3 -1 1 1 0 4 2 x2 -1 1 1 0 4
0 x4 -2 3 0 1 13 0 x4 1 0 -3 1 1
1 2 0 0 3 0 -2 0
2 x2 0 1 -2 1 5
1 x1 1 0 -3 1 1
0 0 7 -3
Problema no acotado
I Construimos:
−B −1 Aj0
x = x̄ + λ ,λ ≥0
ej0
x1 1 3 1 + 3λ
x2 5
= + λ 2 = 5 + 2λ ≥ 0,
x3 0 1 λ
x4 0 0 0
I −x1 + x2 = −1 − 3λ + 5 + 2λ = 4 − λ ≤ 4 ∀λ ≥ 0
I −2x1 + 3x2 = −2 − 6λ + 15 + 6λ = 13 ∀λ ≥ 0
I VFO = 11 + 7λ → ∞ si λ → ∞.
Problema de mı́nimo
I Optimalidad: cj − cB B −1 Aj = cj − zj ≥ 0, ∀j 6∈ J .
I Entrará en la nueva base: xj0 tal que
cj0 − zj0 = mı́n{cj − zj |cj − zj < 0}.
I Saldrá de la base: Igual que para máximo (es un criterio de
factibilidad).
I Finalización:
I cj − zj > 0 para todo j no básica, solución óptima única.
I cj − zj ≥ 0 para todo j no básica y existe alguna variable no básica
con cj − zj = 0, entonces tenemos solución óptima múltiple, se
procede de la misma forma que en el caso de máximo.
I cj − zj < 0 para algún j no básico y Yj ≤ 0, problema no acotado, se
procede de la misma forma que en el caso de máximo.
Ejemplo
mı́n Z = −2x1 + x2 − x3
s.a: 3x1 + x2 + x3 ≤ 6
x1 − x2 + 2x3 ≤ 1
x1 + x2 − x3 ≤ 2
xj ≥ 0, j = 1, . . . , 3
-2 1 -1 0 0 0
0 x4 3 1 1 1 0 0 6
0 x5 1 -1 2 0 1 0 1
0 x6 1 1 -1 0 0 1 2
-2 1 -1 0 0 0
Ejemplo
Entra x1 sale x5 .
0 x4 0 4 -5 1 -3 0 3
-2 x1 1 -1 2 0 1 0 1
0 x6 0 2 -3 0 -1 1 1
0 -1 3 0 2 0
Entra x2 sale x6 .
0 x4 0 0 1 1 -1 -2 1
-2 x1 1 0 1/2 0 1/2 1/2 3/2
1 x2 0 1 -3/2 0 -1/2 1/2 1/2
0 0 3/2 0 3/2 1/2
x1 x2 x3 x4 x5 x6 x7
x5 1/4 -8 -1 9 1 0 0 0
x6 1/2 -12 -1/2 3 0 1 0 0
x7 0 0 1 0 0 0 1 1
3/4 -20 1/2 -6 0 0 0
x1 x2 x3 x4 x5 x6 x7 x1 x2 x3 x4 x5 x6 x7
x3 1/8 0 1 -21/2 -3/2 1 0 0 x3 -5/2 56 1 0 2 -6 0 0
x2 -3/64 1 0 3/16 1/16 -1/8 0 0 x4 -1/4 16/3 0 1 1/3 -2/3 0 0
x7 -1/8 0 0 21/2 3/2 -1 1 1 x7 5/2 -56 0 0 -2 6 1 1
-1/4 0 0 3 2 -3 0 1/2 -16 0 0 1 -1 0
Método de Gran M.
1 -2 0 0 0 M M
x1 x2 x3 x4 x5 a1 a2
M a1 1 1 -1 0 0 1 0 2
M a2 -1 1 0 -1 0 0 1 1
0 x5 0 1 0 0 1 0 0 3
1 -2 0 0 0 0 0
-2M M M
1 -2 0 0 0 M M
x1 x2 x3 x4 x5 a1 a2
M a1 2 0 -1 1 0 1 -1 1
-2 x2 -1 1 0 -1 0 0 1 1
0 x5 1 0 0 1 1 0 -1 2
-1 0 0 -2 0 0 2
-2M 0 M -M 0 0 2M
Pedro Mateo | Programación Lineal
El algoritmo del Simplex
Construcción de SFB iniciales. 66
Método de Gran M.
1 -2 0 0 0 M M
x1 x2 x3 x4 x5 a1 a2
1 x1 1 0 -1/2 1/2 0 1/2 -1/2 1/2
-2 x2 0 1 -1/2 -1/2 0 1/2 1/2 3/2
0 x5 0 0 1/2 1/2 1 -1/2 -1/2 3/2
0 0 -1/2 -3/2 0 1/2 3/2
M M
Esta tabla constituye una SFB inicial para el problema original (no el
artificial). Si no se necesita la información de las columnas de las
variables artificiales, éstas pueden eliminarse de la tabla.
Método de Gran M.
1 -2 0 0 0 M M
x1 x2 x3 x4 x5 a1 a2
0 x4 2 0 -1 1 0 1 -1 1
-2 x2 1 1 -1 0 0 1 0 2
0 x5 -1 0 1 0 1 -1 0 1
3 0 -2 0 0 2 0
M M
1 -2 0 0 0 M M
x1 x2 x3 x4 x5 a1 a2
0 x4 1 0 0 1 1 0 -1 2
-2 x2 0 1 0 0 1 0 0 3
0 x3 -1 0 1 0 1 -1 0 1
1 0 0 0 2 M M
0 0 0 0 0 1 1
x1 x2 x3 x4 x5 a1 a2
1 a1 2 0 -1 1 0 1 -1 1
0 x2 -1 1 0 -1 0 0 1 1
0 x5 1 0 0 1 1 0 -1 2
-2 0 1 -1 0 0 2
Esta tabla constituye una SFB inicial para el problema original (no el
artificial). Las columnas de las variables artificiales se eliminan, se
introducen los costos originales y se recalculan los costos marginales.
1 -2 0 0 0
x1 x2 x3 x4 x5
0 x4 2 0 -1 1 0 1
-2 x2 1 1 -1 0 0 2
0 x5 -1 0 1 0 1 1
3 0 -2 0 0
0 0 0 0 0 1 0 0 0 0 0 1
x1 x2 x3 x4 x5 a1 x1 x2 x3 x4 x5 a1
x3 1 1 1 0 0 0 3 x3 0 3/2 1 -1/2 0 0 3/2
x4 2 -1 0 1 0 0 3 x1 1 -1/2 0 1/2 0 0 3/2
a1 1 0 0 0 -1 1 4 a1 0 1/2 0 -1/2 -1 1 5/2
-1 0 0 0 1 0 0 -1/2 0 1/2 1 0
0 0 0 0 0 1
x1 x2 x3 x4 x5 a1
x2 0 1 2/3 -1/3 0 0 1
x1 1 0 1/3 1/3 0 0 2
a1 0 0 -1/3 -1/3 -1 1 2
0 0 1/3 1/3 1 0
x1 + x2 ≤ 3 y x1 ≥ 4 son incompatibles.