Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Notas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 64

Notas del curso de Investigación de operaciones

Israel Sanchez Mendoza

Agosto 2021
Índice general

1. Programación dinámica 5
1.1. Programación dinámica determı́stica . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Programación dinámica probabilı́stica . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2. Programación entera 23
2.1. Problemas clásicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.1. Problema de la mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.2. El problema de transporte . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2. Métodos de solución para programación lineal entera . . . . . . . . . . . . . . . 33
2.2.1. Método gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.2. Método de ramificación y acotamiento . . . . . . . . . . . . . . . . . . . 36
2.3. Programación dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3. Análisis de redes 47
3.1. Introducción a las gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2. Problema de la trayectoria más corta . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3. Modelos de Máximo Flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4. Árbol de expansión mı́nima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.5. CPM y PERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4. Modelos de Inventario 62
4.1. Modelo estático de cantidad de pedido económico (EOQ) . . . . . . . . . . . . . 63
4.1.1. Modelo EOQ clásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2
Introducción

Una de las principales necesidades que surgen al estudiar modelos matemáticos ası́ como en
la vida profesional es la de optimizar ya sea recursos y/o tiempo tanto en ámbitos profesionales
como en el académico, por lo que, es fundamental contar con los elementos necesarios que nos
permitan desarrollar dicha habilidad.

Tal vez al escuchar esto por primera vez, el estudiante recordada aquellos cursos de cálculo, op-
timización lineal, optimización no lineal, en los cuales pudo haber aplciada alguna optimización
mediante técnicas de cálculo, sin embargo, en este curso analizaremos algunas de las técnicas
más comúnes en dicha tarea como son: programación dinámica, programación entera,
análisis de redes, teorı́a de colas ası́ como algunos modelos de inventarios.

Lo anterior permitirá al estudiante observar algunos de los posibles campos de aplicación,


no obstante, he de señalar que estos no son los únicos debido a que el objetivo del curso es el
de brindar un panorama general de las herramientas y en la medida de lo posible identificar la
automatización de algunos método y/o algoritmos a fin de identificar de forma rápida el camino
a seguir en estos métodos.

Al respecto es importante y fundametal señalar que el ámbito de aplicación de estas técnicas y


amplio y además que este alcanza su mayor nivel de alcance al concretarse en la denominama
teorı́a de juegos, en la que, prácticamente se emplea el principio de optimalidad de Bellman 1
y a partir de este plantear las ideas que veremos en el primer capı́tulo.

Finalmente analizaremos un pequeño diagrama en el cual observaremos la idea general de


los diferentes pasos a seguir cuando plantemos algún modelo y que es relevante al momento de
realizar modelo o aplicaciones.

1. Primero se debe traducir la situación de interes en términos matemáticos, para lo que, se


debe establecer una hipótesis acerca del fenómeno en cuestión.

2. Una vez planteado el problema lo que resta es analizar la solución y asimismo, recordar
que dicho modelo sólo es una aproximación del fenómeno de interes, por lo que, dicha
ecuación puede simplificiar el problema a resolver. Dicho lo anterior, es necesario conocer
el problema y comprenderlo a fin de mejorar y delimitar la ecuación de interes.

3. Finalmente, una vez obtenida la solución de la ecuación diferencial esta misma deberá
de interpretarse en términos del contexto del problema que la origino. Y asimismo, se
deberá de validar que dicha solución es razonable con respecto a la interpretación fı́sica
del mismo.
1
Richard Ernest Bellman fue un matemático cuya mayor contribución fue la metodologı́a de la denominada
programación dinámica ası́ como por la ecuación de Bellman

3
4 ÍNDICE GENERAL

En término de un tipo diagrama de flujo podrı́a denotarse de la siguiente forma:

Figura 1: Metodologı́a para el planteamiento de modelos matemáticos.


Capı́tulo 1

Programación dinámica

La programación dinámica es un método matemático de gran utilidad para la toma de


decisiones, debido a que proporciona un método sistemático para determinar la combinacion
óptima, esto a pesar de la gran variedad de problemas y formulaciones.

Debido a lo anterior no existe una formulación estándar, sino sólo el método para resolver
el problema y además de que depende del conocimiento que se tengan sobre el problema debido
a que se involucra un tipo de ecuación general la cual puede plantearse a decisión del estudiante.

Por lo que, es necesario tener una buena idea de la estructura general del problema ası́ co-
mo de la evolución del mismo para resolver el problema; por esta razón analizaremos primero
los elementos básicos de la formulación del método y posteriormente las diferentes clasificacio-
nes de los modelos ası́ como ejemplos y aplicaciones del mismo.

Ahora nos enfocaremos en los elementos clave de este tipo de problemas ası́ como la forma
de identificar cuando podemos poner en práctica algúna variante de la programación dinámica,
para lo que, incorporaremos un problema inicial con el que mencionaremos diferentes elementos
del mismo:
Ejemplo 1.1. Considere una persona que tiene una pequeña tienda de autoservicio en la cual
cuenta con una gran variedad de artı́culos de abarrotes entre ellos se encuentran las tortillas
las cuales se venden en $ v pesos. Resulta ser que el proveedor de dicho artı́culo pasa diario a
reabastecer la cantidad de tortillas necesarias, las cuales se las vende a $ c pesos.

El dueño de la tienda conoce que al igual que sus otros artı̀culos perecederos este depende
principalmente de la demanda del mismo ası́ como de la competencia que pueda tener, sin em-
bargo, el no puede solicitar demasiado artı́culo debido a que este pierde sus cualidades y genera
pérdidas en vez de utilidades.

Entonces a partir de lo anterior y de la demanda que existe el dueño de la tienda busca deter-
minar el número de kilos de tortillas que deberá solicitar a su proveedor a fin de maximizar sus
ganancias causadas por la venta de tortillas en la semana.
Del ejemplo anterior podemos observar diferentes cuestiones que se ven involucradas en cual-
quier problema de programación dinámica, los cuales son:
1. Etapas: El problema puede ser dividido en etapas, cada una de las cuales requiere de una
polı́tica de decisión, la cual nos permite elegir una acción de entre un conjunto posible

5
6 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

de acciones.

En nuestro ejemplo, las acciones que puede tomar el dueño de la tienda es elegir el
número de kilogramos de tortillas que requiere para el dı́a correspondiente, para cada uno
de los dı́as de la semana.

2. Cada etapa tiene un número de estados asociadas al inicio del mismo, en este caso aunque
parece ser que se reinicia en cada etapa, no necesariamente debe de suceder en cada etapa,
supongamos que pudiera vender las tortillas del dı́a anterior como tortilla frı́a entonces
tendrı́amos dependencia.

3. El efecto de la polı́tica de decisión afecta el estado actual y lo lleva a evolucionar al


siguiente estado, en particular para los kilogramos de tortillas que se cuentan.

4. La solución se encuentra dada por la polı́tica óptima, misma que permite resolver el
problema de forma completa es decir, aquella que permite obtener el máximo ingreso en
los 7 dı́as.

5. Dado el estado actual, notemos que la polı́tica óptima debe ser independiente de las
etapas, toda vez que, esta debe buscar maximar el ingreso en cada etapa a fin de que esta
sucesión de acciones la lleve a la polı́tica óptima.

6. Existe una función objetivo la cual buscamos maximizar, con la que, podemos definir la
polı́tica óptima.

Ahora analizaremos un primer ejemplo introductorio con estos conceptos:

Ejemplo 1.2. Considere una persona que se traslada de su casa al trabajo y puede realizar
diferentes rutas, sin embargo, cada ruta toma cierto tiempo de acuerdo con la siguiente gráfica:

7
A D 1
4 3
2 4 G
6
3
6
4 2
O B E 3 M
4
4
3 3
1 4
H
3
5
C F

Una forma de considerar este problema, podrı́a ser a través de elegir el menor tiempo desde el
origen, es decir, optarı́amos por la ruta O → A → E → H → M , es decir la ruta:
7

7
A D 1
4 3
2 4 G
6
3
6
4 2
O B E 3 M
4
4
3 3
1 4
H
3
5
C F

Donde entonces el tiempo total que le tomarı́a en llegar a su destino serı́a de 13 horas, sin
embargo, esta idea no obtiene el valor óptimo esperado debido a que podemos brindar otra ruta
la cual claramente es mejor:

7
A D 1
4 3
2 4 G
6
3
6
4 2
O B E 3 M
4
4
3 3
1 4
H
3
5
C F

Notemos que esta ruta nos tomarı́a en total 11 horas, siendo dos horas menor a la anterior,
por lo que debemos de buscar una forma de obtener dicho óptimo. Una forma muy sencilla es
dividir el problema en pequeños subproblemas de tal forma que podamos obtener la ruta óptima,
por lo que, consideraremos que la persona casi ha llegado a su destino (notemos que el problema
se puede ver como 4 etapas).

A partir de lo anterior comenzaremos formulando el problema de la siguiente forma, consi-


dere a xn con n = 1, 2, 3 las decisiones del individuo en cada etapa, observemos en general que
la trayectoria realizada se encuentra dada por O → x1 → x2 → x3 → M y además sea fn (s, xn )
el tiempo total de la mejor polı́tica (estrategia) para las etapas restantes cuando el individuo se
encuentra en el estado s y elige a xn como destino en la siguiente etapa; ahora bien dado s y
n denotemos por x∗n el valor de xn que minimiza fn (s, xn ), es decir:

fn (s, x∗n ) = mı́n fn (s, x) =: fn∗ (s). (1.1)


x

Notemos que esta relación puede ser descrita de la siguiente forma:



fn (s, xn ) = ts,xn + fn+1 (s). (1.2)

Notemos que el objetivo es encontrar f1∗ (O) ası́ como la ruta óptima con la que se obtiene di-
cho óptimo, es decir, la trayectoria deseada; notemos que gracias al proceso anterior podemos
8 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

determinarla de forma sucesiva al calcular f4∗ (s), f3∗ (s), f2∗ (s) y finalmente f1∗ (O), realizamos el
procedimiento para obtener la solución.

Notemos que cuando el individuo se encuentra a una etapa de llegar el tiempo total se en-
cuentra dado por el tiempo de moverse del estado en el que se encuentre, es decir:

s f4∗ (s) x∗4


G 3 M
H 4 M

Ahora con estos costos en mente podremos determinar ahora para cuando estamos a dos etapas
de llegar al destino, es decir:

s ts,G ts,H f4∗ (G) f4∗ (H) f3∗ (s) Trayectoria


D 1 4 3 4 4 D→G→M
E 6 3 3 4 7 E→H→M
F 3 3 3 4 6 F →G→M

Condesando las sumas en un sólo elemento obtenemos la tabla siguiente:

s ts,G + f4∗ (G) ts,H + f4∗ (H) f3∗ (s) Trayectoria


D 4 8 4 D→G→M
E 9 7 7 E→H→M
F 6 9 6 F →G→M

Ahora de forma similar analicemos el caso cuando estamos a tres etapas de llegar al pun-
to destino, sin embargo, en esta ocasión a fin de no trabajar más retomaremos la expresión
simplificada únicamente, es decir:

s ts,D + f3∗ (D) ts,E + f3∗ (E) ts,F + f3∗ (F ) f2∗ (s) Trayectoria (s)
A 7 + 4 = 11 4 + 7 = 11 6 + 6 = 12 11 A → D → G → M ; A → E → H → M
B 3+4=7 2+7=9 4 + 6 = 10 7 B→D→G→M
C 4+4=8 1+7=8 5 + 6 = 11 8 C → D → G → M; C → E → H → M

Finalmente, si estamos en el inicio o a cuatro etapas de la meta tenemos que considerar la


tabla siguiente:
s ts,A + f2∗ (A) ts,B + f2∗ (B) ts,C + f2∗ (C) f1∗ (s)
O 2 + 11 = 13 4 + 7 = 11 3 + 8 = 11 11
Por lo que, hemos encontrado 3 posibles trayectorias óptimas, cada una con un tiempo total de
11 horas, las cuales son:

1. O → B → D → G → M .

2. O → C → D → G → M .

3. O → C → E → H → M

Y gráficamente, estas pueden ser expresadas por la gráfica:


1.1. PROGRAMACIÓN DINÁMICA DETERMÍSTICA 9

D 1
3
G
3
4
O B E 3 M
4
4
3
1
H
C

En general esta será la forma en que se determinará cada problema de progración dinámica, es
decir, tendremos una relación recursiva y un procedimiento de solución hacı́a atrás comúnmente
conocido como programación dinámica, existe otra forma de resolverla conocida como itera-
ción de polı́ticas la cual jeuga un papel importante en la teorı́a de juegos.

Antes de entrar a analizar más ejemplos y elementos del método daremos énfasis a cierto
factor que hace que el método funcione. Este justamente se conoce como el principio de
optimalidad de Bellman. A continuación se señala:
Teorema 1.1. Principio de optimalidad de Bellman: Una polı́tica óptima tiene la pro-
piedad de que cualquiera que sea el estado inicial y la decisión inicial, las decisiones restantes
deben ser una polı́tica óptima en relación con el estado resultante de la primera decisión.
En otra palabras, la polı́tica óptima debe de mantener la propiedad de optimalidad sin impor-
tar en que etapa la estemos considerando, de aquı́ justamente nace la relación recursiva que
pudimos plantear anteriormente.

Notemos que por esta razón podemos comenzar el proceso de determinación del óptimo a
partir de la última y etapa y posteriormente regresar a etapas iniciales. Lo que implica que
determinar la decisión óptima de la etapa final debe conformar parte de la polı́tica de decisión
global y ası́ posteriormente.

Entonces el proceso de programación dinámica es similar al descrubrimiento de una trayec-


toria óptima con ciertas cualidades y beneficios, entre ellos, reduce el problema con un número
determinado de etapas a subproblemas individuales y parciales en la evolución del sistema.

De esta forma es como el principio de optimalidad es una parte fundamental del méto-
do de programación dinámica, ya que, si esta no fuera válido no podrı́amos realizar el método.
En la siguiente sección consideraremos otra caracterı́stica del método y como este mismo real-
mente considera una gran variedad de problemas; misma que resulta aplicable para problemas
con mayor complejidad, sin embargo, necesita de un mayor conocimiento tanto del problema
como de fundamentación matemática.

1.1. Programación dinámica determı́stica


Ahora bien, hasta el momento ya hemos mencionado el método general de programación
dinámica, sin embargo, se ha mencionado mucho acerca de la generalización del mismo, y esto
10 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

se debe a que existen aquellos problemas que tienen un enfoque determinı́stico y otros del tipo
estocástico.

Al mencionar lo anterior nos referimos a que el método de programación dinámica determinı́sti-


co es aquel en el cual la evolución del sistema se encuentra completamente dada por el estado
actual y por la polı́tica de decisión seleccionada, es decir, la evolución es segura y no le afectan
factores aleatorios, ahora bien, a fin de familiarizarnos un poco más con estos conceptos anali-
zaremos otro problema (similar al de arriba) para el caso determinı́stico.

Previo al análisis del ejemplo siguiente también se puede clasificar el problema en función
de la naturaleza del conjunto de estados en las respectivas etapas, es decir, si toma valores
en un conjunto a lo sumo numerables estonces la variable se denominará discreta, en caso
contrario se llamará continua.

Ejemplo 1.3. La Organización Mundial de la Salud (OMS) se dedica a estudiar y brindar


algunas mejoras en cuanto atención médica en los diferentes paı́ses en desarrollo, para lo que,
dispone de brigadas médicas las cuales son envı́adas a apoyar a comunidades marginales de los
paı́ses en desarrollo.

Por lo anterior, entre las diferentes áreas de las OMS se cuentan con 5 brigadas por envı́ar a
3 comunidades diferentes, el desempeño de la atención de las brigadas se evalúa en términos
de la esperanza de vida incremental por persona en cada comunidad (para cualquier comunidad
se considera el incremento del promedio de vida esperado, multiplicado por personas).
¿Cuál es la asignación que maximiza el desempeño? Considere la siguiente tabla:

Brigadas médicas Comunidad 1 (C1) Comunidad 2 (C2) Comunidad 3 (C3)


0 0 0 0
1 45 20 50
2 70 45 70
3 90 75 80
4 105 110 100
5 120 150 130

Solución:
Ahora bien, pareciera que el problema anterior no es puede ser objeto de aplicación del méto-
do de programación dinámica, sin embargo, el problema requiere de aplicar un conjunto de 3
decisiones interrelacionadas las cuales son: ¿cuántas brigadas se envı́aran a la C1, C2 y C3?.

De esto plantearemos el problema de programación dinámica por medio de 3 etapas, y entonces


sea xn el número de brigadas asignadas en cada etapa (paı́s). Ahora bien, para identificar los
estados podremos preguntarnos ¿qué cambia de etapa a etapa?; entonces los estados del siste-
ma son sn donde este denota el número de brigadas médicas disponibles para los paı́ses restantes.

Entonces los estados se encuentran dados por s1 = 5, s2 = 5 − x1 y s3 = s2 − x2 , a partir


de esto proponemos la siguiente gráfica que denota la evolución del sistema paso a paso y justo
buscamos establecer una ruta que máximice la trayectoria ponderada:
1.1. PROGRAMACIÓN DINÁMICA DETERMÍSTICA 11

0
0 0
20

0
1 1
120 20 0
45
105 50
0
2 75 2 70
90 20
45
5 70 0
80
110 0
3 75 75 3
45 20 100
45

0 150 130
45
110 0
4 4
20

0
5 5

Adicionalmente a lo anterior, falta determinar la relación recursiva que definirá la función


objetivo ası́ como la ecuación de optimalidad. por lo anterior, definimos como pi (xi ) el desem-
peño (ganancia) al asignar xi brigadas médicas en el paı́s i; entonces el problema consiste en
elegir x1 , x2 y x3 tales que se maximiza la función:
3
X
pi (xi ), (1.3)
i=1

sujeta a la restricción siguiente:

x1 + x2 + x3 = 5, ∀i = 1, 2, 3 xi ≥ 0. (1.4)

Por lo que, la función objetivo anterior se puede replantear en términos del principio de
optimalidad, de la siguiente forma:
3
X
fn (sn , xn ) = pn (xn ) + máx pi (xi ), (1.5)
i=n+1

bajo la siguiente restricción:


3
X
xi = s n , ∀i = n, n + 1, . . . , 3 xi ≥ 0. (1.6)
i=n
12 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

Ahora bien, notemos que al determinar el máximo sobre la función (1.5) obtenemos la optima-
lidad al considerar la evolución a partir de la etapa n, es decir:
fn∗ (sn ) = máx fn (sn , xn ) = máx fn (sn , xn ) (1.7)
xn xn =0,1,...,sn

Por lo anterior, la forma que toma dicha ecuación se describe como:



fn (sn , xn ) = pn (xn ) + fn+1 (sn − xn ). (1.8)
Ahora bien, a partir de lo anterior podemos determinar la forma en que debemos proceder para
aplicar el método de programación dinámica, en particular lo tenemos para 2 casos; las etapas
intermedias y la etapa final.

En particular para las etapas intermedias, es decir n = 1, 2, tenemos que considerar la ecuación:

fn∗ (sn ) = máx pn (xn ) + fn+1

(sn − xn ) , (1.9)
xn

y para la etapa final (terminal), es decir n = 3, tenemos la ecuación:


f3∗ (s3 ) = máx p3 (x3 ). (1.10)
xn

Una vez definido las ecuaciones de optimalidad (1.9) y (1.10), ası́ como identificado la gráfica
que muestra la evolución del sistema podremos aplicar el método de programación dinámica;
comencemos con la etapa final:
s3 f3∗ (s3 ) x∗3
0 0 0
1 50 1
2 70 2
3 80 3
4 100 4
5 130 5
Ahora consideremos una etapa adicional hacı́a atrás, y evaluamos ecuación de optimalidad
p2 (x2 ) + f3∗ (s2 − x2 ), obteniendo ası́:
s2 x2 = 0 x2 = 1 x2 = 2 x2 = 3 x2 = 4 x2 = 5
0 0+0=0
1 0 + 50 = 50 20 + 0 = 20
2 0 + 70 = 70 20 + 50 = 70 45 + 0 = 45
3 0 + 80 = 80 20 + 70 = 90 45 + 50 = 95 75 + 0 = 75
4 0 + 100 = 100 20 + 80 = 100 45 + 70 = 115 75 + 50 = 125 110 + 0 = 110
5 0 + 130 = 130 20 + 100 = 120 45 + 80 = 125 75 + 70 = 145 110 + 50 = 160 150 + 0 = 150
Resumiendo la tabla anterior, obtenemos la siguiente tabla; la cual resume la trayectoria óptima
ası́ como el beneficio óptimo:
s2 f2∗ (s2 ) Trayectoria
0 0 0→0
1 50 0→1
2 70 0 → 1; 1 → 0
3 95 2→1
4 125 3→1
5 160 4→1
1.2. PROGRAMACIÓN DINÁMICA PROBABILÍSTICA 13

Finalmente, consideraremos la primer etapa con lo que podremos determinar la polı́tica ópti-
ma, consideremos entonces:

s1 x1 = 0 x1 = 1 x1 = 2 x1 = 3 x1 = 4 x1 = 5
5 0 + 160 = 160 45 + 125 = 170 70 + 95 = 165 90 + 70 = 160 105 + 50 = 155 120 + 0 = 120

De lo anterior, se ha obtenido la polı́tica óptima de decisión a considerar la cual se encuentra


dada por 1 → 3 → 1, es decir, x1 = 1, x2 = 3 y x3 = 1; con la que se obtiene un beneficio
óptimo de 170
Ahora bien, en los ejemplos anteriores hemos considerado casos bajo el esquema discreto, sin
embargo, este método funciona para el caso continuo, en donde tendremos que aplicar técnicas
de cálculo.
Ejercicio 1.1. Programación de empleados: Las ventas de una tienda departamental de
la Ciudad de México se encuentra sujeta a los cambios de trimestrales durante el año, es decir,
depende de las temporadas del año (primavera, verano, otoño e invierno). Por lo anterior, re-
quiere un número mı́nimo de empleados a fin de satisfacer la demanda durante cada temporada
del año.

No obstante, recordemos que en la época actual es dı́ficil realizar la contratación y capacita-


ción de personal de nuevo ingreso, aunado a esto, la empresa busca evitar la subcontratación
por lo que, cada empleado que tenga y despida tendrá costos adicionales para la tienda depar-
tamental (los cotos se encuentran relacionados con el finiquito).

Por lo anterior, debe idear un número de personal a mantener durante cada una de las di-
ferentes temporadas, cabe señalar que ha realizado algunas estimaciones iniciales del número
de empleados mı́nimo para cada temporada, tal como se muestra en la siguiente tabla:

Temporada Primavera Verano Otoño Invierno


Empleados requeridos 255 220 240 200

Por lo que, el número de empleados no debe ser menor a este valor estimado, sin embargo,
cualquier contratación más alta genera una pérdida de $ 10, 000.00 por persona por temporada,
ahora bien, los costos por contratación y por despido son tales que el costo de cambiar el nivel
de empleados de una temporada a otra es igual a $ 3, 000.00 multiplicado por le cuadrado de la
diferencial de niveles. Finalmente, cabe señalar que el número de empleados puede ser fraccio-
nario debido a que se puede contratar empleados en forma flexible (a tiempo parcial).

A partir de lo anterior, determine el número de empleados en cada temporada a fin de que


se minimice el costo por la pérdida de empleados contratados de mas o por el cambio de em-
pleados en temporadas.

1.2. Programación dinámica probabilı́stica


Ahora nos centraremos en estudiar otro tipo diferente de programación dinámica la cual
difiere con respecto a la determinı́stica, debido a que el estado de la siguiente etapa (evolución)
no se encuentra completamente determinado por el estado y la polı́tica de decisión de la etapa
actual; en su lugar, existe una función de distribución de probabilidad para determinar cuál
será el siguiente estado de evolución.
14 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

No obstante la función de distribución queda dada por estado y la polı́tica de decisión, es


decir, el sistema cambia al estado i con probabilidad pi dado el estado sn y la polı́tica de deci-
sión tomada xn ; ahora bien la contribución obenida al evolucionar a este estado la denotamos
por Ci . Finalmente, debido a la estructura probabı́listica del problema y a la variedad de posi-
bilidades en los resultados la relación de la ecuación de utilidad es aún más compleja.

Ahora bien, a partir de esto nos podemos dar una idea de como será el proceso en el cual
debemos minimizar en cada etapa, es decir, anteriormente buscabamos minizar una función de
la forma fn (sn , xn ), entonces ahora estarı́amos definiendo:

 
fn (sn , xn ) = E C + fn+1 , (1.11)

donde ahora C y fn+1 son variables aleatorias, por lo que, podemos expresar lo anterior en otra
forma al desarrollar las esperanzas, de momento supondremos que estas son del tipo discreto y
con espacio de estados {1, 2, . . . , S}, entonces:
S
X

 
fn (sn , xn ) = pi Ci + fn+1 (i) , (1.12)
i=1

en esta otra expresión podemos describir a cada una de las diferentes posibilidades de la función
óptima, es decir:

fn+1 (i) = mı́n fn+1 (i, xn+1 ) (1.13)
xn+1

Finalmente, a fin de identificar con mayor precisión analizaremos un ejemplo de aplicación sobre
esta variante de programación dinámica.
Ejemplo 1.4. Una tienda de autoservicio vende una gran variedad de artı́culos al consumidor,
entre estos se encuentra un medicamento para la fiebre; el cual debe ser producido en forma
exacta debido a que una mayor o menor concentración del ingrediente activo puede generar
sı́ntomas adversos a las personas.

A fin de cubrir la demanda del mismo, la tienda de autoservicio solicita inventario a una
farmaceútica; por lo que, la farmaceútica debe de producir el número de artı́culos requeridos
por la tienda; .

No obstante, la compañı́a farmacéutica debe delimitar el número adicional de artı́culos que


enviará a fin de no tener un exceso de producción; con respecto a la supervisión de los artı́culos
se ha determinado que cada medicamento tiene una probabilidad de 21 de ser aceptable y 12 de
probabilidad de ser rechazado.

Suponiendo que el éxito de cada medicamento es independiente de los otros, podemos concluir
que la distribución de medicamentos aceptados en un lote de tamaño N tendrá una distribución
binomial con parámetros N y p = 21 .

Los costos de producción se estiman en $ 100.00 pesos por unidad, sin importar que esta sea
defectuosa, cabe señalar que los artı́culos adicionales se desperdicı́an. Además del costo por
unidad se incurre en un costo fijo de $ 300.00 cada vez que se pone en operación la máqui-
na, debido a esto la farmaceútica pueda enviar hasta 3 lotes a fin de satisfacer la cantidad de
artı́culos requeridos, si al tercer intento no se ha logrado el tamaño del lote entonces se pierde
1.2. PROGRAMACIÓN DINÁMICA PROBABILÍSTICA 15

la venta y se genera una multa de $ 1, 600.00.

Por lo anterior, el objetivo es determinar el tamaño del lote (este debe de incluir una cantidad
adicional en caso de que se encuentren artı́culos defectuosos) de tal forma que se minimice el
costo total esperado por el fabricante.

Solución:
Ahora bien, a fin de poder identificar la polı́tica óptima de decisión plantearemos el problema
en términos de programación dinámica, por lo anterior podemos observar que tenemos 3 etapas
de producción, las cuales denotaremos por n = 1, 2, 3.

En cada etapa de producción la farmacéutica puede determinar el tamaño del lote, el cual
denotaremos por xn , adicionalmente señalaremos por sn el número de productos aceptables por
obtener en la etapa n.

Entonces si el estado es sn−1 = 1 en la etapa actual y en se obtiene un artı́culo aceptable


entonces el estado cambiarı́a a sn = 0 y terminando los costos, en particular notemos que
fn∗ (0) = 0 para cualquier etapa y f4∗ (1) = 1, 600.

Ahora bien, la contribución al costo de la etapa n es K(xn ) + 100xn independientemente del


siguiente estado, donde 
0 xn = 0
K(xn ) =
300 xn > 0
Por otra parte, si sn = 1 se obtiene que:
 xn   xn 
1 ∗ 1 ∗
fn (1, xn ) = K(xn ) + 100xn + fn+1 (1) + 1 − fn+1 (0)
2 2
 xn
1 ∗
= K(xn ) + 100xn + fn+1 (1)
2
Por lo anterior, la relación recursiva que permitirá emplear programación dinámica es:
  xn 
∗ 1 ∗
fn (1) = mı́n K(xn ) + 100xn + fn+1 (1) . (1.14)
xn =0,1,... 2

Notemos que el tercer miembro en realidad es la esperanza de fn+1 . Finalmente, procedamos a
realizar el método de programación dinámica para obtener la polı́tica óptima de decisión.

Comenzaremos por aplicar el procedimiento de programación dinámica a partir de la última


etapa;
 recordemos que para esta etapa1 la función de costos se encuentra dada por 300 + 100x3 +
1 x3 ∗ x3
2
f4 (1) = 300 + 100x3 + 1, 600 2 entonces tenemos:
s3 /x3 0 1 2 3 4 5 f3∗ (s3 ) x∗3
0 0 0 0
1 1, 600 1, 200 900 800 800 850 800 3 o 4
Ahora continuemos con la siguiente etapa, obtenemos que la
 a función de costos se encuentra
1 x2 ∗ 1 x2
dada por 300 + 100x2 + 2 f3 (1) = 300 + 100x2 + 800 2 entonces tenemos:
s2 /x2 0 1 2 3 4 5 f2∗ (s2 ) x∗2
0 0 0 0
1 800 800 700 700 750 800.25 700 2 o 3
16 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

Finalmente llegamos a la primer etapa, la cual se encuentra dada ahora por 300 + 100x1 +
1 x1 ∗ 1 x1
 
2
f2 (1) = 300 + 100x1 + 700 2 entonces tenemos:

s1 /x1 0 1 2 3 4 5 f1∗ (s1 ) x∗1


1 700 750 675 687.50 750 743.75 675 2

Por lo que, podemos concluir que la polı́tica óptima es producir 2 artı́culos en el primer lote
y si con esto no pasa ningún artı́culo entonces debemos producir en el segundo lote dos o tres
artı́culos. Si este lote no satisface la demanda entonces en el tercer lote se debe producir 3 o 4
artı́culos con lo que de esta forma estarı́amos minimizando el costo de producción y asegurando
el lote, con un costo óptimo de $ 675.

Como podemos ver, la programación dinámica probabilı́stica considere una mayor complejidad
debido a que en las tablas anteriores deberı́a de considerar la posibilidad de producir artı́culos
de forma infinita, sin embargo, en ciertos casos como en el ejemplo anterior no es necesario
debido a que el costo no baja de los casos anteriores.

Ahora considereraremos una variante del problema anterior, misma que nos permitirá gene-
ralizar este conforme incremente el número de pedidos:

Ejemplo 1.5. Suponga en el ejemplo anterior que el productor del medicamento no puede man-
dar una cantidad menor a la restante de los artı́culos pendientes, asimismo, ahora debe entregar
4 artı́culos. A partir de esto, determine el costo óptimo esperado ası́ como la polı́tica de decisión
que deberá aplicar

Solución:
Notemos que el problema anterior puede ser resuelto de forma similar que el ejemplo, por lo
que, mantendremos la definición de los estados s1 , s2 y s3 ası́ como la notación para las deci-
siones que se toman en cada etapa.

Notemos que el caso para cuando s3 = 1 no es más que reconsiderar el problema original,
sin embargo, procedemos a considerar ahora para los casos restantes; notemos que en particular
para cuando tenemos pendiente por entregar dos artı́culos, obtendremos la siguiente expresión:
3 −1
sX
f3 (s3 , x3 ) = K(x3 ) + 100x3 + 1600 fXx3 (i),
i=0

donde Xx3 ∼ Bin x3 , 21 , al aplicar este resultado sobre las diferentes decisiones y los diversos


estados tenemos la siguiente tabla:

Figura 1.1: Solución del subproblema en la tercer etapa.

Ahora que hemos resuelto esta etapa podemos procecer y avanzar a la siguiente etapa; para lo
que ahora estudiaremos las diferentes posibilidades y decisiones que se presentan al estar en la
segunda etapa (número de unidades en el segundo lote).
1.2. PROGRAMACIÓN DINÁMICA PROBABILÍSTICA 17

Ahora procedemos a determinar y calcular la forma de la función objetivo para esta etapa:
2 −1
sX
f2 (s2 , x2 ) = K(x2 ) + 100x2 + fXx2 (i)f3∗ (s2 − i),
i=0

donde al igual que en el caso anterior Xx2 ∼ Bin x2 , 21 , ahora aplicamos y realizamos los


cálculos necesarios sobre las diferentes decisiones y los diferentes estados en los que podemos
estar, entonces tenemos la tabla:

Figura 1.2: Solución del subproblema en la segundo etapa.

Finalmente queda por considerar, la primer etapa, en este recordaremos que s1 = 4, por lo que,
podemos considerar exactamente la misma función recursiva, es decir:
4−1
X
f1 (4, x1 ) = K(x1 ) + 100x1 + fXx1 (i)f2∗ (4 − i),
i=0

donde al igual que en el caso anterior Xx1 ∼ Bin x1 , 21 , ahora aplicamos y realizamos los


cálculos necesarios sobre las diferentes decisiones y los diferentes estados en los que podemos
estar obteniendo ası́:

Figura 1.3: Solución del subproblema en la primer etapa.

Por lo que, a fin de minimizar el costo esperado de la producción se deben de enviar 8 artı́culos
en el primer lote y posteriormente seguir las siguientes acciones conforme el número de artı́culos
remanentes por entregar:

Articulos pendientes Articulos por enviar


1 2o3
2 5
3 7
4 9

Posteriormente, si aún no se ha cumplido con número de artı́culos necesarios procederemos a


seguir las siguientes acciones conforme al número de artı́culos pendientes por entregar:

Articulos pendientes Articulos por enviar


1 3o4
2 6
3 8
4 10

Lo anterior genera un costo óptimo mı́nimo de $1, 401.08.


18 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

Ejercicio 1.2. Considere el ejemplo anterior pero ahora se debe de satisfacer una solicitud de
2 artı́culos y se da libertad de poder enviar hasta 4 lotes; dado lo anterior, determine la polı́tica
óptima de decisión ası́ como el costo óptimo de la misma.

Como hemos visto la técnica de programación dinámica resulta útil al momento de establecer
una sucesión de decisión interrelacionadas, no obstante, es necesario conocer a fondo el proble-
ma que buscamos resolver; toda vez que, es necesario plantear en términos de que sea posible
la aplicación del mismo.

Notemos particularmente que si un problema tiene 10 etapas con 10 posibles estados y con 10
decisiones posibles, entonces la prueba y error de cada posible polı́tica de decisión nos tomarı́a
considerar hasta 10 mil millones de combinaciones mientras que con programación dinámica
necesitariamos como máximo mil cálculos (10 para cada estado en cada etapa).

De momento, solo nos hemos centrado en analizar aquellos problemas en los cuales el número
de etapas es finito (denominado horizonte finito), sin embargo, existe otro tipo de problemas
que conlleva considerar una evolución que no termina en el tiempo (denominado horizonte
infinito). No obstante, este tipo de problemas sale de nuestro conocimiento por el momento.
1.3. EJERCICIOS 19

1.3. Ejercicios
A continuación se presenta una serie de ejercicios que permitirán al estudiante reforzar
lo aprendido en la primer unidad de aprendizaje, adicionalmente que de estos se generará el
examen:

1. El gerente de ventas de una compañı́a de internet cuenta con 6 agentes de ventas dis-
ponibles para 3 centros comerciales dentro de una alcadı́a de la Ciudad de México, no
obstante, se debe asignar al menos un agente a cada centro comercial a fin de que se
pueda cubrir la demanda del mismo y no perder la oportunidad de crecimiento.

Por otra parte, se ha realizado un estudio de mercado de la demanda estimada que pudie-
ra tenerse en cada centro comercial al asignar un número mayor de agentes en cada uno
de los centros comerciales; a continuación se muestra el incremento de clientes esperados:

Agentes / Region 1 2 3
1 40 24 32
2 54 47 46
3 78 63 70
4 99 78 84

A partir de lo anterior, formule el problema a fin de que pueda aplicar el método de


programación dinámica (se deberá identificar los estados, las decisiones y las funciones
objetivo de cada subproblema). Posteriormente determine la polı́tica óptima de decisión
ası́ como el costo óptimo esperado.

2. El propietario de 3 tienditas vende en ellas frutas y verduras, en particular, debe de dis-


tribuir su cargamento de fresas, del cual cuenta con 5 lotes de este mismo. El propietario
desea conocer como debe de distirbuir los lotes entre sus 3 tienditas.

Por razones de administración, los lotes no pueden ser divididos, no obstante, la de-
manda en cada una de las tienditas es independiente de la otra, por lo que, ha estudiado
la venta posible de dividir las fresas por caja; por lo anterior, estudió y determinó que en
función del número de lotes que se manden puede vender cierto número de cajas; estos
datos se presentan a continuación:

Lotes / Tiendita 1 2 3
0 0 0 0
1 5 6 4
2 9 11 9
3 14 15 13
4 17 19 18
5 21 22 20

A partir de lo anterior, formule el problema a fin de que pueda aplicar el método de


programación dinámica (se deberá identificar los estados, las decisiones y las funciones
objetivo de cada subproblema). Posteriormente determine la polı́tica óptima de decisión
ası́ como el costo óptimo esperado.

3. Vanessa se encuentra estudiando su séptimo semestre de su carrera y cuenta con 7 dı́as


para prepararse para los exámenes finales de cuatro cursos y busca asignar su tiempo de
20 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

estudio de la manera más eficiente posible.

Cabe señalar que necesita asignar por lo menos un dı́a para cada curso y quiere con-
centrarse sólo en un curso cada dı́a; por lo anterior, puede dedicar desde uno a cuatro
dı́as a cada curso, ahora bien, como tomo un curso en investigación de operaciones decidió
aplicar programación dinámica para seleccionar la mejor asignación.

Por lo que, de acuerdo con sus conocimientos actuales sobre cada curso y la dificultad del
mismo consideró y estimo los siguientes escenarios:

Dı́as / Curso Simulación Econometrı́a Procesos estocásticos Sistemas Finacieros


1 4 5 2 6
2 7 6 5 8
3 9 8 7 9
4 10 9 8 9

A partir de lo anterior, determine la mejor asignación de los dı́as de estudio que maximiza
sus calificaciones esperadas.

4. Una campaña polı́tica se encuentra en su última etapa y las encuestas preliminares se


encuentran cerradas, por lo que, uno de los candidatos decide colocar comerciales en la
televisión a fin de aumentar el número de votos obtenidos; no obstante, sólo tiene fondos
suficientes para comprar 5 comerciales en las horas con mayor audiencia.

Por lo que, realizó una estimación del número de votos adicionales que podrá obtener
en caso de que cóloque el comercial en alguno de los 4 canales principales que dispone la
televisora, los cuales se muestran a continuación en miles de votos:

Comerciales / Canal 2 3 5 9
0 0 0 0 0
1 4 6 5 3
2 7 8 9 7
3 9 10 11 12
4 12 11 10 14
5 15 12 9 16

Determine el número de comerciales que debe de colocarse en cada canal a fin de garantizar
el mayor número de votos.

5. La presidenta de un partido polı́tico de un estado se encuentra planeando las próximas


eleccionoes municipales, por lo que, cuenta con la colaboración de un número de volunta-
rios que se encuentran afiliados al partido, ahora bien, el municipio se encuentra dividido
principalmente en cuatro colonias, ası́ que deberá de asignar a los voluntarios en estas
mismas.

Por otra parte, ella considera que asignar a un voluntario en dos colonias a la vez es
ineficiente por las necesidades de traslado entre las colonias, ası́ que descarta esa posibi-
lidad, asimismo, considera que si puede incrementar el número de votos en cierta colonia
más que otra, entonces preferirá colocar a los voluntarios en una misma colonia.
1.3. EJERCICIOS 21

A partir de lo anterior, ella estimo el número de votos que puede lograr para el can-
didato si coloca a los voluntarios en cada colonia, los cuales se muestran a continuación:

Voluntarios / Distrito 1 2 3 4
0 10 15 30 45
1 50 80 100 67
2 85 120 180 95
3 115 130 190 150
4 200 170 210 160
5 240 250 220 300

Determine la solución óptia que logra obtener la mayor cantidad de votos para el candidato
de dicho partido.

6. Un sistema se encuentra compuesto principalmente de 4 componentes electrónicos, los


cuales permiten que trabaje de forma correcta; ahora bien, la confiabilidad del sistema
puede mejorar si se instalan varias unidades paralelas en cada uno de los componentes.

Ası́ que se ha estudiado como incrementa la confiabilidad y la probabilidad de que el


sistema se mantenga funcionando si se colocan componentes en paralelo, los cuales se
muestran a continuación:

Unidades paralelas / Componente 1 2 3 4


1 0.5 0.6 0.7 0.5
2 0.6 0.7 0.8 0.7
3 0.8 0.8 0.9 0.9

La probabilidad de que el sistema funciones es el producto de las probabilidades de que los


cuatro componentes funcionen, ahora bien, a continuación se presenta el costo de instalar
las unidades paralelas de los componentes:

Unidades paralelas / Componente 1 2 3 4


1 1, 000 2, 000 1, 000 2, 000
2 2, 000 4, 000 3, 000 3, 000
3 3, 000 5, 000 4, 000 4, 000

Ahora bien, dadas las limitaciones presupuestarias sólo se cuenta con un presupuesto de
10, 000 para los componentes, a partir de lo anterior determine cuántas unidades paralelas
de cada componente debe instalar a fin de maximizar la probabilidad de funcionamiento
del sistema.

7. Suponga que cuenta con diez mil pesos para invertir y que tiene la oportunidad de elegir
entre dos inversiones disponibles, una riesgosa y otra sin riesgo, relativamente. Ahora
bien, si invierte en aquella con riesgo podrá obtener veinte mil después de la inversión (es
decir, un rendimiento de diez mil), sin embargo la no riesgosa le permite también obtener
una cantidad final de veinte mil, sin embargo, esto con una menor probabilidad.

A continuación se presentan los diferentes resultados que se pueden obtener de cada


22 CAPÍTULO 1. PROGRAMACIÓN DINÁMICA

inversión ası́ como la probabilidad del resultado esperado:

Inversión Rendmiento Probabilidad


Riesgosa −10, 000 0.25
10, 000 0.75
No riesgosa 0 0.90
10, 000 0.10

Ahora bien, cada año sólo puede realizar una inversión de $ 10, 000 únicamente, cualquier
cantidad de dinero adicional sólo podrá ahorrarla, a partir de lo anterior determine la
polı́tica de inversión que maximiza el dinero que espera tener después de 3 años.
Capı́tulo 2

Programación entera

En muchas ocasiones cuando intentamos plantear y resolver algún problema surgen restric-
ciones o limitaciones sobre el planteamiento sobre el mismo, sin embargo, una común (y no
sólo la única) es que las variables deben ser enteras; generalmente se presenta cuando estamos
trabajando con cantidades indivisibles y por esta razón debemos de considerar como discretas
dichas variables.

Entonces si agregamos esta condición al tipo de problema que ya analizamos previamente,


aquellos problemas de programación lineal, entonces diremos que estamos enfrentandonos a un
problem de programación entera, en lo que seigue, omitiremos el hecho de que son problemas
lineales salvo que se indique lo contrario.

Asimismo, dependiendo de las mismas condiciones del problema puede que tengamos que en-
frentarnos a un problema de programación entera mixto, en el cual, algunas de las variables
sujetas al mismo podrán ser reales y no únicamente enteras.

Adicionalmente y a pesar de que ya tenemos como contexto los problemas que pudimos consi-
derar en nuetro curso de optimización lineal, incorporando claro el tema de la no divisibilidad,
podemos considerar aquellos problemas donde posiblemente consideremos variables binarias,
es decir, una variable que sólo considera dos escenarios: sı́ (1) y no (0).

Dicho lo anterior, consideraremos problemas de las 3 condiciones, es decir:

1. Programación entera.

2. Programación entera mixta.

3. Programación entera binaria.

Analizaremos ejemplos de como podemos implementar dichos conceptos:

Ejemplo 2.1. Una compañı́a dedicada a la maquilación esta considerando la expansión de su


empresa mediante la construcción de una nueva fábrica ya sea en una ciudad exterior al paı́s
o dentro del mismo; incluso en ambas ubicaciones. Adicional a esto, considera construir a lo
máximo un nuevo almacen, no obstante, el lugar donde construirá el almacén deberá ser el
mismo que el de la fábrica.

En la siguiente tabla se mostrará el valor presente neto de cada una de las opciones ası́

23
24 CAPÍTULO 2. PROGRAMACIÓN ENTERA

como el capital que se requiere para cada una de las diversas opciones, asimismo, es de señalar
que el capital disponible es de 10 millones de dólares; adicionalmente el objetivo es encontrar
la combinación factible de alternativas que maximice el valor presente neto.

Lugar donde se construirá la fabrica / almacen VPN Capital requerido


Fabrica interior $9, 000, 000.00 $6, 000, 000.00
Fabrica exterior $5, 000, 000.00 $3, 000, 000.00
Almacén interior $6, 000, 000.00 $5, 000, 000.00
Almacén exterior $4, 000, 000.00 $2, 000, 000.00

Solución:
A pesar de que resolver este problema es relativamente simple procederemos a plantearlo en su
forma de programación entera binaria, lo anterior con fines didácticos debido a que esto
ilustrará la forma en que aplicariamos el módelo y método.

Por lo anterior, procederemos a plantear las siguientes variables de acuerdo a lo siguiente:



1 la decisión jes sı́
∀j = 1, 2, 3, 4 xj =
0 la decisión jes no

Ahora bien, las decisiones a las que hacemos referencia son las siguientes:

Decisión Lugar donde se construirá la fabrica / almacen VPN Capital requerido


2 Fabrica interior $9, 000, 000.00 $6, 000, 000.00
3 Fabrica exterior $5, 000, 000.00 $3, 000, 000.00
4 Almacén interior $6, 000, 000.00 $5, 000, 000.00
5 Almacén exterior $4, 000, 000.00 $2, 000, 000.00

Ahora definimos la función objetivo, la cual buscamos maximizar:

9, 000, 000x1 + 5, 000, 000x2 + 6, 000, 000x3 + 4, 000, 000x 4, ⇒ 9x1 + 5x2 + 6x3 + 4x4 ,

adicionalmente recordemos que el capital disponible para gastar es de $ 10, 000, 000.00, por lo
que, tenemos entonces la restricción:

6x1 + 3x2 + 5x3 + 2x4 ≤ 10.

Ahora bien, dado que a lo máximos buscamos construir un almcen podemos establecer la si-
guiente restricción:
x3 + x4 ≤ 1.
Asimismo, se ha determinado que el almacén debe estar junto a la fábrica, por lo que, si optamos
por construir el almacen en el interior (x3 = 1), entonces, se decidió construir la fábrica en el
interior (x1 = 1), de la misma forma para el almacen en exterior (a este tipo de decisiones se
le llama decisiones contingentes), por lo que, podemos establecer estas como las siguientes
restricciones:
x3 ≤ x1 x4 ≤ x2 .
Por lo tanto, el problema se resumen en resolver el siguiente problema:

máx 9x1 + 5x2 + 6x3 + 4x4


Sujeta a 6x1 + 3x2 + 5x3 + 2x4 ≤ 10, −x1 + x3 ≤ 0, −x2 + x4 ≤ 0, 0 ≤ xj ≤ 1, xj ∈ N.
25

Aunque este tipo de problemas parecen ser demasiado simples y tal vez planteados comple-
jamente, estos resultan de gran aplicación en la realidad, ya que existe una gran cantidad de
problema donde puede ser empleada el método de programación entera binaria. A conti-
nuación analizaremos algunos ejemplos:
1. Análisis de inversión: En ocasiones se emplea programación lineal para tomar decisio-
nes sobre el presupuesto del capital disponible para inversión en los diferentes proyectos
que pueda invertir.

Esto radica en el hecho principal que además de saber de cuanto se debe invertir, es
necesario principalmente saber si se debe invertir o no en cierto proyecto bajo una canti-
dad fija. Algunos ejemplos de estas decisiones son:

¿Debe adquirirse una empresa a fin de expandirse?.


¿Se debe preferir un proveedor sobre otro?.
¿Debe agregarse una nueva lı́nea de producción?.
¿Debe incorporarse una nueva presentación a venta?.

2. Elección del sitio: Actualmente debido a las condiciones económicas y sociales que se
presentan en los diversos territorios del mundo, por lo que, surgen la inquietud en los em-
presarios si es económicamente mejor colocar plantas, almacenes y centros de distribución
en su paı́s de origen o en algún otro a fin de hacer usos de las ventajas y disminuciones
fiscales que esto conlleva.

Lo anterior puede resultar para minimizar los costos generados por la puesta en marcha
de estas nuevas instalaciones, algunos ejemplos de este caso son todas aquellas compañı́as
con callcenters.

3. Programación de actividades: En la vida diaria todas las personas programan activi-


dades interrelacionadas, aún sı́ sólo implican organizar el inicio de las tareas de la escuela.
Los administradores tembién deben programar varias actividades interrelaciondas. A con-
tinuación se presentan algunos casos:

¿Cuándo se debe iniciar la producción de nuevas órdenes?.


¿Cuándo deben comercializarse los nuevos productos?.
¿Cuándo deben realizarse las inversiones de capital?.

Para cualquiera de las preguntas anteriores, la decisión acerca de cuándo comenzar se


puede expresar en términos de una serie de decisiones sı́ o no, una de ellas para cada
momento posible de inicio.
Una vez que hemos analizado algunos casos en los cuales es posible implementar algún pro-
blema de programación binario entera, procederemos a estudiar algunos ejemplos en los cuales
implementaremos decisiones de los tipos señalados previamente:
Ejemplo 2.2. La división de R& D de cierta compañı́a ha desarrollado 3 nuevos productos
que lanzará al mercado, no obstante, para evitar una diversificación mayor y perder la demanda
potencial de los artı́culo ha decidido lo siguiente:
1. De los 3 nuevos artı́culos a lo más lanzará sólo 2.
26 CAPÍTULO 2. PROGRAMACIÓN ENTERA

2. Debido a problemas de producción y como cuenta con dos plantas, sólo una planta puede
asignarse para producir los nuevos artı́culos; asimismo, el hecho de producir en cualquier
planta no afecta el costo de producción.
A continuación se muestra la diferente información que ha podido obtener el equipo de merca-
dotécnia ası́ como de producción con respecto a los nuevos artı́culos:

Planta / Producto Producto 1 Producto 2 Producto 3 Horas disponibles


Planta 1 3 horas 4 horas 2 horas 30 horas
Planta 2 4 horas 6 horas 2 horas 40 horas
Ganancia unitaria 5 7 3 miles de pesos
Ventas potenciales 7 5 9 lotes por semana

Primero notemos una primer forma de atacar este problema, el cual es mediante considerar que
se pudieran emplear las horas de ambas plantas entonces tendriamos el problema de la siguiente
forma:

Maximizar Z = 5x1 + 7x2 + 3x3


Sujeta a
3x1 + 4x2 + 2x3 ≤ 30
4x1 + 6x2 + 2x3 ≤ 40
x1 ≤ 7
x2 ≤ 5
x3 ≤ 9
x1 ≥ 0 x2 ≥ 0 x3 ≥ 0

No obstante, el problema en realidad este problema no es planteado de acuerdo con esta forma,
es decir, recordemos que sólo se puede producir dos artı́culos, por lo que, al menos dos de las
tres variables x1 , x2 , x3 pueden ser mayores o iguales que cero, no obstante, esta condición no
puede ser planteada en un problema de programación lineal.

A fin de poder resolver el problema lo adaptaremos de tal forma que se permita la validación y
solución en el método simplex; primero notemos que sólo una de las plantas puede producir los
articulos, por lo que, definimos una variable binaria que permite elegir la planta productora:

1 si se elige la planta 1 4x1 + 6x2 + 2x3 ≤ 40
y4 =
0 si se elige la planta 2 3x1 + 4x2 + 2x3 ≤ 30

A fin de garantizar que sólo una restricción sea válida incorporaremos un valor M muy grande
a fin de que afecte cuando no se tenga que cumplir la condición, entonces proponemos:

3x1 + 4x2 + 2x3 ≤ 30 + M (1 − y4 )


4x1 + 6x2 + 2x3 ≤ 40 + M y4

De forma similar si buscamos que a lo máximo dos de los artı́culos sean producidos, por lo que,
al menos 2 de las variables x1 , x2 y x3 sean mayores o iguales que cero, entonces plantemos
esto bajo la condición:

1 si se produce el artı́culo j xj > 0
yj =
0 no se produce el artı́culo j xj = 0
27

Entonces obtenemos ahora que:

x1 ≤ M y 1
x2 ≤ M y 2
x3 ≤ M y 3
y1 + y2 + y3 ≤ 2

Notemos que hemos definido 4 variables binarias que permite que se puedan cumplir condiciones
opcionales, las cuales adaptan al problema, obteniendo ası́:

Maximizar Z = 5x1 + 7x2 + 3x3


Sujeta a
3x1 + 4x2 + 2x3 + M y4 ≤ 30 + M
4x1 + 6x2 + 2x3 − M y4 ≤ 40
x1 ≤ 7
x2 ≤ 5
x3 ≤ 9
x1 − M y 1 ≤ 0
x2 − M y 2 ≤ 0
x3 − M y 3 ≤ 0
y1 + y2 + y3 ≤ 2
x1 ≥ 0 x2 ≥ 0 x3 ≥ 0
yj son binarias para j = 1, 2, 3, 4

A fin de resolver dicho problema emplearemos el entorno de Tora y de Excel, primero usaremos
el entorno de Excel, por lo que, en una tabla definiremos el problema por resolver planteado en
las condiciones anteriores:

Figura 2.1: Planteamiento del problema en Excel.

Notemos que se han planteado las diferentes restricciones salvo la de que las variables x1 , x2 y
x3 son no negativas y que las variables y1 , y2 y y3 son binarias, por lo que, quedan pendientes.
Posteriormente buscaremos el complemento Solver incluido en Excel y en este plantearemos
el problema, en caso de mi sistema se encuentra por medio del ı́cono:
28 CAPÍTULO 2. PROGRAMACIÓN ENTERA

Figura 2.2: Complemento Solver de Excel.

Al iniciarlo procederemos a incorporar todas las restricciones de tal forma que podamos obtener
el planteamiento del problema y aplicar el método simplex:

Figura 2.3: Planteamiento del problema.

Finalmente aplicamos el método y obtendremos la siguiente solución:

Figura 2.4: Planteamiento del problema en Excel.

Lo cual nos indica que se deben de producir los artı́culos 1 y 3 en la planta 2 a fin de obtener
una ganancia máxima de $ 54, 500.00; mediante producir 5.5 lotes del artı́culo 1 y 9 lotes del
artı́culo 3.
2.1. PROBLEMAS CLÁSICOS 29

2.1. Problemas clásicos


Previo a continuar con algunos otros ejemplos procederemos a describir tres problemas
clásicos que tienen un gran rango de aplicaciones, los cuales son:
1. Problema de la mochila.

2. Problema de transporte.
Comencemos con el primer problema de estos:

2.1.1. Problema de la mochila


Una persona va de viaje en una excursión para lo que prepara su mochila con el equipaje
necesario para el viaje, para ello lleva una mochila con capacidad de C kilogramos. Por lo ante-
rior, necesita considerar que será lo que debe guardar dentro de su mochila un número limitado
de objetos.

Por lo que, sea xi la cantidad de unidades del objeto i, que la persona agregará en su mo-
chila para el viaje, cabe señalar que este objeto tiene un peso wi > 0, asimismo, para que sea
más fácil de decidir que artı́culos ingresará en su mochila les asigna un valor a cada objeto,
dicho valor se denota por ri ; ası́ que entonces el problema en el que se involucra la persona es:
n
X n
X
Maximizar z = ri xi sujeto a pi xi ≤ C. (2.1)
i=1 i=1

Notemos que todas las variables son enteras, ası́ que este problema forma parte de aquellos
programación lineal entera, esta formulación permite que puedan transportase varios obje-
tos del mismo tipo.

A fin de que podamos darnos idea del problema analicemos el siguiente ejemplo:
Ejemplo 2.3. Berenice estudia la universidad en la Ciudad de Mexico, sin embargo, ella es
originaria del estado de Oaxaca, por lo que ha planeado visitar a su familia el siguiente fin de
semana largo (30 de octubre al 2 de noviembre); por lo que, esta pensando en que artı́culos
llevará, incluso su hermana le ha solicitado algunos libros que no ha encontrado.

Ahora bien, su boleto de viaje sólo permite que lleve una maleta de 13 kilogramos de peso,
por lo que, ha definido los siguientes artı́culos que debe de llevar:
Zapatos, con un peso de 3 kilogramos.

Ropa, con un peso de 3.5 kilogramos.

Computadora portátil, con un peso de 4 kilogramos.

Libros solicitados por su hermana, con un peso de 5 kilogramos.

Recuerdos diversos de la escuela, con un peso de 1.5 kilogramos.


Ahora bien, el peso total de todos estos artı́culos es de 17 kilogramos, por lo que, no puede llevar
todo lo que desea ası́ que ha decidido asignarle un valor a cada objeto a fin de determinar la
mayor cantidad de artı́culos, tal como sigue:
30 CAPÍTULO 2. PROGRAMACIÓN ENTERA

Zapatos, con un valor de 10 puntos.


Ropa, con un valor de 13 puntos.
Computadora portátil, con un valor de 8 puntos.
Libros solicitados por su hermana, con un valor de 15 puntos.
Recuerdos diversos de la escuela, con un valor de 5 puntos.
Por lo que, procedemos a definir y plantear el problema correpondiente a fin de poder aplicar el
método de resolución sobre el mismo, entonces definimos ahora las variables xi como aquella
variable de decisión que señala si dicho artı́culo estará en la maleta o no, es decir:
Variable Decisión
x1 Llevará zapatos
x2 Llevará ropa
x3 Llevará laptop
x4 Llevará libros
x5 Llevará recuerditos
En todos los casos cuando la variables xi = 1 implicará que optará por llevarla en su mochila,
de acuerdo con lo anterior se formula el siguiente problema:
Maximizar Z = 10x1 + 13x2 + 8x3 + 15x4 + 5x5
Sujeto a 3x1 + 3.5x2 + 4x3 + 5x4 + 1.5x5 ≤ 13
Donde x1 , x2 , x3 , x4 , x5 son binarias
Para resolver este problema emplearemos el entorno de excel, entonces obtenemos lo siguiente:

Figura 2.5: Solución del problema de la mochila planteado.

Por lo anterior, Berenice llevará zapatos, ropa, los libros y los recuerditos; de esta forma no
excederá el peso lı́mite y además obtendrá el mayor valor deseado.
Aunque este problema fue relativamente fácil de plantear, en la vida real suele imponerse una
mayor cantidad de restricciones, por lo que, el estudiante deberá de identificar las mismas para
su posterior planteamiento.
2.1. PROBLEMAS CLÁSICOS 31

2.1.2. El problema de transporte


Ahora considere el caso de una compañı́a la cual tiene un número definido de fábricas, las
cuales, una vez producidos son transportados a un centro de distribución de los diferentes que
tiene, por lo que, puede elegir como realizar los diferentes envı́os; ahora bien, el propietario de
la compañı́a busca realizar la transportación con el mı́nimo costo.

Supongamos que en total la compañı́a tiene n bodegas y m fábricas, y que la fábrica i - ésima
produce una cantidad qi del producto, asimismo, la bodega j - ésima tiene una capacidad de
almacenamiento sj .

Por otra parte, sea cij el costo de transportar una unidad de producto desde la fábrica i hacı́a
la bodega j y xij la cantidad de unidades que el propietario decide transportar desde la fábrica
i a la bodega j.

Con lo anteriormente mencionado estamos en condiciones de describir el problema de pro-


gramación lineal:
m X
X n
Minimizar Z = cij xij
i=1 j=1
n
X
Sujeto a xij = qi
j=1
m
X
xij = sj
i=1
xij ≥ 0, enteras.

Ahora analicemos un ejemplo en el cual pondremos en práctica este tipo de problema:

Ejemplo 2.4. Una compañı́a de zapatos debe entregar 3 pedidos realizados por diferentes clien-
tes, el primero de este le pide 27 pares, el segundo 33 pares y el tercero 23 pares; ahora bien,
si el proveedor no cumple con los requerimientos del pedido este sufre una multa de $ 100.00
debido a la falta de compromiso y pérdida de oportunidad del comprador.

Para realizar las entregas los camiones repartidores deben de salir de dos pequeñas bodegas
con las que cuenta en la ciudad, sin embargo, la capacidad de estas bodegas es muy reducida,
por lo que, en la primer bodega tiene sólo 45 pares y en la segunda 36 pares.

Ahora bien, a fin de determinar el mejor procedimiento de entrega se determinó el costo in-
dividual de transportar los pares de zapatos desde cada una de las bodegas a los diferentes
compradores, los cuales se muestran a continuación:

Cliente 1 Cliente 2 Cliente 3


Bodega 1 25 24 22
Bodega 2 20 23 26

A partir de lo anterior, determine el modelo de programación lineal que describe la situación


de transporte, de tal forma que este permite determinar el costo mı́nimo de transportación.
32 CAPÍTULO 2. PROGRAMACIÓN ENTERA

Solución:
A fin de obtener la solución del problema anterior procedemos a definir a xij como la variable
que describe cuantos pares de zapatos transportaremos de la bodega i al cliente j, adicionalmen-
te, sea yi la variable que describe el número de pares de zapatos no entregados al cliente i.

Entonces el problema de programación lineal se encuentra dado por el siguiente planteamiento:

Minimizar 25x11 + 24x12 + 22x13 + 20x21 + 23x22 + 26x23 + 100(y1 + y2 + y3 )


Sujeta a x11 + x12 + x13 = 45
x21 + x22 + x23 = 36
y1 + y2 + y3 = 2
x11 + x21 + y1 = 27
x12 + x22 + y2 = 33
x13 + x23 + y3 = 23
x11 , x12 , x13 , x21 , x22 , y1 , y2 , y3 ≥ 0

Ahora bien, a fin de obtener la solución del problema procedemos a emplear el completo de
Solver de Excel, el cual al plantearlo como un problema de programación lineal es:

Figura 2.6: Planteamiento del problema de transporte.

Posteriormente, procedemos a resolver el problema entonces:

Figura 2.7: Solución del problema de transporte.

Entonces la solución al problema se encuentra dada mediante la siguiente elección de entregas,


2.2. MÉTODOS DE SOLUCIÓN PARA PROGRAMACIÓN LINEAL ENTERA 33

al primer cliente entregaremos los 27 pares requeridos de la bodega 2, al segundo cliente se le


entregarán 22 pares de la bodega 1 y 9 de la bodega 2, finalmente al cliente 3 se le enviarán 23
pares de la bodega 1, quedando a deberle 2 pares al cliente 2; lo anterior con un costo mı́nimo
de $ 1, 981.00.
Ejercicio 2.1. Una aerolı́nea de la Ciudad de México puede comprar su combustible para los
aviones privados a 3 proveedores diferentes, de los cuales ha cotizado los costos de entrega en
sus 3 diferentes pistas. Ahora bien, la aerolı́nea requiere de 100, 000 litros, 180, 000 litros y
350, 000 litros para su pista 1, 2 y 3 respectivamente.

Cada proveedor le ha brindado sus cotizaciones de entrega a da cada una de las pistas requeridas
por la aerolı́nea, los cuales se presentan a continuación:
Pista 1 Pista 2 Pista 3
Proveedor 1 38.40 37.80 38.00
Proveedor 2 38.20 38.20 38.20
Proveedor 3 37.40 39.80 38.40
No obstante, cada proveedor tiene limitaciones en cuanto al número total de litros por mes que
puede proporcionarle a la aerolı́nea, las cuales se señalan a continuación 320,000 litros, 270,000
litros y 190,000 litros, respectivamente.

A partir de lo anterior, plantee defina un problema de programación lineal y posteriormente


señale la solución del mismo mediante Excel o Tora.

2.2. Métodos de solución para programación lineal en-


tera
A continuación observaremos como determinar la solución de un problema de programación
lineal entera a partir de dos métodos principales, los cuales, ya han sido previamente estudia-
dos, sin embargo, estos sólo son variantes de los problemas clásicos (aquellos no restringidos a
programación entera).

Los métodos se señalan a continuación:


1. Método gráfico: Este método permite determinar de forma intuitiva el óptimo entero
de forma geométrica, sin embargo, se restringe a 2 y 3 dimensiones, más aún, a sólo 2,
debido a que en 3 es algo dificil de ver.
2. Método de ramificación: Este método busca resolver el problema por medio del método
clásico de Simplex, no obstante, se van generando subproblemas a fin de satisfacer las
condiciones de números enteros del problema.
3. Método de programación dinámica: Este método emplea el método inicial de opti-
mización dado por la programación dinámica.

2.2.1. Método gráfico


Este método se basa en exactamente el mismo procedimiento del método simplex clásico,
analizado para problemas de programación lineal comunes, cabe señalar que sólo es válido para
34 CAPÍTULO 2. PROGRAMACIÓN ENTERA

3 dimensiones a lo máximo, sin embargo, la aplicación a 3 dimensiones es difı́cil de visualizar,


por lo que, lo veremos para dos dimensiones.

El procedimiento de aplicación de este método se resume a continuación:


1. Dibujamos nuestro plano cartesiano y sobre este gráficamos todas las restricciones aso-
ciadas al problema, y posteriormente se marcan de algún color las regiones que satisfacen
la restricción.

2. Una vez marcadas todas las restricciones, marcamos la región factible del problema no
entero, posteriormente marcamos aquellas que corresponden al problema entero.

3. Finalmente, se obtiene el gradiente de la función objetivo y si buscamos maximizar avan-


zaremos en la dirección del gradiente, en caso contrario, avanzaremos en dirección opuesta
al gradiente (caso minimizar); y el último punto entero es la solución del problema entero.
Con el proceso anterior en mente procedemos a ponerlo en práctica en un ejemplo, el cual
resultará como un modelo para los diferentes problemas que pudieran presentarse.
Ejemplo 2.5. Considere el siguiente problema de programación lineal entera:

Maximizar Z = 6x + 8y
Sujeto a 9x + 6y ≤ 30
6x + 17y ≤ 56
x, y ≥ 0; x, y enteras

Determine la solución entera por medio del método gráfico, señalando con precisión los pasos
empleados.

Solución:
De acuerdo con el procedimiento procederemos a graficar las restricciones en el plano carte-
siano, las cuales se muestran a continuación:

Figura 2.8: Gráfica de la primer restricción.

La anterior gráfica muestra la región en la cual se satisface la primer restricción, es decir,


9x + 6y ≤ 30, el cual se restringe en la región donde x ≥ 0 y y ≥ 0.
2.2. MÉTODOS DE SOLUCIÓN PARA PROGRAMACIÓN LINEAL ENTERA 35

De forma similar procedemos a graficar la segunda restricción dada por 6x + 17y ≤ 56, en
la misma región que se graficó la primera debido a las restricciones de las variables, entonces
se obtiene:

Figura 2.9: Gráfica de la segunda restricción.

Ahora empalmamos ambas regiones a fin de identificar la región factible del problema de pro-
gramación lineal sin restricciones enteras:

Figura 2.10: Región factible del problema de programación lineal sin restricciones enteras.

Posteriormente, procedemos a señalar los puntos de solución entera que dentro de la región
factible:

Figura 2.11: Región factible del problema de programación lineal con restricciones enteras.

Posteriormente determinaremos el gradiente de la función objetivo por lo que tenemos:


 
∂Z ∂Z
∇Z = , = (6, 8) .
∂x ∂y
Entonces el gradiente se encuentra dado por el vector (6, 8) y en este graficamos rectas perpen-
diculares a fin de observar cual es el punto donde se obtiene el máximo del problema:
36 CAPÍTULO 2. PROGRAMACIÓN ENTERA

Figura 2.12: Región factible e incremento del gradiente.

Por lo tanto, el óptimo se encuentra cuando x = y = 2, con un valor óptimo de 28.

Ejercicio 2.2. Considere el siguiente problema de programación lineal entera:

Maximizar Z = 8x + 5y
Sujeto a 11x + 14y ≤ 83
20x + 10y ≤ 74
8x + 9y ≤ 93
x, y ≥ 0; x, y enteras

Determine la solución entera por medio del método gráfico, señalando con precisión los pasos
empleados.

2.2.2. Método de ramificación y acotamiento


Este algoritmo, similar que el método gráfico se basa en explotar diferentes problemas
basados en el método de programación lineal clásico y posteriormente incorporar restricciones
adicionales, tal como se indica ahora:

1. Determine el espacio de soluciones del problema de programación lineal entero al eliminar


las restricciones asociadas con la restricciones de entero de las variables.

2. Comenzando desde el punto óptimo continuo, incorpore restricciones especiales que mo-
difiquen iterativamente el espacio de soluciones del problema de programación lineal de
modo que podamos obtener un óptimo entero.

A fin de introducir el método de ramificación y acotamiento procederemos a analizar un ejemplo


en el que practicaremos el método:

Ejemplo 2.6. Analice el siguiente problema de programación lineal entero:

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x, y enteras no negativas

A fin de realizar la variante del método, primeramente resolveremos el problema sin restriccio-
nes enteras, por lo que obtenemos la siguiente solución:
2.2. MÉTODOS DE SOLUCIÓN PARA PROGRAMACIÓN LINEAL ENTERA 37

Figura 2.13: Solución del problema sin restricciones enteras.

Entonces sin considerar las restricciones enteras se obtiene un óptimo de Z = 23.75 cuando las
variables x = 3.75 y y = 1.25, sin embargo, las variables no son enteras, ası́ que debemos in-
corporar restricciones para lograr el objetivo inicial. Ası́ que seleccionamos una de las variables
no enteras (en este caso pueden ser ambas) e incorporamos restricciones adicionales.

Para el caso particular de este problema, elegimos a la variable x e incorporamos alguna de


las siguientes restricciones x ≤ 3 o x ≥ 4; ambas restricciones son excluyentes y de esta forma
buscaremos forzar a la variable x a ser entera, entonces:

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≤3
x, y no negativas

El cual al resolver se obtiene la siguiente respuesta:

Figura 2.14: Solución del problema subproblema 1 imponiendo condición sobre x.

Notemos que para este caso hemos obtenido un óptimo dado por Z = 23 bajo las variables x = 3
38 CAPÍTULO 2. PROGRAMACIÓN ENTERA

y y = 2 ambas enteras, sin embargo, no conocemos si esta es la óptima ası́ que diremos que
una cota inferior de la solución es Z = 23. Ahora analicemos el otro subproblema, es decir:

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≥4
x, y no negativas

Procedemos a resolver el subproblema bajo estas condiciones, entonces:

Figura 2.15: Solución del problema subproblema 2 imponiendo condición sobre x.

Ahora en este subproblema, la variable y no es entera, ası́ que procedemos a incorporar condi-
ciones para la variable y; analicemos los siguientes subproblemas:

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≥4
y≤0
x, y no negativas

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≥4
y≥1
x, y no negativas
Ahora bien, debemos de resolver estos dos subproblemas, bajo las nuevas condiciones debemos
observar si se obtiene solución alguna de estos mismo, los cuales se muestran a continuación:
2.2. MÉTODOS DE SOLUCIÓN PARA PROGRAMACIÓN LINEAL ENTERA 39

Figura 2.16: Solución del problema subproblema 3 imponiendo condición sobre y.

Figura 2.17: Solución del problema subproblema 4 imponiendo condición sobre y.

Notemos que del subproblema 3, debemos imponer una nueva condición sobre la variable x, ya
que esta nuevamente no es entera, ası́ que obtenemos ahora los siguientes dos subproblemas:

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≥4
x≤5
y≤0
x, y no negativas

Maximizar Z = 5x + 4y
x+y ≤5
10x + 6y ≤ 45
x≥4
x≥5
y≤0
x, y no negativas
Ahora procederemos a resolver ambos subproblemas, mismos que nos permitirán evaluar la
posibilidad de la solución entera, no obstante, notemos que para el sexto subproblema, existen
dos condiciones que se pueden resumir en una sola, las cuales son x ≥ 4 y x ≥ 5, en únicamente
x ≥ 5; ahora los resolvemos:
40 CAPÍTULO 2. PROGRAMACIÓN ENTERA

Figura 2.18: Solución del problema subproblema 5 imponiendo condición sobre x.

Figura 2.19: Solución del problema subproblema 6 imponiendo condición sobre x.

Con lo que hemos analizado todos los subproblemas, a continuación se resumen:

Figura 2.20: Resumen de los subproblemas analizados en el proceso de ramificación.


2.3. PROGRAMACIÓN DINÁMICA 41

Entonces en el subproblema 5 pudimos determinar otra solución entera con un valor óptimo de
Z = 20 cuando x = 4 y y = 0, sin embargo, este es es menor al previamente obtenido. Por lo
tanto, la solución óptima se encuentra dada por Z = 23 bajo las variables x = 3 y y = 2.
Ejercicio 2.3. Convierta el siguiente problema en un problema de programación lineal entera
y posteriormente aplque el método de ramificación y corte a fin de encontrar la respuesta:
Maximizar Z = x + 2y + 5z
|−x + 10y − 3z| ≥ 15
2x + y + z ≤ 10
x, y no negativas
Se deberán de describir todos los subproblemas analizados ası́ como la solución de los mismos,
posteriormente se deberán de resumir en un diagrama de árbol como en el ejemplo.

2.3. Programación dinámica


Ahora procederemos a recordar la técnica de optimización estudiada en la sección previa,
es decir, mediante la programación dinámica. Como analizamos en su momento este método
tiene un aspecto general muy amplio, lo que, permite que se puede emplear en diversas áreas,
en particular, ahora la analizaremos para programación lineal entera.

Previo a analizar la forma en que se puede emplear, analizaremos un pequeño concepto, esto
debido a que es necesario para el planteamiento recursivo de las funciones:
Definición 2.1. Una función f : Rn → R es separable respecto a la suma si esta puede
ser representada como:
f (x1 , x2 , x3 , . . . , xn ) = f (x1 ) + f (x2 ) + f (x3 ) + · · · + f (xn ). (2.2)
Similarmente, esta se dice separable respecto al producto si esta puede ser representada
como:
f (x1 , x2 , x3 , . . . , xn ) = f (x1 ) · f (x2 ) · f (x3 ) · · · f (xn ). (2.3)
Lo anterior, es necesario para la función objetivo a fin de que esta se puede escribir en términos
recursivos, esto se debe a que en programación dinámica esta se reescribe a fin de ser analizada
en diversos subproblemas.

Ahora analicemos un ejemplo que permitirá identificar los principales elementos:


Ejemplo 2.7. Considere el siguiente problema de programación entera (no lineal):
Maximizar Z = 2x2 + 2y + 4z − z 2
2x + y + z ≤ 4
x, y enteras no negativas
Plantee el problema en términos de que pueda ser empleado el método de programación dinámi-
ca y posteriormente aplique el método y determine el óptimo buscado ası́ como la polı́tica óptima.

Solución:
A fin de poder plantear dicho problema en términos de programación dinámica consideraremos
lo siguiente, esto a fin de visualizar la evolución del sistema en un número fijo de etapas:
42 CAPÍTULO 2. PROGRAMACIÓN ENTERA

1. Sea x1 el número asignado a la variable x del problema.

2. Sea x2 el número asignado a la variable y del problema.

3. Sea x3 el número asignado a la variable z del problema.

Entonces el sistema evolucionará conforme tomemos las decisiones x1 , x2 y x3 , entonces la


evolución del sistema se encontrará en términos del estado si , el cual se define a continuación:

1. Sea s1 el número disponible de valores para las variables x1 , x2 y x3 , este valor es igual a
4 (esto debido a la restricción).

2. Sea s2 el número disponible de valores para las variables x2 y x3 (notemos que s3 = s2 −x2 ).

3. Sea s3 el número disponible de valores para la variable x3 , como no sabemos las asigna-
ciones previas, se deberá considerar hasta un valor máximo de 4.

Queda pendiente describir la relación recursiva bajo la cual se establecerá la función objetivo,
entonces primero observemos que la función f : R3 → R definida por la función objetivo, es
decir f (x, y, z) = 2x2 + 2y + 4z − z 2 es separable respecto a la suma, entonces:

f (x, y, z) = 2x2 + 2y + 4z − z 2 = f1 (x) + f2 (y) + f3 (z) = |{z}


2x2 + 2y + |4z {z
− z}2 .
|{z}
f1 (x) f2 (y) f3 (z)

Notemos que el beneficio en cada punto de decisión se puede describir a continuación:

1. El beneficio de la decisión x1 es f1 (x1 ) = 2x21 más el beneficio de las decisiones restantes.

2. El beneficio de la decisión x2 es f2 (x2 ) = 2x2 más el beneficio de las decisiones restantes.

3. El beneficio de la decisión x3 es f3 (x3 ) = 4x3 − x23 .

Ahora con estos hechos procedamos a resolver el problema por medio del método de programación
dinámica, ası́ que consideremos la última etapa:

s3 x3 g3 (x3 , s3 ) = f3 (x3 ) = 4x3 − x23 g3∗ (s3 ) x∗3


0 0 4(0) − (0)2 = 0 0 0
1 1 4(1) − (1)2 = 3 3 1
2
2 2 4(2) − (2) = 4 4 2
3 3 4(3) − (3)2 = 3 3 3
2
4 4 4(4) − (4) = 0 0 4

Ahora consideramos una etapa adicional hacı́a atrás, y evaluamos la ecuación en la función
objetivo g2 (s2 , x2 ) = f2 (x2 ) + g3∗ (s2 − x2 ) = 2x2 + g3∗ (s2 − x2 ), entonces:

s2 x2 = 0 x2 = 1 x2 = 2 x2 = 3 x2 = 4 g2∗ (s2 )
0 2(0) + g3∗ (0) = 0 0
1 2(0) + g3∗ (1) = 3 2(1) + g3∗ (0) = 2 3
2 2(0) + g3∗ (2) = 4 2(1) + g3∗ (1) = 5 2(2) + g3∗ (0) = 4 5
3 2(0) + g3∗ (3) = 3 2(1) + g3∗ (2) = 6 ∗ ∗
2(2) + g3 (1) = 7 2(3) + g3 (0) = 8 7
4 2(0) + g3∗ (4) = 0 2(1) + g3∗ (3) = 5 ∗ ∗ ∗
2(2) + g3 (2) = 8 2(3) + g3 (1) = 9 2(4) + g3 (0) = 8 9
2.3. PROGRAMACIÓN DINÁMICA 43

Finalmente, para la última etapa evaluamos la ecuación en la función objetivo g1 (s1 , x1 ) =


f1 (x1 ) + g2∗ (s1 − 2x1 ) = 2x21 + g2∗ (s1 − 2x1 ), entonces:

s1 x1 = 0 x1 = 1 x1 = 2 x1 = 3 x1 = 4 g1∗ (s1 )
4 2(0)2 + g2∗ (4) = 9 2(1)2 + g2∗ (2) = 7 2(2)2 + g2∗ (0) = 8 9

Por lo tanto, el valor óptimo es Z = 9 con las variables x = 0, y = 3 y z = 1.

Ejercicio 2.4. Considere el siguiente problema de programación no lineal entera:

Maximizar Z = 2x2 − 8x + 8y + 10z − z 3


2x + 6y + 4z ≤ 12
x, y enteras no negativas

Plantee el problema en términos de que pueda ser empleado el método de programación dinámica
y posteriormente aplique el método y determine el óptimo buscado ası́ como la polı́tica óptima.
44 CAPÍTULO 2. PROGRAMACIÓN ENTERA

2.4. Ejercicios
A continuación se presenta una serie de ejercicios que permitirán al estudiante reforzar
lo aprendido en la primer unidad de aprendizaje, adicionalmente que de estos se generará el
examen:

1. Una pareja recién casada busca asignar algunas de las tareas comunes de su hogar, las
cuales son: comprar la despenda, hacer la comida, lavar los trastes y lavar la ropa, a fin
de que la división de tareas sea lo más justo y eficiente, cada uno debe de realizar dos
tareas.

A continuación se describen los tiempos (tiempos en horas por semana) que le toma
a cada uno en realizar las tareas previas:

Nombre / Tarea Comprar despensa Hacer la comida Lavar los trastes Lavar la ropa
Fernanda 4.9 7.0 4.2 3.1
Victor 4.5 7.8 3.6 2.9

De acuerdo con lo anterior, plantee el problema como un problema de programación lineal


y determine la solución del mismo.

2. La división de investigación y desarrollo de una compañı́a esta en proceso de desarrollar


cuatro lı́neas de nuevo productos. La administración debe decidir cuáles de estos cuatro
productos debe de fabricar y en que nivel.

Por lo anterior, ha solicitado al departamento de análisis económico que formule un mo-


delo matemático para encontrar la decisión óptima. La puesta en marcha de la fabricación
de cualquier producto se asocian a ciertos costos, los cuales se muestran a continuación:

Producto 1 Producto 2 Producto 3 Producto 4


Costo de arranque 50, 000 40, 000 70, 000 60, 000
Ingreso unitario 70 60 90 80

Asimismo, por polı́ticas de la empresa se han impuesto las siguientes restricciones:

a) Solo deben de fabricarse a lo máximo 2 artı́culos.


b) Cualquiera de los productos 3 o 4 se puede producir sólo si se fabrica el producto 1
o 2.
c) Se debe de cumplir la siguiente desigualdad:

5x1 + 3x2 + 6x3 + 4x4 ≤ 6000.

De acuerdo con lo anterior, plantee el problema en programación lineal y determine la


solución óptima.

3. La compañı́a Toys-R-4-U ha desarrollado dos nuevos juguetes para su posible inclusión


en la linea de productos de la siguiente temporada. La preparación de instalaciones para
iniciar la fabricación costarı́a $ 50, 000 para el juguete 1 y $ 80, 000 para el juguete 2; una
vez cubierto este costo fijo, se generá un costo unitario de $ 20 y $ 30 respectivamente,
sin embargo, estos se venden a $ 30 y $ 45 a su vez.
2.4. EJERCICIOS 45

La compañı́a tiene 2 plantas que pueden producir los juguetes nuevos, no obstante, para
evitar la duplicidad de costos de preparación sólo se usará una y la elección dependerá
de la maximización de la ganancia; adicionalmente en caso de que se produzcan ambos
juguetes se deberá usar la misma planta.

A continuación se muestra información sobre la tasa de producción y la disponibilidad de


horas trimestrales en cada planta previo a navidad:

Fábrica 1 Fábrica 2
Producción por hora 50 40
Horas disponibles 500 700

La compañı́a no sabe si continuará produciendo posterior a navidad, por lo que, se debe


de decidir cuantas unidades se producirán en este único periodo de tiempo; a partir de lo
anterior, formule en problema como un problema de programación lineal y posteriormente
obtenga su solución.

4. La lı́nea aérea Vuelos Mexicanos piensa en comprar algunos pequeños aviones para vuelos
privados, semi provados y comerciales, para lo que tiene que comprar aviones de diferentes
tamaños, los cuales tendrán los siguientes costos 35 millones, 50 millones y 67 millones
respectivamente para cada avión según su tamaño.

Por otra parte, el consejo ejecutivo cuenta con un capital autorizado para realizar compra
de aviones de 1.5 billones, es decir, 1, 500 millones y para cada uno de los diferentes vuelos
se puede obtener una ganacia neta anual después de costos por recuperación de inversión
los cuales ascienden a 2.3 millones, 3 millones y 4.2 millones respectivamente según el
tamaño del avión.

Asimismo, sólo puede disponer de 30 pilotos para los nuevos aviones, además de que
su taller sólo cuenta con una capacidad limitada para 40 aviones chicos, cabe señalar que,
un avión grande equivale en tamaño a 4 chicos y un avión mediano a 2 chicos.

De acuerdo con la información obtenida plantee el problema en términos de que se pue-


da aplicar un método de programación linea, finalmente, determine la solución a dicho
problema.

5. Determine la solución del siguiente problema de programación lineal mediante el método


de ramificación ası́ como el método gráfico, en ambos casos se deberá de señalar el árbol
de ramificación y los pasos gráficos empleados:

Maximizar Z = 3x + 2y
2x + 5y ≤ 9
4x + 2y ≤ 9
x, y enteras no negativas

6. Determine la solución del siguiente problema de programación lineal mediante el método


de ramificación ası́ como el método gráfico, en ambos casos se deberá de señalar el árbol
46 CAPÍTULO 2. PROGRAMACIÓN ENTERA

de ramificación y los pasos gráficos empleados:

Maximizar Z = 5x + 4y
3x + 2y ≥ 5
2x + 3y ≥ 7
x, y enteras no negativas

7. Determine la solución del siguiente problema de programación lineal mediante el método


de ramificación, se deberá de señalar el árbol de ramificación y los subproblemas analiza-
dos:
Maximizar Z = 5x1 + 6x2 + 7x3 + 8x4 + 9x5
3x1 − x2 + x3 + x4 − 2x5 ≥ 2
x1 + 3x2 − x3 − 2x4 + x5 ≥ 0
− x1 − x2 + 3x3 + x4 + x5 ≥ 1
x1 , x2 , x3 , x4 , x5 binarias

8. Determine la solución del siguiente problema de programación lineal mediante el método


de ramificación, se deberá de señalar el árbol de ramificación y los subproblemas analiza-
dos:
Maximizar Z = 18x1 + 14x2 + 8x3
15x1 + 12x2 + 7x3 ≤ 43
x1 , x2 , x3 enteras no negativas

9. Determine la solución del siguiente problema de programación lineal mediante el método


de ramificación, se deberá de señalar el árbol de ramificación y los subproblemas analiza-
dos:
Maximizar Z = 3x1 + 2x2 − 5x3 − 2x4 + 3x5
x1 + x2 + x3 + x4 + x5 ≤ 4
7x1 + 3x3 − 4x4 + 3x5 ≤ 8
11x1 − 6x2 + 3x4 − 3x5 ≥ 3
x1 , x2 , x3 , x4 , x5 binarias

10. Resuelva los primeros cuatro problemas empleando el algoritmo de ramificación y describa
el árbol generado al resolver dichos problemas.
Capı́tulo 3

Análisis de redes

Los problemas de redes suelen encontrarse en una gran cantidad de problemas en la vida
diaria, esto se debe a que es común representar una gran cantidad de problemas en forma de
una red, tal como en áreas de producción, distribución, pleneación de proyectos, localización
de instalaciones, administración de recursos y planeación financiera, por mencionar algunos
ámbitos de aplicación.

Adicionalmente que una representación en forma de redes proporciona un poderoso apoyo


visual y conceptual para mostrar la relación de los componentes en el sistema, de tal forma,
que es más visual.Ası́ que por lo anteriromente mencionado, una gran variedad de problemas
de optimización se analizan mejor por medio de una representación gráfica (un grafo) o de red;
tal como pudimos analizar cuando estudiamos el método de programación dinámica.

En esta sección consideraremos cuatro modelos especı́ficos de redes, los cuales son:

1. Problema de la trayectoria más corta.

2. Problema del flujo máximo.

3. Problemas del árbol de expansión mı́nima.

4. Modelos de programación de proyecto CPM - PERT.

Justamente estos principales problemas tienen una gran gama de aplicaciones en la vida real,
por lo que, resulta básico considerar el estudio sobre los mismos, no osbtante, previo a ingresar
al estudio de dichos problemas debemos de estudiar algunos conceptos básicos y esenciales sobre
estos que previamente ya mencionamos.

3.1. Introducción a las gráficas


En esta parte analizaremos algunos de los conceptos básicos y esenciales para enteder de
forma general a que nos referimos cuano hacemos alusión al concepto de gráfica o red.

Definición 3.1. Una gráfica G es una pareja G = (V, E), donde V es el conjunto de vértices
y E el conjunto de aristas, cabe señalar que E ⊆ V × V .

Definición 3.2. Una arista consiste en una pareja (v, w) ∈ V × V , donde v, w son vértices de
la gráfica.

47
48 CAPÍTULO 3. ANÁLISIS DE REDES

A fin de evitar un poco de malentendidos, cabe señalar que V ∩ E = φ. La forma común


de representar graficamente una gráfica es colocar un punto por cada vértice y uniendo dos
vértices si la arista se encuentra en el conjunto E, la forma en que se muestran es irrelevante,
sólo se debe de tener presente los vértices y las aristas entre estos.

El número de vértices de una gráfica se le llama su orden y comúnmente se denota por |G|,
notemos que esta cantidad coincide con la cardinalidad del conjunto de los vértices V , una vez
introducido esto cabe señalar que existen gráficas finitas e infinitas, sin embargo, nosotros nos
reduciremos a estudiar sólo gráficas finitas.

Por otra parte, dados x, y ∈ V vértices de la gráfica G, se dice que estos son adyacentes
o vecinos, si (x, y) ∈ E es una arista de la gráfica, si todos los vértices de G son adyacentes
entonces la gráfica se dice completa.

A continuación de muestra un ejemplo de una gráfica que ya habı́amos estudiado previamente,


salvo que, ahora tiene unos pequeños cambios:

A D
G

O B E M

H
C F

En la gráfica anterior, la denotamos por G = (V, E), donde tenemos que el conjunto de vértices
se encuentra dado por V = {O, A, B, C, D, E, F, G, H, M } y el conjunto de aristas está dado
por:
E = {(O, A), (O, B), (O, C), (A, D), (A, E), (A, F ), (B, D), (B, E), (B, F ), (C, D), (C, E), (C, F )
(D, G), (D, H), (E, G), (E, H), (F, G), (F, H), (G, M ), (H, M )} .
= {OA, OB, OC, AD, AE, AF, BD, BE, BF, CD, CE, CF, DG, DH, EG, EH, F G, F H, GM, HM }
Con esto queda definido la gráfica G, por otra parte, notemos que el grado de la gráfica es 10,
debido a que cuenta con 10 vértices, en la cual podemos encontrar que por ejemplo A y E son
vecinos, notemos que existen diferentes vértices vecinos. Asimismo, observemos que podemos
representar a los vértices como la pareja (O, A) o simplemente como OA.

Por otra parte, podemos denotar al conjunto de todos los vecinos de un vertice v ∈ V co-
mo el conjunto NG (v), el cual se encuentra conformado por todos los vecinos de dicho vértice.

Ahora consideramos otros conceptos de suma importancia, los cuales son trayectoria y ci-
clo.
Definición 3.3. Una trayectoria es una gráfica no vacı́a P = (V, E) de la forma siguiente:
V = {v0 , v1 , v2 , . . . , vk } E = {v0 v1 , v1 v2 , v2 v3 , . . . , vk−1 vk } , (3.1)
3.1. INTRODUCCIÓN A LAS GRÁFICAS 49

donde todos los vi para i = 1, 2, . . . , k son diferentes.

Adicionalmente, podemos decir que la trayectoria P une a los vértices v1 y vk , la cual tiene una
longitud de k (la longitud de la trayectoria se encuentra dada por el número de vértices menos
uno). Por otra parte, en la gráfica anterior, podemos considerar algunas trayectorias como son
las siguientes:

V1 = {O, A, F, G, M } , E1 = {(O, A), (A, F ), (F, G), (G, M ) } ⇒ P1 = OAF GM.


V2 = {O, C, E, H, M } , E2 = {(O, C), (C, E), (E, H), (H, M )} ⇒ P2 = OCEHM,

De esta misma expresión, observemos que la trayectoria puede ser representada como la simple
sucesión de los vértices de la misma, en el orden el cual van conformandola. En estos ejemplos
ambas trayectorias son de una longitud 4. Ahora analizaremos la idea de un ciclo, el cual se
puede definir a partir de la trayectoria.

Definición 3.4. Considere la trayectoria P = v0 v1 v2 · · · vk con longitud mayor igual a 2, es


decir, k ≥ 3; entonces la gráfica C := P + vk v0 = v0 v1 v2 · · · vk v0 es llamada un ciclo.

De la misma forma que con las trayectoria podemos denotas a un ciclo como la sucesión de sus
vértices, la longitud del ciclo se encuentra dada por el número de vértices del mismo.

Por otra parte, el ejemplo anterior tiene una gráfica en al cual los vértices no tienen una
dirección, a esto se le conoce como una gráfica no dirigida o comúnmente como gráfica, en estas
al considerar una arista v1 v2 es equivalente al considerar v2 v1 .

Adicionalmente, a fin de considerar el algoritmo de la trayectoria más corta analizaremos la


siguiente definición:

Definición 3.5. La distancia de dos vértices v, w ∈ V con la gráfica G = (V, E), es la


longitud de la trayectoria más corta de v a w, la cual se denota por dG (v, w), si no existe una
trayectoria entre estos vértices entonces dG (v, w) = ∞.

Esta definición la retomaremos posteriormente, cabe señalar que al igual que existen las gráficas
sin dirección existen las gráficas dirigidas, las cuales el que la arista (v, w) ∈ E no implica
que (w, v) ∈ E; a continuación se muestra una modificación de la gráfica anterior.

A D
G

O B E M

H
C F

Asimismo, con estas ideas podremos ahora si entrar a analizar los problemas previamente señala-
dos que servirán de referencia para problemas de optimización, no obstante, describiremos un
problema en el cual se podrá apreciar que podemos buscar aplicar cada uno de estos problemas.
50 CAPÍTULO 3. ANÁLISIS DE REDES

Ejemplo 3.1. Un pueblo mágico del paı́s ha despertado el interés de una gran cantidad de
visitantes debido a que dentro de este se encuentra un área en la cual se puede realizar pa-
seos y caminatas debido a la naturaleza que se puede encontrar, ahora bien, debido a que es
un área protegida sólo se permite el acceso por medio de una compañı́a turistica, la cual ha
desarrollado algunos centros de atracción entre dicha zona y la entrada, los cuales se muestran
a continuación:

2 2 7

5 T
5 4
O B D

3
7
4 1 1
C E
4

En esta figura O es la entrada al parque y T es la parte más llamativa de atracciones del mismo.
En este momento la administración del parque se enfrenta a tres principales problemas:
1. Busca construir un pequeño tranvı́a que facilite el acceso de los turistas y que no requiera
de vehı́culos adicionales a fin de proteger el área y a su vez disminuir sus costos, ası́ que,
este deberá de construirse en la ruta más corta.

2. Por otra parte, se busca establecer comunicación toda el área, por lo que, deberá de lanzar
fibra óptica a cada una de las diferentes áreas; la fibra óptica se lanza desde la entrada.
Ahora bien, esta debe seguir los caminos fijos ya que incurrir en otro camino se puede
dañar el medio ambiente, por lo que, busca la longitud mı́nima de cable que requerirá para
cumplir su objetivo.

3. Finalmente, ha proyectado que en la temporada de mayor afluencia requerirá establecer


otras rutas adicionales de tal forma que se pueda maximizar el número de turistas que
puede llevar hasta el punto de mayor interés T .
Observemos que cada uno de los diferentes problemas a los cuales se enfrenta dicha compañı́a
son justamente los señalados como los principales problemas objetivo de esta sección.

3.2. Problema de la trayectoria más corta


Ahora analizaremos el problema de una gráfica dada en la cual tenemos un nodo inicial y
un nodo final; y buscamos encontrar la ruta (trayectoria) más corta, es decir, aquella que tie-
ne la longitud mı́nima, este problema es conocido como el problema de la trayectoria más corta.

Ahora analicemos algunos ejempos con los que podemos empezar a estudiar de esta forma
este tipo de problema:
Ejemplo 3.2. Rentauncoche.com es un sistio web en el que se rentan vehı́culos para per-
sonas que los necesiten, por lo que, ha planteado una polı́tica de reemplazo de su flotilla actual
3.2. PROBLEMA DE LA TRAYECTORIA MÁS CORTA 51

de automóviles en un horizonte de 4 años.

Al inicio de cada año, un automóvil se reemplaza o se conserva en operación durante un año


más; cabe señalar que un automóvil debe estar en servicio de 1 a 3 años. La siguiente tabla
proporciona el costo de reemplazo como una función del año en que se adquiere un automóvil
y los años en operacion.

Equipo adquirido Costo por 1 año Costo por 2 años Costo por 3 años
1 4000 5400 9800
2 4300 6200 8700
3 4800 7100
4 4900

Plantee el problema en términos de un problema de redes, es decir, plantee la gráfica de la red


a fin de que se pueda visualizar de forma gráfica el sistema.

Figura 3.1: Gráfica de la red del sistema de reemplazo.

Cabe señalar que la ruta más corta es 1 → 3 → 5, es decir, un automóvil adquirido al inicio
del año 1, debe reemplazarse después de 2 años al inicio del año 3; asimismo el automóvil se
mantendrá entonces en servicio hasta finales del año 4, con un costo total de esta polı́tica de
reemplazo de $ 12, 500.

Ahora bien, a fin de identificar estas ideas procederemos a analizar un primer algoritmo para
determinar la ruta más corta, para esto es necesarios verificar ciertas propiedades y restricciones
sobre la gráfica de interés.

Primero, los pesos deben de ser cantidades no negaticas, asimismo, cabe señalar que el al-
goritmo considera etiquetas temporales y permanentes, las segundas describen la distancia
mı́nima y las primeras son auxiliares para la determinación de la misma.

A continuación se presenta el algoritmo de Dijkstra:

Sea ui la distancia más corta del vértice origen al vértice i y definimos dij como la longi-
tud de la arista ij. El algoritmo define la etiqueta para un vértice j que sigue inmediatamente
como
[uj , i] = [ui + dij , i]
La etiqueta para el vértice de inicio es [0, 2], que indica que el vértice no tiene predecesor.
Asimismo, las etiquetas son del tipo permanente y temporal, una etiqueta tempora en un
52 CAPÍTULO 3. ANÁLISIS DE REDES

vértice se modifica si puede hallarse una ruta más corta al vértice, de lo contrario, el estado
temporal cambia a permanente:

1. Paso 0: Etiquete el vértice origen (vértice 1) con la etiqueta permanente [0, −] y esta-
blezca i = 1.

2. Paso 1 (iterativo): Calcule las etiquetas temporales [ui + dij , i] para cada vértice j con
dij > 0, siempre que j no esté etiquetado permanentemente. Si el vértice j ya tiene
una etiqueta tempora existente [uj , k] hasta otro vértice k y si ui + dij < uj , reemplace
[uj , k] con [ui + dij , i].

3. Paso 2 (iterativo): Si todos los vértices tiene etiquetas permanentes deténgase. De lo


contrario, seleccione la etiqueta [ur , s] que tenga la distancia más corta (= ur ) entre todas
las etiquetas temporales (rompa los empates arbitrariamente). Establezca i = r y repita
el paso 1 (iterativo).

A fin de identificar las ideas señaladas bajo este algoritmo analizaremos una gráfica en la cual
procederemos a estudiar:

Figura 3.2: Algoritmo de Dijkstra.

Ejercicio 3.1. A continuación se presenta la gráfica de distancias entre 8 ciudades de un pais,


la distancia se encuentra en kilómetros:

Figura 3.3: Ejercicio de aplicación del algoritmo de Dijkstra.

De la gráfica dada determine la ruta y la distancia más corta entre las siguientes ciudades:
3.3. MODELOS DE MÁXIMO FLUJO 53

1. Ciudad 1 y 8.

2. Ciudad 1 y 6.

3. Ciudad 4 y 8.

4. Ciudad 2 y 6.

Ahora procederemos a analizar un segundo algoritmo con el cual podemos determinar la tra-
yectoria más corta entre dos vértices, este algoritmo se le conoce como el algoritmo de Floyd,
en cierto sentido este es más general que el de Dijkstra, debido a determina la distancia entre
dos nodos cualesquiera en la gráfica.

Ejercicio 3.2. Aplique el algoritmo de Floyd a la siguiente gráfica:

3.3. Modelos de Máximo Flujo


A fin de identificar los conceptos básicos y esenciales que se ocuparán en los modelos donde
busquemos determinar el máximo flujo en una red analizaremos primeramente un ejemplo que
permiritá introducir a los mismos.

Ejemplo 3.3. Considere una red de oleoductos que transporta petróleo desde pozos de extrac-
ción hasta las plantas de refinación, ahora bien, entre estas se instalan estaciones intermedias
de reforzamiento y bombeo a distancias apropiadas para mover el hidrocarburo en la red. Ahora
bien, cada segmento de tuberı́a puede ser unidireccional o bidireccional según su diseño.

A continuación se muestra una red de ductos con fines de ejemplo de la misma:

Figura 3.4: Red de ductos de transporte.


54 CAPÍTULO 3. ANÁLISIS DE REDES

Para resolver este problema se incorporaron en la red una fuente y un sólo destino utilizando
arcos de capacidad infinita unidireccionales, esa es la razón por la que se adicionaron estos
mismos.

Para identificar estos resultados es necesario definir el cocnepto de corte, el cual procede a
definir:

Definición 3.6. Un corte define un conjunto de arcos cuya eliminación de la red interrumpe
el flujo entre los nodos fuente y destino. Asimismo, la capacidad de corte es igual a la suma
de las capacidades de su conjunto de cortes.

Esta definición es importante ya que entre todos los cortes posibles en la red, el corte con la
capacidad mı́nima es el cuello de botella que determina el flujo máximo a la red. Ahora
analizaremos algunos consideraciones sobre los cortes:

Figura 3.5: Ejemplos de cortes en una gráfica.

Finalmente pasaremos al algoritmo que permite determinar el máximo flujo en una gráfica, el
cual se base en determinar las rutas de avance con flujo positivo entre los vértices fuente
y destino, cada ruta destina una parte de o todas las capacidades de sus arcos al flujo total
en la red. Para esto procederemos a incoporar una etiqueta adicional que hará mención a la
capacidad de entrada, tal como se describe en la siguiente imagen:

Figura 3.6: Etiquetas de entrada y salida.

A continuación se describe el algoritmo de determinación del máximo flujo:

1. Para todos los arcos igualamos la capacidad de entrada (residual) a la capacidad de


diseño, es decir (cij , cji ) = (C ij , C ji ). Adicionalmente considere a1 = ∞ por lo que,
incorporaremos al vértice fuente como la etiqueta [∞, −], asimismo asignamos i = 1.

2. Determine Si el conjunto de los vértices no etiquetados j al que se puede llegar directa-


mente desde el vértice i por medio de aristas con residuos positivos. Si S6 = φ continuamos
con el paso siguiente, en caso contrario terminamos con una ruta parcial y pasamos al
paso 4.
3.3. MODELOS DE MÁXIMO FLUJO 55

3. Determine k ∈ Si de modo que:


cik = máx {cij }
j∈Si

Designe ak = cik y etiquete el nodo k con [ak , i], si k = n, el nodo destino ha sido
etiquetado y se ha encontrado una ruta de avance, y entonces continuamos con el paso 5;
en caso contrario designe i = k y regrese al paso 2.

4. Retroceso: Si i = 1, no es posible avanzar ası́ que nos vamos al paso 6. De lo contrario


sea r el vértice (en la ruta parcial) que se etiquetó inmediatamente del vértice actual i y
elimine i del conjunto de vértices adyacentes a r. Designe ahora a i = r y regrese al paso
2.

5. Determinación de residuos: Defina ahora los vértices de la ruta de avance p - ésima


del vértice 1 al vértice n como Np = (1, k1 , k2 , . . . , n), entonces el flujo máximo a lo largo
de la ruta se calcula como:

fp = mı́n {a1 , ak1 , ak2 , . . . , an } .

La capacidad residual de cada vértice a lo largo de la ruta se reduce en fp en la dirección


del flujo y se incrementa en fp en la dirección inversa, es decir, para los vértices i y j en
la ruta, el flujo residual cambia del actual (cij , cji ) a

(cij − fp , cji + fp ) si el flujo es de i a j.


(cij + fp , cji − fp ) si el flujo es de j a i.

Ahora restaure los vértices que se eliminaron en el paso 4, designe i = 1 y regrese al paso
2.

6. Solución:

Dado que se determinaron m rutas de avance el flujo máximo en la red es:

F = f1 + f2 + f3 + · · · + fm

Utilizando las capacidades de diseño iniciales y los residuos finales de cada arista
(i, j), respectivamente, el flujo óptimo en la arista se determina calculando (α, β) =
(C ij − cij , C ji − cji ), si α > 0 entonces el flujo óptimo es la dirección de i a j. Por
otra parte, si β > 0, el flujo óptimo es de j a i.
56 CAPÍTULO 3. ANÁLISIS DE REDES

Ejercicio 3.3. Determine el flujo máximo y el flujo óptimo en cada arco para la siguiente
gráfica:

Figura 3.7: Gráfica para efectos del problema de flujo máximo.

3.4. Árbol de expansión mı́nima


Ahora analizaremos el último problema que señalamos en nuestro ejemplo introductorio, en
este mismo se busca una red que pase por todos los vértices de la gráfica de tal forma que tenga
la mı́nima longitud o el mı́nimo peso; no obstante, previo a analizar un algoritmo que permita
obtener el objetivo señalado definiremos el concepto de árbol.
Definición 3.7. Árbol: Es una red de vértices libre de ciclos, adicionalmente señalamos como
árbol de expansión mı́nima a aquel árbol que contiene todos los vértices de la gráfica.
Ahora analizaremos como determinar el árbol de expansión mı́nima para garantizar aquella co-
nexión de la gráfica que garantiza la mı́nima longitud, la solución de este problema es práctica
en la construcción de carreteras y diseño de caminos a fin de optimizar la compra y tendido de
materiales.

Para lo que sigue considere N = {1, 2, . . . , N } el conjunto de vértices de la red y definimos


como:
Ck como el conjunto de vértices que han estado conectados de manera permanente en la
iteración k.
C k como el conjunto de vértices que se construirán permanentemente después de la ite-
ración k.
A continuación se muestran los pasos del algortimo que nos permitirá determinar el árbol de
expansión mı́nima:
1. Paso 1: Establezca C0 = φ y C 0 = N .
2. Paso 2: Inicie con cualquier vértice i en el conjunto no conectado C 0 y establezca C1 =
{i}, lo que produce que C 1 = N − {i}, y designe a k = 2.
3.5. CPM Y PERT 57

3. Paso general k: Seleccione un vértice j ∗ en el conjunto no conectado C k−1 que produzca


la arista más corto a un vértice en el conjunto Ck−1 conectado. Vincule j ∗ permanente-
mente a Ck−1 y elimı́nelo de C k−1 para obtener Ck y C k , respectivamente. Deténgase si
C k está vacı́o; de lo contrario, establezca k = k + 1 y repita el paso.

Finalmente ahora analicemos un ejemplo para comprender la idea del algoritmo:

Ejercicio 3.4. Determine el árbol de expansión minima de la siguiente gráfica:

2 2 7

5 T
5 4
O B D

3
7
4 1 1
C E
4

3.5. CPM y PERT


El método de la ruta crı́tica (CPM) y la técnica de evaluación y revisión de programas
(PERT) son método basados en redes diseñados para ayudar a planificar, programar y contro-
lar proyectos. Un proyecto se define como un conjunto de actividades interrelacionadas donde
cada actividad consume tiempo y recursos.

El objetivo de CPM y PERT es idear herramientas analı́ticas para programar las activida-
des, por lo que, debemos seguir los siguientes pasos:

1. Definimos las actividades del proyecto y sus relaciones de precedencia y sus requerimiento
de tiempo.

2. Se modelan las relaciones de precedencia entre las actividades como una red.

3. Cálculamos el desarrollo del cronograma, ahora bien, al empezar este paso puede que
no todas las actividades discurran como se planearon, en el sentido de que algunas se
despacharan y otras se demorarán por lo que se incrpora un bucle de retroalimentación.

Las dos tecnicas señaladas las desarrollaremos de forma independiente, sin embargo, cabe
señalar que CPM asume que las duraciones de las actividades son determinı́sticas y PERT
que tiene duraciones probabilı́sticas.

Dicho lo anterior debemos de representar en forma de red los vértices de avance del proyecto,
los cuales establecen relaciones de precedencia entre las diferentes actividades, a continuación
se muestran las reglas para construir la gráfica:

1. Cada actividad esta representada por uno, y sólo una arista.


58 CAPÍTULO 3. ANÁLISIS DE REDES

2. Cada actividad debe estar identificada por dos vértices terminales distintos, cabe señalar
que en ocasiones es necesario incorporar actividades ficticias para representar de forma
única dos actividades concurrentes, A y B, cabe señalar que una actividad ficticia no con-
sume tiempo ni recursos, a continuación se muestra como se ha insertado una actividad
ficticia para la concurrencia de las actividades A y B:

Figura 3.8: Introducción de actividad fictira para actividades concurrentes.

3. Para mantener las relaciones de precedencia correctas, hay que contestar las siguientes
preguntas a medida que se agrega cada actividad a la red.

¿Qué actividades precede inmediatamente a la actividad actual?


¿Qué actividades siguen inmediatamente a la actividad actual?
¿Qué actividades son concurrentes con la actividad actual?

Las respuestas a estas preguntas pueden requerir el uso de actividades ficticas para garan-
tizar la precedencia correcta entre las actividades, analicemos un ejemplo a fin de analizar
la importancia de estas mismas:
Ejemplo 3.4. Considere un proyecto en el cual se tienen las siguientes actividades:

a) La actividad C se inicia inmediatamente después de que las actividades A y B se


han completado.
b) La actividad E puede iniciarse después de que se complete la actividad B.

Observemos como puede ser representado lo anterior.

Dicho lo anterior analicemos un ejemplo a fin de poner en práctica como se pueden plantear
las diferentes actividades necesarias para completar un objetivo dado.
Ejemplo 3.5. Un editor firmó un contrato con un autor para publicar un libro de texto, el autor
somete a consideración del consejo editor una copia impresa del libro, el cual busca publicar.
Las activiades las cuales debe de continuar para la producción del libro de texto, las cuales se
resumen en la siguiente tabla.:
3.5. CPM Y PERT 59

Figura 3.9: Cronograma de actividades para la publicación del libro.

Ejercicio 3.5. Para el siguiente cronograma de actividades construya su diagrama de activi-


dades:

Una compañı́a constructora ha sido contratada para la construcción de una casa, en dicho
proceso de han identificado diversas actividades necesarias para la construcción de la casa, ası́
como su relación entre ellas y una estimación aproximada de la duración de cada una de ellas.
Estas son presentadas a continuación:

Actividad Descripción Predecesoras Tiempo


A Elegir la estructura B 5
B Hacer los cimentos 3
C Poner las vigas / Techo A 2
D Revestir el techo C 3
E Cableado eléctrico A 4
F Tablas / Paredes exteriores G 4
G Colocar las ventanas A 2
H Tablas / Paredes interiores D, F 1
I Pintura E, G 4

Ya construida la gráfica procederemos a presentar los cálculos necesarios para establecer el


método de ruta crı́tica (CPM), el resultado final es un cronograma para el proyecto, para este
objetivo realizaremos cálculos necesarios:

1. Duración total necesaria para completar el proyecto.

2. Clasificación de las actividades del proyecto como crı́ticas o no crı́ticas.

Una actividad es crı́tica si sus tiempos de inicio y terminación están predeterminados (fijos),
por otra parte, una actividad no crı́tica si puede ser programada en un espacio de tiempo mayor
que su duración, lo que permite tiempos de inicio y terminación flexibles (dentro de los lı́mites).

Una demora en el tiempo de inicio de una activdad crı́tica definitivamente retrasa la termi-
nación del proyecto, en tanto que una demora en una actividad no crı́tica quizá no afecte la
fecha de terminación del proyecto.
60 CAPÍTULO 3. ANÁLISIS DE REDES

Para realizar los cálculo necesarios, definimos un evento como un punto en el tiempo en el
cual se completan las actividades y se inician las subsecuentes. En función de la red, un evento
corrsponde a un vértice. Sean:

j = Tiempo de ocurrencia más temprano del evento j.

∆j = Tiempo de ocurrencia más tardio del evento j.

Dij = Duración de la actividad (i, j).

Todos los tiempos de ocurrencia se miden a partir del inicio del proyecto, el lapso (j , ∆j )
define el periodo de tiempo durante el cual se programa la actividad (i, j) de duración Dij . Si
la actividad (i, j) es crı́tica, entonces Dij = ∆j − j , de lo contrario Dij < ∆j − j para la
actividad no crı́tica (i, j).

Los cálculos de la ruta crı́tica implica dos pasos: El paso adelantado, el cual determina
los tiempos de ocurrencia más tempranos de los eventos y el paso retrasado, el cual calculas
los tiempos de ocurrencias más tardı́os. A cotninuación analizaremos el algoritmo que se deberá
de seguir para determinar los valores.

Paso adelantado (tiempos de ocurrencia más tempranos, ): Los cálculos se inician el
vértice 1 y avanzas recursivamente hacı́a el vértice n, los cuales se detallan a continuación:

1. Paso inicial: Establezca j = 0 para indicar que el proyecto de inicia en el tiempo 0.

2. Paso general j: Dado que los vértices p, q, . . . , v están conectados directamente al vértice
j por las actividades entrantes (p, j), (q, j), . . . , (v, j) y que los tiempos de ocurrencia más
tempranos de los eventos (vértices) p, q, . . . , v ya se calcularon, entonces el tiempo más
temprano de ocurrencia del evento j se calcula como:

j = máx {p + Dpj , q + Dqj , . . . , v + Dvj } . (3.2)

El paso adelantado se completa cuando se ha calculado j en el vértice n, por definición,


j es la ruta más larga (duración) al vértice j.

Paso retrasado (tiempos de ocurrencia más tardı́os, ∆): Los cálculos del paso retrasado
se inician en el vértice n y termina en el vértice 1, los pasos a seguir se detallan a continuación:

1. Paso inicial: Establezca ∆n = n para indicar que las ocurrencias más tardı́as del últime
vértice son iguales a la duración del proyecto.

2. Paso general j: Dado que los vértices p, q, . . . , v están conectados directamente al vértice
j por las actividades salientes (j, p), (j, q), . . . , (j, v) y que los tiempos de ocurrencia más
tardı́os de los vértices p, q, . . . , v ya se calcularon, el tiempo de ocurrencia más tardı́o del
vértice j se calcula como:

∆j = mı́n {∆p − Djp , ∆q − Djq , . . . , ∆v − Djv } . (3.3)

El paso retrasado termina con ∆1 = 0 en el vértice 1.

Con base en los cálculos anteriores, una actividad (i, j) será crı́tica si satisface tres condiciones:

1. ∆i = i .
3.5. CPM Y PERT 61

2. ∆j = j .

3. ∆j − i = Dij .

Las tres condiciones establecen que los tiempos de ocurrencia más tempranos y mñas tardı́os
de los nodos finales i y j son iguales y que la duración Dij encaja perfectamente en el espacio
de tiempo especificado. Una condición que no satisface las tres condiciones no es crı́tica.

Ejercicio 3.6. Determine mediante el algoritmo de PERT el tiempo promedio de completitud


del proyecto y adicionalmente determine la probabilidad de cumplirlo en dos dı́as adicionales a
este.

Figura 3.10: Tiempos de actidades - PERT.


Capı́tulo 4

Modelos de Inventario

El problema del modelo de inventario tiene que ver con el número de unidades disponibles
para satisfacer la demanda sobre cierto artı́culo, debido a que:

1. El exceso de existencias de artı́culo genera un sobrecosto (ya sea por la pérdida del artı́culo,
el costo de almacenamiento, etc.).

2. La escasez del artı́culo genera costo relacionados con pérdida de oportunidad al no cubrir
la demanda del artı́culo.

Dicho lo anterior, nuestro objetivo en encontrar un balance en los costos a fin de determinar el
número de artı́culos necesarios en nuestro inventario el cuál se encontrará enfocado en minimizar
el costo asociado a dicho modelo, para la formulación del mismo se debe tener presente dos
preguntas:

1. ¿Cuánto pedir?

2. ¿Cuándo pedir?

Adicionalmente a estos factores, debemos considerar los costos inherentes al modelo a fin de
identificar los costos que buscaremos minimizar, los cuales se describen a continuación:

1. Costo de compra: Precio unitario del artı́culo, el cual puede encontrarse relacionado
con la cantidad de unidades que se adquieren; comúnmente se puede considerar como un
precio mayoreo o menudeo.

2. Costo de preparación: Es el costo fijo asociado con la preparación de los artı́culos


requeridos; comúnmente puede ser identificado como el precio de logı́stica asociado con
la preparación del requerimiento de los artı́culos.

3. Costo de almacenamiento: Es el costo asociado con el almacenamiento, mantenimiento


y manejo de inventario.

4. Costo por escasez: Es el costo por la pérdida de oportunidad por no atender la demanda
ası́ como las posibles penalizaciones que puedan surgir.

Ahora bien, este dichos costos se pueden presentar costos que se contrapongan, es decir, un
costo puede incrementar mientras otro costo puede disminuir. Un ejemplo de lo anterior, se vi-
sualiza en el costo de preparación y el costo de almacenamiento, debido a que se puede buscar
solicitar inventario muy frecuentemente para evitar los costos asociados con el almacenamiento,

62
4.1. MODELO ESTÁTICO DE CANTIDAD DE PEDIDO ECONÓMICO (EOQ) 63

sin embargo, esto incrementa el costo de preparación al solicitar frecuentemente.

Por lo anterior, es que describimos al modelo como un balance, no obstante, hemos identifi-
cado otro factor importante, la frecuencia de reposición del inventario, por otra lado, hemos
considerado aspectos desde la parte que toma las acciones, sin embargo, nos queda por señalar
el comportamiento de la demanda, la cual principalmente definirá el modelo de inventario a usar.

A continuación se describen los principales modelos de inventario en función de la dinámica de


la demanda:
1. Determinı́stica y constante en el tiempo.

2. Determinı́sitca y variable en el tiempo.

3. Probabilı́stica y estacionaria en el tiempo.

4. Probabilı́stica y no estacionaria en el tiempo.


Podemos observar que los modelos se pueden clasificar en realidad en dos familias, aquellos
donde la demanda es determinı́sitca y aquellos donde estas tienen un factor probabilı́stico, por
lo que, al igual que cuando analizamos programación dinámica, los primeros será más simples
que los segundos.

4.1. Modelo estático de cantidad de pedido económico


(EOQ)
Ahora analizaremos el modelo de inventario señalado inicialmente, cabe señalar, que es-
tos son los más simples en términos analı́ticos debido a que tienen una demanda constante,
analizaremos tres variaciones del mismo modelo:

4.1.1. Modelo EOQ clásico


Este modelo supone que existe una tasa constante con reposición de pedidos instántanea y
sin escasez, para el estudio del mismo definimos ahora:
y = Cantidad de pedido (unidades).

D = Tasa de demanda (unidades / tiempo).

t0 = Duración del ciclo de pedido (tiempo).


El nivel de inventario sigue el siguiente comportamiento:

Notemos que cuando el inventario llega a cero, de forma instántanea se recibe un pedido de y
unidades, asimismo, las existencia se agotan uniformemente con una tasa de demanda constante
D. El ciclo de pedido se encuentra dado por:
y
t0 = . (4.1)
D
Ahora nos enfocaremos en los costos asociados con este primer modelo de inventario, para lo
que, podemos analizar que se encuentran los siguientes costos:
64 CAPÍTULO 4. MODELOS DE INVENTARIO

Figura 4.1: Comportamiento del modelo de inventario EOQ clásico.

K = Costo de preparación por la solicitud del pedido (pesos por pedido).

h = Costo por almacenamiento (pesos por unidad por tiempo).

Ahora bien, notemos que el nivel del inventario promedio es y2 ası́ que el costo total por unidad
de tiempo T CU es:
K + h y2 t0

DK y 
T CU (y) = = +h ,
t0 y 2
por lo que, buscamos el valor óptimo del pedido y que permita minimizar el costo de T CU (y),
supongamos que esta es una función continua, por lo que, podemos emplear nuestros métodos
de optimización clásicos, es decir:

También podría gustarte