Guía Completa de Programación Lineal
Guía Completa de Programación Lineal
Curso 2024-2025
Índice
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Índice
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Introducción. Programación Lineal
Un problema de programación lineal es un problema de optimización para el
que se verifica que:
Se trata de maximizar o minimizar una función lineal de las variables de
decisión.
Cada restricción puede expresarse como una ecuación o inecuación lineal.
Para que un modelo de optimización lineal pueda considerarse una
representación adecuada de un sistema, las variables de decisión deben
verificar:
Proporcionalidad: La contribución de cada variable a la función objetivo
y a las restricciones es directamente proporcional al valor de la variable.
Aditividad: No existen interacciones entre las variables, es decir, la
contribución de una variable a la función objetivo y a las restricciones es
independiente del valor de las otras variables.
Divisibilidad: Las variables de decisión pueden tomar cualquier valor no
negativo. Restricción de no negatividad
Certeza: Los parámetros que regulan el impacto en la función objetivo y
en las restricciones de cada variable son conocidos y exactos.
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 4 / 110
Introducción. Programación Lineal
Programación Lineal
La programación lineal es una técnica muy utilizada debido a varios factores:
1 Una gran cantidad de problemas pueden modelarse como un modelo
lineal: campo militar, económico, industrial, social, logística, etc.
2 Existen técnicas eficientes para la resolución de estos modelos.
3 Fácilmente se pueden realizar estudios de variación de los parámetros
del problema sin abandonar el ámbito lineal.
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Formulación de un PPL. Ejemplo
LEFIFICE 5
2
150
2 100
CPino 3 1 2
4 80
Horas 2 1 2
20
20
FONCIÓNOBJETNON Max 8 1
12 2
Formulación de un PPL. Ejemplo
Se definen dos variables de decisión:
Solución: x1 = 5, x2 = 30
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 8 / 110
Formulación de un PPL. Forma general
max 8 1 12 2
5 2
8 ª 1
2 2 100
3 1
La forma general de un PPL es la siguiente: 2 1 4 2 80
20
Y
_
_
_min / max f (x) = c1 x1 + c2 x2 + . . . + cn xn tazones
_
_
_
_
_
_sujeto a: a11 x1 + a12 x2 + . . . + a1n xn (=, Æ, Ø) b1
_
_
] a21 x1 + a22 x2 + . . . + a2n xn (=, Æ, Ø) b2
..
_
_
_
_ .
_
_
_
_
_ am1 x1 + am2 x2 + . . . + amn xn (=, Æ, Ø) bm
_
_
[ xi Ø 0, ’i = 1, . . . , n
2.11 1 3 1
Y Y
_
_
_
max 12x1 + 8x2 _
_
_
max 12x1 + 8x2 + 0x3 + 0x4 + 0x5
_
_ _
_
]s.a 5x1 + 2x2 Æ 150 ]s.a 5x1 + 2x2 + x3 = 150
_
_ _
_
2x1 + 3x2 Æ 100 ∆ 2x1 + 3x2 + x4 = 100
_
_ _
_
_
_
_
_ 4x1 + 2x2 Æ 80 _
_
_
_ 4x1 + 2x2 + x5 = 80
_
[ _
[
x1 Ø 0, x2 Ø 0 xi Ø 0, i = 1, . . . , 5
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
un PPL
única
Solución óptima
Solución óptima múltiple
Problema no cazado
Problema
no factible
Resolución Gráfica. Problema no factible
x2
x1 Ø 4
Y x1 + x2 Æ 3
_
_
_ max 4x1 + 3x2
_
_
la
]sujeto a: x1 + x2 Æ 3
_
_
_ 2x1 ≠ x2 Æ 3 ½
_
_
[ x1 Ø 4, x2 Ø 0
x1
2x1 ≠ x2 Æ 3
x2
Y
_
_ max 2x1 + 3x2 x1 + x2 Ø 3
_
_
_
]sujeto a: x1 + x2 Ø 3
_
_
_ x1 ≠ 2x2 Æ 4
_
_
[ x1 Ø 0, x2 Ø 0 x1 ≠ 2x2 Æ 4
x1
x2
Y 10x1 + 3x2 Æ 30
_
_
_ max 3x1 + 2x2
_
_
]sujeto a: 6x1 + 4x2 Ø 24
_
_
_ 10x1 + 3x2 Æ 30
_
_
[ x1 Ø 0, x2 Ø 0
6x1 + 4x2 Ø 24
x1
x2
5x1 + 2x2 Æ 150
Y
_
_
_
max 12x1 + 8x2
_
_
]sujeto a: 5x1 + 2x2 Æ 150
_
_
2x1 + 3x2 Æ 100
_
_ (5, 30)
_
_
_
_
_
[
4x1 + 2x2 Æ 80 I
x1 Ø 0, x2 Ø 0
2x1 + 3x2 Æ 100
x1
4x1 + 2x2 Æ 80
Red
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Resolución de un PPL. Conceptos previos
Y
]max f (x) = cx
_
_
Sea el problema de programación lineal: sujeto a: Ax = b , donde la
_
_
[ xØ0
matriz A tiene dimension m ◊ n.
Región factible: S = {x œ Rn |Ax = b, x Ø 0}
Problema factible: Se dice que el problema es factible si la región de
factibilidad es no vacía. En otro caso, se dice que el problema es no
factible.
Solución factible: vector x œ Rn que verifica Ax = b, x Ø 0
Una SFB,
A Btal que su matriz B asociada
A B sea A la matriz
B identidad
A puede
B ser:
x3 x1 1 0 ≠1 2
xB = . Por lo tanto xN = ,B= ,N=
x4 x2 0 1 1 1
Q R
A B A B 6
x̄B B ≠1 b c5d
c d
Solución factible básica: x̄ = = = c d.
x̄N 0 a0b
0
Calculamos el valor de la función objetivo: VF 0 = cx̄ = cB B ≠1 b = 0
¿Es x̄ una solución óptima?
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 34 / 110
Algoritmo simplex
Y A B
_
_max ≠x1 + 3x2 + 0x3 + 0x4 ≠1 2 1 0
_
_ A=
_
]s.a ≠x1 + 2x2 + x3 = 6 1 1 0 1
A B
_
_
_ x1 + x2 + x4 = 5 6 1 2
_
_ b= c = ≠1 3 0 0
[ xi Ø 0, i = 1, . . . , 4 5
máx cj ≠ cB B ≠1 Aj
j=j1 ,...,jr
Para
I -determinar
J que variable sale de la base, debemos calcular
b̄i --
-yij0 > 0 , siendo Yj0 = B ≠1 Aj0 y j0 hace referencia a la variable que
yij0 -
entre en la nueva base.
b̄
Saldrá de la base la variable situada en la componente i-ésima del vector ,
y
que tome un menor valor. Cabe recordar que b = B ≠1 b
A B A B
x̄B B ≠1 b 1 2T
La SFB x̄ = = = 6 5 0 0 hemos visto que no es
x̄N 0
una solución óptima. Por ello debemos construir una nueva SFB adyacente a
la que ya tenemos. Para ello determinamos, en primer lugar, la variable que
entrará a la nueva base:
A
cN
B A
≠ cB B ≠1 N:
B
1 2 1 2 1 0 ≠1 ≠1 2 1 2
≠1 3 ≠ 0 0 = ≠1 3 la segunda
0 1 1 1
componente del vector toma un mayor valor, por lo tanto x2 será la variable
que entrará a la base.
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 39 / 110
Algoritmo simplex. Ejemplo
A B
2
Hemos visto que la variable que entrará a la base sera x2 , por ello A2 =
1
b
Para determinar la variable que sale de la base calculamos :
y
A BA B A B A B≠1 A B A B
1 0 6 6 1 0 2 2
b̄ = B ≠1 b = = y = B ≠1 A2 = =
0 1 5 5 0 1 1 1
; <
6 5
min , = 3, por lo tanto la variable que abandona la base es la que se
2 1
encuentra en la primera componente,
A B es decirA la B variableAx3 . B
x2 x1 2 0
De manera que tenemos: xB = , xN = ,B= ,
x4 x3 1 1
Q R
A B A B A B 3
≠1 1 x̄B B ≠1 b c2d
c d
N= Solución factible básica: x̄ = = = c d.
1 0 x̄N 0 a0b
0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 40 / 110
Algoritmo simplex. Ejemplo
A B A B A B A B
x2 x4 2 ≠1 1 0
xB = , xN = ,B= ,N=
x1 x3 1 1 0 1
Q R
QA 11/3
BR QA BR
A B A B 1/3 1/3 6
x̄B B ≠1 b c dc
c
d c 4/3 d
d
SFB: x̄ = = = a ≠1/3 2/3 b a 5 b = c d
x̄N 0 a 0 b
0 0 0
¿Es x̄ una solución óptima? Calculamos los costos marginales:
cN ≠ cB B ≠1 N = A BA B 3
2 1/3 1/3 4 1
1 2 1 1 0 4 1 2
0 0 ≠ 3 ≠1 = ≠ ≠ Æ 0 0
≠1/3 2/3 0 1 3 3
4 11 29
Por lo tanto x̄ es una solución óptima y el VFO es: ≠ + 3 = .
3 3 3
max 12 8 0 0 0
cB xB x1 x2 x3 x4 x5 b Es una tabla no
0 x3 5 2 1 0 0 150 óptima ya que los
0 x4 2 3 0 1 0 100 costos marginales no
0 x5 4 2 0 0 1 80 son Æ 0.
12 8 0 0 0 ⇥0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 44 / 110
Tablas para el algoritmo simplex. Ejemplo
Entra a la base la variable
max 12 8 0 0 0 que tenga un costo
cB xB x1 x2 x3 x4 x5 b marginal de mayor valor,
0 x3 5 2 1 0 0 150 es decir x1 .
0 x4 2 3 0 1 0 100 Sale de la base la variable
0 x5 4 2 0 0 1 80 que tenga un menor valor
12 8 0 0 0 ⇥0 bi
; < yi1 , es decir x5 .
150 100 80
min , , = min {30, 50, 20}.
5 2 4
Las columnas de las variables básicas deben tener asociada la matriz
identidad, para ello:
max 12 8 0 0 0 1
cB xB x1 x2 x 3 x4 x5 b F3 æ F3
4
0 x3 0 -1/2 1 0 -5/4 50 F2 æ F2 ≠ 2 · F3
0 x4 0 2 0 1 -1/2 60 F1 æ F1 ≠ 5 · F3
12 x1 1 1/2 0 0 1/4 20 c ≠ z = (c ≠ z) ≠ 12 · F3
240 0 2 0 0 -3 ⇥0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 45 / 110
Tablas para el algoritmo simplex. Ejemplo
¿Y si el problema es de mínimo?
Será una solución factible si cj ≠ zj Ø 0
La variable que entrará a la nueva base será min {cj ≠ zj |cj ≠ zj < 0}
El criterio de la variable que sale de la base sigue siendo el mismo (es
un criterio de factibilidad)
El algoritmo finalizará:
Solución óptima única: ’j no básico, se cumple que cj ≠ zj > 0.
Solución no acotada: existe j no básico cumpliendo que cj ≠ zj < 0,
pero Yj Ø 0.
Múltiples soluciones: existe j no básico cumpliendo que cj ≠ zj = 0.
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 47 / 110
Algoritmo simplex. Ejemplo: escritorios
Ejemplo: escritorios
Una compañía produce diariamente escritorios, mesas y sillas. La fabricación de
cada unidad de uno de estos muebles precisa madera y dos tipos de mano de obra:
acabado y carpintería. La cantidad de cada recurso necesaria para fabricar una
unidad de cada mueble se da en la siguiente tabla:
Escritorios Mesas Sillas
Madera (unidades) 8 6 1
Acabado (horas) 4 2 3/2
Carpintería (horas) 2 3/2 1/2
La compañía ha estimado que podrá disponer cada día de 48 unidades de manera y
de mano de obra por valor de 20 horas de acabado y 8 horas de carpintería.
Además, se sabe que cada escritorio se vende por 60 u.m., cada mesa por 35 u.m. y
cada silla por 20 u.m. (La compañía cree también que la demanda de todos los
productos será ilimitada).
Formula un modelo matemático que permita conocer cómo debe organizar
la compañía la producción con objeto de maximizar los beneficios. Obtén la
solución óptima.
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 48 / 110
Algoritmo simplex. Ejemplo: escritorios
Sean las variables de decisión:
x1 : número de escritorios que fabrica la compañía
x2 : número de mesas que fabrica la compañía
x3 : número de sillas que fabrica la compañía
Se quiere maximizar los beneficios de la compañía, por ello la función
objetivo es la siguiente:
max 60x1 + 35x2 + 20x3
El problema de programación lineal queda formulado de la siguiente manera:
Y
_
_
_
max 60x1 + 35x2 + 20x3
_
_
]s.a. 8x1 + 6x2 + x3 Æ 48
_
_
4x1 + 2x2 + 32 x3 Æ 20
_
_
_
_
_
_ 2x1 + 32 x2 + 12 x3 Æ 8
_
[
x1 Ø 0, x2 Ø 0, x3 Ø 0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 49 / 110
Algoritmo simplex. Ejemplo: escritorios
Y Y
_
_
_max 60x1 + 35x2 + 20x3 _
_
_max 60x1 + 35x2 + 20x3 +0x4 + 0x5 + 0x6
_ _
]s.a. 8x1 + 6x2 + x3 Æ 48 ]s.a. 8x1 + 6x2 + x3 +x4 =48
_
_ _
_
4x1 + 2x2 + 32 x3 Æ 20 ∆ 4x1 + 2x2 + 23 x3 +x5 =20
_
_ 3 1
_
_
_
_
_ 2x1 + 2 x2 + 2 x3 Æ 8 _
_
_ 2x1 + 32 x2 + 12 x3 +x6 =8
_
[ _
[
x1 Ø 0, x2 Ø 0, x3 Ø 0 xj Ø 0, j = 1, . . . 6
max 60 35 20 0 0 0
cB xB x1 x2 x3 x4 x5 x6 b
0 x4 8 6 1 1 0 0 48
0 x5 4 2 3/2 0 1 0 20
0 x6 2 3/2 1/2 0 0 1 8
60 35 20 0 0 0 ⇥0
Es una tabla no óptima ya que los ; costos marginales
< no son Æ 0. Entra a la
48 20 8
base x1 , sale de la base x6 . min , , =4
8 4 2
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 50 / 110
Algoritmo simplex. Ejemplo: escritorios
max 60 35 20 0 0 0
cB xB x1 x2 x3 x4 x5 x6 b 1
F3 æ F3
0 x4 0 0 -1 1 0 -4 16 2
F2 æ F2 ≠ 4 · F3
0 x5 0 -1 1/2 0 1 -2 4 F1 æ F1 ≠ 8 · F3
60 x1 1 3/4 1/4 0 0 1/2 4 V1 æ V1 ≠ 60 · F3
240 0 -10 5 0 0 -30 ⇥0
Es una tabla no óptima ya que los costos; marginales
< no son ⇥ 0. Entra en la
4 4
base x3 y sale de la base x5 ya que min , = 8.
1/2 1/4
max 60 35 20 0 0 0
cB xB x1 x2 x3 x4 x5 x6 b F2 æ 2 · F2
1
0 x4 0 -2 0 1 2 -8 24 F3 æ F3 ≠ · F2
4
20 x3 0 -2 1 0 2 -4 8 F1 æ F1 + F2
60 x1 1 5/4 0 0 -1/2 3/2 2 V2 æ V2 ≠ 5 · F2
280 0 0 0 0 -10 -10 ⇥0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 51 / 110
Algoritmo simplex. Ejemplo: escritorios
max 60 35 20 0 0 0
cB xB x1 x2 x3 x4 x5 x6 b
0 x4 0 -2 0 1 2 -8 24
20 x3 0 -2 1 0 2 -4 8
60 x1 1 5/4 0 0 -1/2 3/2 2
280 0 0 0 0 -10 -10 ⇥0
Se trata de una tabla óptima ya que todos los costos marginales son Æ 0,
sin embargo existe una variable no básica con costo marginal igual a cero,
por lo tanto estamos frente a un problema con solución múltiple.
¿Cuáles son todas las posibles soluciones? Debe entrar en la base
aquella variable no básica con coste marginal igual a cero, en nuestro caso
x2 , y siguiendo el criterio para seleccionar que variable debe abandonar la
base lo hará x1 . Únicamente nos interesa saber cómo Q es el vector
R b, ya que
136/5
c d
éste nos proporciona el valor de otra solución: b = a 56/5 b
8/5
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 52 / 110
Algoritmo simplex. Ejemplo: escritorios
De manera
Q Rque, van Q a ser R
soluciones óptimas los puntos:
2 0
c0d c 8/5 d
c d c d
c d c d
x1 = c 8 d, x2 = c 56/5 d y todas las posibles combinaciones lineales
c d c d
a24b a136/5b
0 0
convexas de ellos, es decir:
Q R
2⁄
c 8/5 · (1 ≠ ⁄) d
c d
c d
x = ⁄x1 + (1 ≠ ⁄)x2 = c 8/5 · (7 ≠ 2⁄) d ’⁄ œ [0, 1].
c d
a8/5 · (17 ≠ 4⁄)b
0
El valor de la función objetivo en todos los casos es el mismo, y la compañía
tendrá unos beneficios de 280 u.m.
Ejemplo. Cajas
Una empresa de embalaje produce dos tipos de cajas, C 1 y C 2. Cada tipo
de caja requiere de un tiempo diferente de procesamiento en dos etapas:
corte y ensamblaje. Cada caja de tipo C 1 cuesta ensamblarla 5 horas, y las
cajas de tipo C 2 cuestan 4 horas. Cada caja de tipo C 1 cuesta cortarla 3
horas y las de tipo C 2, 2 horas. La empresa puede utilizar las máquinas de
corte y ensamblaje un máximo de 120 y 180 horas, respectivamente.
Por otro lado, la empresa se ha comprometido a producir al menos 20 cajas
del tipo C 1 y 30 cajas del tipo C 2. Producir una caja del tipo C 1 lleva un
costo asociado de 3 euros, mientras que las cajas de tipo C 2 tienen un costo
asociado de 2 euros.
Plantea y resuelve un problema de programación lineal que permita
determinar el número de cajas de cada tipo que hay que producir
para minimizar los costes de producción.
I
x1 : número de cajas producidas del tipo C 1
Variables de decisión:
x2 : número de cajas producidas del tipo C 2
Función objetivo: minimizar los costes de producción min 3x1 + 2x2
Y Y
_
_
_min 3x1 + 2x2 _
_
_min 3x1 + 2x2 +0x3 + 0x4 ≠ 0x5 ≠ 0x6
_
_ _
_
_
_
_s.a 3x1 + 2x2 Æ 120 _
_
_s.a 3x1 + 2x2 +x3 =120
_
_ _
_
] 5x1 + 4x2 Æ 180 ] 5x1 + 4x2 +x4 =180
∆
_
_
_ x1 Ø 20 _
_
_ x1 ≠x5 =20
_
_ _
_
_
_
_
_
x2 Ø 30 _
_
_
_
x2 ≠x6 =30
_
[ _
[
x1 Ø 0, x2 Ø 0 xj Ø 0, j = 1, . . . , 6
min 3 2 0 0 0 0 M M
cB xB x1 x2 x3 x4 x5 x6 a1 a2 b
0 x3 3 2 1 0 0 0 0 0 120
0 x4 5 4 0 1 0 0 0 0 180
M a1 1 0 0 0 -1 0 1 0 20
M a2 0 1 0 0 0 -1 0 1 30
50M 3-M 2-M 0 0 M M 0 0 ⇤0
Es una tabla no óptima ya que los costos marginales no son Ø 0. Entra a la
base la variable que tenga un costo
; marginal <
de menor valor, es decir x2 .
120 180 30
Sale de la base a2 ya que min , , = 30
2 4 1
min 3 2 0 0 0 0 M
cB xB x1 x2 x3 x4 x5 x6 a1 b
0 x3 3 0 1 0 0 2 0 60
0 x4 5 0 0 1 0 4 0 60
M a1 1 0 0 0 -1 0 1 20
2 x2 0 1 0 0 0 -1 0 30
60 + 20M 3-M 0 0 0 M 2 0 ⇤0
min 3 2 0 0 0 0 M
cB xB x1 x2 x3 x4 x5 x6 a1 b
0 x3 0 0 1 -0.6 0 -0.4 0 24
3 x1 1 0 0 0.2 0 0.8 0 12
M a1 0 0 0 -0.2 -1 -0.8 1 8
2 x2 0 1 0 0 0 -1 0 30
96 + 8M 0 0 0 0.2M M 0.8M 0 Ø0
-0.6 - 0.4
1
F2 æ · F2 Es una tabla óptima ya que todos los costos
5 marginales son Ø 0, sin embargo una variable
F3 æ F3 ≠ F2
F4 æ F4 artificial forma parte de la base y toma un
F1 æ F1 ≠ 3 · F2 valor estrictamente positivo, por lo tanto se
V2 æ V2 ≠ (3 ≠ M) · F2 trata de un problema no factible.
Y Y
_
_
_max 0.3x1 + 0.1x2 _
_
_max 0.3x1 + 0.1x2 + 0x3 + 0x4 + 0x5 + 0x6
_
_ _
_
_
_
_s.a x2 Ø x 1 _
_
_s.a x1 ≠ x2 + x 3 = 0
_
_ _
_
] x1 Æ 4000 ] x1 + x4 = 4000
∆
_
_
_ 2x1 ≠ x2 Ø 1000 _
_
_ 2x1 ≠ x2 ≠ x5 = 1000
_
_ _
_
_
_
_
_
2x1 + x2 Æ 14000 _
_
_
_
2x1 + x2 + x6 = 14000
_
[ _
[
x1 Ø 0, x2 Ø 0 xi Ø 0, i = 1, . . . , 6
min 0 0 0 0 0 0 1
cB xB x1 x2 x3 x4 x5 x6 a1 b
0 x3 1 -1 1 0 0 0 0 0
0 x4 1 0 0 1 0 0 0 4000
1 a1 2 -1 0 0 -1 0 1 1000
0 x6 2 1 0 0 0 1 0 14000
1000 -2 1 0 0 1 0 0 ⇤0
Es una tabla no óptima ya que los costos marginales no son Ø 0. Entra a la
base la variable que ;
tenga un menor costo marginal,
< es decir x1 . Sale de la
0 4000 1000 14000
base x3 , ya que min , , , =0
1 1 2 2
min 0 0 0 0 0 0 1
cB xB x1 x2 x3 x4 x5 x6 a1 b
0 x1 1 -1 1 0 0 0 0 0
0 x4 0 1 -1 1 0 0 0 4000
1 a1 0 1 -2 0 -1 0 1 1000
0 x6 0 3 -2 0 0 1 0 14000
1000 0 -1 2 0 1 0 0 ⇤0
Es una tabla no óptima ya que los costos
F1 æ F1
marginales no son Ø 0. Entra a la base la
F2 æ F2 ≠ F1
variable que tenga un menor costo marginal,
F3 æ F3 ≠ 2 · F1
es decir
; x2 . Sale de la base
< a1 ya que
F4 æ F4 ≠ 2 · F1 4000 1000 14000
V1 æ V1 + 2 · F1 min , , = 1000
1 1 3
min 0 0 0 0 0 0 1
cB xB x1 x2 x3 x4 x5 x6 a1 b
0 x1 1 0 -1 0 -1 0 1 1000
0 x4 0 0 1 1 1 0 -1 3000
0 x2 0 1 -2 0 -1 0 1 1000
0 x6 0 0 4 0 3 1 -3 11000
0 0 0 0 0 0 0 1 ⇤0
Es una tabla óptima ya que todos los costos
F3 æ F3 marginales son Ø 0. Ahora resolvemos la 2ª
F2 æ F2 ≠ F3 fase, aplicando el algoritmo simplex al
F1 æ F1 + F3 problema original, como SFB la que
F4 æ F4 ≠ 3 · F1 acabamos de obtener en la primera fase, y
V2 æ V2 + F3 eliminando las variables artificiales. Además,
se deben recalcular los costos marginales.
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
El problema dual
Ejemplo: drones
Una empresa elabora dos tipos de drones: 4MX500 y 4MX800. En su
producción destacan dos procesos: el de ensamblado final (P1 ) y el de su
comprobación (P2 ). Mensualmente se disponen de 2000 horas para P1 y
1000 para P2 . Los tiempos requeridos por cada tipo de dron en los procesos
son:
Horas requeridas Disponibilidad
Proceso 4MX500 4MX800 Mensual
P1 6 4 2000 h.
P2 2 4 1000 h.
Además, el beneficio por vender un dron 4MX500 es de 400 u.m y un dron
4MX800 600 u.m.
Con la información de la que dispones, plantea y resuelve un
problema de programación lineal que determine el plan de producción
que maximice el beneficio total.
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 72 / 110
El problema dual
El problema quedaría planteado de la siguiente manera:
x1 : número de drones de tipo 4MX500
x2 : número de drones de Y
tipo 4MX800.
_
_
_ max 400x1 + 600x2
_
_
]s.a. 6x + 4x Æ 2000
1 2
_
_
_ 2x1 + 4x2 Æ 1000
_
_
[ x1 Ø 0, x2 Ø 0
Por otro lado, lo que os pague por el alquiler del dron debe ser al menos
igual al beneficio que obtendríais al venderlos, es decir:
Reglas de dualización
Primal Dual
(Dual) (Primal)
max min
Restricción Æ Variable Ø 0
Restricción = Variable no restringida
Restricción Ø Variable Æ 0
Variable Ø 0 Restricción Ø
Variable no restringida Restricción =
Variable Æ 0 Restricción Æ
Matriz A Matriz A’
Si el problema primal es de máximo se lee de izquierda a derecha y, si el
problema primal es de mínimo de derecha a izquierda.
Ejemplo 1
Y
Y _
_min 7y1 + 8y2
_
_
_max 3x1 + 2x2 + 4x3 _
_
_
]s.a. y1 + y2 Ø 3
_
_ _
_
]s.a. x1 + 2x2 ≠ x3 Æ 7
[P] : [D] : 2y1 + y2 Ø 2
_
_ x1 + x 2 + x3 Æ 8 _
_
_
_
_
_
_
_ ≠y1 + y2 Æ 4
[ x1 Ø 0, x2 Ø 0, x3 Æ 0 _
_
[
y1 Ø 0, y2 Ø 0
Ejemplo 2
Y Y
_
_
_
min 3x1 + 7x2 + x3 _
_
_
max 7y1 + 8y2 + 5y3
_
_ _
_
]s.a. x1 + 2x2 + x3 Æ 7 ]s.a. y1 + 2y2 + 3y3 Ø 3
_
_ _
_
[P] : 2x1 + 3x2 ≠ x3 Ø 8 [D] : 2y1 + 3y2 + y3 = 7
_
_ _
_
_
_
_
_ 3x1 + x2 + 2x3 = 5 _
_
_
_ y1 ≠ y2 + 2y3 Æ 1
_
[ _
[
x1 Æ 0, x2 œ R, x3 Ø 0 y1 Æ 0, y2 Ø 0, y3 œ R
Criterio de optimalidad
Si existen x e y soluciones factibles del [P] y [D], respectivamente, tales que
los valores de las funciones objetivos coinciden, f (x) = g(y), entonces
dichas soluciones son óptimas para sus respectivos problemas.
Y
_
_
_
max 3000x1 + 5000x2
_
_
]s.a. x1 Æ 4
_
_
2x2 Æ 12
_
_
_
_
_
_ 3x1 + 2x2 Æ 18
_
[
x1 Ø 0, x2 Ø 0
Y
_
_max 3000x1 + 5000x2 Y
_
_
_
_
_
_min 4y1 + 12y2 + 18y3
]s.a. x1 Æ 4
_
_ _
_
]s.a. y1 + 3y3 Ø 3000
[P] : 2x2 Æ 12 [D] :
_
_ _
_ 2y3 + 2y3 Ø 5000
_
_
_ 3x1 + 2x2 Æ 18 _
_
_
_
_
[
[ y1 Ø 0, y2 Ø 0, y3 Ø 0
x1 Ø 0, x2 Ø 0
Los problemas en forma estándar quedan de la siguiente manera:
Y
_
_max 3000x1 + 5000x2 Y
_
_
_ _
_min 4y1 + 12y2 + 18y3
_
_
_s.a. x1 + u1 = 4 _
_
_
]s.a. y1 + 3y3 ≠ v1 = 3000
_
_ _
_
] 2x2 + u2 = 12
[P] : [D] : 2y2 + 2y3 ≠ v2 = 5000
_
_ 3x1 + 2x2 + u3 = 18 _
_
_
_
_
_
_
_ y1 Ø 0, y2 Ø 0, y3 Ø 0
_
_
_ x1 Ø 0, x2 Ø 0 _
_
[
_
_
[ v1 Ø 0, v2 Ø 0
u1 Ø 0, u2 Ø 0, u3 Ø 0
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 85 / 110
El problema dual. Ejemplo
Sabemos que x1 = 2 y x2 = 6, y tenemos el siguiente conjunto de
ecuaciones obtenidas de los problemas dual y primal, y de las condiciones de
holgura
Y complementarias. Y
_
_
_ x1 + u1 = 4 _
_
_2 + u1 = 4 æ u1 = 2
_
_ _
_
_
_
_ 2x2 + u2 = 12 _
_
_12 + u2 = 12 æ u2 = 0
_
_ _
_
_
_
_
_ 3x 1 + 2x 2 + u 3 = 18 _
_
_
_6 + 12 + u3 = 18 æ u3 = 0
_
_ _
_
_
_
_ y 1 + 3y 3 ≠ v 1 = 3000 _
_
_y1 + 3y3 ≠ v1 = 3000 æ y3 = 1000
_
_ _
_
]2y + 2y ≠ v = 5000 ]2y + 2y ≠ v = 5000 æ y = 1500
2 3 2 2 3 2 2
=∆
_
_
_ x1 · v1 = 0 _
_
_2 · v1 = 0 æ v1 = 0
_
_ _
_
_
_
_
_
x 2 · v 2 = 0 _
_
_
_
6 · v2 = 0 æ v2 = 0
_
_ _
_
_
_
_ y 1 · u 1 = 0 _
_
_y1 · 2 = 0 æ y1 = 0
_
_ _
_
_
_
_ y2 · u2 = 0 _
_
_y2 · u2 = 0 æ y2 Ø 0
_
_ _
_
[y · u = 0 [y · u = 0 æ y Ø 0
3 3 3 3 3
De manera que la solución al problema primal es: y = (0, 1500, 1000).
Begoña Álvarez Tena Programación Lineal Curso 2024-2025 86 / 110
Índice
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Precios sombra
Precios sobra para el recurso i (bi ): Miden el valor marginal del recurso, es
decir la tasa a la que la función objetivo puede aumentar si se incrementa
(un poco) la cantidad que se proporciona de ese recurso bi .
Y
_
_
_max (520 ≠ 300)x1 + (480 ≠ 280)x2
_
_
_
_
_
_
s.a 2.5x1 + 3x2 Æ 4500
_
_
_
_
] 3x1 + 0.6x2 Æ 3400
14x1 + 10x2 Æ 20000
_
_
_
_
_
_ x1 + x2 Æ 1700
_
_
_
_
_ x1 Ø 600
_
_
[ x1 Ø 0, x2 Ø 0
1 Introducción
5 Teoría de la Dualidad
6 Precios sombra
7 Análisis de sensibilidad
Análisis de sensibilidad
CMnuevo = CMviejo ≠ cB B ≠1 Aj
A BA B
13 1 2 2/3 ≠1/3 2 13 2 11
x3 æ CMnuevo = ≠ ≠ ≠1 0 =≠ + =≠
3 ≠1/3 2/3 2 3 3 3
A BA B
1 1 2 2/3 ≠1/3 1 1 2 1
x4 æ CMnuevo = ≠ ≠ ≠1 0 =≠ + =
3 ≠1/3 2/3 0 3 3 3
A BA B
10 1 2 2/3 ≠1/3 0 10 1 11
x5 æ CMnuevo = ≠ ≠ ≠1 0 =≠ ≠ =≠
3 ≠1/3 2/3 1 3 3 3
De
3 manera que el vector4de costos marginales es el siguiente:
11 1 11
0 0 ≠ ≠ ⇥ 0, por lo tanto no se trata de una solución
3 3 3
óptima y debemos aplicar el algoritmo simplex.