Apuntes Introduccion A La Programacion Lineal

148
Universidad de Manizales INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL JULIAN GONZ`LEZ LÓPEZ ALVARO SALAS SALAS

Transcript of Apuntes Introduccion A La Programacion Lineal

Page 1: Apuntes Introduccion A La Programacion Lineal

Universidad de Manizales

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

JULIAN GONZÁLEZ LÓPEZ ALVARO SALAS SALAS

Page 2: Apuntes Introduccion A La Programacion Lineal
Page 3: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

JULIÁN GONZÁLEZ LÓPEZProfesor Asociado

Universidad de Manizales �Departamento de MatemáticasUniversidad de Caldas - Facultad de Ciencias Exactas y Naturales

Departamento de Matemáticas

ALVARO SALAS SALASProfesor Auxiliar

Universidad de Caldas - Facultad de Ciencias Exactas y NaturalesDepartamento de Matemáticas

Manizales, Octubre de 2000

Page 4: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

4

Page 5: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

5

TABLA DE CONTENIDO

CAPÍTULO I. PROGRAMACIÓN LINEAL.

INTRODUCCIÓN 1

1.1. Modelos de programación lineal 3

1.1.1. Forma matricial del modelo de programación lineal 4

1.1.2. Forma estándar de un modelo de programación lineal 4

1.2. Formulación de modelos de programación lineal 8

Ejercicios propuestos 20

CAPÍTULO II. MÉTODO GRÁFICO PARA RESOLVER MODELOS DE

PROGRAMACIÓN LINEAL CON DOS VARIABLES DE DECISIÓN.

INTRODUCCIÓN 23

2.1. Método gráfico para el caso de dos variables de decisión 23

2.1.1. Graficación de un sistema de desigualdades 24

2.1.2. Isocuantas de la función objetivo 27

Ejercicios propuestos 32

Page 6: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

6

CAPÍTULO III. MÉTODO SÍMPLEX.

INTRODUCCIÓN 35

3.1. Preparación para el método símplex 37

3.1.1. Variables de holgura

3.2. Forma algebraica del método símplex 41

3.3. Forma tabular del método símplex 56

3.4. Método símplex usando la técnica M (método de penalización) 67

Ejercicios propuestos 71

HOJA DE RESPUESTAS 73

BIBLIOGRAFIA 76

Page 7: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

7

PRESENTACIÓN

La Investigación de Operaciones y en particular una de sus áreas �la programación lineal� hatenido bastante difusión y aplicación en los últimos años. La necesidad de asignar en formaóptima, entre diversas actividades, recursos en general escasos como; dinero, mano de obra,energía, materia prima y muchos otros factores limitados; es importante para el profesionalque en su ejercicio diario requiere tomar decisiones.

La �programación matemática� dentro de la cual se encuentran los modelos de programaciónlineal difiere de los métodos de optimización clásica, ya que enfrenta problemas donde laslimitaciones o restricciones se expresan como desigualdades, lo que le imprime mayor realis-mo a los modelos; en estos casos los métodos clásicos basados en el cálculo no funcionan.

Este libro presenta de una manera sencilla, los conceptos básicos de la programación lineal yalgunas de sus múltiples aplicaciones; va dirigido a estudiantes de las ciencias económico-administrativas y solo requiere de parte del lector conocimientos básicos de álgebra matricial.

En el capítulo I se exponen los modelos de programación lineal y la solución de problemascuyo planteamiento conduce a este tipo de modelos. El capítulo II presenta la solución demodelos de programación lineal con dos variables de decisión a través del método gráfico.El capítulo III desarrolla el algoritmo simplex inicialmente en forma algebraica con lo cual sebusca una mejor comprensión de éste por parte del estudiante y posteriormente en su formatabular más eficiente desde el punto de vista computacional.

El capítulo IV muestra la implementación del algoritmo simplex en la plataforma del paqueteMATHEMATICA a través de un programa interactivo, el cual permite además analizar loscasos especiales que se presentan en estos modelos tales como; modelos sin solución, consoluciones óptimas alternativas y no acotados, se proporcionan también los criterios paradetectar en el desarrollo del algoritmo la presencia de éstas situaciones.

Agradecemos a nuestros lectores sus sugerencias y comentarios a fin de mejorar este mate-rial en futuras ediciones.

JULIAN GONZALEZ LOPEZ

ALVARO SALAS SALAS

Manizales, septiembre de 2000

Page 8: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

8

Page 9: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

9

CAPÍTULO IPROGRAMACIÓN LINEAL

INTRODUCCIÓN

Uno de los problemas fundamentales en la toma de decisiones es elegir dentro de un conjunto

posible de alternativas (soluciones factibles de un problema de interés), la mejor decisión, o la

óptima, según un criterio previamente definido.

La optimización es una técnica que busca, con base en distintos modelos matemáticos,

la asignación eficiente de recursos, siempre escasos, requeridos en diversas activida-

des productivas que compiten entre sí, con el propósito de satisfacer los objetivos de-

seados en el sector productivo, financiero, agrícola, entre otros, y que suelen ser la

maximización o minimización de alguna cantidad tal como: costo, beneficio, tiempo,

desperdicio, etc.

Existen varios métodos de optimización; algunos clásicos utilizan el cálculo diferencial y fun-

cionan bien en muchos casos; los no clásicos, cuyo desarrollo es más reciente, se basan en

una serie de modelos llamados Modelos de Programación Matemática, como los modelos

de programación lineal, modelos de programación entera, modelos de programación no li-

neal, etc.

Los modelos de programación matemática relacionan una variable de interés �Z� que se

desea �optimizar� en términos de un conjunto de variables x1, x

2, �, x

n, denominadas

variables de decisión, conformando una función objetivo que matemáticamente se ex-

presa así:

Page 10: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

10

Z = f (x1, x

2, � x

n)

La optimización de la variable �Z� normalmente está sujeta o condicionada a un conjunto de

restricciones que son impuestas por el medio, o que reflejan limitaciones reales. Dichas

restricciones se expresan en función de las variables de decisión a través de ecuaciones o

inecuaciones según el tipo de limitación. Matemáticamente una restricción se expresa de la

siguiente forma:

gi (x

1, x

2, �, x

n) ≤≤≤≤≤ = ≥≥≥≥≥ b

i con i = 1, 2, 3, �, n

Por la naturaleza de las variables de decisión x1, x

2, � x

n, puede ser necesario agregar

restricciones adicionales; por ejemplo, que sean enteras, o que sean no negativas.

Resumiendo, un modelo de programación matemática adopta la siguiente forma:

maximizar o minimizar. [ Z = f (x1, x

2, �, x

n)] Función Objetivo

Sujeta a:

g1 (x

1, x

2, �, x

n) ≤≤≤≤≤ = ≥≥≥≥≥b

1

g2 (x

1, x

2, �, x

n) ≤≤≤≤≤ = ≥≥≥≥≥b

2

. Restricciones Principales

.

.g

m (x

1, x

2, �, x

n) ≤≤≤≤≤ = ≥≥≥≥≥b

m

x1 ≥≥≥≥≥ 0, x

2 ≥≥≥≥≥ 0, �, x

n ≥≥≥≥≥ 0 Restricciones de no Negatividad

En este modelo de programación matemática los métodos clásicos de optimización basados

en el cálculo diferencial no funcionan debido a la presencia de restricciones expresadas como

Page 11: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

11

desigualdades, por lo cual es necesario desarrollar nuevos métodos para encontrar la solu-

ción óptima.

Los métodos de optimización no clásicos utilizan técnicas iterativas (paso a paso) los que

en la actualidad con ayuda de los ordenadores resultan relativamente fáciles de implementar,

permitiendo la solución de problemas donde intervienen gran cantidad de variables y de

restricciones.

1. 1. MODELOS DE PROGRAMACIÓN LINEAL

Un modelo de programación lineal es un modelo de programación matemática donde

la función objetivo y las restricciones son lineales; es decir, tiene la forma:

max. o min. [ Z = c1 x

1 + c

2 x

2 + c

3 x

3 + � + c

n x

n ]

Sujeta a:

a11

x1 + a

12 x

2 + � + a

1n x

n ≤≤≤≤≤ = ≥≥≥≥≥ b

1

a21

x1 + a

22 x

2 + � + a

2n x

n ≤≤≤≤≤ = ≥≥≥≥≥ b

2

. . .

. . .

. . .

am1

x1 + a

m2 x

2 + � + a

mn x

n ≤≤≤≤≤ = ≥≥≥≥≥ b

m

x1 ≥≥≥≥≥ 0, x

2 ≥≥≥≥≥ 0 � x

n ≥≥≥≥≥ 0

Las restricciones de no negatividad no son estrictamente necesarias, sin embargo, en proble-

mas de naturaleza económica o financiera, entre otros, suelen estar presentes.

Page 12: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

12

En el modelo de programación lineal se tiene que: Z es la función objetivo o variable a

optimizar, x1, x

2 , �, x

n son las variables de decisión y c

1, c

2 , �, c

n , a

11, a

12 , �, a

mn ,

b1, b

2 , �, b

mson los parámetros.

Los parámetros se pueden interpretar según el contexto donde surja el modelo; de esta forma

se tiene que: c1, c

2 , �, c

n , son beneficios unitarios, costos unitarios o precios unitarios, entre

otros, ai j

para i= 1, 2, �, m ; j = 1, 2, �, n son los coeficientes tecnológicos y b1, b

2

, �, bm pueden representar recursos disponibles, o bien demandas, etc.

1.1.1. FORMA MATRICIAL DEL MODELO DE PROGRAMACIÓN LINEAL

El modelo de programación lineal puede escribirse de una manera más compacta usando la

notación matricial, así:

C=

c1

c2

.

.

.cn

, A=

a11 a12 . . . a1n

a21 a22 . . . a2n

. . . . . .

. . . . . .

. . . . . .am1 am2 . . . amn

, X=

x1

x2

.

.

.xn

, B=

b1

b2

.

.

.bm

c1

c2

.

.

.c

n

Page 13: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

13

El modelo queda:

max. o min. [ Z = C�X ]

Sujeta a

0X

B AX

≥≥=≤

con C� = Matriz transpuesta de C

1.1.2. FORMA ESTÁNDAR DE UN MODELO DE PROGRAMACIÓN LINEAL.

Un modelo de programación lineal puede escribirse de tal forma que sus restricciones princi-

pales sean todas de igualdad, es decir, que formen un sistema lineal de ecuaciones. Lo

anterior es necesario para su solución por el método Símplex. El modelo de programación

lineal así expresado se conoce como �Modelo de Programación Lineal en Forma Estándar�.

Para escribir una desigualdad como igualdad es necesario sumar o restar una variable adicio-

nal según sea del tipo menor o igual o mayor o igual, así:

gi (x

1, x

2, �, x

n ) ≤≤≤≤≤ b

i ↔↔↔↔↔ g

i(x

1, x

2, �, x

n) + X

i = b

i

gk(x

1, x

2, �, x

n) ≥≥≥≥≥ b

k ↔↔↔↔↔ g

k(x

1, x

2, �, x

n) - X

k = b

k

Las variables Xi o X

k se denominan Variables de holgura y excedente, deben ser no

negativas y su significado o interpretación económica se hace en el contexto de un problema

real.

Un modelo de programación lineal está en forma estándar si cumple las siguientes condicio-

nes:

Page 14: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

14

� Todas las restricciones, con excepción de las restricciones de no negatividad son igualdades.

� Los elementos del lado derecho de cada igualdad son no negativos (≥≥≥≥≥ 0).

� Todas las variables son no negativas (≥≥≥≥≥ 0).

� Se tiene como objetivo maximizar o minimizar Z.

Ejemplo 1.1. Escriba el siguiente modelo de programación lineal en su forma estándar.

min. [Z = x1 - 3x

2 ]

sujeta a:

-x1 + 2x

2 ≤≤≤≤≤ 5

x1 + 3x

2 = 10

x1 , x

2 son irrestrictas en signo.

Nota: Cuando se dice que una variable es irrestricta en signo, significa que ella puede tomar

valores positivos, negativos o cero.

Solución: Se debe obtener un modelo con todas las variables de decisión no negativas,por

lo cual se definen x1 , x

2 en terminos de las variables x

1+, x

1-, x

2+, x

2- no negativas.

x1 = x

1+ - x

1- con x

1+ ≥≥≥≥≥ 0 y x

1- ≥≥≥≥≥ 0 .

x2 = x

2+ - x

2- con x

2+ ≥≥≥≥≥ 0 y x

2- ≥≥≥≥≥ 0 .

Reemplazando x1 , x

2, el modelo queda:

min. [ Z = x1+ - x

1- - 3x

2+ + 3x

2- ]

sujeta a:

-x1

+ + x1

- + 2x2

+ - 2x2- ≤≤≤≤≤ 5

x1+ - x

1- + 3x

2+ - 3x

2- = 10

x1+, x

1-, x

2+, x

2- ≥≥≥≥≥ 0

Page 15: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

15

Nota: Si al resolver este modelo se obtienen valores para x1+, x

1- entonces en el modelo

original el valor de x1 será x

1 = x

1+ - x

1- La misma aclaración es válida para las demás

variables.

Llevando la primera restricción a igualdad sumándole una variable de holgura X3 en el lado

izquierdo, obtenemos la forma estándar:

min. [Z = x1+ - x

1- - 3x

2+ + 3x

2- ]

sujeta a:

-x1+ + x

1- + 2x

2+ - 2x

2- + X

3 = 5

x1+ - x

1- + 3x

2+ - 3x

2- = 10

x1+, x

1-, x

2+, x

2-, X

3 ≥≥≥≥≥ 0

Ejemplo 1.2. Obtenga la forma estándar del modelo de programación lineal:

max. [Z = x1 - 2x

2 + x

3 ]

sujeta a:

x1 + x

2 + x

3 ≤≤≤≤≤ - 3

2x1 + x

2 - x

3 ≥≥≥≥≥ 1

x1

+ x3 ≤≤≤≤≤ 3

x1 , x

2 ≥≥≥≥≥ 0 , x

3 ≤≤≤≤≤ 0

Solución:

Se define x3

* = - x3 con lo que se obtiene x

3*≥≥≥≥≥ 0

Page 16: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

16

Reemplazando x3* y

multiplicando por (-1) la primera restricción se llega al modelo:

max. [Z = x1 - 2x

2 -x

3*]

- x1

- x2 + x

3*≥≥≥≥≥ 3

2x1 + x

2 + x

3*≥≥≥≥≥ 1

x1

- x3*≤≤≤≤≤ 3

x1, x

2, x

3* ≥≥≥≥≥ 0

Se agregan las variables de holgura X4 , X

5 , X

6 para obtener la forma estándar:

max. [Z = x1 - 2x

2 - x

3*]

sujeta a:

- x1

- x2 +x

3* - X

4 = 3

2x1 + x

2 +x

3* - X

5 = 1

x1

- x3* + X

6 = 3

x1, x

2 , x

3*, X

4 , X

5 , X

6 ≥≥≥≥≥ 0

1.2. FORMULACIÓN DE MODELOS DE PROGRAMACIÓN LINEAL

Sin duda la formulación de un modelo matemático para una situación real o un fenómeno

natural no es algo fácil. Sin embargo, existen algunas pautas que pueden orientar al alumno en

este proceso. No existen fórmulas mágicas ni recetas, pero sí estrategias que ayudan a

abordar los problemas.

Un problema de optimización, a menudo formulado verbalmente, debe expresarse en térmi-

nos matemáticos. Se recomienda la siguiente estrategia:

Page 17: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

17

� Con base en una lectura cuidadosa, comprender el problema e identificar las variables

involucradas (variable a optimizar, variables de decisión) y el objetivo (maximizar o mi-

nimizar).

� Separar la información necesaria de la información que no se requiere en la construcción

del modelo. Si es necesario organice adecuadamente la información en cuadros o tablas.

� Definir en forma apropiada las variables de decisión x1 , x

2 , �, x

n y la función objetivo.

Puede realizarse de varias formas, aunque una buena definición de las variables facilita la

construcción del modelo, mientras que otras pueden complicar innecesariamente este

proceso.

� Construir la función objetivo en términos de las variables de decisión. No olvide conside-

rar el análisis de dimensiones, el cual consiste en verificar que las unidades del lado iz-

quierdo de una igualdad o desigualdad coincidan con las unidades del lado derecho. No

tiene sentido, por ejemplo, una igualdad o desigualdad donde el lado izquierdo tiene

unidades de tiempo y el lado derecho unidades de longitud.

� Construir las restricciones en términos de las variables de decisión, de acuerdo con los

aspectos mencionados en el numeral anterior. Cerciórese de que para usted es claro el

significado de expresiones como: por lo menos, a lo sumo, como máximo, cuando mu-

cho, al menos, como mínimo, entre otras. No olvide incluir todas las restricciones.

� Exprese las restricciones implícitas o que aparecen disimuladas en el problema, pero que

son claras por la naturaleza de las variables. Por ejemplo, las variables por su naturaleza

pueden requerir que sean no negativas o enteras, o pueden carecer de restricciones.

Sin ser exhaustivas, las anteriores recomendaciones, a pesar de que no garantizan éxito en la

formulación de modelos, son de gran ayuda en el proceso. Recuerde que el factor principal

es el ingenio y la creatividad en combinación con la experiencia.

Page 18: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

18

Veamos algunos ejemplos de formulación de modelos de programación lineal, en distintos

campos.

Ejemplo 1.3. Planeación de la Producción.

Una planta industrial puede manufacturar 5 productos (A, B, C, D, E) en cualquier combina-

ción. Cada producto requiere tiempo en 3 máquinas como se muestra en la tabla. Cada

máquina está disponible 128 horas a la semana. Los productos son netamente competitivos

y cualquier cantidad fabricada puede venderse a $5, $4, $5, $4, $4 la libra respectivamente.

Los costos variables por hora de trabajo son $4 para las máquinas 1 y 2, y $3 para la

máquina 3. Los costos de material para cada línea de producto son $2 para A y C y $1 para

B, D, E por libra.

Construya un modelo de programación lineal que permita determinar el nivel óptimo de pro-

ducción (ver Cuadro � Ejemplo 1.3)

Solución:

El nivel óptimo de producción es el número de unidades (libras) a producir de cada producto

A, B, C, D, E, con el fin de obtener la mayor utilidad.

Definición de variables.

Variable a optimizar :

Z :Utilidad en pesos.

Variables de decisión:

x1 , x

2, x

3, x

4, x

5: Número de libras a producir de A, B,C,D y E, respectivamente.

La información básica del sistema de producción se presenta en el siguente cuadro.

Page 19: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

19

Tiempo en minutos/libraMÁQUINA

PRODUCTO 1 2 3 Precio Venta Costo Materia Prima$/Libra $/Libra

A 12 8 5 5 2

B 7 9 10 4 1

C 8 4 7 5 2

D 10 0 3 4 1

E 7 11 2 4 1

Cuadro � Ejemplo 1.3

Construcción de la función objetivo: Para construir la función objetivo se requiere cono-

cer la utilidad por libra de cada producto.

Costos por libra de cada producto:

Una libra de producto A requiere:

Materia prima $ 2

12 Minutos en la máquina A a hora

$4 da

hora

$4horas

60

12 × = $ 0.8

8 Minutos en la máquina B a hora

$4 da

hora

$4horas

60

8 × = $ 0.53

Page 20: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

20

5 Minutos en la máquina C a hora

$3 da

hora

$3horas

60

5 × = $ 0.25

Total Costo Libra producto A $ 3.583

De igual forma obtenemos los costos por libra de los otros productos que aparecen en la tabla.

La utilidad por libra de cada producto se obtiene restando del precio de venta por libra el

costo por libra. Se propone al lector la verificación de las cifras en la siguiente tabla:

PRODUCTO Precio × Libra en $ Costo × Libra en $ Utilidad × Libra en $

A 5 3.583 1.417

B 4 2.567 1.433

C 5 3.150 1.850

D 4 1.817 2.183

E 4 2.300 1.700

Por lo tanto la función de utilidad se construye sumando la utilidad total obtenida para x1

libras

de A, x2

libras de B, x3

libras de C, x4

libras de D, x5 libras de E obteniéndose:

Z = 1.417x1

+ 1.433x2

+ 1.85x3

+ 2.183x4

+ 1.7x5

Construcción de las restricciones: Cada máquina impone una restricción, pues la disponi-

bilidad en horas a la semana está limitada a 128 horas o sea 7680 minutos.

Page 21: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

21

Totalizando el número de minutos que se ocupa la máquina 1 en la producción de x1

libras

de A, x2

libras de B, x3

libras de C, x4

libras de D, x5

libras de E, éste no debe

sobrepasar el tiempo total disponible, es decir debe ser menor o a lo sumo igual a 7680

minutos.

Máquina 1.

7680x7x10x8BlibraxBlibra

min7Alibrax

Alibra

min12 54321 ≤++++

La restricción queda:

12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

≤≤≤≤≤ 7680.

De igual forma se tiene restricción de tiempo para el uso de las máquinas 2 y 3 así:

Máquina 2 8x1

+ 9x2

+ 4x3

+ 10x5

≤≤≤≤≤ 7680

Máquina 3 5x1

+ 10x2

+ 7x3

+ 3x4 + 2x

5 ≤≤≤≤≤ 7680

Se deja como ejercicio la deducción de estas dos últimas restricciones.

Como las variables de decisión son el número de libras a producir de cada producto, ésta

debe ser una cantidad no negativa, es decir, 0 (cero) o positiva, por lo que son necesarias las

restricciones de no negatividad sobre las variables de decisión.

Page 22: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

22

El modelo de programación lineal finalmente queda:

max [ Z = 1.417x1

+ 1.433x2

+ 1.85x3

+ 2.183x4

+ 1.7x5 ]

sujeta a:

12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

≤≤≤≤≤ 7680

8x1

+ 9x2

+ 4x3

+ + 11x5

≤≤≤≤≤ 7680

5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

≤≤≤≤≤ 7680x

1, x

2, x

3, x

4, x

5 ≥≥≥≥≥ 0

Ejemplo 1.4. Planeación Financiera

Un empresario tiene la opción de invertir su dinero en dos planes: el plan A le garantiza que

cada peso invertido ganará 70 centavos dentro de un año, el plan B le ofrece que en 2 años

su dinero se triplica, pero exige que las inversiones sean por periodos múltiplos de dos años.

Construya un modelo de programación lineal para saber cuál será un plan de inversión para

$1.000.000 con el fin de obtener el máximo dinero posible en el año 3.

Solución:

Con un diagrama de tiempo se definen las variables en forma apropiada, las flechas hacia

abajo son las inversiones y hacia arriba representan las rentas o ingresos.

Plan A

Page 23: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

23

Plan B (Inversiones por períodos múltiplos de dos años)

B0X B1X

B0X3 B1X3

0 1 2 3 Años

Sea Xi j : Cantidad de dinero a invertir en el plan j (j = A , B) en el año � i � ( i = 0, 1, 2 )

El objetivo es maximizar la suma de dinero disponible en el año 3. Sea Z suma de dinero a

retirar en el año 3, es decir Z = 1.7X2A

+ 3X1B

Las restricciones se relacionan con la cantidad de dinero disponible en cada período anual.

En � 0 � hay disponible 1000000. Por lo tanto, X0A

+ X0B

≤≤≤≤≤ 1000000

En � 1 � hay disponible 1.7XOA .

Por lo tanto, X1A

+ X1B

≤≤≤≤≤ 1.7XOA

En � 2 � hay disponible 1.7X1A

+ 3XOB

, luego X2A

≤≤≤≤≤ 1.7X1A

+ 3X0B

Además, X0A,

X1A,

X2A,

X0B ,

X1B

≥≥≥≥≥ 0 , X2B

= 0

Page 24: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

24

El modelo de programación lineal queda:

max [ Z = 1.7X2A

+ 3X1B

]

Sujeta a:

X0A

+ X0B

<<<<< 1000000

1.7X0A

- X1A

- X1B ≥ ≥ ≥ ≥ ≥ 0

1.7X1A

- X2A

+ 3XOB

≥ ≥ ≥ ≥ ≥ 0

X0A

, X1A

, X2A

, X0B

, X1B

≥ ≥ ≥ ≥ ≥ 0

Ejemplo 1.5. Puntos de Equilibrio Múltiple

La compañía �ATI S.A.� fabrica dos tipos de productos A y B. La firma ha contratado

800 unidades de A y desea saber cuál es el punto de equilibrio óptimo teniendo la siguiente

información:

Precio $/Unidad Costo $/Unidad Costos Fijos

Producto A 500 300 180000

Producto B 750 340 270000

Solución:

Sean X1

: Número de unidades del producto A vendidas y producidas.

X2 : Número de unidades del producto B vendidas y producidas

Y : Ingresos por la venta del número de unidades producidas de A y B.

C : Costo de producir X1

unidades de A y X2 unidades de B.

El equilibrio se logra cuando los ingresos son iguales a los costos.

Page 25: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

25

Como Y = 500X1 + 750X

2$ (Ingresos)

C = 300X1 + 340X

2 + 450000 $ (costos)

Equilibrio Y - C = 0

Recta de Equilibrio: 200X1 + 410X

2 = 450000

Si dibujamos la recta de equilibrio tenemos:

Para buscar el punto de equilibrio debe asumirse algún criterio.

Caso 1: Si el criterio es maximizar los ingresos se tiene el siguiente modelo:

max [ Y = 500X1 + 750X

2 ]

Sujeta a:

200X1 + 410X

2 = 450000 (Equilibrio)

X1

≥≥≥≥≥ 800 (Demanda comprometida)

X1 , X

2 ≥≥≥≥≥ 0

Page 26: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

26

Caso 2: Si el criterio es minimizar costos se obtiene el modelo.

min. [ C = 300X1 + 340X

2 ]

sujeta a:

200X1 + 410X

2 = 450.000

X1

≥≥≥≥≥ 800

X1, X

2≥≥≥≥≥ 0

Ejemplo 1.6. Mezclas.

Un vinatero desea mezclar vino de 5 años diferentes para fabricar tres tipos de vino mezclados.

La oferta disponible en galones del año � i � (con i = 1, 2, 3, 4, 5) es de 800, 900, 500, 900

y 600 respectivamente. La mezcla A se considera especial por lo que no se producirán más

de 200 galones (ver Tabla � Ejemplo 1.6)

¿Cuántos galones debe producir de cada mezcla para maximizar el beneficio? Elabore un

modelo de programación lineal.

Solución:

Para definir las variables de decisión en este caso conviene usar doble subíndice.

Sea Xij

: Cantidad en galones del año i (i = 1, 2, 3, 4 , 5) utilizados en la mezcla j ( j = A,

B, C). Luego se tienen 15 variables de decisión a saber:

X1A

X2A

X3A

X4A

X5A

X1B

X2B

X3B

X4B

X5B

X1C

X2C

X3C

X4C

X5C

Page 27: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

27

La siguiente tabla da los requerimientos y el beneficio por galón para cada tipo de vino

mezclado.

MEZCLA REQUISITO Beneficio por Galón en $

A Al menos el 60% debe provenir 4000de los años 1 y 2 y no más del

10% de los años 4 y 5.

B Al menos el 50% debe provenir 3000de los años 1, 2 y 3.

C No más del 50% del año 5. 2500

Tabla � Ejemplo 1.6

Función Objetivo: Z (utilidad en $)

Objetivo: Maximizar utilidad.

Se tiene además que:

∑=

5

1i

iAX ; Cantidad total de galones producidos de la mezcla A.

∑=

5

1i

iBX ; Cantidad total de galones producidos de la mezcla B.

∑=

5

1i

iCX ; Cantidad total de galones producidos de la mezcla C.

Page 28: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

28

La función utilidad queda entonces:

Z = 4.000 ∑=

5

1i

iAX + 3.000 ∑=

5

1i

iBX + 2.500 ∑=

5

1i

iCX

Restricciones asociadas con la calidad del vino mezclado: Las restricciones determinan

la calidad del la mezcla.

Para el vino mezclado tipo A: Por lo menos el 60% de los años 1 y 2;

6.0

X

XX5

1iiA

A2A1 ≥+

∑=

Se obtiene la restricción lineal:

0.6 ∑=

5

1i

iAX - X1A

- X2A

≤≤≤≤≤ 0

No más del 10% de los años 4 y 5:

1.0

X

XX5

1iiA

A5A4 ≤+

∑=

Se obtiene la restricción lineal:

0.1 ∑=

5

1i

iAX - X4A

- X5A

≥≥≥≥≥ 0

Page 29: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

29

Para el vino mezclado tipo B: Al menos el 50% debe provenir de los años 1, 2 , 3:

5.0

X

XXX5

1iiB

B3B2B1 ≤++

∑=

Se obtiene la restricción lineal :

0.5 ∑=

5

1i

iBX - X1B

- X2B

- X3B

≤≤≤≤≤ 0

Para el vino mezclado tipo C: No más del 50% del año 5.

5.0

X

X5

1iiC

C5 ≤

∑=

De donde resulta la restricción lineal:

0.5 ∑=

5

1i

iCX - X5C

≥≥≥≥≥ 0.

Restricciones debido a la disponibilidad de recursos:

Oferta de vino del año 1 X1A

+ X1B

+ X1C

≤≤≤≤≤ 800

Oferta de vino del año 2 X2A

+ X2B

+ X2C

≤≤≤≤≤ 700

Oferta de vino del año 3 X3A

+ X3B

+ X3C

≤≤≤≤≤ 500

Oferta de vino del año 4 X4A

+ X4B

+ X4C

≤≤≤≤≤ 900

Oferta de vino del año 5 X5A

+ X5B

+ X5C

≤≤≤≤≤ 600

Page 30: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

30

De la mezcla A no se producirán más de 200 galones.

X1A

+ X2A

+ X3A

+ X4A

+ X5A

≤≤≤≤≤ 200

Restricciones de no negatividad: Todas las variables deben ser no negativas.

Xij ≥≥≥≥≥ 0 para i = 1, 2, 3, 4, 5; j = A, B, C.

Finalmente, el modelo de 15 variables con 10 restricciones queda:

max [Z = 4.000 ∑=

5

1i

iAX + 3.000 ∑=

5

1i

iBX + 2.500 ∑=

5

1i

iCX ]

sujeto a:

0.6 ( ∑=

5

1i

iAX ) - X1A

- X2A

≤≤≤≤≤ 0

0.1 ( ∑=

5

1i

iAX ) - X4A

- X5A

≥≥≥≥≥ 0

0.5 (∑=

5

1i

iBX ) - X1B

- X2B

- X3B

≤≤≤≤≤ 0

0.5 ( ∑=

5

1i

iCX ) - X5C

≥≥≥≥≥ 0

X1A

+ X1B

+ X1C

≤≤≤≤≤ 800

X2A

+ X2B

+ X2C

≤≤≤≤≤ 700

Page 31: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

31

X3A

+ X3B

+ X3C

≤≤≤≤≤ 500

X4A

+ X4B

+ X4C

≤≤≤≤≤ 900

X5A

+ X5B

+ X5C

≤≤≤≤≤ 600

X1A

+ X2A

+ X3A

+ X4A

+ X5A

≤≤≤≤≤ 200

Xij ≥≥≥≥≥ 0 i = 1, 2, 3, 4, 5 j = A, B, C

EJERCICIOS PROPUESTOS

1.1. Un inversionista puede elegir entre los planes de inversión A o B disponibles al

comienzo de cada uno de los próximos cinco años. Cada peso invertido en el plan A al

iniciar un año le reditúa el 42% dos años más tarde, y el plan B le reditúa por cada peso

invertido a principio de año 0.60 pesos tres años más tarde, cantidades que puede

reinvertir. Además cuenta con los planes C y D disponibles una sola vez sin posibilidad

de reinvertir. Cada peso invertido en C al comienzo del segundo año le produce $2

cuatro años más tarde. Cada peso invertido en D al final del tercer año, le produce

$1.70 dos años después. El inversionista comienza con $300.000 y desea conocer cuál

es el plan �óptimo� de inversión que le maximice la cantidad de dinero al final del

quinto año. Construya un modelo de programación lineal y resuélvalo con el paquete

que le recomiende su profesor.

1.2. Un editor imprime un nuevo libro, para lo cual considera dos alternativas de

empastado, en cartón duro o encolado. Un libro en cartón duro deja una utilidad de

$4.000, mientras que en pasta blanda o encolado la utilidad es de tan sólo $900. Para

empastar un libro en cartón duro se requieren 15 minutos y con pasta ordinaria 8 minutos.

Se dispone de 70 horas para empastar y se estima que las ventas serán hasta 200

Page 32: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

32

copias para el libro con pasta dura y 400 copias a lo sumo del libro encolado. Formule

un modelo de programación lineal que permita saber el número de libros a empastar de

cada clase.

1.3. Un restaurante que presta servicio las 24 horas del día, requiere las siguientes

meseras:

Horas del día 2 - 6 6 - 10 10 - 14 14 - 18 18 - 22 22 - 2

No. Mínimo 4 8 11 6 12 4de Meseras

Cada mesera trabaja 8 horas consecutivas al día. Elabore un modelo de programación

lineal que permita hallar el número óptimo (mínimo requerido) de meseras para cumplir

los requisitos anteriores.

1.4. Una tienda de animales ha determinado que cada Hamster debe recibir al día por

lo menos 78 unidades de proteína, 110 unidades de carbohidratos y 16 unidades de

grasa. Si la tienda vende los 4 tipos de alimentos mostrados. ¿Qué mezcla de alimento

satisface las necesidades nutricionales de los Hamster a un mínimo costo para la tienda?

Elabore un modelo de programación lineal.

Alimento Proteinas Carbohidratos Grasa CostoUnidad/Onza Unidad/Onza Unidad/Onza Centavo/Onza

I 30 30 9 4II 40 25 12 8III 27 23 8 10IV 18 45 5 3

Page 33: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

33

1.5.Una persona hereda US$6.000 y desea invertirlos. Al oír esta noticia dos amigos

distintos le ofrecen la oportunidad de participar como socio en dos negocios, cada uno

planeado por cada amigo. En ambos casos la inversión significa dedicar un poco de

tiempo el siguiente verano, al igual que invertir en efectivo. Con el primer amigo

tendría que invertir U$5.000 y 400 horas y la ganancia estimada (ignorando el valor

del tiempo) sería U$4.500. Las cifras correspondientes a la proposición del segundo

amigo son U$4.000 y 500 horas, con una ganancia de U$4.500. Sin embargo, ambos

amigos son flexibles y le permitirán entrar en el negocio con cualquier fracción de la

sociedad; la participación en las utilidades sería proporcional a esa fracción. Como el

heredero está buscando un trabajo interesante para el verano (600 horas a lo sumo) ha

decido participar en una o ambas propuestas, con la combinación que maximice la

ganancia total estimada. Formule el modelo de programación lineal para este problema.

1.6. Una compañía manufacturera descontinuó la producción de cierta línea de productos

no redituable, lo cual creó un exceso considerable en la capacidad de producción. La

gerencia quiere dedicar esta capacidad a uno o más de tres productos, llámense productos

1, 2 y 3. En la siguiente tabla se resume la capacidad disponible de cada máquina que

puede limitar la producción.

Tipo de máquina Disponibilidad Coeficiente de productividadHoras - Máquina/Semana Horas - Máquina/Unidad

Prod.1 Prod.2 Prod.3

FRESADORA 500 9 3 5 TORNO 350 5 4 0

RECTIFICADORA 150 3 0 2

Page 34: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

34

El departamento de ventas ha indicado que las ventas potenciales para los productos

1 y 2 exceden la tasa máxima de producción y que las ventas potenciales del producto

3 son 20 unidades por semana. La ganancia unitaria sería de $50, $20 y $25

respectivamente para los productos 1, 2 y 3. El objetivo es determinar cuántos productos

de cada tipo debe producir la compañía para maximizar la ganancia. Formule un modelo

de programación lineal para este problema.

1.7. En el ejemplo 1.3, verificar los datos del cuadro para la utilidad por libra de cada

producto y deducir las restricciones para las Máquinas 2 y 3.

Page 35: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

35

CAPÍTULO II

MÉTODO GRÁFICO PARA RESOLVERMODELOS DE PROGRAMACIÓN LINEAL CON

DOS VARIABLES DE DECISIÓN

INTRODUCCIÓN

Cuando un modelo de programación lineal tiene dos variables de decisión, las restricciones

determinan regiones del plano. El conjunto de �m� restricciones define por lo tanto una

región del plano que contiene todos los puntos (x1 ,

x2) que las satisfacen. Esta región del

plano se denomina región de soluciones factibles, ya que cualquier punto de ella satisface

las restricciones y por lo tanto es una solución del problema.

De entre todas las soluciones factibles se trata de buscar la solución �óptima�, es decir,

aquella que maximice o minimice la función objetivo.

2.1. MÉTODO GRÁFICO PARA EL CASO DE DOS VARIABLES DE DECISIÓN

Los pasos a seguir para resolver un modelo de programación lineal de dos variables de

decisión usando el método gráfico son:

Paso 1: Dibujar la región de soluciones factibles.

Paso 2: Dibujar algunas isocuantas de la función objetivo, es decir curvas en el plano donde

para cualquier punto sobre cada una de ellas la función objetivo tiene un valor constante.

Las ecuaciones de estas curvas son de la forma Z = const.

Page 36: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

36

Paso 3: Ubicar el vértice de la región factible donde ocurre el máximo o el mínimo

dependiendo de la dirección en que crecen o decrecen las isocuantas. Una isocuanta crece

en la dirección en que la función objetivo aumenta su valor y decrece en la dirección en que la

función objetivo disminuye su valor.

2.1.1. GRAFICACIÓN DE UN SISTEMA DE DESIGUALDADES

Para determinar la región del plano que satisface una desigualdad de la forma

aX1 + bX

2 +++++ c ≤≤≤≤≤ 0 se procede de la siguiente manera:

� Se dibuja en primer lugar la ecuación ignorando la desigualdad, es decir, graficamos

aX1 + bX

2 + c = 0:

La recta aX1 + bX

2 + c = 0 determina en el plano dos semiplanos denominados I y II.

Los puntos sobre la recta satisfacen la igualdad aX1 + bX

2 + c = 0, los puntos fuera de la

recta en los semiplanos I y II satisfacen las desigualdades ( > ó < ).

c_ __ a

Page 37: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

37

� Para determinar cuál de los dos semiplanos satisface la desigualdad

aX1 + bX

2 + c < 0 se escoge un punto arbitrario del semiplano I o del II, y se reemplaza en

la desigualdad.

Por ejemplo, puede escogerse el origen (0, 0); si éste satisface la desigualdad, entonces

todos los puntos del semiplano I que contiene a (0, 0) la satisfacen, en caso contrario la

desigualdad la verifican los puntos de la región II.

Ejemplo 2.1. Gráficar la región del plano que satisface la desigualdad 2x1 + 3x

2 ≤≤≤≤≤ 6

Solución: Se grafica la ecuación 2x1 + 3x

2 = 6 :

I

II

1X

2X

I

II6X3X2 21 =+

Page 38: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

38

Tomamos (0, 0) como punto de prueba:

2(0) + 3(0) < 6

0 < 6 Verdadero

Por lo tanto la región sombreada que contiene el punto de prueba, satisface la desigualdad y

los puntos sobre la recta satisfacen la igualdad.

Ejemplo 2.2. Dibujar la región del plano cuyos puntos satisfacen las restricciones.

2x1 + x

2 ≤≤≤≤≤ 4

x1 + x

2 ≥≥≥≥≥ 1

x1 ≥≥≥≥≥ 0 , x

2 ≥≥≥≥≥ 0

Solucion:2x

1 + x

2 = 4 ;

Punto de prueba (0, 0); 0 ≤≤≤≤≤ 4 Verdadero

Page 39: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

39

x1 + x

2 = 1 :

Punto de prueba (0, 0): 0 ≥≥≥≥≥ 1 Falso.

x1≥≥≥≥≥ 0 y x

2≥≥≥≥≥ 0 , primer cuadrante:

Page 40: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

40

Por lo tanto, la región del plano que satisface las restricciones dadas es la intersección de las

tres regiones anteriores:

Page 41: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

41

Para mayor claridad, la región se muestra en la gráfica siguiente:

2.1.2. ISOCUANTAS DE LA FUNCIÓN OBJETIVO

Para un modelo de programación lineal con dos variables de decisión se tiene que la función

objetivo es:

Z = c1 x

1 + c

2 x

2

Esta es la ecuación de un plano en el espacio tridimensional.

Las isocuantas (curvas de nivel) se obtienen dando valores fijos a la variable � Z � obteniéndose

una familia de rectas en el plano � x1-x

2 �. Si Z = k con k constante tenemos:

c1 x

1 + c

2 x

2 = k , distintos valores de k darán diferentes elementos de la familia de rectas.

Page 42: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

42

Ejemplo 2.3. Dibujar las Isocuantas de la función Z = 3x1 + 2x

2 ,cuando Z = 6, Z =

12, Z = 18 en el mismo plano.

Solución:

Si Z = 6 3x1 + 2x

2 = 6

Si Z = 12 3x1 + 2x

2 = 12

Si Z = 18 3x1 + 2x

2 = 18

Ejemplo 2.4. Resolver el modelo de programación lineal.

max. [Z = 2x1 + x

2 ]

Sujeto a:

x2 ≤≤≤≤≤ 10 I

2x1 + 5x

2 ≥≥≥≥≥ 10 II

x1 + x

2 ≤≤≤≤≤ 14 III

5x1 - 3x

2 ≤≤≤≤≤ 20 IV

x1 , x

2 ≥≥≥≥≥ 0

Page 43: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

43

Solución: Dibujamos la región de soluciones factibles. Las restricciones de no negatividad

indican que la región de soluciones factibles se encuentra en el primer cuadrante.

En el mismo plano se dibujan dos isocuantas de Z = 2x1 + x

2

Si Z = 4 se tiene: 4 = 2x1 + x

2

Z = 16 se tiene: 16 = 2x1 + x

2

Page 44: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

44

Si visualmente se sigue la dirección en que crece �Z � se observa que el máximo valor de

�Z� se obtiene en el vértice �C �. Las coordenadas del vértice �C� se obtienen resolviendo

por la regla de Cramer, el sistema de ecuaciones correspondientes a las restricciones III y

IV.

Solucion del sistema de ecuaciones, para hallar las coordenadas del vertice C:

x1 + x

2 = 14 III

5x1 - 3x

2 = 20 IV

3-5

1 1

3 20

1 14

X 1

−=

4

31

8

62

53

2042 =−−=

−−−−=

.

3-5

1 1

20 5

14 1

X 2 =4

25

8

50

53

7020 =−−=

−−−=

.

Por lo tanto los valores óptimos de x1 y x

2 son: X

1 = 31/4 y X

2 = 25/4 y el máximo valor

de Z es, Zmax

=87/4 .

Page 45: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

45

Ejemplo 2.5. Resolver el modelo de programación lineal.

min. [Z = 50x1 + 20x

2 ]

Sujeta a:

2x1 - x

2 ≥≥≥≥≥ 0 I

x1 + 4x

2 ≥≥≥≥≥ 80 II

x1 + x

2 ≥≥≥≥≥ 40 III

4x1 + 3x

2 ≤≤≤≤≤ 240 IV

x1, x

2 ≥≥≥≥≥ 0

Solución: Dibujamos la región de soluciones factibles y dos isocuantas.

Page 46: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

46

Isocuantas de Z = 50x1 + 20x

2

Si Z = 1500 1500 = 50x1 + 20x

2

Z = 1700 1700 = 50x1 + 20x

2

Se observa que el valor mínimo de Z se alcanza en el vértice A. Para obtener las coordenadas

de �A� resolvemos el sistema:

2x1 - x

2 = 0

x1 + x

2 = 40

obteniendose como solución x1 = 40/3 , x

2 = 80/3.

Luego, el nivel óptimo se alcanza cuando, X1 = 40/3 , X

2 = 80/3 y Z min = 1200 .

EJERCICIOS PROPUESTOS DEL CAPÍTULO II

2.1. Una pequeña firma maneja dos procesos para combinar cada uno de dos productos:

fluido para marcha y fluido para encendedor. La firma está tomando la decisión de

cuántas horas correrá cada proceso. Por una hora del proceso I se consumen 3 unidades

de kerozeno y 9 de benceno para producir 15 unidades de fluido para marcha y 6

unidades de fluido para encendedor. Por una hora del proceso II se consumen 12 unidades

de kerozeno y 6 de benceno para producir 9 y 24 unidades de los dos tipos de fluidos

respectivamente. Debido a un programa federal de asignaciones, la máxima cantidad

de kerozeno y benceno disponibles son 300 y 400 unidades respectivamente. Los

compromisos de venta requieren que se produzcan al menos 600 unidades de fluido

Page 47: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

47

para marcha y 225 de fluido para encendedor. Las utilidades por hora que reditúan los

procesos I y II son 10 y 12 dólares por hora respectivamente. Formule un modelo de

programación lineal para maximizar la utilidades y resuélvalo usando el método gráfico.

2.2. Resolver los siguientes modelos de programación lineal.

a) max [ Z = 3x1 + 4x

2 ]

sujeta a: -x1 + x

2 ≤≤≤≤≤ 3

x1 + 2x

2 ≤≤≤≤≤ 9

3x1 + 2x

2 ≤≤≤≤≤ 13

x1 - x

2 ≤≤≤≤≤ 1

x1 + x

2 ≥≥≥≥≥ 1

x1, x

2 ≥≥≥≥≥ 0

b) min [Z = 9x1 + 9x

2 ]

sujeta a: x1 + x

2 ≤≤≤≤≤ 10

5x1 + x

2 ≥≥≥≥≥ 8

x1 + 2x

2 ≥≥≥≥≥ 12

x2 ≤≤≤≤≤ 8

x1, x

2 ≥≥≥≥≥ 0

c) min [ Z = 5x1 + 2x

2 ]

sujeta a: 3x1 + 6x

2 ≥≥≥≥≥ 18

5x1 + 4x

2 ≥≥≥≥≥ 20

8x1 + 2x

2 ≥≥≥≥≥ 16

7x1 + 6x

2 ≤≤≤≤≤ 42

x1, x

2 ≥≥≥≥≥ 0

Page 48: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

48

2.3. Una dieta se diseña de forma que contenga al menos 6 gramos de V1 y 15 gramos

de V2 (V

1 y V

2 son dos tipos de vitaminas). Estos requerimientos mínimos van a

obtenerse a partir de dos tipos de alimentos: F1 que contiene 1 gramo por libra de V

1 y

2 gramos por libra de V2, y de F

2 que contiene 1 gramo por libra de V

1 y 5 gramos por

libra de V2. Si el costo de F1 y F2 es de 1.20 y 1.80 pesos por libra, ¿Qué cantidad de

cada tipo de cada tipo de alimento deberá comprarse y consumirse para satisfacer los

requerimientos mínimos de la dieta de la forma más económica?

2.4. Resolver el modelo del ejemplo 1.1.

2.5. Resolver los modelos del ejemplo 1.5.

2.6. Resolver el modelo del ejercicio propuesto 1.2.

2.7. Resolver el modelo del ejercicio propuesto 1.5.

2.8. Un propietario quiere pintar su casa y desea que sea suficiente con una pasada.

Para satisfacer este requisito la pintura debe tener una viscosidad de por lo menos 200

unidades. Otro requerimiento para obtener un nivel deseado de brillo es que debe

incluir como mínimo 14 gramos de un ingrediente químico � Y � por galón de

pintura. Además, para asegurar cierta durabilidad, también deberá tener por lo menos

30 gramos de una sustancia �Z� por cada galón de pintura. Hay dos tipos de pintura

(I y II) a su disposición. El tipo I cuesta 6 dólares y el tipo II 4 dólares por galón. Las

especificaciones de cada una de ellas son:

Page 49: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

49

PINTURA I PINTURA II(Por galón) (Por galón)

Viscosidad (Unidades) 400 100

Y (Gramos) 20 10

Z (Gramos) 20 60

El propietario decide mezclar I y II a efecto de cumplir con las tres condiciones a un costo

mínimo. ¿Qué cantidad de I y II han de mezclarse? ¿Cuál es el costo mínimo de la mezcla?

2.9. Una empresa local está planificando anunciar una venta especial de aniversario por radio

y televisión durante una semana, y para ello se aprueba un presupuesto máximo de 16.000

dólares. Se sabe que el costo por 30 segundos de anuncio en la radio comercial es de 800

dólares. Por otra parte, la televisión comercial cuesta 4.000 dólares por anuncio. A causa

de la fuerte demanda, solamente pueden realizarse 4 anuncios de televisión en la semana

prevista. Sobre la base del grado estimado de audiencia y otros factores, se cree que un

anuncio de televisión es 6 veces más efectivo que un anuncio de radio sobre los potenciales

consumidores. ¿Cómo distribuiría la empresa su publicidad para atraer el mayor número

posible de consumidores potenciales?

Page 50: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

50

Page 51: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

51

Capítulo III

MÉTODO SÍMPLEX

INTRODUCCIÓN

El método símplex es un procedimiento general para resolver problemas de programación

lineal. Desarrollado por George Dantzig en 1947, ha probado ser un método extraordi-

nariamente eficiente que se usa en forma rutinaria para resolver problemas grandes en las

computadoras de hoy en día. Excepto en el caso de problemas muy pequeños, su ejecución

se hace siempre en una computadora y existe una amplia gama de complejos paquetes de

software para ello. Este capítulo describe y ejemplifica la características principales del

método símplex en su forma tanto algebraica como tabular. El método símplex es un

algoritmo. Aun cuando el lector no haya oido este nombre, sin duda se ha encontrado con

muchos algoritmo por ejemplo, el procedimiento familiar para hacer una división larga, es un

algoritmo. También lo es el procedimiento para calcular la raíz cuadrada. De hecho, cual-

quier procedimiento iterativo de solución es un algoritmo. Entonces, un algoritmo es

simplemente un proceso en el que se repite (se itera) un procedimiento sistemático una y

otra vez hasta obtener el resultado deseado. Cada vez que se lleva a cabo el procedimiento

sistemático se realiza una iteración. (¿Puede el lector ver cuál es la iteración para el algorit-

mo de la división?).

Page 52: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

52

Este método se emplea para resolver el problema de programación lineal (forma estándar)

(ver Capítulo I, Sección 1.1.2)

TERMINOLOGIA PARA LAS SOLUCIONES DEL MODELO

Es posible que para el lector el término solución signifique la respuesta final a un problema,

pero en programación lineal la convención es bastante distinta. Mas aún, cualquier conjunto

de valores específicos para las variables de decisión x1 , x

2 , ... x

n se llama solución, sin

importar si es una posibilidad deseable o ni siquiera permitida. Los diferentes tipos de solu-

ciones se identifican usando un adjetivo apropiado.

Una solución factible es aquella para la que todas las restricciones se satisfacen. La región

factible es la colección de todas las soluciones factibles (puede suceder que esta región sea

el conjunto vacío). Una solución óptima es una solución factible que lleva al valor más

favorable de la función objetivo. El valor más favorable es el valor más grande o más

pequeño, dependiendo si el objetivo es maximizar o minimizar, de modo que una solución

óptima maximiza / minimiza la función objetivo sobre toda la región factible.

En programación lineal, un problema puede tener más de una solución óptima, aunque en la

práctica sólo hay una solución óptima. Otra posibilidad es que el problema carezca de solu-

ciones óptimas. Esto ocurre sólo si: a) no tiene soluciones factibles o b) las restricciones no

impiden que el valor de la función objetivo Z crezca indefinidamente en la dirección favora-

ble (positiva o negativa).

Page 53: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

53

3.1. PREPARACION PARA EL METODO SÍMPLEX.

3.1.1. Variables de holgura.

El primer paso en el método simplicial es llevar el modelo de programación lineal a su forma

estándar (ver Capítulo I, Sección 1.1.2), mediante la introducción de variables adicionales

llamadas variables residuales o variables de holgura, con lo que se obtiene para las res-

tricciones un sistema de m ecuaciones con n incógnitas, de la forma:

a11x1 + a12x2 + . . . + a1sxs + xs+1 = b1

a12x1 + a12x2 + . . . + a2sxs + + xs+2 = b2

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .am1x1 + am2x2 + . . . + amsxs + xs+m = bm

x1 m 0, x2 m 0, . . ., xs m 0, xs+1 m 0, . . ., xs+m m 0

Aquí, xs+1, xs+2, . . ., xs+m son las variables de holgura.

El sistema de ecuaciones así obtenido puede escribirse en forma matricial como bxA = ,

con 0x ≥ , en donde:

A =

a11 a12 . . . a1s 1 0 . . . 0a21 a22 . . . a2s 0 1 . . . 0

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .am1 am2 . . . ams 0 0 . . . 1

, x =

x1

x2

.

.

.xs+m

, b =

b1

b2

.

.

.bm

a11x1 + a12x2 + . . . + a1sxs + xs+1 = b1

a12x1 + a12x2 + . . . + a2sxs + + xs+2 = b2

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .am1x1 + am2x2 + . . . + amsxs + xs+m = bm

x1 m 0, x2 m 0, . . ., xs m 0, xs+1 m 0, . . ., xs+m m 0

Page 54: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

54

Esta forma es mucho más conveniente para la manipulación algebraica y la identificación de

las soluciones factibles en un vértice. Esta se llama forma aumentada del problema, ya

que la forma original se ha aumentado con algunas variables adicionales necesarias (las

variables de holgura) para aplicar el método símplex..

Una solución aumentada es una solución para las variables originales que se ha aumenta-

do con los valores correspondientes de las variables de holgura. Una solución básica es

una solución en un vértice aumentada. Ahora, una solución básica factible es una solución

factible en un vértice aumentada. La única diferencia entre las soluciones básicas y las solu-

ciones en un vértice (o entre soluciones básicas factibles y soluciones factibles en un vértice)

es el que estén incluidos los valores de las variables de holgura. El siguiente ejemplo será

utilizado para ilustrar el método símplex en su forma tanto algebraica como tabular para

maximizar una función lineal en cinco variables. Lo llamaremos ejemplo prototipo.

Si el problema consiste en minimizar una función Z = c1 x

1 + c

2 x

2 + c

3 x

3 + � + c

n x

n , se

maximiza la función Y= -Z , de modo que si Y* es el maximo de Y, entonces el minimo de

Z de -Y* .

Page 55: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

55

EJEMPLO 3.1. En el Ejemplo 1.3 del Capítulo I sobre plan de producción se debe

resolver el problema de maximizar la función

Z = 1.417x1

+ 1.433x2

+ 1.85x3

+ 2.183x4

+ 1.7x5

sujeta a las restricciones

12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

≤≤≤≤≤ 7680

8x1

+ 9x2

+ 4x3

+ + 11x5

≤≤≤≤≤ 7680

5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

≤≤≤≤≤ 7680

x1, x

2, x

3, x

4, x

5 ≥≥≥≥≥ 0

En nuestro caso, s = 5 , m = 3. Introducimos tres variables de holgura 61s xx =+ ,

72s xx =+ y 8nms xxx ==+ para convertir las tres restricciones de desigualdad en

un conjunto de tres ecuaciones lineales con ocho incógnitas junto con las restricciones de no

negatividad:

12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

+ x6

= 7680

8x1

+ 9x2

+ 4x3

+ + 11x5

+ x7

= 7680

5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

+ x8

= 7680

x1, x

2, x

3, x

4, x

5, x

6, x

7, x

8 ≥≥≥≥≥ 0

Page 56: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

56

La forma matricial de este sistema es bxA = , 0x ≥ , en donde:

=

1

0

0

0

1

0

023

0110

1710

7105

498

8712

A ,

=

8

7

6

5

4

3

2

1

x

x

x

x

x

x

x

x

x ,

=

7680

7680

7680

b .

En este ejemplo el sistema de restricciones funcionales tiene cinco variables más (en total son

ocho variables) que ecuaciones (de las cuales tenemos tres). Este hecho proporciona cinco

grados de libertad o cinco variables libres para resolver el sistema, pues se pueden elegir

cinco variables cualesquiera y asignarles cualquier valor arbitrario para resolver las tres

ecuaciones en términos de las tres variables restantes (con esto se excluyen redundancias). El

método símplex usa cero para este valor arbitrario. Las variables que por el momento se

hacen igual a cero se llaman variables no básicas, todas las demás se llaman variables

básicas. La solución que resulta es una solución básica. Si todas las variables básicas son no

negativas, entonces se tiene una solución básica factible.

En términos generales, el número de variables no básicas de una solución básica siempre es

igual a los grados de libertad del sistema de ecuaciones y el número de variables básicas

siempre es igual al número de restricciones funcionales.

Page 57: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

57

Dos soluciones básicas factibles son adyacentes si todas menos una de sus variables no

básicas son las mismas (de manera que la misma aseveración se cumple para sus variables

básicas). Entonces, transladarse de una solución básica factible a una adyacente significa

cambiar el estado de una variable no básica a básica y viceversa para otra variable.

Sea 0c is =+ , i = 1,2,...,m. Entonces

Zxcx0x0xcxcxcs

1jjj

n

1jn1sss11jj ∑∑

==+ ==+++++= LL (3.1.2)

La relación entre las soluciones del problema original y el problema en su forma aumentada

viene dada por el siguiente teorema.

Teorema. Supongamos que x* = (x1*, x

2*,... , x

s*, x*

s+1 , x*

s+2 , ... , x*

s+m) es una solución

maximal factible para las restricciones transformadas )1.1.3( y la función objetivo )2.1.3( ,

siendo el máximo valor ∗Z . Entonces los primeros s elementos x1*, x

2*,... , x

s* de ∗x

representan una solución maximal factible al modelo de programación lineal en la que ∗Z

es el valor máximo. Además, cada solución factible x de )1.1.3( y )2.1.3( se

corresponde con una y sólo una solución factible del modelo; a saber, la solución que contie-

ne los primeros s elementos de x y cada solución maximal factible ∗x de )1.1.3( y

)2.1.3( se corresponde con una única solución maximal factible del modelo, o sea, la

Page 58: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

58

solución que contiene los primeros s elementos de ∗x .

Según el teorema anterior, si podemos encontrar una solución que maximice )2.1.3( sujeta

a las restricciones )1.1.3( , hemos resuelto el problema de la programación lineal.

De esta manera, dada cualquier solución básica, la solución en el vértice correspondiente se

obtiene con sólo quitar las variables de holgura.

Al trabajar con el problema en forma de igualdades conviene tomar en cuenta y manipular la

ecuación de la función objetivo al mismo tiempo que las nuevas ecuaciones de las restriccio-

nes. Antes de comenzar con el método símplex es necesario escribir el problema una vez más

en una forma equivalente:

Maximizar Z ,

sujeta a;

(0) Z -1.417x1

- 1.433x2

- 1.85x3

- 2.183x4

- 1.7x5

= 0

(1) 12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

+ x6

= 7680

(2) 8x1

+ 9x2

+ 4x3

+ + 11x5

+ x7

= 7680

(3) 5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

+ x8

= 7680

x1, x

2, x

3, x

4, x

5, x

6, x

7, x

8 ≥≥≥≥≥ 0

Es justo como si la ecuación (0) fuera una de las restricciones originales que, como ya se

encuentra en forma de igualdad, no necesita variable de holgura. Con esta interpretación, las

Page 59: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

59

soluciones básicas no cambian, excepto que Z puede verse como una variable básica adi-

cional permanente.

3.2. FORMA ALGEBRAICA DEL METODO SÍMPLEX.

Una vez adaptado el problema inicial a la forma descrita por )1.1.3( y )2.1.3( debe-

mos proceder a contestar las siguientes preguntas:

� Paso inicial: ¿Cómo se selecciona la solución factible en un vértice (la solución

básica factible) inicial?

� Paso iterativo: al buscar un traslado a una solución factible en un vértice adyacente

(una solución básica factible adyacente)

1. ¿ Cómo se selecciona la dirección del traslado? (¿Qué variable no básica se

selecciona para que se convierta en básica ?)

2. ¿A qué lugar se hizo el traslado? (¿Cuál variable básica se convierte en no

básica?)

3. ¿Cómo se identifica la nueva solución?

� Prueba de optimalidad: ¿Cómo se determina que la solución factible en un vértice

actual (solución básica factible) no tiene soluciones factibles en un vértice adyacen-

tes (soluciones básicas factibles adyacentes) que sean mejores?

Page 60: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

60

En la presente sección se responderán estas preguntas. Para propósitos didácticos, se mos-

trará el procedimiento en la solución del problema del ejemplo prototipo (ejemplo 3.1).

� Paso inicial.

El método símplex puede comenzar en cualquier solución factible en un vértice (solución

básica factible), de manera que se escoge una que sea conveniente. Antes de tomar en

cuenta las variables de holgura, esta elección es el origen (con todas las variables

originales iguales a cero), es decir

)0,0,0,0,0()x,x,x,x,x( 54321 =

(la notación )a,a,a,a,a()x,x,x,x,x( 5432154321 = significa que 11 ax = ,

22 ax = , etc)1 . En consecuencia, después de introducir las variables de holgura, las

variables originales son variables no básicas y las variables de holgura son las varia-

bles básicas de la solución básica factible inicial. Esta elección se muestra en el siguiente

sistema de ecuaciones en el que las variables básicas se escribieron con mayúscula:

12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

+ X6

= 7680

8x1

+ 9x2

+ 4x3

+ + 11x5

+ X7

= 7680

5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

+ X8

= 7680

1 Nótese que al escoger el origen el lado izquierdo de todas las restricciones funcionales en el problema original es iguala cero. por lo tanto, bajo las suposiciones actuales sobre la forma del modelo, incluyendo restricciones del tipo ≤ ylados derechos positivos, esta solución en un vértice es automáticamente factible

Page 61: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

61

Como las variables no básicas son iguales a cero, el resto de la solución se lee como si no

existieran: entonces, 7680X 6 = , 7680X7 = y 7680X 8 = , de ahí que la solu-

ción básica factible inicial resulta igual a )7680,7680,7680,0,0,0,0,0( .

Nótese que la razón por la que esta solución se puede leer de inmediato es porque cada

ecuación tiene sólo una variable básica, que tiene coeficiente + 1, y que esta variable básica

no aparece en ninguna otra ecuación. Pronto se verá que cuando el conjunto de variables

básicas cambia, el método símplex utiliza un procedimiento algebraico (el de eliminación de

Gauss) para poner las ecuaciones en esta forma tan conveniente para leer igual todas las

soluciones básicas factibles subsecuentes. Esta forma se llama la forma apropiada de eli-

minación gaussiana.

� Paso iterativo.

En cada iteración el método símplex se mueve de la solución básica factible actual a una

solución factible básica adyacente mejor. Este movimiento consiste en convertir una varia-

ble no básica (llamada variable básica entrante) en variable básica, y al mismo tiempo

convertir una variable básica (llamada variable básica que sale) en variable no básica, y en

identificar la nueva solución básica factible.

PREGUNTA 1. ¿Cuál es el criterio para seleccionar la variable básica entrante ?

Los candidatos para la variable básica entrante son las s variables básicas actuales. La que

Page 62: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

62

se elija, cambiará su estado de no básica a básica, por lo que su valor aumentará de cero a

algún valor positivo y las otras se mantendrán en nivel cero. Como se requiere que la nueva

solución básica factible sea mejor (un valor más grande de Z) que la actual, es necesario que

la tasa de cambio en Z al aumentar el valor de la variable básica entrante sea positivo.

Usando la ecuación (0) para expresar Z sólo en términos de las variables no básicas, el

coeficiente de cada una de estas variables es la tasa a la que Z cambiaría si se incrementara

el valor de esa variable. Se elige como variable básica entrante 2 la que tiene el coeficien-

te positivo mayor, ya que es la que hace que Z se incremente a la tasa más rápida.

Como aclaración, los cinco candidatos para variable básica entrante en nuestro ejemplo son

las variables no básicas actuales 4321 x ,x ,x ,x y 5x . Como la función objetivo ya

está escrita sólo en términos de estas variables, puede analizarse tal como está:

Z = 1.417x1

+ 1.433x2

+ 1.85x3

+ 2.183x4

+ 1.7x5

Todas las variables tienen coeficientes positivos, así que al aumentar cualquiera de ellas, el

valor de Z aumenta pero con tasas distintas, iguales a 1.417 , 1.433 , 1.85, 2.183 y 1.7

por cada unidad de aumento en la variable. La mayor de estas tasas es 2.183 , la cual

corresponde a la variable 4x , así que esta variable se convierte en variable básica en-

trante. Así, se incrementará el valor de 4x y el de las demás variables no básicas se dejará

en cero.

2 Nótese que este criterio no garantiza la elección de la variable que más aumenta a Z debido a que puede ser que lasrestricciones no permitan que esta variable aumente tanto como otras. No obstante, los cálculos adicionales que serequieren para verificar esto hacen que no valga la pena hacerlo.

Page 63: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

63

PREGUNTA 2. ¿Cómo se identifica la variable básica que sale ?

Al aumentar el valor de 4x mientras que el de las demás variables no básicas 321 x,x,x

y 5x se mantiene en cero, una o todas las variables básicas actuales 76 X,X y 8X

deben cambiar sus valores para mantener satisfecho el sistema de ecuaciones. Algunas de

estas variables decrecerán al crecer 4x . La solución básica factible adyacente se alcanza

cuando la primera variable básica (variable básica que sale), llega a cero. Ahí se debe

detener para evitar la no factibilidad. Entonces, una vez elegida la variable básica entrante, la

variable básica que sale no es cuestión de elección. Debe ser la variable básica actual cuya

restricción de no negatividad impone la cota superior más pequeña, sobre cuánto puede

aumentar el valor de la variable básica entrante, como se ilustra enseguida.

En nuestro ejemplo, las posibilidades para la variable básica que sale son las variables

básicas actuales 76 X,X y 8X . Al hacer las demás variables iguales a cero, excepto

4x , el conjunto de restricciones se convierte en

10x4

+ X6

= 7680

X7

= 7680

3x4

+ X8

= 7680

0X,0X,0X,0x 8764 ≥≥≥≥ .

La primera ecuación junto con la restricción 0X 6 ≥ nos proporcionan la desigualdad

Page 64: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

64

46 x107680X0 −=≤ , y equivale a 10

7680x4 ≤ , lo cual nos dice que si

10

7680x4 > entonces 0X 6 < , que violaría la condición de no negatividad sobre

6X . La segunda de estas ecuaciones nos dice que 4x puede crecer sin límite sin afectar el

valor de X7

, mientras que la tercera ecuación nos dice que 4x debe cumplir la condición

3

7680x4 ≤ para que x

8 sea no negativa.. De esta manera, tenemos dos cotas superiores

para 4x : 10

7680x4 ≤ impuesta por la variable básica 6X y

3

7680x4 ≤ impuesta

por 8X . De estas cotas, la menor es 10

7680, así que la variable básica que sale es

6X . Por lo tanto, en la nueva solución factible debe ser 0x6 = (no básica) y

10

7680X 4 = (básica).

La variable básica que sale se puede determinar en términos de la matriz A y el vector

b;

=

=

=

7680

7680

7680

b

b

b

b ,

1

0

0

0

1

0

023

0110

1710

7105

498

8712

A

X X X x x x x x

3

2

1

87654321

Page 65: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

65

Dado que 4x es la variable básica entrante, observamos que sus coeficientes en las ecuaciones

vienen dados por la cuarta columna de la matriz A , es decir, por el vector:

=

=

3

0

10

a

a

a

A

34

24

14

4 .

Enseguida calculamos los cocientes 4i

i

a

b para 3,2,1i = ;

76810

7680

a

b

14

1 == , ∞==0

7680

a

b

24

2, 2560

3

7680

a

b

34

3 == .

Escogemos el menor cociente, el cual corresponde a 1i = . Esto nos indica que la variable

básica saliente está ubicada en la primera fila de la matriz A. En nuestro caso, dicha variable

es , X6 pues en la primera fila su coeficiente es 1 y el de las demás es 0 .

PREGUNTA 3. ¿Cómo puede identificarse la nueva solución básica factible en una

forma conveniente?

Después de identificar las variables básicas entrante y saliente (incluyendo el nuevo valor de

la variable básica entrante), todo lo que se necesita hacer para identificar la nueva solución

básica factible es encontrar los nuevos valores de las variables básicas restantes. Con este

propósito reducimos el sistema de ecuaciones a la misma forma apropiada de eliminación

Page 66: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

66

de Gauss que se tenía en el paso inicial (aquella en la que cada ecuación tiene sólo una

variable básica con coeficiente 1+ , y esta variable básica no aparece en ninguna otra ecua-

ción). Esta conversión se realiza con dos tipos de operaciones algebraicas:

Operaciones algebraicas para resolver un sistema de ecuaciones lineales

1. Multiplicar (o dividir) una ecuación por una constante diferente de cero.

2. Sumar (o restar) un múltiplo de una ecuación a otra.

Estas operaciones son legítimas porque aplican sólo: 1) multiplicar cosas iguales (ambos

lados de una ecuación) por la misma constante y 2) sumar cosas iguales a cosas iguales.

Por tanto, una solución satisfará un sistema de ecuaciones después de estas operaciones si y

sólo si lo hacía antes de realizarlas.

Para ilustrar, considérese el sistema de ecuaciones original, en donde las nuevas variables

básicas se muestran en mayúscula (y donde Z tiene el papel de variable básica en la

ecuación de la función objetivo):

(0) Z -1.417x1

- 1.433x2

- 1.85x3

- 2.183X4

- 1.7x5

= 0

(1) 12x1

+ 7x2

+ 8x3

+ 10X4

+ 7x5

+ x6

= 7680

(2) 8x1

+ 9x2

+ 4x3

+ + 11x5

+ X7

= 7680

(3) 5x1

+ 10x2

+ 7x3

+ 3X4

+ 2x5

+ X8

= 7680

Page 67: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

67

Así, 4x ha sustituido a 6X en la ecuación (1). Es necesario resolver este sistema de

ecuaciones para encontrar los valores de Z, X4

, X7

y X8

(Obsérvese que X4 4x≡ ,

X7 7x≡ y X

8 8x≡ . La escritura en mayúscula es para distinguir las variables básicas de

las no básicas).

Como 4X tiene coeficiente 10 en la ecuación (1) (se escoge la ecuación (1) y no otra

porque esta ecuación contiene a la variable que sale, la cual es 6x ), ésta ecuación se

dividirá por 10 para que la nueva variable básica tenga un coeficiente igual a 1 (este es

un ejemplo de operación algebraica 1), de lo cual resulta el sistema:

(0) Z -1.417x1

- 1.433x2

- 1.85x3

- 2.183X4

- 1.7x5

= 0

(1) 10

12x

1 +

10

7x

2 +

10

8x

3+ X

4 +

10

7x

5 +

10

1x

6 = 768

(2) 8x1

+ 9x2

+ 4x3

+ 11x5

+ X7

= 7680

(3) 5x1

+ 10x2

+ 7x3

+ 3X4

+ 2x5

+ X8

= 7680

Ahora debe eliminarse 4X de las otras ecuaciones en que aparece. Con este fin realizamos

las siguientes operaciones:

a. Multiplicamos la ecuación (1) por 2.183 y la sumamos a la ecuación (0) .

b. Multiplicamos la ecuación (1) por - 3 y la sumamos a la ecuación (3) .

Page 68: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

68

Una vez realizadas estas operaciones se obtiene el sistema:

(0)* Z +1.2026 x1

+0.0951x2

- 0.1036x3

- 0.1719x5

+ 0.2183 6x 1676.54

(1)* 10

12x

1 +

10

7x

2 +

10

8x

3 + X

4 +

10

7x

5 +

10

1x

6 = 768

(2)* 8x1

+ 9x2

+ 4x3

+ 11x5

+ X7

= 7680

(3)* 5

7x

1 +

10

79x

2 +

5

23x

3

10

1− x5

6x10

3− + X8

= 5376

Ahora, al comparar este último conjunto de ecuaciones con el conjunto inicial que se obtuvo

en el paso inicial, se observa que se encuentra en la misma forma apropiada de eliminación

de Gauss que permite leer de inmediato la solución básica factible actual después de ver que

las variables no básicas x1, x

2, x

3, x

5 y x

6 son iguales a cero. Igualando estas variables a

cero en las ecuaciones (1)*, (2)* y (3)* obtenemos de manera inmediata los valores de

las variables básicas; X4 = 768, X

7 = 7680 y X

8 = 5376.. Se cuenta ahora con la nueva

solución básica factible:

( x1, x

2, x

3, x

4, x

5, x

6, x

7 , x

8 ) = (0,0,0,768,0,0,7680,5376), lo que significa un valor de

Z = 1676.54 .

Para dar una perspectiva más amplia a este procedimiento algebraico, se acaba de resolver el

conjunto original de ecuaciones para obtener la solución general para Z, x4, x

7 y x

8 en

Page 69: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

69

términos de x1, x

2 , x

3, x

5 y x

6. Esto se logra despejando Z , x

4 , x

7 y x

8 en las ecuaciones

(0)*, (1)*, (2)* y (3)*, pero no se hará aquí. Después se obtuvo una solución específica (la

solución básica factible) haciendo de x1, x

2 , x

3 , x

5 y x

6 (las variables no básicas) iguales

a cero. Este procedimiento para obtener la solución simultánea de ecuaciones lineales se

llama método de eliminación de Gauss � Jordan o, en forma corta, eliminación gaussiana.

El concepto clave de este método es usar dos tipos de operaciones algebraicas para reducir

el sistema de ecuaciones original a la forma apropiada de eliminación de Gauss , en

donde cada variable básica se elimina de todas las ecuaciones menos una (su ecuación) y en

esa ecuación tiene coeficiente +1 . Una vez obtenida la forma apropiada de eliminación

de Gauss, la solución para las variables básicas se puede leer directamente en el lado dere-

cho de las ecuaciones.

� ¿Cómo se identifica la nueva solución?

� Prueba de optimalidad.

Para determinar si la solución básica factible actual es óptima, se usa la ecuación (0) para

reescribir la función objetivo, sólo en términos de las variables no básicas actuales,

Z = - 1.2026 x1

- 0.0951x2

+ 0.1036x3

+ 0.1719x5

- 0.2183 6x + 1676.54 ( )∗

Aumentar el valor de cualquiera de estas variables no básicas (con el ajuste de los valores de

las variables básicas para que cumplan todavía con el sistema de ecuaciones) significa tras-

ladarse a una de las dos soluciones básicas factibles adyacentes.

Page 70: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

70

En términos generales, la solución básica factible actual es óptima si y sólo si todas las varia-

bles no básicas tienen coeficientes no positivos ( 0≤ ) en la forma actual de la función

objetivo. Esta forma actual se obtiene despejando Z en la ecuación (0)* (ecuación (0)

actual) después de haber convertido todas las ecuaciones a la forma apropiada de elimina-

ción de Gauss (que elimina las variables básicas de esta ecuación). En nuestro caso, esta es

la ecuación ( )∗ . De acuerdo a esto, la solución básica factible actual

x = ( x1, x

2, x

3, x

4, x

5, x

6, x

7 , x

8 ) = (0,0,0,768,0,0,7680,5376),

no es óptima ya que, por ejemplo, en la ecuación ( )∗ el coeficiente de 3x es positivo.

En forma equivalente, sin despejar Z, la prueba de optimalidad consiste en que todas las

variables no básicas tengan coeficientes no negativos ( 0≥ ) en la ecuación (0) actual.

La razón para usar la forma actual de la función objetivo en lugar de la original es que la

forma actual contiene todas las variables no básicas y ninguna variable básica. Se

necesitan todas las variables no básicas para poder comparar todas las soluciones básicas

factibles adyacentes con la solución actual. Las variables básicas no deben aparecer, pues

sus valores pueden cambiar cuando se incrementa alguna variable no básica, en cuyo caso el

coeficiente de la variable no básica ya no indica la tasa de cambio de Z. A causa de las

ecuaciones de las restricciones en forma de igualdad, las dos formas de la función objetivo

son equivalentes, por lo que se usa la que contiene toda la información necesaria.

Page 71: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

71

La ecuación (0) se incluye desde el principio en el sistema de ecuaciones de restricción y

después en el proceso de eliminación de Gauss precisamente para poder obtener esta nueva

forma, más conveniente, de la función objetivo.

Puesto que, según vimos, la solución básica actual no es óptima, debemos proseguir con el

método símplex hasta lograr una solución óptima, es decir, debemos proseguir con la si-

guiente iteración. Antes de realizarla, conviene hacer un resumen del método símplex.

Resumen del método símplex

1. PASO INICIAL.

Se introducen las variables de holgura. Si el modelo no se ajusta a la forma estándar del

problema general de programación lineal, se deben hacer los ajustes necesarios. Para obte-

ner la solución básica factible inicial, se seleccionan las variables originales como las variables

no básicas (es decir, iguales a cero) y las variables de holgura como las variables básicas (y

por tanto, iguales al lado derecho de las ecuaciones). Se realiza la prueba de optimalidad.

2. PASO ITERATIVO.

Parte 1: se determina la variable básica entrante; para esto se selecciona la variable no

básica que, al aumentar su valor, aumente el valor de Z más rápidamente. Esta elección se

Page 72: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

72

puede hacer usando la ecuación (0) para expresar Z sólo en términos de las variables no

básicas y eligiendo aquella cuyo coeficiente positivo sea el mayor. 3

Parte 2: se determina la variable básica que sale: se elige la variable básica que primero

alcanza el valor cero cuando se incrementa la variable básica entrante. Cada variable básica

aparece sólo en su ecuación, de manera que esta ecuación se usa para determinar cuándo

llega a cero esta variable básica si se aumenta el valor de la que entra. Un procedimiento

algebraico formal para realizarlo es el siguiente: sea j el subíndice de la variable básica

entrante . Sea 'íja su coeficiente actual en la ecuación (i) y sea '

ib el lado derecho actual

de esta ecuación i=1,2...,m. Entonces la cota superior para jx en la ecuación (i) es

>

≤∞+

≤0asi

a

b

0asi

x'ij'

ij

'i

'ij

j ,

en donde la variable básica de esta ecuación se hace cero en esta cota superior. Entonces se

determina la ecuación con la cota superior más pequeña y se elige la variable básica actual

en esta ecuación como la variable básica que sale.

3 En forma equivalente la ecuación (0) actual se puede usar en forma directa, en cuyo caso se seleccionaría la variableno básica con el coeficiente mas negativo. Esto es lo que se hace en la forma tabular del método simplex que se presentamas adelante.

Page 73: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

73

Parte 3: se determina la nueva solución básica factible: comenzando con el conjunto

actual de ecuaciones, se despejan las variables básicas y Z en términos de las soluciones no

básicas por el método de eliminación de Gauss�Jordan. Las variables no básicas se igualan

a cero y cada variable básica (y Z) es igual al nuevo lado derecho de la ecuación en que

aparece (con coeficiente +1).

3. PRUEBA DE OPTIMALIDAD. Se determina si la solución es óptima: se verifica si el

valor de Z puede aumentar al hacer que una de las variables no básicas crezca. Esto se

puede realizar al reescribir la función objetivo en términos de las variables no básicas y pasar

estas variables al lado derecho de la ecuación (0) (es decir, despejando Z en esta ecuación)

y al observar el signo de los coeficientes de cada una. Si todos los coeficientes son negativos

o cero, entonces la solución es óptima, y el proceso termina. De otra manera, se regresa al

paso iterativo.

A manera de aclaración, se aplicará este resumen a la siguiente iteración de nuestro

ejemplo prototipo.

Page 74: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

74

ITERACIÓN 2 DEL EJEMPLO.

Parte 1: Como la ecuación (0) actual (o sea, la ecuación (0)*) da

Z = - 1.2026 x1

- 0.0951x2

+ 0.1036x3

+ 0.1719x5

- 0.2183 6x + 1676.54,

elegimos a 5x como la variable básica entrante, pues ésta posee el mayor coeficiente

positivo.

Parte 2: Los límites superiores (o cotas superiores) sobre 5x se muestran en la siguiente

tabla:

Variable Número de Coeficiente Parte derecha Cota superior

básica ecuación '5ia de 5x '

ib para 5x

4x 1 0.7 768 1097.14

7x 2 11 7680 698.18

8x 3 -0.1 5376 ∞+

A partir de esta tabla se concluye que la menor cota superior para 5x es igual a 4.698, la

cual corresponde a la variable básica 7x , es decir 7x tiene la menor cota superior sobre

5x . Por lo tanto, la variable 7x se convierte en variable básica que sale para dar lugar a la

variable entrante 5x .

Parte 3: Debemos eliminar la variable 5x de todas las ecuaciones, excepto de la ecuación

(2)* en la cual 5x sustituye a 7x . El sistema correspondiente, junto con las nuevas

Page 75: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

75

variables básicas, las cuales aparecen en mayúscula, antes de dicha eliminación es

(0)* Z +1.2026 x1

+ 0.0951x2

- 0.1036x3

- 0.1719X5

+ 0.2183 6x = 1676.54

(1)* 10

12x

1 +

10

7x

2 +

10

8x

3 + X

4 +

10

7X

5 +

10

1x

6 = 768

(2)* 8x1

+ 9x2

+ 4x3

+ 11X5

+ x7

= 7680

(3)* 5

7x

1 +

10

79x

2 +

5

23x

3 -0.1X

5 6x

10

3− + X8 = 5376

Se procede a eliminar 5x de las ecuaciones (0)*, (1)* y (3)* por medio de las siguientes

operaciones:

� Se dividen ambos miembros de la ecuación (2)* por el coeficiente de 5x en dicha

ecuación, es decir, por 11 para obtener la ecuación

2.698x091.0Xx364.0x818.0x727.0 75321 =++++ (2)**

� Se multiplica la ecuación (2)** por 0.1719 y se suma a la ecuación (0)*.

� Se multiplica la ecuación (2)** por - 0.7 se suma a la ecuación (1)*.

� Se multiplica la ecuación (2)** por 0.1 y se suma a la ecuación (3)*.

Una vez realizadas estas operaciones se obtiene el sistema :

5446

2.698

3.279

1797

Xx009.0

x091.0

x06.0

x016.0

x3.0

x1.0

x218.0

X

X

x636.4

x364.0

x545.0

x04.0

x982.7

x818.0

x127.0

x236.0

x473.1

x727.0

x691.0

x328.1Z

**)3(

**)2(

**)1(

**)0(

87

7

7

7

6

6

6

5

4

3

3

3

3

2

2

2

2

1

1

1

1

====

++−

−+

++

++

+

+++−

+++++

Page 76: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

76

Así, la nueva solución factible básica es :

)5446,0,0,2.698,3.279,0,0,0()x,x,x,x,x,x,x,x(x 87654321 ==

Esta solución no es óptima, dado que en la ecuación (0)** el coeficiente de 3x es

negativo. Por consiguiente, debemos realizar una iteración adicional..

ITERACIÓN 3 DEL EJEMPLO.

Parte 1: La ecuación (0)** es equivalente a

1797x016.0x218.0x04.0x236.0x328.1Z 76321 +−−+−−= .

La variable con mayor coeficiente positivo (¡ y único !) es 3x , así que la escogemos como

variable básica entrante.

Parte 2: Los límites superiores (o cotas superiores) sobre 3x se muestran en la siguiente

tabla:

Variable básica Número Coeficiente 'ia Parte derecha Cota superior

de ecuación de 3x 'ib para 3x

4x 1 0.545 279.3 512.477

5x 2 0.364 698.2 1918.13

8x 3 4.636 5446 1174.72

A partir de esta tabla se deduce que la variable que impone la menor cota superior sobre 3x

es 4x , así que esta variable se convierte en variable que sale y en su lugar entra 3x .

3

Page 77: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

77

Parte 3: Debemos eliminar la variable 3x de todas las ecuaciones, excepto de la ecuación

(1)** en la cual 3x sustituye a 4x . Procediendo de manera semejante a como se hizo en

la segunda iteración, se obtiene el sistema

3072

512

512

1818

Xx55.0

x133.0

x12.0

x011.0

x15.1

x07.0

x183.0

x226.0

X

x5.8

x67.0

x833.1

x075.0

X

x9.6

x733.0

x233.0

x245.0

x4.4

x267.0

x267.1

x38.1Z

87

7

7

7

6

6

6

6

5

4

4

4

4

3

2

2

2

2

1

1

1

1

====

++−+−+

−−

+−++

+++

+−++

++

De esta manera, la nueva solución factible básica es:

)3072,0,0,512,0,512,0,0()x,x,x,x,x,x,x,x(x 87654321 == .

Afortunadamente, esta solución es óptima, pues todos los coeficientes de las variables no

básicas en la primera ecuación son positivos. En forma equivalente, al escribir la primera

ecuación del último sistema en la forma

76421 x011.0x226.0x075.0x245.0x38.11818Z −−−−−= .

Observamos que ningún coeficiente de las variables no básicas es positivo, lo cual prueba

que la solución obtenida es óptima. Aquí termina la aplicación del método símplex..

Conclusión: La solución deseada para la forma original del problema es 0x1 = , 0x2 = ,

512x3 = , 0x4 = y 512x5 = , lo cual nos proporciona para la función objetivo un

máximo de 1818Z = .

Page 78: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

78

3.3. FORMA TABULAR DEL MÉTODO SÍMPLEX.

La forma algebraica del método símplex presentada en la sección 3.2 puede ser la mejor para

entender la lógica que fundamenta el algoritmo. Sin embargo, no es la más conveniente para

realizar los cálculos necesarios. Para resolver un problema a mano (o en computadora), se

recomienda la forma tabular descrita en esta sección.

La forma tabular del método símplex es matemáticamente equivalente a la forma algebraica,

nada más que en lugar de escribir cada conjunto de ecuaciones con todo detalle, se usa una

tabla símplex para registrar sólo la información esencial, a saber: 1) los coeficientes de las

variables, 2) las constantes del lado derecho de las ecuaciones y 3) las variables básicas que

aparecen en cada ecuación. Esto ahorra la escritura de los símbolos de las variables, pero es

más importante al permitir hacer que sobresalgan los números usados en los cálculos aritmé-

ticos y registrarlos en forma muy compacta.

Expondremos la forma tabular del método símplex en la solución del ejemplo prototipo sobre

un problema de producción (Ejemplo 3.1.1). En este problema el sistema de ecuaciones es:

(0) Z -1.417x1

- 1.433x2

- 1.85x3

- 2.183x4

- 1.7x5

= 0

(1) 12x1

+ 7x2

+ 8x3

+ 10x4

+ 7x5

+ x6

= 7680

(2) 8x1

+ 9x2

+ 4x3

+ + 11x5

+ x7

= 7680

(3) 5x1

+ 10x2

+ 7x3

+ 3x4

+ 2x5

+ x8

= 7680

x1, x

2, x

3, x

4, x

5, x

6, x

7, x

8 ≥≥≥≥≥ 0

Page 79: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

79

Este sistema de ecuaciones se representa en la siguiente tabla:

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 -1.417 -1.433 -1.85 -2.183 -1.7 0 0 0 0

6x 1 0 12 7 8 10 7 1 0 0 7680

7x 2 0 8 9 4 0 11 0 1 0 7680

8x 3 0 5 10 7 3 2 0 0 1 7680

Tabla 3.3.1. Etapa inicial del método símplex

Esta tabla contiene la distribución de cualquier tabla símplex, donde la columna de la iz-

quierda indica la variable básica que aparece en cada ecuación de la solución básica factible

actual (aunque sólo las variables jx son básicas o no básicas, Z juega el papel de variable

básica para la ecuación (0)). Por ejemplo, la columna de la variable básica de la tabla 3.3.1

indica que la solución básica factible inicial tiene las variables 6x , 7x y 8x , es decir, las

variables no básicas son las que no están en la lista: 1x , 2x , 3x , 4x y 5x .

Después de establecer 0x1 = , 0x2 = , 0x3 = , 0x4 = y 0x5 = , la columna

denominada lado derecho proporciona la solución para las variables básicas, de manera que

la solución básica factible inicial es:

== )x,x,x,x,x,x,x,x(x 87654321 )7680,7680,7680,0,0,0,0,0( con 0Z = .

Page 80: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

80

La razón por la que la columna lado derecho siempre da los valores de las variables básicas

en la solución básica factible actual, es que el método símplex requiere que la tabla símplex al

iniciar (o terminar) cada iteración esté en la forma apropiada de eliminación de Gauss. En

esta forma, cada columna de cada variable básica contiene sólo un coeficiente distinto de

cero y este coeficiente es 1 en el renglón o fila de esta variable básica (las columnas de las

variables no básicas pueden tener cualquier elemento). Obsérvese en la tabla 3.3.1 que las

columnas de 6x , 7x y 8x (lo mismo que la de Z) se ajustan a este patrón especial. En

consecuencia, cada ecuación contiene exactamente una variable básica con coeficiente dis-

tinto de cero, en donde este coeficiente es 1, por lo que esta variable básica es igual a la

constante en el lado derecho de esta ecuación (recuérdese que las variables no básicas son

iguales a cero).

Según las suposiciones actuales (establecidas al comenzar el capítulo) sobre la forma original

del modelo, la tabla símplex inicial queda automáticamente en la forma apropiada de

eliminación gaussiana. Cuando el método símplex se traslada de la solución básica factible

actual a la siguiente, la parte 3 del paso iterativo utiliza la eliminación de Gauss para restable-

cer esta forma para la nueva solución.

El método símplex construye una tabla símplex para cada solución básica factible que se

obtiene, hasta alcanzar la solución óptima. A continuación se describe el procedimiento, que

Page 81: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

81

es sólo una representación tabular del procedimiento algebraico presentado en la

sección 3.2.

PASO INICIAL. Se introducen las variables de holgura. Si el modelo no se encuentra

en la forma estándar del problema general de programación lineal, se deben hacer los

ajustes necesarios. De otra manera, se seleccionan las variables originales como

variables no básicas iniciales (se igualan a cero) y las variables de holgura como

las variables básicas iniciales. Este paso está representado en la tabla 3.3.1 para

nuestro ejemplo prototipo, en donde la solución factible básica inicial es

)7680,7680,7680,0,0,0,0,0( . Ahora debe realizarse la prueba de optimalidad

para determinar si la solución es óptima.

PRUEBA DE OPTIMALIDAD. La solución básica factible actual es óptima si y sólo si

todos los coeficientes de la ecuación (0) son no negativos ( 0≥ ). Si es así, el proceso termina,

de lo contrario, se lleva a cabo otra iteración para obtener la nueva solución básica factible, lo

que significa el cambio de una variable no básica por una básica (parte 1) y viceversa (parte 2),

y después despejar las variables de la nueva solución (parte 3). Apreciando la tabla 3.3.1,

observamos cinco coeficientes negativos en al ecuación (0), lo cual indica que la solución

básica factible actual no es optimal (basta con al menos un coeficiente negativo en la ecuación

(0) para que la solución no sea óptima). Con esta información debe irse al paso iterativo.

Page 82: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

82

PASO ITERATIVO.

Parte 1: se determina la variable básica entrante mediante la elección de la variable

(automáticamante se refiere a una variable no básica) con el coeficiente negativo que tiene

el mayor valor absoluto en al ecuación (0) (o sea, se escoge la variable no básica con el

coeficiente más negativo). Se enmarca o sombrea la columna correspondiente a este coefi-

ciente y se le da el nombre de columna pivote.

En nuestro ejemplo, el coeficiente negativo más grande (en términos de valor absoluto) es

183.2− para 4x , por lo que 4x debe convertirse en variable básica. Este cambio se

indica en la tabla 3.3.2 con un sombreado en la columna de 4x abajo del 183.2− .

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 -1.417 -1.433 -1.85 -2.183 -1.7 0 0 0 0

6x 1 0 12 7 8 10 7 1 0 0 7680

7x 2 0 8 9 4 0 11 0 1 0 7680

8x 3 0 5 10 7 3 2 0 0 1 7680

Tabla 3.3.2. Selección de la variable básica entrante

Page 83: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

83

Parte 2: se determina la variable básica que sale; para lograrlo, a) se toma cada coeficien-

te estrictamente positivo de la columna sombreada; b) se divide el lado derecho de cada

renglón entre estos coeficientes; c) se identifica la ecuación con el menor cociente, y d) se

selecciona la variable básica para la ecuación (esta variable básica es la que llega a cero

primero cuando se incrementa la variable básica entrante). Se sombrea o enmarca el renglón

de esta ecuación en la tabla símplex sin incluir la columna Z y se le da el nombre de

renglón pivote (de aquí en adelante se usará el término renglón para hacer referencia a los

números de ese renglón que se encuentran a la derecha de la columna Z, y que incluyen las

constantes del lado derecho; los renglones se etiquetan con los números en la columna deno-

minada Ec. Núm.). El número que está en la intersección de ambos recuadros se llama

número pivote.

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x der. Cociente

Z 0 1 -1.417 -1.433 -1.85 -2.183 -1.7 0 0 0 0

6x 1 0 12 7 8 10 7 1 0 0 7680 768

Mínimo

7x 2 0 8 9 4 0 11 0 1 0 7680 ___

8x 3 0 5 10 7 3 2 0 0 1 7680 2560

Tabla 3.3.3. Selección de la variable básica que sale.

Primera Tabla Símplex

Page 84: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

84

En la tabla 3.3.3 se muestran los resultados de las partes 1 y 2 para el ejemplo; la prueba

del cociente mínimo para determinar la variable básica que sale se muestra a la derecha de

la tabla (en su última columna). En el renglón 2, el coeficiente de la columna pivote es cero,

así que los únicos dos coeficientes estrictamente positivos se encuentran en los renglones 1

y 3 (en el renglón 1 el coeficiente es 10, mientras que el coeficiente en el renglón 2 es 3 ).

Las razones para estos renglones son 76810

7680 = (para el renglón 1) y 25603

7680 =

(para el renglón 2), por lo que la razón mínima de 768 identifica al renglón 1 como el

renglón pivote (con 10 como número pivote). En consecuencia, la variable básica que

sale es 6x , es decir, la variable básica del renglón 1 (las otras variables básicas 7x y

8x no aparecen en este renglón, por cuanto sus coeficientes son 0).

Parte 3: se determina la nueva solución básica factible construyendo una nueva tabla

símplex en la forma apropiada de eliminación de Gauss, debajo de la que se tiene. En la

nueva tabla, las primeras tres columnas son las mismas que en la tabla inicial, sólo que la

variable básica entrante sustituye a la variable básica que sale en la columna de Variable

básica . Para cambiar el coeficiente de la nueva variable básica en el renglón pivote a 1 , se

divide todo el renglón entre el número pivote, así que

pivote número

antiguopivote renglón nuevopivote Renglón = .

En el ejemplo, como el renglón pivote antiguo es el renglón 1 sombreado en la tabla 3.3.3,

Page 85: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

85

y el número pivote es 10, al aplicar la última fórmula se obtiene el nuevo renglón pivote,

como se muestra en la tabla 3.3.4.

Para completar la primera iteración es necesario seguir usando la eliminación de Gauss para

obtener coeficientes de 0 para la nueva variable básica 4x en los otros renglones (incluso

el renglón 0) de la tabla 3.3.4. Como el segundo renglón ya tiene coeficiente 0 para 4x

en la primera tabla símplex, este segundo renglón se puede copiar a la segunda tabla (que

corresponde a la iteración 1) sin cambios. No así los renglones 0 y 3 que tienen coeficien-

tes en la columna pivote de 183.2− y 3 respectivamente, así que cada uno de ellos

necesita cambiarse usando la siguiente fórmula:

nuevo) pivote renglón pivote columna la de te (coeficien antiguo Renglón

nuevo Renglón

×−=

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 -1.417 -1.433 -1.85 -2.183 -1.7 0 0 0 0

6x 1 0 1.2 0.7 0.8 1 0.7 0.1 0 0 768

7x 2 0 8 9 4 0 11 0 1 0 7680

8x 3 0 5 10 7 3 2 0 0 1 7680

Tabla 3.3.4. Preparación para la primera iteración del método símplex.

Page 86: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

86

De otra forma, cuando el coeficiente de la columna pivote es negativo (como en el renglón

0), una expresión más conveniente para esta fórmula es

nuevo)pivote renglón )pivote columna la de e coeficient ( ( antiguo Renglón

nuevo Renglón

×−+=

A manera de ilustración, los renglones que aparecen en la tabla 3.3.5 se obtienen como

sigue:

)1677 , 00 218.017.0 0 1.0 095.0 203.1(

0 renglón nuevo

______________________________________________________________________

) 768 ,0 0 0.10.710.80.71.2 2.183)((

)0 , 00 07.1183.285.1433.1417.1( :0 Renglón

−−=

+−−−−−

Renglón 2; Sin cambio porque el coeficiente de la columna pivote es cero.

)1677 , 1 0 3.01.0 0 6.4 9.7 4.1(

3 renglón nuevo

________________________________________________________________

) 768 ,0 0 0.1 0.7 1 0.80.71.2 3)((

)7680 , 10 0 2 3 710 5 ( : 3Renglón

−−=

Page 87: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

87

Estos cálculos llevan a la nueva tabla símplex que se muestra en la tabla 3.3.5:

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 1.203 0.095 - 0.1 0 - 0.17 0.218 0 0 1677

4x 1 0 1.2 0.7 0.8 1 0.7 0.1 0 0 768

7x 2 0 8 9 4 0 11 0 1 0 7680

8x 3 0 1.4 7.9 4.6 0 - 0.1 - 0.3 0 1 5376

Tabla 3.3.5. Final de la primera iteración..

Como las variables básicas siempre son iguales al lado derecho de la ecuación que les

corresponde, la nueva solución básica factible es :

)5376,7680,0,0,7680,0,0,0()x,x,x,x,x,x,x,x(x 87654321 == ,

con Z = 1677.

Este trabajo completa el paso iterativo, así que debe proseguirse con la prueba de optimalidad

para verificar si la nueva solución básica es óptima. Como el nuevo renglón (0) todavía tiene

coeficientes negativos, la solución no es óptima, por lo que se necesita una iteración más.

La tabla 3.3.6 nos muestra las variables entrante y la que sale en la siguiente iteración:

Page 88: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

88

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x der. Cociente

Z 0 1 1.203 0.095 - 0.1 0 - 0.17 0.218 0 0 1677

4x 1 0 1.2 0.7 0.8 1 0.7 0.1 0 0 768 1097.14

7x 2 0 8 9 4 0 11 0 1 0 7680 698.18

Mínimo

8x 3 0 1.4 7.9 4.6 0 - 0.1 - 0.3 0 1 5376 ��

Tabla 3.3.6. Iteración 1. Segunda Tabla Símplex

Así, vemos que la variable entrante es 5x y la saliente es 7x . Procediendo como en la

primera iteración, de la tabla 3.3.6 se obtiene la tabla 3.3.7.

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 1.328 0.236 -0.04 0 0 0.218 0.016 0 1797

4x 1 0 0.691 0.127 0.545 1 0 0.1 - 0.06 0 279.3

5x 2 0 0.727 0.818 0.364 0 1 0 0.091 0 698.2

8x 3 0 1.473 7.982 4.636 0 0 - 0.3 0.009 1 5446

Tabla 3.3.7. Final de la segunda iteración.

Page 89: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

89

Dado que el renglón (0) aún contiene coeficientes negativos, se debe realizar una iteración

adicional. La tabla 3.3.8 nos muestra las variables entrante y saliente para la tercera itera-

ción:

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x der. Cociente

Z 0 1 1.328 0.236 - 0.04 0 0 0.218 0.016 0 1797

4x 1 0 0.691 0.127 0.545 1 0 0.1 - 0.06 0 279.3 512.48

Mínimo

5x 2 0 0.727 0.818 0.364 0 1 0 0.091 0 698.2 1918.1

8x 3 0 1.473 7.982 4.636 0 0 - 0.3 0.009 1 5446 1174.7

Tabla 3.3.8. Tercera Tabla Símplex

Aplicando reducción gaussiana se obtiene la tabla

Variable Ec. Coeficiente de Lado

básica Núm. Z 1x 2x 3x 4x 5x 6x 7x 8x derecho

Z 0 1 1.38 0.245 0 0.075 0 0.226 0.011 0 1818

3x 1 0 1.267 0.233 1 1.833 0 0.183 - 0.12 0 512

5x 2 0 0.267 0.733 0 - 0.67 1 - 0.07 0.133 0 512

8x 3 0 - 4.4 6.9 0 - 8.5 0 - 1.15 0.55 1 3072

Tabla 3.3.9. Final de la tercera iteración.

Page 90: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

90

El rengón (0) de esta última tabla no contiene coeficientes negativos, luego la solución

obtenida 0x1 = , 0x2 = , 512x3 = , 0x4 = , 512x5 = , 0x6 = , 0x7 = y

0x8 = es óptima, dando un valor máximo para la función objetivo de Z = 1818 .

3.4. MÉTODO SÍMPLEX USANDO LA TÉCNICA M

(MÉTODO DE PENALIZACIÓN)

En los modelos de programación lineal aparecen con frecuencia restricciones de tipo igual-

dad o desigualdades del tipo ( ≥ ), por lo que no es posible en estos casos obtener una

solución factible básica de inicio con las variables de holgura.

Para disponer de una solución básica factible de inicio, se usan variables artificiales, las cuales

son no negativas y se suman al primer miembro de cada ecuación en la forma estándar del

modelo que no contenga variables de holgura, que sirvan de variables básicas de inicio.

Las variables artificiales desempeñan igual función que las variables de holgura. Sin embargo,

no tienen significado físico ni económico, de ahí el nombre de artificiales.

Para que el proceso de optimización sea válido se requiere que en la solución óptima estas

variables valgan cero, y se logra penalizándolas en la función objetivo. El método consiste en

Page 91: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

91

utilizar coeficientes positivos muy grandes M( > )0> para las variables artificiales en la

función objetivo, sumadas si el problema es de minimización o restadas si es de maximización.

Lo anterior se verá más claro en los siguientes ejemplos.

OBSERVACIÓN. En los ejemplos que se resuelven en esta sección, las variables de holgu-

ra se denotan por , S1, S

2 , ..., etc.

Ejemplo I. Resolver el problema

Max [ 321 x5x3x2Z −+= ]sujeta a

≥≥≥=++

≥+−

.0x,0x,0x

7 xx x

10xx5x2

321

321

321

Solución: Escribimos el modelo en forma estándar

max [ 21321 MRMRx5x3x2Z −−−+= ]sujeta a;

≥=++

=+−+−

0R,R,S,x,x,x

7R+ xx x

10 RSxx5x2

211321

2321

11321

Page 92: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

92

Construimos el siguiente tablero:

Variables Z 1x 2x 3x 1S 1R 2R Solución

Básicas

Z 1 -2 -3 5 0 M M 0

1R 0 2 - 5 1 - 1 1 0 10

2R 0 1 1 1 0 0 1 7

Tabla 3.4.1.

Para obtener el tablero inicial debemos obtener en el renglón Z coeficientes cero para las

variables artificiales 1R y 2R , multiplicando el renglón 1R y 2R por M− y

sumándoselo a l renglón Z, con lo que se obtiene:

Variables Z 1x 2x 3x 1S 1R 2R Solución

Básicas

Z 1 - 3M - 2 4M - 3 - 2M + 2 M 0 0 - 17 M

1R 0 2 - 5 1 - 1 1 0 10

2R 0 1 1 1 0 0 1 7

Tabla 3.4.2. Tablero inicial.

Aplicando el método símplex se obtiene la siguiente tabla óptima (los detalles se dejan al

lector):

Page 93: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

93

Variables Z 1x 2x 3x 1S 1R 2R Solución

Básicas

Z 1 0 07

50

7

1

7

1M −

7

16M +

7

102

1x 0 1 07

6

7

1−7

1

7

5

7

45

2x 0 0 17

1

7

1

7

1−7

2

7

4

Tabla 3.4.3. Solución óptima al Ejemplo I

Por lo tanto, la solución óptima es:

7

102= Z max ,

7

45x1 =∗

, 7

4x2 =∗

, 0x3 =∗ , 0S1 =∗ .

Ejemplo II. Resolver el problema

[ ] x7x6x5= Z min 321 −−sujeta a

≥=++

≤+−≥−+

0x ,x ,x

5x x x

20x10x6 x5

15x3 x5x

321

321

321

321

Solución: Reescribimos el modelo en forma estándar e incluimos las variables artificiales. El

problema se puede expresar en la siguiente forma equivalente:

21321 MRMRx7x6x5 Z min ++−−=

Page 94: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

94

sujeto a

.0R,R,X,X,x,x,x

5Rxxx

20Xx10x6x5

15RXx3x5x

2121321

2321

2321

11321

≥=+++=++−=+−−+

Construimos el tablero:

VB Z 1x 2x 3x 1X 1R 2X 2R Sol.

Z 1 - 5 6 7 0 M− 0 M− 0

1R 0 1 5 - 3 - 1 1 0 0 15

X2

0 5 -6 10 0 0 1 0 20

2R 0 1 1 1 0 0 0 1 5

Tabla 3.4.4.

Enseguida obtenemos coeficientes cero para 1R y 2R en el renglón Z conformando

el tablero inicial;

VB Z 1x 2x 3x 1X 1R 2X 2R Sol.

Z 1 5M2 − 6M6 + M27 − M− 0 0 0 M20

1R 0 1 5 - 3 - 1 1 0 0 15

2X 0 5 -6 10 0 0 1 0 20

2R 0 1 1 1 0 0 0 1 5

Tabla 3.4.5. Tablero inicial para el ejemplo II.

Page 95: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

95

Ahora se aplica el método símplex para obtener:

VB Z 1x 2x 3x 1X 1R 2X 2R Sol.Z 1 - 115 /10 0 0 - 1 / 8 1 / 8 - M 0 - M - 53 / 8 - 125 / 4

2x 0 1 / 2 1 0 - 1 / 8 1 / 8 0 3 / 8 15 / 4

2X 0 3 0 0 - 2 2 1 - 4 30

3x 0 1 / 2 0 1 1 / 8 - 1 / 8 0 5 / 8 5 / 4

Tabla 3.4.6. Solución óptima al Ejemplo II.

Este tablero es óptimo, puesto que los coeficientes de la función objetivo (Renglón Z) son

todos no positivos ( 0≤ ). Por lo tanto, se obtiene como solución óptima factible

4

125Zmin −= , 0x1 =∗ ,

4

15x2 =∗

, 4

5x3 =∗

, , . X *1= 0 , X *

2= 30 .

Existe otra técnica alternativa para llevar a cabo el algoritmo símplex con variables artificiales

denominado TECNICA DE LAS DOS FASES, el cual no se discutirá en este módulo,

pero se recomienda su consulta al lector.

EJERCICIOS PROPUESTOS DEL CAPITULO III. METODO SÍMPLEX.

3.1. Obtener la tabla 3.4.2.

3.2. Obtener la tabla 3.4.6.

Page 96: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

96

3.3. Maximizar la función 21 xxZ +=

sujeta a

≥≤+=+

.0x,x

6x2x7

5x3x2

21

21

21

3.4. Maximizar la función 321 x3x5xZ ++=sujeta a

≥≥≥=−=++

.0x,0x,0x

4xx2

3xx2x

321

21

321

Utilice una variable artificial en la segunda restricción y use 3x como variable básica deinicio.

3.5. Maximizar 321 x3x2x3Z ++=

sujeta a

≥≥≥≥++≤++

.0x,0x,0x

8x2x4x3

2xxx2

321

321

321

Page 97: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

97

3.6. Minimizar 21 x4xZ +=sujeta a

≥≥+≥+

.0x,x

12x2x3

8x2x

21

21

21

Resuelva este problema por medio de:

a. Método gráfico.

b. Método Símplex.

Compare los resultados de a y b.

3.7. Minimícese la función 4321 x2x3xx6Z −++=sujeta a

≥≥≥≥=++≥−−+≤+

.0x,0x,0x,0x

30xx2x

10xxx3x2

42xx

4321

431

4321

21

3.8. Resolver el modelo del ejemplo 1.4.

Page 98: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

98

Page 99: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

99

4.1. PROGRAMA SIMPLEX EN MATHEMATICA®

El programa �Símplex� y otros aquí presentados fueron escritos por Alvaro Salas. El propósito

de este capítulo consiste en mostrar el algoritmo PASO A PASO y de una manera

INTERACTIVA entre el usuario y el computador. El programa se presenta al final en el

anexo y corre en MATHEMATICA®, versiones 2.2 y posteriores. Los comandos creados,

junto con sus respectivos formatos, se presentan a continuación :

1. Comando �Símplex� .

Sus formatos son :

Símplex[Max,función objetivo Z,

{restricción 1, restricción 2,...,restricción k}] ( si se trata de maximizar Z)

Símplex[Min,función objetivo Z,

{restricción 1, restricción 2,...,restricción k}] ( si se trata de minimizar Z)

Este programa proporciona el problema original e introduce en forma automática las varia-

bles de holgura,artificiales y/o de superávit. Muestra el problema en forma estándar , en

donde todas las restricciones son ecuaciones junto con la tabla símplex inicial. Además, el

programa supone que todas las variables son no negativas.

Capítulo IV

IMPLEMENTACION DEL ALGORITMO SIMPLEX ENMATHEMATICA®

Page 100: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

100

EJEMPLO I.

Maximizar la función 21 xxZ +=

sujeta a

≥≤+=+

.0x,x

6x2x7

5x3x2

21

21

21

In[1]:= T0=Símplex[Max,x1+x2,{2*x1+3*x2==5,7*x1+2*x2<=6}];

Out[1]=

Problema Original :

Maximizar : W = x1 + x2

Sujeta a :

2 x1 + 3 x2 == 5

7 x1 + 2 x2 <= 6

Forma Estándar del problema :

Maximizar :

Z =x1 + x2 - M R1

Sujeta a :

2 x1 + 3 x2 + R1 == 5

7 x1 + 2 x2 + S1 == 6

Page 101: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

101

Tipos de Variables :

Variables Originales ={x1, x2}

Variables de Holgura ={S1}

Variables Artificiales ={R1}

Variables Básicas ={R1, S1}

Tabla Símplex inicial :

2. Comando �sumar�. Su formato es :

sumar[Tabla,i,k,j]

Esta instrucción multiplica la i -ésima fila ( renglón ) de la tabla �Tabla� por k y la suma al

renglón j de la misma. Esta operación se aplica, en particular, cuando se usa la técnica de la

M (técnica de la penalización) con el fin de volver consistente la tabla símplex inicial con el

valor que la función objetivo penalizada toma en la solución básica inicial.

Page 102: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

102

EJEMPLO II. Multipliquemos la fila 1 de la tabla T0 por -M y sumemos este resultado a

la fila 0 de dicha tabla :

In[2]:= T1= sumar[T0, 1,-M,0]

Out[2] =

3. Comando � buscar�. Su formato es :

buscar[Tabla]

Este comando se aplica cuando se tiene una tabla símplex consistente con el valor que la

función objetivo toma en la solución básica factible inicial. El comando � buscar�, como su

nombre lo indica, busca la variable que entra y la variable que sale en la primera iteración.

Page 103: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

103

EJEMPLO III. Apliquemos el comando � buscar� a la tabla T1 :

In[3]:= T2 = buscar[T1];

Out[3]=

Sale R1; Entra x2. Aplique: iterar[%#salida,1,2]

3. Comando �iterar�. Su formato es :

iterar[Tabla,i,j]

Este comando convierte en uno el elemento que se encuentra en la intersección del rengló

(fila) i y la columna j (el elemento pivote) y simultáneamente crea ceros arriba y debajo del

pivote. Al mismo tiempo, ubica el nuevo elemento pivote ( si tal existe ).

Page 104: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

104

EJEMPLO IV. Apliquemos el comando � iterar� a la tabla T2 :

In[4]:= T3 = iterar[T2,1,2];

Out[4] =

Sale S1; Entra x1. Aplique : iterar[%#salida,2,1]

Una vez más, apliquemos el comando iterar :

In[5]:= T4 = iterar[T3,2,1];

Out[5]=

Valores de las variables básicas :

Page 105: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

105

CONCLUSION. Solución óptima :

Como puede apreciarse, al aplicar el comando «iterar» reiteradamente, obtenemos la

conclusión. En el caso que tenemos, el máximo valor de Z es igual a 17

31, el cual se alcanza

para 17

8x1 = y

17

23x2 = ..

El siguiente ejemplo ilustra el aspecto geométrico del algoritmo símplex. En las gráficas se

puede apreciar la ruta del algoritmo, es decir, cómo pasa de un vértice de la región factible a

uno adyacente.

EJEMPLO V. Maximizar la función

2x21xZ +=

sujeta a :

≥≤+≤+≤+

≤≤+−

02x , 1x

392x 1x6

152x 1x2

102x 1x

6 2x

3 2x1x

Page 106: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

106

SOLUCION.

In[6]:= T0=Símplex[Max,x1+2x2,{-x1+x2<=3,x2<=6,x1+x2<=10,

12x1+x2<=15,6x1+x2<=39}]

Out[6]= Problema Original:

Maximizar : W=x1+2x2

Sujeta a:

-4x1 +x2 <= 0

-x1 +x2 <= 3

x2 <= 6

x1 +x2 <= 10

2x1 +x2 <= 15

6x1 +x2 <= 39

Forma estándar del problema :

Maximizar : Z = x1+2x2

Sujeta a :

-4x1 +x2+S1 ==0

-x1 +x2 +S2 ==3

x2 +S3 ==6

x1 +x2 +S4 ==10

2x1 +x2 +S5 ==15

6x1 +x2 +S6 ==39

Page 107: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

107

Tipos de variables:

Variables Originales = {x1,x2}

Variables de Holgura = {S1,S2,S3,S4,S5,S6}

Variables Básicas = {S1,S2,S3,S4,S5,S6}

Tabla Símplex inicial :

Por cuanto esta tabla símplex es consistente (no se aplica la técnica de la M, ya que todas las

restricciones tienen el signo ≤ y los lados derechos de las mismas son no negativos)

procedemos a buscar la variable que entra y la que sale en la primera iteración :

In[7]:= T1=buscar[T0];

Out[7]=

Page 108: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

108

Sale S1; Entra x2. Aplique : iterar[%#salida,1,2]

In[8]:= T2=iterar[T1,1,2];

Out[8]=

Sale S2; Entra x1. Aplique : iterar[%#salida,2,1]

Page 109: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

109

Interpretación gráfica :

In[9]:= T3 = iterar[T2,2,1];

Out[9]=

Page 110: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

110

Sale S3; Entra S1. Aplique : iterar[%#salida,3,3]

Interpretación gráfica :

In[10]:=T4=iterar[T3,3,3];

Out[10]=

Sale S4; Entra S2. Aplique : iterar[%#salida,4,4]

Page 111: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

111

Interpretación gráfica :

In[11]:= T5 = iterar[T4,4,4];

Out[11] =

Page 112: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

112

CONCLUSION. Solución óptima : {Z->16,x1->4,x2->6}.

Interpretación gráfica :

4.2. CASOS ESPECIALES EN LA APLICACIÓN DEL MÉTODO SIMPLEX

Enseguida mostraremos la aplicabilidad del programa en diferentes situaciones (casos

especiales del método símplex).

Page 113: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

113

4.2.1. PROBLEMAS SIN SOLUCIÓN

EJEMPLO VI ( Problema sin solución factible ).

Un problema de programación lineal no tiene solución factible alguna cuando al aplicar la

técnica de la M al menos una variable artificial es básica y toma un valor positivo en la tabla

símplex final .

Esto significa que las restricciones no pueden ser satisfechas simultánaeamente.

Minimizar : 21 x4xZ −=

Sujeta a:

≥≥≥+≤+

≥+

0x ,0x

6xx

1xx

2x2x

21

21

21

21

SOLUCION.

Primero que todo, es evidente que el problema carece de soluciónes básicas, por cuanto las

restricciones 1xx 21 ≤+ y 6xx 21 ≥+ son contradictorias. Verifiquemos esto usando el

algoritmo símplex :

In[12]:=T0 = Símplex[Min,x1-4x2,

{x1+2x2>=2,x1+x2<=1,x1+x2>=6}]

Page 114: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

114

Out[12] =

Problema Original :

Minimizar W = x1-4x2

Sujeta a :

x1+2x2>=2

x1 +x2<=1

x1 +x2>=6

Forma estándar del problema :

Maximizar : Z = x1-4x2-M*R1-M*R2

Sujeta a :

x1 +2x2 -Y1 +R1 ==2

x1 + x2 +S1 ==1

x1 + x2 -Y2 +R2 ==6

Tipos de variables :

Variables Originales = {x1,x2}

Variables de Holgura = {S1}

Variables Artificiales = {R1,R2}

Variables de Superávit = {Y1,Y2}

Variables Básicas = {R1,S1,R2}

Page 115: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

115

Tabla símplex inicial :

Esta tabla nos proporciona la solución básica factible inicial

0x1 = , 0x2 = , 0Y1 = , 1S1 = , 2R1 = , 6R2 = .

Esta tabla no es consistente con el valor que la función objetivo 2121 MRMRx4xZ −−−=

toma en la solución básica, el cual es M86M2M040Z −=⋅−⋅−⋅−= . En la tabla

símplex inicial, el valor de Z es 0Z = . Con el fin de volver consistente la tabla símplex es

preciso anular los coeficientes de 1R y 2R en la función objetivo.

Inicialmente anulamos el coeficiente de 1R multiplicando la fila 1 por �M y sumando este

resultado a la fila 0 :

In[13]:= T1 = sumar[T0,1,-M,0];

Out[13] =

Enseguida anulamos el coeficiente de 2R multiplicando la fila 3 de la tabla T1 por �M y

sumándola a la fila 0 :

Page 116: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

116

In[14]:= T2 = sumar[T1,3,-M,0];

Out[14] =

En este momento la tabla símplex es consistente. Por lo tanto, podemos empezar a aplicar el

algoritmo símplex, para lo cual usamos el comando �buscar� :

In[15]:= T3 = buscar[T2];

Out[15] =

Sale R1; Entra x2. Aplique : iterar[%#salida,1,2]

In[16]:= T4 = iterar[T3,1,2];

Out[16] =

Sale S1; Entra Y1. Aplique : iterar[%#salida,2,6]

Page 117: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

117

In[17]: = T5 = iterar[T4,2,6];

Out[17] =

CONCLUSION : El problema carece de solución factible, por cuanto una de las variables

artificiales (R2) es básica y toma un valor positivo en la tabla símplex final.

4.2.2. PROBLEMAS NO ACOTADOS

EJEMPLO VII ( Problema cuya función objetivo es no acotada ).

Minimizar : 21 x4x3W −=

Sujeta a :

≥≥+≤−≤−

0 x ,x

6x x

1x6x

2x2x

21

21

21

21

SOLUCION.

Al observar las restricciones podemos apreciar que si 0x1 = y 2x toma cualquier valor

positivo 6≥ , entonces 2x4W −= decrece sin límite y no se viola ninguna de las restricciones.

Por lo tanto, si 0x1 = y 2x es suficientemente grande, entonces W es suficientemente

grande y toma valor negativo. Geométricamente, este hecho se ilustra como sigue :

Page 118: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

118

Matemáticamente, −∞→−= 2x4W cuando 0x1 = y ∞→2x . Esto nos dice que la

función objetivo es no acotada en la dirección de 2x . Por lo tanto, ∞= - W Min .

Veamos que la función es no acotada por medio del algoritmo símplex :

In[17]:= T0 = Símplex[Min,3x1-4x2,{x1-2x2<=2,x1-6x2<=1,x1+x2>=6}];

Out[17] =

Problema Original :

Minimizar : W = 3x1-4x2

Sujeta a :

x1-2x2<=2

x1-6x2<=1

x1 +x2>=6

Page 119: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

119

Forma Estándar del problema :

Maximizar : Z=-3x1+4x2-M*R1

Sujeta a :

x1-2x2+S1 ==2

x1-6x2 +S2 ==1

x1 +x2 -Y1+R1==6

Tipos de variables :

Variables Originales = {x1,x2}

Variables de Holgura = {S1,S2}

Variables Artificiales = {R1}

Variables de Superávit = {Y1}

Variables Básicas = {S1,S2,R1}

Tabla Símplex inicial :

Page 120: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

120

Enseguida volvemos consistente la última tabla símplex :

In[18]:= T1 =sumar[T0,3,-M,0];

Out[18] =

En este momento procedemos a aplicar el algoritmo símplex :

In[19]:= T2 =buscar[T1];

Out[19] =

Sale R1; Entra x2. Aplique: iterar[%#salida,3,2]

In[20]:= T3 =iterar[T2,3,2];

Out[20] =

Page 121: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

121

CONCLUSION : LA FUNCION OBJETIVO ES NO ACOTADA.

El programa obtiene como conclusión que la función objetivo es no acotada. El criterio para

determinar la no acotabilidad de una función objetivo es que en la tabla símplex inicial ( que

sea consistente) o en determinada iteración todos los coeficientes de alguna variable sean

menores o iguales a cero.

En el ejemplo que estamos trabajando, podemos observar que todos los coeficientes de la

variable Y1 (que se ubica en la columna 6 de la última tabla símplex) son negativos. De ahí la

no acotabilidad de nuestra función objetivo.

4.2.3. PROBLEMAS CON SOLUCIONES ÓPTIMAS ALTERNATIVAS

EJEMPLO VIII ( Optimos alternativos )

Maximizar :

321 x25x12x20W ++=

Sujeta a :

≥≥≥≤≤≤

≤++

0x ,0x ,0x

1 x

1 x

1 x 4

47 x

4

25 x3 x5

321

3

2

1

321

Page 122: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

122

SOLUCION.

In[21]:= T0 =Símplex[Max,20x1+12x2+25x3,

{5x1+3x2+25/4*x3<=47/4,x1<=1,x2<=1,x3<=1}];

Out[21] =

Problema Original :

Maximizar W = 20x1+12x2+25x3

Sujeta a :

5x1+3x2+25x3/4<=47/4

x1<=1

x2<=2

x3<=3

Forma Estándar del problema :

Maximizar Z= 20x1+12x2+25x3

Sujeta a :

5 x1+3 x2+25/4 x3+S1 == 47/4

x1 +S2 == 1

x2 +S3 == 1

x3 +S4 == 1

Page 123: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

123

Tipos de Variables :

Variables Originales = {x1,x2,x3}

Variables de Holgura = {S1,S2,S3,S4}

Variables Básicas = {S1,S2,S3,S4}

Tabla Símplex Inicial :

In[22]:= T1=buscar[T0];

Out[22]=

Sale S4; Entra x3. Aplique : iterar[%#salida,4,3]

Page 124: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

124

In[23]:= T2=iterar[T1,4,3];

Out[23] =

Sale S3; Entra x1. Aplique : iterar[%#salida,2,1]

In[24]:= T3 = iterar[T2,2,1];

Out[24] =

Sale S3; Entra x2. Aplique : iterar[%#salida,1,2]

In[25]:= T4 = iterar[T3,1,2];

Out[25] =

Page 125: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

125

CONCLUSION:

Solución Optima :

Existen óptimos alternativos. Para obtenerlos, aplique sucesivamente :

OptAlt[%#salida,3,5]; OptAlt[%#salida,3,7]

In[26]:= T5 = OptAlt[T4,3,5];

Out[26] =

In[27]:= T6 = OptAlt[T4,3,7];

Out[27] =

Page 126: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

126

Lo anterior corresponde al resultado del programa al interactuar con el usuario. Observemos

la tabla T4 del último ejemplo. Al observar las variables no básicas S1,S2 y S4, vemos que

dos de ellas tienen coeficiente cero en la función objetivo. Esto significa que cualquiera de

ellas puede entrar en una nueva solución básica sin cambiar el valor de Z pero ocasionando

un cambio en los valores de las variables. La tabla T5 es el resultado de aplicar una iteración

del método símplex, escogiendo como pivote el elemento que se encuentra en la intersecciión

dela fila 3 y la columna 5 de la tabla T4, es decir, sale S3 y entra S2. En esta iteración, se

escogió la variable S2 como la variable que entra por tener coeficiente cero en la columna

5 y para determinar que S3 es la variable que sale de la solución básica se ha aplicado el

criterio del cociente no negativo mínimo.

Esta iteración nos proporciona una nueva solución básica óptima :

1x ,1x ,2

1x ,47Z 321 ==== .

De manera análoga, a partir de la tabla T4 se obtiene la tabla T6, en donde ha entrado S4 y

ha salido S3. La tabla T6 nos proporciona una nueva solución óptima :

5

3x ,1x ,1x ,47Z 321 ==== .

De esta manera, a partir de la tabla T4, la cual nos proporciona la solución óptima

1x ,6

1x ,1x ,47Z 321 ==== ,

se obtienen dos soluciones óptimas adicionales, dadas por las tablas T5 y T6. Estas solucio-

nes constituyen óptimos alternativos.

Page 127: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

127

Geométricamente, estos óptimos alternativos se interpretan como sigue: Las �líneas� de nivel

de la función objetivo vienen dadas por ecuaciones de la forma

cx25x12x20 321 =++ ,

en donde c es una constante. Las gráficas de estas ecuaciones en el espacio tridimensional

321 x x x representan una familia de planos mutuamente paralelos. La función objetivo crece

en la dirección del vector )25 ,12 ,20(v = , cuyas coordenadas son los coeficientes de

1x , 2x y 3x en la función objetivo, respectivamente. Entonces, al aumentar el valor de c ,

estamos moviendo el plano cx25x12x20 321 =++ en la dirección del vector v .

De otro lado, la gráfica de la región factible, dada por las restricciones

≥≥≥≤≤≤

≤++

0x ,0x ,0x

1 x

1 x

1 x 4

47 x

4

25 x3 x5

321

3

2

1

321

es un cubo con uno de sus vértices �cortado� en forma de triángulo. En un momento dado

uno de los planos coincide en parte con la superficie del triángulo. Cada uno de los vértices

1 ,6

1 ,1 P ,

1 1, ,2

1Q y

5

3 1, ,1R del triángulo PQR representa una solución

óptima para nuestro problema. Cabe anotar que cualquier punto X que se encuentre sobre

la superficie del triángulo también representa una solución óptima para nuestro problema.

Page 128: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

128

La expresión general para X es

R)1)(1(Q)1(PX λαλαλ −−+−+=

( ) ( )

−++−−= αλαλλα

15

2

5

2

5

3 ,

6

5-1 ,1

21 ,

en donde 10 ≤≤ αα y 10 ≤≤ λλ . En otras palabras, si

( )λα −−= 12

1x1 , 6

51x2

λ−= y ( )αλα −++= 15

2

5

2

5

3x3 ,

entonces 47x25x12x20W 321 =++= .

El punto P se obtiene cuando 1=λλ cualquiera que sea αα . El punto Q resulta al tomar y

0=λλ . Finalmente, R se obtiene al hacer 0=αα y 0=λλ .

De esta manera, el triángulo PQR y su superficie constituyen un conjunto de óptimos

alternativos.

En la siguiente gráfica se ilustra lo anteriormente comentado:

Page 129: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

129

Ahora examinemos la ruta del algoritmo símplex : Las tablas T1, T2, T3 y T4 nos proporcionan

la siguiente sucesión de soluciones básicas :

( ) ( ) ( ) ( )43421434214342143421

4321 TTTT1 ,1/6 ,1P1 ,0 ,1N1 ,0 ,0M0 ,0 ,0O =→=→=→=

.

Esta sucesión corresponde a vértices consecutivos de la región factible (cubo) como se

ilustra a continuación :

Page 130: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

130

ANEXO

CÓDIGO DEL PROGRAMA QUE REALIZA EL ALGORITMO SÍMPLEX

EN EL LENGUAJE DE MATHEMATICA

<<LinearAlgebra�MatrixManipulatuions�;

Mat[ecu_,Var_]:=Module[{coe,ind},

{coe[e_,v_]:=Map[Coefficient[e[[1]]-e[[2]],#]&,v],

i n d [ e _ , v _ ] : = ( - e [ [ 1 ] ] + e [ [ 2 ] ] ) / . A r r a y [ v [ [ # ] ] -

>0&,Length[v]]};

Map[Flatten[{coe[#,Var],ind[#,Var]}]&,ecu]];

ver0[Mat1_,Var_,Bas_]:=

Module[{SOLBA,pr,Mat,b,nv,MR,fila1,fila2,fila3,fila4,

fila5,Res},

{SetOptions[$Output,PageWidth->Infinity];

SOLBA[TT_]:=Module[{Art,Vorig,nn,k,zna,zna1,vb},

{Art=Select[Var,Level[#,{-1}][[1]]===R&],

Vorig=Select[Var,Not[Level[#,{-1}][[1]]===R||

Level[#,{-1}][[1]]===S||Level[#,{-1}][[1]]===Y]&],

nn=Delete[Var,Map[{#}&,

Flatten[Map[Position[Var,#]&,Bas]]]],

k=Length[nn],zna1=Flatten[TakeColumns[TT,{-1,-1}]],

Page 131: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

131

zna=Drop[zna1,1],vb=Inner[Rule,Bas,zna,List]};

Join[{�Z�->First[zna1]},vb]];

pr[uu_]:=uu,

Mat=Module[{f1,posli,f2},

{f1=Map[pr,Drop[Mat1[[1]],-1]],

posli=Last[Mat1[[1]]],f2=Insert[f1,posli,-1]};

ReplaceHeldPart[Mat1,f2,1]],

b=Length[Bas],nv=Length[Var],MR=Delete[Mat,1],

fila1=Flatten[Join[Insert[Var,{�Vb.�,�|�,�#�,�|�},1],

{�|�,�Sol.�,�|�,��}]],

fila2=Join[{��,�|�,��,��},Array[#&,nv],{��,��,��,��}],

fila3=Insert[Array[�__�&,nv+7],��,-1],

fila4=Flatten[Join[Insert[

Flatten[Insert[

Mat[[1]],{�Z�,�|�,�0",�|�},1]],�|�,-2],{�|�,�Coc.�}]],

fila5=Array[�__�&,nv+8],

demfi[ii_]:=Module[{ff},

{ff=Join[Insert[Join[{Bas[[ii]],�|�,ii,�|�},

MR[[ii]]],�|�,-2],{�|�,h[ii]}]};ff],

Res=Transpose[Drop[Transpose[Join[{fila1,fila2,fila3,

fila4,fila5},

Table[demfi[i],{i,1,Length[Bas]}]]],-2]];

Print[TableForm[Res,

TableAlignments->{Center,Center},

TableSpacing->{0,2}]];Print[��];

Print[�Valores de las variables básicas:�];

Print[SOLBA[Mat1]];};{{},{Mat,Var,Bas}}];

Page 132: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

132

ver[MM3_]:=ver0[MM3,Var,Bas];

sim[Mat1_,Var_,Bas_,Cocientes_]:=

Module[{pr,Mat,b,nv,MR,fila1,fila2,fila3,fila4,fila5},

{SetOptions[TableForm,TableAlignments->{Center,Center},

TableSpacing->{0,2}];

pr[uu_]:=uu,

Mat=Module[{f1,posli,f2},

{f1=Map[pr,Drop[Mat1[[1]],-1]],posli=Last[Mat1[[1]]],

f2=Insert[f1,posli,-1]};

ReplaceHeldPart[Mat1,f2,1]],

b=Length[Bas],nv=Length[Var],MR=Delete[Mat,1],

fila1=Flatten[Join[Insert[Var,

{�Vb.�,�|�,�#�,�|�},1],{�|�,�Sol.�,�|�,��}]],

fila2=Insert[Array[�__�&,nv+7],��,-1],

fila3=Flatten[Join[Insert[

Flatten[Insert[Mat[[1]],

{�Z�,�|�,��,�|�},1]],�|�,-2],{�|�,�Coc.�}]],

fila4=Join[{��,�|�,�0",��},Array[#&,nv],{��,��,��,��}],

fila5=Array[�__�&,nv+8],

demfi[ii_]:=Module[{ff},

{ff=Join[Insert[Join[{Bas[[ii]],�|�,ii,�|�},MR[[ii]]],

�|�,-2],{�|�,Cocientes[[ii]]}]};ff]};

Join[{fila1,fila2,fila3,fila4,fila5},

Table[demfi[i],{i,1,Length[Bas]}]]

](*El programa �sim� es auxiliar para las funciones

�buscar� e �iterar�.*);

Page 133: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

133

Hallmin[L_,MM_]:=Module[{L1,men1,L2,L3},

{L1=Map[Coefficient[Expand[#],MM]&,L],

men1=Flatten[Position[L1,Min[L1]]],

L2=L[[men1]],L3=Sort[L2,

Coefficient[#1,MM,0]<=Coefficient[#2,MM,0]&]};

First[L3]],

fila1=Drop[MA[[1]],-1],Clear[M];

polnieb=Flatten[Map[Position[Var,#]&,

Complement[Var1,Bas1]]],menor=Hallmin[fila1,M],

cM=Coefficient[Expand[menor],M],

cL=Coefficient[Expand[menor],M,0],

ncol=Flatten[Position[fila1,menor]][[1]],

ulc=Drop[Last[Transpose[MA]],1],

coi=Drop[Transpose[MA][[ncol]],1],

decidir=If[cM>0||cM===0&&cL>=0||Max[coi]<=0,{},menor],

crit[{a_,b_}]:=If[N[b]<0||N[a]<=0,�*�,N[b/a]],

otnosh=Map[crit[#]&,Inner[List,coi,ulc,List]]/.

{�*�->Infinity},

nfil=If[decidir==={}||Max[coi]<=0,{},

Flatten[Position[otnosh,Min[otnosh]]][[1]]],};

Which[decidir==={}&&posib==={},

{{},ver0[MA,Var1,Bas1];Otviet0[MA,Var1,Bas1];

{MA,Var1,Bas1}},

Not[decidir==={}]&&posib==={},

Print[TableForm[intro[sim[MA,Var1,Bas1,

otnosh/.{Infinity->�*�}],

nfil+5,ncol+4]]];

Page 134: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

134

Print[SequenceForm[�Sale �, Bas1[[nfil]],

�; Entra �,Var1[[ncol]],

�. Aplique: �,iterar,�[%#salida,�,

nfil,�,�,ncol,�]�]];{{nfil,ncol},{MA,Var1,Bas1}},

decidir==={}&&Not[posib==={}],

{{},ver0[MA,Var1,Bas1];

{MA,Var1,Bas1}}]];

buscar[LL_]:=Apply[buscar0,LL[[2]]];

iterar0[NN1_,Var1_,Bas1_,i1_,j1_,posib_:{}]:=

Module[{pr,NN,nuevas,uno,nuli},

{SetOptions[$Output,PageWidth->Infinity];

SetOptions[TableForm,TableAlignments->{Center,Center},

TableSpacing->{0,2}];pr[uu_]:=uu,

NN=Module[{f1,posli,f2},

{f1=Map[pr,Drop[NN1[[1]],-1]],posli=Last[NN1[[1]]],

f2=Insert[f1,posli,-1]};

ReplaceHeldPart[NN1,f2,1]],

nuevas=ReplaceHeldPart[Bas1,Hold[Var1[[j1]]],i1],

uno[i_,j_,A_]:=Module[{fn,A1},

{fn=If[A[[i,j]]===0,A[[i]],1/A[[i,j]]*A[[i]]],

A1=ReplaceHeldPart[A,Hold[fn],i]};

Chop[A1,10^-15]],

nuli[i_,j_,A_]:=Module[{a1,f1,A1,A2},

{a1=A[[i,j]],f1[s_]:=-A[[s,j]]*A[[i]]+a1*A[[s]],

A1[1]:=If[i===1,A,ReplaceHeldPart[A,Hold[f1[1]],1]],

Page 135: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

135

A1[kk_]:=A1[kk]=If[kk===i,A1[kk-1],

ReplaceHeldPart[A1[kk-1],Hold[f1[kk]],kk]],

A2=A1[Length[A]]};

Chop[A2,10^-15]];

V1=uno[i1+1,j1,NN],

V2=Map[Expand[#]&,nuli[i1+1,j1,V1],Infinity]};

buscar0[V2,Var1,nuevas,posib]];

iterar[LL_,ii_,jj_]:=iterar0[LL[[2]][[1]],LL[[2]][[2]],

LL[[2]][[3]],ii,jj];

OptAlt[LL_,ii_,jj_,posib_:{{}}]:=iterar0[LL[[2]][[1]],LL[[2]][[2]],LL[[2]][[3]],ii,jj,posib];

sumar0[A0_,Var_,Bas_,i1_,k1_,j1_]:=

Module[{i,j,m1,n1,f1,f2,A1,A2},

{SetOptions[TableForm,TableAlignments-

>{Center,Center},

TableSpacing->{0,2}];

SetOptions[$Output,PageWidth->Infinity];

i=i1+1,j=j1+1,f1=k1*A0[[i]],f2=f1+A0[[j]],

A1=ReplaceHeldPart[A0,Hold[f2],j],

ver0[Chop[A1,10^-15],Var,Bas]};

{{},{A1,Var,Bas}}];

sumar[A0_,i1_,k1_,j1_]:=sumar0[A0[[2]][[1]],

A0[[2]][[2]],A0[[2]][[3]],i1,k1,j1];

Page 136: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

136

Otviet0[M1_,Var_,Bas_]:=Module[

{Art,Vorig,polnieb,pobap,colni,crit,cociente,alt1,

alt,Hallmin,SOLBA,stroka,fila1,pequ,naim,col,stolb,

ulc,nec1},

{Art=Select[Var,Level[#,{-1}][[1]]===R&],

Vorig=Select[Var,Not[Level[#,{-1}][[1]]===R||

Level[#,{-1}][[1]]===S||Level[#,{-1}][[1]]===Y]&],

polnieb=Flatten[Map[Position[Var,#]&,

Complement[Var,Bas]]],pobap=Module[{c2,i3,i4},

{c2=Drop[Last[Transpose[M1]],1],i3=Select[c2,#>0&],

i4=Union[Flatten[Map[Position[c2,#]&,i3]]]};i4],

colni=Module[{Mt,xx},

{Mt=Transpose[M1],

xx[JJ_]:=First[JJ]};

Select[Map[{#,Mt[[#]]}&,

polnieb],Max[#[[2]]]>0&&xx[#[[2]]]===0&]],

crit[{a_,b_}]:=If[N[b]>0&&N[a]>0,b/a,Infinity],

cociente[col_,ul_]:=Module[{col1,ul1,coc,ii,jj},

{col1=Drop[col[[2]],1],ul1=Drop[ul,1],

coc=Map[crit[#]&,Inner[List,col1,ul1,List]],

ii=Flatten[Position[coc,Min[coc]]][[1]],

jj=col[[1]]};

If[Min[coc]===Infinity||colni===

}||ii==={},

{},{ii,jj}]],

alt1=Module[{L1},

{L1=Map[cociente[#,Last[Transpose[M1]]]&,colni]};

Page 137: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

137

If[Select[L1,Not[#==={}]&]==={},{},

Select[L1,Not[#==={}]&]]],

alt=If[alt1==={},{},alt1[[1]]],

Hallmin[L_,MM_]:=Module[{L1,men1,L2,L3},

{L1=Map[Coefficient[Expand[#],MM]&,L],

men1=Flatten[Position[L1,Min[L1]]],

L2=L[[men1]],

L3=Sort[L2,Coefficient[#1,MM,0]<=

Coefficient[#2,MM,0]&]};First[L3]];

SOLBA[TT_]:=Module[{Art,Vorig,int,nn,k,zna,

zna1,vb1,vno,vor,vb,sust},

{Art=Select[Var,Level[#,{-1}][[1]]===R&],

Vorig=Select[Var,Not[Level[#,{-1}][[1]]===R||

Level[#,{-1}][[1]]===S||Level[#,{-1}][[1]]===Y]&],

int=Intersection[Bas,Art],

nn=Delete[Var,Map[{#}&,

Flatten[Map[Position[Var,#]&,Bas]]]],

k=Length[nn],

zna1=Flatten[TakeColumns[TT,{-1,-1}]],

zna=Drop[zna1,1],vb1=Select[Inner[List,Bas,zna,List],

Not[Intersection[#,Vorig]==={}]&],

vno=Map[{#,0}&,Complement[Vorig,Map[#[[1]]&,vb1]]],

vor=Map[#/.{List->Rule}&,Union[vb1,vno]],

vb=Inner[Rule,Bas,zna,List],

sust=Module[{uu1,uu2},

Page 138: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

138

{uu1=Select[Inner[List,Bas,zna,List],

Not[Intersection[#,int]==={}]&],

uu2=Select[uu1,#[[2]]>0&]};uu2]};

If[sust==={},

Join[{�Z�->First[zna1]},vor],

Join[{{}

,{�Z�->First[zna1]},vor]]];

stroka=M1[[1]],fila1=stroka[[polnieb]],

pequ=Hallmin[fila1,M],naim=Limit[pequ,M->Infinity],

col=Flatten[Position[stroka,pequ]][[1]],

stolb=Drop[Transpose[M1][[col]],1],

ulc=Last[Transpose[M1]],

nec1=(Hallmin[Drop[ulc,1],M]/.{M->1})>=0};

If[Not[nec1],Print[�Tabla incorrecta, puesto que en

la última columna\nhay números negativos.�],

Which[naim>0&&Not[SOLBA[M1][[1]]==={}],

Print[��];Print[�CONCLUSION :�];

Print[�Solución óptima :�];

Print[SOLBA[M1]],

naim>0&&SOLBA[M1][[1]]==={}||SOLBA[M1][[1]]==={},

Print[��];Print[�CONCLUSION :�];

Print[�El problema carece de solución factible\npor

cuanto una de las variables artificiales es básica\ny

toma un valor positivo en la tabla símplex final.�],

naim===0&&alt==={},

Print[��];Print[�CONCLUSION :�];

Page 139: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

139

Print[�Solución óptima :�];

Print[SOLBA[M1]],

naim===0&&Not[alt==={}],

Print[��];Print[�CONCLUSION :�];

Print[�Solución óptima :�];

Print[SOLBA[M1]];

If[Length[alt1]===1,

Print[�Existe un óptimo alternativo.�];

Print[SequenceForm[�Para obtenerlo, aplique :�,

Map[SequenceForm[�OptAlt[�,�% #salida,�,#[[1]],�,�,

#[[2]],�]�]&,

alt1]]],

Print[�Existen óptimos alternativos.�];

Print[�Para obtenerlos,

aplique sucesivamente:�];

Print[TableForm[Map[SequenceForm[�OptAlt[�,�%#salida,�,#[[1]],�,�,

#[[2]],�]�]&,

alt1]]];

Print[��]],

naim<0&&Max[stolb]<=0,

Print[��];Print[�CONCLUSION :�];

Print[�LA FUNCION OBJETIVO ES NO ACOTADA.�]]]];

Otviet[M2_]:=Otviet0[M2[[2]][[1]],M2[[2]][[2]],

M2[[2]][[3]]];

Page 140: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

140

Símplex[prob_,obj_,res_]:=Module[

{transf,L,L1,k1,L2,k2,L3,k3,W1,W2,W3,W4,W,BASRESH,

coefob,pierem,Art,holgura,superávit,Vorig,Bas,Var,uravniéniya,AA,mensaje,imprima},

{Clear[s,R,y,M],

transf[expr_,uu_,vv_,ii_]:=Append[ReplaceHeldPart[expr,

Hold[expr[[ii]]+uu],ii],vv],

L=Map[{Expand[#[[1]]],Head[#],#[[2]],Flatten[Position[res,#]][[1]]}&,res],

L1=Select[L,MemberQ[#,LessEqual]&],k1=Length[L1],

L2=Select[L,MemberQ[#,GreaterEqual]&],k2=Length[L2],

L3=Select[L,MemberQ[#,Equal]&],k3=Length[L3],

W1=If[k1===0,{},

Array[transf[L1[[#]],SequenceForm[S,#],

SequenceForm[S,#],1]&,k1]//.{LessEqual->Equal}],

W2=If[k2===0,{},

Array[transf[L2[[#]],-SequenceForm[Y,#]+

SequenceForm[R,#],SequenceForm[R,#],1]&,k2]

//.{GreaterEqual->Equal}],

W3=If[k3===0,{},

Array[transf[L3[[#]],

SequenceForm[R,k2+#],SequenceForm[R,k2+#],1]&,k3]],

W4=Sort[Join[W1,W2,W3],#1[[4]]<=#2[[4]]&],

W=Map[Equal[#[[1]],#[[3]]]&,W4],

BASRESH=Map[{#[[5]],#[[3]]}&,W4],

coefob=Complement[Level[obj,{-1}],

Select[Level[obj,{-1}],NumberQ[N[#]]&]];

pierem=Level[W,{-1}],

Page 141: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

141

Art=Array[SequenceForm[R,#]&,Count[pierem,R]],

holgura=Array[SequenceForm[S,#]&,Count[pierem,S]],

superávit=Array[SequenceForm[Y,#]&,Count[pierem,Y]],

Vorig=Union[ coefob,Complement[pierem,

Union[{R,S,Y},Select[pierem,NumberQ[N[#]]&]]]],

Bas=Map[#[[1]]&,BASRESH],

Var=Union[Join[

coefob,Vorig,superávit,holgura,Art]],

uravniéniya=Which[prob===Max,

Prepend[W,-obj+Apply[Plus,M*Art]==0],

prob===Min,Prepend[W,obj+Apply[Plus,M*Art]==0],True,{}],

AA=Mat[uravniéniya,Var],

mensaje={{�Variables Originales =�,Vorig},

{�Variables de Holgura =�,holgura},

{�Variables Artificiales =�,Art},

{�Variables de Superávit =�,superávit},

{�Variables Básicas =�,Bas}},

imprima=Delete[mensaje,

Map[Flatten,Map[Position[mensaje,#]&,

Select[mensaje,#[[2]]==={}&]]]]};

Print[�Problema Original :�];Print[��];

Which[prob===Max,

Print[�Maximizar :�];Print[��];

Print[SequenceForm[�W� ,�= �,obj]],

prob===Min,

Print[�Minimizar :�];Print[��];

Print[SequenceForm[�W� ,�= �,obj]]];Print[��];

Page 142: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

142

Print[�Sujeta a :�];Print[��];

Print[TableForm[res]];Print[��];

Print[�Forma Estándar del problema :�];Print[��];

Print[�Maximizar :�];Print[��];

Which[prob===Max,

Print[SequenceForm[�Z =�,obj-Apply[Plus,M*Art]]],

prob===Min,

Print[SequenceForm[�Z =�,-obj-Apply[Plus,M*Art]]],

True,{}];Print[��];

Print[�Sujeta a :�];Print[��];

Print[TableForm[W]];Print[��];

Print[�Tipos de Variables : �];Print[��];

Print[TableForm[Map[Apply[SequenceForm,#]&,imprima]]];

Print[��];

Print[�Tabla Símplex inicial:�];Print[��];

ver0[AA,Var,Bas]];

Page 143: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

143

SOLUCION A LOS PROBLEMAS PROPUESTOS

CAPITULO I

1.1. Z es no acotado. Esto significa que la cantidad de dinero a obtener al final del año 5 es

no acotada (crece ilimitadamente), lo cual implica que las condiciones del problema no se

ajustan a la realidad. Deben imponerse otras restricciones.

1.2. El número óptimo de libros a empastar en cartón duro es de 200 y encolado �0�. La

máxima utilidad obtenida será entonces de 800.000 pesos.

1.3. El número óptimo de meseras (mínimo) que permite cumplir los requisitos del restaurante

para atender a sus clientes es de 27. Estas personas se han de distribuir de la siguiente

manera:

4 meseras que comienzan el turno a las 2 a.m.

11 meseras que comienzan el turno a las 6 a.m.

8 meseras que comienzan el turno a las 14 (2 p.m.)

4 meseras que comienzan el turno a las 18 (6 p.m..)

1.4. El número de onzas a mezclar de cada tipo de alimento para optimizar el costo (minimizarlo)

y satisfacer los requerimientos diarios mínimos de proteinas, carbohidratos y grasas de los

Hamster es:

1.88889 onzas de alimento y, 1.18519 onzas de alimento IV.Los alimentos II y III no se

utilizan en la mezcla.El costo mínimo en estas condiciones es 11.11 centavos.

1.5. La persona que heredó los 6000 dólares debe invertir 5000 dólares en el plan de inver-

Page 144: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

144

sión que le propone el primer amigo y 400 horas de trabajo con lo que obtendrá una utilidad

máxima de 4500 dólares.En el segundo plan no debe invertir.

1.6. La compañía manufacturera debe producir 20 unidades del producto 1, 62.5 unidadesdel producto 2 y ninguna unidad del producto 3. La utilidad máxima obtenida es de 2250pesos.

CAPITULO II

2.1. La pequeña firma debe correr el proceso 1 durante 33.333 horas y el proceso 2 durante16.6667 horas para combinar cada uno de los dos productos: fluido para marcha y fluidopara encendedor, con lo que obtendrá una utilidad máxima de 533,333 dólares.

2.2. a) Z* =Z

max=20 con x*

1=2 y x*

2=3.5

b) 56ZZ min ==∗ con 4444.0x1 =∗ y 77778.5x2 =∗ . c) Z* =Z

min=12.727272 con x*

1=1.0909 y x*

2=3.6363

2.3. Para la dieta deben comprarse 5 libras del alimento F1 y 1 libra del alimento F2 con loque se obtendrá el costo mínimo de 7.8 pesos y a la vez se satisfacen los requerimientosmínimos de vitaminas en la dieta.

2.8. Para pintar la casa cumpliendo los requisitos exigidos a un mínimo costo el propietariodebe comprar sólo 0.7 galones de pintura I, obteniendo un costo mínimo de 4.2 dólares. Nohay necesidad de mezclar.

2.9. La empresa debe contratar sólo 4 anuncios en TV a la semana, lo cual agota su presu-puesto máximo de 16.000 dólares y logra maximizar el número posible de clientes potencia-

les.

Page 145: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

145

CAPITULO III

3.3. 8235.1ZZ max ==∗ con 47059.0x1 =∗ y 35294.1x2 =∗ .

3.4. Z* =Zmax

=5 con x*1=2 , x*

2=0 y x*

3=1

3.5. 4ZZ max ==∗ con 0xx 31 == ∗∗ , 2x2 =∗ .

3.6. Z* =Zmin

=8 con x*1=8 , x*

2=0

3.7. Z* =Zmin

= -46.6667 con x*1=0 , x*

2=13.333 , x*

3=0 y x*

4=30

3.8. El plan óptimo de inversión del millón de pesos con el fin de maximizar la suma a recibir

al final del año 3 es: Invertir al inicio del primer año 1�000.000 de pesos en el plan A e

invertir al comienzo del segundo año $ 1�700.000 en el plan B. En las demás fechas no

se debe invertir en ninguno de los dos planes. Con lo anterior se logra obtener al final del

año 3 un máximo de $ 5�100.000.

Page 146: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

146

Page 147: Apuntes Introduccion A La Programacion Lineal

INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL

147

BIBLIOGRAFIA

[1] Taha, Hamdy A. Investigación de Operaciones. Alfaomega, Segunda Edición.

[2] Davis K. Roscoe / Mc Keown Patrick G. Modelos Cuantitativos para Administración.

Grupo Editorial Iberoamérica.

[3] Hillier F.S., Lieberman G.J. Introducción a la Investigación de Operaciones. Quinta

Edición, Editorial Mc Graw Hill, 1991.

[4] Varela, Jaime E. Introducción a la Investigación de Operaciones. Fondo Educativo

Interamericano.

[5] G.D. Eppen, F.J. Gould. Investigación de Operaciones en la Ciencia Administrativa.

Prentice Hall Hispanoamericana S.A.

[6] Alpha C., Chiang. Métodos Fundamentales de Economía Matemática. 3a. Edición,

Editorial McGraw Hill.

[7] Bronson, Richard. Investigación de Operaciones. Teoría y 310 Problemas Resueltos.

Serie Schaum, Editorial McGraw Hill.

[8] Wolfram, Stephen. Mathematica. A system for doing mathematics by computer. Second

Edition, Addison Wesley, 1992.

Page 148: Apuntes Introduccion A La Programacion Lineal

UNIVERSIDAD DE MANIZALES

148