Logo Studenta

Algoritmos-heursticos-y-exactos-para-el-problema-de-la-mochila

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD NACIONAL AUTÓNOMA
DE MÉXICO
ANA LILIA ANAYA MUÑOZ
DIRECTOR DE TESIS:
M. en I. O. MARÍA DEL CARMEN HERNÁNDEZ AYUSO
FACULTAD DE CIENCIAS
ALGORITMOS HEURÍSTICOS Y EXACTOS PARA EL
PROBLEMA DE LA MOCHILA
T E S I S
QUE PARA OBTENER EL TÍTULO DE:
M A T E M Á T I C A
P R E S E N T A :
Cd. Universitaria, D.F. 2016
 
UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
Hoja de datos del jurado
1.- Datos del alumno 4.- Datos del sinodal 2.
Anaya Mat.
Muñoz Adrián
Ana Lilia Girard
15570138 Islas
Universidad Nacional Autónoma 5.- Datos del sinodal 3.
de México Mat.
Facultad de Ciencias Laura
Matemáticas Pastrana
095348021 Ramírez
2.- Datos del tutor 6.- Datos del sinodal 4.
M. en I. O. Act.
María del Carmen Germán
Hernández Valle
Ayuso Trujillo
3.- Datos del sinodal 1. 7.- Datos del trabajo escrito
Dra. Algoritmos heurísticos y exactos
Hortensia para el problema de la mochila
Galeana 158p
Sánchez 2016
Contenido
Introducción v
1 Programación entera 1
1.1 De�niciones de Programación Lineal . . . . . . . . . . . . . . . . . . 2
1.2 Problema de la mochila . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 Problema de la mochila general . . . . . . . . . . . . . . . . . 12
1.2.2 Problema de la mochila general acotado . . . . . . . . . . . . 13
1.2.3 Problema change-making . . . . . . . . . . . . . . . . . . . . . 13
1.2.4 Problema de la mochila binario . . . . . . . . . . . . . . . . . 13
1.2.5 Problema subset-sum . . . . . . . . . . . . . . . . . . . . . . . 14
2 Rami�cación y acotamiento 15
2.1 Método de rami�cación y acotamiento . . . . . . . . . . . . . . . . . 16
2.1.1 Técnica de rami�car y acotar . . . . . . . . . . . . . . . . . . 17
2.1.2 Aspectos claves del método de rami�cación y acotamiento . . 20
5
2.1.3 Algoritmo de Dakin . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Método de rami�cación y acotamiento para el problema de la mochila
(Un método para obtener una cota superior). . . . . . . . . . . . . . . 27
2.2.1 Problema general . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.2 Problema Acotado . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.3 Problema Binario . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3 Algoritmo de rami�cación y acotamiento para el problema de la mochila 30
2.3.1 Algoritmo de Dakin ( problema general) . . . . . . . . . . . . 30
2.3.2 Algoritmo para el problema acotado . . . . . . . . . . . . . . . 37
2.3.3 Algoritmo de Balas (Para el Problema Binario de la Mochila) 43
2.3.4 Algoritmo para el problema binario . . . . . . . . . . . . . . . 49
3 Programación dinámica 63
3.1 Elementos de un problema de programación dinámica . . . . . . . . . 64
3.2 Problema de programación dinámica . . . . . . . . . . . . . . . . . . 65
3.3 Programación dinámica aplicada al problema de la mochila . . . . . . 71
3.3.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3.2 Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . . . . 82
4 NP Completez y métodos heurísticos 83
4.1 Complejidad computacional . . . . . . . . . . . . . . . . . . . . . . . 84
4.2 Reducciones polinomiales . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.2.1 Problema del SAT / Problema 3-acoplamiento. . . . . . . . . 89
4.2.2 Problema 3-acoplamiento / Problema 3-recubrimiento. . . . . 96
4.2.3 Problema 3-recubrimiento / Problema de la mochila binario. . 98
4.2.4 Problema de la mochila binario / Problema de la
mochila general. . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.3 Métodos heurísticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1 Algoritmo heurístico glotón para el problema binario . . . . . 105
4.3.2 Algoritmo heurístico glotón para el problema general . . . . . 108
4.3.3 Algoritmo heurístico truncado para el problema binario. . . . 111
4.3.4 Algoritmo heurístico truncado para el problema
general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.3.5 Algoritmo reversible para el problema binario . . . . . . . . . 111
5 Programa 115
5.1 Función principal (menú) . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.1.1 Descripción de las variables principales . . . . . . . . . . . . . 116
5.1.2 Descripción de la función principal. . . . . . . . . . . . . . . . 116
5.2 Función rami�cación y acotamiento . . . . . . . . . . . . . . . . . . . 118
5.2.1 Función ramaco . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.2.2 Función aco1(n,b,a,c); . . . . . . . . . . . . . . . . . . . . . . 120
5.2.3 Función compara . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.4 Función crea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.2.5 Función expandir . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.3 Función progdin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.3.1 Descripción de las variables. . . . . . . . . . . . . . . . . . . . 124
5.3.2 Función Progdin1() . . . . . . . . . . . . . . . . . . . . . . . . 125
5.4 Función heurist( ); . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.1 Descripción de las variables . . . . . . . . . . . . . . . . . . . 129
5.4.2 Descripción del programa . . . . . . . . . . . . . . . . . . . . 129
5.4.3 Función heu(n,b,a,c); . . . . . . . . . . . . . . . . . . . . . . . 130
5.4.4 Función compara1 . . . . . . . . . . . . . . . . . . . . . . . . 132
6 Manual de Usuario 133
6.1 Rami�cación y Acotamiento . . . . . . . . . . . . . . . . . . . . . . . 134
6.2 Programación Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3 Programación Heurística . . . . . . . . . . . . . . . . . . . . . . . . . 148
Apéndice A
Teoría de grá�cas 153
Conclusión 155
Bibliografía 157
Dedicatoria
A mis papás Juana Muñoz y Seferino Anaya porque siempre hicieron hasta lo imposi-
ble para que pudiera lograr mis metas y me motivaron para ser una persona respon-
sable. Con todo mi cariño y amor se las dedico.
A mis hermanas Gaby, Mary y Ara que con sus consejos no dejaron que me
perdiera en el camino.
A mi directora de tesis, M. en I. O. María del Carmen Hernández Ayuso; por la
paciencia que me tuvo y gracias a todas sus recomendaciones este trabajo se pudo
lograr.
i
Agradecimientos
Agradezco a Dios por haberme permitido estudiar la carrera de matemáticas que me
ha dado muchas satisfaciones.
Le doy gracias a mis papás: Juana Muñoz y Seferino Anaya por el amor y con-
�anza que me han dado ya que gracias a eso pude superar muchas de las pruebas
que se me han presentado en la vida; su ejemplo de entrega y dedicación me han
motivado a terminar la carrera.
A mis hermanas por todos sus consejos y apoyo que me han dado a lo largo de
mi vida.
A mi directora de tesis, M. en I. O. María del Carmen Hernández Ayuso por el
tiempo que dedicó a guiarme para desarrollar este trabajo, por el apoyo y con�anza
que me brindó en todo este tiempo, por el sin �n de revisiones y correcciones que
enriquecieron esta tesis hasta llegar a su �n.
A mis compañeros y amigos de la facultad, que gracias a su apoyo hicieron más
ligeras las tareas y exámenes durante la carrera,
A mis sinodales: Dra. Hortensia Galeana Sánchez, Mat. AdriánGirard Islas,
Mat. Laura Pastrana Ramírez y Act. Germán Valle Trujillo. Por el tiempo que
dedicaron a leer mi tesis, por sus sugerencias y correcciones
iii
A mis profesores ya que gracias a ellos tuve una formación profesional que ahora
aplico a la docencia.
Y por último, pero no menos importante, a la Univesidad Nacional Autónoma de
México que ha sido un segundo hogar para mi.
iv
Introducción
La teoría de la programación lineal entera ha sido una de las áreas de investigación
de operaciones que se ha desarrollado rápidamente, desde los primeros trabajos de
Ralph Gomory en los años cincuentas.
Esta tesis tiene como �nalidad el estudio del problema de la mochila modelado
como un problema de programación lineal entera, el cual ha sido estudiado sobre
todo en los últimos 25 años; éste resulta interesante porque está constituido por una
estructura sencilla, ya que el modelo matemático cuenta con una sola restricción.
A este problema le han encontrado muchas aplicaciones tales como: inventarios,
cargamentos de diferentes artículos, inversiones y situaciones industriales.
A pesar de la sencillez de su formulación; el problema de la mochila entero se cata-
loga como un problema difícil de resolver (NP-completo), es decir, es un problema
que no cuenta con algún algoritmo e�ciente para resolverlo. Existen algoritmos que
pueden resolverlo, pero éstos requieren de una cantidad exponencial de pasos para
llegar a la solución, si ésta existe, la cantidad de pasos va en función del tamaño del
problema, es decir, el número de variables.
Se podría pensar que para resolver el problema de la mochila entero se tendrían
que analizar todas las posibles soluciones y escoger la mejor, pero este camino es
exhaustivo. En este trabajo se enuncian algunos algoritmos que evitan explorar
todas las soluciones posibles, ya que con algunas condiciones se pueden descartar
v
algunas que no llevarían a la óptima.
En este trabajo también se desarrolló un programa en el lenguaje C++ que re-
suelve el problema de la mochila utilizando algunos algoritmos que se tratarán en los
capítulos 2, 3 y 4.
En el primer capítulo se dan algunas de�niciones elementales de la programación
lineal y programación lineal entera. Un concepto importante es la relajación PL y
los resultados que se derivan de éste; ya que para resolver algunos problemas enteros
se parte de la solución óptima de la relajación PL.
En el segundo capítulo se estudia el método de rami�cación y acotamiento que es
un procedimiento con un desarrollo largo, ya que partimos de una solución óptima
(solución de problema relajado) pero no factible (no cumple la restricción de que
las variables sean enteras) y se tienen que probar muchas posibles combinaciones
de variables enteras factibles para escoger la mejor solución. Con ayuda de algunas
condiciones el número de posibles soluciones se reduce.
En el capítulo tres se da una pequeña introducción a la programación dinámica;
después de dar algunas de�niciones elementales, se aplica un algoritmo especí�co
para el problema de la mochila.
En el capítulo cuatro se de�nen los problemas NP-Completos. Dado que el proble-
ma de la mochila pertenece a esta clase, se hace la reducción polinomial del problema
del SAT al problema de la mochila (un caso especial), después se da una introdu-
cción a los algoritmos heurísticos, que son una alternativa para obtener una "buena�
solución en un tiempo razonable.
En el capítulo cinco se muestran los diagramas de �ujo y el funcionamiento de las
rutinas más importantes que contiene el programa que se desarrolló en el lenguaje
C++: Este programa resuelve el problema de la mochila binario con rami�cación y
acotamiento, así como un algoritmo heurístico. También resuelve el problema de la
vi
mochila general con programación dinámica.
Por último, el capítulo 6 contiene el manual de usuario del programa �MOCHILA�
desarrollado en el lenguaje C++:
vii
Capítulo 1
Programación entera
Este capítulo contiene de�niciones básicas de programación lineal y programación
lineal entera así como algunas propiedades que se cumplen en este tipo de modelos
que son la base de los métodos de solución revisados en este trabajo.
Los problemas de programación lineal entera son en general más complicados de
resolver que los de programación lineal, por lo que en muchos de los casos se resuelve
la relajación PL del problema entero (el cual es de programación lineal) como primer
paso. En otros casos se aplica por la �losofía �divide y vencerás� conocida en la
bibliografía como técnica de rami�cación y acotamiento.
El objetivo de este capítulo es presentar la técnica de rami�cación y acotamiento,
así como formular el problema de la mochila mediante un modelo matemático lineal
entero.
1
1.1 De�niciones de Programación Lineal
De�nición 1: Un problema de programación lineal (PL), es un problema de opti-
mización, para el cual:
1. El objetivo es maximizar o minimizar una función lineal de variables de decisión
que llamaremos x1; x2; :::; xn; dicha función es llamada función objetivo.
2. Los valores que toman las variables de decisión tienen que satisfacer un con-
junto de restricciones, donde cada restricción debe ser una ecuación lineal o
una desigualdad lineal.
3. Hay restricciones de signo para cada variable xi, por ejemplo xi debe ser no
negativa, es decir, xi � 0 o no tiene restricción de signo, es decir, SRS).
En general un problema de programación lineal (PL) es de la siguiente forma:
Max (Min) z = c1x1 + c2x2 + :::+ cnxn
s:a: a11 x1 + a12 x2+ :::+ a1n xn � (�) (=) b1
a21 x1 + a22 x2+ :::+ a2n xn � (�) (=) b2
.
.
.
am1x1 + am2x2 + :::+ amnxn � (�) (=) bm
xi � 0 i = 1; :::n:
Un ejemplo de un problema de programación lineal es el siguiente:
Ejemplo 1: Una compañía quiere programar su producción de cerveza, la cual
puede ser clara u oscura. Los requerimientos laborales y monetarios en miles de pesos
2
por semana se expresan en la siguiente tabla (por cada 1000 litros)
Obreros requeridos Costo Precio al mayoreo
Clara 3 5 50
Oscura 5 2 30
Disponibilidad por semana 15 10
Las variables de decisión para este problema son las siguientes:
x1 = miles de litros de cerveza clara a producir semanalmente.
x2 = miles de litros de cerveza oscura a producir semanalmente.
Para construir las restricciones consideremos lo siguiente:
El número de obreros requeridos para producir cerveza clara u oscura por semana
no debe exceder de 15 y la cantidad necesaria para producir 1000 litros de cerveza
clara u oscura es de 3 y 5 respectivamente, por lo que la restricción referente a esto,
se expresa de la siguiente manera:
3x1 + 5x2 � 15
El costo de producción semanalmente no debe ser mayor a 10 mil pesos, por lo que
la restricción es:
5x1 + 2x2 � 10
La función objetivo describe la ganancia en miles de pesos de un plan de producción.
Entonces es:
z = 50x1 + 30x2
Esta función debe maximizarse, por lo que el modelo �nalmente es:
max z = 50x1 + 30x2
s:a: 3x1 + 5x2 � 15
5x1 + 2x2 � 10
x1; x2 � 0
3
De�nición 2: Un punto X = (x1; x2; :::; xn) es una solución factible si satisface
todas las restricciones del problema. La región factible de un problema de PL es el
conjunto de todas las soluciones factibles y se denota por Fp.
Ejemplo 2: La región factible del ejemplo anterior se obtiene gra�cando las dos
restricciones las cuales de�nen dos subespacios, posteriormente se analiza qué puntos
del plano satisfacen las desigualdades como se muestra en las �guras:
Los puntos que satisfacen la primera restricción son:
1 2 3
4
5
3
2
1
3
x 1
+5
 x
2
< 
15
Puntos que satisfacen la
desigualdad
3 x1+ 5 x2= 15
4 51 2 3
4
5
3
2
1
3
x 1
+5
 x
2
< 
15
Puntos que satisfacen la
desigualdad
3 x1+ 5 x2= 15
4 5
4
Los puntos que satisfacen la segunda restricción son:
5 x1+ 2 x2= 10
6
Puntos que satisfacen la
desigualdad
5x1+ 2x2 < 10
1 2 3 4 5
4
5
3
2
1
La intersección de estos semiespacios, junto con la restricción deno negatividad
es la región factible del problema de PL como se muestra en la �gura.
1 2 3
4
5
3
2
1
3 x1+5 x2 < 15
3 x1+ 5 x2= 15
4 5
5 x1+ 2 x2= 10
5 x1+ 2 x2 < 10
1 2 3 4 5
4
5
3
2
1
Puntos que satisfacen las dos
restricciones y la no negatividad
5
1 
_\--r-
-\ 
:::; ¡-
a - r' ~ 
--\ 
- b 
=-
-:\ 
-~ 
~ 
=1. 
--\ ...1 ...1 ..1 ...J. .... 
. . . . 
-
De�nición 3: Un vector X 0 que satisface las restricciones es una solución factible
y un vector X� que además de satisfacer las restricciones, optimiza la función objetivo
es una solución óptima.
Ejemplo 3: En el ejemplo anterior la solución óptima del problema es el punto
A =
�
20
19
; 45
20
�
y el valor de la función objetivo es z = 2350
19
:
1 2 3
4
5
3
2
1
4 51 2 3 4 5
4
5
3
2
1
A
De�nición 4: Un problema de PL P es un problema de programación lineal
entera (PLE), si alguna(s) variable(s) de decisión (x1; x2; :::; xn) de P tiene(n) la
restricción de ser entera.
Existen tres tipos de problemas en PLE.
Sean P un problema de PLE y X = (x1; x2; :::; xn) el vector de variables de
decisión de P :
� P es un problema de PLE mixto si alguna(s) componente(s) de X tienen la
restricción de ser entera(s) y alguna(s) no.
6
� P es un problema de PLE puro si todas las componentes de X tienen la res-
tricción de ser enteras.
� P es un problema de PLE binario si cada una de las componentes de X tiene
la restricción de tomar solamente los valores 0 ó 1:
Ejemplo 4: Un ejemplo de problema de PLE mixto es el siguiente: Se desea
armar una despensa con diferentes tipos de artículos (Leche en polvo, aceite, frijol,
azúcar, café, arroz), cada uno de ellos se llevan por empaque, con excepción del arroz
ya que éste es a granel; cada artículo tiene cierto bene�cio y éstos se acomodarán
en cajas con capacidad de 14kg cada una. El peso y bene�cio de cada artículo se
muestra en la siguiente tabla:
Artículo Kg por empaque Bene�cio
1. Leche en polvo 1.7 9
2. Aceite 0.9 5
3. Frijol 1 8
4. Azúcar 1 4
5. Café 0.5 4
6. Arroz a granel 8 por kg
Las variables de decisión son:
xi = Número de paquetes del tipo i, incluidos en la despensa para i = 1,2,...,5.
x6 = Cantidad de arroz a incluir en la despensa.
El modelo matemático para este problema es:
max z = 9x1 + 5x2 + 8x3 + 4x4 + 4x5 + 8x6
s. a. 1:7x1 + 0:9x2 + x3 + x4 + 0:5x5 + x6 � 14
xi � 0 i = 1; :::6 xi enteros para i = 1; :::; 5:
7
En este ejemplo las variables xi para i =1,..,5 tienen la restricción de ser enteras no
negativas y x6 puede tomar cualquier valor real no negativo.
Ejemplo 5: Un problema de PLE entera puro es el siguiente: Un camión de
SEDESOL con capacidad de 2.5 toneladas debe de ser llenado con los siguientes
artículos: maíz, frijol, azúcar y café (la unidad de medida es por sacos). Como
parte de un programa social, éstos serán transportados a poblados y vendidos a un
precio preferencial, esto es, si una persona compra el producto al camión en vez de
a cualquier otro distribuidor obtendrá un ahorró, en el siguiente cuadro se especi�ca
el peso de cada artículo y el ahorro por saco al consumidor:
Kilogramos por saco Ahorro por saco al consumidor
Maíz 10 10
Frijol 8 15
Azúcar 12 10
Café 5 7
Determinaremos con cuáles y cuántos artículos debe ser llenado el camión de tal
manera que se maximice el ahorro al consumidor. Éste es un problema de PLE puro,
ya que los sacos se cuentan por unidad (no se puede contar fracciones de saco), por
lo que se plantea de la siguiente manera:
Las variables de decisión son las siguientes:
x1 = número de sacos de maíz incluidos en el camión.
x2 = número de sacos de frijol incluidos en el camión.
x3 = número de sacos de azúcar incluidos en el camión.
x4 = número de sacos de café incluidos en el camión.
La restricción debe especi�car que el número de sacos no debe exceder la capacidad
de carga del camión; además las variables de decisión deben ser no negativas y enteras
8
ya que los sacos se cuentan por unidad, por lo que las restricciones del problema son
las siguientes,
10x1 + 8x2 + 12x3 + 5x4 � 2500
xi � 0; xi enteros para i = 1; :::; 4
La función objetivo describe el ahorro del consumidor por artículo comprado. En-
tonces es:
z = 10x1 + 15x2 + 10x3 + 7x4
Esta función se desea maximizar, por lo tanto el problema planteado como un pro-
blema de programación lineal entera es el siguiente:
max z = 10x1 + 15x2 + 10x3 + 7x4
s. a 10x1 + 8x2 + 12x3 + 5x4 � 2500
xi � 0 y xi entero para i = 1; :::; 4:
En este caso todas las variables del problema tienen la restricción de ser enteras.
Ejemplo 6: El siguiente problema es uno binario. Cinco proyectos están siendo
evaluados para un horizonte de 3 años de planeación, la siguiente tabla proporciona
las ganancias esperadas de cada proyecto y los respectivos costos anuales.
Costo en millones de pesos
Proyecto 1er año 2� año 3eraño Ganancias en millones $
1 5 1 8 20
2 4 7 10 40
3 3 9 2 20
4 7 4 1 15
5 8 6 10 30
El presupuesto disponible para invertir será de 25 millones de pesos cada año.
9
Las variables de decisión son las siguientes:
xi =
8<: 1 si el proyecto i es aceptado0 en otro caso
9=; parai = 1; 2; :::; 5:
Por lo que el problema se plantea como sigue:
max z = 20x1 + 40x2 + 20x3 + 15x4 + 30x5
s:a 5x1 + 4x2 + 3x3 + 7x4 + 8x5 � 25
x1 + 7x2 + 9x3 + 4x4 + 6x5 � 25
8x1 + 10x2 + 2x3 + x4 + 10x5 � 25
xi = 0 o 1 (i = 1; 2; :::; 5) :
De�nición 5: La relajación PL de un problema de PLE es el problema de PL que
resulta al omitir todas las restricciones enteras para las variables de decisión.
Observación 1: La región factible de un Problema de PLE está contenida en la
región factible de la relajación PL del problema entero.
Ejemplo 7: Sea
P
8>>>>>>>><>>>>>>>>:
max z = 4x1 + 3x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x1; x2 � 0
x1 y x2 enteros:
9>>>>>>>>=>>>>>>>>;
P es un problema de PLE puro, la relajación PL de P es:
P1
8>>>>><>>>>>:
max z = 4x1 + 3x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x1; x2 � 0:
9>>>>>=>>>>>;
grá�camente las regiones factibles de P y P1 se pueden observar en la siguiente
�gura:
10
2
Región Factible de P 1
1 3 5
10
8
6
4
2
12
1
3
5
Región Factible de P
4
3x1 + x2 ≤ 12
x1 + x2 ≤ 5
Observación 2: La relajación PL del problema entero es sencilla de resolver, ya
que si no se toma en cuenta la restricción de que las variables deben ser enteras, éste
se reduce a uno de PL y existen muchos métodos e�caces para obtener la solución
óptima.
Observación 3: Si se resuelve la relajación PL de un problema de PLE y se
obtiene una solución en la cual todas las variables son enteras, entonces la solución
óptima de la relajación PL será también la solución óptima del problema de PLE.
Este caso en pocas ocasiones ocurre, es por eso que existen algoritmos para llegar a
la solución óptima o una aproximación de la misma.
Observación 4. Si el problema de PL es no factible también lo es el entero.
11
• 
ITIIJ 
1.2 Problema de la mochila
El problema de la mochila es un problema de programación lineal entera y se caracte-
riza por tener sólo una restricción. Éste se re�ere a la siguiente situación: Suponga-
mos que un excursionista debe llenar una mochila de capacidad b con n artículos
diferentes, cada artículo i tiene un peso ai y un bene�cio ci. La mochila debe ser
llenada de tal manera que se maximice el bene�cio de los artículos incluidos, sujeto
a la restricción de capacidad.
Las variables de decisión son: xi que representan el número de artículos del tipo
i incluidos en la mochila para i = 1; ::; n:
Existen varias clases de problemas tipo mochila como son: �problema de la
mochila general�, �problema de la mochila general acotado� ,� problema de la
mochila binario�, �problema subset-sum� y �problema change-making�, los mode-
los matemáticos asociados a cada uno de los problemas los veremos en las siguientes
secciones.
1.2.1 Problema de la mochila general
El problema general de la mochila se expresa de la siguiente forma:
max z =
nX
i=1
cixi
s:a
nX
i=1
aixi � b
xi �0 y xi entero para i = 1; :::; n:
12
1.2.2 Problema de la mochila general acotado
El problema anterior se puede plantear de la siguiente forma: si para cada artículo i
existe una cota di; la cual nos indica que del artículo i se pueden llevar como máximo
di unidades, entonces el modelo matemático para este problema es:
max z =
nX
i=1
cixi
s:a
nX
i=1
aixi � b
0 � xi � di y xi entero para i = 1; :::; n
1.2.3 Problema change-making
Es un caso especial del problema de la mochila general acotado y surge de la condición
ci = 1 para i = 1; 2; :::; n: Por lo que el planteamiento del problema es:
max z =
nX
i=1
xi
s:a
nX
i=1
aixi � b
0 � xi � di y xi entero para i = 1; :::; n:
1.2.4 Problema de la mochila binario
Al problema de la mochila también se le pueden adicionar otras restricciones tales
que, todas las variables de decisión xi pueden tomar sólo los valores 0 ó 1, es decir,
si xi = 1 el artículo i es incluido en la mochila y si xi = 0 no es incluido. A este
planteamiento se le conoce como el problema de la mochila binario y se representa
13
de la siguiente manera:
max z =
nX
i=1
cixi
s:a
nX
i=1
aixi � b
xi =
8<: 01
9=; para i = 1; :::; n:
1.2.5 Problema subset-sum
Es un caso particular del problema de la mochila binario ya que las variables xi sólo
pueden tomar los valores 0 ó 1, la diferencia entre ambos es que ci = ai, por lo que
el modelo matemático de este problema es:
max z =
nX
i=1
aixi
s:a
nX
i=1
aixi � b
xi =
8<: 01
9=; para i = 1; :::; n:
14
Capítulo 2
Rami�cación y acotamiento
En este capítulo se tratará de un método general para resolver problemas enteros,
rami�cación y acotamiento. Este método necesita una cota superior, que es el valor
óptimo de la relajación PL del problema entero; en esta primera sección se explicará
el método de rami�car y acotar, más adelante se explicará el algoritmo para un
problema de programación lineal y en la siguiente sección se explicarán los procedi-
mientos para encontrar una cota superior de los problemas tipo mochila: general,
acotado y binario. Y en la última sección se darán algunos algoritmos de solución
para cada uno de estos problemas.
Podría pensarse que una manera natural de resolver un problema entero, sería
el redondeo, si se utiliza este método con la solución óptima de la relajación del
problema entero se presentan dos casos:
Sea Xi la solución del subproblema i y xj una componente que no tiene un valor
entero; sea [xj] la parte entera de xj.
� Si se redondea al siguiente entero, es decir, que xj = [xj]+1; y todas las demás
15
componentes de Xi se quedan iguales, la solución no sería factible ya que ésta
sería mejor que Xi; y como lo dijimos anteriormente esta es una cota superior,
por lo que implicaría que es una solución no factible.
� Si se redondea al entero anterior, es decir, xj = [xj], la solución si sería factible
pero no necesariamente óptima ya que en muchos casos por medio de diferentes
métodos se puede mejorar la solución.
Podemos concluir que el redondeo no es una técnica que sea útil para obtener
la solución óptima de un problema de PLE, es útil sólo si queremos encontrar una
solución factible y se da el caso.
2.1 Método de rami�cación y acotamiento
La técnica de Rami�cación y Acotamiento permite resolver problemas �difíciles�
aplicando métodos de solución que se han dado para problemas �fáciles�.
En la práctica, muchos de los problemas de PLE se resuelven mediante este
método, el cual encuentra la solución óptima mediante la enumeración e�ciente de
los puntos de la región factible del problema.
16
2.1.1 Técnica de rami�car y acotar
Se utilizará un ejemplo para describir la técnica de rami�cación y acotamiento. Sea
P un problema entero de la siguiente forma:
P
8>>>>>>>>>>><>>>>>>>>>>>:
max z = c1x1 + c2x2 + :::+ cnxn
s:a a11 x1 + a12 x2 + :::+ a1n xn � b1 ����R1
a21 x1 + a22 x2 + :::+ a2n xn � b2 ����R2
:::
am1x1 + am2x2 + :::+ amnxn � bm ����Rm
xi > 0 y xi enteros para i = 1; 2; :::; n:
9>>>>>>>>>>>=>>>>>>>>>>>;
La operación de rami�car procede de la siguiente manera:
Primero se obtiene la relajación PL de P , sea P1 y sea F1 la región factible de
P1, como se muestra en la �gura:
F1 Región Factible de la relajación PL
del problema entero
R1
R2
Se resuelve P1; si la solución encontrada X1 no es entera, se crean dos subproblemas
de P1, sean P2 y P3 con sus respectivas regiones factibles F2 y F3; cada subproblema
17
Pj tiene una nueva restricción (restricción de rami�cación):
xi � [xi], para P2
xi � [xi] + 1, para P3
donde [xi] es la parte entera de xi.
Esto se muestra en la siguiente �gura.
F1 Región factible de la relajación PL
del problema entero
R1
R2
F2 Región factible del problema P2
F3 Región factible del problema P3
[x1 ] [x1 ] + 1
Observación 5: La región que sólo está sombreada de la siguiente manera
corresponde a las soluciones descartadas, ya que son factibles para la relajación
PL, pero no para el problema entero, ya que tiene valores fraccionales, por lo que no
afecta eliminarlos de consideración.
Después se selecciona uno de los dos subproblemas, digamos P2 y se obtiene la
solución óptima de éste X2. A continuación se examina P3; éste también se resuelve
18
para obtener la solución óptima X3. Si las soluciones encontradas X2 y X3 no son
enteras entonces se escoge uno de los subproblemas P2 o P3 para proceder de la misma
manera que con P1, este procedimiento continúa hasta encontrar una solución óptima
para el problema P .
Todos los subproblemas Pi0s tienen la misma función objetivo que P y la misma
restricción (desigualdad lineal), la diferencia es que a los Pi0s se les aumentan algunas
restricciones de rami�cación.
Observemos que el valor óptimo de cada problema es una cota superior del valor
óptimo de los subproblemas generados a partir de él, pues la región factible de éstos
está contenida en la del primero.
Análogamente para problemas de minimización, el valor óptimo de P constituye
una cota inferior.
Todos los pasos de la rami�cación se ilustran con el siguiente árbol, en donde P1
es representado por el primer nodo y se va rami�cando de tal manera que cada rama
incide en un subproblema diferente, ya que éste tiene una restricción de rami�cación
distinta.
P1
P2 P3
P5P4 P7
P6
Pt+2Pt+1
19
2.1.2 Aspectos claves del método de rami�cación y aco-
tamiento
Si utilizamos el método de rami�cación y acotamiento, podemos �eliminar�algunos
nodos en donde ya se llegó o no llegaríamos a la solución óptima y de esta manera
se reduce el número de subproblemas a resolver.
No es necesario rami�car con respecto a un subproblema cuando:
1. El subproblema no es factible, es decir, que no cumpla la restricción de capaci-
dad.
2. El subproblema proporciona una solución en la cual todas la variables tienen
valores enteros, es decir, es una solución candidata para obtener la solución
óptima del problema entero.
3. El valor óptimo del subproblema es menor al valor óptimo en algún nodo cuya
solución es entera, es decir, el mejor candidato para z hasta este momento.
Con estos puntos se reduce el número de nodos en el árbol.
2.1.3 Algoritmo de Dakin
Dakin desarrolló un algoritmo de rami�cación y acotamiento para resolver problemas
de optimización, este algoritmo crea 2 nodos por cada nodo pendiente, es decir, si la
solución de un nodo Xl tiene una componente xj que no es entera, al primer nodo
que se crea se le asigna la restricción xj 6 [xj] y al segundo xj > [xj] + 1; cada
problema es resuelto. El procedimiento termina cuando la lista de nodos pendientes
sin etiquetar es vacía. El algoritmo de Dakin se enuncia como sigue:
20
Paso 1) Solución del problema relajado
Se resuelve la relajación PL del problema entero y obtenemos X1 y z1 = z (X1),
si xj 2 Z 8j terminamos, la solución encontrada es óptima, si no, ir al paso 2.
Paso 2) Rami�cación
Si Xi tiene una componente no entera, digamos xj, se crean dos nodos; al pro-
blema correspondiente al nodo l+1 se le agregala restricción xj � [xj] y al problema
del segundo nodo l+ 2 se le agrega la restricción xj � [xj] + 1; donde l es el número
del último nodo. Como se observa en la �gura:
i
l+1 l+2
xj ≤ [xj ] xj ≥ [xj ] + 1
Una vez resueltos los problemas de dichos nodos ir al paso 3:
Paso 3) Etiquetado
1. Si la solución encontrada es entera dicho nodo es etiquetado como �solución
candidata�.
2. Si existen nodos no etiquetados con cota menor que z(Xk); para algún nodo
Xk etiquetado como �solución candidata�, serán etiquetados como �nodo
no prometedor�.
3. Si la solución encontrada no es factible (ya que no cumple con la restricción de
capacidad) a este nodo se le asignará la etiqueta de �solución no factible�.
21
Después de haber etiquetado todos los nodos posibles ir al paso 4)
Paso 4) Inspección de nodos
1. Si todos los nodos están etiquetados y no existe alguno que tenga la etiqueta
de �solución candidata�entonces terminamos, el problema entero no tiene
solución.
2. Si todos los nodos están etiquetados y existen alguno o algunos nodos etique-
tados con �solución candidata�ir al paso 5).
3. Si existen nodos sin etiquetar, esto quiere decir que se puede seguir iterando
de estos nodos, ir al paso 2).
Paso 5) Solución óptima
El valor óptimo de la función objetivo es z(X�) = maxfz (Xi) j Xi es un nodo
etiquetado con solución candidatag la solución óptima es X�.
Ejemplo 8: Resolveremos el siguiente problema con el método de rami�cación y
acotamiento de Dakin:
P
8>>>>><>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x1; x2 � 0 y x1; x2 enteros.
9>>>>>=>>>>>;
Primero resolvemos la relajación PL de P que es:
P1
8>>>>><>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x1; x2 � 0:
9>>>>>=>>>>>;
22
La solución óptima de P1 es X1 = (72 ;
3
2
) = (3:5; 1:5) y el valor de la función objetivo
es z(X1) = 412 = 20:5: Grá�camente la región factible del problema es
1 2 3 4 5
10
8
6
4
2
12
3 x1+ x2 ≤ 12
x1 + x2 ≤ 5
F1 Región factible del
problema relajado P1
X1
X1 Solución óptima de P1
Iteración 1: Como los valores de X1 no son enteros se crean dos nodos con dos
subproblemas P2 y P3: P2 es P1 más una restricción de rami�cación
P2
8>>>>>>>><>>>>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x2 � 1
x1; x2 � 0:
9>>>>>>>>=>>>>>>>>;
La solución de P2 es X2 =
�
11
3
; 1
�
= (3:66; 1) ya que si x2 = 1 =) x1 = 113 y
z(X2) =
61
3
= 20:33
23
P3 es P1 más una restricción de rami�cación:
P3
8>>>>>>>><>>>>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x2 � 2
x1; x2 � 0:
9>>>>>>>>=>>>>>>>>;
La solución de P3 es X3 = (3; 2) y z(X3) = 19. Como todas las variables son enteras,
a este nodo se le pondrá la etiqueta de solución candidata.
Grá�camente las regiones factibles de P2 y P3 se muestran en la siguiente �gura
21 3 5
10
8
6
4
2
12
1
3
5
F1 Región Factible de P1
4
3 x1 + x2 ≤ 12
x1 + x2 ≤ 5
X1
F2 Región factible de P2
F3 Región factible de P3
Iteración 2: Como el valor de z en el nodo 2 es mayor al valor de z en el nodo
3 que es una solución candidata seguimos iterando del nodo 2 del cual saldrán
los subproblemas P4 y P5.
24
P4 es P2 más una restricción de rami�cación
P4
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x2 � 1
x1 � 3
x1; x2 � 0:
9>>>>>>>>>>>=>>>>>>>>>>>;
De P4 obtenemos la siguiente solución X4 = (3; 1) ya que si x1 = 3, entonces,
x2 = 1 y el valor de z(X4) = 17 la solución de este nodo es entera por lo que a este
nodo se le pondrá la etiqueta de solución candidata.
P5 es P2 más una restricción de rami�cación:
P5
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 5x1 + 2x2
s:a 3x1 + x2 � 12
x1 + x2 � 5
x2 � 1
x1 � 4
x1; x2 � 0:
9>>>>>>>>>>>=>>>>>>>>>>>;
La solución de este problema es X5 = (4; 0) ya que si x1 = 4, entonces, x2 = 0
y z(X5) = 20 como las variables tienen valores enteros, a este nodo lo etiquetamos
como solución candidata.
Gra�camente las regiones factibles de P4 y P5 se observan en la siguiente �gura:
25
21 3 5
10
8
6
4
2
12
1
3
5
F1 Región Factible de P1
4
3 x1 + x2 ≤ 12
x1 + x2 ≤ 5
X1
F2 Región factible de P2
F3 Región factible de P3
F5 Región factible de P5
F4 Región factible de P4
El árbol asociado a este problema es:
X1 = ( 3.5 , 1.5)
Z(X1) = 20.5
1
32
x2 ≤ 1 x2 ≥ 2
X2 = ( 3.66 , 1)
Z(X2) = 20.33
X3 = ( 3 , 2)
Z(X3) = 19
Solución candidata
4 5
x1 ≤ 3 x1 ≥ 4
X5 = ( 4 , 0)
Z(X5) = 20X4 = ( 3 , 1)
Z(X4) = 17
Solución candidataSolución candidata
Como todos los nodos estan etiquetados y existen tres nodos etiquetados como solu-
ción candidata, entonces tomamos el nodo que tiene el valor máximo de z, es
decir, z�(X�) = max f19; 17; 20g = 20, por lo tanto podemos concluir que la solución
óptima del problema es X� = (4; 0) con z�(X�) = 20:
26
• 
2.2 Método de rami�cación y acotamiento para
el problema de la mochila (Un método para
obtener una cota superior).
2.2.1 Problema general
Sea Pm un problema tipo mochila general
Pm
8>>>>>><>>>>>>:
max z =
nX
i=1
cixi
s:a
nX
i=1
aixi � b
xi � 0 y xi entero para i = 1; :::; n:
9>>>>>>=>>>>>>;
Como lo mencionamos anteriormente cuando tenemos un problema de maximización
se inicia con la solución óptima de la relajación PL de Pm, y ésta se obtiene de la
siguiente manera:
Procedimiento solución óptima Se calcula el cociente ci
ai
; i = 1; 2; :::; n; el cual
es el bene�cio por unidad incluida del artículo i y se ordena de mayor a menor, es
decir, c10
a10
� c20
a20
� ::: � cn0
an0
se tiene que el artículo 10 es del que se obtiene mayor
bene�cio, por lo que la solución óptima es x10 =
b
a10
y xi0 = 0 8i0 6= 10; donde x10 es el
número de unidades que se deben incluir del artículo 10; ya que b es la capacidad de
la mochila y a10 es el peso del artículo 10. Se puede concluir que la solución óptima
de la relajación PL de Pm es:
X =
�
0; 0; :::;
b
a10
; 0; 0; :::; 0
�
(1)
Y el valor de la función objetivo es : z(X) = c10 � ba10 :
27
2.2.2 Problema Acotado
Si Pm es un problema tipo mochila general acotado entonces Pm es de la siguiente
forma:
Pm
8>>>>>><>>>>>>:
max z =
nX
i=1
cixi
s:a
nX
i=1
aixi � b
0 � xi � di y xi entero para i = 1; :::; n:
9>>>>>>=>>>>>>;
La solución de la relajación PL del problema entero se obtiene de la siguiente manera:
Primero se realiza el procedimiento solución óptima con la salvedad de que como x10
tiene la restricción x10 6 d10, donde d10 es la cantidad máxima de unidades que se
pueden incluir del artículo 10, se tienen dos casos:
� Caso 1.- Si b
a10
� d10 ; entonces la solución óptima de la relajación PL de Pm es
x10 =
b
a10
y xi0 = 0; para i0 6= 10, es decir, la solución de la relajación PL de Pm
es X =
�
b
a
1
0
; 0; 0; ; :::; 0
�
:
Y el valor de la función objetivo es : z = c10 � ba10 :
� Caso 2.- Si b
a10
> d10, entonces x10 = d10 y b�(a10 � d10) es la capacidad marginal
de la mochila, por lo cual x20 (siguiente artículo con mejor bene�cio) tiene el
valor x20 =
b�(a10�d10 )
a20
: Si x20 6 d20 para obtener el valor de x20 se tienen 2 casos:
1. Si b�(a10�d10 )
a20
� d20 entonces la solución óptima de la relajación PL de Pm
es x10 = d10, x20 =
b�(a10�d10 )
a20
y xi0 = 0: para i0 6= 10; 20, es decir,
X =
�
d10 ;
b� (a10 � d10)
a20
; 0; :::; 0
�
y el valor de la función objetivo es :
z = c10 � d10 + c20 �
�
b� (a10 � d10)
a20
�
:
28
2. Si b�(a10�d10 )
a20
> d20 los valores óptimos de x10 y x20 son x10 = d10, x20 = d20,
y (b � [(a10 � d10) + (a20 � d20)]) es la capacidad marginal de la mochila,
por lo cual x30 (siguiente artículo con mejor bene�cio) tiene el valor x30 =
(b�[(a10�d10 )+(a20�d20 )])
a30
si x30 6 d30 ; se vuelven a tener 2 casos:
Este procedimiento se repite hasta que
24 tX
i0=1
ai0 � xi0
35 = b, donde t es el índice
más pequeño (1 < t � n) el cual satisface la expresión anterior, es decir, hasta que
se llene la mochila.
Con lo anterior se puede concluir que la solución óptima de la relajación PL de
Pm es:
X =
�
b
a10
; 0; 0; :::; 0
�
cuando a10 � d10 � b:
X =
0@d10 ; d20; :::; dt0 ; � 1a
t+1
0
�24b� tX
i0=1
ai0 � di0
35 ; 0; 0; :::; 0
1A en otro caso. (2)
2.2.3 Problema Binario
En el caso binario de la expresión (2) se tiene que di = 1 ya que di es una cota
superior de xi por lo que la solución del problema relajado de la mochila binario es:
X =
�
b
a10
; 0; 0; :::; 0
�
cuando a10 � b:
X =
0@1; 1; :::; 1; h 1
at+1
i24b� tX
i0=1
ai
35 ; 0; 0; :::; 0
1A en otro caso, (3)
donde t es el índice más pequeño (1 < t � n) el cual satisface
tX
i0=1
aj � b
29
2.3 Algoritmo de rami�cación y acotamiento para
el problema de la mochila
Una vez obtenida la cota superior del primer nodo, es decir, la cota superior para el
valor de z, se empieza a rami�car y a cada nodo se le asocia una cota superior que
es la función objetivo evaluada en la solución encontrada en él.
2.3.1 Algoritmo de Dakin ( problema general)
Dakin desarrolló un algoritmo de rami�cación y acotamiento para resolver problemas
de optimización, este algoritmo genera un árbol que inicia con un nodo asociado al
problema relajado del cual saldrán dos ramas correspondientes a los subproblemas
que tienen las restricciones xj 6 [xj] y xj > [xj]+ 1, donde xj es una componente no
entera de la solución; cada problema es resuelto. El procedimiento termina cuando la
lista de nodos sin sucesores sin etiquetar es vacía. El algoritmo de Dakin se enuncia
como sigue:
Paso 1) Solución del problema relajado
La solución óptima de la relajación PL del problema entero está dado en (1) y
obtenemos X1 y z1 = z (X1), si xj 2 Z 8j terminamos, la solución encontrada es
óptima, si no ir al paso 2.
Paso 2) Rami�cación
Sea l el nodo pendiente del cual se va a seguir iterando, sea Xl la solución de
dicho nodo; si ésta tiene una componente no entera, digamos xj, se crean dos nodos;
al problema correspondiente al nodo l + 1 se le aumenta la restricción xj � [xj] y
al problema del segundo nodo l + 2 se le agrega la restricción xj � [xj] + 1. En la
�gura se muestra lo anterior:
30
i
l+1 l+2
xj ≤ [xj ] xj ≥ [xj ] + 1
Una vez resuleto el problema de cada nodo ir al paso 3:
Paso 3) Etiquetado
Caso 1) Si la solución encontrada es entera dicho nodo es etiquetado como �solu-
ción candidata�.
Caso 2) Si existen nodos no etiquetados con cota menor que z(Xk); para algún
nodo Xk etiquetado como �solución candidata�, serán etiquetados como �nodo
no prometedor�.
Caso 3) Si la solución encontrada no es factible a este nodo se le asignará la
etiqueta de �solución no factible�.
Después de haber etiquetado todos los nodos posibles ir al paso 4).
Paso 4) Inspección de nodos
Caso 1) Si todos los nodos están etiquetados y no existe alguno que tenga la
etiqueta de �solución candidata� entonces terminamos, el problema entero no
tiene solución.
Caso 2) Si todos los nodos están etiquetados y existen alguno o algunos nodos
etiquetados con �solución candidata�entonces ir al paso 5).
Caso 3 ) Si existen nodos sin etiquetar, esto quiere decir que de esos nodos se
puede seguir iterando (rami�cando), ir al paso 2).
31
Paso 5) Solución óptima
El valor óptimo de la función objetivo es z�(X�) = maxfz (Xi) j Xi es un nodo
etiquetado con solución candidatag y la solución óptima es X�:
Ejemplo 9: Este procedimiento se ilustra con el siguiente ejemplo:
P
8>>><>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
xi � 0 y xi 2 Z para i = 1; 2; :::; 4:
9>>>=>>>;
El primer paso es resolver el problema relajado, que es el siguiente:
P1
8>>><>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x1; x2; x3; x4 � 0.
9>>>=>>>;
Primero se ordenan las variables de tal manera que cumplan:
c10
a10
� c2
0
a20
� ::: � cn
0
an0
Los cocientes ordenados son
c1
a1
6
6
= 1 4�
c40
a40
c2
a2
16
14
� 1:14 2� c20
a20
c3
a3
10
9
� 1:11 3� c30
a30
c4
a4
40
17
� 2:352 1� c10
a10
y de acuerdo al nuevo orden se les asignarán valores a las variables.
Nodo 1 Buscamos la solución óptima del problema relajado P1:
Se procede como en (1) y la solución óptima de P1 es ba10 =
40
17
= 2:35 = x4 y
xi = 0 para i 6= 4, es decir, X1 =
�
0; 0; 0; 40
17
�
= (0; 0; 0; 2:35) y el valor de la función
objetivo es z(X1) = 80017 = 47:05; como x4 es un número no entero, entonces del nodo
1 saldrán dos nodos, nodo 2 y nodo 3.
32
Nodo 2 En este nodo tenemos el siguiente problema:
P2
8>>>>><>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 2
x1; x2; x3; x4 � 0.
9>>>>>=>>>>>;
del cual obtenemos la siguiente solución:
X2 = (0; 0:42; 0; 2) y z(X2) = 46:72:
Nodo 3 Ahora el problema que debemos de resolver es el siguiente:
P3
8>>>>><>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 3
x1; x2; x3; x4 � 0.
9>>>>>=>>>>>;
con esta nueva restricción la solución al problema no es factible ya que si x4 = 3
ya no satisface la restricción de capacidad. Por lo que este subproblema queda eli-
minado, es decir, este nodo se etiquetará como �solución no factible� y ya no se
rami�ca.
1
2
3
x4 ≥ 3
x4 ≤ 2
X1=(0,0,0,2.352) z1=47.05
X2=(0,0.42,0,2) z(X2)=46.72 X3=(0,0,0,3)
Solución no factible
Como en la solución del nodo 2 existe una componente no entera se continua rami-
�cando, es decir, del nodo 2 saldrán dos ramas que son nodo 4 y nodo 5.
33
Nodo 4 En este nodo tenemos el siguiente problema:
P4
8>>>>>>>><>>>>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 2
x2 = 0
x1; x2; x3; x4 � 0.
9>>>>>>>>=>>>>>>>>;
La solución de P4 es X4 = (0; 0; 23 ; 2) = (0; 0; 0:66; 2) y z(X4) =
140
3
= 46:6:
Nodo 5 En este nodo tenemos el problema:
P5
8>>>>>>>><>>>>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 2
x2 � 1
x1; x2; x3; x4 � 0:
9>>>>>>>>=>>>>>>>>;
del cual tenemos la solución X5 = (0; 1; 0; 2617) = (0; 1; 0; 1:52) y z(X5) =
792
17
= 46:58:
El árbol correspondiente hasta el nodo 5 se muestra en la siguiente �gura:
x2 ≥ 1
4 5
x2 = 0
X5=(0,1,0,1.52) z( X5 )=46.4
1
2
3
x4 ≥ 3
x4 ≤ 2
X1=(0,0,0,2.352) z1=47.05
X2=(0,0.42,0,2) z(X2)=46.72 X3=(0,0,0,3)
Solución no factible
X4=(0,0,0.66, 2) z( X4 )= 46.6
Como los nodos 4 y 5 tienen una componente no entera, entonces, de estos salen
dos ramas. En la siguiente iteración se rami�cará del nodo 4 ya que el valor de z
es mayor que la del nodo 5.
34
Nodo 6 Tenemos el siguiente problema:
P6
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 2
x2 = 0
x3 = 0
x1; x2; x3; x4 � 0.
9>>>>>>>>>>>=>>>>>>>>>>>;
del cual tenemos la solución X6 = (1; 0; 0; 2) y z(X6) = 46; como todas las compo-
nentes de X son enteras este nodo se etiquetará como �solución candidata�.
Nodo 7 Tenemos el siguiente problema:
P7
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 6x1 + 16x2 + 10x3 + 20x4
s.a 6x1 + 14x2 + 9x3 + 17x4 � 40
x4 � 2
x2 = 0
x3 � 1
x1; x2; x3; x4 � 0.
9>>>>>>>>>>>=>>>>>>>>>>>;
del cual obtenemos la siguiente solución X7 =
�
0; 0; 1; 31
17
�
= (0; 0; 1; 1:823) y
z(X7) = 46
8
17
= 46:47:
El árbol correspondiente hasta esta iteración se muestra en la siguiente �gura:
6 7
x3 ≥ 1x3 =0
x2 ≥ 1
4 5
x2 = 0
X5=(0,1,0,1.52) z( X5 )=46.4
1
2
3
x4 ≥ 3
x4 ≤ 2
X1=(0,0,0,2.352) z1=47.05
X2=(0,0.42,0,2) z(X2)=46.72 X3=(0,0,0,3)
Solución no factible
X4=(0,0,0.66, 2) z( X4 )= 46.6
X6 =(1,0,0,2) z( X6 )=46
Sol. Candidata
X7=(0,0,1,1.823)
z( X7 )=46.47
Nodo no prometedor
35
A partir de esta �gura se puede concluir que la solución óptima es la que está asociada
con el nodo 6 que es X6 = (1; 0; 0; 2) y z(X6) = 46 ya que la función objetivo de
los dos nodos restantes es de 46.588 (nodo 5) y 46.47 (nodo 7), esto quiere decir
que si de alguno de estos dos nodos obtenemos otra solución candidata el valor
máximo de z será 46. Pues los coe�cientes de las variables en z son enteros.
Si lo que se desea es obtener todas las soluciones óptimas, entonces se sigue rami-
�cando, obteniendo el siguiente árbol del cual obtenemos las siguientes soluciones:
X6 = (1; 0; 0; 2) con z(X6) = 46 (nodo6) y X12 = (0; 1; 1; 1) con z(X12) = 46
(nodo 12).
6 7
x3 ≥ 1x3 =0
x2 ≥ 1
4 5
x2 = 0
X5=(0,1,0,1.52) z( X5 )=46.4
1
2
3
x4 ≥ 3
x4 ≤ 2
X1=(0,0,0,2.352) z1=47.05
X2=(0,0.42,0,2) z(X2)=46.72 X3=(0,0,0,3)
Solución no factible
X4=(0,0,0.66, 2) z( X4 )= 46.6
X6 =(1,0,0,2) z( X6 )=46
Sol. Candidata
X7=(0,0,1,1.823)
z( X7 )=46.47
10 11
8
9
x4 ≥ 2
x4 ≤ 1
x4 ≥ 2
x4 ≤ 1
X8=(0,1.642,0,1) z(X8)=46.27
X10=(0,0,2.55,1)
z(X10)=45.5
Sol. No prometedora
x2 ≥ 2
x2 ≤ 1
12
13
X12=(0,1,1,1) z(X12)=46
Sol. Candidata
X9=(0,1,0,2)
Solución no factible
X11=(0,0,1,2)
Solución no factible
X13=(0,2,0,0.705) z(X13)=46.11
14
15
x4 ≥ 1
X15=(0,2,0,1)
Sol. No Factible
x4 = 0
X14=(0,2,1.333,0) z(X14)=45.333
Sol. No prometedora
36
2.3.2 Algoritmo para el problema acotado
Para el caso en que las variables sean acotadas, se resuelve de la siguiente manera.
Paso 1) Solución del problema relajado
Se resuelve la relajación PL del problema entero como en (2) y llegamos a la
solución X1 y z1 = z (X1), si xj 2 Z 8j terminamos, la solución encontrada es
óptima, si no ir al paso 2.
Paso 2) Rami�cación
Sea l el nodo pendiente del cual se va a seguir iterando, sean Xl la solución de
dicho nodo y xj una componente no entera de dicha solución, se crean d+ 1 nodos:
l + 1; l + 2;...l + d + 1 (donde d es la cota de xj), a cada nodo se le agrega una
restricción diferente, al problema del nodo l + 1 se le asigna la restricción xj = 0;
al nodo l + 2 la restricción xj = 1; al nodo l + 3 la restricción xj = 2 y al nodo
l + (d+ 1) la restricción xj = d. Esto se muestra en la �gura.
i
l+1
l+(d+1)
xj =d
xj =0
l+2
l+k
xj =k-1xj=1
. . .
. . 
.
i
l+1
l+(d+1)
xj =d
xj =0
l+2
l+k
xj =k-1xj=1
. . .
. . 
.
Los problemas de estos nodos son resueltos como en (2) después ir al paso 3).
Los Pasos 3, 4 y 5) son los mismos que en el algoritmo anterior.
37
Ejemplo 10: Este procedimiento se ilustra con el siguiente ejercicio:
P
8>>>>><>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
xi � 0 y enteros para i = 1; 2; :::; 4:
9>>>>>=>>>>>;
Nodo 1 La relajación del problema P es:
P1
8>>>>><>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
xi � 0 para i = 1; 2; :::; 4:
9>>>>>=>>>>>;
Se procede como en (2), primero se ordenan las variables de tal manera que cumplan:
c10
a10
� c2
0
a20
� ::: � cn
0
an0
:
Los cocientes ordenados son:
c1
a1
18
15
= 1:2 1�
c10
a10
c2
a2
14
12
� 1:16 2� c20
a20
c3
a3
8
7
� 1:14 3� c30
a30
c4
a4
4
4
= 1 4�
c40
a40
y la solución óptima de P1 es X1 = (1; 1:5; 0; 0) con z(X1) = 39, como no es entera
se rami�cará de este nodo.
Nodo 2 Al subproblema P2 le corresponde la restricción x2 = 0; por lo que el
problema se expresa como sigue:
P2
8>>>>>>>><>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 0
xi � 0 para i = 1; 2; :::; 4:
9>>>>>>>>=>>>>>>>>;
38
la solución es X2 = (1; 0; 187 ; 0) = (1; 0; 2:571; 0) con z(X2) = 38
4
7
= 38:571:
Nodo 3 El subproblema P3 tiene la siguiente restricción x2 = 1; por lo que el
problema se expresa como sigue:
P3
8>>>>>>>><>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 1
xi � 0 para i = 1; 2; :::; 4:
9>>>>>>>>=>>>>>>>>;
la solución de P3 es X3 =
�
1; 1; 6
7
; 0
�
= (1; 1; 0:857; 0) con z(X3) = 3867 = 38:857:
Nodo 4 El subproblema P4 tendrá la restricción x2 = 2; por lo que el problema
se expresa como sigue:
P4
8>>>>>>>><>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 2
xi � 0 para i = 1; 2; :::; 4:
9>>>>>>>>=>>>>>>>>;
la solución es X4 =
�
9
15
; 2; 0; 0
�
= (0:6; 2; 0; 0) con z(X4) = 3845 = 38:8. Estas
rami�caciones se ilustran con el siguiente árbol :
1
2
4
X1 = (1, 1.5, 0, 0)
z (X1) = 39X 2= (1, 0, 2.571, 0)
z (X 2) =3 8.57
x2 =0
3
x2 =2
x2 =1
X 3 = (1, 1, 0.857, 0)
z (X 3) = 38.85
X4 = (0.6, 2, 0, 0)
z (X4) = 38.8
Se rami�cará del nodo 3 ya que este tiene la mejor cota, como x3 es la variable que
no es entera se le dan los valores de x3 = 0, x3 = 1, x3 = 2 y x3 = 3 para los nodos
5, 6, 7 y 8 respectivamemte.
39
Nodo 5 El subproblema P5 tiene la siguiente restricción x3 = 0; por lo que el
problema se expresa como sigue:
P5
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 1
x3 = 0
xi � 0 para i = 1; 2; :::; 4:
9>>>>>>>>>>>=>>>>>>>>>>>;
la solución es X5 =
�
1; 1; 0; 6
4
�
= (1; 1; 0; 1:5) con z(X5) = 38.
Nodo 6 El subproblema P6 tiene la siguiente restricción x3 = 1; por lo que el
problema se expresa como sigue:
P6
8>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a
15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 1
x3 = 1
xi � 0
para i = 1; 2; :::; 4
9>>>>>>>>>>>>>>>>>=>>>>>>>>>>>>>>>>>;
la solución es X6 =
�
14
15
; 1; 1; 0
�
= (0:933; 1; 1; 0) con z(X6) = 38:8.
Nodo 7 El subproblema P7 tiene la siguiente restricción x3 = 2; por lo que el
40
problema se expresa como sigue:
P7
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 1
x3 = 2
xi � 0 para i = 1; 2; :::; 4
9>>>>>>>>>>>=>>>>>>>>>>>;
la solución es X7 =
�
7
15
; 1; 2; 0
�
= (0:466; 1; 2; 0) con z(X7) = 38:4.
Nodo 8 El subproblema P8 tiene la siguiente restricción x3 = 3; por lo que el
problema se expresa como sigue:
P8
8>>>>>>>>>>><>>>>>>>>>>>:
max z = 18x1 + 14x2 + 8x3 + 4x4
s.a 15x1 + 12x2 + 7x3 + 4x4 � 33
x1 � 1 x2 � 2 x3 � 3 x4 � 2
x2 = 1
x3 = 3
xi � 0 para i = 1; 2; :::; 4:
9>>>>>>>>>>>=>>>>>>>>>>>;
la solución es X8 = (0; 1; 3; 0) con z(X8) = 38, la cual es entera por lo que se
etiquetará este nodo como solución candidata, se puede observar que todos lo nodos
colgantes tienen como cota 38.57 (nodo 2), 38 (nodo 5), 38.79 (nodo 6), 38.39
(nodo 7) y 38.8 (nodo 4); esto quiere decir que de estos nodos no se obtendrá un
mejor valor para la función objetivo, ya que los coe�cientes son enteros, por esta
razón se concluye que la solución óptima para el problema es: X8 = (0; 1; 3; 0) con
z(X8) = 38:
41
1
2
4
X1 = (1, 1.5, 0, 0)
z (X1) = 39X 2= (1, 0, 2.571, 0)
z (X 2) =3 8.57
Nodo no
prometedor
x2 =0
3
x2 =2
x2 =1
X 3 = (1, 1, 0.857, 0)
z (X 3) = 38.85
X4 = (0.6, 2, 0, 0)
z (X4) = 38.8
Nodo no
prometedor
8
7
6
5
X5=(1, 1, 0, 1.5)
z(X5)=38
Nodo no
prometedor
X8=(0, 1, 3, 0)
z(X8)=38
Solución
Candidata
x3 =0
x3 =1
x3 =2
x3 =3
X6=(0.933, 1, 1, 0)
z(X6)=38.8
Nodo no
prometedor
X7=(0.466, 1, 2, 0)
z(X7)=38.4 Nodo
no prometedor
Si lo que se desea es obtener todas las soluciones óptimas para el problema se procede
análogamente con los demás nodos y el árbol �nal es:
X16=(0.8, 0, 3,0)
z(X16)=38.4
14
13
15
18
x1 =0
9
10
x1 =0
x1 =1
X10=(1, 2, 0, 0)
Solución no
factible
X9=(0, 2, 1.285, 0)
z(X9)=38.28
x3 =1
1
2
4
X1 = (1, 1.5, 0, 0)
z (X1) = 39X 2= (1, 0, 2.571, 0)
z (X 2) =3 8.57
x2 =0
3
x2 =2
x2 =1
X 3 = (1, 1, 0.857, 0)
z (X 3) = 38.85
X4 = (0.6, 2, 0, 0)
z (X4) = 38.8
8
7
6
5
X5=(1, 1, 0, 1.5)
z(X5)=38
Nodo no
prometedor
X8=(0, 1, 3, 0)
z(X8)=38
Solución
Candidata
x3 =0
x3 =1
x3 =2
x3 =3
X6=(0.933, 1, 1, 0)
z(X6)=38.8
X7=(0.466, 1, 2, 0)
z(X7)=38.4
x3 =0
16
x3 =1
x3 =2
x3 =3
X13=(1, 0, 0, 2)
z(X13)=26
Solución
Candidata
X14=(1, 0, 1, 2)
z(X14)=34
Solución
Candidata
X15=(1, 0, 2, 1)
z(X15)=38
Solución
Candidata
17
X17=(0, 0, 3, 2)
z(X17)=32
Nodo no
prometedor
X18=(1, 0, 3, 0)
Solución no
factible
x1 =0
x1 =1
11
12
x1 = 1X11=(0, 1, 1, 2)
z(X11)=30
Nodo no
prometedor
X12=(1, 1, 1, 0)
Solución no
factible
19 20
x1 =0
x1 = 1
X19=(0, 1, 2, 1.75)
z(X19)=37
Nodo no
prometedor
X20=(1, 1, 2, 0)
Solución no
factible
21
X21=(0, 2, 0, 2)
z(X21)=36
Nodo no
prometedor
x3 =0
22
23
X23=(0, 2, 2, 0)
Solución no
factible
24
X24=(0, 2, 3, 0)
Soluciónno
factiblex3 =2
x3 =3
X22=(0, 2, 1, 0.5 )
z(X22)=38
Nodo no prometedor
42
Se observa que existen 5 nodos con etiqueta de solución candidata, por lo que
z�(X�) = max f26; 34; 38; 32; 38g = 38; como hay dos nodos con ese valor podemos
concluir que existen dos soluciones óptimas y son las correspondientes a los nodos
8 y 15, es decir, X8 = (0; 1; 3; 0) y X15 = (1; 0; 2; 1) con z�(X�) = 38:
2.3.3 Algoritmo de Balas (Para el Problema Binario de la
Mochila)
Egon Balas desarrolló un método para resolver problemas de optimización binarios
(0 - 1), el cual sólo se aplica a problemas con coe�cientes no negativos, sin embargo
cualquier problema binario puede convertirse a uno de esta forma ya que basta con
cambiar la(s) variable(s) xi con ci < 0 por xi0 = 1 � xi. Este método utiliza rami-
�cación y acotamiento para obtener la solución óptima del problema, la diferencia
con los métodos anteriores es que todos los nodos (subproblemas) tienen una solución
entera aunque no sea factible, esto es por que se le asigna el valor de 1 a todas las
variables del problema, siempre y cuando se trate de un problema de maximización
(es decir, mete todo en la mochila), si esta solución es factible, entonces, es la óptima,
en otro caso, se procede a rami�car quitando el artículo del cual se obtiene menos
rendimiento y así hasta llegar a una solución factible, es decir, se parte de una solución
óptima que en muchos casos no es factible y con �rami�cación y acotamiento� se
intenta obtener la factibilidad. Las variables del problema por ser binarias, sólo
tienen el valor de 0 y 1, éstas son asignadas a los conjuntos W (variables �jas con
valor uno), V (variables �jas con valor cero) y un tercer conjunto F que tendrá a
las variables libres, que en un principio todas valen uno, es decir, los conjuntos V y
W son los que guardan las modi�caciones que se les vayan haciendo a las variables
para hacer factible la solución óptima obtenida en cada nodo (en cada asignación
de W). Cada nodo tiene una partición diferente de los conjuntos anteriores, también
tiene dos cotas, una para la función objetivo � y otra para la capacidad �. Todo el
43
procedimiento se desarrolla con el siguiente algoritmo:
Algoritmo:
Inicialización: Se de�nen tres conjuntos para el primer nodo W, V y F de la
siguiente manera:
Conjunto de variables �jas con valor 1: W = fxi j xi = 1 para i = 1; 2; :::; ng.
Conjunto de variables �jas con valor 0: V = fxi j xi = 0 para i = 1; 2; :::; ng.
Conjunto de variables libres, con valor 1 temporalmente.:
F = fxi j xi es variable libre i = 1; 2; :::; ng
Por ser un problema de maximización todas las variables son asignadas al conjunto
F con el valor de uno (X0 = (1; 1; :::; 1)) y los conjuntos W y V no tienen elementos,
es decir,
W = ;
V = ;
F = fx1;x2; :::; xng :
Si X0 es factible, entonces es la solución óptima, pues ci � 0 para i = 1; :::; n y el
valor óptimo de la función objetivo es z(X0) =
nX
i=1
ci. En otro caso, como la solución
encontrada no es factible, se crea una variable r la cual tendrá asignado el número
del nodo generado.
r = 1, ir al paso 1.
Paso 2) Cotas
Se generan dos nodos para los cuales se obtienen dos cotas para cada uno, una
que involucra el valor de la función objetivo y la otra la capacidad marginal de la
mochila, se procede de la siguiente manera:
44
Si cm = min fcij xi 2 F para i = 1; :::ng ; entonces la cota superior del valor de la
función objetivo es � =
 X
xi2W
ci +
X
xi2F
ci
!
� cm y la cota de capacidad es � =
nX
i=1
ai
tal que xi = 1. Sea xm la variable correspondiente al coe�ciente cm, la partición de
los conjuntos W;V y F se de�ne como sigue:
� Nodo r + 1 : Al subproblema r+1 se le agrega la restricción xm = 1; entonces:
F = F � fxmg
W = W [ fxmg
V = V:
� Nodo r + 2 : Al subproblema r+2 se le agrega la restricción xm = 0; entonces:
F = F � fxmg
W = W
V = V [ fxmg
r = r + 2 (contador de nodos).
Paso 3) Etiquetado
Para etiquetar los nodos es necesario comparar las dos cotas de cada nodo con
las demás. Empezando por �:
� Si � 6 b, terminamos de rami�car de este nodo (ya que la solución correspon-
diente a este nodo, ya es factible), existen dos casos:
Caso 1) Si F 6= ;, es decir, V [W 6= fx1; x2; :::; xng entonces:
45
W = fW [ fxigj xi 2 Fg y V = V y este nodo es etiquetado como �solución
candidata�.
Caso 2) Si F = ; quiere decir que todas las variables han sido asignadas a los
conjuntosW y V , es decir, V [W = fx1; x2; :::; xng; por lo que también es etiquetado
como �solución candidata�.
� Si � > b; entonces se tienen tres casos:
Caso 1) Si existen nodos colgantes no etiquetados y � � z(Xk); donde Xk es el
nodo que tiene la cota más grande de todos los nodos etiquetados como �solución
candidata�, entonces serán etiquetados como �nodo no prometedor�.
Caso 2) Si existen nodos colgantes sin etiquetar y � > z(Xk), donde Xk es el
nodo que tiene la cota más grande de todos los nodos etiquetados como �solución
candidata�, se toma el que tiene la mejor cota para la función objetivo e ir al paso
2.
Caso 3) Si todos los nodos están etiquetados, entonces ir al paso 4.
Paso 4) Solución óptima
El valor óptimo de la función objetivo es z�(X�) = maxfz (Xi) j Xi es un nodo
etiquetado con solución candidatag y la solución óptima es X�:
Ejemplo 11: Este algoritmo se ilustra con el siguiente ejemplo:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
xi = f0; 1g para i = 1; 2; 3; 4; 5:
Nodo 1 Inicialización: r = 1
F = fx1; x2; x3; x4; x5g
46
W = ?
V = ?
� =
 X
xi2W
ci +
X
xi2F
ci
!
� cm = (0 + 170)� 10 = 160
� = 21
Nodo 2 Como la solución del nodo 1 no es factible y cm = c5 = 10 y xm = x5,
entonces a este nodo le corresponde la restricción x5 = 1 :
F = F � fx5g = fx1; x2; x3; x4g
W = W [ fx5g = fx5g
V = V = ?
� =
 X
xi2W
ci +
X
xi2F
ci
!
� cm = (10 + 160)� 14 = 156
� = 21:
Nodo 3 A este nodo le corresponde la restricción x5 = 0 :
F = F � fx5g = fx1; x2; x3; x4g
W = W = ?
V = V [ fx5g = fx5g
� =
 X
xi2W
ci +
X
xi2F
ci
!
� cm = 0 + 160� 14 = 146
� = 19.
Estas iteraciones se ilustran con el siguiente árbol:
47
1
[160]
α=21
32
[156] [146]
α=19α=21
x5=1
x5=0
W = ø
V = ø
W = {x5 }
V = ø W = ø
V = {x5 }
Si procedemos análogamente obtenemos el siguiente árbol:
W = {x5, x3, x4, x2 }
V = ø
1
W = ø
V = ø
[160]
α=21
32
[156] [146]
α=19α=21
W = ø
V = {x5 }
W = {x5 }
V = ø
54
[152] [138]
α=19α=21
W = {x5, x3 }
V = ø
W = {x5 }
V = {x3 }
6
[122]
α=21
W = {x5 , x3 , x4 }
V = ø
[108]
α=19
W = {x5, x4}
V = {x3 }
7
[104]
α=18
W = {x5, x3 }
V = { x4 }
13
[90] W = {x5 }
V = {x3 , x4}
α=16
1716
α=21 α=15
α=18 α=12
[90] [42]
[76] [24]
W = {x5, x3 }
V = {x4, x2 }
W = {x5, x3, x2 }
V = { x4 }
W = {x5, x3, x4 }
V = { x2}
x5=0
x5=1
x4=1
x3=1
x2=1
x4 =1
x2=1
x2=0 x2=0
x4 =0
x3=0
x4=0
Nodo no
prometedor
W = {x5 ,x4,x2}
V = {x3 }
W = {x5, x4}
V = {x3, x2}
12
20
21x2=1
x2=0
[21]
[76]
α=19
α=13
Nodo no
prometedor
Nodo no
prometedor
Nodo no
prometedor
Nodo no
prometedor
Nodo no
prometedor
Nodo no
prometedor
22 23
48
3
W = ø
V = {x5 }
[146]
α=19
9
8
[142] [128]
α=17
α=19
W = ø
V = {x5, x3 }
W = {x3 }
V = {x5 }
[112] [94]
α=16α=19
W = {x3, x4 }
V = {x5 }
W = {x3 }
V = {x5, x4 }
[80]
α=19
W = {x3 , x4 , x2 }
V = {x5 }
[98] α=14
W = {x4}
V = {x5 , x3}
[32]
W = {x3, x4 }
V = {x5 , x2 }
15
[80]
W = ø
V = {x5, x3, x4 }
α=17
α=13
x3 =0
x3 =1
x2=1
x4=1
x2=0
x4=0
Nodo no
prometedor
W = {x4,x2}
V = {x5, x3}
V = {x5, x3, x2 }
W = { x4 }
14
24
25x2 =1
x2=0
[18]
[66]
α=17
α=11
Solución Candidata
X = (1, 0, 0, 1, 0) y z = 98
Nodo no
prometedor
Nodo no
prometedor
Nodo no
prometedor
x4=1
x4 =0
Nodo no
prometedor
18
19
10 11
Finalmente podemos concluir que la solución óptima es: X = (1; 0; 0; 1; 0) con el
valor óptimo: z�(X) = 98 en el nodo 25.
2.3.4 Algoritmo para el problema binario
Si consideramos el problema en el cual cada variable xj sólo puede tomar los valores
de 0y 1, entonces las restricciones xj > 0 y xj 6 1 son equivalentes a xj = 0 y xj = 1
respectivamente.
Paso1) Solución del problema relajado
Se resuelve la relajación PL del problema entero como en la sección 2:1:3 y
llegamos a la solución X1 y z1 = z (X1), si xj = 0 o xj = 1 8j terminamos, la
solución encontrada es óptima, si no ir al paso 2.
Paso2) Rami�cación
Sean l el nodo pendiente del cual se va a seguir iterando, Xl la solución de dicho
nodo y xj una componente tal que 0 < xj < 1; donde i es el número de nodo y j es
49
el lugar de la componente que tiene el valor fraccional, se crean dos nodos, el primero
es el nodo l + 1 al que se le introduce la restricción xj = 0, y al segundo l + 2 se le
agrega la restricción xj = 1; como se muestra en la �gura.
i
l+1 l+2
xj = 1
xj = 0
El problema lineal de cada nodo se resuelve, después ir al paso 3:
Paso 3) Etiquetado
Caso1) Si la solución encontrada es una solución entera dicho nodo es etiquetado
como �solución candidata�.
Caso 2) Si existen nodos no etiquetados con cota menor que z(Xk); para algún
nodo Xk etiquetado como �solución candidata�, serán etiquetados como �nodo
no prometedor�.
Caso3) Si la solución encontrada no es factible, a este nodo se le asignará la
etiqueta de �solución no factible�.
Después de haber etiquetado todos los nodos posibles ir al paso 4).
Paso 4) Inspección de nodos
Caso1) Si todos los nodos están etiquetados y no existe alguno que tenga la
etiqueta de �solución candidata� entonces terminamos, el problema entero no
tiene solución.
Caso2) Si todos los nodos están etiquetados y existen alguno o algunos nodos
50
etiquetados con �solución candidata�ir al paso 5).
Caso3) Si existen nodos sin etiquetar, esto quiere decir que de ellos se puede
seguir iterando (rami�cando), ir al paso 2).
Paso 5) Solución óptima
El valor óptimo de la función objetivo es z�(X�) = maxfz (Xj) j Xj es un nodo
etiquetado con solución candidatag y la solución óptima es X�:
Ejemplo 12:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
xi = f0; 1g 8i 2 f1; 2; :::; 7g :
Nodo 1 Resolvemos el problema relajado que es el siguiente:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
xi � 0 y xi � 1 8i 2 f1; 2; :::; 7g :
La solución óptima para el problema relajado es:
X1 =
�
1
3
; 0; 0; 1; 1; 0; 1
�
= (0:333; 0; 0; 1; 1; 0; 1) y z(X1) = 221:
Como tenemos un valor en X 1 que es fraccional, debemos rami�car desde este
nodo.
Nodo 2 En este nodo tenemos el mismo problema que en el nodo 1 más una
restricción de rami�cación que es x1 = 0 y el problema queda de la siguiente manera:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
51
del cual obtenemos la solución:
X2 =
�
1; 1
4
; 0; 1; 1; 0; 1
�
= (1; 0:25; 0; 1; 1; 0; 1) y z(X2) = 220:
Nodo 3 Al problema de este nodo se le agrega la restricción x1 = 1 :
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
del que obtenemos la solución X3 =
�
1; 0; 0; 1
3
; 1; 0; 1
�
= (1; 0; 0; 0:333; 1; 0; 1) y
z(X3) = 219:
Esto se ilustra con la siguiente �gura:
1
2
3
X1=(0.333, 0, 0, 1, 1, 0, 1)
z(X1)=221
X2=(0, 0.25, 0, 1, 1, 0, 1)
z(X2)=220 X3=(1, 0, 0, 0.333, 1, 0, 1)
z(X3)=219
x1 =0
x1=1
Rami�camos el nodo 2 porque tiene la cota mayor.
Nodo 4 En este nodo se tiene el mismo problema que en el 2 más una restri-
cción de rami�cación que es x2 = 0 por lo que el problema nos queda de la siguiente
manera:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
la solución es X4 =
�
0; 0; 1
3
; 1; 1; 0; 1
�
= (0; 0; 0:333; 1; 1; 0; 1) y z (X4) = 220.
52
Nodo 5 A este nodo se le agrega la restricción de x2 = 1 :
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
del que obtenemos la solución X5 = (0; 1; 0; 0; 1; 0; 1) y z (X5) = 214; a este nodo
lo etiquetamos con �solución candidata�, porque todos los elementos de X son
enteros.
Como no existe algún nodo con etiqueta menor que la del nodo 5 implica que de
los nodos 4 y 3 es posible seguir rami�cando, ahora vemos qué nodo tiene la cota
máxima y es el nodo 4, por lo que se rami�cará a partir de éste.
4
5
X4=(0, 0, 0.333, 1, 1, 0, 1)
z(X4)=220
X5=(0, 1, 0, 0, 1, 0, 1)
z(X5)=214
Sol. Candidata
x2 =0 x2=1
1
2
3
X1=(0.333, 0, 0, 1, 1, 0, 1)
z(X1)=221
X2=(0, 0.25, 0, 1, 1, 0, 1)
z(X2)=220 X3=(1, 0, 0, 0.333, 1, 0, 1)
z(X3)=219
x1 =0
x1=1
Nodo 6 Es el mismo problema que el del nodo 4 más la restricción x3 = 0 :
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 0
x3 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
53
obtenemos X6 =
�
0; 0; 0; 1; 1; 1
13
; 1
�
= (0; 0; 0; 1; 1; 0:076; 1) y z (X6) = 219:
Nodo 7 En este nodo tenemos el siguiente problema en el cual se ha agregado la
restricción x3 = 1 :
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s:a
3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 0
x3 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
obtenemos X7 =
�
0; 0; 1; 1
3
; 1; 0; 1
�
= (0; 0; 1; 0:333; 1; 0; 1)) y z (X7) = 216:
El siguiente árbol ilustra las rami�caciones anteriores:
6
7
X8=(0, 0, 0, 1, 1, 0.076, 1)
z(X8)=219
X7=(0, 0, 1, 0.333, 1, 0, 1)
z(X7)=216
x3 =0
x3=1
4
5
X4=(0, 0, 0.333, 1, 1, 0, 1)
z(X4)=220
X5=(0, 1, 0, 0, 1, 0, 1)
z(X5)=214
Sol. Candidata
x2 =0 x2=1
1
2
3
X1=(0.333, 0, 0, 1, 1, 0, 1)
z(X1)=221
X2=(0, 0.25, 0, 1, 1, 0, 1)
z(X2)=220 X3=(1, 0, 0, 0.333, 1, 0, 1)
z(X3)=219
x1 =0
x1=1
Como los nodos 6 y 3 tienen la misma cota superior, rami�camos del nodos 3 .
Nodo 8 Se resolverá el mismo problema que en el nodos 3 más la restricción de
54
rami�cación x4 = 0:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s:a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 1
x4 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
obtenemos X8 =
�
1; 1
4
; 0; 0; 1; 0; 1
�
= (1; 0:25; 0; 0; 1; 0; 1) y z (X8) = 217:
Nodo 9 La restricción de rami�cación de este nodo es x4 = 1; por lo que el
problema a resolver es:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 1
x4 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
obtenemos X9 =
�
1; 0; 0; 1; 13
15
; 0; 1
�
= (1; 0; 0; 1; 0; 866; 0; 1) y z (X9) = 217:
9
8
X8=(1, 0.25, 0, 0, 1, 0, 1)
z(X8)=217
X9=(1, 0, 0, 1, 0.866, 0, 1)
z(X9) = 217
x4 = 0 x4=1
6
7
X8=(0, 0, 0, 1, 1, 0.076, 1)
z(X8)=219
X7=(0, 0, 1, 0.333, 1, 0, 1)
z(X7)=216
x3 =0
x3=1
4
5
X4=(0, 0, 0.333, 1, 1, 0, 1)
z(X4)=220
X5=(0, 1, 0, 0, 1, 0, 1)
z(X5)=214
Sol. Candidata
x2 =0 x2=1
1
2
3
X1=(0.333, 0, 0, 1, 1, 0, 1)
z(X1)=221
X2=(0, 0.25, 0, 1, 1, 0, 1)
z(X2)=220 X3=(1, 0, 0, 0.333, 1, 0, 1)
z(X3)=219
x1 =0
x1=1
Como la cota del nodo 6 es mayor a la de los nodos 7, 8 y 9 elegimos al nodo 6
para seguir rami�cando.
55
Nodo 10 En este nodo tenemos el mismo problema del nodo 6 más una restri-
cción de rami�cación x6 = 0 y el problema a resolver es:
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 0
x3 = 0
x6 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
obtenemos X10 = (0; 0; 0; 1; 1; 0; 1) y z (X10) = 217; este nodo lo etiquetamos como
�solución candidata�.
Nodo 11 Le agregamos la restricción x6 = 1 :
max z = 12x1 + 12x2 + 9x3 + 15x4 + 90x5 + 26x6 + 112x7
s.a 3x1 + 4x2 + 3x3 + 3x4 + 15x5 + 13x6 + 16x7 � 35
x1 = 0
x2 = 0
x3 = 0
x6 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 7g :
obtenemos X11 =
�
0; 0; 0; 0; 6
15
; 1; 1
�
= (0; 0; 0; 0; 0:4; 1; 1) y z (X11) = 174:
Como elvalor de la función objetivo del nodo 10 es entera y es mayor o igual a
la de los nodos sin etiquetar, esto quiere decir que la solución obtenida en este nodo
es óptima ya que si se sigue rami�cando se obtendrían soluciones cuyo valor de la
función objetivo sería menor a 217, ya que los coe�cientes son enteros. Por lo tanto
X� = (0; 0; 0; 1; 1; 0; 1) y z� (X�) = 217 es óptima. El árbol asociado a este problema
es el siguiente:
56
10 11
X10=(0, 0, 0, 1, 1, 0, 1)
z(X10)=217
Solución candidata
X11=(0, 0, 0, 0, 0.4, 1, 1)
z(X11)=174
Nodo no prometedor
x6 =0
x6=1
9
8
X8=(1, 0.25, 0, 0, 1, 0, 1)
z(X8)=217
X9=(1, 0, 0, 1, 0.866, 0, 1)
z(X9) = 217
x4 = 0 x4=1
6
7
X8=(0, 0, 0, 1, 1, 0.076, 1)
z(X8)=219
X7=(0, 0, 1, 0.333, 1, 0, 1)
z(X7)=216
x3 =0
x3=1
4
5
X4=(0, 0, 0.333, 1, 1, 0, 1)
z(X4)=220
X5=(0, 1, 0, 0, 1, 0, 1)
z(X5)=214
Sol. Candidata
x2 =0 x2=1
1
2
3
X1=(0.333, 0, 0, 1, 1, 0, 1)
z(X1)=221
X2=(0, 0.25, 0, 1, 1, 0, 1)
z(X2)=220 X3=(1, 0, 0, 0.333, 1, 0, 1)
z(X3)=219
x1 =0
x1=1
Consideremos otro ejemplo:
Ejemplo 13:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
xi = 0; 1 para i = f1; 2; :::; 5g :
Nodo 1 Resolvemos el problema relajado que es el siguiente:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g :
La solución óptima para el problema relajado es X1 =
�
1; 1
2
; 0; 0; 0
�
y z(X1) = 104:
Como tenemos un valor en X 1 que es fraccional, debemos rami�car desde este
nodo.
57
Nodo 2 En este nodo tenemos el mismo problema que en el nodo 1 más una
restricción de rami�cación, ésta es x2 = 0; el problema queda de la siguiente manera:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 0
xi � 0 xi � 1 i 2 f1; 2; :::; 5g :
del cual obtenemos X2 = (1; 0; 1; :3333; 0) y z(X2) = 100:
Nodo 3 Al problema de este nodo se le agrega la restricción x2 = 1:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 0x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g
del cual obtenemos la solución X3 = (0:625; 1; 0; 0; 0) y z(X3) = 98:
Esto se ilustra con la siguiente �gura:
x2 =0
X1=(1.0.5,0,0,0)
z(X1)=1041
2 3
X3=(0.625,1,0,0,0)
z(X2)=98
x2 =1X2=(1,0,1,0.33,0)
z(X1)=100
Se escoge el nodo 2 para rami�car.
Nodo 4 En este nodo se tiene el mismo problema que en el 2 más una restri-
cción de rami�cación, ésta es x4 = 0; por lo que el problema nos queda de la siguiente
58
manera:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 0
x4 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g :
y obtenemos X4 = (1; 0; 1; 0; 0:5) y z (X4) = 99.
Nodo 5 A este nodo se le agrega la restricción de x4 = 1 :
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 0
x4 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g:
y obtenemos X4 = (1; 0; 0; 1; 0) y z (X4) = 98; a este nodo lo etiquetamos con �solu-
ción candidata�, porque todos los elementos de X son enteros.
x2 =0
X1=(1.0.5,0,0,0)
z(X1)=1041
2 3
X3=(0.625,1,0,0,0)
z(X2)=98
Nodo no prometedor
x2 =1X2=(1,0,1,0.33,0)
z(X1)=100
x4 =0
x4 =1
54
X5=(1,0,0,1,0)
z(X5)=98
Solución Candidata
X4=(1,0,1,0,0.5)
z(X4)=99
Ahora vemos qué nodo tiene la cota máxima de los nodos que no están etiquetados y
es el nodo 4, por lo que se rami�cará a partir de éste.
59
Nodo 6 Es el mismo problema que el del nodo 4 más una restricción:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 0
x4 = 1
x5 = 0
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g :
obtenemos X6 = (1; 0; 1; 0; 0) y z (X6) = 94; a este nodo se le asignara la etiqueta de
�solución candidata�.
Nodo 7 En este nodo tenemos tenemos el siguiente problema agragando la res-
tricción x5 = 1:
max z = 80x1 + 48x2 + 14x3 + 18x4 + 10x5
s.a 8x1 + 6x2 + 2x3 + 3x4 + 2x5 � 11
x2 = 0
x4 = 1
x5 = 1
xi � 0 y xi � 1 i 2 f1; 2; :::; 5g :
obtenemos X7 = (1; 0; 0:5; 0; 1) y z (X7) = 97; a este nodo se le asignará la etiqueta
de �nodo no prometedor�.
El siguiente árbol ilustra las rami�caciones anteriores
x2 =0
X1=(1.0.5,0,0,0)
z(X1)=1041
2 3
X3=(0.625,1,0,0,0)
z(X2)=98
Nodo no prometedor
x2 =1X2=(1,0,1,0.33,0)
z(X1)=100
x4 =0
x4 =1
54
X5=(1,0,0,1,0)
z(X5)=98
Solución Candidata
X4=(1,0,1,0,0.5)
z(X4)=99
x5 =0
x5 =1
76
X6=(1,0,1,0,0)
z(X6)=94
Solución candidata
X4=(1,0,0.5,0,1)
z(X4)=97
Nodo no prometedor
60
Con lo anterior podemos concluir que la solución óptima para el problema está en el
nodo 5 y es X5 = (1; 0; 0; 1; 0) y z(X5) = 98:
Si comparamos el algoritmo de Balas con la especialización de Dakin para el
problema binario observamos que con el de Balas se tienen que desarrollar todas
las ramas del árbol y el método es largo y exaustivo, en cambio con el algoritmo
de Dakin descartamos varias soluciones que no nos llevarían a la óptima y el árbol
�nal es pequeño por lo que podemos concluir que en cuestión de rapidez es mejor
el algoritmo de Dakin que el algoritmo de Balas ya que en e�ciencia con ambos
algoritmos se llega al óptimo.
61
Capítulo 3
Programación dinámica
En este capítulo se darán las de�niciones básicas de Programación Dinámica, así
como las características que tiene un problema resuelto con esta técnica para después
aplicarla a los de tipo mochila.
La programación dinámica es utilizada para solucionar problemas de optimización
y está basada en la partición de los últimos en una serie de etapas. Es decir, en una
serie de subproblemas ligados entre sí; éstos son más sencillos de resolver ya que sólo
se requiere de una decisión por lo que al utilizar programación dinámica se podría
decir que se está utilizando un proceso de decisión en multietapas.
Los subproblemas se de�nen de tal manera que la respuesta global está constituida
por una combinación de las decisiones tomadas en cada una de las etapas.
La programación dinámica está basada en la teoría que desarrolló Richard Bell-
man a principios de 1950, la cual incluye el �Principio de Optimalidad�que dice:
�Dado el estado actual del sistema, la decisión óptima para cada una de las
etapas restantes no debe depender de estados previamente alcanzados o de decisiones
previamente tomadas�
63
Es decir, que las decisiones que se toman en cada una de las etapas son indepen-
dientes de las que se hayan tomado en etapas anteriores o de estados previamente
alcanzados.
A un problema de programación dinámica se le asocian dos tipos de variables: de
estado y de decisión.
� Variables de estado: Son la liga entre las etapas y se podría decir que son
una medida de las condiciones que existen al empezar alguna etapa.
� Variables de decisión: Son las variables que involucran las alternativas que
son posibles en cada una de las etapas del problema de optimización.
3.1 Elementos de un problema de programación
dinámica
En un problema de programación dinámica se observan cuatro elementos: etapas,
alternativas, estados del sistema y ecuaciones recursivas.
� Etapa es un subproblema del problema de optimización, en el cual se debe de
tomar una decisión.
� Alternativas son las variables de decisión de cada etapa, las cuales in�uyen
en la función de rendimiento de la misma.
� Estados del sistema son la liga o la relación que existe entre las etapas.
El estado del sistema debe contener toda la información necesaria para poder
tomar una decisión factible en la etapa actual. Cabe señalar que la de�nición
de estado deberá permitir que se tome una decisión factible para la etapa actual
sin necesidad de comprobar las decisiones realizadas en etapas anteriores.
64
� Ecuaciones recursivas contienen toda la información del rendimiento acu-
mulado durante las etapas anteriores, de tal manera que la ecuación recursiva
de la etapa i contiene toda la información necesaria para tomar una decisión en
la etapa i+1, por lo que en la última etapa se tiene el rendimiento óptimo total
(o viceversa: la ecuación de la etapa i contiene toda la información necesaria
para tomar una decisión

Otros materiales