Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no...

22
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 c 1 x 1 + c 2 x 2 + ··· c n x n s.a. a 11 x 1 + a 12 x 2 + ··· + a 1n x n b 1 . . . a k1 x 1 + a k2 x 2 + ··· + a kn x n b k a k+11 x 1 + a k+12 x 2 + ··· + a k+1n x n b k+1 . . . a l1 x 1 + a l2 x 2 + ··· + a ln x n b l a l+11 x 1 + a l+12 x 2 + ··· + a l+1n x n = b l+1 . . . a m1 x 1 + a m2 x 2 + ··· + a mn x n = b m x 1 0, x 2 0, ··· x n 0 I Las variables se representan por un vector x = ( x 1 ,..., x n ) n . I Los coeficientes de la función objetivo se representan por otro vector c = (c 1 ,..., c n ) n y reciben el nombre de costes; con lo que la función objetivo adquiere la forma f ( x) = c t x. 593

Transcript of Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no...

Page 1: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 2: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 3: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 4: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 5: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 6: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 7: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 8: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 9: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 10: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 11: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 12: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 13: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 14: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 15: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 16: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 17: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 18: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 19: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 20: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 21: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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

Page 22: Tema 18 Programación lineal - personal.us.es · I En general se consideran restricciones de no negatividad para todas las variables sin pérdida de generalidad, ya que si alguna

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