Ejemplos de CPLEX (y algo de Simplex)

125
Ejemplos de CPLEX (y algo de Simplex)

Transcript of Ejemplos de CPLEX (y algo de Simplex)

Page 1: Ejemplos de CPLEX (y algo de Simplex)

Ejemplos de CPLEX (y algo de Simplex)

Page 2: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

I Motivacion: Para mantener una dieta equilibrada elnutricionista de Marıa le recomendo consumir diarimente unacierta cantidad de calorıas, vitaminas, minerales, grasas, sodioy colesterol. Como Marıa es muy ahorrativa, quiere cumplir lorecomendado por el nutricionista pero gastando lo menosposible.

I Planteo: Dado un conjunto de alimentos, la informacion denutrientes y el costo por porcion de cada uno, el objetivo esseleccionar la cantidad de porciones de cada alimento paracomprar (y consumir) a fin de minimizar el costo de lacomida, satisfaciendo las necesidades nutricionalesdeterminadas. Los requerimientos nutricionales se expresancomo un nivel maximo o mınimo permisible. Tambien paramejorar la calidad del menu, para ciertos alimentos es posibleespedificar un numero mınimo y/o maximo de porciones quese pueden incluir.

Page 3: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

I Motivacion: Para mantener una dieta equilibrada elnutricionista de Marıa le recomendo consumir diarimente unacierta cantidad de calorıas, vitaminas, minerales, grasas, sodioy colesterol. Como Marıa es muy ahorrativa, quiere cumplir lorecomendado por el nutricionista pero gastando lo menosposible.

I Planteo: Dado un conjunto de alimentos, la informacion denutrientes y el costo por porcion de cada uno, el objetivo esseleccionar la cantidad de porciones de cada alimento paracomprar (y consumir) a fin de minimizar el costo de lacomida, satisfaciendo las necesidades nutricionalesdeterminadas. Los requerimientos nutricionales se expresancomo un nivel maximo o mınimo permisible. Tambien paramejorar la calidad del menu, para ciertos alimentos es posibleespedificar un numero mınimo y/o maximo de porciones quese pueden incluir.

Page 4: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Ejemplo:

Supongamos la nutricionista nos recomendo consumir diariamenteentre 2000 y 2300 calorıas y al menos 1200 mgr de calcio, y quecontamos con 3 tipos de alimentos, maız, leche y pan. La tablamuestra la informacion nutricional de cada alimento y su costo porporcion.

Alimento Calorıas Calcio Costomaız 170 3 1.8leche 50 400 2.3pan 300 40 1.5

Tambien sabemos que no debemos consumir mas de 3 porcionesde pan diariamente y por lo menos queremos que nuestra dietatenga 2 porciones de leche.

Page 5: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Cuanto gastamos?

1.8xm + 2.3xl + 1.5xp

Page 6: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Cuanto gastamos?

1.8xm + 2.3xl + 1.5xp

Page 7: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Cuanto gastamos?

1.8xm + 2.3xl + 1.5xp

Page 8: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos cumplir el requerimiento mınimo de calorıas?

170xm + 50xl + 300xp ≥ 2000

¿Y el maximo?

170xm + 50xl + 300xp ≤ 2300

Page 9: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos cumplir el requerimiento mınimo de calorıas?

170xm + 50xl + 300xp ≥ 2000

¿Y el maximo?

170xm + 50xl + 300xp ≤ 2300

Page 10: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos cumplir el requerimiento mınimo de calorıas?

170xm + 50xl + 300xp ≥ 2000

¿Y el maximo?

170xm + 50xl + 300xp ≤ 2300

Page 11: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos cumplir el requerimiento mınimo de calorıas?

170xm + 50xl + 300xp ≥ 2000

¿Y el maximo?

170xm + 50xl + 300xp ≤ 2300

Page 12: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos cumplir el requerimiento mınimo de calorıas?

170xm + 50xl + 300xp ≥ 2000

¿Y el maximo?

170xm + 50xl + 300xp ≤ 2300

Page 13: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos el requerimiento mınimo de calcio?

3xm + 400xl + 40xp ≥ 1200

Page 14: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos el requerimiento mınimo de calcio?

3xm + 400xl + 40xp ≥ 1200

Page 15: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dieta

Representamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Como aseguramos el requerimiento mınimo de calcio?

3xm + 400xl + 40xp ≥ 1200

Page 16: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 17: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 18: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 19: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 20: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 21: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 22: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

¿Y que no tengamos mas de 3 porciones diarias de pan?

xp ≤ 3

¿Y por lo menos 2 de leche?

xl ≥ 2

Y por supuesto que la cantidad de porciones de maız, pan y lechedebe ser positiva:

xm, xl , xp ≥ 0

Page 23: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

Minimizar 1.8xm + 2.3xl + 1.5xp costo de compra

Sujeto a 170xm + 50xl + 300xp ≥ 2000 min. calorıas

170xm + 50xl + 300xp ≤ 2300 max. calorıas

3xm + 400xl + 40xp ≥ 1200 min. calcio

xp ≤ 3 max. porciones pan

xl ≥ 2 min. porciones leche

xm, xl , xp ≥ 0

Page 24: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Problema de la dietaRepresentamos con:

I xm a la cantidad de porciones diarias de maız de nuestra dieta

I xl a la cantidad de porciones diarias de leche de nuestra dieta

I xp a la cantidad de porciones diarias de pan de nuestra dieta

Minimizar 1.8xm + 2.3xl + 1.5xp costo de compra

Sujeto a 170xm + 50xl + 300xp ≥ 2000 min. calorıas

170xm + 50xl + 300xp ≤ 2300 max. calorıas

3xm + 400xl + 40xp ≥ 1200 min. calcio

xp ≤ 3 max. porciones pan

xl ≥ 2 min. porciones leche

xm, xl , xp ≥ 0

Page 25: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - ¿Que es un Programa Lineal?

Maximizarn∑

j=1cjxj

Sujeto an∑

j=1aijxj ≤ bi i = 1, . . . ,m

lj ≤ xj ≤ uj j = 1, . . . , n

donde cj , aij , bi ∈ R para j = 1, . . . , n y i = 1, . . . ,m.

Page 26: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - ¿Que es un Programa Lineal?I n variables de decision:

x1, . . . , xn

I funcion objetivo:

f (x) =n∑

j=1

cjxj

I m restricciones:n∑

j=1

aijxj ≤ bi i = 1, . . . ,m

Las restricciones pueden ser por mayor o igual, por menor oigual o igualdades.

I restricciones de cota:

lj ≤ xj ≤ uj j = 1, . . . , n

Las variables pueden ser no negativas y/o acotadas.

Page 27: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - ¿Que es un Programa Lineal?

I solucion factible:

x = (x1, . . . , xn) satisface las m desigualdades y las cotas

I region facible (poliedro convexo):

P = {x ∈ Rn : x es factible}

I solucion optima (problema de minimizacion):

x∗ = (x∗1 , . . . , x∗n ) ∈ P tal que f (x∗) ≤ f (x) ∀x ∈ P

I valor optimo:z∗ = f (x∗)

Page 28: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Asunciones

I Proporcionalidad: cuando el nivel de una actividad esmultiplicada por un factor, entonces la contribucion de esaactividad a la funcion objetivo o a cualquiera de lasrestricciones donde aparece es multiplicada por el mismofactor.

I Adicion: la suma de las contribuciones de las actividades esigual a la contribucion total, tanto en la funcion objetivocomo en las restricciones, independientemente de los nivelesde las otras actividades.

I Divisibilidad: Los niveles de las actividades pueden tomarvalores enteros o no enteros.

Page 29: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 30: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 31: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 32: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 33: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 34: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 35: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 36: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 37: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6

z = 12z = 18

2 4 6 8

2

4

6

8

10

Page 38: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6

z = 12

z = 18

2 4 6 8

2

4

6

8

10

Page 39: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12

z = 18

2 4 6 8

2

4

6

8

10

Page 40: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Resolucion grafica

Max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≤ 4x1, x2 ≥ 0

(x∗1 , x∗2 ) = (2, 6)

z∗ = 18

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 4

z = 6z = 12

z = 18

2 4 6 8

2

4

6

8

10

Page 41: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Alternativas

Un PL puede

I tener unico optimo

I tener infinitos optimos

I no tener optimo:

I no tiene soluciones factibles

I ser no acotado

Page 42: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - unico optimo

Min 5 x1+ x2

s.a. 2 x1+ x2≥6

x1+ x2≥4

2 x1+10x2≥20

x1, x2≥0

x1

x2

x1 + x2 = 4

2x1 + x2 = 6

2x1 + 10x2 = 20

5x1 + x2 = 6

1 2 3 4 5 6 7 8 9 10

1

2

3

4

5

6

Page 43: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - infinitos optimos

Max 2 x1+4x2

s.a. x1+2x2≤4

− x1+ x2≤1

x1, x2≥0

x1

x2

x1 + x2 = 4

−x1 + x2 = 1

1 2 3 4

1

2

Page 44: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - no factible

max z = 3x1 + 2x2

s.a. 2x1 + x2 ≤ 10x1 + x2 ≤ 8

x1 ≥ 6x1, x2 ≥ 0

x1

x2

x1 + x2 = 8

2x1 + x2 = 10

x1 = 6

2 4 6 8

2

4

6

8

10

Page 45: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - no acotado

Max x1+ x2

s.a. 2 x1+ x2≥6

x1+ x2≥4

2 x1+10x2≥20

x1, x2≥0

x1

x2

x1 + x2 = 4

2x1 + x2 = 6

2x1 + 10x2 = 20

−x1 − x2 = −7

1 2 3 4 5 6 7 8 9 10

1

2

3

4

5

6

Page 46: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Algoritmos

I SIMPLEX (George Dantzig 1947):Peor caso exponencial. Recorre los extremos del poliedro.Problemas con miles de variables y restricciones pueden serresueltos en tiempo computacionales razonables. En lapractica es el algoritmo mas utilizado.

I Algoritmo de punto interior - Metodo del elipsoide (LeonidKhachiyan 1979):Polinomial en el peor caso. Se mueve en el interior delpoliedro. No eficiente en la practica.

I Algoritmo de punto interior - Metodo proyectivo (NarendraKarmarkar 1984):Polinomial en el peor caso. Segun el tipo especıfico de LP esmas eficiente que el metodo SIMPLEX en la practica.

Page 47: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)Ilustremos el simplex con el siguinte ejemplo:

Max 3x1 + 2x2

sujeto a x1 + 2x2 ≤ 6(1) 2x1 + x2 ≤ 8

−x1 + x2 ≤ 1x2 ≤ 2

x1, x2 ≥ 0

x1

x2

R3

R4

R1

R2

R3

1 2 3 4

1

2

A

F

B

C

E D

Page 48: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)Ilustremos el simplex con el siguinte ejemplo:

Max 3x1 + 2x2

sujeto a x1 + 2x2 ≤ 6(1) 2x1 + x2 ≤ 8

−x1 + x2 ≤ 1x2 ≤ 2

x1, x2 ≥ 0

I Convertimos las restricciones en igualdades (salvo las restriccionesde no negatividad), mediante la introduccion de unas variables quellamaremos variables de holgura. Cada variable de holgurarepresenta la diferencia entre el lado derecho de una restriccion y eltermino independiente correspondiente.

Por ejemplo, la restriccion

2x1 + x2 ≤ 8

es equivalente al par de restricciones

2x1 + x2 + x3 = 8 y x3 ≥ 0.

Page 49: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)Ilustremos el simplex con el siguinte ejemplo:

Max 3x1 + 2x2

sujeto a x1 + 2x2 ≤ 6(1) 2x1 + x2 ≤ 8

−x1 + x2 ≤ 1x2 ≤ 2

x1, x2 ≥ 0

I Convertimos las restricciones en igualdades (salvo las restriccionesde no negatividad), mediante la introduccion de unas variables quellamaremos variables de holgura. Cada variable de holgurarepresenta la diferencia entre el lado derecho de una restriccion y eltermino independiente correspondiente.

Por ejemplo, la restriccion

2x1 + x2 ≤ 8

es equivalente al par de restricciones

2x1 + x2 + x3 = 8 y x3 ≥ 0.

Page 50: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

El sistema de restricciones puede reescribirse de la siguientemanera:

Max 3x1 + 2x2

sujeto a x1 + 2x2 + x3 = 6(2) 2x1 + x2 + x4 = 8

−x1 + x2 + x5 = 1x2 + x6 = 2

x1, x2, x3, x4, x5, x6 ≥ 0

I A las variables x3, x4, x5 y x6 las denominamos variables de holguray a x1 y x2 variables de decision.

I Ambas forman de representar el modelo son equivalentes, es decir,cada solucion de (1) puede ser extendida a una solucion de (2) yviceversa.

Page 51: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

El sistema de restricciones puede reescribirse de la siguientemanera:

Max 3x1 + 2x2

sujeto a x1 + 2x2 + x3 = 6(2) 2x1 + x2 + x4 = 8

−x1 + x2 + x5 = 1x2 + x6 = 2

x1, x2, x3, x4, x5, x6 ≥ 0

I A las variables x3, x4, x5 y x6 las denominamos variables de holguray a x1 y x2 variables de decision.

I Ambas forman de representar el modelo son equivalentes, es decir,cada solucion de (1) puede ser extendida a una solucion de (2) yviceversa.

Page 52: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La estrategia del metodo simplex es iterar consiguiendomejores soluciones para la funcion objetivo. Dada una solucionfactible x1 . . . x5 se trata de hallar otra x1 . . . x5 tal que

3x1 + 2x2 > 3x1 + 2x2.

I Repitiendo este proceso un numero finito de veces se tratarade llegar a una solucion optima.

I Para comenzar, se necesita una solucion factible. En nuestrocaso, basta tomar

x1 = 0 x2 = 0x3 = 6 x4 = 8x5 = 1 x6 = 2z = 0.

Page 53: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La estrategia del metodo simplex es iterar consiguiendomejores soluciones para la funcion objetivo. Dada una solucionfactible x1 . . . x5 se trata de hallar otra x1 . . . x5 tal que

3x1 + 2x2 > 3x1 + 2x2.

I Repitiendo este proceso un numero finito de veces se tratarade llegar a una solucion optima.

I Para comenzar, se necesita una solucion factible. En nuestrocaso, basta tomar

x1 = 0 x2 = 0x3 = 6 x4 = 8x5 = 1 x6 = 2z = 0.

Page 54: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La estrategia del metodo simplex es iterar consiguiendomejores soluciones para la funcion objetivo. Dada una solucionfactible x1 . . . x5 se trata de hallar otra x1 . . . x5 tal que

3x1 + 2x2 > 3x1 + 2x2.

I Repitiendo este proceso un numero finito de veces se tratarade llegar a una solucion optima.

I Para comenzar, se necesita una solucion factible. En nuestrocaso, basta tomar

x1 = 0 x2 = 0x3 = 6 x4 = 8x5 = 1 x6 = 2z = 0.

Page 55: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Solucion A:

x1 = 0 x2 = 0x3 = 6 x4 = 8x5 = 1 x6 = 2z = 0.

x1

x2

R3

R4

R1

R2

R3

1 2 3 4

1

2

A

F

B

C

E D

Page 56: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Buscamos una solucion factible con mayor valor de z .

Por ejemplo, si mantenemos el valor de x2 = 0 e incrementamos x1

se obtiene z = 3x1.

¿Pero cuanto podemos incrementar x1?

I x1 = 1 −→ x3 = 5 x4 = 6 x5 = 2 x6 = 2 z = 3

I x1 = 3 −→ x3 = 3 x4 = 2 x5 = 4 x6 = 2 z = 9

I x1 = 4 −→ x3 = 2 x4 = 0 x5 = 5 x6 = 2 z = 12

I x1 = 5 −→ x3 = 1 x4 = −2 x5 = 6 x6 = 2 z = 15

Page 57: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Buscamos una solucion factible con mayor valor de z .

Por ejemplo, si mantenemos el valor de x2 = 0 e incrementamos x1

se obtiene z = 3x1.

¿Pero cuanto podemos incrementar x1?

I x1 = 1 −→ x3 = 5 x4 = 6 x5 = 2 x6 = 2 z = 3

I x1 = 3 −→ x3 = 3 x4 = 2 x5 = 4 x6 = 2 z = 9

I x1 = 4 −→ x3 = 2 x4 = 0 x5 = 5 x6 = 2 z = 12

I x1 = 5 −→ x3 = 1 x4 = −2 x5 = 6 x6 = 2 z = 15

Page 58: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Buscamos una solucion factible con mayor valor de z .

Por ejemplo, si mantenemos el valor de x2 = 0 e incrementamos x1

se obtiene z = 3x1.

¿Pero cuanto podemos incrementar x1?

I x1 = 1 −→ x3 = 5 x4 = 6 x5 = 2 x6 = 2 z = 3

I x1 = 3 −→ x3 = 3 x4 = 2 x5 = 4 x6 = 2 z = 9

I x1 = 4 −→ x3 = 2 x4 = 0 x5 = 5 x6 = 2 z = 12

I x1 = 5 −→ x3 = 1 x4 = −2 x5 = 6 x6 = 2 z = 15

Page 59: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Buscamos una solucion factible con mayor valor de z .

Por ejemplo, si mantenemos el valor de x2 = 0 e incrementamos x1

se obtiene z = 3x1.

¿Pero cuanto podemos incrementar x1?

I x1 = 1 −→ x3 = 5 x4 = 6 x5 = 2 x6 = 2 z = 3

I x1 = 3 −→ x3 = 3 x4 = 2 x5 = 4 x6 = 2 z = 9

I x1 = 4 −→ x3 = 2 x4 = 0 x5 = 5 x6 = 2 z = 12

I x1 = 5 −→ x3 = 1 x4 = −2 x5 = 6 x6 = 2 z = 15

Page 60: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Buscamos una solucion factible con mayor valor de z .

Por ejemplo, si mantenemos el valor de x2 = 0 e incrementamos x1

se obtiene z = 3x1.

¿Pero cuanto podemos incrementar x1?

I x1 = 1 −→ x3 = 5 x4 = 6 x5 = 2 x6 = 2 z = 3

I x1 = 3 −→ x3 = 3 x4 = 2 x5 = 4 x6 = 2 z = 9

I x1 = 4 −→ x3 = 2 x4 = 0 x5 = 5 x6 = 2 z = 12

I x1 = 5 −→ x3 = 1 x4 = −2 x5 = 6 x6 = 2 z = 15

Page 61: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En el ultimo caso, perdemos factibilidad, porque x4 toma valornegativo.

I No podemos incrementar x1 demasiado.

I La pregunta es, ¿cuanto podemos incrementar x1

(manteniendo x2 = 0) y manteniendo factibilidad(x3, x4, x5, x6 ≥ 0)?

I Para encontrar esta respuesta de forma facil, despejamos x3,x4, x5, x6 y z en funcion de x1 y x2.

x3 = 6 − x1 − 2x2

x4 = 8 − 2x1 − x2

x5 = 1 + x1 − x2

x6 = 2 − x2

z = 3x1 + 2x2

Page 62: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En el ultimo caso, perdemos factibilidad, porque x4 toma valornegativo.

I No podemos incrementar x1 demasiado.

I La pregunta es, ¿cuanto podemos incrementar x1

(manteniendo x2 = 0) y manteniendo factibilidad(x3, x4, x5, x6 ≥ 0)?

I Para encontrar esta respuesta de forma facil, despejamos x3,x4, x5, x6 y z en funcion de x1 y x2.

x3 = 6 − x1 − 2x2

x4 = 8 − 2x1 − x2

x5 = 1 + x1 − x2

x6 = 2 − x2

z = 3x1 + 2x2

Page 63: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En el ultimo caso, perdemos factibilidad, porque x4 toma valornegativo.

I No podemos incrementar x1 demasiado.

I La pregunta es, ¿cuanto podemos incrementar x1

(manteniendo x2 = 0) y manteniendo factibilidad(x3, x4, x5, x6 ≥ 0)?

I Para encontrar esta respuesta de forma facil, despejamos x3,x4, x5, x6 y z en funcion de x1 y x2.

x3 = 6 − x1 − 2x2

x4 = 8 − 2x1 − x2

x5 = 1 + x1 − x2

x6 = 2 − x2

z = 3x1 + 2x2

Page 64: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En el ultimo caso, perdemos factibilidad, porque x4 toma valornegativo.

I No podemos incrementar x1 demasiado.

I La pregunta es, ¿cuanto podemos incrementar x1

(manteniendo x2 = 0) y manteniendo factibilidad(x3, x4, x5, x6 ≥ 0)?

I Para encontrar esta respuesta de forma facil, despejamos x3,x4, x5, x6 y z en funcion de x1 y x2.

x3 = 6 − x1 − 2x2

x4 = 8 − 2x1 − x2

x5 = 1 + x1 − x2

x6 = 2 − x2

z = 3x1 + 2x2

Page 65: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La condicion x3 ≥ 0 implica 6− x1 ≥ 0 −→ x1 ≤ 6.

I Para x4 ≥ 0 −→ x1 ≤ 8/2 = 4.

I La condicion x5 ≥ 0 implica 1 + x1 ≥ 0 −→ no impone cotasuperior para el crecimiento de x1.

I Para x6 ≥ 0 −→ no impone cota superior para el crecimientode x1.

El mayor valor que puede tomar x1 manteniendo factibilidad esx1 = 4, y la nueva solucion factible

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

incrementa el valor de z .

Page 66: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La condicion x3 ≥ 0 implica 6− x1 ≥ 0 −→ x1 ≤ 6.

I Para x4 ≥ 0 −→ x1 ≤ 8/2 = 4.

I La condicion x5 ≥ 0 implica 1 + x1 ≥ 0 −→ no impone cotasuperior para el crecimiento de x1.

I Para x6 ≥ 0 −→ no impone cota superior para el crecimientode x1.

El mayor valor que puede tomar x1 manteniendo factibilidad esx1 = 4, y la nueva solucion factible

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

incrementa el valor de z .

Page 67: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La condicion x3 ≥ 0 implica 6− x1 ≥ 0 −→ x1 ≤ 6.

I Para x4 ≥ 0 −→ x1 ≤ 8/2 = 4.

I La condicion x5 ≥ 0 implica 1 + x1 ≥ 0 −→ no impone cotasuperior para el crecimiento de x1.

I Para x6 ≥ 0 −→ no impone cota superior para el crecimientode x1.

El mayor valor que puede tomar x1 manteniendo factibilidad esx1 = 4, y la nueva solucion factible

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

incrementa el valor de z .

Page 68: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La condicion x3 ≥ 0 implica 6− x1 ≥ 0 −→ x1 ≤ 6.

I Para x4 ≥ 0 −→ x1 ≤ 8/2 = 4.

I La condicion x5 ≥ 0 implica 1 + x1 ≥ 0 −→ no impone cotasuperior para el crecimiento de x1.

I Para x6 ≥ 0 −→ no impone cota superior para el crecimientode x1.

El mayor valor que puede tomar x1 manteniendo factibilidad esx1 = 4, y la nueva solucion factible

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

incrementa el valor de z .

Page 69: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La condicion x3 ≥ 0 implica 6− x1 ≥ 0 −→ x1 ≤ 6.

I Para x4 ≥ 0 −→ x1 ≤ 8/2 = 4.

I La condicion x5 ≥ 0 implica 1 + x1 ≥ 0 −→ no impone cotasuperior para el crecimiento de x1.

I Para x6 ≥ 0 −→ no impone cota superior para el crecimientode x1.

El mayor valor que puede tomar x1 manteniendo factibilidad esx1 = 4, y la nueva solucion factible

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

incrementa el valor de z .

Page 70: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Solucion B:

x1 = 4 x2 = 0x3 = 2 x4 = 0x5 = 5 x6 = 2z = 12

x1

x2

R3

R4

R1

R2

R3

1 2 3 4

1

2

A

F

B

C

E D

Page 71: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La decision para mejorar el valor de z se vio facilitada por laexpresion de las ecuaciones y su relacion con la solucionfactible.

I Necesitarıamos tener un nuevo sistema que se relacione connuestra nueva solucion factible de manera similar al anterior.

I Las variables con valor > 0 estan expresadas en termino de lasque tienen valor 0. Necesitarıamos entonces tener x1, x3, x5 yx6 en terminos de x2 y x4.

Haciendo despejes y substituciones obtenemos:

x1 = 4 − 1/2x2 − 1/2x4

x3 = 2 − 3/2x2 + 1/2x4

x5 = 5 − 3/2x2 − 1/2x4

x6 = 2 − x2

z = 12 + 1/2x2 − 3/2x4

Page 72: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La decision para mejorar el valor de z se vio facilitada por laexpresion de las ecuaciones y su relacion con la solucionfactible.

I Necesitarıamos tener un nuevo sistema que se relacione connuestra nueva solucion factible de manera similar al anterior.

I Las variables con valor > 0 estan expresadas en termino de lasque tienen valor 0. Necesitarıamos entonces tener x1, x3, x5 yx6 en terminos de x2 y x4.

Haciendo despejes y substituciones obtenemos:

x1 = 4 − 1/2x2 − 1/2x4

x3 = 2 − 3/2x2 + 1/2x4

x5 = 5 − 3/2x2 − 1/2x4

x6 = 2 − x2

z = 12 + 1/2x2 − 3/2x4

Page 73: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La decision para mejorar el valor de z se vio facilitada por laexpresion de las ecuaciones y su relacion con la solucionfactible.

I Necesitarıamos tener un nuevo sistema que se relacione connuestra nueva solucion factible de manera similar al anterior.

I Las variables con valor > 0 estan expresadas en termino de lasque tienen valor 0. Necesitarıamos entonces tener x1, x3, x5 yx6 en terminos de x2 y x4.

Haciendo despejes y substituciones obtenemos:

x1 = 4 − 1/2x2 − 1/2x4

x3 = 2 − 3/2x2 + 1/2x4

x5 = 5 − 3/2x2 − 1/2x4

x6 = 2 − x2

z = 12 + 1/2x2 − 3/2x4

Page 74: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La decision para mejorar el valor de z se vio facilitada por laexpresion de las ecuaciones y su relacion con la solucionfactible.

I Necesitarıamos tener un nuevo sistema que se relacione connuestra nueva solucion factible de manera similar al anterior.

I Las variables con valor > 0 estan expresadas en termino de lasque tienen valor 0. Necesitarıamos entonces tener x1, x3, x5 yx6 en terminos de x2 y x4.

Haciendo despejes y substituciones obtenemos:

x1 = 4 − 1/2x2 − 1/2x4

x3 = 2 − 3/2x2 + 1/2x4

x5 = 5 − 3/2x2 − 1/2x4

x6 = 2 − x2

z = 12 + 1/2x2 − 3/2x4

Page 75: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Repitiendo el procedimiento anterior, buscamos aumentarnuevamente el valor de z .

I Para eso elegiremos una variable entre x2 y x4 para llevarla avalor positivo mientras mantenemos nula la otra.

I Notar que incrementos en el valor de x4 producendecrementos en z , luego solo queda x2 para elegir.

I ¿Cuanto podemos incrementar x2 manteniendo factibilidad?

Page 76: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Repitiendo el procedimiento anterior, buscamos aumentarnuevamente el valor de z .

I Para eso elegiremos una variable entre x2 y x4 para llevarla avalor positivo mientras mantenemos nula la otra.

I Notar que incrementos en el valor de x4 producendecrementos en z , luego solo queda x2 para elegir.

I ¿Cuanto podemos incrementar x2 manteniendo factibilidad?

Page 77: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Repitiendo el procedimiento anterior, buscamos aumentarnuevamente el valor de z .

I Para eso elegiremos una variable entre x2 y x4 para llevarla avalor positivo mientras mantenemos nula la otra.

I Notar que incrementos en el valor de x4 producendecrementos en z , luego solo queda x2 para elegir.

I ¿Cuanto podemos incrementar x2 manteniendo factibilidad?

Page 78: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Repitiendo el procedimiento anterior, buscamos aumentarnuevamente el valor de z .

I Para eso elegiremos una variable entre x2 y x4 para llevarla avalor positivo mientras mantenemos nula la otra.

I Notar que incrementos en el valor de x4 producendecrementos en z , luego solo queda x2 para elegir.

I ¿Cuanto podemos incrementar x2 manteniendo factibilidad?

Page 79: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)Razonando como antes:

I x1 = 4− 1/2x2 ≥ 0 −→ 4− 1/2x2 ≥ 0 −→ x2 ≤4

1/2 = 8

I x3 = 2− 3/2x2 ≥ 0 −→ 2− 3/2x2 ≥ 0 −→ x2 ≤2

3/2 = 4/3

I x5 = 5− 3/2x2 ≥ 0 −→ 5− 3/2x2 ≥ 0 −→ x2 ≤5

3/2 = 10/3

I x6 = 2− x2 ≥ 0 −→ 2− x2 ≥ 0 −→ x2 ≤ 2

Luego x2 = 4/3 es el mayor incremento y la nueva solucion factiblees:

x1 = 10/3 x2 = 4/3x3 = 0 x4 = 0x5 = 3 x6 = 2/3z = 38/3

Page 80: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Solucion C :

x1 = 10/3 x2 = 4/3x3 = 0 x4 = 0x5 = 3 x6 = 2/3z = 38/3

x1

x2

R3

R4

R1

R2

R3

1 2 3 4

1

2

A

F

B

C

E D

Page 81: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Teniendo la nueva solucion, expresamos las variables x1, x2, x5

y x6 en funcion de x3 y x4. Substituyendo:

x1 = 10/3 + 1/3x3 − 2/3x4

x2 = 4/3 − 2/3x3 + 1/3x4

x5 = 3 − x3 − x4

x6 = 2/3 + 2/3x3 − 1/3x4

z = 38/3 − 1/3x3 − 4/3x4

I Debemos ahora elegir una variable entre x3 y x4 cuyoincremento aumente el valor de z , pero dada su expresion,ninguna lo logra.

I Si incrementamos cualquiera de las variables x3 o x4, el valorde z disminuira.

I Nuestro trabajo termino aquı. ¿Por que?

Page 82: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La ultima solucion tiene z = 38/3.

I Si esta solucion es optima, debe cumplirse que cualquiersolucion factible verifique z ≤ 38/3.

I Pero como toda solucion factible debe tener x3 y x4 ≥ 0 yz = 38/3− 1/3x3 − 4/3x4, entonces z ≤ 38/3 para todasolucion factible.

I Luego la solucion obtenida es optima.

Page 83: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Max 2 x1+x2

s.a. x1−x2≤10

2 x1 ≤40

x1, x2≥0

x1

x2R1

R2

10 20 30

10

20

A

Page 84: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

x3 = 10 − x1 + 2x2

x4 = 40 − 2x1

z = 0 + 2x1 + x2

Sol. inicial: (0, 0, 10, 40) −→ A

Si elegimos x2 para incrementar su valor, no hay cota para lomaximo que puede crecer =⇒ LP no acotado!

Page 85: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)Generalizacion: Dado un problema

Maximizar∑n

j=1 cjxj

sujeto a∑n

j=1 aijxj ≤ bi i = 1, . . . ,m (*)

xj ≥ 0 j = 1, . . . , n

primero introducimos las variables de holgura xn+1 . . . xn+m, lasdespejamos en funcion de las variables de decision y denotamos a lafuncion objetivo como z :

xn+i = bi −∑n

j=1 aijxj i = 1, . . . ,m

xj ≥ 0 j = 1, . . . , n + m (**)

z =∑n

j=1 cjxj

Cada solucion factible de (*) corresponde a una solucion de (**).

Page 86: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En cada iteracion el metodo simplex se mueve de una solucionfactible x1 . . . xn+m a otra x1 . . . ˜xn+m que es mejor en elsentido que

n∑j=1

cj xj >n∑

j=1

cjxj .

I Es conveniente asociar a cada solucion factible un sistemalineal de ecuaciones en el cual sea facil de encontrar unasolucion factible mejor.

I Las ecuaciones del sistema deben expresar m de las variablesx1 . . . xn+m y la funcion objetivo z en terminos de las restantesn variables.

Page 87: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Estos sistemas se llaman diccionarios. Si el terminoindependiente de cada ecuacion es ≥ 0 (salvo para z), eldiccionario se llama diccionario factible.

I Las variables que aparecen en el lado izquierdo de undiccionario son llamadas variables basicas y el resto de lasvariables no basicas.

I Las variables basicas constituyen una base, que cambia encada iteracion. Llamamos B al conjunto de variables basicas yN al de variables no basicas.

Page 88: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Entonces un diccionario tiene la siguiente expresion:

xi = bi −∑

j∈N aijxj i ∈ B

z = z +∑

j∈N cjxj

I A cada diccionario se asocia el punto xj = 0 para j ∈ N yxi = bi para i ∈ B.

I Como todos los diccionarios son equivalentes (solo hicimosmanipulacion algebraica) este punto es solucion del sistemaoriginal, es decir, es una solucion factible.

I No toda solucion factible puede ser asociada a un diccionario.

I Las soluciones factibles que pueden ser representadas por undiccionario se llaman soluciones basicas.

I El metodo simplex solo explora soluciones basicas, ignorandoal resto.

Page 89: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I En cada iteracion primero se elige una variables no basica queentrara a la base y luego una variable basica que saldra de labase.

I La eleccion de la variable de entrada esta motivada por eldeseo de incrementar el valor de z .

I Para esto seleccionamos una variable no basica xj con cj > 0.

I Si no existe, el presente diccionario describe una solucionoptima (xj = 0, j ∈ N y xi = bi , i ∈ B), en cuyo caso elmetodo finaliza.

Page 90: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I La determinacion de la variable de salida esta basada en elrequerimiento que todas las variables deben ser ≥ 0.

I La variable de salida es la variable basica cuya no negatividadimpone la cota superior mas restrictiva para el incremento dela variable de entrada (la menor de las cotas superiores).

I Si no existe cota sobre el crecimiento de la variable de entrada(coeficientes de la columna de entrada ≤ 0), esta puedecrecer tanto como querramos y por lo tanto la funcionobjetivo es no acotada. En este caso, el metodo termina.

I La ecuacion en la que aparece la variable de salida se llamafila pivote y el proceso de construir un nuevo diccionario esreferido como pivoteo.

Page 91: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Dado un problema

Maximizar∑n

j=1 cjxj

sujeto a∑n

j=1 aijxj ≤ bi i = 1, . . . ,m

xj ≥ 0 j = 1, . . . , n

los pasos del algoritmo simplex son:

Page 92: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

PASO 1 - Inicializacion: Introducir las variables de holguraxn+1, . . . , xn+m y considerar como base inicial este conjunto. Eldiccionario factible inicial es:

xn+i = bi −∑n

j=1 aijxj i = 1, . . . ,m

z =∑n

j=1 cjxj

Este diccionario es factible si bi ≥ 0, en cuyo casox1 = . . . = xn = 0 es una solucion factible basica (cuando esto nosucede se aplica SIMPLEX en dos fases).

Page 93: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

PASO 2 - Variable de entrada: Si el diccionario actual es:

xi = bi −∑

j∈N aijxj i ∈ B

z = z +∑

j∈N cjxj

I Si cj ≤ 0 ∀j ∈ N, la solucion asociada al diccionario actual esoptima, PARAR.

I Si no, elegir xk , k ∈ N con ck > 0 como variable de entrada.

Page 94: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

PASO 3 - Variable de salida:

I Si aik ≤ 0 ∀i ∈ B, el problema es no acotado, PARAR.

I Si no,

t = mini∈B,aik>0

biaik

=bsais

es el incremento que tendra xk y la variable de salida xs serala (o una de las) que define t.

PASO 4 - Actualizacion: Calcular la nueva baseB = B ∪ {xk} \ {xs}, la solucion basica y el diccionariocorrespondiente.

PASO 5: Ir a PASO 2.

Page 95: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

Los problemas que se pueden presentar en las distintas etapas son:

I Inicializacion: ¿Como obtener una solucion factible basicainicial? El diccionario inicial

xn+i = bi −∑n

j=1 aijxj i = 1, . . . ,m

z =∑n

j=1 cjxj

es factible solo si bi ≥ 0, en cuyo caso x1 = . . . = xn = 0 esuna solcucion factible basica. Si esto no ocurre mediante elmetodo SIMPLEX en dos fases es posible encontrar unasolucion factible basica inicial o establecer que el PL esinfactible.

Page 96: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Iteracion: Dado un diccionario factible con conjunto devariables basicas B y no basicas N,

xi = bi −∑

j∈N aijxj i ∈ B

z = z +∑

j∈N cjxj

hay que seleccionar una variable de entrada, una de salida yconstruir el diccionario correspondiente a la nueva solucionbasica por pivoteo. ¿Siempre se puede seleccionar variable deentrada y de salida?

I Terminacion: ¿Siempre se alcanza el optimo despues de finitasiteraciones?

Page 97: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX (maximizacion)

I Hay problemas de programacion lineal para los cuales elmetodo simplex realiza un numero exponencial de iteraciones.

I En 1972, Klee y Minty mostraron que para resolver

Maximizar∑n

j=1 10n−jxj

sujeto a 2∑i−1

j=1 10i−jxj + xi ≤ 100i−1 i = 1, . . . , n

xj ≥ 0 j = 1, . . . , n

el metodo simplex realiza 2n − 1 iteraciones si se seleccionacomo variable de entrada la de mayor coeficiente. Siasumimos que es posible realizar 1000 iteraciones por segundo,para n = 50 necesitarıamos 30.000 anos para resolverlo.

Page 98: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Sea

Maximizar∑n

j=1 cjxj

sujeto a∑n

j=1 aijxj ≤ bi i = 1, . . . ,m

xj ≥ 0 j = 1, . . . , n

I En el caso que exista algun bi < 0 nos vemos en el problemade encontrar una solucion factible.

I Mas aun, no podemos afirmar la existencia de solucionfactible.

Page 99: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Construimos un problema auxiliar:

Minimizar x0

sujeto a∑n

j=1 aijxj − x0 ≤ bi i = 1, . . . ,m

xj ≥ 0 j = 0, . . . , n

I Una solucion factible del problema auxiliar es: xj = 0j = 1, . . . , n y x0 lo suficientemente grande.

I El problema original tiene solucion factible si y solo si elproblema auxiliar tiene solucion factible con x0 = 0.

I Es decir, el problema original tiene solucion factible si y solo siel valor optimo del problema auxiliar es cero.

I El objetivo entonces sera resolver el problema auxiliar.

Page 100: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Ejemplo:

Max x1 − x2 + x3

sujeto a 2x1 − x2 + 2x3 ≤ 42x1 − 3x2 + x3 ≤ -5−x1 + x2 − 2x3 ≤ -1

x1, x2, x3 ≥ 0

El problema auxiliar resulta

Max −x0

sujeto a 2x1 − x2 + 2x3 − x0 ≤ 42x1 − 3x2 + x3 − x0 ≤ -5−x1 + x2 − 2x3 − x0 ≤ -1

x0, x1, x2, x3 ≥ 0

Page 101: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Ejemplo:

Max x1 − x2 + x3

sujeto a 2x1 − x2 + 2x3 ≤ 42x1 − 3x2 + x3 ≤ -5−x1 + x2 − 2x3 ≤ -1

x1, x2, x3 ≥ 0

El problema auxiliar resulta

Max −x0

sujeto a 2x1 − x2 + 2x3 − x0 ≤ 42x1 − 3x2 + x3 − x0 ≤ -5−x1 + x2 − 2x3 − x0 ≤ -1

x0, x1, x2, x3 ≥ 0

Page 102: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

El primer diccionario

x4 = 4 − 2x1 + x2 − 2x3 + x0

x5 = -5 − 2x1 + 3x2 − x3 + x0

x6 = -1 + x1 − x2 + 2x3 + x0

w = − x0

Pero no es factible. Haciendo pivote en x0 como variable deentrada y x5 de salida se obtiene

x0 = 5 + 2x1 − 3x2 + x3 + x5

x4 = 9 − 2x2 − x3 + x5

x6 = 4 + 3x1 − 4x2 + 3x3 + x5

w = -5 − 2x1 + 3x2 − x3 − x5

que es un diccionario factible para comenzar la primer fase delSIMPLEX.

Page 103: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

En general, el problema auxiliar puede ser escrito como

Minimizar x0

sujeto a∑n

j=1 aijxj − x0 ≤ bi i = 1, . . . ,m

xj ≥ 0 j = 0, . . . , n

Agregando las variables de holgura y llamando w a la funcionobjetivo, resulta

xn+i = bi −∑n

j=1 aijxj + x0 i = 1, . . . ,m

w = − x0

pero no es un diccionario factible.

Page 104: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

I Pivoteando en este diccionario tomando como variable deentrada a x0 y de salida la “mas infactible” de las xn+i ,obtenemos un diccionario factible.

I Si xn+k es la variable de salida, despues de pivotear x0 asumeel valor −bk y xn+i el valor bi − bk que es ≥ 0.

I Ahora estamos en condiciones de aplicar el metodo simplex alproblema auxiliar.

Page 105: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Siguiendo con el ejemplo se obtiene

x2 = 1 + 0.75x1 + 0.75x3 + 0.25x5 − 0.25x6

x0 = 2 − 0.25x1 − 1.25x3 + 0.25x5 + 0.75x6

x4 = 7 − 1.5x1 − 2.5x3 + 0.5x5 + 0.5x6

w = -2 + 0.25x1 + 1.25x3 − 0.25x5 − 0.75x6

Page 106: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - SIMPLEX primera fase

Y despues de una iteracion:

x3 = 1.6 − 0.2x1 + 0.2x5 + 0.6x6 − 0.8x0

x2 = 2.2 + 0.6x1 + 0.4x5 + 0.2x6 − 0.6x0

x4 = 3 − x1 − x6 + 2x0

w = − x0

Que es un diccionario optimo y da una solucion factible basica parael problema original x1 = 0, x2 = 2.2, x3 = 1.6, que se relacionacon el diccionario:

x3 = 1.6 − 0.2x1 + 0.2x5 + 0.6x6

x2 = 2.2 + 0.6x1 + 0.4x5 + 0.2x6

x4 = 3 − x1 − x6

z = -0.6 + 0.2x1 − 0.2x5 + 0.4x6

Page 107: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - IBM ILOG CPLEX

Software de Optimizacion para resolver problemas de:

I Programacion lineal.

I Programacion lineal entera mixta.

I Programacion cuadratica (funcion objetivo cuadratica yrestricciones lineales).

I Programacion con restricciones cuadraticas convexas.

Formas de uso:

I Interfase interactiva con el usuario.

I Interfase con lenguajes de programacion (C, C++, Java).

Page 108: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - IBM ILOG CPLEX

Archivo dieta.lp:

\xm: cantidad de porciones diarias de maiz de nuestra dieta\xl: cantidad de porciones diarias de leche de nuestra dieta\xp: cantidad de porciones diarias de pan de nuestra dieta

Min 1.8xm + 2.3xl + 1.5xp \costo de compra

Subject to

170xm + 50xl + 300xp >= 2000 \min. calorias170xm + 50xl + 300xp <= 2300 \max. calorias3xm + 400xl + 40xp >= 1200 \min. calcio

Boundsxp <= 3 \max. porciones panxl >= 2 \min. porciones leche\No es necesario 0 <=, lo toma por defectoEnd

Page 109: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - IBM ILOG CPLEX

Page 110: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 1Combinacion de productos

El granjero Jones prepara dos tipos de masas (chocolate y vainilla)que vende para obtener ingresos extra. Cada kilogramo de masasde chocolate se puede vender a $20, y cada kilogramo de masas devainilla se puede vender a $15. Un kilo de masas de chocolaterequiere de 20 minutos de coccion y 4 huevos. En cambio cadakilo de masas de vainilla requiere 40 minutos de coccion y 1 huevo.Jones tiene disponibles 8 horas de coccion y 30 huevossemanalmente y sabe que a lo sumo puede vender 5.3 kilogramosde masas de chocolate en una semana. Formular un LP paramaximizar las ganancias de Jones.

Page 111: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 1Combinacion de productos

Variables:

xc : kilogramos de masas de chocolate que se fabricansemanales

xv : kilogramos de masas de vainilla que se fabricansemanales

Page 112: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 1Combinacion de productos

Max 20xc + 15xv ganancia

s.a. Tiempo de coccion:20xc + 40xv ≤ 8*60

Huevos disponibles:4xc + xv ≤ 30

Maxima venta de masas de chocolate:xc ≤ 5.3

xc , xv ≥ 0

x∗ = (x∗c , x∗v ) = (5.142857, 9.428571)

Page 113: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 1Combinacion de productos

Max 20xc + 15xv ganancia

s.a. Tiempo de coccion:20xc + 40xv ≤ 8*60

Huevos disponibles:4xc + xv ≤ 30

Maxima venta de masas de chocolate:xc ≤ 5.3

xc , xv ≥ 0

x∗ = (x∗c , x∗v ) = (5.142857, 9.428571)

Page 114: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 2Planificacion de la produccion

Una empresa produce listones de madera en 4 medidas: chico,mediano, grande y extra grande. Estos listones pueden producirseen tres maquinas: A, B y C . La cantidad de metros que puedeproducir por hora cada maquina es:

A B C

chico 300 500 800mediano 250 400 640grande 200 320 500extra grande 100 200 250

Supongamos que las maquinas A y B puede ser usada 50 horassemanales y 30 la maquina C, que el costo operativo por hora decada una es $30, $50 y $80 respectivamente y que por restriccionestecnicas a lo suma se pueden fabricar 7000 metros de listonesmedianos enla maquina A. Si se necesitan 10000, 8000, 6000 y4000 metros de cada tipo de listones por semana, formular unmodelo para minimizar costos.

Page 115: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 2Planificacion de la produccion

Variables:

xcA/B/C : metros de listones chicos fabricados en la maquinaA/B/C

xmA/B/C : metros de listones mediasnos fabricados en lamaquina A/B/C

xgA/B/C : metros de listones grandes fabricados en la maquinaA/B/C

xeA/B/C : metros de listones extragrandes fabricados en lamaquina A/B/C

Page 116: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 2Planificacion de la produccion

Min 30( xcA300 + xmA

250 +xgA200 + xeA

100 )+ hs. usadas de la maquina A

50( xcB500 + xmB

400 +xgB320 + xeB

200 )+ hs. usadas de la maquina B

80( xcC800 + xmC

640 +xgC500 + xeC

250 ) hs. usadas de la maquina C

s.a. Restricciones de demanda:xcA + xcB + xcC = 10000xmA + xmB + xmC = 8000xgA + xgB + xgC = 6000xeA + xeB + xeC = 4000

Restricciones de disponibilidad:xcA300 + xmA

250 +xgA200 + xeA

100 ≤ 50

xcB500 + xmB

400 +xgB320 + xeB

200 ≤ 50

xcC800 + xmC

640 +xgC500 + xeC

250 ≤ 30

xmA ≤ 7000 x ≥ 0

Page 117: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 3Produccion multiperıodo (inventario)

Una companıa produce harina. Considerando un horizonte deplanificacion de 3 meses, quiere decidir cuantos kilogramos deharina producir cada mes. El pronostico de demanda en kilogramospara los siguientes 3 meses es de 10000, 35000 y 30000. Lacompanıa quiere abastecer de forma completa esta demanda.Tiene 5000 kilogramos de harina en inventario al comenzar el mes1 y puede usar la produccion de un mes para cubrir la demanda deun mes posterior. La capacidad maxima de produccion mensual esde 30000 kilogramos y la capacidad maxima de almacenaje es de10000 al finalizar el mes. El costo pronosticado de produccion paralos proximos 3 meses por kilogramos es de $8, $8.1 y $8.3respectivamente y el costo de almacenamiento por kilogramos alfinalizar un mes es del 5% del costo de produccion para ese mes.Al finalizar el mes 3 la companıa quiere tener en inventario por lomenos 4000 kilogramos de harina.

Page 118: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 3Produccion multiperıodo (inventario)

Variables:

pi : cantidad de kilogramos de harina producidos en elmes i = 1, . . . , 3

ai : cantidad de kilogramos de harina almacendos alfinalizar el mes i = 1, . . . , 3

Page 119: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 3Produccion multiperıodo (inventario)

Min 8p1 + 8.1p2 + 8.3p3+ costo de produccion

0.05(8a1 + 8.1a2 + 8.3a3) costo de almacenamiento

s.a. Maxima produccion:pi ≤ 30000 i = 1, . . . , 3

Maximo almacenaje:ai ≤ 10000 i = 1, . . . , 3

Balance mes 1:p1 + 5000 = 10000 + a1

Balance mes 2:p2 + a1 = 15000 + a2

Balance mes 3:p3 + a2 = 30000 + a3

Mınimo inventario mes 3:a3 ≥ 4000

Positividad:pi , ai ≥ 0 i = 1, . . . , 3

Page 120: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 4Mezcla

Derco procesa petroleo para producir combustible para aviones yaceite de maquina.Cuesta $40 comprar 1000 barriles de petroleo, que luego destiladosproducen 500 barriles de combustible para aviones y 500 de aceite.Lo que se obtiene de la destilacion puede ser vendido directamenteo ser procesado nuevamente con un fraccionador catalıtico.Si se vende sin el segundo proceso, el combustible para aviones sevende a $60 por 1000 barriles y el aceite se vende a $40 por 1000barriles.Lleva 1 hora procesar 1000 barriles de combustible para aviones enel fraccionador catalıtico, y esos 1000 barriles se venden a $130.El mismo proceso demora 45 minutos para 1000 barriles de aceite,y esos 1000 barriles se venden a $90.Cada dıa, se pueden comprar a lo sumo 20000 barriles de petroleo,y se tienen disponibles 8 horas del fraccionador catalıtico.Formular un LP que maximice los beneficios de Derco.

Page 121: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 4Mezcla

Variables:

X : barriles de petroleo comprados por dıa x 1000

xc : barriles de combustible sin proceso catalıtico vendidos por dıax 1000

xa: barriles de aceite sin proceso catalıtico vendidos por dıa x1000

xcp: barriles de combustible con proceso catalıtico vendidos pordıa x 1000

xap: barriles de aceite con proceso catalıtico vendidos por dıa x1000

Page 122: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 4Mezcla

Max −40X + costo de compra60xc + 40xa+ ganancia venta directa

130xcp + 90xap ganancia venta procesado

s.a. Tiempo de procesamiento:3/4xap + xcp ≤ 8

500 de aceite y 500 de combustiblepor cada 1000 de petroleo:xc + xa + xcp + xap = X

xc + xcp = xa + xap

Maxima disponibilidad:X ≤ 20

xc , xa, xcp, xap ≥ 0

Page 123: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 5Distribucion de mercaderıa (continuo)

Variables:

xij : flujo de mercaderıa desde fabrica i al deposito j

yjk : flujo de mercaderıa desde el depoosito j al cliente k

Page 124: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal - Ejemplo 5Distribucion de mercaderıa (continuo)

Min∑

i∈F ,j∈Dcijxij+ costo de transporte entre fabricas y depositos

∑j∈D,k∈C

cjkyjk costo de transporte entre depositos y clientes

s.a.

Capacidad fabrica:∑j∈D

xij ≤ fi ∀i ∈ F

Capacidad deposito:∑i∈F

xij ≤ dj ∀j ∈ D

Preservacion de mercaderıa:∑i∈F

xij =∑k∈C

yjk ∀j ∈ D

Demanda de clientes:∑j∈D

yjk = rk ∀k ∈ C

xij , yjk ≥ 0 ∀i ∈ F , j ∈ D, k ∈ C

Page 125: Ejemplos de CPLEX (y algo de Simplex)

Programacion Lineal

Limitaciones:

I ¿Que sucede si solo tiene sentido que las variables tomenvalores enteros? Por ejemplo si lo que fabricamos son autos, osi representan personas.

I Limitada para modelar toma de decisiones.