Proyecto Io Programacion Entera
Proyecto Io Programacion Entera
Proyecto Io Programacion Entera
ÍNDICE .......................................................................................................................................................................1
4.2.1. DEFINICIÓN..........................................................................................................................................9
CONCLUSIÓN .................................................................................................................................................... 32
BIBLIOGRAFÍA ................................................................................................................................................... 33
PROGRAMACIÓN ENTERA 1
UNIDAD 4 – PROGRAMACIÓN ENTERA
4.1. INTRODUCCIÓN Y CASOS DE APLICACIÓN.
4.1.1. INTRODUCCIÓN.
Es frecuente al tener que resolver problemas en los cuales las soluciones tienen que ser
valores enteros como por ejemplo: números de unidades a producir por máquina, número de
máquinas necesarias, etc. Parte del problema de la programación entera radica en la
diferencia esencial que existe la programación lineal y la entera, en la programación lineal se
maximiza o minimiza una función sobre una región de factibilidad convexa, mientras que al
usar los métodos de programación entera se maximiza una función sobre una región de
factibilidad que generalmente no es convexa. De tal manera que la programación entera tiene
más complicaciones que la programación lineal. En este tema se presenta un tipo de
problemas formalmente similares a los problemas de Programación Lineal, ya que en su
descripción solo se establecen expresiones lineales. Sin embargo no responden a problemas
lineales ya que algunas (o todas) las variables del problema toman valores que no están en
un conjunto continuo. Por ejemplo, pueden ser variables que toman valores 0 o 1(binarias),
o variables que toman valores enteros no negativos (0, 1,2,...), etc. Tras introducir el tipo de
problemas se dedica un importante apartado para presentar las posibilidades de modelado
que esta herramienta proporciona: problemas binarios, problemas de carga, problemas con
restricciones condicionales o con dicotomías, etc. Tras dedicar una parte importante del tema
a presentar estas herramientas de modelado y a plantear numerosos problemas con ellas se
procede a mostrar dos métodos de resolución. Uno de ellos dedicado a problemas en los que
todas las variables son binarias y otro para problemas generales. Ambos métodos tienen en
común que desarrollan un proceso de enumeración que permite comprobar explícita o
implícitamente todas las soluciones del problema hasta encontrar la óptima, y entran dentro
del tipo de métodos de ramificación y acotación.
PROGRAMACIÓN ENTERA 2
posibles alternativas de valores enteros de esas variables en un entorno alrededor de la
solución obtenida considerando las variables reales. Muchas veces la solución del
programa lineal truncado está lejos de ser el óptimo entero, por lo que se hace necesario
usar algún algoritmo para hallar esta solución de forma exacta. El más famoso es el
método de “Ramificación y Acotación” o “Branch and Bound” por su nombre en inglés. El
método de Ramificación y Acotación, parte de la adición de nuevas restricciones para
cada variable de decisión (acotar) que al ser evaluado independientemente (ramificar)
lleva al óptimo entero.
Programación Entera Pura: Todas las variables de decisión tienen valores enteros.
Programación Entera Mixta (PEM): Algunas de las variables de decisión tienen
valores enteros. Las demás cumplen con la suposición de divisibilidad.
Programación Entera Binaria (PEB): Utiliza variables binarias.
PROGRAMACIÓN ENTERA 3
• Método gráfico.
• Método de plano de
Métodos corte.
de solución • Métodos de Lang-
Doing.
• Enumeración implícita.
• Lingo/Lindo
Herramientas • Excel
computacio-
nales • Mpl/Cplex
• TORA
• Puro
Tipos de
• Binario
modelos
• Mixto
• Wagner
Origen • Manner
• Gomory
PROGRAMACIÓN ENTERA 4
4.1.2. CASOS DE APLICACIÓN.
A continuación se presenta la variedad de problemas que caen dentro de la programación
entera y binaria:
d) El problema del agente viajero. Este problema concierne en un agente viajero que
saliendo de una terminal de ciudad debe visitar una sola vez n-1 ciudades diferentes,
y regresar al punto de partida. Si el costo de dirigirse a la ciudad j desde la ciudad i
es ( ≠ ), se debe terminar la secuencia de visita de ciudades, tal que el costo
total asociado sea el mínimo. Este problema se presentó por
PROGRAMACIÓN ENTERA 5
primera vez en 1960, en un artículo de Miller, Tucker, Zemling, pero hay una
variedad de métodos que resuelven el problema dependiendo del tamaño de n, el
número de ciudades.
PROGRAMACIÓN ENTERA 6
g) Problemas con costos fijos. Todos los problemas que en su función de costo
influyen un costo fijo del siguiente tipo
0 , si ,
≤ ≤
Costo total para la variable = f ( )= 0 , j=1,2,…n
+ , si >0
PROGRAMACIÓN ENTERA 7
Minimizar el número de trabajadores (o estaciones de trabajo o actividades) en
función de una tasa de producción.
PROGRAMACIÓN ENTERA 8
4.2. DEFINICIÓN Y MODELOS DE PROGRAMACIÓN ENTERA Y
BINARIA
4.2.1. DEFINICIÓN
El modelo de programación entera es sencillamente la programación lineal solo que con
la característica de que la programación entera tiene una restricción de que todas las
variables sean valores enteros a este tipo de modelos se les llama programación entera
pura.
Esto nos quiere decir que la metodología para resolver los problemas de programación
entera es prácticamente el mismo que para hacer la programación lineal.
La programación entera mixta (PEM) se ocupa solo cuando algunas de las variables
deben ser enteros y la suposición de divisibilidad se cumple para el resto.
Esto se da cuando algunos datos deben ser enteros como la cantidad de personal dentro
de una empresa ya que no se pueden asignar 2.5 empleados se deben redondear a 3
pero dentro del mismo modelo se asigna el salario ya que puede ser $2000.50 a estos
modelos se les reconoce por (PEM).
A este tipo de problemas de programación entera binaria también se les conoce como
problemas 0-1 de programación entera.
PROGRAMACIÓN ENTERA 9
4.2.2. DESCRIPCIÓN DEL MÉTODO
Lo primero que se debe saber, es que al ser las decisiones de Si o No, todas las variables
de decisión tienen la forma binaria. La representación de lo anterior queda así:
Cuando al escoger una opción, no se nos permite escoger otra, se dice que ambas son
mutuamente excluyentes, esta restricción se representa como la sumatoria de ambas ≤ 1, ya
que eso indica que entre ambas puede haber solo 1 (solo una de las 2) o 0 (ninguna
de ellas).
+ ≤1
En el caso en que una opción solo se pueda escoger habiendo elegido otra con anterioridad,
se dice que son contingentes o condicionales, esta restricción se representa poniendo que la
variable dependiente es ≤ a la variable independiente, de la siguiente
manera:
≤
=
=
Pero para colocar lo anterior como restricción válida para modelación, se debe igualar a
0.
− ≤0
Como paso final para modelar se ponen las restricciones ≤ 1 y ≥ 0 para indicar que solo
entre esos valores pueda estar la optimización.
≤1
≥0
PROGRAMACIÓN ENTERA 10
Donde:
Ejemplo:
A continuación se presenta un problema del cual se hará el modelaje y se darán los pasos
para desarrollarlo en programación entera binaria.
Aun cuando este problema se puede resolver con un simple razonamiento - construir
fábricas en ambas ciudades, pero ningún almacén—, se formulará como ejemplo.
Sea:
Si se hace la inversión para construir una instalación dada —de manera que la variable
de decisión correspondiente tenga valor de 1—, el valor neto estimado de estas
inversiones aparece en la cuarta columna de la tabla. Si la inversión no se hace —y, por
tanto, la variable de decisión es igual a 0—, el valor presente neto es 0.
PROGRAMACIÓN ENTERA 11
TABLA 1 Datos del ejemplo de la California Manufacturing Co.
Variable de Valor
Número de Pregunta Si o No decisión presente Capital
decisión neto requerido
1 ¿Construir la fábrica $9 millones $6 millones
en Los Ángeles?
2 ¿Construir la fábrica $5 millones $3 millones
en San Francisco?
3 ¿Construir el $6 millones $5 millones
almacén en Los
Ángeles?
4 ¿Construir el $4 millones $2 millones
almacén en San
Francisco?
La última columna de la tabla indica el capital que se gastará en las cuatro instalaciones,
y dice que no puede exceder a 10 millones de dólares. Entonces, la primera restricción
sería:
+ ≤1
PROGRAMACIÓN ENTERA 12
Aún más, las decisiones 3 y 4 son contingentes —o condicionales— porque
dependen
de las decisiones 1 y 2, respectivamente (la compañía consideraría la
construcción de
un almacén en determinada ciudad sólo si la nueva fábrica va a estar ahí).
Por tanto, en
≤
De manera similar, el requerimiento de que x = 0 si x = 0 se impone con la restricción:
≤4
2
Por tanto, después de escribir de nuevo estas dos restricciones para que todas las
variables queden en el lado izquierdo, el modelo completo de PEB es
Maximizar Z= 9 +5 +6 + 4
s.a
6 +3 +5 + 2 ≤ 10
+ ≤1
- + + ≤0
- + ≤0
≤1
≤0
es binaria para j= 1, 2 ,3 ,4
Excepto por su tamaño pequeño, este ejemplo representa muchas aplicaciones reales
de programación entera en las que las decisiones básicas que se toman son del tipo sí o
no.
Al igual que el segundo par de decisiones de este ejemplo, muchos grupos de decisiones
sí o no son mutuamente excluyentes, tales que sólo una decisión de ese grupo puede ser
sí. Cada grupo requiere una restricción que obligue a la suma de las variables binarias
correspondientes a ser igual a 1 si exactamente una decisión de ese grupo debe ser sí,
o menor o igual a 1 (si cuando mucho una decisión de ese grupo puede ser sí).
Punto óptimo
=1
=0
=0
=0
PROGRAMACIÓN ENTERA 14
X1 X2 X3 X4 S1 S2 S3 S4 S5 BFS
Z(max) 0 4 3 5 0 0 0 0 9 9
S1 0 -3 -1 -4 1 0 0 0 -6 4
S2 0 0 1 1 0 1 0 0 0 1
S3 0 1 2 1 0 0 1 0 1 1
S4 0 -1 0 1 0 0 0 1 0 0
X1 1 1 1 1 0 0 0 0 1 1
PROGRAMACIÓN ENTERA 15
4.3. MÉTODO DE GOMORY
Publicado en 1958 por Ralph Gomory, el método de Gomory mejor conocido como
Algoritmo de Plano de Corte, es un método que permite encontrar soluciones óptimas
enteras en aquellos problemas de programación lineal que tienen soluciones
fraccionarias o con decimales. Se basa con los “planos cortantes” (o corte) que es una
nueva restricción funcional que reduce la región factible del relajamiento de PL sin
eliminar soluciones factibles del problema de PE original. Podemos decir que este método
es una base de nuevas técnicas que permiten de igual manera encontrar una solución
óptima entera de un problema de PL, un ejemplo, el “método de ramificación y
acotamiento” que lo veremos más adelante.
+
, 7 ≥ 0 y enteros.
Lo resolveremos directamente por el método SIMPLEX. Por lo tanto:
Maximizar Z = 7 + 10 + + + +
Maximizar Z = 7 + 10
Sujeto a
Sujeto a
+ = 6
−
++ 3
+ = 6
− +3
+ = 35
7 + + = 35
7
, , , ≥ 0 y enteros.
PROGRAMACIÓN ENTERA 16
Tablas SIMPLEX
10 Solución
-1 3 1 0 6
7 1 0 1 35
0 0 0 0
- 7 10 0 0
10 Solución
1 0 2
0 1 33
10 0
- 0 0
PROGRAMACIÓN ENTERA 17
Pivoteamos el renglón , hacemos el cambio de 7 por y nos queda:
10 Solución
=
2
0 1
2=
=
2
1 0
7 10
- 0 0
La solución óptima es Z= , = , = , = 0, = 0.
Gráfica:
Observamos que nuestras soluciones óptimas no son números enteros, para esto, si bien
es donde proseguimos con el método de Gomory. En base a la información que nos arroja
nuestra tabla óptima, podemos reescribirla de la siguiente manera.
1
Z+ + = (ecuación Z)
31 22
+ 63 22 + = 66 2 (ecuación )
32
- 7 22 + 1 22 = 1
(ecuación )
1 22 3 22 4 21
PROGRAMACIÓN ENTERA 18
Una vez que tenemos la información de la tabla ordenada en las ecuaciones anteriores,
debemos escoger una de estas ecuaciones, con la condición de que siempre el lado
derecho sea fraccionario. En caso del ejemplo, las 3 ecuaciones cumplen con la
condición.
La ecuación de restricción que elijamos, será nuestra fila origen (o renglón de fuente),
con la cual generaremos un corte.
Z+ +( 22 = 2
Paso 2: Los componentes enteros los moveremos al lado izquierdo y los componentes
fraccionarios al lado derecho. Obtenemos:
Z + 2 + 1 – 66 = − 2219 − 229 + 21
(1)
Como y son no negativas y todas las fracciones son positivas por construcción, el
lado derecho debe satisfacer la siguiente desigualdad:
− 19 − 9 + 1 22 ≤ (2)
22 2
Paso 3: Ahora, como el lado izquierdo de la ecuación (1), es un valor entero por
construcción, el lado derecho también debe de ser entero. Por lo tanto deducimos que
(2) puede ser reemplazada con una desigualdad:− 19 −9
+ ≤0
22 22
PROGRAMACIÓN ENTERA 19
INSTITUTO TECNOLÓGICO DE LA PAZ 4°
Semestre
INVESTIGACIÓN DE OPERACIONES I
“A”
Este resultado de justifica porque un valor entero menor que una fracción positiva
necesariamente debe ser ≤ 0.
La última desigualdad es el corte deseado, y representa una condición necesaria
(más no suficiente) para obtener una solución entera. Esta desigualdad se conoce como
corte fraccionario porque todos sus coeficientes son fracciones.
Antes de demostrar cómo se implementa el corte fraccionario en la tabla óptima,
se demostrará como también podremos construir los cortes a partir de las otras 2
ecuacio nes de r estricci ón.
= 4 21
Ecuación : − 1 22 + 3 22
Factorizando la ecuación se obtiene:
21 3 1
− 22 22 2
− + ≤0
Ecuación : + 7 22 + 1 22 =3
Factorizando la ecuación se obtiene:
PROGRAMACIÓN ENTERA 20
INSTITUTO TECNOLÓGICO DE LA PAZ 4°
Semestre
INVESTIGACIÓN DE OPERACIONES I
“A”
7 1 1
− 22 − 22 +2
≤0
Cualquiera de estos tres cortes puede usarse en la primera iteración del método de
Gomory. Seleccionando arbitrariamente el corte generado con la ecuación , podemos
7 1 1
− 22 − 22 + =−2; ≥0
10 Solución
0 1 0
1 0 0
0 0 1
−
- 0 0 0 =
Paso 5: La tabla es óptima pero no factible. Para esto, aplicamos el método simplex
dual, para recuperar la factibilidad.
Para encontrar que columna es la que “entra” y que fila “sale”, dividiremos el renglón
- entre el renglón , y tomaremos el valor absoluto más pequeño y esa será nuestra
PROGRAMACIÓN ENTERA 21
fila que “entra”. Después, tomaremos el renglón que acabamos de agregar y será nuestro
renglón pivote.
10 Solución
0 1 0
1 0 0
0 0 1
−
- 0 0 0 =
*Resultado 0 0 9 31 0
de la división
*valor más
pequeño.
Paso 6: Ahora que ya tenemos nuestra fila que sale y columna que entra, comenzamos
a pivotear por el método SIMPLEX, y obtenemos la siguiente tabla de optimidad:
10 Solución
0 1 0 1
1 0
0 0
- 0 0 0
PROGRAMACIÓN ENTERA 22
Observamos que nuestras soluciones siguen siendo fraccionarias con excepción de la
primera, pero esto no significa que el problema esté terminado, puesto que todas
nuestras soluciones deben de ser enteras. Gráfica de la tabla con el primer corte:
Paso 7: Regresamos al paso 4, agregando un segundo corte a esta última tabla óptima,
de la misma manera que agregamos el primer corte, sólo que en este caso, como ya
elegimos la ecuación , podemos elegir la ecuación como nuestro corte.
Nuestra tabla quedaría de la siguiente manera:
10 Solución
0 1 0 1 0
1 0 0
0 0 0
0 0 1 1
- 0 0 0 0
PROGRAMACIÓN ENTERA 23
Resolvemos de la misma manera que cuando agregamos el primer corte, y nos quedaría
la siguiente tabla:
10 Solución
0 1 0 0 1 0
1 0 0 -1 1 4
0 0 0 -4 1 1
0 0 0 1 6 -7 4
0 0 0 0 3 7 58
Observamos en nuestra tabla y todas nuestras soluciones así como nuestro punto
óptimo, nos arroja números enteros. Por lo tanto el Método de Gomory se detiene y el
problema estar terminado.
PROGRAMACIÓN ENTERA 24
4.4. MÉTODO DE BIFURCACIÓN Y ACOTAMIENTO
En 1960, Ailsa H. Land y Alison G. Doig, presentan el algoritmo Land-Doig. El nombre de
bifurcación y acotamiento (o bien, ramificación y acotamiento y en inglés “Branch and
Bound”) se lo dan posteriormente Little, Murty, Sweeney, Karel. Más tarde, el algoritmo
fue modificado por Dakin, haciéndolo de manera más general.
Paso 1: Resuélvase el problema entero por medio del método simplex de la programación
lineal. Si la solución es entera, pare, se ha conseguido la solución óptima. Si no, continúe
en el paso 2.
Paso 2: Escójase arbitrariamente una variable entera cuyo resultado en el paso 1 sea
fraccional e igual a .
solo aquellos programas cuya solución (entera o fraccional) sea mejor (mayor en el caso
PROGRAMACIÓN ENTERA 25
de maximización y menos en el caso de minimización) a cualquiera de las soluciones
enteras conocidas.
Paso 5: Selecciónese aquel programa lineal que tenga el máximo (en el caso de
minimización el mínimo) valor de la función objetivo. Si las variables enteras tienen valor
entero, se ha convertido en la solución óptima. Si no, regresa al paso 2 con la estructura
del problema lineal resuelto en este paso.
Ejemplo:
Max Z= Sujeto a
2 +2
≤9 3 + + = 11
Sujeto a
5 +2
3 + ≤ 11
, , , ≥0
, ≥0
Solución
0 1 0.75 -0.5 1.25
1 0 -0.25 0.5 3.25
0 0 0.25 1.5 18.75
PROGRAMACIÓN ENTERA 26
INSTITUTO TECNOLÓGICO DE LA PAZ 4°
Semestre
INVESTIGACIÓN DE OPERACIONES I
“A”
y . =
Tenemos nuestras soluciones óptimas con valores todos decimales, por lo tanto,
. = .
nuestro problema no esta resuelto. Los valores como nos indica la tabla son
lo que llamamos ramificación, puesto que en nuestro “árbol” (red conectada que no tiene
ciclos), por cada problema tendremos dos subproblemas y estos a su vez otros dos
subproblemas hasta que encontremos nuestra solución óptima entera.
Para crear los subproblemas, notemos que el valor se encuentra entre los
valores son los que tendrán cada
Subproblema (1)
Max Z= Max Z=
2 +2 + =9
2 +2 + = 9
Sujeto a
Sujeto a
3 + + = 11 3 + + = 11
+
≤1 =1
, , , ≥0
, , , , ≥0
PROGRAMACIÓN ENTERA 27
Subproblema (2)
Max Z= Max Z= =9
2 +2 + = 9 2 +2 +
Sujeto a Sujeto a
3 + + = 11 3 + + = 11
−
≥2 =2
, , , ≥0
, , , , ≥0
Paso 3: Resolvemos por método SIMPLEX los subproblemas (1) y (2), y obtendremos
las siguientes tablas óptimas.
Subproblema (1)
Solución
0 -1.33 1 -0.67 0.33
1 -0.33 0 0.33 3.33
0 0.33 0 1.67 18.67
Subproblema (2)
Solución
0 -2 -1.5 1 1.5
1 1 0.5 0 2.5
0 3 2.5 0 16.5
PROGRAMACIÓN ENTERA 28
Paso 5: Debido a que nuestro problema es maximización, la mejor función=. objetivo= hasta.
el momento corresponde a la tabla del subproblema (1) (Z= 18.67, , ) y como
son soluciones no enteras regresamos al paso 2. La estructura seleccionada es el
subproblema (1).
9
Max Z=
2 +2 + =
Max Z= +
Sujeto a
3 + + = 11
2 +2 + =9
Sujeto a
≤1 3 + + = 11
+
≤3 =1
, , , ≥0 ≥0 + =3
, , , , ,
PROGRAMACIÓN ENTERA 29
Y EL SUB PROBLEMA 4:
Max Z= Max Z=
Sujeto a
3 + + = 11
+
2
+2 + =9
2 +2 + = 9 Sujeto a
≤1 3 + + = 11
+
≥4 =1
, , , ≥0 ≥0 − =4
, , , , ,
Subproblema (3):
Solución
-2 -2 1 0 1
-3 -1 0 1 1
5 2 0 0 17
Paso 4: Por ser una solución entera se incluye en el análisis.
Paso 5: Por ser el mejor valor de la función objetivo y además, ser entero, es la solución
óptima, por lo tanto:
Z= 17, = , = , = , =
PROGRAMACIÓN ENTERA 30
Por último, para poder visualizar de mejor manera el proceso, como se mencionaba con
anterioridad, utilizaremos una representación gráfica constituida por una red con
estructura de “árbol”.
Z= 18.75, , ,
=0 =0
Z= 18.67,
= 0.33
, = 1,
=0
Z= 16. , ,
= 1.5
Z= ∞ Problema inconsistente
Z= =17,1 , ,
Solución óptima
PROGRAMACIÓN ENTERA 31
CONCLUSIÓN
Se obtuvieron las ideas precisas de como poder modelar los distintos tipos de
problemas que se dan en industrias, transportes y cualquier problema donde se
requiera una optimización de los recursos o disminución de costos.
PROGRAMACIÓN ENTERA 32
BIBLIOGRAFÍA
Gallagher Charles A., Watson Hugh J., MÉTODOS CUANTITATIVOS PARA LA TOMA
DE DECISIONES EN ADMINISTRACIÓN, McGRAW-HILL,
PROGRAMACIÓN ENTERA 33