Вы находитесь на странице: 1из 25

Universidad Arturo Prat Ingeniera Industrial

Investigacin Operativa II
Vivian Segovia Barros
vivian.segovia@Gmail.com
Enero 2015

Unidad 3

Programacin Entera

Investigacin Operativa II
Universidad Arturo Prat Ingeniera Industrial

Introduccin
Qu es?

Un programa entero es una forma de programacin lineal con un


requerimiento extra: Todas las variables deben ser enteras.

Esto, en realidad, es lo que ms sucede al plantearse problemticas.


Ejemplos de ello Produccin de unidades, asignacin de actividades a
cierto nmero de personas, maquinarias, equipos.

Es posible encontrar problemticas donde slo algunas variables deben


ser enteras, en ese caso se habla de una Programacin entera mixta

Se puede pensar que bastara con redondear los resultados


obtenidos al desarrollar una programacin lineal, pero suele ser
inexacto en casos en que los nmeros obtenidos sean pequeos.

Unidad 3

Introduccin

Unidad 3

Cmo enfrentarlos
Supone la realizacin de 3 pasos:
1.

Eliminar restricciones:

Enteras.

Binarias (transformando restriccin en 0 x 1)

Esto transforma el problema en


una programacin lineal clsica

2.

Resolver PL e identificar ptimo continuo

3.

Desde el punto ptimo continuo se debe agregar restricciones especiales para


acotar espacios ptimos. Tcnicas para esto son:

Ramificacin y acotacin.

Plano de corte

Programas computacionales
Excel SOLVER

Este complemento se encuentra en todas las versiones de Excel y


debe activarse para poder ser usado.

Para activarlo se debe ir a archivo opciones complementos


Administrar (complementos de Excel) Ir.

Solver es recomendable para todo tipo de programacin con nivel


de complejidad bajo-medio, ya que programas muy complejos
pueden ralentizar la ejecucin del complemento.

Todos los parmetros de la programacin deben ser escritos en


una planilla de manera tal que solver pueda encontrar los valores
para las variables.

Toma primordial importancia la forma en la que se escriba las


ecuaciones y como se formule la problemtica a modelar.

Unidad 3

Programas computacionales
Excel SOLVER

Ejemplo

La cafetera de la universidad ofrece 3 tipos de comidas a la hora de la once: Pizza


tradicional a $2.500 c/u, sndwich de algn producto crnico con queso a $1.000 c/u y
una ensalada de vegetales verdes, rojos y quesos para los vegetarianos a $3.000 c/u. se
busca maximizar las ventas de la cafetera dada algunas restricciones:
Dada la capacidad de produccin de la cocina slo se puede elaborar 300 un de comida
al da para esa hora. Segn la capacidad de los hornos slo es posible elaborar 150 pizzas
como mximo y debido a que la mayora de los estudiantes prefiere comer alguna masa
a la hora del t, las ventas de ensaladas se estiman en no ms de 100 un. y segn los
espacios para almacenar alimentos refrigerados, slo es posible mantener productos
para generar hasta 200 sndwiches. Dado que algunos de los ingredientes de la pizza
tambin son utilizados para los sndwiches existe un estimado mximo para estas
comidas de 250 . La cafetera slo vende unidades completas (no vende mitades).
Formular como una PLE y desarrollar mediante Solver

Unidad 3

Unidad 3

Programas computacionales
Excel SOLVER
Formulacin de problema:
Maximizar = 25001 + 10002 + 30003
Sujeto a

1 + 2 + 3 300
1 +2
1
2

250
150
200
100

Con no negativas y enteras


X1 Cantidad de pizza
X2 Cantidad de sndwiches
X3 Cantidad de ensaladas

Es
muy
importante
formular un problema
manera coherente

el
de

Programas computacionales
Excel SOLVER
Plasmar formulacin en excel:

Unidad 3

Unidad 3

Programas computacionales
Excel SOLVER
Resolver y obtener resultado:
B4 + B9+B14
B4 + B9

X * precio

B5 + B10 + B15

Programas computacionales
LINDO

Es un programa especializado en resolucin de programacin lineal.

Es ms potente que solver dado que su nica finalidad es la de resolver


problemas de este tipo.

El programa, aparte de entregar las soluciones a la programacin


estudiada, entrega una serie de datos relativos a como se encontraron las
soluciones (tableau, n de iteraciones, entre otros).

Una de las mayores ventajas que presenta, es que se escribe tal cual se
est acostumbrado a formular programaciones lineales, por lo que es muy
difcil equivocarse ingresando los datos.

Se puede descargar una versin de prueba ( que dura 6 meses aprox.)

http://www.lindo.com/index.php?option=com_content&view=article&id=
34&Itemid=15

Unidad 3

Programas computacionales
LINDO

Resolveremos el mismo ejemplo anterior utilizando LINDO

Sujeto a
(subject to)

Condicin
de entero

Unidad 3

Programacin Entera Casos de Programacin


binaria
Para qu sirve
Este tipo de programacin es utilizada para resolver un sinnmero
de problemticas:

Aperturas de planta, seleccin de lugares.

Asignacin de flotas.

Programacin de tripulacin

Cmo se formula
1.

Se asigna 2 valores (1 y 0) lo que significa que slo existen 2


posibilidades para resolver el problema:
=

1 si la decisin es s

0 si la decisin es no

Unidad 3

Programacin entera binaria

Unidad 3

Ejemplo
Un excursionista debe determinar que objetos llevar en la mochila para realizar una
excursin de un da. Cada uno de los objeto tiene asociado un peso y una utilidad personal
para el excursionista. Los objetos que puede llevar, as como su peso y utilidad estn
indicados en tabla. Sabiendo que el peso mximo que puede llevar en la mochila es de
100. Determinar que objetos debe llevar nuestro excursionista en la mochila para que la
utilidad de los objetos sea mxima.
OBJETO

PESO

UTILIDAD

LINTERNA 40

40

SACO

50

80

COCINA

30

10

MANTA

10

10

COMIDA

10

ROPA

40

20

VARIOS

30

60

1. Formulacin del Problema:


Maximizar Z = Lx40 +Sx80 + Cx10 + Mx10 + COMx4 + Rx20 + Vx60
Sujeto a Lx40 +Sx50 + Cx30 + Mx10 + COMx10 + Rx40 + Vx30 = 100
L,S,C,M,COM,R,V 1 se lleva
0 no se lleva

2. Resolucin del problema usando LINDO

Unidad 3

Programacin entera binaria


Ejemplo
Resultado

Formulacin de problema
Max para maximizar
ST sujeto a
End trmino
INT binarias.

Resultados: Los valores


que necesitamos son los
0 y 1 en columna value.

Respuesta El excursionista debe llevar saco, manta, comida y


varios, los que suman 154 puntos en utilidad

Unidad 3

Programacin entera binaria


Ejemplo 2
Qu proyectos deben
seleccionarse???
1 se selecciona
0 no se selecciona

1. Formulacin del Problema:


Maximizar Z = 20x1 + 40x2 + 20x3 + 15x4 + 30x5
Sujeto a

2. Resolucin del problema usando LINDO

Programacin entera binaria


Ejemplo 2

Z = 95
Se eligen proyectos 1,2,3 y 4

Unidad 3

Algoritmos PLE
Recordemos.
1.

Estos problemas se formulan tal como se realiza una PL.

2.

Para desarrollarlo se deben eliminar las restricciones de variables enteras,


as como tambin reemplazar variables binarias con un intervalo continuo
entre 0 y 1. y encontrar soluciones factibles (o puntos ptimos).

3.

La solucin factible encontrada es el punto de partida para poder


encontrar una solucin que satisfaga las restricciones anteriormente
eliminadas.
Para encontrar esta solucin se utilizan los siguientes mtodos:

Mtodo de ramificacin y acotacin.

Mtodo de plano de corte.

Unidad 3

Algoritmos de Ramificacin y Acotamiento


Ejemplo
Maximizar = 31 + 42

Sujeto a

21 + 2 6
21 + 32 9

Solucin ptima,
pero NO ENTERA

Con 1 , 2 no negativos y enteros


Solucin PL 1 = 2,25 2 = 1,5

= 12,75

Ahora
se
debe
realizar
la
ramificacin
correspondiente para encontrar soluciones que
satisfagan la condicin de enteros.
Se comenzar con X2 ya que es el valor ms
alejado de algn entero

Unidad 3

Unidad 3

Algoritmos PLE
Algoritmo de ramificacin y acotamiento
1

1 = 2,25 2 = 1,5
= 12,75

3
1 = 2,5 2 = 1
= 11,5

1 = 1,5 2 = 2
= 12,5
4

1 = 1 2 = 2,33
= 12,33

1 = 2 2 = 1,66

7
1 = 1,5 2 = 2

1 = 0 2 = 3
= 12

Solucin factible,
corresponde a la cota
inferior de la
ramificacin

Algoritmos de Ramificacin y Acotamiento


Ejemplo para Programacin entera mixta (1 o ms variables
continuas).
Maximizar = 41 22 + 73 4
Sujeto a

21
+ 53
1 + 2 3
61 52
1 +
23 24

10
1
0
3

Resolviendo
como PL

Con 0 para j = 1,2,3,4,


Entero para j= 1,2,3.
Solucin PL 1 = 1,25 2 = 1,5 3 = 1,75
4 = 0
= 14,25
Paso siguiente: Ramificacin correspondiente para encontrar
soluciones que satisfagan la condicin de enteros.
TAREA : Solucionar problema (Sol: 1 = 0 2 = 0 3 = 2 4 = 0,5
= 13,5 )

Unidad 3

Algoritmos PLE
Algoritmo de Corte Gomory.
El plano de corte de Gomory utiliza la tabla simplex final obtenida
del desarrollo de una PL y sigue un procedimiento de 3 pasos.
1.

Escoger de la tabla la variable que no sea entera.

2.

Escribir la ecuacin arreglando cada fraccin como la suma de un


entero y una fraccin entre 0 y 1.

3.

El lado izquierdo de la ecuacin debe ser no negativo, esta


desigualdad corresponde a una nueva restriccin.

Y se vuelve a reiterar los pasos hasta encontrar valores enteros a las


variables.

Unidad 3

Unidad 3

Algoritmos PLE
Algoritmo de Corte Gomory.
Ejemplo
Maximizar = 21 + 2
Sujeto a

21 + 52 17
31 + 22 10

Tableau
luego de 1
iteracin

Con 1 , 2 no negativos y enteros

X1
X3
X1

0
1
0

X2
11/3
2/3
1/3

X3
1
0
0

X4
-2/3
1/3
2/3

1. Elegimos arbitrariamente la fila correspondiente a 1


2
3

1
3

1 + 2 + 4 =

10
3

2. Se reescribe cada fraccin como suma de un entero y una fraccin entre 0 y 1


(para que coeficientes sean positivos):
2
3

1
3

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

1
3

* Se reordena de manera tal que las fracciones estn en lado izquierdo y


enteros en lado derecho

31/3
10/3
20/3

Unidad 3

Algoritmos PLE
Algoritmo de Corte Gomory.
Ejemplo
2

3 2

1
3

1
3

+ 4 = 3 1

3. Se extrae el lado izquierdo de la ecuacin y se hace no negativo:


2

3 2

1
3

1
3

+ 4 0 o simplificando (x3) 22 + 4 1 NUEVA RESTRICCIN

La formulacin ahora queda as:


Maximizar = 21 + 2 + 03 + 04
Sujeto a

11

3 2

2
3

1 + 2
22

+ 3

3 4

1
3

+ 4 =

31
3

10
3

Tableau luego de
iteracin mediante
mtodo 2 fases

+ 4 1

Con no negativas y enteras

X1
X3
X1
X2

X2
0
1
0
0

X3
0
0
1
0

1
0
0
0

X4
-5/2
0
1/2
1/2

X5
11/6
1/3
-1/2
1/6

17/2
3
1/2
13/2

Unidad 3

Algoritmos PLE
Algoritmo de Corte Gomory.
Ejemplo
1.

Del nuevo tableu elegimos x2


1
2

1
2

2 + 4 5 =

1
2

siguiendo pasos 2 y 3 se tiene 4 5 1 NUEVA RESTRICCIN

La formulacin ahora queda as:


Maximizar = 21 + 2 + 03 + 04 + 05
5

11

6 5
1
+ 3 5

3 2 4 +

Sujeto a
1

1
2

1
2

17
2

=3

+ 4 5 =

X1

Tableau luego de
iteracin mediante
mtodo 2 fases

1
2

4 5 1
Con no negativas y enteras

X3
X1
X2
X5

X2
0
1
0
0
0

X3
0
0
1
0
0

1
0
0
0
0

X4
-13/3
-1/3
1
1
1/3

X5
0
0
0
1
0

X6
11/6
1/3
-1/2
-1
1/6

20/3
8/3
1
1
19/3

Se debe iterar una vez ms utilizando


X1=8/3, as se obtiene una solucin final
entera con X1=3, X2=0 y Z=6

Consideraciones sobre la PLE

El mtodo de bifurcacin y acotamiento es usado ampliamente


por su facilidad de aplicacin en comparacin al algoritmo de
Gomory.

El algoritmo de Gomory tiene la desventaja que no se puede


predecir a ciencia cierta cuantas iteraciones debern generarse
para poder obtener los resultados, por lo que quienes lo utilizan
se ponen un lmite de iteraciones, el cual si es sobrepasado, se
abandona.

El avance tecnolgico ha permitido que estos problemas puedan


ser resueltos rpidamente mediante programas especializados
que
replican
estos
algoritmos
utilizando
recursos
computacionales.

Programas como LINDO y el complemento SOLVER de Excel


permiten resolver en segundos complejas ecuaciones.

Unidad 3

Вам также может понравиться