Sunteți pe pagina 1din 214

Ingeniería en Organización Industrial

INVESTIGACIÓN
OPERATIVA
Profesor: Manuel Muñoz Márquez
Curso 2010 -11

Autores:
Juan Carlos Páez Rodríguez
Rafael Alberto Oliva Orbello
Ángel Rodríguez Poch

Versión: 12/09/11
Licencia

Se concede permiso para copiar, distribuir y/o modificar este documento bajo
los términos de la Licencia de Documentación Libre de GNU, Versión 1.2 o cualquier
otra versión posterior publicada por la Free Software Foundation.
Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation.
ÍNDICE
Tema 1: Introducción A La Investigación Operativa Pag.5
Tema 2: Programación Lineal Pag.7
2.1- Formulación De Problemas De Programación Lineal. Pag.7
2.1.1- Cambio A Formato Estándar.
2.1.2- Hipótesis Que Debe Cumplir Un Problema Para Que Se Pueda
Planear Como Un PPL.
2.1.3- Puntos Factibles.
2.2- Resolución Gráfica De Problemas. Pag.11
2.2.1- Tipos De Problemas Que Se Pueden Presentar En Función De Su
Solución.
2.2.2- ¿Cómo Son Las Soluciones?
2.2.3- Geometría De Los Conjuntos Convexos.
2.3- Método Simplex. Pag.25
2.3.1- Conceptos Previos.
2.3.2- Método De Resolución Del Método Simplex.
2.4- Método Simplex En Formato Tabla. Pag.27
2.4.1- Metodología Para El Método Simplex.
2.4.2- Test De Optimalidad.
2.4.3- Cambio De Base.
2.5- Métodos De Generación De Una Solución Básica Factible Inicial. Pag.43
2.5.1- Método De Las Dos Fases.
2.5.2- Método De La “M” Grande.
2.5.3- Soluciones Múltiples.
2.5.4- Degeneración Y Ciclado.
2.6- Dualidad. Pag.57
2.6.2- Teorema De La Dualidad Débil.
2.6.3- Teorema De La Dualidad Fuerte.
2.6.4- Lectura de la solución dual en la tabla óptima del problema primal.
2.6.5- Interpretación Económica De Las Variables Duales.
2.6.6- Condiciones De Holgura Complementaria.
2.7- Método Simplex Dual. Pag.70
2.7.1- Método De La Restricción Artificial.
2.8- Sensibilidad. Pag.84
2.8.1- Análisis de Sensibilidad en el Vector de Costes.
2.8.2- Análisis de Sensibilidad en el Vector de Recursos.
2.8.3- Adición de Variables.
2.8.4- Adición de Restricciones.
2.8.5- Análisis Paramétrico de la Sensibilidad.
2.8.5.1- Vector De Costos.
2.8.5.2- Vector Del Lado Derecho.
2.8.6- Análisis De Tolerancia.
Pag.99
Tema 3: Programación Lineal Entera
3.1- Problemas De Asignación Y Transporte. Pag.99
3.1.1- Formato Tabla Para Problemas De Transporte.
3.2- Métodos Generales De Resolución Pag.104
3.2.1- Métodos De Generación De Una Solución Básica Factible.
3.2.1.1- Método De La Esquina Noroeste
3.2.1.2- Método De Vogel
3.2.2- Condiciones De Optimalidad Para Un Problema De Transporte.
3.2.3- Método De Transporte.
3.2.3- Problemas De Transbordo.
3.2.4- Problemas De Asignación.
3.2.4.1.- Algoritmo Húngaro Para Problemas De Asignación.
3.2.5- Algoritmo General Para Problemas De Programación Lineal Entera.

ÍNDICE DE PROBLEMAS
Número. Tema Página
2.1.g Lista 2010-2011 Resolución gráfica Pág. 15
9.69 Lista 2010-2011 Método Simplex Pág. 36
3.1.b Lista 2010-2011 Método Simplex Pág. 38
2.1.c Lista 2010-2011 Método Simplex Pág. 41
9.2.2 Lista 2010-2011 Método de la “M Grande” Pág. 49
9.6.2 Lista 2010-2011 Método de la “M Grande” Pág. 51
4.2.a. Lista 2010-2011 Método Simplex-Dual Pág. 72
4.2.b. Lista 2010-2011 Método Simplex-Dual Pág. 74
4.2.c. Lista 2010-2011 Método Simplex-Dual y restricción artificial Pág. 78
5.6. Lista 2010-2011 Método Simplex-Dual y análisis sensibilidad Pág. 81
6.1. Lista 2010-2011 Transbordo - Método de Vogel Pág. 138
6.2. Lista 2010-2011 Transporte - Método de Vogel Pág. 151
8.5.4. Lista 2010-2011 Transporte - Método de Vogel – Algoritmo Húngaro Pág. 158

Exámenes resueltos
Nº2 Febrero-2011 Método de la “M Grande” y análisis sensibilidad Pág. 170
Nº1 Ordenador Febrero-2011 Método Simplex Pág. 187
Nº2 Ordenador Febrero-2011 Transporte Pág. 190
Nº1 Marzo-2011 Método de la “M Grande” y análisis sensibilidad Pág. 201
Nº2 Marzo-2011 Transbordo Pág. 210
Nº1 Junio-2011 Método Simplex y Sensibilidad Pág. 213
Nº2 Junio-2011 Asignación. Pág. 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 1 – Introducción a la Investigación Operativa.

TEMA 1: INTRODUCCIÓN A LA INVESTIGACIÓN


OPERATIVA
El término Investigación Operativa se debe en 1938 a P.M.S. Blackett: también
se le denomina investigación de operaciones.

La Investigación Operativa (I.O.) es el resultado del método científico aplicado a


un tipo de problema. En el siglo III a.C. Arquímedes puso en práctica la I.O. para
ayudar a la ciudad de Siracusa a librarse del cerco que la rodeaba. No es hasta la
revolución industrial hasta que empieza a aparecer la I.O. moderna y con la aparición de
los ordenadores surge la verdadera I.O.

En el libro F.Hillier y G.Lieberman se define la I.O. como “la ciencia que trata
de la toma de decisiones y el modelado de sistemas tanto determinísticos como
probabilísticos originados en la vida real”.

Toma de decisiones: Resolución de un problema.

Modelado: Construcción de un conjunto de funciones que nos permita


evaluar el impacto en la vida real. Es una aproximación al sistema, no es el sistema real.

Sistemas determinísticos y probabilísticos: Estudios estadísticos sobre el


sistema.

Vida real: La I.O. se preocupa de los problemas reales de la vida real y


pretende resolverlos.

METODOLOGÍA DE LA I.O.: Se puede dividir en varias fases:

1.- Formulación y/o modelización del problema: Se toma conciencia de la


existencia del problema y que es lo que se pretende conseguir con la resolución del
problema. Ese problema se tiene que cuantificar, es decir, medir las entradas y salidas
del sistema y las reglas que comparen dichas entradas con las salidas. Los responsables
de llevar a cabo esta etapa son: el decisor, el investigador operativo y los técnicos o
ingenieros (éstos últimos son los conocedores de la técnica en cuestión). No se puede
desarrollar un modelo ni muy simple ni muy complejo para resolver el problema, habrá
que buscar un equilibrio entre ambos.

2.- Resolver el problema: Si el sistema es complejo lo realiza el Investigador


Operativo. En esta fase se puede detectar que el problema no está bien planteado; si el
proceso de resolución no termina con éxito se debe volver a la fase 1.

3.- Validación: Una vez obtenida una solución habrá que cuestionar si ésta es
razonable o no. En esta etapa el Decisor puede tener en cuenta algunos aspectos que no
hayan sido tenido en cuenta en el modelo y que no son cuantificables. Si no resulta
viable se regresaría a la fase 1.

Página 5 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 1 – Introducción a la Investigación Operativa.

4.- Implementación: Se traslada al sistema real y se comprueba si funciona o no


la solución. Puede ocurrir que el decisor no esté conforme con el funcionamiento de la
solución, por lo que se deberá volver a la fase 1.

Nota: En esta asignatura sólo se analizarán las fases 1 y 2.

Ejemplo: Antiguamente en un banco con 5 ventanillas había 5 colas,


actualmente sólo hay una ventanilla y una cola. Se comprobó que con una sola
ventanilla se atiende al mismo número de personas que cuando había 5.

Página 6 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

TEMA 2: PROGRAMACIÓN LINEAL


La Programación Lineal se desarrolló en 1947 cuando Dantzing desarrolló el
Método Simplex; considerado como el método principal para resolver la programación
lineal.

2.1 - FORMULACIÓN DE PROBLEMAS DE


PROGRAMACIÓN LINEAL.

Definición: Un Problema De Programación Lineal (P.P.L.) es un


problema de optimización con una función objetivo lineal sujeto a un número finito de
igualdades o desigualdades lineales.

Definición: Un P.P.L. está en Formato Estándar si es de la forma:

Minimizar/maximizar: c1x1 +....+ cnxn

Sujeto a condiciones: a11x1 + a12x2 + ...+ a1nxn = b1


a21x1 + a22x2 + ...+ a2nxn = b2

am1x1 + am2x2 + ...+ am nxn = bm
x1,x2,..,xn  0 con b1,b2,…,bm  0

Definición: Un PPL está en Formato Matricial si es de la forma:

( ) ( ) ( ) ( )

Siendo:

X  n
C  n
A  m x n
B  m

Minimizar/maximizar: CT X : Función objetivo (Z = CTX)

Sujeto a condiciones: AX = B
X  0 con B 0

Siendo:

X→ Vector de variables de decisiones, representa las decisiones a tomar.


C→ Vector de coeficiente o vector costos, representa los costes unitarios de
producción asociados a las variables de decisiones.
Página 7 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

B→ Vector de recursos o vector del lado derecho, representa la disponibilidad.


A→ Matriz de coeficientes tecnológicos, varía en función de la tecnología.

2.1.1- Cambio a Formato Estándar.


PASO 1:

Si b1 es negativo, tenemos que multiplicar por (-1) los dos lados de la


desigualdad y cambiar el sentido de la desigualdad:

a11x1 + a12x2 +...+ a1nxn  b1 < 0 → -a11x1 -a12x2 - ...- a1nxn  -(b1)
PASO 2:

En el caso de no tratarse de una igualdad sino de una desigualdad, deberemos


transformarla añadiendo una variable (variable de holgura o variable de exceso) en el
miembro izquierdo. Sumando si la desigualdad es del tipo  Y restando si es del tipo  :

a11x1 + a12x2 +...+ a1nxn  b1 → a11x1 + a12x2 + ...+ a1nxn + s1 = b1, siendo s1  0

a11x1 + a12x2 +...+ a1nxn  b1 → a11x1 + a12x2 + ...+ a1nxn - s1 = b1, siendo s1  0
PASO 3:

Si existe alguna variable xi  0 se hace el cambio de variable: ̅

PASO 4:

Si xi es libre (no tiene ninguna restricción) sustituir:

xi = xi+ - xi-, donde xi+, xi-  0

EJEMPLO: Pasar el siguiente problema a formato estándar.

MIN: 2x1 +3x2 +9x3 - x4 (1)


S.A.: x1 - x2 + 4x3  17 (2)
x1 + x2 + x3 + x4 =100 (3)
3x1 + 2x2 + 9x3 - 8x4  5 (4)
-x1 + x2 - x3 - 4x4  -3 (5)
x1  0; x2  0; x3 libre; x4  0

Paso 1: Verificamos la condición de vector recursos de b1, b2,...., bm  0.

Como b4 < 0 (ecuación (5) )→ Multiplicamos por (-1) para que b4  0:

-(-x1 + x2 - x3 - 4x4 )  -(-3) → x1 - x2 + x3 + 4x4  3

Página 8 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Paso 2: La 1ª restricción (ecuación (2)) es del tipo “  “: queremos una


restricción del tipo “=”.

Añadimos una variable de holgura en el miembro izquierdo (sumando):

x1 - x2 + 4x3 + s1 =17, s1  0

s1 : variable de holgura correspondiente a la 1ª restricción (ecuación (2) ).

La 3ª restricción es del tipo “  “ pero como queremos una restricción del tipo
“=”; añadimos una variable de exceso en el miembro izquierdo (restando):

3x1 + 2x2 + 9x3 -8x4 - s3 =5, s3  0

s3 : variable de exceso correspondiente a la 3ª restricción (ecuación (4) )

La 4ª restricción es del tipo “  “: queremos una restricción del tipo “=”.


Añadimos una variable de holgura en el miembro izquierdo (sumando):

x1 - x2 + x3 + 4x4 + s4 = 3, s4  0

s4 : variable de exceso correspondiente a la 4ª restricción (ecuación (5) )

Paso 3: Se debe cumplir x1, x2 , ... ,xn  0

Como x1  0: se hace el cambio de variable → ̅̅̅

Paso 4: Para el caso de variables libres deberemos realizar el cambio


siguiente:

x3 = x3+ - x3- ; x3+, x3-  0

Por lo que nuestro problema de programación lineal en formato estándar


quedaría así:

Min: ̅̅̅
S.a: ̅̅̅
̅̅̅
̅̅̅
̅̅̅
̅̅̅

Página 9 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Ejemplos típicos de problemas P.P.L.:

Problema de la dieta: En el proceso de preparación de una dieta, hay que


tener en cuenta la mezcla de ingredientes para obtener un menú con un % de grasa, etc...
El objetivo será decidir qué cantidad se debe usar de cada ingrediente, teniendo en
cuenta las restricciones.

Problema de transporte: Sea una mercancía a distribuir por una serie de


puntos. Los transportes llevan consigo unos costos: el objetivo será llevar los
transportes al mínimo costo, con una serie de restricciones.

Problema de producción: El problema radica en cuánto he de producir en


cada periodo para satisfacer la demanda, teniendo en cuenta las restricciones impuestas.

Problema de almacenamiento e inventario: Ligado al problema de


producción, cuando se produce por encima de la demanda para conseguir que los costos
sean los menores posibles.

2.1.2 - Hipótesis que debe cumplir un problema para que se


pueda planear como un P.P.L.
Aditividad: Los efectos producidos por cada variable se suman.

Proporcionalidad: Los efectos producidos por cada variable son


proporcionales a su valor.

Divisibilidad: Las variables no están cuantificadas (los valores de las


variables son divisibles, no existe una unidad mínima indivisible).

2.1.3 - Puntos factibles.

Definición: Un punto Xn es un Punto Factible si verifica todas las


restricciones de un problema de programación lineal (PPL).

Definición: El conjunto formado por todos los puntos factibles,


representados por , se denomina Conjunto Factible o Región Factible.

Definición: Un punto Xn factible es una Solución (Óptima) del PPL


si no existe otro punto factible con mejor valor objetivo. Por ejemplo en el caso de
querer minimizar, si no existe otro punto factible tal que: C´X < C´X*

Página 10 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.2 - RESOLUCIÓN GRÁFICA DE PROBLEMAS.

EJEMPLO: Se fabrican dos tipos de juguetes, soldados y trenes: un soldado se vende


por 27 u.m. y utiliza 10 unidades de materia prima. Un tren se vende por 21 u.m. y
utiliza 9 unidades de materia prima (el costo de materia prima es 9). Cada tren eleva el
coste de producción en 10 unidades y cada soldado en 14 unidades. Cada juguete
necesita un ensamblado y una acabado: el tren necesita 1 hora de ensamblado y 1 hora
de acabado, y el soldado 1 hora de ensamblado y 2 horas de acabado. Se dispone de 80
horas de ensamblado y 100 horas de acabado semanales y se pueden vender como
máximo 40 soldados semanales. Formular el problema.

En primer lugar representamos las variables en juego, que en nuestro caso será:

s → número de soldados a producir semanalmente.


t → número de trenes a producir semanalmente.

Nuestro objetivo es tratar de maximizar el beneficio neto. Según los datos del
problema:

Max [(27 – 10 – 14) ∙ s] + [21 – 9 – 10) ∙ t]  Max 3s+2t

Las restricciones que nos obliga el problema son:

En cuanto al ensamblado: (1h ∙ s) + (1h. ∙ t)≤80 h/semana  s+t≤80

En cuanto al acabado: (2h ∙ s) + (1h. ∙ t)≤100 h/semana  2s+t≤100

Límite máximo de ventas de soldados semanales  s≤40

Las cantidades deben ser positivas  s≥0 ; t≥0

A continuación plasmamos las tres ecuaciones en sus gráficas. En realidad las


ecuaciones definen un semiplano, pero para facilitar su trazado trazaremos la línea de
referencia y después averiguaremos si el plano a seleccionar es el que está por debajo de
esa línea o por encima. Para ello basta con sustituir algún punto de esa zona en la
ecuación.

 s+t≤80 →s+t=80

Para dibujar la línea calculamos dos puntos, por ejemplo s=0 y t=0

s+t=80→para s=0 →0+t=80 →t=80→ luego el punto es (s,t)→(0,80)

s+t=80→para t=0 →s+0=80 →s=80→ luego el punto es (s,t)→(80,0)

Para verificar con cuál de los dos lados nos quedamos sustituimos el punto por
ejemplo (0,0). s+t≤80→0+0≤80 → 0≤80 como la desigualdad es correcta, el punto (0,0)
pertenece al semiplano.

Página 11 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

A continuación dibujamos el semiplano 2s+t≤100

2s+t≤100→ 2s+t=100

Para dibujar la línea calculamos dos puntos, por ejemplo s=0 y t=0

2s+t=100→para s=0 →2x0+t=100 →t=100→ luego el punto es (s,t)→(0,100)

2s+t=100→para t=0 →2s+0=100 →s=100/2=50 → luego el punto es


(s,t)→(50,0)

Para verificar con cuál de los dos lados nos quedamos sustituimos el punto por
ejemplo (0,0). 2s+t≤100→0+0≤100 → 0≤100 como la desigualdad es correcta, el punto
(0,0) pertenece al semiplano.

Página 12 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

 El semiplano s≤40 es una línea vertical en el punto s=40 y toda su izquierda.

Si unimos las tres gráficas:

La intersección de las dos rectas es un punto importante que utilizaremos


posteriormente. Para el cálculo de este punto es tan fácil como resolver el sistema de
dos ecuaciones con dos incógnitas de las dos rectas:

2s+t=100
s+t=80
s=80-t →2s+t=100 →2*(80-t)+t=100
→160-2t+t=100 →160-100=2t-t→t=60→s=20 (20,60)

Página 13 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

La función objetivo (Z) es Z=3s+2t. Podemos igualar esta función a un valor


arbitrario, por ejemplo el 60 que es divisible entre 2 y 3 para que obtengamos números
enteros y podremos obtener una línea tal como:

Para Z=60→ 3s+2t=60 Calculamos dos puntos de la recta, por ejemplo s=0 y t=0

3s+2t=60→para s=0 →3x0+2t=60 →t=60/2=30→ luego el punto es (s,t)→(0,30)

3s+2t=60→para t=0 →3s+2x0=60 →s=60/3=20→ luego el punto es (s,t)→(20,0)

Variando el valor de Z iremos variando las rectas, pero todas ellas paralelas. El
punto que maximiza la función es aquella línea que pasa por (20,60)

Luego el punto que maximiza la producción es el punto de unión de las dos


rectas (2s+t≤100) y (s+t≤80)

Página 14 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

s*=20 ud.
t*=60ud.
Z*=180 (Z=3s+2t→Z=3x20+2x60=180)

Luego la producción que maximiza los recursos sería la de producir 20ud. de


soldados y 60ud. de trenes a la semana.

EJEMPLO: Resolver gráficamente el siguiente problema de programación


lineal (problema 2.1.g. de la relación de problemas propuesta por el
profesor):

max -4x1 + x2
s.a 2x1 + x2 ≥ 2
x1- 3x2≤15
x1 + 4x2 ≥ 8
x ≥0

SOLUCIÓN:

En primer lugar plasmamos las tres ecuaciones en sus gráficas. En realidad las
ecuaciones definen un semiplano, pero para facilitar su trazado trazaremos la línea de
referencia y después averiguaremos si el plano a seleccionar es el que está por debajo de
esa línea o por encima. Para ello basta con sustituir algún punto de esa zona en la
ecuación.

 2x1 + x2 ≥ 2 → 2x1 + x2 = 2

Para dibujar la línea calculamos dos puntos, por ejemplo x1=0 y x2=0

2x1 + x2 = 2→para x1=0 →2∙0+ x2=2 → x2=2→ luego el punto es (x1,x2)→(0,2)

2x1 + x2 = 2→para x2=0 →2∙ x1+ 0=2 → x1=2/2=1→ luego el punto es (x1,x2)→(1,0)

Para verificar con cuál de los dos lados nos quedamos sustituimos el punto por
ejemplo (0,0). 2x1 + x2 ≥ 2 →2∙0+0 ≥ 2→ 0≥2 como la desigualdad NO es correcta, el
punto (0,0) NO pertenece al semiplano; seleccionamos la zona opuesta:

Página 15 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

 x1- 3x2 ≤ 15 → x1- 3x2 = 15

Para dibujar la línea calculamos dos puntos, por ejemplo x1=0 y x2=0

x1- 3x2 = 15→para x1=0 →0 - 3x2=15 →x2=-15/3=-5→ luego el punto es (x1,x2)→(0,-5)

x1- 3x2 = 15→para x2=0 →x1 - 3∙0=15 → x1=15→ luego el punto es (x1,x2)→(15,0)

Para verificar con cuál de los dos lados nos quedamos sustituimos el punto por
ejemplo (0,0). x1- 3x2 ≤ 15 →0-3∙0≤ 15→ 0≥15 como la desigualdad es correcta, el
punto (0,0) pertenece al semiplano:

Página 16 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

 x1 + 4x2 ≥ 8 → x1 + 4x2 = 8

Para dibujar la línea calculamos dos puntos, por ejemplo x1=0 y x2=0

x1 + 4x2 = 8→para x1=0 →0 +4x2=8 →x2=8/4=2→ luego el punto es (x1,x2)→(0,2)

x1 + 4x2 = 8→para x2=0 →x1 - 4∙0=8 → x1=8→ luego el punto es (x1,x2)→(8,0)

Para verificar con cuál de los dos lados nos quedamos sustituimos el punto por
ejemplo (0,0). x1 + 4x2 ≥ 8 →0+4∙0≥ 8→ 0≥8 como la desigualdad NO es correcta, el
punto (0,0) NO pertenece al semiplano, seleccionamos el semiplano contrario:

El conjunto formado por todos los puntos factibles, representados por , se denomina
Conjunto Factible o Región Factible.

Página 17 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Página 18 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

La función objetivo (Z) es Z= -4x1 + x2. Podemos igualar esta función a un valor
arbitrario, por ejemplo el 4 que es divisible entre 4 y 1 para que obtengamos números
enteros y podremos obtener una línea tal como:

Para Z=4→ -4x1 + x2=4 Calculamos dos puntos de la recta, por ejemplo x1=0 y x2=0

-4x1 + x2=4→para x1=0 →-4∙0+ x2=4→ x2=4→ luego el punto es (x1,x2)→(0,4)

-4x1+x2=4→para x2=0 →-4x1 + 0=4→ x1=-4/4=-1→ luego el punto es (x1,x2)→(-1,0)

Variando el valor de Z iremos moviendo las rectas, pero todas ellas paralelas.
Aquella que toque a la región factible y nos de un valor de Z mayor será la solución
óptima:

Como podemos observar la función objetivo se puede ir incrementando


infinitamente su valor que estará dentro de la región factible, es decir se trata de un
problema ilimitado.

Página 19 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.2.1- Tipos de problemas que se pueden presentar en función de


su solución.
Problema con solución Óptima Única: El problema se representa y tiene
una solución única.
Problema con soluciones óptimas alternativas: El problema se
representa y tiene infinitas soluciones óptimas (un segmento). Este tipo de problema
aparece cuando la función objetivo es paralela a una de las restricciones.

Sea el P.P.L: Max z = 6x1 + 10x2


s.a: 5x1+2x2 < 10
3x1 + 5x2< 15
Xi > 0

Problema Infactible: La Región Óptima R está vacía.

Sea el P.P.L: Min z = x 1 + x2


s.a: x1 + x2 < 1
4x1 +2 x2 > 6
xi > 0

Página 20 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Problema no acotado o ilimitado: No está limitado el valor objetivo


dentro de un conjunto factible; la función objetivo puede mejorar indefinidamente. El
problema real no puede ser ilimitado, el que yo formulo si porque se me puede olvidar
alguna restricción.

Por ejemplo: Maximizar X1


X1
s.a: X1 ,X2  0
R
X2

NOTA: Si tuviésemos que minimizar en vez de maximizar, este problema


sería con solución óptima finita (0,0), pero con región factible ilimitada.

2.2.2- ¿Cómo son las soluciones?

Si Z = cte: todos los puntos de la región factible pueden


ser solución.

Si Z  cte: los puntos del interior de R no son óptimos.

La única forma de que el punto interior de la arista sea


solución óptima es que todos los puntos de la arista sean
solución óptima; esto sólo ocurre en el caso de que Z sea
paralela a la arista. En caso de que Z no sea paralela a la arista,
no serán soluciones óptimas ni en los puntos del interior de la
Página 21 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

arista ni uno de los extremos de ésta. De aquí se concluye que los problemas con
solución óptima finita o tienen solución única o tienen infinitas soluciones, pero nunca
2, 3, 4....

Restricciones Activas: Son aquellas a las que pertenecen el punto factible (en
el caso del ejemplo las restricciones s + t  80, 2s + t  100 son restricciones activas). Si
se eliminaran, modifican la solución

Restricciones No Activas: Son aquellas a las que no pertenecen el punto


factible (en el caso del ejemplo la restricción s  40 es una restricción no activa).
Si se eliminan la solución no cambia.

2.2.3- Geometría de los conjuntos convexos.

Definición: Un conjunto Sn se dice Conjunto Convexo si x,y S y


[0,1] se tiene que: x +(1-)y  S.

NO CONVEXO CONVEXO CONVEXO CONVEXO NO CONVEXO

(circunferencia)
n
Definición alternativa: Un conjunto S se dice Conjunto Convexo si
x,y S se tiene [x,y] S, donde S es el segmento de extremos x e y (un conjunto es
convexo si todos los puntos contenidos en el segmento, que une los puntos x e y
también pertenece al conjunto.

Propiedad: La intersección de conjuntos convexos es un conjunto convexo:

Sea S=  Si con Si convexo i


iI
Sean x,yS =  Si → x,ySi iI
iI
→ [x,y]  Si iI (por definición de convexidad)

→ [x,y]   Si = S (S es convexo)
iI

Página 22 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Definición: Un conjunto definido por un número finito de igualdades o


desigualdades lineales es un Conjunto Convexo. El conjunto definido por una igualdad
lineal es convexo.

Sea A= {x1, x2,...,xn}, tal que 1 x1+ ... + n xn= 

Sea x1, x2 A → 1 x11+ ... + n xn1=  (*)


Multiplico por el paréntesis y
sumo ambas expresiones
1 x1 + ... +
2
n xn2=  (* (1-))

Sea   [0,1] → 1 [x11+ (1-) x12 ] + ...+ n [xn1+ (1-) xn2 ] =  + (1-)  = 

Si yi = x11+ (1-) x12 → yA

Definición: La región factible de un PPL es un conjunto convexo, ya que


está definido por un número finito de igualdades o desigualdades.

Definición: Un conjunto definido por un número finito de igualdades o


desigualdades lineales se dice Politopo.

Definición: Un Politopo se dice Poliedro si es acotado.

Definición: Un vector “d” se dice Dirección De Ilimitación de un


conjunto convexo “S”, si x0 S, + se tiene que: x0 +d S (semirrecta con
origen en x0 y dirección d). Ningún conjunto acotado puede ser ilimitado. Para que un
conjunto tenga dirección de ilimitación debe contener semirrectas, o sea, debe ser
ilimitado.

Dentro de los politopos están los acotados y los no acotados. En la práctica, no


pueden existir PPL infinitos (que no estén acotados). Si ocurre esto, hay que obtener
alguna pista de la restricción que se nos ha escapado, una dirección de ilimitación.

DIRECCIONES DE
ILIMITACIÓN DIRECCIONES DE
ILIMITACIÓN

SÓLO TIENE UNA


DIRECCIÓN DE
ILIMITACIÓN, YA QUE
LA PARÁBOLA NO
TIENE ASÍNTOTAS

Página 23 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Definición: Una Dirección De Ilimitación se dice Extrema si no se puede


obtener como combinación con coeficientes positivos de dos direcciones de ilimitación
distintas. No es suma de otras dos.

DIRECCIONES DE
ILIMITACIÓN EXTREMA

Definición: Un punto de un conjunto convexo se dice Punto Extremo del


conjunto si no existen X1X2 del conjunto y (0,1) tal que: x0 =x1 +(1-)x2. Es un
extremo si no podemos encontrar un segmento del conjunto que tenga el punto en su
interior.

NO TIENE PUNTOS
EXTREMOS

PUNTOS
SEMIPLANO
EXTREMOS ABIERTO, NO
TIENE PUNTOS
EXTREMOS
PUNTOS

EXTREMOS

PUNTOS

EXTREMOS

Página 24 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.3- MÉTODO SIMPLEX.

2.3.1- CONCEPTOS PREVIOS.

Supongamos que queremos: Min: C´X


s.a: A*X = b
X0

Para ello tenemos que construir una matriz Am*n , donde n es el número de
incógnitas y m el número de ecuaciones:
Estas dos opciones o bien
n < m: Sistema incompatible o sistema compatible determinado tienen solución única o bien
no tienen solución, por lo que
n = m: Sistema compatible determinado no interesan para PPL.

n > m: rg (A) = m: las ecuaciones son linealmente independientes (sistema


compatible indeterminado con infinitas soluciones). De todas las posibles soluciones
sólo nos interesan algunas de ellas: Soluciones Básicas.

Definición: Si a partir de la matriz A se seleccionan m-columnas


linealmente independientes para formar la matriz B, la solución del sistema de
ecuaciones BxXb=b se dice Solución Básica.

Definición: Una solución básica se dice Básica Factible si es básica y es


factible.

Definición: Un punto factible es un punto extremo de la región factible si


y solo si es una solución básica factible.

Definición: Una solución básica factible se dice Degenerada Factible si


alguna de las variables básicas tiene valor nulo.

TEOREMA FUNDAMENTAL DE PPL:

1.- Si existe un punto factible, existe una solución básica factible y por tanto
un punto extremo.

2.- Si existe solución óptima, entonces existe una solución básica factible
óptima y por tanto un punto extremo.

2.3.2- MÉTODO DE RESOLUCIÓN DEL MÉTODO SIMPLEX.

1.- Formar todas las posibles bases y calcular las soluciones de los
respectivos sistemas de ecuaciones, o calcular todos los puntos extremos y quedarme
con los factibles.

2.- Rechazar las soluciones no factibles.

Página 25 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

3.- Evaluar en todos los puntos.

4.- Elegir el mejor.

NOTA: Inconveniente: Tener un problema con n=100 variables y m=30


restricciones. El número de bases que podemos tener es:

( )

Este método no es muy viable porque supone una gran cantidad de tiempo. El
método SIMPLEX no evalúa todas las posibles soluciones, elimina grandes grupos
mediante condiciones, con lo que ahorra tiempo y cálculos.

Página 26 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.4- MÉTODO SIMPLEX EN FORMATO TABLA.

Lo veremos con un ejemplo. Supongamos que tenemos que resolver el


problema:

Max 3s + 2t
Sujeto a s + t ≤ 80
2s + t ≤ 100
s ≤ 40
s, t ≥ 0

Paso 1: poner el problema en formato estándar, por lo que el lado derecho tiene
que ser positivo, las restricciones tienen que ser igualdades y las variables tienen que ser
≥ 0:

Max 3s + 2t
Sujeto a s + t + s1 = 80
2s + t + s2 = 100
s + s3 = 40
s, t, s1, s2, s3 ≥ 0

Paso 2: añadimos la ecuación de la función objetivo (Z).


3s + 2t=Z→-3s - 2t+Z=0:

s+ t+ s1+ =80
2s+ t+ s2 =100
s+ s3 =40
-3s2+ -2t+ Z =0

s t s1 s2 s3 z
s1 1 1 1 0 0 0 80
s2 2 1 0 1 0 0 100
s3 1 0 0 0 1 0 40
-3 -2 0 0 0 1 0

Primera iteración:

Paso 3: Tengo que buscar soluciones básicas factibles, por lo que tengo que
considerar 3 ecuaciones con 3 variables. s1, s2, s3 son soluciones básicas, el resto se
consideran no básicas y por tanto igualadas a cero, el sistema de ecuaciones resultaría:

s1 = 80
s2 = 100
s3 = 40

Por eso las coloco a la izquierda de la tabla. s y t no son soluciones básicas, pero
nos interesa que sí lo sean. Si nos fijamos en la última fila y hacemos s y t = 0, tenemos
que z = 0, por lo que no estamos ante una solución de acuerdo con el problema.
Página 27 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Debemos hacer que s y t entren a formar parte de las variables básicas (columna de la
izquierda).

 ¿Qué pasa si entra s en la base?

Entonces t sería no básica. Tendremos que la última ecuación sería:

-3s + z = 0  z = 3s

 ¿Qué pasa si entra t en la base?

Entonces s sería no básica. Tendremos que la última ecuación sería:

-2t + z = 0  z = 2t

Lo que nos interesa es introducir s en la base, ya que es la que tiene mayor


coeficiente (nos encontramos en un problema de maximizar, la señalizamos con una
flecha ). Ahora tenemos que buscar la variable que sale. Como t no está en la base,
toma valor 0:

s + s1 = 80 s1 = 80 – s ≥0  s ≤ 80 / 1
2s + s2 = 100 s2 = 100 – 2s ≥ 0  s ≤ 100 / 2
s + s3 = 40 s3 = 40 – s ≥0  s ≤ 40 / 1

Todas las condiciones se cumplen para s ≤ 40. Decir que s = 40 es equivalente a


decir que s3=40–s  s3 = 0. La variable que sale de la base es s3 (la marcamos con una
flecha ). Si el coeficiente de s fuera negativo o cero, no lo tomaríamos.

s t s1 s2 s3 z
s1 1 1 1 0 0 0 80
s2 2 1 0 1 0 0 100
s3 1 0 0 0 1 0 40 
-3 -2 0 0 0 1 0

Paso 4: se hacen los cambios necesarios para que nuestras variables sean básicas.
Para ello se pivota sobre el coeficiente de (s, s 3), buscamos hacer 0 los coeficientes
tecnológicos de la columna de s.

 A la última fila le sumo 3 veces la 3ª fila.


 A la primera fila le resto la 3ª.
 A la segunda fila le resto 2 veces la 3ª.

Página 28 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Y nos queda así:

s t s1 s2 s3 z
s1 0 1 1 0 -1 0 40
s2 0 1 0 1 -2 0 20
s 1 0 0 0 1 0 40
0 -2 0 0 3 1 120

Segunda iteración:

Nuestra solución ahora es:

s = 40
t=0
z = 120.

Esta tabla no es la óptima, por lo que tenemos que volver a cambiar de variable.
Repetimos el proceso desde el principio. Veamos las alternativas:

 ¿Qué pasa si entra t en la base?

Tendremos que la última ecuación sería:

-2t + z = 120  z = 120 + t

Esta ecuación nos interesa, ya que hace que aumente la función objetivo.

 ¿Qué pasa si entra s3 en la base?

Entonces t sería no básica. Tendremos que la última ecuación sería:

3s3 + z = 120  z = 120 – 3s3

Esta variable entró en la etapa anterior, por lo que ahora no puede entrar.
Además, hace que disminuya la función objetivo, y nuestro problema es de maximizar.

Entra en la base la variable t y saldría el valor mínimo de los coeficientes


positivos (dividimos la solución por el coeficiente de t correspondiente a cada fila):

t + s1 = 40 s1 = 40 – t ≥0  t ≤ 40 / 1
t + s2 = 20 s2 = 20 – t ≥0  t ≤ 20 / 1
t + 0 = 40 0 = 40 – t ≥0  t ≤ 40 / 0  t ≤ ∞

Todas las condiciones se cumplen para t ≤ 20. Pivotamos sobre este elemento,
ya que es el más pequeño (nuestro problema es de maximización).

Página 29 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Entra t y sale s2:

s t s1 s2 s3 z
s1 0 1 1 0 -1 0 40
s2 0 1 0 1 -2 0 20 
s 1 0 0 0 1 0 40
0 -2 0 0 3 1 120

Ahora se hacen los cambios necesarios para que nuestras variables sean básicas.
Para ello se pivota sobre el coeficiente de (t, s2), buscamos hacer 0 los coeficientes
tecnológicos de la columna de t.

 A la última fila le sumo 2 veces la 2ª fila.


 A la primera fila le resto la 2ª.

Y nos queda así:

s t s1 s2 s3 z
s1 0 0 1 -1 1 0 20
t 0 1 0 1 -2 0 20
s 1 0 0 0 1 0 40
0 0 0 2 -1 1 160

Tercera iteración:

Ahora las variables s y t son básicas, y la solución sería:

s = 40
t = 20
z = 160

Esta tabla no es la óptima (para que sea óptima en maximización, deben ser ≥ 0
todos los coeficientes de la última fila), por lo que tenemos que volver a cambiar de
variable. Repetimos el proceso desde el principio. Veamos las alternativas:

 ¿Qué pasa si entra s2 en la base?

Tendremos que la última ecuación sería:

2s2 + z = 160  z = 120 – 2s2

Esta ecuación no nos interesa, ya que hace que disminuya la función objetivo.

 ¿Qué pasa si entra s3 en la base?

Tendremos que la última ecuación sería:


Página 30 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

-s3 + z = 160  z = 160 + s3

Esta es la variable que nos interesa, hace que aumente la función objetivo, y
nuestro problema es de maximizar.

Entra en la base la variable s3 y saldría el valor mínimo de los coeficientes


positivos (dividimos la solución por el coeficiente de s3 correspondiente a cada fila):

s3 + s1 = 20 s3 = 20 – s1 ≥0  s3 ≤ 20 / 1
-2s3 + t = 20 -2s3 = 20 – t ≥0  s3 ≤ 20 / -2
s3 + s = 40 s3 = 40 – s ≥0  s3 ≤ 40 / 1

Sale s1, que es la condición más restrictiva.

s t s1 s2 s3 z
s1 0 0 1 -1 1 0 20 
t 0 1 0 1 -2 0 20
s 1 0 0 0 1 0 40
0 0 0 2 -1 1 160

Ahora se hacen los cambios necesarios para que nuestras variables sean básicas.
Para ello se pivota sobre el coeficiente de (s3, s1), buscamos hacer 0 los coeficientes
tecnológicos de la columna de s3.

 A la última fila le sumo la 1ª fila.


 A la segunda fila le sumo 2 veces la 1ª.
 A la tercera fila le resto la 1ª.

Y nos queda así:

s t s1 s2 s3 z
s3 0 0 1 -1 1 0 20
t 0 1 2 -1 0 0 60
s 1 0 -1 1 0 0 20
0 0 1 1 0 1 180

Las soluciones ahora son:

s = 20
t = 60
z = 180

Y tenemos que:

s1 + t = 180
s2 + t = 180

Página 31 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Por lo que si aumentamos s1 o s2, la función objetivo disminuye (no debe darse,
nuestro problema es de maximizar), por lo que esta tabla es la óptima. Si la solución es
única, se debe obtener el mismo resultado con el método gráfico que con el simplex.
Un PPL tiene una solución, infinitas soluciones o ninguna solución, nunca puede tener
2, 3 ó 4 soluciones.

2.4.1- METODOLOGÍA PARA EL MÉTODO SIMPLEX.

Paso 1: Buscar una solución básica factible inicial (punto extremo).

Paso 2: Realizar el Test de Optimalidad (determinar si el paso a una solución


básica adyacente puede mejorar la función objetivo).
 Problemas de maximizar: la solución es óptima si todos los elementos de
la fila z son ≥ 0.
 Problemas de minimizar: la solución es óptima si todos los elementos de
la fila z son ≤ 0.

Paso 3: Cambiar de base, se hace pivotando y volviendo al paso 1 (determinar la


solución básica adyacente con mayor mejora en el valor del objetivo).
 Paso 3.1: Entra la variable que menos cumple la condición de optimalidad,
es decir:
 Maximizar: la que tenga menor valor entre los negativos de la fila z.
 Minimizar: la que tenga mayor valor entre los positivos de la fila z.
 Paso 3.2: Sale la variable cuyo cociente del lado derecho entre sus
correspondientes elementos positivos en la columna de la variable que entra
sea el más pequeño.
 Paso 3.3: Pivotar sobre el elemento de la fila de la variable que sale y la
columna de la variable que entra. Se deberán realizar las operaciones que se
deseen, para que al final quede la matriz identidad en las columnas de las
variables básicas. La operación de pivotaje en una tabla simplex es
equivalente a un cambio de base, por lo que el resultado final será el mismo
sin interferir las operaciones realizadas.

EJEMPLO: método Simplex:

Minimizar – x1 – 2x2
Sujeto a 2x1 + 2x2 + x4 = 6
x1 + 4x2 – x3 + x5 = 12
x1, x2, x3, x4, x5 ≥ 0

El problema ya está en formato estándar. Lo pasamos a la tabla, x4 y x5 serán las


variables básicas:

Página 32 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

x1 x2 x3 x4 x5
x4 2 2 0 1 0 6  sale 6/2=3 podemos elegir
cualquier opción,
x5 1 4 -1 0 1 12 12 / 4 = 3 elegimos la primera
1 2 0 0 0 0

entra
el mayor
entre
todos los
positivos

x1 x2 x3 x4 x5
x2 2/2=1 2/2=1 0/2=0 1/2 0/2=0 6/2=3 ←Dividimos toda la fila por el pivote
1-(2∙2)= 4-(2∙2)= -1-(2∙0)= 0-(2∙1)= 1-(2∙0)= 12-(2∙6)=
x5 -3 0 -1 -2 1 0 ←le restamos 2 veces la 1ª fila

-1 0 0 -1 0 -6 ←le restamos la 1ª fila

x1 x2 x3 x4 x5
x2 1 1 0 1/2 0 3
x5 -3 0 -1 -2 1 0
-1 0 0 -1 0 -6

Esta tabla es óptima ya que cumple el criterio de optimalidad (todos los valores
de la fila z son ≤ 0). La matriz de las variables es:

( )

Página 33 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Tipos de soluciones en la tabla simplex.

(Para un problema de maximizar)

a) Infactible: Un término del lado derecho negativo

x1 x2 … xi … xn
x1 -a
x2 b
zj-cj >0  j

b) No acotado: Columna de variable que entra con todos los términos negativos

x1 x2 … xi … xn
x1 -a
xi -b

c) Degenerada: Una variable básica con valor cero.

x1 x2 … xi … xn
x1 0
x2 b
zj-cj >0  j

d) Soluciones alternativas: Variables no básicas con término fila z igual a cero.


zj-cj >0  j

x1 x2 … xi … xn
x1 a
x2 b
0

e) Rayo óptimo: Variables no básicas con término fila z igual a cero y columna
negativa. zj-cj >0  j

x1 x2 … xi … xn
x1 -a
xi -b
0

Página 34 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

EJEMPLO: método Simplex:

Tenemos el siguiente problema:

Max 3x1 + 2x2


Sujeto a 2x1 + 3x2 < 12
2x1 + x2 < 8
xi ≥ 0

Paso el problema a formato estándar añadiendo variables de holgura adicionales.


El subíndice de las variables se corresponde con la restricción.

Max 3x1 + 2x2


Sujeto a 2x1 + 3x2 + s1 = 12
2x1 + x2 + s2 = 8
x i , si ≥ 0

Escribo el problema en formato tabla, escogiendo como variables básicas las de


holgura y como no básicas el resto.

Realizamos el test de optimalidad observando los términos del renglón z y


comprobamos que la solución no es óptima al existir términos negativos (< 0) y tratarse
de un problema de maximización.

entra

coeficientes 3 2 0 0
de z en la
f.o. x1 x2 s1 s2
0 s1 2 3 1 0 12 12 / 2 = 6 Elegimos la 2ª
fila que es la
0 s2 2 1 0 1 8  sale 8/2=4 menor

-3 -2 0 0 0
(0.2+0·2)-3= -3

(0·3-0·1)-2= -2

(0·1+0·0)-0= 0

(0·0+0·1)-0= 0

(0·12+0·8)= 0

A la 1º fila le restamos el 2º.


A la 3º sumamos la 2º multiplicado por 3/2
Dividimos la 2º fila entre el pivote (2).

Página 35 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Entra
(el mayor entre
todos los negativos)

coeficientes 3 2 0 0
de z en la
f.o. x1 x2 s1 s2
0 s1 0 2 1 -1 4  sale 4/2=2 elegimos la
primera fila,
3 x1 1 1/2 0 1/2 4 4:1/ 2 = 8 que es la menor
0 -1/2 0 3/2 12
A la 2ª fila le restamos la 1ª multiplicado por ¼
Dividimos el 1º renglón entre el pivote (2).
A la 3ª fila le sumamos la 1ª multiplicada por ¼

coeficientes 3 2 0 0
de z en la f.o. x1 x2 s1 s2
2 x2 0 1 1/2 -1/2 2
3 x1 1 0 -1/4 3/4 3
0 0 1/4 5/4 13

La tabla cumple con la condición de optimalidad al ser todos los coeficientes del
renglón z > 0 y es factible por ser los términos del lado derecho > 0. Luego la solución
es:

( )

En forma matricial el valor de z* es:

( )

EJEMPLO: método Simplex (Problema 9.69 relación problema propuestos


por el profesor) :

Tenemos el siguiente problema:

Min -3x1 + 2x2


Sujeto a x1 + x2 ≥ -1
4x1 + 2x2 < 5
x1 ≥ 0
x2 ≥ -1

SOLUCIÓN:

Paso el problema a formato estándar:

Página 36 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Min -3x1 + 2x2


Sujeto a -x1 - x2 < 1
4x1 + 2x2 < 5
x1 ≥ 0
-x2 < 1 → x2:Libre → x2= x2+ - x2-

Min -3x1 + 2x2+ - 2x2-


Sujeto a -x1 - x2+ + x2- < 1
4x1 + 2x2+ - 2x2- < 5
-x2+ + x2- < 1
xi ≥ 0 i

Min -3x1 + 2x2+ - 2x2-


Sujeto a -x1 - x2+ + x2- +s1=1
4x1 + 2x2+ - 2x2- +s2= 5
-x2+ + x2- +s3= 1
xi ≥ 0; si ≥ 0 i

Escribo el problema en formato tabla, escogiendo como variables básicas


las de holgura y como no básicas el resto.

coeficientes -3 2 -2 0 0 0
de z en la
f.o. x1 x2+ x2- s1 s2 s3
0 s1 -1 -1 1 1 0 0 1
0 s2 4 2 -2 0 1 0 5
0 s3 0 -1 1 0 0 1 1
3 -2 2 0 0 0 0

Realizamos el test de optimalidad observando los términos del renglón z y


comprobamos que la solución no es óptima al existir términos positivos (≥ 0) y tratarse
de un problema de minimizar.

-3 2 -2 0 0 0
x1 x2+ x2- s1 s2 s3
0 s1 -1 -1 1 1 0 0 1 Elegimos la 2ª fila cuyo cociente
del lado derecho entre sus
0 s2 4 2 -2 0 1 0 5  sale 5/4 correspondientes elementos
positivos en la columna de la
variable que entra (x1) sea el más
0 s3 0 -1 1 0 0 1 1 pequeño.

3 -2 2 0 0 0 0

Entra La segunda fila la dividimos por el
(mayor pivote (4)
valor de A la 1ª fila le sumamos la nueva 2ª
fila
entre los
A la 4ª fila le restamos la nueva 2ª
positivos fila multiplicada por 3
de la fila
Z)

Página 37 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

-3 2 -2 0 0 0
x1 x2+ x2- s1 s2 s3
9/4:1/2
0 s1 0 -1/2 1/2 1 1/4 0 9/4 =9/2
-3 x1 1 1/2 -1/2 0 1/4 0 5/4
0 s3 0 -1 1 0 0 1 1  sale 1/1=1

0 -7/2 7/2 0 -3/4 0 -15/4



Entra A la 1ª fila le restamos la 3ª
(mayor multiplicada por 1/2
valor de A la 2ª fila le sumamos la 3ª
multiplicada por ½
entre los
A la 4ª fila le restamos la 3ª
positivos multiplicada por 7/2
de la fila
Z)

-3 2 -2 0 0 0
x1 x2 + x2- s1 s2 s3
0 s1 0 0 0 1 1/4 -1/2 7/4
-3 x1 1 0 0 0 1/4 1/2 7/4
-2 x2- 0 -1 1 0 0 1 1
0 0 0 0 -3/4 -7/2 -29/4

Como podemos observar ya la tabla es óptima pues estamos minimizando y


todos los elementos de la fila z son ≤ 0.

Luego la solución será:

Z*= -29/4
x1*=7/4 x2*= x2+* - x2-*=0-1= -1

EJEMPLO: método Simplex (Problema 3.1.b de relación de problemas


propuestos por el profesor) :

Tenemos el siguiente problema:

Max x1 + x 2
Sujeto a -2x1 + x2 < 1
x1 - x2 < 1
xi ≥ 0

SOLUCIÓN:

En primer lugar pasamos a formato estándar:


Página 38 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Max x1 + x 2
Sujeto a -2x1 + x2 +s1 = 1
x1 - x2 +s2 = 1
x i , si ≥ 0

Escribo el problema en formato tabla, escogiendo como variables básicas las de


holgura y como no básicas el resto.

coeficientes 1 1 0 0
de z en la
f.o. x1 x2 s1 s2
0 s1 -2 1 1 0 1
0 s2 1 -1 0 1 1
-1 -1 0 0 0

Realizamos el test de optimalidad observando los términos del renglón z y


comprobamos que la solución no es óptima al existir términos negativos. En problemas
de maximizar la solución es óptima si todos los elementos de la fila z son ≥ 0.

Comenzamos a iterar. Entra la variable que menos cumple la condición de


optimalidad, es decir, en caso de maximizar, la que tenga menor valor entre los
negativos de la fila z. Y sale la variable cuyo cociente del lado derecho entre sus
correspondientes elementos positivos en la columna de la variable que entra sea el más
pequeño.

coeficientes 1 1 0 0
de z en la
f.o. x1 x2 s1 s2
0 s1 -2 1 1 0 1  sale
0 s2 1 -1 0 1 1
-1 -1 0 0 0
A la 2ª fila le
 sumamos la 1ª
Entra A la 3ª fila le
sumamos la 1ª

coeficientes 1 1 0 0
de z en la
f.o. x1 x2 s1 s2
1 x2 -2 1 1 0 1
0 s2 -1 0 1 1 2
-3 0 1 0 1

Entra

Como podemos observar la columna de variable que debe entrar tiene todos los
términos negativos luego el problema es no acotado.

Página 39 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Podemos resolverlo mediante el software LP Solve:

El resultado:

Recordemos los posibles resultados que muestra el programa:

 “Optimal solution”: Se ha encontrado una solución óptima


 “The model is UNBOUNDED”: El problema es no acotado
 “The model is INFEASIBLE”: El problema es infactible

Luego nos da como resultado el mismo que manualmente: No acotado.


Página 40 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

EJEMPLO: método Simplex (Problema 2.1.c relación problema propuestos


por el profesor) :

Tenemos el siguiente problema:

Max 2x1 + x2
Sujeto a x1 + x2 < 2
-x1 + x2 < 3
3x1 + 2x2 < 10
xi ≥ 0

SOLUCIÓN:

Paso el problema a formato estándar:

Max 2x1 + x2
Sujeto a x1 + x2+ s1 = 2
-x1 + x2 + s2 = 3
3x1 + 2x2 + s3= 10
x i , si ≥ 0

Dibujamos la tabla:

2 1 0 0 0
x1 x2 s1 s2 s3
0 s1 1 1 1 0 0 2
0 s2 -1 1 0 1 0 3
0 s3 3 2 0 0 1 10
-2 -1 0 0 0 0

Realizamos el test de optimalidad observando los términos del renglón z y


comprobamos que la solución no es óptima al existir términos negativos (-2 ; -1). En
problemas de maximizar la solución es óptima si todos los elementos de la fila z son ≥
0.

Comenzamos a iterar. Entra la variable que menos cumple la condición de


optimalidad, es decir, en caso de maximizar, la que tenga menor valor entre los
negativos de la fila z. Y sale la variable cuyo cociente del lado derecho entre sus
correspondientes elementos positivos en la columna de la variable que entra sea el más
pequeño.

Página 41 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2 1 0 0 0
x1 x2 s1 s2 s3
0 s1 1 1 1 0 0 2 2/1=2  sale
(2<10/3)
0 s2 -1 1 0 1 0 3
0 s3 3 2 0 0 1 10 10/3

-2 -1 0 0 0 0
A la 2ª fila le sumamos la 1ª
 A la 3ª fila le restamos la 1ª
multiplicada por 3
Entra A la 4ª fila le sumamos la 1ª
multiplicada por 2

2 1 0 0 0
x1 x2 s1 s2 s3
2 x1 1 1 1 0 0 2
0 s2 0 2 1 1 0 5
0 s3 0 -1 -3 0 1 4
0 1 2 0 0 4

La tabla ya es óptima pues el renglón Z son todos ≥0

Luego la solución será:

Z*= 4
x1*=2; x2*=0

Página 42 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.5- MÉTODOS DE GENERACIÓN DE UNA SOLUCIÓN


BÁSICA FACTIBLE INICIAL.

Tenemos 3 tipos de restricciones:

Restricción ≤: para pasarla a formato estándar añadiremos una


variable de holgura tal que …+ si = …. Además, +si es básica en la fila i.

Restricción =: para pasarla a formato estándar añadiremos una


variable artificial tal que …+ zi = …. Además, +zi es básica en la fila i.

Restricción ≥: para pasarla a formato estándar añadiremos una


variable de exceso (-si) y una variable artificial (zi) tal que …-si + zi = …. Además,
+zi puede utilizarse como variable básica en la fila i.

En la siguiente tabla resumimos esta regla:

Restricción Variables a añadir Variables básicas:


≤ + si +si
= + zi +zi
≥ -si + zi +zi
Los métodos que siguen (las dos fases y M grande) se utilizan cuando en el
P.P.L tenemos restricciones del tipo “> , =” en los que hay que añadir variables de
holgura del tipo zi y –si.

Página 43 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.5.1- MÉTODO DE LAS DOS FASES.

Primera fase:

Me plantearé y resolveré el siguiente problema:

Minimizar  zi
Sujeto a … + zi = … (restricciones ampliadas)

Si Z*= 0  obtengo un punto factible del problema original (paso a la segunda


fase)

Si Z*≠ 0  no hay ningún conjunto de valores que verifiquen las ecuaciones de


partida, problema infactible (vuelvo al problema original)

Segunda fase:

Se tachan las columnas de las variables artificiales, si existe variable artificial


básica se elimina la fila y se vuelve al problema original, es decir, se colocan los costes
originales, se recalcula el renglón z y se vuelve a aplicar el simplex:

Minimizar c’x
ó
Maximizar c’x
Calculamos el nuevo renglón Z y volvemos a aplicar el simplex.
(c’ es la función objetivo original).

EJEMPLO: Método de las Dos Fases:

Tenemos el siguiente problema:

Minimizar 2x1 + 4x2 + x4


Sujeto a 2x1 + x2 - 2x3 + 3x4 = 4
2x1 - x3 + x4 ≥ 3
xi ≥ 0

SOLUCIÓN:

Recordemos que:

 Restricción ≤: para pasarla a formato estándar añadiremos una variable de


holgura tal que …+ si = …. Además, +si es básica en la fila i.
 Restricción =: para pasarla a formato estándar añadiremos una variable
artificial tal que …+ zi = …. Además, +zi es básica en la fila i.

Página 44 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

 Restricción ≥: para pasarla a formato estándar añadiremos una variable de


exceso (-si) y una variable artificial (zi) tal que …-si + zi = …. Además, +zi
puede utilizarse como variable básica en la fila i.

Primera fase: resuelvo el problema de minimizar zi. A la vez lo paso a formato


estándar. El subíndice de las variables se corresponde con la restricción:

Minimizar z1 + z2
Sujeto a 2x1 + x2 - 2x3 + 3x4 + z1 =4
2x1 - x3 + x4 – s2 + z2 = 3
xi, s2, z1, z2 ≥ 0

Las variables básicas pueden ser las z:

0 0 0 0 0 1 1
x1 x2 x3 x4 s2 z1 z2
1 z1 2 1 -2 3 0 1 0 4 4/2=2 elegimos el segundo renglón,
1 z2 2 0 -1 1 -1 0 1 3  sale 3/2 que es el menor (3/2<2)

4 1 -3 4 -1 0 0 7
(-2·1+(-1)·1)-0= -3

(0·1+(-1)·1)-0= -1
(2·1+2·1)-0= 4

(3·1+1·1)-0= 4

(1·1+0·1)-1= 0

(0·1+1·1)-1= 0
(1·1-1·0)-0= 1

(4·1+3·1)= 7

 Dividimos el 2º renglón
Entra entre el pivote (2).
Al 1º le restamos el 2º.
(el mayor entre todos los positivos, aunque
podríamos elegir el otro 4 (minimizar) ↓

0 0 0 0 0 1 1
x1 x2 x3 x4 s2 z1 z2
1 z1 0 1 -1 2 1 1 -1 1  sale 1/2 Elegimos la 1ª fila , que
0 x1 1 0 -1/2 1/2 -1/2 0 1/2 3/2 3 / 2:1/2=3 es el menor (1/2<3)

0 1 -1 2 1 0 -2 1
 Dividimos las 1ª fila entre el
Entra pivote (2)
A la 2ª fila le restamos la
(el mayor primera dividida por 4.
entre todos
los positivos
A la 3ª fila le restamos la 1ª
(minimizar)) ↓

Página 45 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

0 0 0 0 0 1 1
x1 x2 x3 x4 s2 z1 z2
0 x4 0 1/2 -1/2 1 1/2 1/2 -1/2 ½
0 x1 1 -1/4 -1/4 0 -3/4 -1/4 3/4 5/4
0 0 0 0 0 -1 -1 0

Esta tabla ya cumple la condición de optimalidad para minimizar, los


coeficientes del renglón z son todos negativos. Hemos conseguido una tabla óptima con
una función objetivo de valor 0. Antes de pasar a la segunda fase podemos eliminar las
columnas correspondientes a z1 y z2.

Segunda fase: una vez que hemos tachado las columnas de z, pasamos a una
nueva tabla en la que recalculamos el renglón z y la función objetivo es la de partida:
(min 2x1 + 4x2 + x4).

coeficientes 2 4 0 1 0
en la f.o.
x1 x2 x3 x4 s2
1 x4 0 1/2 -1/2 1 1/2 1/2
2 x1 1 -1/4 -1/4 0 -3/4 5/4
0 -4 -1 0 -1 3
(1·0+2·1)-2= 0

(1·1/2+2·(-1/4))-4= -4

(1·(-1/2)+2·(-1/4))-0= -1

(1·1+2·0)-1= 0

(1·1/2+2·-(3/4))-0= -1

(1·1/2+2·5/4)= 3

Y esta tabla ya es óptima porque cumple las condiciones de optimalidad para


minimizar (coeficientes del renglón z todos negativos). Por lo tanto, hemos ido
cambiando de solución:

( )

( )

( )

Página 46 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.5.2- MÉTODO DE LA “M” GRANDE.

Se trata de obligar a que z sea cero mediante un coeficiente muy grande (M).

Prob. de minimizar: El problema min c’x se convierte en min c’x + M zi.

Prob. de maximizar: El problema max c’x se convierte en max c’x – M zi.

Si Zi=0 i hemos encontrado la solución.

Si i Zi≠0 se trataría de un problema infactible

EJEMPLO: Método de la M grande:

Tenemos el siguiente problema:

Minimizar 2x1 + 4x2 + x4


Sujeto a 2x1 + x2 + 3x3 + x4 = 3
2x1 + x3 + x4 ≥ 4
xi ≥ 0

SOLUCIÓN:

Recordemos que:

 Restricción ≤: para pasarla a formato estándar añadiremos una variable de


holgura tal que …+ si = …. Además, +si es básica en la fila i.
 Restricción =: para pasarla a formato estándar añadiremos una variable
artificial tal que …+ zi = …. Además, +zi es básica en la fila i.
 Restricción ≥: para pasarla a formato estándar añadiremos una variable de
exceso (-si) y una variable artificial (zi) tal que …-si + zi = …. Además, +zi
puede utilizarse como variable básica en la fila i.

Luego:

Min.: 2x1 + 4x2 + x4 + M·z1 + M·z2


s.a.: 2x1 + x2 + 3x3 + x4 + z1 = 3
2x1 + x3 + x4 – s2 + z2 = 4
xi, zi, s2 ≥ 0

Pasamos a formato tabla:

Página 47 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

coeficientes 2 4 0 1 0 M M
en la f.o. x1 x2 x3 x4 s2 z 1 z 2
M z1 2 1 3 1 0 1 0 3  sale 3/3=1 (menor)
M z2 2 0 1 1 -1 0 1 4 4/1 = 4
4M-2 M-4 4M 2M-1 -M 0 0 7M
 Dividimos el 1º renglón entre el
Entra pivote (3).
el mayor Al 2º le restamos el 1º dividido
entre todos entre 3.
los Recalculamos el z.
positivos,
(minimizar)

coeficientes 2 4 0 1 0 M M
en la f.o. x1 x2 x3 x4 s2 z1 z2
0 x3 2/3 1/3 1 1/3 0 1/3 0 1  sale 1:(2/3)=3/2
M z2 4/3 -1/3 0 2/3 -1 -1/3 1 3 3:(4/3)=9/4

(4/3)M-2 (-1/3)M-4 0 (2/3)M-1 -M (-4/3)M 0 3M

 Dividimos el 1º renglón entre el


Entra pivote (2/3).
el mayor Al 2º le restamos el 1º multiplicado
entre todos por 2.
los Recalculamos el z.
positivos,
(minimizar)

coeficientes 2 4 0 1 0 M M
en la f.o. x1 x2 x3 x4 s2 z1 z2
2 x1 1 1/2 3/2 1/2 0 1/2 0 3/2
M z2 0 -1 -2 -4/3 -1 -1 1 1
0 -M -2M (-4/3)M -M -3M 0 M+3

Esta tabla ya es óptima, todos los coeficientes del renglón z son ≤0. Sin
embargo, no hemos conseguido que el sistema expulsara a z2, ya que z2 = 1, por lo tanto
este problema no tiene solución factible. Como puede comprobarse, z2 no puede
hacerse cero, por tanto el problema inicial es infactible.

Página 48 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

EJEMPLO: Método de la M grande (Problema 9.22 de la relación de


problemas propuesta por el profesor): Una empresa de transporte tiene un
contrato para transportar 75 unidades de cierto producto. La empresa dispone
de dos tipos de contenedores con capacidad para 20 y 10 unidades,
respectivamente. Cada contenedor requiere de 12 horas de preparación para
el primer tipo y 7 para el segundo, disponiéndose de un total de 55 horas. El
costo de transporte por contenedor es de 20 y 10 unidades, respectivamente.
¿Cuál es la política optima de transporte, si los contenedores pueden usarse
parcialmente?

En primer lugar planteamos el problema:

Contenedor “tipo 1” Contenedor “tipo 2”


Contenedores a transportar x1 x2
Capacidad 20 ud. 10 ud.
Tiempo preparación 12 h. 7 h.
Coste transporte 20 um. 10 um.

La función a optimizar será minimizar el coste del transporte:

Min: 20x1+10x2

Las restricciones son el número máximo de unidades a transportar y el número


total de horas disponibles:

s.a: 20x1+10x2≥75
12x1+7x2≤55
xi≥0

En primer lugar pasamos el problema a formato estándar:

Recordemos que:

 Restricción ≤: para pasarla a formato estándar añadiremos una variable de


holgura tal que …+ si = …. Además, +si es básica en la fila i.
 Restricción =: para pasarla a formato estándar añadiremos una variable
artificial tal que …+ zi = …. Además, +zi es básica en la fila i.
 Restricción ≥: para pasarla a formato estándar añadiremos una variable de
exceso (-si) y una variable artificial (zi) tal que …-si + zi = …. Además, +zi
puede utilizarse como variable básica en la fila i.

Luego:

Min: 20x1+10x2
s.a: 20x1+10x2-S1+Z1=75
12x1+7x2+S2=55
xi; Si; Zi ≥0

Página 49 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Recordemos que los métodos de las dos fases y M grande se utilizan cuando en
el P.P.L tenemos restricciones del tipo “> , =” en los que hay que añadir variables de
holgura del tipo zi y –si.

Por lo que para este problema podremos aplicar el método de la M grande, que
recordamos que se trata de obligar a que z sea cero mediante un coeficiente muy grande
(M).

 Prob. de minimizar: El problema min c’x se convierte en min c’x + M zi.


 Prob. de maximizar: El problema max c’x se convierte en max c’x – M zi.

Luego:

Min: 20x1+10x2+M∙Z1
s.a: 20x1+10x2-S1+Z1=75
12x1+7x2+S2=55
xi; Si; Zi ≥0

Lo plasmamos en la tabla:

coeficientes 20 10 0 M 0
en la f.o. x1 x2 S1 Z1 S2
 75/20=3,75
M z1 20 10 -1 1 0 75 (menor)
sale
0 s2 12 7 0 0 1 55 55/12 = 4,58
(20·M+12·0)-20 (10·M+7·0)-10 (-1·M+0·0)-0 (1·M+0·0)-M (0·M+1·0)-0 75·M+55·0 Dividimos la
= = = = = = 1º fila entre
20M-20 10M-10 -M 0 0 75M el pivote
(20).
 Al 2º le
restamos el 1º
Entra multiplicado
el mayor entre
por
todos los
12/20=3/5.
positivos,
Recalculamos
(minimizar)
el z.

coeficientes 20 10 0 M 0
en la f.o. x1 x2 S1 Z1 S2
75/20=
20 x1 1 1/2 -1/20 1/20 0 15/4
12-(20∙3/5) = 7-(10∙3/5) = 0-(-1∙3/5) = 0-(1∙3/5) = 1-(0∙3/5) = 55-(75∙3/5) =
0 s2 0 1 3/5 -3/5 1 10
(20·1+0·0)- (1/2·20+1·0)-10 (-1/20·20+3/5·0)- (1/20·20+(-3/5)·0)-M (0·20+1·0)-0 15/4·20+10·0
20 = = 0= = = =
0 0 -1 1-M 0 75

Como estamos minimizando y todos los elementos de la fila z son ≤0 la solución


es óptima.
Página 50 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

 Si Zi=0 i hemos encontrado la solución.


 Si i Zi≠0 se trataría de un problema infactible

Y como todos los valores de Zi=0 la solución es factible

x1*=15/4; x2*=0; Z*=75

EJEMPLO: Método de la M grande (Problema 9.62 de la relación de problemas


propuesta por el profesor): La empresa Data S.A. ha sido contratada para la ampliación
de una red de datos. La conexión entre los dos nodos principales de la red de datos debe
hacerse utilizando conexiones de 20Gb/s y 10Gb/s. El ancho de banda total no debe ser
inferior a 75 Gb/s. Los costos de mantenimiento anuales son 8 y 3 unidades para las
conexiones de 20 y 10 Gb/s. El costo de mantenimiento anual no debe ser superior a 55.
El costo de puesta en funcionamiento es de 15 y 10 unidades.

a) Admitiendo que el uso puede ser parcial, ¿cuántas conexiones de cada


tipo deben instalarse?

SOLUCIÓN:

En primer lugar plasmamos el problema en las ecuaciones:

Min: 15x1+10x2
s.a: 20x1+10x2≥75
8x1+3x2≤55
xi; ≥0

Transformamos a formato estándar. Recordemos que:

 Restricción ≤: para pasarla a formato estándar añadiremos una variable de holgura


tal que …+ Si =…. Además, +Si es básica en la fila i.
 Restricción =: para pasarla a formato estándar añadiremos una variable de holgura
tal que …+ Zi =…. Además, +Zi es básica en la fila i.
 Restricción ≥: para pasarla a formato estándar añadiremos una variable de holgura
tal que …-Si + Zi =…. Además, -Si, +Zi son básicas en la fila i.

Luego:

Min: 15x1+10x2
s.a: 20x1+10x2-S1+Z1=75
8x1+3x2+S2=55
xi ; Si ; Zi ≥0 i

A continuación aplicamos el método de la M grande que recordamos que se trata de


obligar a que z sea cero mediante un coeficiente muy grande (M).

 Prob. de minimizar: El problema min c’x se convierte en min c’x + M zi.


 Prob. de maximizar: El problema max c’x se convierte en max c’x – M zi.
Página 51 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Luego:

Min: 15x1+10x2+M∙Z1
s.a: 20x1+10x2-S1+Z1=75
8x1+3x2+S2=55
xi; Si; Zi ≥0 i

Lo plasmamos en la tabla:

coeficientes 15 10 0 M 0
en la f.o. x1 x2 S1 Z1 S2
 75/20=3,75
M Z1 20 10 -1 1 0 75 (menor)
sale
0 S2 8 3 0 0 1 55 55/8 = 6,87
(20·M+8·0)-15 (10·M+3·0)-10 (-1·M+0·0)-0 (1·M+0·0)-M (0·M+1·0)-0 75·M+55·0 Dividimos la
= = = = = = 1º fila entre
20M-15 10M-10 -M 0 0 75M el pivote
(20).
 Al 2º le
Entra restamos el 1º
el mayor entre multiplicado
todos los por 8/20=2/5.
positivos, Recalculamos
(minimizar) el z.

coeficientes 15 10 0 M 0
en la f.o. x1 x2 S1 Z1 S2
15 x1 1 1/2 -1/20 1/20 0 75/20=15/4
8-(20∙2/5)= 3-(10∙2/5)= 0-(-1∙2/5)= 0-(1∙2/5)= 1-(0∙2/5)= 55-(75∙2/5)=
0 S2 0 -1 2/5 -2/5 1 25
(15·1+0·0)- (15·1/2+0·-1)- (15·-1/20+0·2/5)- (15·1/20+0·-2/5)-M (15·0+0·1)-0 15·15/4+0·25
15 = 10 = 0= = = =
0 -5/2 -15/20 15/20-M 0 225/4

Como estamos minimizando y todos los elementos de la fila z son ≤0 la solución


es óptima. Y como todos los valores de Zi=0 la solución es factible

x1*=15/4; x2*=0; Z*=225/4

2.5.3- SOLUCIONES MÚLTIPLES.

Supongamos que tenemos que resolver el problema:

Minimizar 4x1 + 8x2 + x4


Sujeto a 2x1 + x2  x3 + x5 ≥ 3
2x1 + x3 + x4 – x5 ≥ 1
xi ≥ 0

Lo pasamos a forma estándar, aplicamos el método simplex, y después de dos


iteraciones llegamos a la siguiente tabla óptima:
Página 52 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

variables 4 8 0 1 0 0 0
básicas
actuales x1 x2 x3 x4 x5 s1 s2
0 x5 0 1/2 -2 - 1/2 1 - 1/2 1/2 1
4 x1 0 1/4 - 1/2 1/4 0 - 1/4 - 1/2 1
0 -7 -2 0 0 -1 -1 4

La función objetivo es: 0x1  7x2  2x3 + 0x4 + 0x5 – s1 – s2 + z = 4

Y la solución óptima:

( )

Además de la solución de las variables básicas encuentro otros ceros. Tenemos


variables no básicas (x4) que en renglón z son igual a 0, lo que me dice que si la
introduzco mi función objetivo no va a cambiar y la solución nueva también será
óptima. Si pivotamos sobre el elemento 1/4 (entra x4, sale x1), obtenemos una nueva
tabla:

variables 4 8 0 1 0 0 0
básicas
actuales x1 x2 x3 x4 x5 s1 s2
0 x5 2 1 -3 0 1 -1 0 3
1 x4 4 1 -2 1 0 -1 -1 4
0 -7 -2 0 0 -1 -1 4

La nueva solución óptima:

( )

Nos encontramos con dos puntos que son solución del problema. El lugar
geométrico de los puntos que los une (segmento) también es solución del problema:

λ  [ 0,1 ] λx* + (1- λ) · y*

También vemos que la variable x1 (que es no básica) tiene coste reducido 0.


Esto quiere decir que podemos introducir x1 y sacar x4. Así obtenemos una tabla a
partir de la otra. En este caso sólo hay dos posibles soluciones, pero podría haber más.
Cada vez que se introduce una variable no básica que da una nueva solución nos
encontramos con un nuevo punto, y tenemos que repetirlo hasta que nos encontremos
con una base ya conocida.

Página 53 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Por ejemplo en el politopo:

Desde este punto se ven los dos


adyacentes, pero no los otros dos.

Al final conseguimos un conjunto de puntos que son soluciones óptimas. La


solución es la envolvente convexa, el menor conjunto convexo. Cualquier punto de esa
cara es solución del problema. Veamos cómo se expresa un punto del interior de la
cara:

x*1, x*2, x*3, x*4, x*5


α1x*1, α2x*2, α3x*3, α4x*4, α5x*5
a) αi ≥ 0
b) Σ αi = 1

Podemos preguntarnos ¿qué interés tiene para nosotros calcular todas las
soluciones de un problema de programación lineal? A priori, todas las soluciones tienen
las mismas posibilidades de ser la correcta, pero a posteriori puedo tener en cuenta
factores que antes no había considerado. Puedo tener en cuenta factores secundarios si
los primeros criterios han empatado.

Por ejemplo: tengo que localizar un almacén para suministrar a una provincia
con el menor coste, y obtengo varios posibles puntos. En principio todos son válidos,
ya que el coste es mínimo en todos ellos, pero los mejores podrían ser los que estuvieran
más cerca de la provincia, o los que tuvieran aeropuerto, o el que está más cerca de la
capital…

Las mejores
soluciones
están en la
intersección  Provincia

Solución 

Página 54 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Otra posible aplicación consistiría en resolver dos problemas, siendo la solución


del primero el punto de partida para el segundo:

Solución del
primer problema

Solución del
segundo problema

2.5.4- DEGENERACIÓN Y CICLADO.

Definición: Una solución es Degenerada si alguna variable básica tiene


valor cero.

Vamos a imaginar que tenemos la tabla simplex:

x1 x2 x3 x4 x5 s1 s2
x1 2 0 

Si introducimos x3 tiene que salir x1. La variable que intenta entrar sigue con
valor 0, hemos cambiado de base pero no de punto (las demás variables no cambian).
Decimos que una solución es degenerada si alguna variable básica está a valor 0.

Por ejemplo, supongamos que tenemos un vértice por el que pasan 3 ecuaciones
(R1, R2, R3). A la hora de realizar el simplex, obtengo una base (por ejemplo R1, R2),
pero puedo cambiar de base a (R1, R3) y sigo estando en el mismo vértice. Igual pasa si
tomo la base que falta (R3, R2). Puedo saltar de una base a otra infinitamente sin llegar
nunca al final, por lo que el método simplex falla en este caso:

R3

R2

R1

Página 55 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

En este caso estamos ante un ciclo. Sólo podemos tener ciclos si tenemos una
solución básica degenerada (si alguna variable básica vale 0). Lo normal es que los
problemas no ciclen, pero si se da el caso, tenemos una regla anticiclado:

Regla anticiclado: Útil para evitar el efecto anteriormente explicado y


consiste en elegir un orden arbitrario pero fijo para las variables

Cogemos todas las variables y las ordenamos como queramos. Cada vez que se
produzca un empate en el renglón z, elijo la variable que esté antes en la lista que hemos
creado de forma arbitraria.

Página 56 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.6- DUALIDAD.

Hasta ahora hemos visto el método simplex suponiendo que los coeficientes son
conocidos y exactos, pero no sabemos cómo influyen pequeños cambios de los
coeficientes en la solución final. Después de resolver el problema hay que evaluar esas
posibles variaciones, para lo que usaremos el concepto de Dualidad. Desde un punto de
vista abstracto, la dualidad significa estudiar dos problemas muy parecidos, de forma
que conociendo la solución de uno conozco también la solución del otro. De esta forma
resolveremos el problema que sea más fácil.

Definición: Un problema de programación lineal (PPL) se dice que está en


formato canónico si es de la forma:

(P) minimizar c’x


sujeto a Ax ≥ b
x≥0
nota: no se exige que b ≥ 0

Definición: Dado un problema en formato canónico que llamaremos


Primal (P), se define el problema Dual (D) en formato canónico como:

(D) maximizar b’w


sujeto a A’w ≤ c
w ≥0

Propiedad: El número de variables del problema dual (D) coincide con el


número de variables del problema primal (P).

Propiedad: El problema dual del problema dual es el problema primal.


Esto es muy importante, ya que si demostramos algo en uno de los problemas también
será de aplicación en el otro. Por ejemplo, partimos del problema dual (A’ es la
traspuesta):

Maximizar b’w Minimizar  b’w


A’w ≤ c Forma canónica
(D) Sujeto a Sujeto a  A’w ≥  c
w≥0 
w≥0

Y siendo (DD) : Dual del dual

Maximizar c’y Equivale a Minimizar c’y


(DD) Sujeto a (-A’)’ y ≤ -b (P) Sujeto a Ay ≥ b
y≥0 ≡ y≥0

Si nos encontramos con un problema que no esté en formato canónico, tenemos


que pasarlo a formato canónico y luego calcularemos su problema dual.

Página 57 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Por ejemplo, partimos del problema primal:

(P) minimizar c’x


sujeto a Ax ≥ b
x libre

No está en la forma canónica, tenemos que hacer el cambio: x = x +  x


donde x+,x ≥ 0

(P) minimizar c’ (x+  x)


sujeto a A (x+  x) ≥ b
x+, x ≥ 0

Para poder operar tenemos que pasarlo todo a forma matricial (ahora los
paréntesis son matrices) y ya lo tenemos en forma canónica:

(P) ( )

( )

Ahora buscamos el problema dual:

(D)

( ) ( )

Si lo extendemos:

(D) maximizar A’w


sujeto a A’w ≤ c
w≥0

Que es idénticamente igual a:

(D) maximizar b’w


sujeto a A’w ≤ c
A’w ≥ c (multiplico la condición anterior por -1)
w≥0

Y el problema dual es:

(D) maximizar b’w


sujeto a A’w = c
w≥0
Página 58 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Conclusión: un cambio en las restricciones del problema primal (x libre)


se traduce en un cambio en las restricciones del problema dual (A’w = c).

2.6.1- DUALIDAD EXTENDIDA.

Existe la tabla de “Dualidad Extendida”, que presenta todos los casos posibles de
problemas duales y primales. Si el problema primal es de minimizar la tabla se lee de
izquierda a derecha, y si es de maximizar, se lee de derecha a izquierda. Regla
nemotécnica: “a restricciones de tipo natural le corresponden variables de tipo natural”.

Minimizar  Maximizar
≥ ≥0
Restricciones = libres Variables
≤ ≤0
≥0 ≤
Variables libres = Restricciones
≤0 ≥

EJEMPLO: aplicación de la dualidad extendida:

Dado el problema primal, calcular el dual:

(P) minimizar x1 + x2 + 5x4


sujeto a x1 + x2 + x4 ≤5
3x1 + 4x2 + x3 ≤ 5
x1 + x2 + x3 + x4 =7
x1 ≥3
x4 ≥9
x1, x4 ≥ 0, x2 libre, x3 ≤ 0

Los coeficientes de la función


objetivo del dual son el término
independiente de las restricciones
El problema dual es: del primal.

(D) maximizar 5w1  5w2 + 7w3 + 3w4 + 9w5


sujeto a w1 + 3w2 + w3 + w4 ≤1 Los términos independientes
w1 + 4w2 + w3 =1 de las restricciones del dual
Los coeficientes de las w2 + w3 ≥0 son los coeficientes de la
función objetivo del primal.
restricciones del dual son los w1 + w3 + w5 ≤ 5
coeficientes traspuestos de
las restricciones del primal.
w1, w2 ≤ 0, w3 libre, w4, w5 ≥ 0
Los signos de las restricciones van
según la dualidad extendida. Un x1 ≥
Los signos de las variables van según la dualidad extendida, un ≥ 0 en la 0 en las variables del primal se
quinta restricción del primal se convierte en x5 ≥ 0 en las variables del dual. convierte en el signo ≤ de la primera
Un = 7 en la tercera restricción del primal se convierte en x3 libre. restricción del dual.

Página 59 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.6.2- TEOREMA DE LA DUALIDAD DÉBIL.

El valor de la función objetivo Z de un problema de maximización, es siempre


menor o igual que el valor de la función objetivo w del problema de minimización, si
ambos son factibles.

Formulación: “Si x0 es un punto factible del problema primal (P) y w0 es


un punto factible del dual (D), entonces se verifica que c’x0 ≥ b’w0 para un primal
de minimizar”.

Demostración:

Como x0 es factible de (P), se verifica que: A · x0 ≥ b (1)


x0 ≥ 0
Como w0 es factible de (D), se verifica que: A’· w0 ≤ c (2)
w0 ≥ 0

Multiplico la inecuación (1) por w’0 por la izquierda (recordemos que w0 es una
matriz 1x1, y que para cambiar el orden de los términos de un producto se trasponen
ambos):

w’0 · A · x0 ≥ w’0 · b  w’0 · A · x0 ≥ b’ · w0

Multiplico la inecuación (2) por x’0 por la izquierda:

x’0 · A’ · w0 ≤ x’0 · c  x’0 · A’ · w0 ≤ c’ · x0

Y por la regla de cambiar el orden del producto vemos que:

w’0 · A · x0 = x’0 · A’ · w0 Por lo tanto  c’x0 ≥ b’w0


Interpretación: Si representamos en la recta real las soluciones de (P) con
una “x” y las de (D) con un círculo vemos que las soluciones de (P) son siempre
mayores que las de (D) para un primal de minimizar:

2.6.3- TEOREMA DE LA DUALIDAD FUERTE.

Si existen soluciones factibles para los problemas primal y dual que dan igual
valor a los respectivos objetivos, tales soluciones son óptimas.

Formulación: “Dado un punto factible de (P) x* y otro punto factible de


(D) w* tales que verifiquen que c’x* = b’w*, entonces x* y w* son soluciones
óptimas”.

Página 60 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Demostración: Sea el problema primal:

(P) minimizar c’x


sujeto a Ax ≥ b
x≥0

y sean x1 y w0 factibles. Aplicando el teorema de la dualidad débil tenemos que:

c’x1 ≥ b’w0  b’w0 = c’x0

Ya que si x0 es el punto donde se alcanza el mínimo, x1 siempre es mayor que x0,


para todo x1.

Propiedad: Si (P) tiene solución óptima finita o factible, entonces (D)


tiene solución óptima finita y viene dada por: w* = c’B · B1.
Hay que tener en cuenta que si parto de un problema en formato canónico tengo
restricciones del tipo ≥, por lo que hay que añadir variables de exceso “s”:

xi si · B1 xi si
A I  cB xB 1
B ·A B1
c’B·B1

Para una tabla simplex en formato canónico, el renglón z es c’B·B1. De esta


manera estoy resolviendo el problema primal y el dual con el mismo esfuerzo.

Corolarios: Las soluciones del dual están a la izquierda de las soluciones


del primal en la recta real, pero si (P) es ilimitado, las soluciones del dual no pueden
estar en el infinito, por lo que el dual es infactible.

 (P) tiene solución óptima finita si y solo si (D) tiene solución óptima finita.
 Si (P) es ilimitado (no acotado)  (D) es infactible.
 Si (D) es ilimitado  (P) es infactible.
 Si (P) es infactible  (D) es infactible o ilimitado (no se sabe).
 Si (D) es infactible  (P) es infactible o ilimitado (no se sabe).

Página 61 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Ejemplo (muy inusual) en el que los dos problemas (P) y (D) son infactibles:

(P) Minimizar -x1-x2


Sujeto a x1  x2 ≥1 Estas dos condiciones no se pueden dar a la vez, por lo que el
problema es infactible (son condiciones opuestas).
 x1 + x2 ≥ 1
x1, x2 ≥ 0
(D) Maximizar -w1-w2
Sujeto a w1  w2 ≤1 También es infactible por la misma razón, de hecho, son el
mismo problema.
 w1 + w2 ≤ 1
w1, w2 ≥ 0

Notaciones:

cB’: vector transpuesto de los coeficientes de las variables básicas.


cN: vector de los coeficientes de las variables no básicas.
B-1 : matriz básica asociada a una solución básica factible (corresponde a la
transformada de las soluciones básicas iniciales)
N: matriz formada con las restantes columnas de A.
XN: matriz de variables no básicas (la forman los términos de la tabla de las
variables no básicas).
yk: vector de la columna k dentro de la tabla.
ak: vector de la columna k de coeficientes tecnológicos iniciales.

2.6.4 Lectura de la solución dual en la tabla óptima del


problema primal.

Teorema 1: Si el P.P.L tiene una solución óptima correspondiente a una base B,


entonces:

es una solución óptima para el problema dual.

Teorema 2: Dada la tabla óptima del simplex del problema primal, si z t-ct es el
valor de la fila indicador asociado a una variable primal básica original en la j-ésima
restricción primal, entonces el valor óptimo de la j-esima variable dual de decisión es:

| |

Para ilustrar lo anterior con un ejemplo consideramos el problema resuelto


anteriormente:

Tenemos el siguiente problema:

Max 3x1 + 2x2


Sujeto a 2x1 + 3x2 < 12
2x1 + x2 < 8
xi ≥ 0

Página 62 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

cuya solución es la siguiente:

coeficientes 3 2 0 0
de z en la
f.o. x1 x2 s1 s2
2 x2 0 1 1/2 -1/2 2
3 x1 1 0 -1/4 5/4 3
0 0 1/4 5/4 13

Los valores de las variables para la solución óptima del problema primal
correspondiente son:

x1* = 3, x2 * = 2

Los valores de las variables para solución óptima del problema dual
corresponden a los valores | | de las variables de holgura:

| |

| |

Aplicando el primer teorema también obtenemos los valores de w*

 Vector transpuesto de los coeficientes de las variables básicas. Es decir


última columna de la matriz optima del problema primal.
 Matriz básica asociada a una solución básica factible (corresponde a la
transformada de las soluciones básicas iniciales). Es decir matriz de las posiciones en
las que estaban las variables básicas en la matriz original, pero con los valores de la
matriz optima.

( )

⁄ ⁄
( )
⁄ ⁄

Mediante LPSolve seria calculando la solución del problema primal y pinchamos


después en Resul-Sensitivity-Duals.

Introducción del problema:

Página 63 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Resultados del problema primal (Result-Objetive):

Resultados del problema dual (Resul-Sensitivity-Duals) Miramos los valores de


la columna “value” y las distintas R1, R2,…:

Página 64 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.6.5- INTERPRETACIÓN ECONÓMICA DE LAS VARIABLES


DUALES.

La solución óptima de un problema de programación lineal da respuesta a la


asignación óptima de un conjunto de recursos en un momento dado; las variables duales
pueden dar información útil sobre la posible expansión y crecimiento del beneficio
(objetivo)

Supongamos que tenemos x* como solución óptima del problema en una base
asociada o B:

∙B1
A b  CB B1·A B1·b
C’B · B1.b
Aquí, b representa las cantidades disponibles o los recursos que tenemos.
Imaginemos que las cantidades varían ligeramente, pero la modificación es lo
suficientemente pequeña como para que la solución óptima siga teniendo la misma base:

· B1
A b + b  CB B1 · (b + b)
C’B · B1 · (b + b)

Entonces tenemos que:

En el caso de que sólo cambiara un elemento de b tendríamos que:

Por ejemplo, por cada unidad que aumente b1, la función objetivo aumentará y1 ·
b1. Me compensaría pagar por b1 siempre y cuando b1 ≤ y1. La solución dual es el
precio unitario que estoy dispuesto a pagar por cada recurso, si no cambio de base.
Si existe holgura significa que me sobran recursos (por ejemplo, horas de máquina) y no
estaría dispuesto a pagar nada por adquirir unos recursos que me sobran: y1 · s1 = 0.

EJEMPLO: Supongamos una fábrica de cervezas que produce tres tipos


distintos que se denominan negra (N), rubia (R) y de baja graduación (B). Para su
obtención son necesarios, además de agua y lúpulo para los cuales no hay limitación de
disponibilidad, malta y levadura, que limitan la capacidad diaria de producción. La tabla
da la cantidad necesaria de cada uno de estos recursos para producir un litro de cada una
de las respectivas cervezas, los kilos disponibles de cada recurso y el beneficio por litro

Página 65 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

de cerveza producida. ¿Cuánto debe fabricar de cada cerveza para que el beneficio sea
máximo?

N R B Disponibilidad
Malta 1 1 2 30
Levadura 1 2 2 45
Beneficio 4 7 3

Las variables de decisión son las siguientes:

x1 = producción en litros de N por día.


x2 = producción en litros de R por día.
x3 = producción en litros de B por día.

Max z = 4x1 + 7x2 + 3x3.


s.a: x1+x2+2x3 < 30 (malta)
x1+2x2+2x3 < 45 (levadura)
xi > 0

Pasamos a formato estándar introduciendo variables de holgura complementaria:

Max z = 4x1 + 7x2 + 3x3.


s.a: x1+x2+2x3+s1 = 30
x1+2x2+2x3+s2 = 45
xi > 0

Resolvemos aplicando el método simplex y tomando como variables básicas


iniciales s1 y s2.

El problema ya está en formato estándar. Lo pasamos a la tabla, s1 y s2 serán las


variables básicas:

4 7 3 0 0
x1 x2 x3 s1 s2
0 s1 1 1 2 1 0 30 30 / 1 = 30

0 s2 1 2 2 0 1 45  sale 45 / 2 = 22,5
(22,5<30)
-4 -7 -3 0 0 0

entra
(el más
negativo)

Página 66 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

x1 x2 x3 s1 s2
0 s1 1/2 0 1 1 -1/2 15/2  sale 15/2: 1/2 = 15
(15<45)

7 x2 1/2 1 1 0 1/2 45/2 45/2: 1/2 = 45

-1/2 0 4 0 7/2 315/2



entra
(el más
negativo)

4 7 3 0 0
x1 x2 x3 s1 s2
4 x1 1 0 2 2 -1 15
7 x2 0 1 0 -1 1 15
0 0 5 1 3 165

La solución óptima es: x1* = 15; x2* = 15; x3* = 0;

Con beneficio óptimo (valor máximo) z* = 165

Los valores óptimos de las variables duales son: | |:

| |

| |

Con valor mínimo w* = 165.

El precio del recurso malta (b1) es y representa el incremento de valor z*


por unidad incrementada en la disponibilidad de malta.

El precio del recurso levadura (b2) es y representa el incremento de


valor z* por unidad incrementada en la disponibilidad de levadura.

Si por ejemplo b (30,45) se incrementa ( ) unidades, el valor objetivo se


incrementa en:

( )

El nuevo valor objetivo pasaría a ser z* = 165+45 = 210.

Página 67 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.6.6- CONDICIONES DE HOLGURA COMPLEMENTARIA.

Propiedad: Dados x*, w* factibles, son equivalentes si se cumplen las


condiciones:

x*, w* son soluciones óptimas.

x*, w* verifican las condiciones de holgura complementaria, siendo t la


variable de holgura del problema dual:
 xi · ti = 0 i
 wj · sj = 0 j

EJEMPLO:

Resolver el siguiente problema de maximizar:

(P) maximizar 10x1 + 24x2 + 30x3 + 20x4 + 25 x5


sujeto a x1 + x2 + 2x3 + 3x4 + 5x5 ≤ 19
2x1 + 4x2 + 3x3 + 2x4 + x5 ≤ 57
xi ≥ 0

SOLUCIÓN:

Construimos el problema dual:

(D) minimizar 19w1 + 57 w2


sujeto a w1 + 2w2 ≥ 10
w1 + 4w2 ≥ 24
2w1 + 3w2 ≥ 20
3w1 + 2w2 ≥ 20
5w1 + w2 ≥ 25
w1, w2 ≥ 0

Este problema es de dos variables, con lo que ya es posible resolverlo


gráficamente. Se resuelve y la solución es:

( )

Y las condiciones de holgura complementaria son las siguientes:

x1 · t1 = 0
x2 · t2 = 0
x3 · t3 = 0
x4 · t4 = 0
x5 · t5 = 0
Página 68 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

w1 · s1 = 0
w2 · s2 = 0

Puedo hacer 3 suposiciones:

Supongo que s1 ≠ 0 y que s2 ≠ 0, por lo tanto, aplicando las


condiciones de holgura complementaria, obtengo que w1 = 0 y que w2 = 0. Este punto
es infactible, ya que no se cumple w1 + 2w2 ≥ 10.
También puedo suponer que s1 = 0 y que s2 ≠ 0, por lo tanto w2 = 0 y
hay que calcular w1. Sustituimos w2=0 en todas las ecuaciones:

minimizar 19w1
sujeto a w1 ≥ 10 si w1 = 24 >10  t1 ≠ 0, x1·t1 = 0  x1= 0
w1 ≥ 24 w1 = 24 = 24  t2 = 0  x2 = ?
2w1 ≥ 20 2·24 >20  t3 ≠ 0, x3·t3 = 0  x3 = 0
3w1 ≥ 20 3·24 > 20  t4 ≠ 0, x4·t4 = 0  x4 = 0
5w1 ≥ 25 5·24 > 25  t5 ≠ 0, x5·t5 = 0  x5 = 0

Para averiguar x2 sustituyo los valores de x en la primera restricción del


primal:

x2 + s1 ≤ 19  s1 = 0  x2 =19

Pero entonces no se cumple la restricción 4·x2 ≤ 57, por lo que el


problema es infactible para esta suposición.

Supongo que s1 ≠ 0 y que s2 = 0, por lo tanto, aplicando las


condiciones de holgura complementaria, obtengo que w1 = 0 y debo calcular w2:

minimizar 57w2
sujeto a 2w2 ≥ 10 si w2 = 25 >10  t1 ≠ 0, x1·t1 = 0  x1= 0
4w2 ≥ 24 4·25 > 24  t2 ≠ 0, x2·t2 = 0  x2 = 0
3w2 ≥ 20 3·25 >20  t3 ≠ 0, x3·t3 = 0  x3 = 0
2w2 ≥ 20 2·25 > 20  t4 ≠ 0, x4·t4 = 0  x4 = 0
w2 ≥ 25 25 = 25  t5 = 0  x5 = ?

Para averiguar x5 sustituyo los valores de x en la segunda restricción del primal:

x5 ≤ 57  s2 = 0  x5 = 57

Pero entonces no se cumple la primera restricción 5·x5 ≤ 19, por lo que


el problema es infactible también para esta suposición. Como es infactible para todas
las suposiciones, el problema es infactible.

Si en alguna de las suposiciones se hubieran cumplido las restricciones del


problema primal, esa hubiera sido una solución óptima, pero podría haber más
soluciones óptimas.

Página 69 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.7- MÉTODO SIMPLEX DUAL.

Se puede utilizar el método simplex para resolver el problema dual, pero se hace
directamente, sin aplicar la tabla simplex al problema dual. En su lugar, aplicaremos la
tabla simplex al problema primal y le daremos un tratamiento distinto. Recordemos que
para una tabla simplex tengo dos condiciones: factibilidad y optimalidad, y que un
punto es factible en (P) si es óptimo en (D). Vamos a ver los pasos (4) para resolver un
problema mediante el método simplex dual:

PASO 0: Encontrar un punto (o una base) tal que verifique la condición


de optimalidad. Es decir, que todos los coeficientes del renglón z sean negativos (caso
de minimizar) o positivos (caso de maximizar). No hay que centrarse en el vector de
recursos, sino en el renglón z (última fila).

PASO 1: Se realiza el “Test de Factibilidad”, o sea, comprobar que el


punto es factible, que verifica las condiciones y que en el lado derecho son ≥ 0:

¿ bi ≥ 0 i ?  si  OK

PASO 2: Hay que seleccionar la variable que sale y la variable que


entra.
Primero se toma como variable que sale la que menos verifique la
condición de factibilidad, es decir, la que tenga mayor valor (en valor absoluto) de
entre los negativos en el lado derecho. Si no hubiera ninguna variable que salga
(negativa), la tabla sería óptima.
En segundo lugar seleccionamos la variable que entra. Calculamos los
cocientes del renglón z entre los que sean negativos de la fila de la variable que
sale, y tomaremos como variable que entra la que dé el menor resultado si se trata
de minimizar y la de mayor resultado si el problema es maximizar. Si no hay
ninguna variable que entra (no hay ningún elemento negativo en la fila), existe
una ilimitación en el problema dual, por lo que el primal es infactible.

PASO 3: Se pivota y se vuelve al paso 1. El método garantiza que de


tabla a tabla mantenemos la condición de optimalidad.

EJEMPLO: Método simplex dual:

minimizar 12x1 + 5x2


sujeto a 4x1 + 2x2 ≥ 80
2x1 + 3x2 ≥ 90
x1 , x 2 ≥ 0

SOLUCIÓN:

Primero tenemos que pasarlo a formato estándar. Como en el dual no se


imponen restricciones sobre el lado derecho, multiplico por (1) las ecuaciones que
sean necesarias para que las variables de holgura sean positivas:

Página 70 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

minimizar 12x1 + 5x2 + 0s1 + 0s2 minimizar 12x1 + 5x2 + 0s1 + 0s2
4x1 + 2x2  s1 = 80 4x1  2x2 + s1 = 80

sujeto a sujeto a
2x1 + 3x2  s2 = 90 2x1  3x2 + s2 = 90
x1, x2 ≥ 0 x1, x2 ≥ 0

Ahora construimos la tabla correspondiente. El renglón z debe cumplir la


condición de optimalidad, como estamos en un problema de minimizar, todos los
coeficientes deben ser ≤ 0. Comprobamos que en este caso lo son, con lo que podemos
aplicar el método simplex dual:

12 5 0 0
x1 x2 s1 s2
0 s1 4 2 1 0 80 es la que tiene mayor valor entre los
0 s2 2 3 0 1 90 sale  negativos del lado derecho

12 5 0 0 0

entra
12/2 Se divide el renglón z entre los negativos de la variable que sale y se
5/3 = 5/3
=6 toma el menor resultado

Calculamos la nueva tabla. Dividimos el segundo renglón entre el pivote (3) y


al primer renglón le sumamos el segundo multiplicado por 2:

12 5 0 0
x1 x2 s1 s2
0 s1 8/3 0 1 2/3 20  sale es la que tiene menor valor
entre los negativos del
5 x2 2/3 1 0 1/3 30 lado derecho
26/3 0 0 5/3 150

Entra
(2,5<3,25)
(26/3) / (8/3) = (5/3) / (2/3) = Se divide el renglón z entre los negativos de la
3,25 2,5 variable que sale y se toma el menor resultado

Esta tabla verifica la condición de optimalidad (el método simplex dual nos lo
garantiza), pero no cumple la condición de factibilidad, ya que no todo el lado derecho
es ≥ 0. La función objetivo va empeorando debido a que el método simplex dual parte
de un punto que no está dentro de la región factible pero que tiene un buen valor de la
función objetivo (un punto óptimo no factible). Por tanto, al irnos acercando a la región
factible en busca de un punto factible, la función objetivo empeora, pero nos acercamos
cada vez más a cumplir las restricciones.
Página 71 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Construimos la siguiente tabla, dividimos el primer renglón entre el pivote y al


segundo renglón le resto el primero por 2 y recalculamos Z:

12 5 0 0
x1 x2 s1 s2
0 s2 4 0 3/2 1 30
5 x2 2 1 1/2 0 40
2 0 5/2 0 200

Esta tabla verifica la condición de factibilidad, ya que todo el lado derecho es ≥


0.

( )

EJERCICIO: (Problema 4.2.a de la lista de problemas sugeridos por el


profesor año 2010-2011) Resolver mediante Simplex Dual.:

maximizar -x1 - 2x2- x3


sujeto a 2x1 + x2+ 2x3 ≥ 6
x1 + 3x2 + 4x3≥ 10
xi ≥ 0

SOLUCIÓN:

Primero tenemos que pasarlo a formato estándar.

maximizar -x1 - 2x2- x3


sujeto a 2x1 + x2+ 2x3 -S1 = 6
x1 + 3x2 + 4x3-S2= 10
x i , Si ≥ 0

Como en el dual no se imponen restricciones sobre el lado derecho, multiplico


por (1) las ecuaciones que sean necesarias para que las variables de holgura sean
positivas:

maximizar -x1 - 2x2- x3


sujeto a -2x1 - x2- 2x3 +S1 = -6
-x1 - 3x2 - 4x3+S2= -10
x i , Si ≥ 0

Construimos la tabla Simplex:

-1 -2 -1 0 0
x1 x2 x3 s1 s2
0 s1 -2 -1 -2 1 0 -6
0 s2 -1 -3 -4 0 1 -10
1 2 1 0 0 0
Página 72 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

A continuación seleccionamos las variables que entran y salen.

Primero se toma como variable que sale, que será la que tenga mayor valor
(en valor absoluto) de entre los negativos en el lado derecho (│-10│>│-6│).Es
decir sale S2

En segundo lugar seleccionamos la variable que entra. Calculamos los


cocientes del renglón z (última fila) entre los que sean negativos de la fila de la
variable que sale (fila s2), y tomaremos como variable que entra la que dé el
menor resultado si se trata de minimizar y la de mayor resultado si el problema es
maximizar. 1/-1;2/-3;1/-4→-1;-0,66;-0,25 →-0,25>-0,66>-1. Luego la columna
entrante será x3

Es decir pivotaremos sobre el -4:

-1 -2 -1 0 0
x1 x2 x3 s1 s2
0 s1 -3/2 1/2 0 1 -1/2 -1
-1 x3 1/4 3/4 1 0 -1/4 5/2
3/4 5/4 0 0 1/4 -5/2

Realizamos el Test de Factibilidad, o sea, comprobar que el punto es factible,


que verifica las condiciones y que en el lado derecho son ≥ 0:

¿ bi ≥ 0 i ?  no  Seguimos pivotando

En esta iteración sale s1 pues es la única fila con valores negativos en el lado
derecho. Entra el mayor de entre 3/4:3/2=0,5 y 1/4:-1/2=-0,5 Es decir entra x1.

Es decir pivotamos sobre -3/2: Dividimos toda la 1ª fila entre -3/2. Una vez
realizado, a la 2ª fila le restamos la fila 1ª multiplicada por 1/4. Recalculamos el renglón
Z

-1 -2 -1 0 0
x1 x2 x3 s1 s2
-1 x1 1 -1/3 0 -2/3 1/3 2/3
-1 x3 0 5/6 1 1/6 -1/3 7/3
0 3/2 0 1/2 0 -3

Esta solución es factible ya que todos los elementos del lado derecho son ≥0

Luego la solución será:

( )

Página 73 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

EJERCICIO: (Problema 4.2.b de la lista de problemas sugeridos por el


profesor año 2010-2011) Resolver mediante Simplex Dual.:

minimizar 3x1 + 4x2 + x3


sujeto a x1 + 2x2+ x3 ≥ 12
2x1 + x2 + 4x3≥ 14
xi ≥ 0

SOLUCIÓN:

Primero tenemos que pasarlo a formato estándar.

minimizar 3x1 + 4x2 + x3


sujeto a x1 + 2x2+ x3 -S1 = 12
2x1 + x2 + 4x3 -S1 = 14
xi ≥ 0

Como en el dual no se imponen restricciones sobre el lado derecho, multiplico


por (1) las ecuaciones que sean necesarias para que las variables de holgura sean
positivas:

minimizar 3x1 + 4x2 + x3


sujeto a -x1 - 2x2- x3 +S1 = -12
-2x1 - x2 - 4x3 +S2 = -14
x i , Si≥ 0

Construimos la tabla Simplex:

3 4 1 0 0
x1 x2 x3 s1 s2
0 s1 -1 -2 -1 1 0 -12
0 s2 -2 -1 -4 0 1 -14
-3 -4 -1 0 0 0

Para poder aplicar el método Simplex-Dual debemos comprobar la condición de


optimalidad, verificando que todos los elementos de la fila Z sean ≤0 (al estar
minimizando). Como es así, la tabla es óptima

A continuación comprobamos si esta tabla nos proporciona un punto factible,


para ello todos los elementos del lado derecho (bi) debería ser ≥0. Como no lo son el
punto no es factible luego debemos pivotar.

Primero se toma como variable que sale que será la que tenga mayor valor (en
valor absoluto) de entre los negativos en el lado derecho (│-14│>│-12│).Es decir sale
S2

En segundo lugar seleccionamos la variable que entra. Calculamos los cocientes


del renglón z entre los que sean negativos de la fila de la variable que sale, y tomaremos
Página 74 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

como variable que entra la que dé el menor resultado si se trata de minimizar y la de


mayor resultado si el problema es maximizar.

-3/-2;-4/-1;-1/-4 → 1,5 ; 4 ; 0,25 → 0,25<1,5<4.

Luego la columna entrante será x3.

Pivotamos sobre -4. Realizamos las operaciones típicas: Dividimos toda la fila
del pivote (2ª fila) entre el pivote (-4). La 1ª fila le restamos la 2ª. Recalculamos Z

3 4 1 0 0
x1 x2 x3 s1 s2
0 s1 -1/2 -7/4 0 1 -1/4 -17/2
1 x3 1/2 1/4 1 0 -1/4 7/2
-5/2 -15/4 0 0 -1/4 7/2

A continuación comprobamos si esta tabla nos proporciona un punto factible,


para ello todos los elementos del lado derecho (bi) debería ser ≥0. Como no lo son el
punto no es factible luego debemos seguir pivotando.

Sale S1, al ser la única variable con valor negativo en la columna del lado
derecho.

Entra el menor de :-15/4:-7/4=2,14 ; -1/4:-1/4=1 → 1<2,14. Es decir S2

3 4 1 0 0
x1 x2 x3 s1 s2
0 s1 2 7 0 -4 1 34
1 x3 1 2 1 -1 0 12
-2 -2 0 -1 0 12

Esta solución es factible ya que todos los elementos del lado derecho son ≥0

Luego la solución será:

( )

Página 75 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.7.1- MÉTODO DE LA RESTRICCIÓN ARTIFICIAL.

El método de la restricción artificial sirve para encontrar una primera solución


básica factible, ya que a veces puede resultar complicado. Se usará este método en los
casos en que la primera tabla no cumpla la condición de optimalidad en el renglón z. Lo
veremos mediante un ejemplo:

maximizar 4x1 + x2 maximizar z = 4x1 + x2 + 0s1 + 0s2


4x1 + 3x2 ≤ 12
sujeto a
2x1 + x2 ≥ 4  sujeto a 4x1 + 3x2 + s1 = 12
2x1 x2 + s2 = 4
x1, x2 ≥ 0 x1, x2 ≥ 0

Ya lo hemos pasado a formato estándar. La primera variable de holgura me


sirve como básica, pero a la segunda (s2) le hemos tenido que cambiar el signo.
Construyo ahora la tabla simplex:

4 1 0 0
x1 x2 s1 s2
0 s1 4 3 1 0 12
0 s2 2 1 0 1 4
4 1 0 0 0

La tabla no verifica la condición de optimalidad para el método simplex dual


(como estamos en maximizar, el renglón z (12,-4) debería ser ≥ 0). Tenemos que
aplicar el método de la restricción artificial, que sigue los siguientes pasos:

Paso 1: Identificar las variables que no cumplen la condición de


optimalidad (en este caso son x1 y x2, ya que son < 0)

Paso 2: Se añade la restricción “suma de las variables anteriores ≤ M”


(en este caso sería x1 + x2 ≤ M  x1 + x2 + z1 = M).

Paso 3: Se toma como variable de salida la variable de holgura de la


restricción adicional, y como variable de entrada la que menos verifique la condición de
optimalidad.

Paso 4: Aplicar el método simplex dual.

4 1 0 0 0
x1 x2 s1 s2 z1
0 s1 4 3 1 0 0 12 Sale la variable de
0 s2 2 1 0 1 0 4 holgura de la
restricción adicional
0 z1 1 1 0 0 1 M sale 
4 1 0 0 0 0
 Entra la variable que menos verifique la condición
de optimalidad, en este caso la más negativa, ya
entra que la condición para maximizar es ≥ 0
Página 76 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Ahora pivotamos sobre el 1 y obtenemos la tabla:

4 1 0 0 0
x1 x2 s1 s2 z1
0 s1 0 1 1 0 4 124M
0 s2 0 1 0 1 2 4+2M
4 x1 1 1 0 0 1 M
0 3 0 0 4 4M

Después de esto, el método garantiza que la tabla ya cumple la condición de


optimalidad, como vemos todo el renglón z es ≥ 0 (para maximizar). Hemos tomado un
punto muy lejano (M es muy grande) de la región factible, por eso la función objetivo
ha mejorado (de 0 a 4M). Ahora ya podemos aplicar el método simplex dual con
normalidad:

4 1 0 0 0
x1 x2 s1 s2 z1
0 s1 0 1 1 0 4 124M sale  Sale la variable que
tiene mayor valor entre
0 s2 0 1 0 1 2 4+2M los negativos del lado
derecho (maximizar).
Recordar que M es un
4 x1 1 1 0 0 1 M número muy grande.
0 3 0 0 4 4M
 Entra la variable que tenga el mayor resultado
entra
3/1=3 4/4=1

Pivotamos sobre el 4 y obtenemos:

4 1 0 0 0
x1 x2 s1 s2 z1
0 z1 0 1/4 -1/4 0 1 M3
0 s2 0 1/2 1/2 1 0 2
4 x1 1 3/4 1/4 0 0 3
0 2 1 0 0 12

( )

Pero ahora tenemos que preguntarnos si la solución que hemos obtenido sirve
para nuestro problema original, ya que hemos añadido una restricción y el problema ha
cambiado. Tenemos que fijarnos en el valor de la variable de holgura de la restricción
adicional (z1):

Si z1 ≠ 0 (es básica no nula, no depende de M), la solución obtenida es


solución del problema original.
Si z1 = 0 (es no básica, depende de M), la solución obtenida no es solución
del problema original, el problema es ilimitado.

Página 77 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

EJERCICIO: (Problema 4.2.c de la lista de problemas sugeridos por el


profesor año 2010-2011) Resolver mediante Simplex Dual.:

minimizar 3x1 + 5x2 - x3+ 2x4- 4x5


sujeto a x1 + x2 + x3+ 3x4+ x5 ≤ 6
-x1 - x2 + 2x3+ x4 -x5 ≥ 3
xi ≥ 0

SOLUCIÓN:

Primero tenemos que pasarlo a formato estándar.

minimizar 3x1 + 5x2 - x3+ 2x4- 4x5


sujeto a x1 + x2 + x3+ 3x4+ x5 +S1 = 6
-x1 - x2 + 2x3+ x4 -x5 -S2 = 3
xi ≥ 0

Como en el dual no se imponen restricciones sobre el lado derecho, multiplico


por (1) las ecuaciones que sean necesarias para que las variables de holgura sean
positivas:

minimizar 3x1 + 5x2 - x3+ 2x4- 4x5


sujeto a x1 + x2 + x3+ 3x4+ x5 +S1 = 6
+x1 + x2 - 2x3- x4 +x5 +S2 = -3
xi ≥ 0

Trazamos la tabla simplex:

3 5 -1 2 -4 0 0
x1 x2 x3 x4 x5 S1 S2
0 S1 1 1 1 3 1 1 0 6
0 S2 1 1 -2 -1 1 0 1 -3
-3 -5 1 -2 4 0 0 0

A continuación verificamos la condición de optimalidad. Es decir, que todos los


coeficientes del renglón z sean negativos (caso de minimizar) o positivos (caso de
maximizar). No hay que centrarse en el vector de recursos, sino en el renglón z.

Como no todos los elementos del renglón Z (última fila) son negativos
deberemos aplicar la técnica de la restricción artificial:

1º Identificar las variables que no cumplen la condición de optimalidad (en este


caso son x3 y x5, ya que son > 0)

2ª Se añade la restricción “suma de las variables anteriores ≤ M” (en este caso


sería x3 + x5 ≤ M  x3 + x5 + z1 = M).

Página 78 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

minimizar 3x1 + 5x2 - x3+ 2x4- 4x5


sujeto a x1 + x2 + x3+ 3x4+ x5 +S1 = 6
+x1 + x2 - 2x3- x4 +x5 +S2 = -3
x3 + x5 + z1 = M
xi ; zi ≥ 0

3º Se toma como variable de salida la variable de holgura de la restricción


adicional (Z1), y como variable de entrada la que menos verifique la condición de
optimalidad. Es decir si estamos minimizando elegimos el mayor (del renglón Z) y si
estamos maximizando el menor. Al estar minimizando la variable que entra sería x5
(4>1)

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 S1 1 1 1 3 1 1 0 0 6
0 S2 1 1 -2 -1 1 0 1 0 -3
0 Z1 0 0 1 0 1 0 0 1 M  sale
-3 -5 1 -2 4 0 0 0 0

Entra

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 S1 1 1 0 3 0 1 0 -1 6-M
0 S2 1 1 -3 -1 0 0 1 -1 -3-M
-4 x5 0 0 1 0 1 0 0 1 M
-3 -5 -3 -2 0 0 0 -4 -4M

Ya todos los elementos del renglón Z son ≤0 luego la tabla es óptima y podemos
aplicar el método simplex-dual

4º Aplicar el método simplex dual.

A continuación comprobamos si esta tabla nos proporciona un punto factible,


para ello todos los elementos del lado derecho (bi) debería ser ≥0. Como no lo son el
punto no es factible, luego debemos pivotar.

Primero se toma como variable que sale. Esta será la que tenga mayor valor (en
valor absoluto) de entre los negativos en el lado derecho (│-3-M│>│6-M│).Es decir
sale S2

En segundo lugar seleccionamos la variable que entra. Calculamos los cocientes


del renglón z entre los que sean negativos de la fila de la variable que sale, y tomaremos
como variable que entra la que dé el menor resultado si se trata de minimizar y la de

Página 79 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

mayor resultado si el problema es maximizar. -3/-3=1;-2/-1=2 →1<2. Luego la columna


entrante será x3.

Pivotamos sobre S2 x3. Realizamos las operaciones típicas: Dividimos toda la


fila del pivote (2ª fila) entre el pivote (-3). La 3ª fila le restamos la 2ª. Recalculamos Z:

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 S1 1 1 0 3 0 1 0 -1 6-M
0 x3 1 1 -3 -1 0 0 1 -1 -3-M  sale
-4 x5 0 0 1 0 1 0 0 1 M
-3 -5 -3 -2 0 0 0 -4 -4M

Entra

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 S1 1 1 0 3 0 1 0 -1 6-M
-1 x3 -1/3 1/3 1 1/3 0 0 -1/3 1/3 1+1/3M
-4 x5 1/3 -1/3 0 -1/3 1 0 1/3 2/3 2/3M-1
-4 -4 0 -1 0 0 -1 -3 -3M+7

Volvemos a comprobamos si esta tabla nos proporciona un punto factible, para


ello todos los elementos del lado derecho (bi) debería ser ≥0. Como no lo son (6-M<0)
el punto no es factible, luego debemos volver pivotar.

Primero se toma como variable que sale. Esta será la que tenga mayor valor (en valor
absoluto) de entre los negativos en el lado derecho. Como tan solo la variable S1 tiene
un valor negativo en su elemento del lado derecho (6-M) este será la variable de salida

En segundo lugar seleccionamos la variable que entra. Calculamos los cocientes


del renglón z entre los que sean negativos de la fila de la variable que sale, y tomaremos
como variable que entra la que dé el menor resultado si se trata de minimizar y la de
mayor resultado si el problema es maximizar. Como de la fila de la variable que sale
(S1) solo tiene un elemento negativo (-1) la columna entrante será Z1.

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 S1 1 1 0 3 0 1 0 -1 6-M
-1 x3 -1/3 1/3 1 1/3 0 0 -1/3 1/3 1+1/3M
-4 x5 1/3 -1/3 0 -1/3 1 0 1/3 2/3 2/3M-1
-4 -4 0 -1 0 0 -1 -3 -3M+7

Pivotamos sobre S1 Z1. Realizamos las operaciones típicas: Dividimos toda la


fila del pivote (1ª fila) entre el pivote (-1). La 2ª fila le restamos la 1ª multiplicada por
1/3. La 3ª fila le restamos la 1ª multiplicada por 2/3. Recalculamos Z:
Página 80 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

3 5 -1 2 -4 0 0 0
x1 x2 x3 x4 x5 S1 S2 Z1
0 Z1 -1 -1 0 -3 0 -1 0 1 -6+M
-1 x3 0 2/3 1 4/3 0 1/3 -1/3 0 3
-4 x5 1 1/3 0 5/3 1 2/3 1/3 0 3
-7 -7 0 -10 0 -3 -1 0 -15

Volvemos a comprobamos si esta tabla nos proporciona un punto factible, para


ello todos los elementos del lado derecho (bi) debería ser ≥0. Como SI lo son el punto
es factible. La solución sería:

( )

EJERCICIO: (Problema 5.6 de la lista de problemas sugeridos por el


profesor año 2010-2011) Dado el problema de programación lineal:

Max.: x1 + x2 +2x3
s.a.: 2x1 + x2+ x3 ≤ 8
x1 - 2x2 + 2x3 ≤ 10
xi ≥ 0

a) Formular y resolver el problema dual usando el método del simplex


dual.

b) Hacer un análisis de sensibilidad en los costos de la función objetivo.

c) Si cambiamos los costos a (3/2; 1; 5/2) ¿cambia la base óptima?

SOLUCIÓN:

a) Formular y resolver el problema dual usando el método del simplex dual.

Pasamos a formato dual (D). Recordemos que:

 Los coeficientes de la función objetivo del dual son el término independiente de


las restricciones del primal.
 Los coeficientes de las restricciones del dual son los coeficientes traspuestos de
las restricciones del primal.
 Los términos independientes de las restricciones del dual son los coeficientes de
la función objetivo del primal.
 Los signos de las variables van según la dualidad extendida,
 Los signos de las restricciones van según la dualidad extendida

Página 81 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Dualidad Extendida

Minimizar  Maximizar
≥ ≥0
Restricciones = libres Variables
≤ ≤0
≥0 ≤
Variables libres = Restricciones
≤0 ≥

(P) Max.: x1 + x2 +2x3


s.a.: 2x1 + x2+ x3 ≤ 8
x1 - 2x2 + 2x3 ≤ 10
xi ≥ 0

(D) Min.: 8w1+10w2


s.a.: 2w1+1w2 ≥1
1w1-2w2≥1
1w1+2w2≥2
wi ≥ 0
Ya tenemos el problema Primal (P) pasado a Dual (D). A continuación
resolvemos el problema Dual. Para ello, podemos o bien realizarlo gráficamente pues
tenemos dos variables (w1, w2) o bien por el método tradicional Simplex-Dual. Lo
haremos por este último:

Primero tenemos que pasarlo a formato estándar.

(D) Min.: 8w1+10w2


s.a.: 2w1+1w2 - t1 =1
1w1-2w2- t2 =1
1w1+2w2- t3 =2
wi ; ti ≥ 0

Como en el dual no se imponen restricciones sobre el lado derecho, multiplico


por (1) las ecuaciones que sean necesarias para que las variables de holgura sean
positivas:

(D) Min.: 8w1+10w2


s.a.: -2w1-1w2 + t1 = -1
-w1 + 2w2 + t2 = -1
-w1 - 2w2 + t3 = -2
wi ; ti ≥ 0

Página 82 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Trazamos la tabla simplex:

8 10 0 0 0
w1 w2 t1 t2 t3
0 t1 -2 -1 1 0 0 -1
0 t2 -1 2 0 1 0 -1
0 t3 -1 -2 0 0 1 -2
-8 -10 0 0 0 0

PASO 0: Encontrar un punto (o una base) tal que verifique la condición de


optimalidad. Es decir, que todos los coeficientes del renglón z sean negativos (caso de
minimizar) o positivos (caso de maximizar). No hay que centrarse en el vector de
recursos, sino en el renglón z (última fila).

En nuestro caso que estamos minimizando y la fila z son todos ≤0 la tabla es


optima.

PASO 1: Se realiza el “Test de Factibilidad”, o sea, comprobar que el


punto es factible, que verifica las condiciones y que en el lado derecho son ≥ 0:

¿ bi ≥ 0 i ?  si  OK

En nuestro caso no todos los elementos del lado derecho son ≥0, luego pasamos
al paso 2.

PASO 2: Hay que seleccionar la variable que sale y la variable que


entra.
Primero se toma como variable que sale la que menos verifique la
condición de factibilidad, es decir, la que tenga mayor valor (en valor absoluto) de
entre los negativos en el lado derecho. Si no hubiera ninguna variable que salga
(negativa), la tabla sería óptima.
En nuestro caso sale t3 que tiene el mayor valor (2>1>1)

En segundo lugar seleccionamos la variable que entra. Calculamos los


cocientes del renglón z entre los que sean negativos de la fila de la variable que
sale, y tomaremos como variable que entra la que dé el menor resultado si se trata
de minimizar y la de mayor resultado si el problema es maximizar. Si no hay
ninguna variable que entra (no hay ningún elemento negativo en la fila), existe
una ilimitación en el problema dual, por lo que el primal es infactible.
En nuestro caso entraría w2 (min[10/2;8/1] )

PASO 3: Se pivota y se vuelve al paso 1. El método garantiza que de


tabla a tabla mantenemos la condición de optimalidad.

Página 83 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

8 10 0 0 0
w1 w2 t1 t2 t3
0 t1 -2 -1 1 0 0 -1
0 t2 -1 2 0 1 0 -1
0 t3 -1 -2 0 0 1 -2 Sale
-8 -10 0 0 0 0

Entra

Pivotamos sobre ese elemento y nos quedaría:

8 10 0 0 0
w1 w2 t1 t2 t3
0 t1 -3/2 0 1 0 -1/2 0
0 t2 -2 0 0 1 1 -3 Sale
10 w2 1/2 1 0 0 -1/2 1
-3 0 0 0 -5 10

Entra

Aun seguimos con elementos del lado derecho negativo, asi que debemos
pivotar. Ahora sale t2 y entra w1:

8 10 0 0 0
w1 w2 t1 t2 t3
0 t1 0 0 1 -3/4 5/8 9/4
8 w1 1 0 0 -1/2 -1/2 3/2
10 w2 0 1 1 1/4 1/4 1/4
0 0 0 -3/2 -13/2 29/2

Volvemos a verificar la condición de factibilidad, comprobando si todos los elementos


del lado derecho son positivos. Como es asi la tabla es la solución al problema dual:

( )

b) Hacer un análisis de sensibilidad en los costos de la función objetivo.

La metodología más corta, partiendo de la tabla óptima del problema dual (D) es
leerla de la misma tabla:

( )

Página 84 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

El valor de Z será sustituyendo los valores de las variables en la función objetivo


del Primal (P):

Max.: x1 + x2 +2x3 0+3/2+2∙13/2=29/2

 Para un variación en C1:

C1→ C1 +∆C1

La variación el el vecor del lado derecho es:

⁄ ⁄
( ) ( ⁄ ⁄ ) ( ) ( )
⁄ ⁄

Luego la nueva tabla quedaría asi:

8 10 0 0 0
w1 w2 t1 t2 t3
0 t1 0 0 1 -3/4 5/8 9/4 +∆C1
8 w1 1 0 0 -1/2 -1/2 3/2 +0
10 w2 0 1 1 1/4 1/4 1/4 +0
0 0 0 -3/2 -13/2 29/2

Verificamos la condición de factibilidad (vector de lado derecho mayor o


igual a0):

9/4+∆C1≥0 → ∆C1 ≥ 9/4

[ ( )] [ ] [ ]

Página 85 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.8- SENSIBILIDAD.

El análisis de sensibilidad evalúa la validez de la solución óptima calculada si


ocurrieran pequeños cambios en los valores que determinan los problemas. Este tipo de
análisis siempre considerará que sólo cambia uno de los valores que puedan cambiar.

2.8.1- ANÁLISIS DE SENSIBILIDAD EN EL VECTOR DE COSTES.

Usaremos como ejemplo el problema de los trenes y soldados visto


anteriormente:

maximizar 3s + 2t
sujeto a s + t ≤ 80
2s + t ≤ 100
s ≤ 40
s, t ≥ 0

Su tabla óptima calculada anteriormente era:

3 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 1 0 60
3 s 1 0 1 1 0 20
0 s3 0 0 1 1 1 20
0 0 1 1 0 180

Veamos qué ocurriría si cambiamos el beneficio en los soldados fabricados;


si el coeficiente de s (cs) sufre un incremento cs. El nuevo coeficiente de s sería cs +
cs. Esto nos lleva a recalcular el renglón z para comprobar si cambiaría el plan óptimo.
Vamos a ver cuánto podría valer cs para que no cambie el plan óptimo, analizaremos
las variables no básicas porque son las que pueden entrar:

3+ cs 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 -1 0 60
3+cs s 1 0 -1 1 0 20
0 s3 0 0 1 1 1 20
[2∙0]+ [2∙(-1)]+
[2∙1]+ [2∙2]+ [2∙0]+ [2∙60]+
[( 3+cs)∙1] [( 3+cs)∙1]
[( 3+cs)∙0] [( 3+cs)∙(-1)] [( 3+cs)∙0] [( 3+cs)∙20]
+[0∙0]- +[0∙(-1)]-0
+[0∙0]-2 = +[0∙1]-0= +[0∙1]-0= +[0∙20]=
3+cs = =
0 0 1-cs 1+cs 0 180+20cs

A continuación realizamos el Test de Optimalidad (determinar si el paso a una solución


básica adyacente puede mejorar la función objetivo).

Página 86 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Recordemos que:

 Problemas de maximizar: la solución es óptima si todos los elementos de la


fila z son ≥ 0.
 Problemas de minimizar: la solución es óptima si todos los elementos de la
fila z son ≤ 0.

Como en nuestro caso estamos maximizando:

Para s1  renglón z  1  cs ≥ 0  cs ≤ 1


Para s2  renglón z  1 + cs ≥ 0  cs ≥ 1
Por lo tanto: 1 ≤ cs ≤ 1 o lo que es lo mismo: cs  [1, 1]

( )

La solución para las variables básicas no cambia en este intervalo,


modificándose la función objetivo en un valor igual a z`* = cB’.b + ∆cB·b

Esto significa que para el intervalo 1 ≤ cs ≤ 1, el programa óptimo no varía,


pero sí que cambia la función objetivo. Podemos preguntarnos ¿qué ocurre si cs
aumenta por encima de 1?

Si cs > 1, la tabla anterior ya no sería óptima, por lo que habría que iterar. En
este caso entra s1 y sale s3.

3+ cs 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 -1 0 60
3+cs s 1 0 -1 1 0 20
0 s3 0 0 1 1 1 20 sale 
0 0 1-cs 1+cs 0 180+20cs

entra

La tabla resultante es:

3+ cs 2 0 0 0
s t s1 s2 s3
2 t 0 1 0 1 2 20
3+cs s 1 0 0 0 1 40
0 s1 0 0 1 1 1 20
0 0 0 2 1+ cs 160 + 40cs

Para la optimalidad debe cumplirse que 1+cs ≥ 0, por lo tanto cs ≥ 1. Nos
fijamos que en el punto donde cs=1 tenemos dos posibles soluciones:

Página 87 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Intervalo cs = [1, 1]: s = 20 t= 60 z = 180 + 20cs


Intervalo cs = [1, ): s = 40 t= 20 z = 160 + 40cs

Para cs = 1 ambas soluciones son posibles, por lo que en cs = 1 tenemos
soluciones múltiples, y las infinitas soluciones vienen dadas por las bases de ambos
segmentos.

Veamos ahora que ocurriría si cambiamos el beneficio de los trenes


fabricados. El nuevo coeficiente de t sería ts + ts. Hay que recalcular el renglón z
para comprobar si cambiaría el plan óptimo. Igual que antes, analizamos las variables
no básicas porque son las que pueden entrar:

3 2+ ct 0 0 0
s t s1 s2 s3
2+ ct t 0 1 0 1 2 60
3 s 1 0 0 0 1 20
0 s3 0 0 1 1 1 20
0 0 1+2ct 1-ct 0 180 + 60ct

Para s1  renglón z  1 + 2ct ≥ 0  ct ≥ ½

Para s2  renglón z  1  ct ≥ 0  ct ≤ 1

Por lo tanto: 1/2 ≤ ct ≤ 1 o lo que es lo mismo: ct  [1/2, 1]

( )

La solución para las variables básicas no cambia en este intervalo,


modificándose la función objetivo en un valor igual a z`* = cB’.b + ∆cB·b

Veamos qué ocurre si cambio una variable no básica. Por ejemplo,


aumentamos el coste de s1 en cs1.

3 2 0+cs1 0 0
s t s1 s2 s3
2 t 0 1 2 1 0 60
3 s 1 0 1 1 0 20
0 s3 0 0 1 1 1 20
[2∙2]+
[3∙(-1)]
0 0 +[0∙1]- 1 0 180
[0+cs1] =
1-cs1

Página 88 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

El renglón z en s1 es: 1  cs1 ≥ 0  cs1 ≤ 1. Por tanto, mientras cs1 sea


menor que 1 no cambiará el programa óptimo (la solución sigue siendo la misma),
aunque s1 no pasará a ser variable básica. Pero este método sólo sirve si cambiamos los
coeficientes de las variables de uno en uno, no nos vale si cambiamos 2 o más
coeficientes a la vez.

2.8.2- ANÁLISIS DE SENSIBILIDAD EN EL VECTOR DE


RECURSOS.

Vamos a ver qué ocurre cuando cambiamos algún elemento del vector del lado
derecho. Si cambiamos:

b1 → b1 + b1

B1 · b1 = B1 · b1 + B1 · b1

·B1 +b
A b  B ·A1
B ·b1
 B1·b+B1·b

En nuestro problema particular aumentamos el valor de la primera restricción.

Mostremos de nuevo la tabla óptima calculada anteriormente:

3 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 1 0 60
3 s 1 0 1 1 0 20
0 s3 0 0 1 1 1 20
0 0 1 1 0 180

( )

( ) ( ) ( )

Página 89 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

La tabla resultante sería:

3 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 -1 0 60 + 2b1
3 s 1 0 -1 1 0 20 - b1
0 s3 0 0 1 -1 1 20 + b1
0 0 1 1 0 180 + b1

Aplicando la condición de factibilidad en el lado derecho:

60 + 2b1 ≥ 0 b1 ≥ 30


20  b1 ≥ 0  b1 ≤ 20
20 + b1 ≥ 0 b1 ≥ 20

Mientras que la variación de los recursos de la 1ª restricción (b1) esté en el


intervalo [20, 20], el programa óptimo no cambiará. Es decir la restricción nº1 será:

s + t ≤ 80  s + t ≤ 80-20  s + t ≤ 60

s + t ≤ 80  s + t ≤ 80+20  s + t ≤ 100

Quedando los resultados así:

( )

Pero justo en el punto b1 = 20, tenemos dos bases que generan la misma
solución degenerada (en los puntos límites tenemos soluciones que son generadas por
muchas bases, pero sólo una solución).

Para b1 > 20, el problema no es factible, ya que no cumpliría la condición de


factibilidad en el lado derecho (≥0). Aplicaríamos aquí el método simplex dual:

Primero se toma como variable que sale, que es la que tenga menor valor entre
los negativos en el lado derecho. Si no hubiera ninguna variable que salga (negativa), la
tabla sería óptima.

En segundo lugar seleccionamos la variable que entra. Calculamos los cocientes


del renglón z entre los que sean negativos de la fila de la variable que sale, y tomaremos
como variable que entra la que dé el menor resultado si se trata de minimizar y la de
mayor resultado si el problema es maximizar. Si no hay ninguna variable que entra (no
hay ningún elemento negativo en la fila), existe una ilimitación en el problema dual, por
lo que el primal es infactible.

Página 90 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

3 2 0 0 0
s t s1 s2 s3
2 t 0 1 2 1 0 60 + 2b1
3 s 1 0 1 1 0 20  b1 Sale
0 s3 0 0 1 1 1 20 + b1
0 0 1 1 0 180 + b1

Entra

3 2 0 0 0
s t s1 s2 s3
2 t 2 1 0 1 0 100
0 s1 1 0 1 1 0 0
0 s3 1 0 0 0 1 40
1 0 0 2 0 200

Esta solución será óptima siempre que b1 > 20.

Resumiendo, para un b1 = 20 tendríamos dos zonas:


t = 60+2b1 t=100
s = 20-b1 z=200
z =180+b1

2.8.3- ADICIÓN DE VARIABLES.

Lo veremos con un ejemplo:

Partimos del siguiente P.P.L.:

Maximizar 2x1 + 3x2 + 5x3


Sujeto a x1 + x2 + 2x3 ≤ 8
x1 − x2 + x3 ≤ 4
xi ≤ 0

Resolviendo llegamos a la tabla óptima después de la iteración III (Tabla


III→TIII):

2 3 5 0 0
x1 x2 x3 s1 s2
3 x2 1 1 2 1 0 8
0 s2 2 0 3 1 1 12
1 0 1 3 0 24

En este momento nos proponen producir un nuevo elemento x4 y nos hacemos


las siguientes preguntas:

Página 91 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

¿Nos conviene producirlo?


¿Cuánto estaríamos dispuestos a pagar por él?

De la nueva variable x4 nos dan los coeficientes y nuestro problema se convierte


en:
Maximizar 2x1 + 3x2 + 5x3 + 16x4
Sujeto a x1 + x2 + 2x3 + 5x4 ≤ 8
x1 − x2 + x3 − x4 ≤ 4
xi ≤ 0

A la hora de introducir este vector en la tabla, no puede hacerse directamente,


pues x4 no está expresado en función de la base de la solución óptima. Por tanto, previo
a introducirlo en la tabla, debemos expresar x4 en función de la base de la solución
óptima mediante la expresión:
̂ ̂ ( ) ( ) ( )

Recalculamos la fila Z, quedando así la nueva tabla III con la adición de la


variable x4 será:

2 3 5 0 0 16
x1 x2 x3 s1 s2 x4
3 x2 1 1 2 1 0 5 8
0 s2 2 0 3 1 1 4 12
(3∙5)+
1 0 1 3 0 (0∙4)-16= 24
−1

Vemos si cumple la condición de optimalidad:

Si verifica la condición de optimalidad, no interesa introducir la nueva


variable en la base.
Si no verifica la condición de optimalidad, interesa introducir la nueva
variable en la base.

En este caso el renglón z de x4 es −1, por lo tanto, al no verificar la condición de


optimalidad nos conviene introducirla en la base. Ahora volvemos a aplicar el simplex:

Entra la variable que menos cumple la condición de optimalidad, al estar


maximizando, la que tenga menor valor entre los negativos de la fila z.

Sale la variable cuyo cociente del lado derecho entre sus correspondientes
elementos positivos en la columna de la variable que entra sea el más pequeño
(8/5<12/4).

Página 92 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2 3 5 0 0 16
x1 x2 x3 s1 s2 x4
3 x2 1 1 2 1 0 5 8 Sale
0 s2 2 0 3 1 1 4 12
1 0 1 3 0 −1 24

Entra

, entra x4, sale x2 y calculamos la nueva tabla:

2 3 5 0 0 16
x1 x2 x3 s1 s2 x4
16 x4 1/5 1/5 2/5 1/5 0 1 8/5
0 s2 6/5 −4/5 7/5 1/5 1 0 28/5
6/5 1/5 7/5 16/5 0 0 128/5

Observamos que ya es óptima, pues todos los elementos del renglón Z son ≥0:

( ) ⁄

Esto significa que estaría dispuesto a pagar como máximo 8/5 por esa nueva
variable, interesa producirlo porque mejora el valor de la función objetivo (25,6>24).

En vez de añadirse nuevas variables, también puede pasar que cambie alguna
variable, en cuyo caso:

Si cambia una variable no básica se hace igual que si fuera una variable
nueva.
Si cambia una variable básica, supongo que la variable con los cambios
es una variable nueva (dejando la antigua) y construyo la nueva tabla. Luego se pivota
de forma que salga la antigua y entre la nueva. Una vez que haya salido la antigua,
tacho su columna.

2.8.4- ADICIÓN DE RESTRICCIONES.

También se pueden añadir nuevas restricciones al problema original. Como


ejemplo pondremos el mismo problema anterior.

Maximizar 2x1 + 3x2 + 5x3


Sujeto a x1 + x2 + 2x3 ≤ 8
x1 − x2 + x3 ≤ 4
xi ≥ 0

Página 93 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

La tabla óptima después de la iteración III (Tabla III:TIII):

2 3 5 0 0
x1 x2 x3 s1 s2
3 x2 1 1 2 1 0 8
0 s2 2 0 3 1 1 12
1 0 1 3 0 24

La solución óptima del problema anterior con 3 variables es:

( )

Y ahora nos dicen que tenemos que añadir la restricción 2x1 + x2 ≤ 5.

Primero tengo que comprobar si la solución óptima verifica la nueva restricción,


ya que si fuera así no tendría que hacer nada más:

2·0 + 8 ≤ 5   no la verifica.

Luego le añadimos a la tabla óptima la fila de la nueva restricción, como


variable básica:

2x1 + x2 + s3 = 5

2 3 5 0 0 0
x1 x2 x3 s1 s2 s3
3 x2 1 1 2 1 0 0 8
0 s1 2 0 3 1 1 0 12
0 s3 2 1 0 0 0 1 5
1 0 1 3 0 0 24

Pero hemos añadido la nueva restricción sin transformarla como hacíamos antes
para la tabla III. Como resultado de no haber pivotado lo que hemos obtenido no es una

tabla simplex, ya que la columna x2 debería ser ( ). Tenemos que pivotar hasta

conseguir un 0, a la tercera fila le resto la primera y obtengo:

2 3 5 0 0 0
x1 x2 x3 s1 s2 s3
3 x2 1 1 2 1 0 0 8
0 s1 2 0 3 1 1 0 12
0 s3 1 0 −2 −1 0 1 −3 
1 0 1 3 0 0 24

Página 94 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

Ahora sí es una tabla simplex, pero ya no es factible, porque hay elementos


negativos en el lado derecho. Tengo que aplicar el simplex dual. Recordemos la
metodología del método simplex dual:

Primero se toma como variable que sale, que es la que tenga menor valor entre
los negativos en el lado derecho. Si no hubiera ninguna variable que salga (negativa), la
tabla sería óptima.

En segundo lugar seleccionamos la variable que entra. Calculamos los cocientes


del renglón z entre los que sean negativos de la fila de la variable que sale, y tomaremos
como variable que entra la que dé el menor resultado si se trata de minimizar y la de
mayor resultado si el problema es maximizar. Si no hay ninguna variable que entra (no
hay ningún elemento negativo en la fila), existe una ilimitación en el problema dual, por
lo que el primal es infactible.

Luego Sale s3, y entra x3:

2 3 5 0 0 0
x1 x2 x3 s1 s2 s5
3 x2 2 1 0 0 0 1 5
0 s1 7/2 0 0 −1/2 1 3/2 15/2
5 x3 − 1/2 0 1 1/2 0 − 1/2 3/2
3/2 0 0 5/2 0 1/2 45/2

Esta tabla ya es óptima. Notamos que el valor de la función objetivo ha


disminuido (ha empeorado), esto es normal, ya que al añadir más restricciones la
función objetivo nunca va a mejorar:

( ) ⁄

2.8.5- ANÁLISIS PARAMÉTRICO DE LA SENSIBILIDAD.

El análisis paramétrico de la sensibilidad se utiliza para comprobar cómo afecta


algún parámetro (por ejemplo el tiempo) sobre los costos o sobre el lado derecho.

2.8.5.1- VECTOR DE COSTOS.

Tenemos el problema:
Minimizar −x1 − 3x2
Sujeto a x1 + x2 ≤ 6
−x1 + 2x2 ≤ 6
x1 , x 2 ≥ 0

Página 95 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

La tabla óptima que obtenemos después de aplicar el método simplex es:

−1 −3 0 0
x1 x2 s1 s2
−1 x1 1 0 2/3 −1/3 2
−3 x2 0 1 1/3 1/3 4
0 0 −5/3 −2/3 −14

Pero esto es en el día de hoy. Si queremos saber cómo evolucionará el sistema a


través del tiempo nos hace falta otro dato, que sería la función objetivo variable. En
este caso es:

( )

Modificamos ahora la tabla para que incluya al tiempo. Sustituimos los valores
de x1 y x2 con los nuevos valores y recalculamos el renglón Z de la forma habitual.

−1+2t −3+t 0 0
x1 x2 s1 s2
−1+2t x1 1 0 2/3 −1/3 2
−3+t x2 0 1 1/3 1/3 4
0 0 −5/3 + (5/3)t −2/3 − (1/3)t −14 + 8t

Esta tabla es la misma que la anterior para el instante t = 0. Imponemos la


condición de optimalidad al renglón z, sabiendo que debemos incluir el instante t = 0:

−5/3 + (5/3) t ≤ 0  t ≤ 1

−2/3 − (1/3) t ≤ 0  t ≥ −2

Para −2 ≤ t ≤ 1 obtenemos:

( )

Por tanto, la función objetivo es óptima hasta t = 1, a partir de entonces habrá


que replantearse el problema. En la práctica, no esperaremos hasta que haya
transcurrido todo un año (suponiendo t en años) para recalcular el problema, sino que
plantearemos de nuevo el problema cada vez que tenga lugar algún hecho que pueda
influir en las variables.

Página 96 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.8.5.2- VECTOR DEL LADO DERECHO.

Hacemos lo mismo que en el apartado anterior, pero suponiendo que lo que


varían son los recursos:

minimizar −x1 − 3x2


sujeto a x1 + x2 ≤ 6
−x1 + 2x2 ≤ 6
x1 , x 2 ≥ 0

El nuevo vector de recursos es (dato):

( )

No puedo coger el nuevo lado derecho y ponerlo en la tabla sin más, hay que
calcular el nuevo lado derecho:

⁄ ⁄
( ⁄ ) ( ) ( ) ( ⁄ )
⁄ ⁄

( ) ( ) ( )

La tabla queda:

−1 −3 0 0
x1 x2 s1 s2
−1 x1 1 0 2/3 −1/3 2 + (5/6) t
−3 x2 0 1 1/3 1/3 4 + (1/6) t
0 0 −5/3 −2/3 −14 − (4/3) t

Ahora imponemos la condición de factibilidad:

2 + (5/6) t ≥ 0  t ≥ −12/5
4 + (1/6) t ≥ 0  t ≥ −2/3 (esta es la condición más restrictiva)

Para t ≥ −2/3

( )

La diferencia con respecto al punto anterior es que los valores del vector X* (x1
y x2) dependen del parámetro t.

Página 97 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 2 – Programación Lineal.

2.8.6- ANÁLISIS DE TOLERANCIA.

El análisis paramétrico de la sensibilidad puede parecer interesante porque es


fácil predecir el futuro, pero no siempre sabemos cómo van a evolucionar los costos y
las disponibilidades. Para ello empleamos el análisis de tolerancia, que se puede hacer
en el vector de coste o en el del lado derecho.

Si ya hemos resuelto el problema, transcurrido un tiempo nos daremos cuenta de


que el coste ha variado lo suficiente como para replantearme el problema, podríamos
sustituir el nuevo vector de coeficientes y comprobar si cumple la condición de
optimalidad.

Vamos a hacer el análisis de tolerancia en el vector de costos:

PASO 1: Determinar las cantidades máximas permitidas para los


incrementos y las disminuciones de cada coeficiente de la función objetivo, es decir, un
análisis de sensibilidad para cada ci. El máximo incremento permitido de ci para que la
base siga siendo óptima es ∆+i, y la máxima disminución ∆−i.

PASO 2: δ es el auténtico incremento de c. Supongamos que teníamos


c, que se ha transformado en ĉ, ahora tenemos que calcular los auténticos incrementos:

̃ ̃
{ }

̃ ̃
{ }

PASO 3: Calcular la llamada regla del 100%:

∑ ∑

Donde ∑ representa el porcentaje de la modificación admisible de


dicho coeficiente que estoy usando.

 Si la fórmula es ≤ 100, significa que la base se mantiene, podemos


continuar con el problema.
 En caso contrario habría que cambiar de base, ya que la solución ya no
sería óptima (habría que replantearse el problema).

Para hacer el análisis de tolerancia en el vector del lado derecho se procede de


forma análoga sustituyendo b por c.

Página 98 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

TEMA 3: Programación Lineal Entera

3.1- PROBLEMAS DE ASIGNACIÓN Y TRANSPORTE.

Vamos a abordar un nuevo problema, cuya programación conduce a un


problema de programación lineal en el que algunas veces las variables se pueden
considerar enteras. La condición de que las variables sean enteras no es tan importante,
ya que en los problemas de transporte casi se impone por naturaleza. Un problema de
transporte también engloba a otros tipos de problemas que se resuelven con el mismo
modelo.

Un problema de transporte tiene los siguientes elementos:

 Hay unos nodos que actúan como orígenes.


 Otros nodos actúan como destinos.
 El objetivo es transportar un producto de los nodos de origen, a los nodos
de destino.
 Hay que dotar al problema de una estructura de costos, y asociado a cada
ruta hay un cij que es el coste unitario de transporte del origen i al nodo j.

Si no se imponen restricciones adicionales, la solución es trivial (lo más barato


es no transportar nada). Es necesario:

Asociar a cada origen un oi, que es la oferta o capacidad de suministro


que tiene ese origen. La mercancía que sale de ese origen no puede
exceder de oi.
Asociar a cada destino un dj, que es la demanda que hay que satisfacer en
el destino j.
Calcular xij, que son las cantidades transportadas desde el origen i al
destino j.

origen 1 destino 1

origen 2 destino 2

origen 3 destino 3
cij
origen ... destino ...
...
origen n destino m

Página 99 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Como tenemos que minimizar el costo del transporte nos planteamos el siguiente
problema:

minimizar Σi,j cij · xij


sujeto a Σj xij ≤ oi Para i = 1, 2, ... n
Σi xij ≥ di Para j = 1, 2, ... m
xij ≥ 0  i,j
xij  Z  i,j (x es entero, condición que se da en algunos
casos)

Definimos oT como la suma de todas las ofertas: Σi Σj xij ≤ Σi oi = oT

Definimos dT como la suma de todas las demandas: Σi Σj xij ≥ Σj dj = dT

Y debe cumplirse que oT ≥ dT, la demanda total debe ser menor que la oferta
total, si no sería un problema infactible. En la vida real significaría que no somos
capaces de satisfacer toda la demanda, ya que no tenemos suficientes productos.

Si la demanda es mayor que la oferta se crea un nodo de origen ficticio cuya


oferta sea igual a la cantidad que necesito, para que el problema tenga solución, y con
coste de transporte nulo. La oferta del nodo ficticio es: o = dT − oT. Con esto
conseguimos que el problema esté balanceado o equilibrado.

Si la oferta fuera mayor que la demanda se puede crear un nodo de destino


ficticio cuya demanda sea: d = oT − dT, así el exceso de oferta va a parar al nodo de
destino ficticio. Al igual que en el caso anterior, el coste de transportar esos productos
sería cero.

Sea como sea el problema original se puede construir un problema de transporte


balanceado, por lo que podemos añadir una nueva igualdad:

oT = dT
Para que esto se cumpla:

Σi Σj xij = Σi oi

Σj Σi xij = Σj dj
Y la nueva formulación del problema queda como sigue:

minimizar Σi,j cij · xij


sujeto a Σj xij = oi Para i = 1, 2, ... n
Σi xij = di Para j = 1, 2, ... m
xij ≥ 0  i,j

Página 100 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Pero me sigo preguntando si todos los problemas de transporte tienen solución, y


la respuesta es sí:

Propiedad: Todos los problemas de transporte balanceados tienen


solución óptima finita.

Demostración: Si el problema es factible y no es ilimitado,


necesariamente tiene solución óptima finita. Si somos capaces de
encontrar un punto que satisfaga las ecuaciones ya es factible, podemos
repartir las cantidades proporcionalmente a la oferta y la demanda:

 { }

∑ ∑ ∑ 

∑ ∑ ∑ 

Ya hemos demostrado que existe solución factible. Ahora vamos a demostrar


que no es ilimitado:

Siendo

Luego

Cada variable es ≥ 0 y ≤ oT, cada variable está acotada entre 0 y oT, por lo que
el problema no es ilimitado.

3.1.1- FORMATO TABLA PARA PROBLEMAS DE TRANSPORTE.

El problema anterior se puede resolver por el método simplex, pero podemos


hacer una adaptación al método simplex para facilitar su resolución, esta adaptación se
denomina “formato tabla”.

Página 101 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

En nuestros problemas de transporte tenemos n + m restricciones, pero no


todas son linealmente independientes. Al menos sobra una ecuación para que las demás
sean linealmente independientes. Como mucho tendré n + m  1 ecuaciones
linealmente independientes y por tanto n + m  1 variables básicas en mi simplex,
pero necesitamos saber exactamente cuántas. Veamos antes algunos conceptos. En una
tabla de transporte cada fila representa un origen y cada columna un destino:

m destinos
n orígenes

Además, cada variable puede ser básica o no básica. Si es no básica, vale 0, lo


que me interesa saber de ella no es su valor (es 0), sino el valor del renglón z
correspondiente. En la tabla de transporte hay dos tipos de casillas (o variables):

Casillas o variables no básicas


cij → costo
cij zij  cij → costo reducido

zij  cij

Casillas o variables básicas

cij → costo
ci B B → marca de variable básica
xij → valor de la variable
xij (el costo reducido es 0)

Página 102 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Definición: Un Ciclo en una tabla de trasporte es un conjunto


ordenado de casillas que verifica:

1. La primera y la última casilla coinciden.


2. Cada casilla comparte con la siguiente la fila o la columna.
3. No existen más de dos casillas consecutivas que compartan fila o
columna.

Ejemplos de ciclos:

Propiedad: (relaciona los ciclos con la independencia) un conjunto de


columnas de la matriz de coeficientes de un problema de transporte es linealmente
dependiente si y sólo si se puede formar un ciclo con algunas de sus respectivas casillas.
De esto nos interesa la implicación que tiene: un conjunto de casillas será linealmente
independiente si y sólo si no contiene ciclos. Ejemplo:

Las casillas (o variables)


sombreadas son
linealmente independientes,
ya que no contienen ciclos.
Son m+n1 casillas, por lo
tanto el tamaño de las bases
es m+n1.

Página 103 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

3.2- MÉTODOS GENERALES DE RESOLUCIÓN

3.2.1- MÉTODOS DE GENERACIÓN DE UNA SOLUCIÓN BÁSICA


FACTIBLE.

En el paso 0 del método simplex encontrábamos una solución básica factible.


En los problemas de transporte también tenemos que encontrarla (ya que el método es
una variación del simplex). Para generar una solución básica factible inicial veremos
dos métodos: el método de la esquina noroeste y el método de Vogell.

3.2.1.1- MÉTODO DE LA ESQUINA NOROESTE

Este método no tiene en cuenta los costos. Para aplicarlo, seguir los siguientes
pasos:

PASO 1: Elegir la casilla más al noroeste que no esté tachada ni sea


básica.

PASO 2: Hacerla básica con valor igual al mínimo entre la oferta de esa
fila y la demanda de esa columna.

PASO 3: Tachar la fila o columna donde se haya alcanzado el mínimo.

PASO 4: Actualizar la oferta y la demanda y volver al paso 1.

Ejemplo del Método de la Esquina Noroeste:

Tenemos un problema de transporte con 3 orígenes y 4 destinos:

Destinos Ofertas

35
Orígenes

50

40

Deman 125
-das 45 20 30 30
(bal)

Página 104 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Primero tenemos que comprobar si está balanceado. Sumamos las ofertas por un
lado y las demandas por otro y obtenemos el mismo valor (35+50+40 = 45+20+30+30 =
125), por lo que está balanceado. Ahora elegimos la casilla más al noroeste y la
hacemos básica.

Le ponemos la “B” de básica y le asignamos le menor valor entre la oferta y la


demanda de la fila y la columna en cuestión [min(35;45)=35]. Como hemos agotado la
oferta, ya no me interesa meter más casillas de esta fila, la tacho. Además, tengo que
evitar que se formen ciclos, al tachar la fila me aseguro de que ninguna otra casilla
pueda compartir fila.

B
35
35
50

40
45 20 30 30 125
10
(me quedan
10 de la
oferta de la
primera
columna)

Ahora elijo la siguiente casilla más al noroeste y repito el proceso hasta que
complete todas las ofertas y demandas:

B
35 0
35
B
50 40
10
40
45 20 30 30 125
10
0

Repito el proceso asignando el menor valor de esa fila y columna, tachando en


este caso la columna (la que entra)

Página 105 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

B
35 0
35
B B
50 40 20
10 20
40
45 20 30 30 125
10 0
0
Continuamos:

B
35
35
B B B
50 40 20 0
10 20 20
40
45 20 30 30 125
10 0 10
0
Siguiente adjudicación:

B
35
35
B B B
50 40 20 0
10 20 20
B
40 30
10
45 20 30 30 125
10 0 10
0 0
Y la última será:

B 0
35
35
B B B
50 40 20 0
10 20 20
B B
40 30 0
10 30
45 20 30 30 125
10 0 10 0
0 0

Página 106 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

He conseguido un conjunto de variables que verifican el problema.


Comprobamos que el número de variables básicas es m+n1 (en cada paso tacho una
fila o columna menos en el último que he tachado 2).

m=4
n=3
B = 4+3-1 = 6

Las m+n1 casillas elegidas no forman ciclos y son factibles, por lo que son
una solución básica factible. Pero este método no tiene en cuenta los costos, para
contar con los costos deberíamos aplicar el método de Vogel.

3.2.1.2- MÉTODO DE VOGEL

Este método SI tiene en cuenta los costes, elige como básicas las casillas con
un coste menor:

PASO 1: Para cada fila y columna se calculan las penalizaciones o


costes de oportunidad como la diferencia entre los dos costes más pequeños.

PASO 2: Se elige la fila o columna con mayor penalización y dentro de


esa fila o columna, la casilla más barata. Esta casilla se hace básica con valor igual al
mínimo entre la oferta y la demanda.

PASO 3: Tachar la fila o columna donde se haya alcanzado el mínimo.

PASO 4: Actualizar la oferta y la demanda y volver al paso 1.

Ejemplo del Método de Vogell:

Sea la tabla de transporte con sus costes.

Destinos

8 6 10 9

35
Orígenes

9 12 13 7

50

14 9 16 5

40

45 20 30 30 125

Página 107 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Calculamos la penalización para cada una de las filas y columnas (diferencia


entre costes más pequeños de cada fila o columna):

Penali-
zaciones
9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
8-6=2 35

9 12 13 7
9-7=2 50

14 9 16 5
9-5=4 40

45 20 30 30

En este caso la máxima penalización corresponde a la tercera fila, se elige la


casilla más barata (remarcada) de esta fila. Se hace básica con el valor mínimo
[min(30;40)=30] que satisface, en este caso la demanda, se tacha la columna donde se
ha alcanzado el mínimo y se actualizan.

Penalizaciones→
9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
8-6=2 35

9 12 13 7
9-7=2 50

14 9 16 5
B 40-30=
9-5=4
30 10

30-30=
45 20 30 0

Se vuelven a calcular las penalizaciones, exceptuando aquellas filas o columnas


ya satisfechas. En este caso, la cuarta columna.

Página 108 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

9-8=1 9-6=3 13-10=3


Penalizaciones→

9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
8-6=2 8-6=2 35

9 12 13 7
12-9=3 9-7=2 50

14 9 16 5
B 40-30=
14-9=5 9-5=4
30 10

30-30=
45 20 30 0

La casilla con recuadro en grueso es la elegida [max(2;3;5;1;3;3)=5→fila ª3


min(19;9;16)=9→columna 2ª]. Puede observarse cómo al haber satisfecho una columna,
y habiéndose eliminado ésta del cálculo de las penalizaciones, no varían las
penalizaciones por columnas, pero sí por filas.

Damos el valor a la casilla remarcada y actualizamos valores:

9-8=1 9-6=3 13-10=3


Penalizaciones→

9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
8-6=2 8-6=2 35

9 12 13 7
12-9=3 9-7=2 50

14 9 16 5
B B 10-10=
14-9=5 9-5=4
10 30 0

20-10=
45 20 30 0

Página 109 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Calculamos las penalizaciones. Ahora las penalizaciones por fila no variarán,


pero sí las penalizaciones por columnas.

9-8=1 12-6=6 13-10=3


Penalizaciones→
9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
8-6=2 8-6=2 8-6=2 35

9 12 13 7
12-9=3 12-9=3 9-7=2 50

14 9 16 5
B B 10-10=
14-9=5 9-5=4
10 30 0

20-10=
45 20 30 0

La siguiente asignación será [max(2;3;1;6;3)=6 → columna 2ª; min(6;12) =


6→fila 1ª]. Satisfacemos los valores mínimos:

9-8=1 12-6=6 13-10=3


Penalizaciones→
9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
B 35-10=
8-6=2 8-6=2 8-6=2
10 25
9 12 13 7
12-9=3 12-9=3 9-7=2 50

14 9 16 5
B B
14-9=5 9-5=4 0
10 30
10-10=
45 0 30 0

Calculamos nuevamente las penalizaciones:

Página 110 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

9-8=1 13-10=3

Penalizaciones→ 9-8=1 12-6=6 13-10=3


9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2


8 6 10 9
B 35-10=
10-8=2 8-6=2 8-6=2 8-6=2
10 25
9 12 13 7
13-9=4 12-9=3 12-9=3 9-7=2 50

14 9 16 5
B B
14-9=5 9-5=4 0
10 30
10-10=
45 0 30 0

La siguiente asignación será [max(2;4;1;3)=4 → fila 2ª; min(9;13) =


9→columna 1ª].

Damos valor a la variable y actualizamos filas y columnas:

9-8=1 13-10=3

Penalizaciones→ 9-8=1 12-6=6 13-10=3


9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2


8 6 10 9
B
10-8=2 8-6=2 8-6=2 8-6=2 25
10
9 12 13 7
B 50-45=
13-9=4 12-9=3 12-9=3 9-7=2
45 5
14 9 16 5
B B
14-9=5 9-5=4 0
10 30
45-45=
0 0 30 0

Finalizamos la tabla en las casillas que quedan. Como solo nos queda una
columna asignamos aquella celda que tenga el menor coste (fila 1ª, ya que 10<13)
Página 111 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

9-8=1 13-10=3

Penalizaciones→ 9-8=1 12-6=6 13-10=3


9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2

8 6 10 9
B B 25-25=
10-8=2 8-6=2 8-6=2 8-6=2
10 25 0
9 12 13 7
B
13-9=4 12-9=3 12-9=3 9-7=2 5
45
14 9 16 5
B B
14-9=5 9-5=4 0
10 30

0 0 30-25=5 0

Y la última asignación:

9-8=1 13-10=3

Penalizaciones→ 9-8=1 12-6=6 13-10=3


9-8=1 9-6=3 13-10=3

9-8=1 9-6=3 13-10=3 7-5=2


8 6 10 9
B B 25-25=
10-8=2 8-6=2 8-6=2 8-6=2
10 25 0
9 12 13 7
B B 5-5=
13-9=4 12-9=3 12-9=3 9-7=2
45 5 0
14 9 16 5
B B
14-9=5 9-5=4 0
10 30

0 0 5-5=0 0

Página 112 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

La solución al problema corresponde a la tabla siguiente:

8 6 10 9
B B
10 25
9 12 13 7
B B
45 5
14 9 16 5
B B
10 30

3.2.2- CONDICIONES DE OPTIMALIDAD PARA UN PROBLEMA DE


TRANSPORTE.

Una vez que hemos obtenido una solución básica factible tenemos que
comprobar que cumpla la condición de optimalidad. Para ello emplearemos el
problema dual. Nuestro problema era:

Minimizar ij cij · xij


Sujeto a i xij = oi i = 1, 2, … n (variable dual ui)
j xij = dj j = 1, 2, … m (variable dual vj)
xij ≥ 0

Por lo que el problema dual será de maximizar:

Maximizar ∑ ∑ Maximizar ∑ ∑
Sujeto a u1 + v1 ≤ c11
u1 + v2 ≤ c12  Sujeto a ui + vj ≤ cij
ui, vj son libres

u1 + vm ≤ c1m
u2 + v1 ≤ c21
u2 + v2 ≤ c22

u2 + vm ≤ c2m

un + v1 ≤ cn1
un + v2 ≤ cn2

un + vm ≤ cnm

La solución será óptima cuando verifique las condiciones de holgura


complementaria:

Página 113 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Por la condición de holgura complementaria, si xij es básica (no nula) la holgura


es 0  ui + vj = cij. Como tengo m+n1 variables básicas, tendré m+n1 ecuaciones
del tipo anterior. Por otra parte tendré m+n variables (n “úes” y m “uves”
correspondientes a los orígenes y los destinos), con lo que me queda un sistema de m+n
variables con m+n1 ecuaciones, que será compatible indeterminado. Sin embargo,
este sistema es muy fácil de resolver.

Tomemos la solución básica factible que hemos obtenido anteriormente


aplicando el método de Vogell:

8 6 10 9
B B
u1 = 0 (libre)
10 25
9 12 13 7
B B
u2 = 3
45 5
14 9 16 5
B B
u3 = 6
10 30
v1=6 v2=6 v3=10 v4=2

Los costes serán:

Coste = 10·6 + 10·25 + 9·45 + 13·5 + 9·10 + 5·30 = 1020

Suponemos que una variable queda libre (u1) y le ponemos el valor que
queramos, por comodidad le asignamos el valor cero.

Calculamos a partir de este valor el resto de valores ui y vi para las variables


básicas que hay en la tabla:

La variable x1,2 es básica, la holgura de la restricción 2 del dual debe ser 0 para
que sea óptimo:

u1 + v2 = c12  0 + v2 = 6  v2 = 6 (las vamos poniendo en


cursiva en la tabla)

Seguimos:

u1 + v3 = c13  0 + v3 = 10  v3 = 10
u2 + v3 = c23  u2 + 10 = 13  u2 = 3
u2 + v1 = c21  3 + v1 = 9  v1 = 6
u3 + v2 = c32  u3 + 6 = 9  u3 = 3
u3 + v4 = c34  3 + v4 = 5  v4 = 2

A partir de un valor arbitrario de una variable puedo resolver un sistema de


ecuaciones en cascada.

Página 114 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Lo que obtengo es un conjunto de “u”, “v” y “x”, pero le falta algo para que se
verifique la condición de holgura complementaria, sólo falta que el vector u,v sea
factible (como el renglón z de una tabla simplex):

zij – cij = ui + vj  cij ≤ 0 (que sea negativo o cero)

Entonces tenemos que calcular las cantidades para las variables no básicas (las
básicas están en negrita):

Por ejemplo: x12 = u1 + v2  c12 = 0 + 6  8 = 2

2 10 25 7

45 3 5 2

5 10 3 30

Y esta tabla es óptima porque verifica las condiciones de holgura


complementaria. Para calcular el coste total multiplicamos cada variable básica por su
costo y lo sumamos todo. En este caso el método de Vogel proporciona directamente la
solución óptima factible, pero esto no es siempre así. En muchos casos habrá que
realizar varias iteraciones, que se llevarán a cabo mediante el método de transporte.

VARIANTE DEL MÉTODO VOGEL PARA EL CASO MAXIMIZANTE.

Una variante del método Vogel se presenta cuando el problema original se


encuentra dado en modo maximizante (ejemplo maximizar beneficios), en este caso el
algoritmo a seguir es el siguiente:

PASO 1: Para cada fila y columna se calculan las penalizaciones o


costes de oportunidad como la diferencia entre los dos costes mayores.

PASO 2: Se elige la fila o columna con mayor penalización y dentro de


esa fila o columna, la casilla más CARA. Es casilla se hace básica con valor igual al
mínimo entre la oferta y la demanda.

PASO 3: Tachar la fila o columna donde se haya alcanzado el mínimo.

PASO 4: Actualizar la oferta y la demanda y volver al paso 1.

Página 115 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

3.2.3- MÉTODO DE TRANSPORTE.

Este método nos permite encontrar una solución óptima a partir de una solución
básica factible. Veamos los pasos a seguir:

PASO 0: Encontrar una solución básica factible mediante el Método de


Vogell o el de la Esquina Noroeste.

PASO 1: Realizar el “Test de Optimalidad”:

Calcular los ui y los vj, que son las soluciones del sistema de
ecuaciones. Primero asignamos un valor arbitrario a cualquiera de ellas
(por ejemplo u1=0). Esto lo hacemos para las variables o casillas básicas
“B”:
ui + vj = cij xij básica
Para las casillas no básicas, calcular la fórmula:
ui + vj  cij xij no básica
Test propiamente dicho, se realiza para las casillas no básicas,
que deben ser todas menor o igual que cero para que la tabla se óptima:
ui + vj  cij ≤ 0 xij no básica

PASO 2: Si no se cumple el test de optimalidad hay que hacer otra


iteración:

Seleccionar como variable de entrada la variable no básica que


menos verifique la condición de optimalidad, es decir, la que tenga
mayor valor de ui + vj  cij entre las positivas.
Encontrar el ciclo que forma la casilla que entra con otras casillas
básicas. Sólo hay un ciclo posible.
Marcar con los signos “+” y “” alternativamente las casillas del
ciclo encontrado, empezando por “+” en la casilla de entrada.
Calcular  (tau) como el mínimo de los valores de las casillas con
signo “” en el ciclo.
Sumar  al valor de las casillas marcadas con “+” en el ciclo y
restarlo a las casillas marcadas con “”.
Marcar como básica a la casilla que entra “B” y desmarcar como
básica la casilla del ciclo que haya quedado con valor nulo.

PASO 3: Recalcular la tabla (ui, vj y xij de casillas no básicas) y volver


al paso 1.

Página 116 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

EJEMPLO: Método de Transporte:

Partimos de la solución básica factible obtenida con el método de la esquina


noroeste y pretendemos obtener la solución óptima. Primero calculamos los ui y vj,
obligando a que u1=0:

8 6 10 9
B B
u1 = 0 (libre)
35 5 2 -8
9 12 13 7
B B
u2 = 1
10 20 20 -5
14 9 16 5
B B
u3 = 4
-2 6 10 30
v1=8 v2=11 v3=12 v4=1

Calculamos ui, vj de las casillas básicas.

u1 + v1 = c11  0 + v1 = 8  v1 = 8
u2 + v1 = c21  u2 + 8 = 9  u2 = 1
u2 + v2 = c22  1 + v2 = 12  v2 = 11
u2 + v3 = c23  1 + v3 = 13  v3 = 12
u3 + v3 = c33  u3 + 12 = 16  u3 = 4
u3 + v4 = c34  4 + v4 = 5  v4 = 1

Coste = 35x8 + 9x10 + 12x20 + 13x20 + 16x10 + 5x30 = 1180

Comprobamos que la tabla no es óptima, ya que hay casillas no básicas que son
positivos (para que fuera óptima deberían ser ≤0 todas las casillas no básicas). Ahora
hacemos el pivote: la casilla que entra es el mayor entre los positivos de las no
básicas (la que menos verifica la condición de optimalidad), en este caso la x2,3 = 6.

Buscamos un ciclo formado por la casilla x2,3 y otras básicas y lo


marcamos con sombra en la tabla. Marcamos la casilla x2,3 con “+” y las demás
alternativamente con “+” y “”.
Calculamos  (tau) como el mínimo de los valores de las casillas con
signo “” en el ciclo, lo restamos a las casillas con signo “” y lo sumamos a las casillas
con signo “+”. Excepto para la casilla que entra.
Se desmarcan como básicas las casillas del ciclo que quedan con valor
nulo al restar  (en este caso x33)

Página 117 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

8 6 10 9
B B
u1 = 0 (libre)
35 5 2 -8
9 12 13 7
B B
u2 = 1
10 20 - 20 + -5
14 9 16 5
B B
u3 = 4
-2 6 + 10 - 30
v1=8 v2=11 v3=12 v4=1

 = 10. Deja de ser básica x33 (10-10 =0)

8 6 10 9
B
35
9 12 13 7
B B B
10 10 30
14 9 16 5
B B
10 30

Volvemos a calcular los ui y vj para la nueva tabla


Recalculamos la tabla, las casillas básicas que no estaban en el ciclo se
quedan como estaban y para las no básicas se aplica ui + vj  cij. La casilla que entra
en la base toma el valor 10 porque hay que sumarle  al valor que tenía antes en la
función objetivo (0 al haber sido no básica).

Calculamos ui, vj de las casillas básicas.


u1 + v1 = c11  0 + v1 = 8  v1 = 8
u2 + v1 = c21  u2 + 8 = 9  u2 = 1
u2 + v2 = c22  1 + v2 = 12  v2 = 11
u3 + v2 = c32  u3 + 11 = 9  u3 = -2
u3 + v4 = c34  -2 + v4 = 5  v4 = 7

Casillas no básicas = ui + vj  cij


x12 = u1 + v2 – c12 = 0 + 11 – 6 = 5
x13 = u1 + v3 – c13 = 0 + 12 – 10 = 2
x14 = u1 + v4 – c14 = 0 + 7 – 9 = -2
x24 = u2 + v4 – c24 = 1 + 7 – 7 = 1
x31 = u3 + v1 – c31 = -2 + 8 – 14 = -8
x33 = u3 + v3 – c32 = -2 + 12 – 16 = -6

Página 118 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

8 6 10 9
B
u1 = 0 (libre)
35 5 2 -2
9 12 13 7
B B B
u2 = 1
10 10 30 1
14 9 16 5
B B
u3 = -2
-8 10 -6 30
v1=8 v2=11 v3=12 v4=7

Coste = 35x8 + 9x10 + 12x10 + 13x30 + 9x10 + 5x30 = 1120

Esta tabla no es óptima porque no cumple las condiciones de optimalidad.


Repetimos el proceso y actualizamos la tabla:

8 6 10 9
B
u1 = 0 (libre)
35 5 2 -2
9 12 13 7
B B B
u2 = 1
10 10 30 1
14 9 16 5
B B
u3 = -2
-8 10 -6 30
v1=8 v2=11 v3=12 v4=7

8 6 10 9
B
u1 = 0 (libre)
35 - 5 + 2 -2
9 12 13 7
B B B
u2 = 1
10 + 10 - 30 1
14 9 16 5
B B
u3 = -2
-8 10 -6 30
v1=8 v2=11 v3=12 v4=7

Página 119 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

 = 10. Deja de ser básica x22 (10-10 =0)

8 6 10 9
B B
25 10
9 12 13 7
B B
20 30
14 9 16 5
B B
10 30

Se calculan ui, vj en las variables básicas:


u1 = 0
u1 + v1 = c11  0 + v1 = 8  v1 = 8
u1 + v2 = c11  0 + v2 = 6  v2 = 6
u2 + v1 = c22  u2 + 8 = 9  u2 = 1
u2 + v3 = c23  1 + v3 = 13  v3 = 12
u3 + v2 = c32  u3 + 6 = 9  u3 = 3
u3 + v4 = c34  3 + v4 = 5  v4 = 2

Casillas no básicas = ui + vj  cij


x13 = u1 + v3 – c13 = 0 + 12 – 10 = 2
x14 = u1 + v4 – c14 = 0 + 2 – 9 = -7
x22 = u2 + v2 – c22 = 1 + 6 – 12 = -5
x24 = u2 + v4 – c24 = 1 + 2 – 7 = -4
x31 = u3 + v1 – c31 = 3 + 8 – 14 = -3
x33 = u3 + v3 – c33 = 3 + 12 – 16 = -1

8 6 10 9
B B
u1 = 0 (libre)
25 10 2 -7
9 12 13 7
B B
u2 = 1
20 -5 30 -4
14 9 16 5
B B
u3 = 3
-3 10 -1 30
v1=8 v2=6 v3=12 v4=2 Coste=1.070

Esta tabla no es óptima porque no cumple las condiciones de optimalidad.

Página 120 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Repetimos el proceso y actualizamos la tabla:

8 6 10 9
B B
u1 = 0 (libre)
25 - 10 2 + -7
9 12 13 7
B B
u2 = 1
20 + -5 30 - -4
14 9 16 5
B B
u3 = 3
-3 10 -1 30
v1=8 v2=11 v3=12 v4=7

8 6 10 9
B B
u1 = 0 (libre)
-2 10 25 -7
9 12 13 7
B B
u2 = 3
45 -3 5 -2
14 9 16 5
B B
u3 = 3
-5 10 -3 30
v1=6 v2=6 v3=10 v4=2 Coste=1.020

Y esta tabla ya es óptima porque todos los valores de las variables o casillas no
básicas son menores o iguales que 0. El valor de la función objetivo ha ido mejorando
desde 1180 hasta 1020 (el coste se ha ido reduciendo). Como vemos, la tabla obtenida
es la solución básica factible que proporciona el método de Vogel, pero esto no siempre
es así. El método de Vogel nos da una solución factible que está más cerca de la
solución óptima que la que proporciona el método de la esquina noroeste, pero no tiene
porqué ser la solución óptima.

Propiedad: Dado un problema de transporte, si oi y dj son enteras, el


problema tiene al menos una solución entera. Si debo obtener una solución óptima
entera para el problema, puedo obligar a que las ofertas y las demandas sean enteras,
entonces la solución básica factible que obtengo por los métodos de Vogel o la esquina
noroeste es entera, y la solución óptima obtenida por el método de transporte es también
entera. Esto no quiere decir que todas las soluciones sean enteras, pero sí lo serán las
que calculemos por los métodos que hemos estudiado.

Propiedad: Si a los costos de una fila o una columna de un problema de


transporte balanceado se le suma o resta una misma cantidad, la solución óptima no
cambia.

Página 121 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Demostración: Suponemos que le sumamos una cantidad “k” a la primera


fila, lo que genera unos nuevos costes que llamaremos ĉij:

̂ {

̌ ∑ ̂ ∑ ̂ ∑ ̂

∑ ̂ ∑

̌ ∑ ∑

La nueva z ( ž ) es igual a la antigua z más una constante, por lo tanto los dos
problemas tienen la misma solución.

3.2.3- PROBLEMAS DE TRANSBORDO.

Los problemas de transbordo son un poco diferentes a los de transporte, ya que


además de los nodos origen y destino existen los nodos de transbordo, que son aquellos
que reciben y dan mercancías. Vamos a ver cómo se convierte un problema de
transbordo en otro de transporte con un ejemplo:

EJEMPLO: Problema de Transbordo:

Supongamos que tenemos el siguiente grafo con 7 nodos, los círculos


representan orígenes, los cuadros son destinos y los rombos nodos de transbordo:

Oferta 4 3 Demanda
10 1 10
5
3 5
4 5
4 2
20 2 4 6 25
3
6
15 3 7 10
12

Página 122 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Ahora lo pasamos a una tabla para el método de transporte. Se ponen los nodos
de oferta (orígenes) en las filas y los de demanda (destinos) en las columnas, teniendo
en cuenta que los nodos de transbordo son tanto de oferta como de demanda. Luego se
le asigna el coste correspondiente a cada camino. Los nodos que no están relacionados
(sin olvidar el sentido) tienen un coste unitario muy elevado (ruta imposible, coste M), y
el coste para los nodos de transbordo es 0 (no cuesta nada llevar algo al mismo sitio).
Por último se asignan las ofertas y las demandas de cada nodo. Para los nodos de
transbordo (2; 4; 5) habrá que sumarles, además, la oferta total (o la demanda total).

Destinos

Ofertas
2 4 5 6 7

3 5 M 4 M
1 10

0 4 3 M M
2 20+45

orígenes M M 5 M 12

 3 15

M 0 4 2 3
4 0+45

M M 0 M M 6 M 6
5 0+45

Demandas 0 0 10 25 10
 +45 +45 45

Si en la solución vemos que tenemos que transportar a través de una ruta


imposible (del 2 al 6, por ejemplo), entonces el problema sería infactible. Realmente
esto no es un problema de transporte, es un intento de aproximarlo a un problema de
transporte para darle una solución.

La tabla anterior es un problema de transporte convencional, se resuelve y sale:

Página 123 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Destinos

Ofertas
2 4 5 6 7

3 5 M 4 M
1 10
10
0 4 3 M M
2 65
45 20

orígenes M M 5 M 12

 3 15
15
M 0 4 2 3
4 45
25 15 5
M M 0 M M 6 M 6
5 45
40 5
Demandas  45 45 55 25 10

Analizando el resultado en los nodos trasbordo:

 x21 = 45, por tanto la cantidad que se ha trasbordado a través del nodo 2
es 45-45 = 0, es decir no se ha trasbordado mercancía a través del nodo 2.
 x42 = 25, a través de 4 se ha trasbordado una cantidad de 45-25 = 20.
 x53 = 40, a través de 5 se ha trasbordado una cantidad de 45-40 = 5.

SOLUCIONES DEGENERADAS.

Un problema de transporte contiene soluciones degeneradas cuando no se


cumple la igualdad siguiente:

m+n-1 = nº de casillas con asignación

En este caso para hacerlo no degenerado existen dos metodologías:

1) Añadimos al problema ε posiciones hasta que se cumpla la igualdad


anterior. La asignación de ε posiciones se hace a posiciones
independientes, definidas como aquellas posiciones vacías para las que no
es posible construir un ciclo. En todo caso, la determinación de las
posiciones independientes debe comenzar por aquellas casillas (vacías)
con coste mas bajo, ya que la asignación de ε posiciones a éstas puede
conducir más rápidamente a la solución final.

Página 124 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

2) (Metodología vista en clase 2010-2011) Cuando se producen empates en


la oferta de una fila y una columna se tacha solo una de las dos. La
actualización de los valores de oferta y demanda si se debe realizar. Es
estrategia conduce siempre (salvo error) a una tabla con el numero
apropiado de casillas básicas (aunque tal vez alguna casilla valga 0)

ANÁLISIS DE LA SENSIBILIDAD EN UNA TABLA DE


TRANSPORTES.

Para realizar el análisis de sensibilidad en el vector de costes se opera de forma análoga


al método simplex. A un coste determinado se le da valor en función a un parámetro, se calculan
los ui y los vi y se halla los intervalos en los que se cumple.

Ejemplo. Supongamos que se produce un incremento en el coste de la casilla X12


pasando a ser 6+∆ci. ¿Cuál sería el máximo incremento que mantendría la optimabilidad
de la tabla?

8
6+∆ci B 10 B 9
u1 = 0 (libre)
10 25
12 13
9 B B 7
u2 = 3
45 5
14 9 B 16 5 B
u3 = 3-∆ci
10 30
v1=6 v2=6+∆ci v3=10 v4=2+∆ci

Calculamos los valores de ui y vi en función del nuevo coste y posteriormente los


costes reducidos de las casillas no básicas imponiendo la condición de que sean < 0

u1 + v2 = c12  0 + v2 = 6+∆ci  v2 = 6+∆ci


u1 + v3 = c13  0 + v3 = 10  v3 = 10
u2 + v3 = c23  u2 + 10 = 13  u2 = 3
u2 + v1 = c21  3 + v1 = 9  v1 = 6
u3 + v2 = c32  u3 + 6+∆ci = 9  u3 = 3-∆ci
u3 + v4 = c34  3-∆ci + v4 = 5  v4 = 2+∆ci

Para las casillas no básicas se tiene que cumplir la desigualdad: ui + vj  cij ≤ 0

x11 = u1 + v1 – c11 = 0 + 6 – 8 = - 2
x14 = u1 + v4 – c14 = 0 + 2+∆ci – 9 = -7+∆ci < 0  ∆ci < 7
x22 = u2 + v2 – c22 = 3 +6+∆ci – 12 = -3+∆ci < 0  ∆ci < 3
x24 = u2 + v4 – c24 = 3 +2+∆ci – 7 = -2+∆ci < 0  ∆ci < 2
x31 = u3 + v1 – c31 = 3-∆ci + 6 – 14 = -5-∆ci < 0  ∆ci > -5
x33 = u3 + v3 – c33 = 3-∆ci + 10 – 16 = -3-∆ci < 0  ∆ci > -3

Página 125 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Luego el intervalo para el incremento del coste en el que se sigue manteniendo


la condición de optimabilidad es el definido por -3 ≤ ∆ci ≤ 2

El valor de la función objetivo en este intervalo seria el siguiente:

Coste = 10·(6+∆ci) + 10·25 + 9·45 + 13·5 + 9·10 + 5·30 = 1020+10·∆ci

Para los casos restantes, el proceso es construir la tabla simplex asociada, y a


través de ahí realizar el análisis de sensibilidad.

Para construir la tabla simplex:

1. En la parte superior de la tabla se colocan todas las variables.


2. Colocamos las variables básicas en el lado izquierdo de la tabla. Las
variables básicas son aquellas que han tomado valor en la tabla de transporte.
3. El vector del lado derecho b será aquel formado por los valores de cada
casilla básica.
4. Las columnas de las variables básicas tendrán un 1 en la fila que coincida
con ella misma y en el resto 0. El coeficiente del renglón z de esa columna es siempre 0.
5. Comenzando por la casilla no básica en cuestión establecemos un ciclo y
le asignamos los valores 1, -1 a las casillas de dicho ciclo alternando negativo-positivo y
empezando con signo negativo en la casilla de referencia. El valor en la fila z viene
dado por el coste reducido de dicha casilla básica (ui + vj  cij).
6. Repitiendo este proceso para el resto de las columnas, obtendríamos la
tabla simplex asociada al problema de transporte. Una vez completada esta tabla, se
realiza el análisis de sensibilidad correspondiente.

Ilustramos el proceso pasando a una tabla simplex el ejemplo anterior

8 6 10 9
B B
u1 = 0 (libre)
-2 10 25 -7
9 12 13 7
B B
u2 = 3
45 -3 5 -2
14 9 16 5
B B
u3 = 3
-5 10 -3 30
v1=6 v2=6 v3=10 v4=2 Coste=1.020

Página 126 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Pasos 1 al 4

X11 X12 X13 X14 X21 X22 X23 X24 X31 X32 X33 X34
X12 1 0 0 0 0 10
0
X13 0 1 0 0 0 25
0
X21 0 0 1 0 0 45
0
X23 0 0 0 1 0 50
X32 0 0 0 0 1 10
0
X34 0 0 0 0 0 30
1
0 0 0 0 0 0

Pasos 5 y 6

X11 X12 X13 X14 X21 X22 X23 X24 X31 X32 X33 X34
X12 0 1 0 1 0 1 0 -1
1 -1
0 10
0
X13 1 0 1 0 -1
0 -1
0 1 0 1 25
0
X21 1 0 0 0 1 0 0 0 1 0 0 45
0
X23 -1 0 0 0 0 1 1 -1
1 0 0 50
X32 0 0 -1
0 0 0 -1
0 1 1 1 10
0
X34 0 0 0 1 0 0 0 1 0 0 0 30
1
-2 0 0 -7 0 -3 0 -2 -5 0 -3 0

X11: (el ciclo se indica por celdas sombreadas)

8 6 10 9
B B
- +
9 12 13 7
B B
+ -
14 9 16 5
B B

X14:

8 6 10 9
B B
+ -
9 12 13 7
B B

14 9 16 5
B B
- +

Página 127 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

X22:

8 6 10 9
B B
+ -
9 12 13 7
B B
- +
14 9 16 5
B B

X24:

8 6 10 9
B B
+ -
9 12 13 7
B B
+ -
14 9 16 5
B B
- +

X31:

8 6 10 9
B B
- +
9 12 13 7
B B
+ -
14 9 16 5
B B
- +

X33:

8 6 10 9
B B
- +
9 12 13 7
B B

14 9 16 5
B B
+ -

Página 128 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

3.2.4- PROBLEMAS DE ASIGNACIÓN.

Es un caso especial del problema de transporte donde cada origen oferta 1 y cada
destino demanda 1, aunque todos los caminos son posibles. Un ejemplo típico es
asignar a cada máquina una tarea:

máquina 1 tarea 1

máquina 2 tarea 2

máquina 3 tarea 3

máquina ...
cij tarea…

máquina n tarea m

Un problema de asignación balanceado se formula así:

minimizar   cij · xij


sujeto a j xij = 1 i
i xij = 1 j
xij ≥ 0

Deberíamos añadir la restricción de que las xij sólo pueden ser 0 ó 1, pero no es
necesario, ya que por la propiedad vista al final del apartado 3.2.3 las soluciones son
enteras si las ofertas y las demandas son enteras (1 es entero).

Página 129 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

3.2.4.1.- ALGORITMO HÚNGARO PARA PROBLEMAS DE


ASIGNACIÓN.

El Algoritmo Húngaro sirve para resolver problemas de asignación. Se siguen


los siguientes pasos:

PASO 1: Hacer ceros.

A. Restar a cada fila su mínimo.


B. Restar a cada columna su mínimo.

PASO 2: Encuadrar ceros.

A. En la fila o columna con menor número de ceros libres, encuadrar


uno.
B. Tachar los ceros de la fila y columna del cero encuadrado.
C. Repetir los dos pasos anteriores mientras queden ceros libres.
D. Si se ha encuadrado un cero en cada fila y columna se tiene la
asignación óptima.

PASO 3: Tachar ceros con el menor número de líneas.

A. Marcar las filas sin ceros encuadrados.


B. Marcar las columnas con cero tachado en la fila marcada.
C. Marcar las filas con cero encuadrado en columna marcada.
D. Repetir los dos pasos anteriores mientras se realicen nuevas marcas.
E. Sobrerayar las filas no marcadas y las columnas marcadas.

PASO 4: Mover ceros.

A. Calcular el mínimo de los elementos no sobrerayados.


B. Restar dicho mínimo a los elementos no sobrerayados.
C. Sumar dicho mínimo a los elementos sobrerayados dos veces.
D. Repetir desde el paso 2

Página 130 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

EJEMPLO: Problema de Asignación mediante el Algoritmo Húngaro:

Supongamos que tenemos una tabla de asignación con los costes de 5x5 y la
vamos a resolver mediante el Algoritmo Húngaro. Nos damos cuenta de que está
balanceada, si no lo estuviera tendríamos que balancearla añadiendo líneas ficticias con
coste cero.

12 7 6 5 10 PASO 1 “Hacer ceros”


8 5 9 6 8 Hay que intentar reducirla para lograr tener un cero en
cada fila y columna, que son las casillas que forman la
6 13 9 6 10 base. El algoritmo se basa en la propiedad de que si
10 5 8 9 12 sumamos o restamos una cantidad fija a una fila o
11 12 5 6 3 columna, el problema no cambia.

7 2 1 0 5 Restamos a cada fila el mínimo valor de la fila


3 0 4 1 3
0 7 3 0 4
5 0 3 4 7
8 9 2 3 0

7 2 0 0 5 Ahora restamos a cada columna su mínimo, aunque las


3 0 3 1 3 columnas que ya contengan un cero no cambian nada.
Un 0 significa que a la máquina i se le asigna la tarea j.
0 7 2 0 4 Si elegimos un 0 de una línea, tachamos los demás ceros, ya
5 0 2 4 7 que en la asignación una máquina sólo puede realizar una
8 9 1 3 0 tarea.

7 2 0 0 5 PASO 2 “Encuadrar ceros”.


3 0 3 1 3 Encuadramos un cero de cada fila o columna, empezando
por las que tengan menos ceros libres. El resto de ceros de
0 7 2 0 4 esas líneas se tachan.
5 0 2 4 7
8 9 1 3 0

*
PASO 3 “Marcar y rayar”.
7 2 0 0 5 Marcar las filas sin ceros encuadrados.
3 0 3 1 3 * Marcar las columnas con cero tachado en la fila marcada.
0 7 2 0 4 Marcar las filas con cero encuadrado en columna marcada.
Repetir los dos pasos anteriores mientras se realicen nuevas
5 0 2 4 7 * marcas.
8 9 1 3 0 Sobrerayar las filas no marcadas y las columnas marcadas.

Página 131 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

7 3 0 0 5 PASO 4 “Mover ceros”


2 0 2 0 2 Restamos el mínimo valor (en este caso es “1”) a los
elementos no subrayados y sumárselo a los que están en el
0 8 2 0 4 centro de dos rayas (regla nemotécnica, el cruce de las dos
4 0 1 3 6 rayas parece un signo +). Volvemos al paso 2.
8 10 1 3 0

7 3 0 0 5 PASO 2.
2 0 2 0 2 Esta ya es una solución óptima, pues tenemos un solo cero
encuadrado en cada fila y en cada columna.
0 8 2 0 4
4 0 1 3 6
8 10 1 3 0

12 7 6 5 10 Para calcular el valor de la función objetivo, sumamos las


8 5 9 6 8 posiciones encuadradas en la tabla original.
z* = 6 + 6 + 6 + 5 + 3 = 26
6 13 9 6 10
10 5 8 9 12
11 12 5 6 3

3.2.5- ALGORITMO GENERAL PARA PROBLEMAS DE


PROGRAMACIÓN LINEAL ENTERA.

Los problemas de programación lineal entera pueden parecer fáciles de resolver,


pero nada está más lejos de la realidad, ya que son más complicados que los demás. A
priori, podemos pensar en resolverlos normalmente, y si la solución obtenida es entera,
ya tenemos la solución óptima. Esto es así, pero si la solución obtenida no es entera
tenemos que hacer algo más. Veamos antes algunas definiciones:

Definición: Un problema de programación lineal se dice de


programación lineal entera si alguna o todas las variables está sujeta a la condición de
que tome valores enteros.

 Definición: La condición que obliga a una variable a tomar valores


enteros se denomina “condición de integridad”.

 Definición: Un problema de programación lineal entera se dice puro si


todas las variables deben tomar valores enteros y C, A y B son enteros. Cualquier otro
problema de programación lineal se dice que es mixto.

 Definición: Dado un problema de programación lineal entera, el


problema que se obtiene de él eliminando las condiciones de integridad es su
correspondiente “Problema Relajado”.

Página 132 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

 Definición: La región factible de un problema de programación lineal


entera es la intersección entre la región factible de su problema relajado y el conjunto de
los números enteros (Z).

Podríamos pensar que evaluando los puntos enteros resolveríamos el problema,


pero la realidad es que el número de puntos a evaluar aumenta exponencialmente con la
dimensión. También podríamos intentar resolver el problema relajado y redondear la
solución a los valores más cercanos, pero nos podríamos encontrar con el caso de una
región factible ilimitada y con un elevado número de puntos a evaluar

Vamos a ver las relaciones que existen entre el problema entero y el relajado:

Problema entero Problema relajado


Infactible  Infactible
Ilimitado  Limitado
Solución óptima
No ilimitado  Solución óptima

 Si el problema entero es infactible, no implica nada en el problema


relajado.
 Si el problema relajado es infactible, el problema entero también lo es.
 Si el problema entero es ilimitado, el problema relajado también lo es.
 Si el problema relajado es ilimitado, no implica nada en el problema
entero.
 Si el problema entero tiene solución óptima finita, no implica nada en el
problema relajado.
 Si el problema relajado tiene solución óptima finita, el problema entero
no es ilimitado.
 Si los dos problemas tienen solución óptima finita, la solución del
problema relajado es siempre mejor o igual que la del problema entero.

Página 133 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Para resolver un problema de programación lineal entera se usa el Algoritmo de


Ramificación y Acotación:

 Paso 0: Resolver el problema relajado. Si la solución verifica la


condición de integridad, esa es la solución óptima. En caso contrario se construye el
primer nodo del árbol a partir de la solución obtenida y se ramifica en dos
subproblemas.

 Paso 1: Resolver alguno de los problemas asociados a nodos no


terminales. Si la solución obtenida verifica la condición de integridad y es mejor que
todas las anteriores soluciones, la marcamos como la mejor solución. Si todos los
nodos son terminales, hemos terminado.

 Paso 2: Marcar los nodos terminales y ramificar a partir de algún nodo


no terminal. Volver al paso 1.

 Definición: Un nodo terminal es cuando la solución obtenida verifica la


condición de integridad, o el problema que nos queda es infactible, o el valor objetivo
de ese nodo es peor que la mejor solución ya encontrada.

Si no encontramos ningún valor que verifique la condición de integridad, el


problema es infactible. La solución óptima será la mejor de todas las encontradas.

¿Será mejor resolver el árbol por ramas o por niveles? Al resolver por niveles
tardamos mucho en encontrar una solución entera. Si resolvemos por ramas (también se
llama por profundidad), llegamos antes a los primeros nodos terminales y podemos
descartar grandes ramas antes de resolverlas por el valor de z. Otro método consistiría
en elegir el nodo a resolver en función del valor de la función objetivo, se elegirá el
mejor valor como límite para la solución que podemos obtener a partir de él.

Puede ocurrir que una condición para las variables no sea sólo que sean enteras,
sino que sean múltiplo de algún valor (por ejemplo). En ese caso lo que cambia es la
forma de hacer el corte:

Si x3 debe ser múltiplo de 4 y obtenemos la solución:

( )

Debemos elegir los múltiplos de 4 que estén por encima y por debajo de 7, que
son x3 ≤ 4 y x3 ≥ 8.

Página 134 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

EJEMPLO: Algoritmo de ramificación y acotación:

maximizar 2x1 + x2
sujeto a 5x1 + 8x2 ≤ 68
x1 − x2 ≤ 2
x2 ≤ 6
x1, x2 ≥ 0 enteros

Primero resolvemos el problema relajado por el método simplex y obtenemos:

( )

x*2

x*1

Sabemos que la banda de 4 a 5 no contiene a la solución, ya que ésta debe ser


entera, por lo tanto la puedo eliminar. La solución óptima está en cualquiera de las dos
partes en las que la banda divide a la región factible. Ahora resolvemos dos problemas
(uno por cada zona de la región factible) y la solución óptima será la mejor de las dos
soluciones. Para resolver cada uno de ellos, le añadimos la restricción para que quede
por encima o por debajo de la banda.

Problema PR1:

Resolvemos el problema relajado original añadiendo la restricción x2 ≤ 4. La


solución es:

( )

Vemos que la solución es entera, por lo tanto es la mejor solución que podemos
obtener para esta zona. Por esta zona no seguimos buscando mejores soluciones.

Problema PR2:

Resolvemos el problema relajado original añadiendo la restricción x2 ≥ 5.


Sabemos que el mejor valor para z es de 17.38, pero en el problema PR1 se obtuvo un
valor de 16, lo que quiere decir que puede haber una solución posible entre 16 y 17.38,
debemos seguir buscando. La solución para este problema es:

Página 135 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

( )

Debemos seguir buscando, ya que puede haber una solución que siendo mejor
que 16 puede ser peor que 16.2. Añadimos nuevas restricciones:

Problema PR2.2:

Añadimos la restricción x1 ≥ 6. Obtenemos que el problema es infactible. Este


nodo es terminal.

Problema PR2.1:

Añadimos la restricción x1 ≤ 5. Obtenemos la solución:

( )

Cualquier otra solución que se obtenga por este camino será peor que la solución
del PR1 (z=16), por lo que este nodo también es terminal.

La solución es el nodo PR1.

Vamos a ver la resolución del problema en modo Árbol:

Página 136 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

PR

𝑋 ( ) 𝑍

x2
PR1 PR2
x2 ≤ 4 5 x2 ≥ 5
𝑋 ( ) 𝑍 4 𝑋 ( ) 𝑍
Solución entera.
Nodo Terminal. x1

x2
PR2.1 5
x1 ≤ 5
4 PR2.2
𝑋 ( ) 𝑍
x1 ≥ 6
Nodo Terminal. Infactible.
x1 Nodo Terminal.
5 6

Página 137 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

EJERCICIO: ( Problema 6.1 de la relación de problemas propuestos por


el profesor año 2010-2011)

Una compañía tiene dos plantas de producción, una en Memphis y otra en


Denver, que producen un máximo de 150 y 200 unidades diarias. Debiendo enviar por
avión 120 unidades a Los Ángeles y otras 120 a Boston. La compañía piensa que puede
resultar más barato enviar los productos vía New York y Chicago. Los costos unitarios
son:

A
New York Chicago Los Ángeles Boston
Memphis 8 13 25 28
Desde

Denver 15 12 26 25
New York 0 6 14 16
Chicago 6 0 14 16

SOLUCIÓN:

A Oferta
New York Chicago Los Ángeles Boston 
Memphis 8 13 25 28 150
Desde

Denver 15 12 26 25 200
New York 0 6 14 16
Chicago 6 0 14 16
350
Demanda 120 120
240

Como podemos observar la oferta total no coincide con la demanda total


(120+120≠150+200), por lo que deberemos crear un destino ficticio de coste 0 con la
diferencia (350-240=110ud.).

Recordemos también que al tratarse de un problema de transbordo, a la oferta y


demanda de estos nodos (New York y Chicago) hay que añadirle la oferta y demanda
total. Así quedaría la tabla:

A
Oferta
New Los
Chicago Boston Ficticio 
York Ángeles
Memphis 8 13 25 28 0 150
Desde

Denver 15 12 26 25 0 200
New York 0 6 14 16 0 0+350
Chicago 6 0 14 16 0 0+350
350
Demanda 0+350 0+350 120 120 110
350

Página 138 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Ya tenemos planteado el problema como uno de transporte. Para la resolución


del problema utilizaremos el Método de Vogel. Recordemos los pasos a seguir:

Paso 1: Para cada fila y columna se calculan las penalizaciones o costes de


oportunidad, como la diferencia entre los dos costes más pequeños.

Penalizaciones
Penalizaciones 6-0=6 6-0=6 14-14=0 16-16=0 0-0=0 1ª
1ª N.Y. Ch. L.A. B. F.
8-0=8 M. 8 13 25 28 0
12-0=12 D. 15 12 26 25 0
0-0=0 N.Y. 0 6 14 16 0
0-0=0 Ch. 6 0 14 16 0

Paso 2: Se elige la fila o columna con mayor penalización


[max(0,0,12,8,6,6,0,0,0)=12  Fila 2ª] y dentro de esa fila o columna, la casilla más
barata. Se tomaría la 2ª fila (Detroit) y dentro de esta fila la columna más barata
[min(5,12,26,25,0)=0] es la Ficticia. Esta casilla (D-F) se hace básica con valor igual al
mínimo entre la oferta y la demanda [min(110;200)=110]

Penalizaciones
Penalizaciones 6 6 0 0 0 1ª
1ª N.Y. Ch. L.A. B. F.
8 13 25 28 0
8 M. 150
15 12 26 25 0 B
12 D. 200
110
0 6 14 16 0
0 N.Y. 350
6 0 14 16 0
0 Ch. 350
350 350 120 120 110

Paso 3: Tachar (rellenamos de rojo) la fila o columna donde se haya alcanzado


el total de la oferta o demanda.

Página 139 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
Penalizaciones 6 6 0 0 0 1ª
1ª N.Y. Ch. L.A. B. F.
8 13 25 28 0
8 M. 150
15 12 26 25 0 B
12 D. 200
110
0 6 14 16 0
0 N.Y. 350
6 0 14 16 0
0 Ch. 350
350 350 120 120 110

Paso 4: Actualizar la oferta y la demanda y volver al paso 1.

Penalizaciones
Penalizaciones 6 6 0 0 0 1ª
1ª N.Y. Ch. L.A. B. F.
8 13 25 28 0
8 M. 150
15 12 26 25 0 B 200-
12 D. 110=
110 90
0 6 14 16 0
0 N.Y. 350
6 0 14 16 0
0 Ch. 350
110-
350 350 120 120 110=
0

Volvemos a realizar todo el proceso. Recordemos que para que la tabla


resultante sea no degenerada, en caso de que la oferta y la demanda coincidan se tacha
solo una de ellas. La actualización de la oferta y la demanda sí debe realizarse
normalmente. De esta forma la 2ª asignación será:

Página 140 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
6-0=6 6-0=6 14-14=0 16-16=0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 28 0
13-8=5 8 M. 150
15 12 26 25 0 B1
15-12=3 12 D. 90
110
0 B2 6 14 16 0 350-350=
6-0=6 0 N.Y. 0
350
6 0 14 16 0
6-0=6 0 Ch. 350
350-350= 0
0 350 120 120

3ª asignación:

Penalizaciones
--- 6-0=6 14-14=0 16-16=0 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 28 0
25-13=12 5 8 M. 150
15 12 26 25 0 B
25-12=13 3 12 D. 90
110
0 B2 6 14 16 0
14-6=8 6 0 N.Y. 0
350
6 0 B3 14 16 0 350-350=
14-0=14 6 0 Ch. 0
350
350-350= 0
0 0 120 120

4ª asignación:

Página 141 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
--- --- 14-14=0 16-16=0 --- 4ª
--- 12 11 9 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
4ª 3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 B4 28 0 150-120=
28-25=3 12 5 8 M. 30
120
15 12 26 25 0 B
26-25=1 13 3 12 D. 90
110
0 B 6 14 16 0
16-14=2 --- 6 0 N.Y. 0
350
6 0 B 14 16 0
16-14=2 14 6 0 Ch. 0
350
120-120= 0
0 0 0 120

La última columna no necesitamos realizar los cálculos de penalizaciones.


Iremos eligiendo de menor a mayor coste.

5ª asignación.

Penalizaciones
--- --- 1 3 --- 4ª
--- 12 11 9 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
4ª 3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 B4 28 0
3 12 5 8 M. 30
120
15 12 26 25 0 B
1 13 3 12 D. 90
110
0 B 6 14 16 0
--- --- 6 0 N.Y. 0
350
6 0 B 14 16 B5 0 0-0=
--- 14 6 0 Ch. 0
350 0
120-0= 0
0 0 0 120

6ª asignación:

Página 142 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
--- --- 1 3 --- 4ª
--- 12 11 9 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
4ª 3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 B4 28 0
3 12 5 8 M. 30
120
15 12 26 25 0 B
1 13 3 12 D. 90
110
0 B 6 14 16 B6 0 0-0=
--- --- 6 0 N.Y. 0
350 0
6 0 B 14 16 B5 0 0-0=
--- 14 6 0 Ch. 0
350 0
120-0= 0
0 0 0 120

7ª asignación:

Penalizaciones
--- --- 1 3 --- 4ª
--- 12 11 9 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
4ª 3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 B4 28 0
3 12 5 8 M. 30
120
15 12 26 25 B7 0 B 90-90=
1 13 3 12 D. 0
90 110
0 B 6 14 16 B6 0 0-0=
--- --- 6 0 N.Y. 0
350 0
6 0 B 14 16 B5 0 0-0=
--- 14 6 0 Ch. 0
350 0
120-90= 0
0 0 0 30

Y la última asignación (8ª):

Página 143 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
--- --- 1 3 --- 4ª
--- 12 11 9 3ª
6 6 0 0 --- 2ª
Penalizaciones 6 6 0 0 0 1ª
4ª 3ª 2ª 1ª N.Y. Ch. L.A. B. F.
8 13 25 B4 28 B8 0 30-30=
3 12 5 8 M. 0
120 30
15 12 26 25 B7 0 B 90-90=
1 13 3 12 D. 0
90 110
0 B 6 14 16 B6 0 0-0=
--- --- 6 0 N.Y. 0
350 0
6 0 B 14 16 B5 0 0-0=
--- 14 6 0 Ch. 0
350 0
30-30= 0
0 0 0 0

Quedando así la tabla:

Destinos
N.Y. Ch. L.A. B. F.
8 13 25 B4 28 B8 0
M. 150
120 30
15 12 26 25 B7 0 B1
Orígenes

D. 200
90 110
0 B2 6 14 16 B6 0
N.Y. 0
350 0
6 0 B3 14 16 B5 0
Ch. 0
350 0
0 0 120 120 110

Comprobamos que la solución sea NO degenerada:

Número de casillas básicas: 8


Restricciones -1=m+n-1=5+4-1=8

Luego al coincidir los dos valores la solución es NO degenerada.

El siguiente paso será realizar el “Test de Optimalidad”:

Calcular los ui y los vj, que son las soluciones del sistema de ecuaciones.
Primero asignamos un valor arbitrario a cualquiera de ellas (por ejemplo
u1=0). Esto lo hacemos para las variables o casillas básicas “B”:

Para las casillas no básicas, calcular la fórmula:

Página 144 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Test propiamente dicho, se realiza para las casillas no básicas, que


deben ser todas menor o igual que cero para que la tabla se óptima:

Destinos
N.Y. Ch. L.A. B. F.
8 13 25 B4 28 B8 0
M. u1=0
120 30
15 12 26 25 B7 0 B1
Orígenes

D. u2
90 110
0 B2 6 14 16 B6 0
N.Y. u3
350 0
6 0 B3 14 16 B5 0
Ch. u4
350 0
v1 v2 v3 v4 v5

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v3 = c13  0 + v3 = 25  v3 = 25
u1 + v4 = c14  0 + v4 = 28  v4 = 28
u2 + v4 = c24  u2 + 28 = 25  u2 = -3
u2 + v5 = c25  -3 + v5 = 0  v5 = 3
u3 + v4 = c34  u3 + 28 = 16  u3 = -12
u3 + v1 = c31  -12 + v1 = 0  v1 = 12
u4 + v4 = c44  u4 + 28= 16  u4 = -12
u4 + v2 = c42  -12 + v2= 0  v2 = 12

Casillas no básicas = ui + vj  cij

x11 = u1 + v1 – c11 = 0+12-8 = 4


x12 = u1 + v2 – c12 = 0+12-13 =-1
x15 = u1 + v5 – c15 = 0+3-0 =3
x21 = u2 + v1 – c21 =-3+12-15 = -6
x22 = u2 + v2 – c22 =-3+12-12 = -3
x23 = u2 + v3 – c23 =-3+25-26 = -4
x32 = u3 + v2 – c32 = -12+12-6 = -6
x33 = u3 + v3 – c33 = -12+25-14 = -1
x35 = u3 + v5 – c35 = -12+3-0 = -9
x41 = u4 + v1 – c41 = -12+12-6= -6
x43 = u4 + v3 – c43 = -12+25-14 = -1
x45 = u4 + v5 – c45 = -12+3-0 = -9

Página 145 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Como existen casillas no básicas > 0 (x11 ; x15 ) la solución no es óptima.

Como no se cumple el test de optimalidad hay que hacer otra iteración:

Seleccionar como variable de entrada la variable no básica que menos


verifique la condición de optimalidad, es decir, la que tenga mayor
valor de ui + vj  cij entre las positivas. En nuestro caso x11 (casilla
remarcada)
Encontrar el ciclo que forma la casilla que entra, con otras casillas
básicas. En nuestro caso hemos marcamos el ciclo con línea discontinua.
Marcar con los signos “+” y “” alternativamente las casillas del ciclo
encontrado, empezando por “+” en la casilla de entrada.

N.Y. Ch. L.A. B. F.


8 13 25 B 28 B 0
M. u1=0
+ 120 30 -
15 12 26 25 B 0 B
D. u2
90 110 -
0 B 6 14 16 B 0
N.Y. u3
350 - 0 +
6 0 B 14 16 B 0
Ch. u4
350 0
v1 v2 v3 v4 v5

Calculamos  (tau), como el mínimo de los valores de las casillas con


signo “” en el ciclo [min(350;30)=30], lo restamos a las casillas con
signo “” y lo sumamos a las casillas con signo “+”.
Marcar como básica a la casilla que entra “B” y desmarcar como básica
la casilla del ciclo que haya quedado con valor nulo.

N.Y. Ch. L.A. B. F.


8 B 13 25 B 28 0
M. 30+0= 30-30= u1=0
30 + 120 0 -
15 12 26 25 B 0 B
D. u2
90 110 -
0 B 6 14 16 B 0
N.Y. 350-30= 0+30= u3
320 - 30 +
6 0 B 14 16 B 0
Ch. u4
350 0
v1 v2 v3 v4 v5

Página 146 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Volvemos a calcular las casillas u,v:

u1=0

Calculamos ui, vj de las casillas básicas.

u1 + v1 = c11  0 + v1 = 8  v1 = 8
u1 + v3 = c13  0 + v3 = 25  v3 = 25
u3 + v1 = c31  u3 + 8 = 0  u3 = -8
u3 + v4 = c34  -8 + v4 = 16  v4 = 24
u2 + v4 = c24  u2 + 24 = 25  u2 = 1
u2 + v5 = c25  1 + v5 = 0  v5 = -1
u4 + v4 = c44  u4 + 24= 16  u4 = -8
u4 + v2 = c42  -8 + v2= 0  v2 = 8

Casillas no básicas = ui + vj  cij

x12 = u1 + v2 – c12 = 0+8-13 = -5


x14 = u1 + v4 – c14 = 0+24-28 = -4
x15 = u1 + v5 – c15 = 0-1-0 = -1
x21 = u2 + v1 – c21 = 1+8-15 = -6
x22 = u2 + v2 – c22 = 1+8-12 = -3
x23 = u2 + v3 – c23 = 1+25-26 = 0
x32 = u3 + v2 – c32 = -8+8-6 = -6
x33 = u3 + v3 – c33 = -8+25-14 = 3
x35 = u3 + v5 – c35 = -8-1-0 = -9
x41 = u4 + v1 – c41 = -8+8-6= -6
x43 = u4 + v3 – c43 = -8+25-14 = 3
x45 = u4 + v5 – c45 = -8-1-0 = -9

Como existen casillas no básica >0 (x33; x43 la solución no es óptima. Esa decir
como no se cumple el test de optimalidad hay que hacer otra iteración. Entra 3-3 y sale
1-3:

N.Y. Ch. L.A. B. F.


8 B 13 25 B 28 0 u1=0
M. 30+120= 120-120=
150 + 0 -
15 12 26 25 B 0 B u2
D.
90 110
0 B 6 14 16 B 0 u3
N.Y. 320+120=
200 - 120 + 30
6 0 B 14 16 B 0 u4
Ch.
350 0
v1 v2 v3 v4 v5
Página 147 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Quedando la tabla así:

N.Y. Ch. L.A. B. F.


8 B 13 25 28 0
M. u1=0
150
15 12 26 25 B 0 B
D. u2
90 110
0 B 6 14 B 16 B 0
N.Y. u3
200 120 30
6 0 B 14 16 B 0
Ch. u4
350 0
v1 v2 v3 v4 v5

Volvemos a calcular las casillas u,v:

u1=0

Calculamos ui, vj de las casillas básicas.

u1 + v1 = c11  0 + v1 = 8  v1 = 8
u3 + v1 = c31  u3 + 8 = 0  u3 = -8
u3 + v3 = c33  -8 + v3 = 14  v3 = 22
u3 + v4 = c34  -8 + v4 = 16  v4 = 24
u2 + v4 = c24  u2 + 24 = 25  u2 = 1
u2 + v5 = c25  1 + v5 = 0  v5 = -1
u4 + v4 = c44  u4 + 24= 16  u4 = -8
u4 + v2 = c42  -8 + v2= 0  v2 = 8

Casillas no básicas = ui + vj  cij

x12 = u1 + v2 – c12 = 0+8-13 = -5


x13 = u1 + v3 – c13 = 0+22-25 = -3
x14 = u1 + v4 – c14 = 0+24-28 = -4
x15 = u1 + v5 – c15 = 0-1-0 = -1
x21 = u2 + v1 – c21 = 1+8-15 = -6
x22 = u2 + v2 – c22 = 1+8-12 = -3
x23 = u2 + v3 – c23 = 1+22-26 = -3
x32 = u3 + v2 – c32 = -8+8-6 = -6
x35 = u3 + v5 – c35 = -8-1-0 = -9
x41 = u4 + v1 – c41 = -8+8-6= -6
x43 = u4 + v3 – c43 = -8+22-14 =0
x45 = u4 + v5 – c45 = -8-1-0 = -9

Volvemos a realizar el test: para las casillas no básicas, que deben ser todas
menor o igual que cero para que la tabla se óptima:
Página 148 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Como se verifica el test la tabla es óptima.

Es decir la combinación optima de transporte seria, omitiendo los nudos ficticios


y las casillas básicas con valor 0:

Memphis  New York 150

Denver  Boston 90

New York  Boston 30

New York  Los Ángeles 120

Podemos verificar que las demandas solicitadas se han cumplido, pues se han
enviado 120ud. a Los Ángeles y 120ud. a Boston.

El coste total asociado a esta solución es

∑ unidades trasportadas x coste asociado:

(150ud.x8um)+(90ud.x25um) +(30ud.x16um) +(120ud.x14um)=5.610um.

Podemos verificar el resultado mediante LP-Solve. Solamente tendremos que


tener en cuenta que no es necesario añadir los nodos ficticios, pero si será necesario
añadir a los nodos de transbordo (NY y Ch) el total de la demanda y la oferta (350)

Página 149 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Página 150 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Los resultados:

EJERCICIO: (Problema 6.2 de la relación de problemas propuestos por


el profesor año 2010-2011). El ordenador de una empresa puede guardar
200 ficheros en disco, 100 ficheros en memoria y 300 en cinta. Los
usuarios desean guardar 300 ficheros de texto, 100 ficheros de programas
y 100 ficheros de datos. Cada mes un fichero de texto se accede 8 veces,
un fichero de programa 4 y un fichero de datos 2 veces. Encontrar la
distribución de los ficheros que minimiza el tiempo de acceso, donde los
tiempos de acceso vienen dados por:

Tiempos
Texto Programa Datos
Disco duro 5 4 4
Memoria 2 1 1
Cinta 10 8 6

Página 151 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

SOLUCIÓN:

En primer lugar trazaremos la tabla con los costes totales:

Tiempos
Oferta/
Texto Programa Datos
Capacidad
Disco duro 5x8=40 4x4=16 4x2=8 200
Memoria 2x8=16 1x4=4 1x2=2 100
Cinta 10x8=80 8x4=32 6x2=12 300
600
Demanda 300 100 100
500

Como no coincide la oferta total con la demanda total, deberemos crear un


origen ficticio con la diferencia (600-500=100) y con costes 0:

Tiempos
Oferta/
Texto Programa Datos Ficticio
Capacidad
Disco duro 40 16 8 0 200
Memoria 16 4 2 0 100
Cinta 80 32 12 0 300
600
Demanda 300 100 100 100
600

Para la resolución del problema utilizaremos el Método de Vogel. Recordemos


los pasos a seguir:

Paso 1: Para cada fila y columna se calculan las penalizaciones o costes de


oportunidad como la diferencia entre los dos costes más pequeños.

Paso 2: Se elige la fila o columna con mayor penalización y dentro de esa fila o
columna, la casilla más barata. Esta casilla se hace básica con valor igual al mínimo
entre la oferta y la demanda.

Paso 3: Tachar la fila o columna donde se haya alcanzado el mínimo.

Paso 4: Actualizar la oferta y la demanda y volver al paso 1.

NOTA: Recordemos que para que la tabla resultante sea no degenerada, en caso
de que la oferta y la demanda coincidan se tacha solo una de ellas. La actualización de
la oferta y la demanda sí debe realizarse normalmente

Página 152 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
40-16=24 16-4=12 8-2=6 0-0=0
40 16 8 0
Penalizaciones
8-0=8 200
16 B1 4 2 0 100-100=
2-0=2
100 0
80 32 12 0
12-0=12 300
300-100= 600
200 100 100 100
600

2ª asignación:

Penalizaciones
80-40=40 32-16=16 12-8=4 0-0=0
24 12 6 0
40 B2ª 16 8 0 200-200=
Penalizaciones

8-0=8 8
200 0
16 B1ª 4 2 0
--- 2 0
100
80 32 12 0
12-0=12 12 300
200-200= 600
0 100 100 100
600

3ª asignación:

Penalizaciones
--- 32-16=16 12-8=4 0-0=0
40 16 4 0
24 12 6 0
40 B2ª 16 B3ª 8 0 0-0=
Penalizaciones

8-0=8 8 8
200 0 0
16 B1ª 4 2 0
--- --- 2 0
100
80 32 12 0
12-0=12 12 12 300
100-0= 600
0 100 100 100 600

4ª asignación:

Página 153 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
--- 32 12-8=4 0-0=0
--- 16 4 0
40 16 4 0
24 12 6 0
40 B2ª 16 B3ª 8 0
Penalizaciones

8-0=8 8 8 8 0
200 0
16 B1ª 4 2 0
--- --- --- 2 0
100
80 32 B4ª 12 0 300-100=
12-0=12 12 12 12
100 200
100-100= 600
0 0 100 100
600

5ª Asignación:

Penalizaciones
--- --- 12-8=4 0-0=0
--- 32 4 0
--- 16 4 0
40 16 4 0
24 12 6 0
40 B2ª 16 B3ª 8 0
Penalizaciones

8-0=8 8 8 8 8 0
200 0
16 B1ª 4 2 0
--- --- --- --- 2 0
100
80 32 B4ª 12 0 B5ª 200-100=
12-0=12 12 12 12 12 100
100 100
100-100= 600
0 0 100 0 600

6ª Asignación:

Página 154 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
--- --- 12-8=4 ---
--- --- 4 0
--- 32 4 0
--- 16 4 0
40 16 4 0
24 12 6 0
40 B2ª 16 B3ª 8 0
Penalizaciones

8 8 8 8 8 8 0
200 0
16 B1ª 4 2 0
--- --- --- --- --- 2 0
100
80 32 B4ª 12 B6ª 0 B5ª 100-100=
12 12 12 12 12 12 0
100 100 100
100-100= 600
0 0 0 0
600

Comprobamos que la solución sea NO degenerada:

Hemos alcanzado una solución básica inicial compuesta de 6 variables básicas.

m+n-1=4+3-1=6 luego la solución es NO degenerada.

El siguiente paso será realizar el “Test de Optimalidad”:

Calcular los ui y los vj, que son las soluciones del sistema de ecuaciones.
Primero asignamos un valor arbitrario a cualquiera de ellas (por ejemplo
u1=0). Esto lo hacemos para las variables o casillas básicas “B”:

Para las casillas no básicas, calcular la fórmula:

Test propiamente dicho, se realiza para las casillas no básicas, que


deben ser todas menor o igual que cero para que la tabla se óptima:

40 B2ª 16 B3ª 8 0
200 0
16 B1ª 4 2 0
100
80 32 B4ª 12 B6ª 0 B5ª
100 100 100

Página 155 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v1 = c11  0 + v1 = 40  v1 = 40
u1 + v2 = c12  0 + v2 = 16  v2 = 16
u2 + v1 = c21  u2 + 40 = 16  u2 = -24
u3 + v2 = c32  u3 + 16 = 32  u3 = 16
u3 + v3 = c33  16 + v3 = 12  v3 = -4
u3 + v4 = c34  16 + v4 = 0  v4 = -16

Casillas no básicas = ui + vj  cij

x13 = u1 + v3 – c13 = 0-4-8 = -12


x14 = u1 + v4 – c14 = 0-16-0 = -16
x22 = u2 + v2 – c22 = -24+16-4 = -12
x23 = u2 + v3 – c23 = -24-4-2 = -30
x24 = u2 + v4 – c24 = -24-16-0 = -40
x31 = u3 + v1 – c31 =16+40-80 = -24

Como todas las casillas no básicas son ≤0 la tabla es óptima:

Texto Programa Datos Ficticio Ofertas


40 B 16 B
Disco duro 200
200 0
16 B
Memoria 100
100
32 B 12 B 0 B
Cinta 300
100 100 100
600
Demanda 300 100 100 100
600

Es decir la solución será:

 Guardar 200 ficheros de texto en los discos duros.


 Guardar 100 ficheros de texto en la memoria.
 Guardar 100 programas en las cintas.
 Guardar 100 ficheros de datos en las cintas.

Página 156 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Resolución mediante LPSolve IDE:

Los resultados:

Página 157 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

EJERCICIO: (8.54. De la relación de problemas


propuestos por el profesor año 2010-2011). La empresa Backa,S.A está
planificando su nuevo sistema diario de copias de seguridad. La siguiente
tabla muestra: la cantidad de información a transferir desde cada nodo, la
capacidad máxima de cada ordenador de reserva y el tiempo por Gbs.
necesarios para la transferencia.

Destino
Nodo D1 D2 D3 Gb.
N1 10 5 10 30
N2 2 5 10 23
N3 4 5 3 15
Capacidad 32 25 29

a) ¿Cuál es la política optima de transferencia?

b) Debido a una sobrecarga en la red local del nodo N3 los tiempos de


trasferencia desde dicho nodo se han duplicado. ¿Cómo afecta esto a la
planificación?

c) La empresa encargada del desarrollo del software estima no viable la


división de las copias de seguridad, debiendo asignarse un único servidor
de copia para cada nodo. ¿Cuál deberá ser dicha asignación?

d) ¿Qué incremento en los tiempos totales se produce al adoptar la


estrategia de copias indivisas?

SOLUCIÓN:

En primer lugar comprobaremos que la tabla esté balanceada:

Capacidad máxima: 32+25+29=86Gb.


Cantidad a transferir: 30+23+15=68Gb.

Como la cantidad de información a transferir es inferior a la capacidad máxima,


debemos equilibrar la tabla. Para ello creamos un nodo ficticio con una cantidad de
información que será la diferencia entre las capacidades y las necesidades (86-
68=18Gb.) y un tiempo 0. La nueva tabla quedará así:

Destino
Nodo D1 D2 D3 Gb.
N1 10 5 10 30
N2 2 5 10 23
N3 4 5 3 15
Nficticio 0 0 0 18
Capacidad 32 25 29

Página 158 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Para la resolución del problema utilizaremos el Método de Vogel. Recordemos


los pasos a seguir:

Paso 1: Para cada fila y columna se calculan las penalizaciones o costes de


oportunidad como la diferencia entre los dos costes más pequeños.

Paso 2: Se elige la fila o columna con mayor penalización y dentro de esa fila o
columna, la casilla más barata. Esta casilla se hace básica con valor igual al mínimo
entre la oferta y la demanda.

Paso 3: Tachar la fila o columna donde se haya alcanzado el mínimo.

Paso 4: Actualizar la oferta y la demanda y volver al paso 1.

Penalizaciones
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10-5=5 10 5 10 30
5-2=3 2 5 10 23
4-3=1 4 5 3 15
0-0=0 0 0 0 18
Capacidad 32 25 29

La fila o columna con mayor penalización son fila 1ª y columna 2ª (5). De esas
dos elegimos la que tenga un coste menor. En este caso la columna 2ª tiene una casilla
con coste 0 (fila 4ª). Luego la 1ª celda a asignar es la columna 2ª-fila 4ª. Le asignamos
el mínimo entre la oferta y la demanda [min (25;18)=18]. Luego podemos tachar la fila
3ª. Volvemos a calcular las penalizaciones:

Penalizaciones
4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 5 10
10-5=5 10-5=5 30
2 5 10
5-2=3 5-2=3 23
4 5 3
4-3=1 4-3=1 15
0 0 0
--- 0-0=0 18-18=0
18
Capacidad 32 25-18=7 29

La columna con mayor penalización es la 3ª [max(5;3;1;2;0;7)=7] y dentro de


ella la celda con menor coste es la 3ª fila [min(10;10;3)=3]. Luego la 2ª asignación será:
columna 3ª-fila 3ª. Le asignamos el mínimo entre la oferta y la demanda [min
(15;29)=15]. Tachamos la fila 3ª que se ha quedado a 0. Volvemos a calcular las
penalizaciones:

Penalizaciones
Página 159 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

10-2=8 5-5=0 10-10=0


4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 5 10
10-5=5 10-5=5 10-5=5 30
2 5 10
5-2=3 5-2=3 5-2=3 23
4 5 3 B
--- 4-3=1 4-3=1 15-15=0
15
0 0 B 0
--- --- 0-0=0 0
18
Capacidad 32 7 29-15=14

La siguiente asignación será en la celda: columna 1ª-fila 2ª. Pues tiene la mayor
penalización y el menor coste. Asignamos el mínimo entre oferta y demanda
[min(23;32)=23] Tachamos la 2ª fila. Volvemos a calcular penalizaciones:

Penalizaciones
10 5 10
10-2=8 5-5=0 10-10=0
4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 5 10
10-5=5 10-5=5 10-5=5 10-5=5 30
2 B 5 10
--- 5-2=3 5-2=3 5-2=3 23-23=23
23
4 5 3 B
--- --- 4-3=1 4-3=1 15-15=0
15
0 0 B 0
--- --- --- 0-0=0 0
18
Capacidad 32-23=9 7 14

Ya en realidad solo nos queda una fila (1ª). Luego iremos asignando de menor a
mayor coste. 1º la 2ª fila, el minimo entre 7 y 30.

Página 160 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
10 5 10
10-2=8 5-5=0 10-10=0
4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 5 10
10-5=5 10-5=5 10-5=5 10-5=5 30-7=23
7
2 B 5 10
--- 5-2=3 5-2=3 5-2=3 23-23=23
23
4 5 3 B
--- --- 4-3=1 4-3=1 15-15=0
15
0 0 B 0
--- --- --- 0-0=0 0
18
Capacidad 9 7-7=0 14

La siguiente asignación podrían ser la 1ª o la 3ª columna pues ambos tiene el


mismo cote (10). Elegimos al azar la 3ª columna:

Penalizaciones
10 5 10
10-2=8 5-5=0 10-10=0
4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 5 10
10-5=5 10-5=5 10-5=5 10-5=5 23-14=9
7 14
2 B 5 10
--- 5-2=3 5-2=3 5-2=3 23-23=23
23
4 5 3 B
--- --- 4-3=1 4-3=1 15-15=0
15
0 0 B 0
--- --- --- 0-0=0 0
18
Capacidad 9 0 14-14=0

La ultima asignación:

Página 161 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Penalizaciones
10 5 10
10-2=8 5-5=0 10-10=0
4-2=2 5-5=0 10-3=7
Penalizaciones 2-0=2 5-0=5 3-0=3 Gb.
10 B 5 10 B
10-5=5 10-5=5 10-5=5 10-5=5 9-9=0
9 7 14
2 B 5 10
--- 5-2=3 5-2=3 5-2=3 23-23=23
23
4 5 3 B
--- --- 4-3=1 4-3=1 15-15=0
15
0 0 B 0
--- --- --- 0-0=0 0
18
Capacidad 9-9=0 0 14-14=0

Es decir la tabla obtenida es:

Destino
Nodos D1 D2 D3 Gb.
10 B 5 B 10 B
N1 30
9 7 14
2 B 5 10
N2 15
23
4 5 3 B
N3 30
15
0 0 B 0
Nficticio 15
18
Capacidad 32 25 29

Comprobamos que la solución sea NO degenerada:

Número de casillas básicas: 6


Restricciones -1=m+n-1=4+3-1=6

Luego la solución es no degenerada.

El siguiente paso será realizar el “Test de Optimalidad”:

Calcular los ui y los vj, que son las soluciones del sistema de ecuaciones.
Primero asignamos un valor arbitrario a cualquiera de ellas (por ejemplo
u1=0). Esto lo hacemos para las variables o casillas básicas “B”:

Para las casillas no básicas, calcular la fórmula:

Test propiamente dicho, se realiza para las casillas no básicas, que


deben ser todas menor o igual que cero para que la tabla se óptima:

Página 162 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Destino
Nodos D1 D2 D3
10 B 5 B 10 B
N1 u1=0
9 7 14
2 B 5 10
N2 u2
23
4 5 3 B
N3 u3
15
0 0 B 0
Nficticio u4
18
v1 v2 v3

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v1 = c11  0 + v1 = 10  v1 = 10
u1 + v2 = c12  0 + v2 = 5  v2 = 5
u1 + v3 = c13  0 + v3 = 10  v3 = 10
u2 + v1 = c21  u2 + 10 = 2  u2 = -8
u3 + v3 = c33  u3 + 10 = 3  u3 = -7
u4 + v2 = c42  u4 + 5 = 0  u4 = -5

Casillas no básicas = ui + vj  cij

x22 = u2 + v2 – c22 = -8 + 5 – 5 = -8
x23 = u2 + v3 – c23 = -8 + 10 – 10 = -8
x31 = u3 + v1 – c31 = -7 + 10 – 4 = -1
x32 = u3 + v2 – c32 = -7 + 5 – 5 = -7
x41 = u4 + v1 – c41 = -5 + 10 – 0 = 5
x43 = u4 + v3 – c43 = -5 + 10 – 0 = 5

Como existen casillas no básicas ≥0 (x41; x43) la solución no es óptima.

Como no se cumple el test de optimalidad hay que hacer otra iteración:

Seleccionar como variable de entrada la variable no básica que menos


verifique la condición de optimalidad, es decir, la que tenga mayor
valor de ui + vj  cij entre las positivas. En nuestro caso los dos son
iguales. Elegimos arbitrariamente x43
Encontrar el ciclo que forma la casilla que entra, con otras casillas
básicas. En nuestro caso hemos marcamos el ciclo con línea discontinua.
Marcar con los signos “+” y “” alternativamente las casillas del ciclo
encontrado, empezando por “+” en la casilla de entrada.
Página 163 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Calculamos  (tau) como el mínimo de los valores de las casillas con


signo “” en el ciclo [min(18;14)=14], lo restamos a las casillas con
signo “” y lo sumamos a las casillas con signo “+”. Excepto para la
casilla que entra.
Marcar como básica a la casilla que entra “B” y desmarcar como básica
la casilla del ciclo que haya quedado con valor nulo.

Destino
Nodos D1 D2 D3
10 B 5 B 10 B
N1 u1=0
9 7 + 14 -
2 B 5 10
N2 u2=-8
23 -8 -8
4 5 3 B
N3 u3=-7
-1 -7 15
0 0 B 0
Nficticio u4=-5
5 18 - 5 +
v1=10 v2=5 v3=10

La nueva tabla sería:

Destino
Nodos D1 D2 D3
10 B 5 B 10
N1 u1=0
9 14+7=21 + 14-14=0 -
2 B 5 10
N2 u2=-8
23 -8 -8
4 5 3 B
N3 u3=-7
-1 -7 15
0 0 B 0 B
Nficticio u4=-5
5 18-14=4 - 5 +
v1=10 v2=5 v3=10

Volvemos a calcular los valores u y v:

Calculamos ui, vj de las casillas básicas.

u1=0
u1 + v1 = c11  0 + v1 = 10  v1 = 10
u1 + v2 = c12  0 + v2 = 5  v2 = 5
u2 + v1 = c21  u2 + 10 = 2  u2 = -8
u4 + v2 = c42  u4 + 5 = 0  u4 = -5
u4 + v3 = c43  -5 + v3 = 0  v3 = 5
u3 + v3 = c33  u3 + 5 = 3  u3 = -2

Página 164 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Casillas no básicas = ui + vj  cij

x13 = u1 + v3 – c13 = 0 + 5 – 10 = -5
x22 = u2 + v2 – c22 = -8 + 5 – 5 = -8
x23 = u2 + v3 – c23 = -8 + 5 – 10 = -13
x31 = u3 + v1 – c31 = -2 + 10 – 4 = 4
x32 = u3 + v2 – c32 = -2 + 5 – 5 = -2
x41 = u4 + v1 – c41 = -5 + 10 – 0 = 5

Como aún existen casillas no básicas ≥0 (x31; x41) la solución no es óptima.

Como no se cumple el test de optimalidad hay que hacer otra iteración:

Seleccionar como variable de entrada la variable no básica que menos


verifique la condición de optimalidad, es decir, la que tenga mayor
valor de ui + vj  cij entre las positivas. En nuestro caso x41(x41> x31)
Encontrar el ciclo que forma la casilla que entra, con otras casillas
básicas. En nuestro caso hemos marcamos el ciclo con línea discontinua.
Marcar con los signos “+” y “” alternativamente las casillas del ciclo
encontrado, empezando por “+” en la casilla de entrada.
Calculamos  (tau) como el mínimo de los valores de las casillas con
signo “” en el ciclo [min(9;4)=4], lo restamos a las casillas con signo “”
y lo sumamos a las casillas con signo “+”. Excepto para la casilla que
entra.

Marcar como básica a la casilla que entra “B” y desmarcar como básica
la casilla del ciclo que haya quedado con valor nulo.

Destino
Nodos D1 D2 D3
10 B 5 B 10
N1 u1=0
9-4=5 - 21+4=25 + 14-14=0
2 B 5 10
N2 u2=-8
23 -8 -8
4 5 3 B
N3 u3=-2
-1 -7 15
0 B 0 0 B
Nficticio u4=-5
5 + 4-4=0 - 5
v1=10 v2=5 v3=5

Volvemos a calcular los valores u y v:

Calculamos ui, vj de las casillas básicas.

u1=0
u1 + v1 = c11  0 + v1 = 10  v1 = 10
u1 + v2 = c12  0 + v2 = 5  v2 = 5
u2 + v1 = c21  u2 + 10 = 2  u2 = -8
Página 165 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

u4 + v1 = c41  u4 + 10 = 0  u4 = -10
u4 + v3 = c43  -10 + v3 = 0  v3 = 10
u3 + v3 = c33  u3 + 10 = 3  u3 = -7

Casillas no básicas = ui + vj  cij

x13 = u1 + v3 – c13 = 0 + 10 – 10 = 0
x22 = u2 + v2 – c22 = -8 + 5 – 5 = -8
x23 = u2 + v3 – c23 = -8 + 10 – 10 = -8
x31 = u3 + v1 – c31 = -7 + 10 – 4 = -1
x32 = u3 + v2 – c32 = -7 + 5 – 5 = -7
x42 = u4 + v2 – c42 = -10 + 5 – 0 = -5

Comprobamos que:

Ya si todos los valores no básicos son menores o iguales a 0. Luego la solución


es óptima:

Destinos
Nodos D1 D2 D3
10 B 5 B 10
N1
5 25
2 B 5 10
N2
23
4 5 3 B
N3
15
0 B 0 0 B
Nficticio
5 5

La política óptima de transferencia sería:

 5Gb. Desde N1 a D1
 25Gb. Desde N1 a D2
 23Gb. Desde N2 a D1
 15Gb. Desde N3 a D3

Obviamos los nodos ficticios.

El tiempo mínimo necesario será: 5x10+25x5+23x2+15x3=266

Verificamos que el total transferido coincide con las demandas necesarias:

5+25+23+15=30+23+15=68

Página 166 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Apartado b)

Volvemos a mostrar la tabla óptima calculada anteriormente:

Destino
Nodos D1 D2 D3
10 B 5 B 10
N1 u1=0
5 25 0
2 B 5 10
N2 u2=-8
23 -8 -8
4 5 3 B
N3 u3=-7
-1 -7 15
0 B 0 0 B
Nficticio u4=-10
5 0 5
v1=10 v2=5 v3=5

Calculamos los nuevos valores u y v después del cambio de costes:

Destino
Nodos D1 D2 D3
10 B 5 B 10
N1 u1=0
5 25 0
2 B 5 10
N2 u2=-8
23 -8 -8
4x2=8 5x2=10 3x2=6 B
N3 u3=-4
-1 -7 15
0 B 0 0 B
Nficticio u4=-10
5 0 5
v1=10 v2=5 v3=5

Calculamos ui, vj de las casillas básicas.

u1=0
u1 + v1 = c11  0 + v1 = 10  v1 = 10
u1 + v2 = c12  0 + v2 = 5  v2 = 5
u2 + v1 = c21  u2 + 10 = 2  u2 = -8
u4 + v1 = c41  u4 + 10 = 0  u4 = -10
u4 + v3 = c43  -10 + v3 = 0  v3 = 10
u3 + v3 = c33  u3 + 10 = 6  u3 = -4

Casillas no básicas = ui + vj  cij

x13 = u1 + v3 – c13 = 0 + 10 – 10 = 0
x22 = u2 + v2 – c22 = -8 + 5 – 5 = -8
x23 = u2 + v3 – c23 = -8 + 10 – 10 = -8
x31 = u3 + v1 – c31 = -4 + 10 – 8 = -2
x32 = u3 + v2 – c32 = -4 + 5 – 10 = -9
x42 = u4 + v2 – c42 = -10 + 5 – 0 = -5
Página 167 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

Comprobamos que se sigue dado la condición de optimalidad (


). Es decir la solución no cambia, tan solo se incrementará el tiempo.

La política óptima de transferencia sigue siendo:

 5Gb. Desde N1 a D1
 25Gb. Desde N1 a D2
 23Gb. Desde N2 a D1
 15Gb. Desde N3 a D3

El nuevo tiempo mínimo necesario será: 5x10+25x5+23x2+15x6=311

Apartado c)

Utilizaremos el Método Húngaro para dicha asignación. Recordemos la


metodología de este método:

1) En la matriz de costes hacemos ceros.

1.a) Restar a cada fila su mínimo.

10 5 10 10-5=5 5-5=0 10-5=5


2 5 10  2-2=0 5-2=3 10-2=8
4 5 3 4-3=1 5-3=2 3-3=0

1.b) Ahora restamos a cada columna su mínimo, aunque las columnas


que ya contengan un cero no cambian nada.

5 0 5 5-0=5 0-0=0 5-0=5 5 0 5


0 3 8  0-0=0 3-0=3 8-0=8  0 3 8
1 2 0 1-0=1 2-0=2 0-0=0 1 2 0

2) Encuadrar ceros.

2.a) En la fila o columna con menor número de ceros libres, encuadrar


uno.

5 0 5
0 3 8
1 2 0

2.b) Tachar los ceros de la fila y columna del cero encuadrado. Como no
existen otros ceros en cada fila que hemos encuadrado el cero, no
tenemos que tachar nada.

2.c) Repetir los dos pasos anteriores mientras queden ceros libres.

Página 168 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Tema 3 – Programación Lineal Entera.

2.d) Si se ha encuadrado un cero en cada fila y columna se tiene la


asignación óptima.

La política óptima de transferencia es ahora:

 30Gb. Desde N1 a D2
 23Gb. Desde N2 a D1
 15Gb. Desde N3 a D3

El tiempo total de esta asignación será: 30x5+23x2+15x3=241

Apartado d) La diferencia de tiempos será: 266-241=25

Página 169 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

PROBLEMAS DE EXÁMENES
EJERCICIO: ( 2º Problema del examen de Febrero 2011)

2. La empresa Destru,S.A. dedicada a la destrucción de residuos biomédicos


peligrosos está realizando la planificación de la próxima semana. Para la destrucción de
los residuos dispone de tres plantas de tratamiento (PT) y dos centros de transferencia
(CT).

Las capacidad de procesamiento de las plantas tratamiento es de 110, 80 y 90


Tm. respectivamente, siendo los costes de destrucción de 12, 9 y 10 €/Tm. Las
recogidas de los residuos se realizan en tres centros de recolección (CR) y en los dos
centros de transferencia.

La siguiente tabla muestra los costos de transporte por Tm entre las plantas y la
cantidad de residuos a recoger:

CT1 CT2 PT1 PT2 PT3 Tm


CT1 8 3 4 5 50
CT2 2 1 2 1 40
CR1 7 4 7 4 80
CR2 9 2 2 10 30
CR3 5 1 8 12 10 60

a) ¿Cómo deben distribuirse y destruirse los residuos?

b) El nuevo gerente de la empresa ha sugerido cerrar el centro de transferencia


dos. Los residuos recogidos en el centro dos se recogerían en el uno. ¿Qué coste
supondría el cierre para la empresa en la próxima semana?

c) Finalmente se decide asignar cada centro de recogida 0 transferencia a una


única planta de tratamiento, ampliando si fuese necesario la capacidad cada planta para
recibir residuos de un máximo de dos orígenes. ¿Cuál sería la nueva solución?

SOLUCIÓN:

Calculamos los costes totales por cada planta, sumando a los costes de transporte
de las plantas de tratamiento los costes del propio tratamiento de destrucción.

Los costes de transporte las casillas a ellas mismas es 0.

Los costes de transporte imposibles se le añadirán una cantidad muy alta M.

La suma de las demandas deberá ser igual a la suma de las ofertas.


110+80+90=280 ; 50+40+80+30+60=260 . Como la demanda es mayor que la oferta,
deberemos crear un destino ficticio (DF) con la diferencia (280-260=20) con costes
asociados 0.
Página 170 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Las disponibilidades de los puntos de transbordo, si actúan como orígenes, son


las que tienen de por sí, más la cantidad total que se transporta. Las demandas de los
puntos de transbordo cuando actúan como destinos son las cantidades demandadas
realmente, más la cantidad total que hay que transportar.

Destinos
Ofertas/
CT1 CT2 PT1 PT2 PT3
Capacidad
12+3= 9+4= 10+5= 50+280=
CT1 0 8 15 13 15 330
12+1= 9+2= 10+1= 40+280=
CT2 2 0 13 11 11 320
Orígenes

9+7= 10+4=
CR1 7 4 M 16 14 80
12+2= 10+10=
CR2 9 2 14 M 20 30
12+8= 9+12= 10+10=
CR3 5 1 20 21 20 60
DF 0 0 0 0 0 20
0+280= 0+280= 280
Demandas 280 280 110 80 90
280

Quedando la tabla:

Destinos
Ofertas/
CT1 CT2 PT1 PT2 PT3
Capacidad
CT1 0 8 15 13 15 330
CT2 2 0 13 11 11 320
Orígenes

CR1 7 4 M 16 14 80
CR2 9 2 14 M 20 30
CR3 5 1 20 21 20 60
DF 0 0 0 0 0 20
280
Demandas 280 280 110 80 90
280

Para la resolución del problema utilizaremos el Método de Vogel. Recordemos


los pasos a seguir:

Paso 1: Para cada fila y columna se calculan las penalizaciones o costes de


oportunidad como la diferencia entre los dos costes más pequeños.
Paso 2: Se elige la fila o columna con mayor penalización y dentro de esa fila o
columna, la casilla más barata. Esta casilla se hace básica (B) con valor igual al mínimo
entre la oferta y la demanda.
Paso 3: Tachar la fila o columna donde se haya alcanzado el mínimo (se rellena
en rojo).
Paso 4: Actualizar la oferta y la demanda y volver al paso 1.

Página 171 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

1ª asignación:

Penalizaciones
1ª 0-0=0 0-0=0 13-0=13 11-0=11 11-0=11 1ª
0 8 15 13 15
8-0=8 330
2 0 13 11 11
2-0=2 320
Penalizaciones

7 4 M 16 14
7-4=3 80
9 2 14 M 20
9-2=7 30
5 1 20 21 20
5-1=4 60
0 0 0 B1 0 0
0-0=0 20-20=0
20
110-20=
280 280 90 80 90

2ª asignación:

Penalizaciones
2-0=2 1-0=1 14-13=1 13-11=2 14-11=3 2ª
2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15 330-280=
8-0=8 8 50
280
2 0 13 11 11
2-0=2 2 320
Penalizaciones

7 4 M 16 14
7-4=3 3 80
9 2 14 M 20
9-2=7 7 30
5 1 20 21 20
5-1=4 4 60
0 0 0 B1 0 0
--- 0 0
20
280-280=
0 280 90 80 90

3ª Asignación:

Página 172 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Penalizaciones
--- 1-0=1 14-13=1 13-11=2 14-11=3 3ª
2 1 1 2 3 2ª
3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
13-8=5 8 8 50
280
2 0 13 11 11
11-0=11 2 2 320
Penalizaciones

7 4 M 16 14
14-4=10 3 3 80
9 2 14 M 20
14-2=12 7 7 30
5 1 B3 20 21 20 60-60=
20-1=19 4 4 0
60
0 0 0 B1 0 0
--- --- 0 0
20
280-60=
0 220 90 80 90

4ª Asignación:

Penalizaciones
--- 2-0=2 14-13=1 13-11=2 14-11=3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
13-8=5 5 8 8 50
280
2 0 13 11 11
11-0=11 11 2 2 320
Penalizaciones

7 4 M 16 14
14-4=10 10 3 3 80
9 2 B4 14 M 20 30-30=
14-2=12 12 7 7 0
30
5 1 B3 20 21 20
--- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- 0 0
20
220-30=
0 190 90 80 90

Página 173 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

5ª Asignación:

Penalizaciones
--- 4-0=4 15-13=2 13-11=2 14-11=3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
13-8=5 5 5 8 8 50
280
2 0 B5 13 11 11 320-190=
11-0=11 11 11 2 2
Penalizaciones

190 130
7 4 M 16 14
14-4=10 10 10 3 3 80
9 2 B4 14 M 20
--- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- 0 0
20
190-190=
0 0 90 80 90

6ª Asignación:

Penalizaciones
--- --- 15-13=2 13-11=2 14-11=3 6ª
--- 4 2 2 3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
6ª 5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
15-13=2 5 5 5 8 8 50
280
2 0 B5 13 11 11 B6 130-90=
11-11=0 11 11 11 2 2
Penalizaciones

190 90 40
7 4 M 16 14
16-14=2 10 10 10 3 3 80
9 2 B4 14 M 20
--- --- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- --- 0 0
20
90-90=
0 0 90 80 0

Página 174 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

7ª asignación:

NOTA: Recordemos que para que la tabla resultante sea no degenerada, en caso
de que la oferta y la demanda coincidan se tacha solo una de ellas. La actualización de
la oferta y la demanda sí debe realizarse normalmente

Penalizaciones
--- --- 15-13=2 13-11=2 --- 7ª
--- --- 2 2 3 6ª
--- 4 2 2 3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
7ª 6ª 5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
15-13=2 2 5 5 5 8 8 50
280
2 0 B5 13 11 11 B6
13-11=2 0 11 11 11 2 2 40
Penalizaciones

190 90
7 4 M 16 B7 14 80-80=
M-16 2 10 10 10 3 3 0
80
9 2 B4 14 M 20
--- --- --- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- --- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- --- --- 0 0
20
80-80=
0 0 90 0 0

Página 175 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

8ª Asignación:

Penalizaciones
--- --- 15-13=2 13-11=2 --- 8ª
--- --- 2 2 --- 7ª
--- --- 2 2 3 6ª
--- 4 2 2 3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
8ª 7ª 6ª 5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
15-13=2 2 2 5 5 5 8 8 50
280
2 0 B5 13 11 B8 11 B6 40-0=
13-11=2 2 0 11 11 11 2 2
Penalizaciones

190 0 90 40
7 4 M 16 B7 14
--- M-16 2 10 10 10 3 3 0
80
9 2 B4 14 M 20
--- --- --- --- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- --- --- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- --- --- --- 0 0
20
0-0=
0 0 90 0 0

Página 176 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

9ª Asignación:

Penalizaciones
--- --- 15-13=2 13-11=2 --- 8ª
--- --- 2 2 --- 7ª
--- --- 2 2 3 6ª
--- 4 2 2 3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
8ª 7ª 6ª 5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 13 15
15-13=2 2 2 5 5 5 8 8 50
280
2 0 B5 13 B9 11 B8 11 B6 40-40=
13-11=2 2 0 11 11 11 2 2
Penalizaciones

190 40 0 90 0
7 4 M 16 B7 14
--- M-16 2 10 10 10 3 3 0
80
9 2 B4 14 M 20
--- --- --- --- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- --- --- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- --- --- --- 0 0
20
90-40= 0-0=
0 0 50 0 0

10ª y última asignación:

Página 177 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Penalizaciones
--- --- 15-13=2 13-11=2 --- 8ª
--- --- 2 2 --- 7ª
--- --- 2 2 3 6ª
--- 4 2 2 3 5ª
--- 2 1 2 3 4ª
--- 1 1 2 3 3ª
2 1 1 2 3 2ª
8ª 7ª 6ª 5ª 4ª 3ª 2ª 1ª 0 0 13 11 11 1ª
0 B2 8 15 B10 13 15
15-13=2 2 2 5 5 5 8 8 50
280 50
2 0 B5 13 B9 11 B8 11 B6 40-40=
13-11=2 2 0 11 11 11 2 2
Penalizaciones

190 40 0 90 0
7 4 M 16 B7 14
--- M-16 2 10 10 10 3 3 0
80
9 2 B4 14 M 20
--- --- --- --- 12 12 7 7 0
30
5 1 B3 20 21 20
--- --- --- --- --- 19 4 4 0
60
0 0 0 B1 0 0
--- --- --- --- --- --- --- 0 0
20
50-50= 0-0=
0 0 0 0 0

Comprobamos que la solución sea NO degenerada:

Número de casillas básicas: 10


Restricciones -1 = m+n-1=6+5-1=10

Luego al coincidir los dos valores la solución es NO degenerada.

El siguiente paso será realizar el “Test de Optimalidad”:

Calcular los ui y los vj, que son las soluciones del sistema de ecuaciones.
Primero asignamos un valor arbitrario a cualquiera de ellas (por ejemplo
u1=0). Esto lo hacemos para las variables o casillas básicas “B”:

Para las casillas no básicas, calcular la fórmula:

Test propiamente dicho, se realiza para las casillas no básicas, que


deben ser todas menor o igual que cero para que la tabla se óptima:

Página 178 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Destinos
CT1 CT2 PT1 PT2 PT3
0 B2 8 15 B10 13 15
CT1 u1
280 50
2 0 B5 13 B9 11 B8 11 B6
CT2 u2
190 40 0 90
7 4 M 16 B7 14
Origenes

CR1 u3
80
9 2 B4 14 M 20
CR2 u4
30
5 1 B3 20 21 20
CR3 u5
60
0 0 0 B1 0 0
DF u6
20
v1 v2 v3 v4 v5

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v1 = c11  0 + v1 = 0  v1 = 0
u1 + v3 = c13  0 + v3 = 15  v3 = 15
u2 + v3 = c23  u2 + 15 = 13  u2 = -2
u2 + v2 = c22  -2 + v2 = 0  v2 = 2
u2 + v4 = c24  -2 + v4 = 11  v4 = 13
u2 + v5 = c25  -2 + v5 = 11  v5 = 13
u3 + v4 = c34  u3 + 13 = 16  u3 = 3
u4 + v2 = c42  u4 + 2= 2  u4 = 0
u5 + v2 = c52  u5 + 2= 1  u5 = -1
u6 + v3 = c63  u6 + 15 = 0  u6 = -15

Casillas no básicas = ui + vj  cij

x12 = u1 + v2 – c12 = 0+2-8 = -6


x14 = u1 + v4 – c14 = 0+13-13 = 0
x15 = u1 + v5 – c15 = 0+13-15 = -2
x21 = u2 + v1 – c21 =-2+0-2 = -4
x31 = u3 + v1 – c31 = 3+0-7 = -4
x32 = u3 + v2 – c32 = 3+2-4 = 1
x33 = u3 + v3 – c33 = 3+15-M = -M+18
x35 = u3 + v5 – c35 = 3+13-14 = 2
x41 = u4 + v1 – c41 = 0+0-9= -9
x43 = u4 + v3 – c43 = 0+15-14 = 1
x44 = u4 + v4 – c44 = 0+13-M = -M+13
Página 179 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

x45 = u4 + v5 – c45 = 0+13-20 = -7


x51 = u5 + v1 – c51 = -1+0-5= -6
x53 = u5 + v3 – c53 = -1+15-20 = -6
x54 = u5 + v4 – c54 = -1+13-21 = -9
x55 = u5 + v5 – c55 = -1+13-20 = -8
x61 = u6 + v1 – c61 = -15+0-0= -15
x62 = u6 + v2 – c62 = -15+2-0 = -13
x64 = u6 + v4 – c64 = -15+13-0 = -2
x65 = u6 + v5 – c65 = -15+13-0 = -2

Como existen casillas no básicas > 0 (x32 ; x35; x43 ) la solución no es óptima.

Como no se cumple el test de optimalidad hay que hacer otra iteración:

Seleccionar como variable de entrada la variable no básica que menos


verifique la condición de optimalidad, es decir, la que tenga mayor
valor de ui + vj  cij entre las positivas. En nuestro caso x35 (casilla
remarcada)
Encontrar el ciclo que forma la casilla que entra, con otras casillas
básicas. En nuestro caso hemos marcamos el ciclo con línea discontinua.
Marcar con los signos “+” y “” alternativamente las casillas del ciclo
encontrado, empezando por “+” en la casilla de entrada.

Destinos
CT1 CT2 PT1 PT2 PT3
0 B 8 15 B 13 15
CT1 u1
280 50
2 0 B 13 B 11 B 11 B
CT2 190 40 80+0= + 90-80= - u2
80 10
7 4 M 16 B 14
Origenes

CR1 80-80= + u3
0 - 80
9 2 B 14 M 20
CR2 u4
30
5 1 B 20 21 20
CR3 u5
60
0 0 0 B 0 0
DF u6
20
v1 v2 v3 v4 v5

Quedando así:

Página 180 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Destinos
CT1 CT2 PT1 PT2 PT3
0 B 8 15 B 13 15
CT1 u1
280 50
2 0 B 13 B 11 B 11 B
CT2 u2
190 40 80 + 10 -
7 4 M 16 14 B
Origenes

CR1 u3
- 80 +
9 2 B 14 M 20
CR2 u4
30
5 1 B 20 21 20
CR3 u5
60
0 0 0 B 0 0
DF u6
20
v1 v2 v3 v4 v5

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v1 = c11  0 + v1 = 0  v1 = 0
u1 + v3 = c13  0 + v3 = 15  v3 = 15
u2 + v3 = c23  u2 + 15 = 13  u2 = -2
u2 + v2 = c22  -2 + v2 = 0  v2 = 2
u2 + v4 = c24  -2 + v4 = 11  v4 = 13
u2 + v5 = c25  -2 + v5 = 11  v5 = 13
u3 + v5 = c35  u3 + 13 = 14  u3 = 1
u4 + v2 = c42  u4 + 2= 2  u4 = 0
u5 + v2 = c52  u5 + 2= 1  u5 = -1
u6 + v3 = c63  u6 + 15 = 0  u6 = -15

Casillas no básicas = ui + vj  cij

x12 = u1 + v2 – c12 = 0+2-8 = -6


x14 = u1 + v4 – c14 = 0+13-13 = 0
x15 = u1 + v5 – c15 = 0+13-15 = -2
x21 = u2 + v1 – c21 =-2+0-2 = -4
x31 = u3 + v1 – c31 = 1+0-7 = -6
x32 = u3 + v2 – c32 = 1+2-4 = -1
x33 = u3 + v3 – c33 = 1+15-M = -M+16
x34 = u3 + v4 – c34 = 1+13-16 = -2
x41 = u4 + v1 – c41 = 0+0-9= -9
x43 = u4 + v3 – c43 = 0+15-14 = 1
x44 = u4 + v4 – c44 = 0+13-M = -M+13
x45 = u4 + v5 – c45 = 0+13-20 = -7
Página 181 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

x51 = u5 + v1 – c51 = -1+0-5= -6


x53 = u5 + v3 – c53 = -1+15-20 = -6
x54 = u5 + v4 – c54 = -1+13-21 = -9
x55 = u5 + v5 – c55 = -1+13-20 = -8
x61 = u6 + v1 – c61 = -15+0-0= -15
x62 = u6 + v2 – c62 = -15+2-0 = -13
x64 = u6 + v4 – c64 = -15+13-0 = -2
x65 = u6 + v5 – c65 = -15+13-0 = -2

Como aún existe una casilla no básicas > 0 (x43 ) la solución no es óptima.

Como no se cumple el test de optimalidad hay que hacer otra iteración:

Destinos
CT1 CT2 PT1 PT2 PT3
0 B 8 15 B 13 15
CT1 u1
280 50
2 0 B 13 B 11 B 11 B
CT2 190+30= 40-30= u2
220 + 10 - 80 10
7 4 M 16 14 B
Orígenes

CR1 u3
80
9 2 B 14 M 20
CR2 30-30= u4
0 - 30 +
5 1 B 20 21 20
CR3 u5
60
0 0 0 B 0 0
DF u6
20
v1 v2 v3 v4 v5

Quedando:

Destinos
CT1 CT2 PT1 PT2 PT3
0 B 8 15 B 13 15
CT1 u1
280 50
2 0 B 13 B 11 B 11 B
CT2 u2
220 + 10 - 80 10
7 4 M 16 14 B
Orígenes

CR1 u3
80
9 2 14 B M 20
CR2 u4
- 30 +
5 1 B 20 21 20
CR3 u5
60
0 0 0 B 0 0
DF u6
20
v1 v2 v3 v4 v5
Página 182 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Calculamos ui, vj de las casillas básicas.

Ojo: cij→ i:fila ; j:columna

u1=0
u1 + v1 = c11  0 + v1 = 0  v1 = 0
u1 + v3 = c13  0 + v3 = 15  v3 = 15
u2 + v3 = c23  u2 + 15 = 13  u2 = -2
u2 + v2 = c22  -2 + v2 = 0  v2 = 2
u2 + v4 = c24  -2 + v4 = 11  v4 = 13
u2 + v5 = c25  -2 + v5 = 11  v5 = 13
u3 + v5 = c35  u3 + 13 = 14  u3 = 1
u4 + v3 = c43  u4 + 15= 14  u4 = -1
u5 + v2 = c52  u5 + 2= 1  u5 = -1
u6 + v3 = c63  u6 + 15 = 0  u6 = -15

Casillas no básicas = ui + vj  cij

x12 = u1 + v2 – c12 = 0+2-8 = -6


x14 = u1 + v4 – c14 = 0+13-13 = 0
x15 = u1 + v5 – c15 = 0+13-15 = -2
x21 = u2 + v1 – c21 =-2+0-2 = -4
x31 = u3 + v1 – c31 = 1+0-7 = -6
x32 = u3 + v2 – c32 = 1+2-4 = -1
x33 = u3 + v3 – c33 = 1+15-M = -M+16
x34 = u3 + v4 – c34 = 1+13-16 = -2
x41 = u4 + v1 – c41 = -1+0-9= -10
x42 = u4 + v2 – c42 = -1+2-2 = -1
x44 = u4 + v4 – c44 = -1+13-M = -M+12
x45 = u4 + v5 – c45 = -1+13-20 = -8
x51 = u5 + v1 – c51 = -1+0-5= -6
x53 = u5 + v3 – c53 = -1+15-20 = -6
x54 = u5 + v4 – c54 = -1+13-21 = -9
x55 = u5 + v5 – c55 = -1+13-20 = -8
x61 = u6 + v1 – c61 = -15+0-0= -15
x62 = u6 + v2 – c62 = -15+2-0 = -13
x64 = u6 + v4 – c64 = -15+13-0 = -2
x65 = u6 + v5 – c65 = -15+13-0 = -2

Volvemos a realizar el test: para las casillas no básicas, que deben ser todas
menor o igual que cero para que la tabla se óptima:

Como se verifica el test la tabla es óptima.

Página 183 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Destinos
CT1 CT2 PT1 PT2 PT3
0 B 8 15 B 13 15
CT1 u1
280 50
2 0 B 13 B 11 B 11 B
CT2 u2
220 10 80 10
7 4 M 16 14 B
Orígenes

CR1 u3
80
9 2 14 B M 20
CR2 u4
30
5 1 B 20 21 20
CR3 u5
60
0 0 0 B 0 0
DF u6
20
v1 v2 v3 v4 v5

Es decir la combinación optima de transporte seria, omitiendo los nudos ficticios


y las casillas básicas con valor 0:

 CT1  PT1 : 50
 CT2  PT1 : 10
 CT2  PT2 : 80
 CT2  PT3 : 10
 CR1  PT3 : 80
 CR2  PT1 : 30
 CR3  CT2 : 60

Si lo resolvemos mediante LP Solve.

Página 184 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Y los resultados serían:

Página 185 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Página 186 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

EJERCICIO: ( 1º Problema mediante ordenador del examen de Febrero


2011)

Dado el siguiente problema de programación lineal:

max 2x1+3x2-4x3-9x4
s.a x1+x2+x3-3x4≥1
x1+x2+2x3-3x4=2
3x1+2x2+x3-6x4 ≤ 4
x1,x2≥0 ; x3≤ 0 ; x4→Libre

a) Resolver el problema, obteniendo el punto solución y su valor objetivo.


b) ¿Cuáles son las variables básicas?
c) Obtener el rango de variación del coeficiente b2
d) Obtener el valor óptimo de w2
e) Resolver el problema imponiendo la condición de integridad.

SOLUCIÓN:

Recordemos que:

Un P.P.L. está en Formato Estándar si es de la forma:

Minimizar/maximizar: c1x1 +....+ cnxn

Sujeto a condiciones: a11x1 + a12x2 + ...+ a1nxn = b1


a21x1 + a22x2 + ...+ a2nxn = b2

am1x1 + am2x2 + ...+ am nxn = bm
x1,x2,..,xn  0 con b1,b2,…,bm  0

a) Introducimos las ecuaciones en el programa, lengüeta source, cada línea


finaliza con un “;”.

Hay que tener en cuenta que las variables libres se notifican en el programa
mediante la instrucción free. También para hacer constar que la variable x3 debe ser ≤0
se escribe: -inf<=x3<=0:

Página 187 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Los resultados se muestran en la lengüeta Result-Objetive:

Luego los resultados son:

( )

b) La variable básica es x2
c) Obtener el rango de variación del coeficiente b2.

Se trataría de un análisis de sensibilidad del vector recursos. En este caso nos


solicitan de la segunda restricción (b2  x1+x2+2x3-3x4=2). Para ello pinchamos en la
lengüeta Resul-Sensitivity-Duals. Hay están representantas las tres restricciones por R1,
R2, R3. En la segunda restricción (R2) observamos las columnas de from y till, que
serán los valores mínimos y máximos de las variaciones de los recursos de dicha
restricción, para que el programa óptimo no varíe. Es decir deberá estar entre [-1,2]

Página 188 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

d) Obtener el valor óptimo de w2

Al tratarse de w2 estamos hablando de la segunda restricción (R2). Tan solo


tenemos que pinchar en la lengüeta Resul-Sensitivity-Duals. Y observamos la columna
de value. Hay obtendremos los resultados del dual (D):

w1*=0 ; w2*=-3,666 ; w3*=3,333 ; Z*=6

e) Resolver el problema imponiendo la condición de integridad.

Recordemos que en el software LDSolve IDE para modificar este comportamiento


se dispone de las instrucciones:
 free x que declara la variable x como libre.
 int x que declara la variable x como entera.
 bin x que declara la variable x como binaria, es decir, x {0,1}.

Quedaría así la nueva formulación:

Página 189 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Como cabría esperar los resultados no varían, ya que las soluciones iniciales ya
eran enteras:

Los resultados se muestran en la lengüeta Result-Objetive:

( )

EJERCICIO: ( 2º Problema mediante ordenador del examen de Febrero


2011)

Dada la siguiente tabla correspondiente a un problema de transporte

Destinos
Capacidades
D1 D2 D3 D4

O1 12 9 19 25 21
Orígenes

O2 15 20 10 10 22
O3 15 15 22 21 16
O4 21 25 12 15 16
O5 24 5 10 12 11
Demandas 35 24 28 17

a) Encontrar la solución óptima del problema y su costo asociado.

b) Obtener el rango de variación de todos los costos del origen 3.

c) Si la empresa pudiese aumentar lo suficiente la capacidad del origen 1 para


cubrir toda la demanda, ¿cuál será la solución óptima y su costo asociado?

Página 190 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

d) Entre la alternativa anterior y la de subcontratar el abastecimiento de las


unidades restantes a un costa fijo de 15 unidades ¿cuál es más rentable? (Indicar la
solución y el costa total asociado a la segunda opción.)

e) Resolver el problema de asignación asociado a la tabla anterior.

SOLUCIÓN:

a) En primer lugar verificaremos que el total de demandas sea igual al total de


capacidades:

Demanda Total=35+24+28+17=104

Capacidad Total=21+22+16+16+11=86

Como no coinciden (Demanda>Oferta) necesitaremos crear una oferta ficticia


por la diferencia (104-86=18). Quedando así la tabla:

Destinos
Capacidades
D1 D2 D3 D4

O1 12 9 19 25 21
O2 15 20 10 10 22
Orígenes

O3 15 15 22 21 16
O4 21 25 12 15 16
O5 24 5 10 12 11
OF 0 0 0 0 18
104

Demandas 35 24 28 17 104

Una vez igualadas las capacidades totales con las demandas totales podremos
introducir los datos en el programa. En primer lugar hacer constar que para la resolución
de problemas de transporte o asignación se utiliza el lenguaje XLI MathProg. Para ello
deberemos marcar en View-XLI_MathProg 4.41:

Página 191 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Una vez en ese formato escribimos las siguientes líneas:

Página 192 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Una vez introducido los datos, pinchamos sobre el triángulo verde (F9-Solve)
para obtener los resultados. Estos aparecen en Result-Objetive:

Es decir se deberán transportar:

 8 ud. desde el Origen 1 al Destino 1 (coste= 8x12=96)


 13 ud. desde el Origen 1 al Destino 2 (coste= 13x9=117)
 5 ud. desde el Origen 2 al Destino 3 (coste= 5x10=50)
 17 ud. desde el Origen 2 al Destino 4 (coste= 17x10=170)
 16 ud. desde el Origen 3 al Destino 1 (coste= 16x15=240)
 16 ud. desde el Origen 4 al Destino 3 (coste= 16x12=192)
 11 ud. desde el Origen 5 al Destino 2 (coste= 11x5=55)

El coste total lo observamos en la primera fila o manualmente multiplicando


cada cantidad a transportar por su coste  96+117+50+170+240+192+55 = 920
Página 193 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

b) Obtener el rango de variación de todos los costos del origen 3.

Se trataría de un análisis de sensibilidad para todos los O3. Lo podemos obtener


de la lengüeta Result-Sensitivity-Objetive. Una vez ahí observamos las columnas from y
till.

Aquí observamos los posibles rangos de variación de los costes con origen 3
para que la tabla óptima no varíe:

Página 194 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

 O3 a D1 entre 12 y 18.
 O3 a D2 entre 12 y +∞.
 O3 a D3 entre 15 y +∞.
 O3 a D4 entre 15 y +∞.

c) Si la empresa pudiese aumentar lo suficiente la capacidad del origen 1 para


cubrir toda la demanda, ¿cuál será la solución óptima y su costo asociado?

Recordemos la tabla inicial::

Destinos
Capacidades
D1 D2 D3 D4

O1 12 9 19 25 21
Orígenes

O2 15 20 10 10 22
O3 15 15 22 21 16
O4 21 25 12 15 16
O5 24 5 10 12 11
86
Demandas 35 24 28 17
104

La diferencia entre la demanda total y la capacidad total será la capacidad a


aumentar del Origen 1 (104-86=18). Ya no tendremos que crear un origen ficticio.
Luego la nueva tabla será:

Destinos
Capacidades
D1 D2 D3 D4

O1 12 9 19 25 21+18=39
Orígenes

O2 15 20 10 10 22
O3 15 15 22 21 16
O4 21 25 12 15 16
O5 24 5 10 12 11
104
Demandas 35 24 28 17
104

Volvemos a introducir estos datos en el LPSolve:

Página 195 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Volvemos a pinchar en el triángulo verde (F9-Solve) y obtendremos (Result-


Objetive ) la tabla optima con su coste total asociado:

Página 196 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Es decir se deberán transportar:

 19 ud. desde el Origen 1 al Destino 1


 20 ud. desde el Origen 1 al Destino 2
 5 ud. desde el Origen 2 al Destino 3
 17 ud. desde el Origen 2 al Destino 4
 16 ud. desde el Origen 3 al Destino 1
 16 ud. desde el Origen 4 al Destino 3
 4 ud. desde el Origen 5 al Destino 2
 7 ud. desde el Origen 5 al Destino 3

El coste total asociado será: 1.150

Página 197 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

d) Entre la alternativa anterior y la de subcontratar el abastecimiento de las


unidades restantes a un costa fijo de 15 unidades ¿cuál es más rentable? (Indicar la
solución y el costa total asociado a la segunda opción.)

La alternativa de subcontratar tendría un coste igual al coste inicial (920) mas el


coste de las 18ud. a un precio de 15um. (15um.x18ud.=270) Es decir
920+270=1.190um.

Es decir la alternativa de subcontratar (1.190um) saldría mas cara que la de


aumentar la capacidad del Origen 1 (1.150um.)

e) Resolver el problema de asignación asociado a la tabla anterior.

Destinos
Capacidades
D1 D2 D3 D4

O1 12 9 19 25 21
Orígenes

O2 15 20 10 10 22
O3 15 15 22 21 16
O4 21 25 12 15 16
O5 24 5 10 12 11
Demandas 35 24 28 17

Recordemos que los problemas de asignacion se pueden asimilar a problemas de


transporte con las capacidades y demandas igual a 1. Nuestro objetivo es asignar los
destinos al minimo coste.

Página 198 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Los resultados:

Página 199 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Es decir:

 O1 con D1
 O2 con D4
 O4 con D3
 O5 con D2

El coste asociado es 39.

Página 200 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

EJERCICIO: ( 1º Problema del examen de Marzo 2011)

La empresa Azule,S.A. debe distribuir su presupuesto I+D+I para el próximo año


disponiendo de 30 millones de euros. Para la asignación ha distribuido los proyectos en
tres grupos según el plazo de su rentabilidad: RCP Rentables a corto plazo, RMP =
Rentables a medio plazo y RLP Rentables a largo plazo.

El retorno neto global estimado para cada tipo de proyecto es del 150 %, 200 %
y 300 % de la inversión inicial. El total de la inversión en proyectos a medio y largo
plazo no puede superar el 50 % de la disponibilidad. Así mismo, la cantidad invertida en
cada tipo de proyecto no debe ser inferior al 20 %.

a) Encontrar el reparto del presupuesto que maximiza el retorno global neto.

b) Dado que la disponibilidad presupuestaria está referida al próximo año, la


dirección general de la empresa desea conocer que efectos tendría sobre la política de
inversiones tener en cuenta únicamente la inversión en cada proyecto en el primer año,
siendo estos del 100 %, 80 % y 50 % del coste total. ¿Cómo modifica esto la política de
inversiones?

c) Desestimada la opción anterior y para evitar que los proyectos no puedan


finalizarse por restricciones presupuestarias, la empresa ha decidido financiar cada
proyecto con 5 millones de euros. ¿Cuantos proyectos debe financiarse de cada tipo?

SOLUCIÓN:

Las variables a calcular serán:

x1Inversión a corto plazo


x2Inversión a medio plazo
x3Inversión a largo plazo

Restricciones:

x1 + x2+ x3 ≤ 30 mm€  x1+x2+ x3 ≤ 30


x2+ x3≤50% de 30 mm€  x2+ x3 ≤ 15
x1≥20% de 30 mm€  x1 ≥ 6
x2≥20% de 30 mm€  x2 ≥ 6
x3≥20% de 30 mm€  x3 ≥ 6

Función a maximizar:

Max: 1,5x1 + 2x2 +3x3

Página 201 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Apartado a)

Max: 1,5x1 + 2x2 +3x3


s.a x1+x2+ x3 ≤ 30
x2+ x3 ≤ 15
x1 ≥ 6
x2 ≥ 6
x3 ≥ 6
xi ≥ 0

Transformamos a formato estándar. Recordemos que:

 Restricción ≤: para pasarla a formato estándar añadiremos una variable de holgura


tal que …+ Si =…. Además, +Si es básica en la fila i.
 Restricción =: para pasarla a formato estándar añadiremos una variable de holgura
tal que …+ Zi =…. Además, +Zi es básica en la fila i.
 Restricción ≥: para pasarla a formato estándar añadiremos una variable de holgura
tal que …-Si + Zi =…. Además, -Si, +Zi son básicas en la fila i.

Max: 1,5x1 + 2x2 +3x3


s.a x1+x2+ x3+ s1 = 30
x2+ x3 + s2 = 15
x 1 - s3 + z 3 = 6
x 2 - s4 + z 4 = 6
x3 - s5 + z5 = 6
xi ; si≥ 0

Al tener restricciones del tipo ≥ utilizaremos el método de la M Grande. Este


método trata de obligar a que z sea cero mediante un coeficiente muy grande (M).

Prob. de minimizar: El problema min c’x se convierte en min c’x + M zi.


Prob. de maximizar: El problema max c’x se convierte en max c’x – M zi.

Si Zi=0 i hemos encontrado la solución.


Si i Zi≠0 se trataría de un problema infactible

Max: 1,5x1 + 2x2 +3x3-Mz3-Mz4-Mz5


s.a x1+x2+ x3+ s1 = 30
x2+ x3 + s2 = 15
x 1 - s3 + z 3 = 6
x 2 - s4 + z 4 = 6
x3 - s5 + z5 = 6
xi ; si≥ 0

Página 202 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Recordemos los pasos para resolver un PPL por el método simplex

Paso 1: Buscar una solución básica factible inicial (punto extremo).

Paso 2: Realizar el Test de Optimalidad (determinar si el paso a una solución básica


adyacente puede mejorar la función objetivo).
 Problemas de maximizar: la solución es óptima si todos los elementos de
la fila z son ≥ 0.
 Problemas de minimizar: la solución es óptima si todos los elementos de
la fila z son ≤ 0.

Paso 3: Cambiar de base, se hace pivotando y volviendo al paso 1 (determinar la


solución básica adyacente con mayor mejora en el valor del objetivo).
 Paso 3.1: Entra la variable que menos cumple la condición de optimalidad,
es decir:
 Maximizar: la que tenga mayor valor (valor absoluto) entre los
negativos de la fila z.
 Minimizar: la que tenga mayor valor entre los positivos de la fila z.
 Paso 3.2: Sale la variable cuyo cociente del lado derecho entre sus
correspondientes elementos positivos en la columna de la variable que entra
sea el más pequeño.
 Paso 3.3: Pivotar sobre el elemento de la fila de la variable que sale y la
columna de la variable que entra. Se deberán realizar las operaciones que se
deseen, para que al final quede la matriz identidad en las columnas de las
variables básicas. La operación de pivotaje en una tabla simplex es
equivalente a un cambio de base, por lo que el resultado final será el mismo
sin interferir las operaciones realizadas.

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s1 1 1 1 1 0 0 0 0 0 0 0 30 30/1=30
0 s2 0 1 1 0 1 0 0 0 0 0 0 15 15/1=15
-M z3 1 0 0 0 0 -1 1 0 0 0 0 6
-M z4 0 1 0 0 0 0 0 -1 1 0 0 6
-M z5 0 0 1 0 0 0 0 0 0 -1 1 6 6/1=6  sale z5
min(30;15;6)=6

-M-1,5 -M-2 -M-3 0 0 M 0 M 0 M 0 -18M



Entra x3
Max(│-M-1,5│;│-M-2│;│-M-3│)= M+3

A la 1ª fila le restamos la fila del pivote (5ª)


A la 2ª fila le restamos la fila del pivote (5ª)
Recalculamos Z.

Página 203 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s1 1 1 0 1 0 0 0 0 0 1 -1 24 24/1=24
0 s2 0 1 0 0 1 0 0 0 0 1 -1 9 9/1=9
-M z3 1 0 0 0 0 -1 1 0 0 0 0 6
-M z4 0 1 0 0 0 0 0 -1 1 0 0 6 6/1=6  sale z4
min(24;9;6)=6
3 x3 0 0 1 0 0 0 0 0 0 -1 1 6
-M-1,5 -M-2 0 0 0 -M 0 M 0 -3 3+M 18-12M

Entra
x2

A la 1ª fila le restamos la fila del pivote (4ª)


A la 2ª fila le sumamos la fila del pivote (4ª)
Recalculamos Z.

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s1 1 0 0 1 0 0 0 1 1 1 -1 18 18/1=18
0 s2 0 0 0 0 1 0 0 1 -1 1 -1 3
 sale
-M z3 1 0 0 0 0 -1 1 0 0 0 0 6 6/1=6 z3
min(15;6)=6
2 x2 0 1 0 0 0 0 0 -1 1 0 0 6
3 x3 0 0 1 0 0 0 0 0 0 -1 1 6
-M-1,5 0 0 0 3 M 0 -2 2+M -3 3+M 30-6M

Entra
x1

A la 1ª fila le restamos la fila del pivote (3ª)


Recalculamos Z.

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s1 0 0 0 1 0 1 -1 1 1 1 -1 12 12/1=12
 sale
0 s2 0 0 0 0 1 0 0 1 -1 1 -1 3 3/1=3
s2
1,5 x1 1 0 0 0 0 -1 1 0 0 0 0 6
2 x2 0 1 0 0 0 0 0 -1 1 0 0 6
3 x3 0 0 1 0 0 0 0 0 0 -1 1 6
0 0 0 0 0 -1,5 1,5+M -2 2+M -3 3+M 39

Entra
s5

Página 204 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

A la 1ª fila le restamos la fila del pivote (2ª)


A la 5ª fila le sumamos la fila del pivote (2ª)
Recalculamos Z.

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
 sale
0 s1 0 0 0 1 -1 1 -1 0 2 0 0 9
s1
0 s5 0 0 0 0 1 0 0 1 -1 1 -1 3
1,5 x1 1 0 0 0 0 -1 1 0 0 0 0 6
2 x2 0 1 0 0 0 0 0 -1 1 0 0 6
3 x3 0 0 1 0 1 0 0 1 -1 0 0 9
0 0 0 0 3 -1,5 1,5+M 1 -1+M 0 +M 48

Entra s3

A la 3ª fila le sumamos la fila del pivote (1ª):

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s3 0 0 0 1 -1 1 -1 0 2 0 0 9
0 s5 0 0 0 0 1 0 0 1 -1 1 -1 3
1,5 x1 1 0 0 1 -1 0 0 0 2 0 0 15
2 x2 0 1 0 0 0 0 0 -1 1 0 0 6
3 x3 0 0 1 0 1 0 0 1 -1 0 0 9
0 0 0 1,5 1,5 0 +M 1 2+M 0 +M 61,5

Realizar el Test de Optimalidad (determinar si el paso a una solución básica


adyacente puede mejorar la función objetivo). Problemas de maximizar: la solución
es óptima si todos los elementos de la fila z son ≥ 0.

Por la metodología de la M grande deberemos comprobar también que en la columna de


la derecha (Zi) no existe ninguna Z con valor distinto de 0. Como también se da esta
segunda condición, la solución es óptima:

( )

Mediante LPSolve los resultados coinciden:

Página 205 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Apartado b) Dado que la disponibilidad presupuestaria está referida al próximo


año, la dirección general de la empresa desea conocer que efectos tendría sobre la
política de inversiones tener en cuenta únicamente la inversión en cada proyecto en el
primer año, siendo estos del 100 %, 80 % y 50 % del coste total. ¿Cómo modifica esto
la política de inversiones?

Se trataría de una modificación en el vector de costes:

La rentabilidad de las Inversiones a corto plazo se recuperaría en el primer año


el 100%. Es decir se mantendría igual que en el apartado a)

La rentabilidad de las Inversiones a medio plazo se recuperaría en el primer año


el 80%.

La rentabilidad de las Inversiones a largo plazo se recuperaría en el primer año


el 50%.

Quedando así la función a maximizar:

Max: (1∙1,5)x1 +(0,8∙2)x2 +(0,5∙3)x3  1,5x1 + 1,6x2 + 1,5x3

El P.P.L. quedaría:

Max: 1,5x1 + 1,6x2 + 1,5x3


s.a x1 + x2+ x3 ≤ 30
x2 + x3 ≤ 15
x1 ≥ 6
x2 ≥ 6
x3 ≥ 6
xi ≥ 0

La tabla óptima calculada anteriormente era:

Página 206 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

1,5 2 3 0 0 0 -M 0 -M 0 -M
x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s3 0 0 0 1 -1 1 -1 0 2 0 0 9
0 s5 0 0 0 0 1 0 0 1 -1 1 -1 3
1,5 x1 1 0 0 1 -1 0 0 0 2 0 0 15
2 x2 0 1 0 0 0 0 0 -1 1 0 0 6
3 x3 0 0 1 0 1 0 0 1 -1 0 0 9
0 0 0 1,5 1,5 0 +M 1 2+M 0 +M 61,5

Recalculamos el renglón Z:

1,5 1,6 1,5 0 0 0 -M 0 -M 0 -M


x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s3 0 0 0 1 -1 1 -1 0 2 0 0 9
0 s5 0 0 0 0 1 0 0 1 -1 1 -1 3
1,5 x1 1 0 0 1 -1 0 0 0 2 0 0 15
1,6 x2 0 1 0 0 0 0 0 -1 1 0 0 6
1,5 x3 0 0 1 0 1 0 0 1 -1 0 0 9
0 0 0 1,5 0 0 +M -0,1 3,1+M 0 +M 45,6

A continuación realizamos el Test de Optimalidad (determinar si el paso a una


solución básica adyacente puede mejorar la función objetivo). Recordemos que:

 Problemas de maximizar: la solución es óptima si todos los elementos de la


fila z son ≥ 0.
 Problemas de minimizar: la solución es óptima si todos los elementos de la
fila z son ≤ 0.

Como existe un elemento de la fila Z negativo, deberemos pivotar.

1,5 1,6 1,5 0 0 0 -M 0 -M 0 -M


x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s3 0 0 0 1 -1 1 -1 0 2 0 0 9
0 s5 0 0 0 0 1 0 0 1 -1 1 -1 3  sale s5
1,5 x1 1 0 0 1 -1 0 0 0 2 0 0 15
1,6 x2 0 1 0 0 0 0 0 -1 1 0 0 6
1,5 x3 0 0 1 0 1 0 0 1 -1 0 0 9
0 0 0 1,5 0 0 +M -0,1 3,1+M 0 +M 45,6

Entra
s4

A la 4ª fila le sumamos la fila pivote (2ª)


A la 5ª fila le restamos la fila pivote (2ª)

Página 207 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

1,5 1,6 1,5 0 0 0 -M 0 -M 0 -M


x1 x2 x3 s1 s2 s3 z3 s4 z4 s5 z5
0 s3 0 0 0 1 -1 1 -1 0 2 0 0 9
0 s4 0 0 0 0 1 0 0 1 -1 1 -1 3
1,5 x1 1 0 0 1 -1 0 0 0 2 0 0 15
1,6 x2 0 1 0 0 1 0 0 0 0 1 -1 9
1,5 x3 0 0 1 0 0 0 0 0 0 -1 1 6
0 0 0 1,5 0,1 0 +M 0 3+M 0,1 -0,1+M 45,9

Ahora si todos los elementos de la fila Z son ≥0, luego la solución es óptima. La nueva
solución será:

( )

Mediante LPSolve los resultados coinciden:

Apartado c) Desestimada la opción anterior y para evitar que los proyectos no


puedan finalizarse por restricciones presupuestarias, la empresa ha decidido financiar
cada proyecto con 5 millones de euros. ¿Cuantos proyectos debe financiarse de cada
tipo?

La solución al apartado a (relajado) era: ( )

Max: 1,5x1 + 2x2 +3x3


s.a x1+x2+ x3 ≤ 30 (1)
x2+ x3 ≤ 15 (2)
x1 ≥ 6 (3)
x2 ≥ 6 (4)
x3 ≥ 6 (5)
xi ≥ 0

Página 208 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Es decir en este apartado nos preguntan una solución en las que las variables
x1,x2,x3 sean enteras y múltiplos de 5. Además de que cumpla todas las restricciones.

A partir de la solución del problema relajado podríamos buscar una solución con
valores múltiplo de 5:

x1=15; x2=5;x3=10  No cumple la restricción 4 .

x1=15; x2=10;x3=10  No cumple las restricciones 1 y 2.

Luego parece que el problema sería infactible, pues valores inferiores no


cumple las restricciones 4 y 5. Y valores superiores no cumpliría las restricciones 1 y 2.

Página 209 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

EJERCICIO: ( 2º Problema del examen extraordinario de Marzo 2011)

La empresa Oil,S.A. utiliza una pequeña red de conducciones para transportar


aceite desde sus depósitos centrales hasta los puntos de venta. Los depósitos centrales
también se utilizan como puntos de venta y están interconectados entre sí. Además la
empresa dispone de un punto adicional de transvase.

La siguiente tabla muestra los costos por Tm. de transportar el aceite en cada
uno de los trayectos, la demanda de aceite en cada punto en el próximo mes y la
disponibilidad en cada uno de los almacenes.

DC1 DC2 PT PV1 PV2 PV3 Disponibilidad


DC1 16 17 15 13 16 190
DC2 22 17 14 16 210
PT 9 8 6 12 8 8
Demanda 110 80 90 60 50

a) Encontrar la política optima de envío del aceite para el próximo mes y su


correspondiente costo.

b) Una cooperativa local dispone de 30 Tm de aceite que podría enviar desde el


punto de transvase. ¿Cómo cambiará la política y los costos si la empresa aceptase la
propuesta?

c) Un inspector con base en el punta de transferencia, debe realizar una ruta


diaria que pase por todos los almacenes y todos los puntos de venta, siendo los costos
proporcionales a los de transporte de aceite y a los de la tabla siguiente:

PV2 PV3
PV1 21 16
PV2 18

¿Cuál es la ruta optima? ¿Qué longitud tiene?

SOLUCIÓN:

En primer lugar verificamos que la oferta total coincida con la demanda total:

Disponibilidad/Oferta Total 190+210=400

Demanda Total  110+80+90+60+50=390

Como Demanda total es menor que la oferta total deberemos crear un destino
ficticio con dicha diferencia (400-390=10).

Recordemos también que al tratarse de un problema de transbordo, a la oferta y


demanda de este nodo (PT) hay que añadirle la oferta o demanda total (400). Así
quedaría la tabla:
Página 210 de 214
Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

DC1 DC2 PT PV1 PV2 PV3 DF Disponibilidad


DC1 0 16 17 15 13 16 0 190
DC2 22 0 17 14 16 0 0 210
PT 9 8 6 12 8 8 0 400
400
Demanda 110 80 400 90 60 50 10
400

Ya tenemos planteado el problema como uno de transporte. Para la resolución


del problema utilizaremos el Método de Vogel. Recordemos los pasos a seguir:

Paso 1: Para cada fila y columna se calculan las penalizaciones o costes de


oportunidad, como la diferencia entre los dos costes más pequeños.

Penalizaciones
Penalizaciones 9-0=9 8-0=8 17-6=11 14-12=2 13-8=5 8-0=8 0-0=0 1ª
1ª DC1 DC2 PT PV1 PV2 PV3 DF
0-0=0 DC1 0 16 17 15 13 16 0
0-0=0 DC2 22 0 17 14 16 0 0
6-0=6 PT 9 8 6 12 8 8 0

Paso 2: Se elige la fila o columna con mayor penalización


[max(0,0,6,9,8,11,2,5,8,0)=11  Columna 3ª] y dentro de esa fila o columna, la casilla
más barata [min(17,17,6)=6] es la fila PT. Esta casilla 3-3 se hace básica con valor igual
al mínimo entre la oferta y la demanda [min(400;400)=400].

Penalizaciones
9-0= 8-0= 17-6= 14-12= 13-8= 8-0= 0-0= 1ª
Penalizaciones 9 8 11 2 5 8 0
1ª DF

←bilidad
DC1 DC2 PT PV1 PV2 PV3 Disponi

0 16 17 15 13 16 0 190
0-0=0 DC1
22 0 17 14 16 0 0 210
0-0=0 DC2
9 8 6 B 12 8 8 0 400
6-0=6 PT
400
Demandas→ 110 80 400 90 60 50 10

Paso 3: Tachar (rellenamos de rojo) la fila o columna donde se haya alcanzado


el total de la oferta o demanda. Recordemos que para que la tabla resultante sea no
degenerada, en caso de que la oferta y la demanda coincidan se tacha solo una de ellas.
La actualización de la oferta y la demanda sí debe realizarse normalmente.

Página 211 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

Penalizaciones
9-0= 8-0= 17-6= 14-12= 13-8= 8-0= 0-0= 1ª
Penalizaciones 9 8 11 2 5 8 0
1ª DF

←bilidad
Disponi
DC1 DC2 PT PV1 PV2 PV3

0 16 17 15 13 16 0 190
0-0=0 DC1
22 0 17 14 16 0 0 210
0-0=0 DC2
9 8 6 B 12 8 8 0 400
6-0=6 PT
400
Demandas→ 110 80 400 90 60 50 10

Paso 4: Actualizar la oferta y la demanda y volver al paso 1.

Penalizaciones
9-0= 8-0= 17-6= 14-12= 13-8= 8-0= 0-0= 1ª
Penalizaciones 9 8 11 2 5 8 0

←bilidad
Disponi
DC1 DC2 PT PV1 PV2 PV3 DF

1 1 0 190
0 16 17 15
0-0=0 DC1 3 6

22 0 17 14 16 0 0 210
0-0=0 DC2
9 8 6 B 12 8 8 0 400-400=
6-0=6 PT 0
400
Demandas→ 110 80
400-400=
90 60 50 10
0

Volvemos a realizar todo el proceso. Recordemos que para que la tabla


resultante sea no degenerada, en caso de que la oferta y la demanda coincidan se tacha
solo una de ellas. La actualización de la oferta y la demanda sí debe realizarse
normalmente. De esta forma la 2ª asignación será:

Página 212 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

EJERCICIO: ( 1er. Problema del examen de Junio 2011)

El departamento de formación de una empresa está elaborando el presupuesto


para el próximo año. Las actividades se dividen en tres grupos en función del personal
al que van dirigidas. El costo de preparación de las actividades, así como, el número
mínimo y máximo de cada tipo son:

Grupo G1 G2 G3
Costo 10 13 17
Mínimo 15 12 4
Máximo 20 15 10

a) Si se dispone de un total de 900 para las actividades del próximo año. ¿Cuál
es la planificación óptima de actividades?

b) La dirección de la empresa está interesada en saber que cambios produciría en


la planificación de actividades una reducción en los costos de las actividades del grupo
3.

c) Por motivos organizativos se ha decido hacer la oferta formativa en módulos


compuestos por 3 actividades. En estas condiciones, ¿Cuál debería ser la oferta
formativa?

Página 213 de 214


Apuntes de clase Investigación Operativa Ingeniería en Organización Industrial
Problemas de exámenes

EJERCICIO: ( 2º Problema del examen de Junio 2011)

2. Una empresa de trabajo temporal ha preseleccionado a candidatos para cubrir


los contratos que le han sido solicitados desde sus sucursales. El número de candidatos
preseleccionados y el número de entrevistas solicitadas por cada empresa vienen dados
en la tabla siguiente. Así mismo, se muestra la puntuación obtenida en el test de
idoneidad de cada candidato para cubrir cada uno de los puestos ofertados.

Empresas
Aspirantes
E1 E2 E3

S1 8 15 10 40
S2 9 10 11 29
S3 14 13 11 49
Entrevistas 27 31 21

a) Encontrar el reparto óptimo de los aspirantes para las entrevistas.

b) Un fallo en el sistema informático de la sucursal 2 ha provocado puntuaciones


inferiores a las reales en 7 puntos. ¿Cuál sería el nuevo reparto óptimo?

c) La empresa de trabajo temporal tiene que desplazar a un técnico a cada una de


las empresas que van a realizar las entrevistas por cada 30 aspirantes o fracción. La
empresa puede desplazar un máximo de 2 técnicos desde cada sucursal. Si los costos de
desplazamiento de los técnicos vienen dados en la tabla:

Empresas
E1 E2 E3
S1 8 15 10
S2 9 10 11
S3 14 13 11

¿Cuál es el reparto óptimo de los técnicos?

Página 214 de 214

S-ar putea să vă placă și