Está en la página 1de 23

Programación entera: Variables

Programación lineal entera. Tipos.


Programación entera: Variables

Objetivos específicos

Plantear correctamente problema de PLE


con variables binarias (0-1)
Programación entera: Variables

Contenidos

Programación entera binaria


Programación entera: Variables
Actividades

Los alumnos evalúan distintos casos para que


determinen cuáles de ellos corresponden a
los modelos de Programación lineal entera y
a qué tipo corresponden.
Programación entera: Problema ejemplo

Una empresa está pensando invertir en cuatro proyectos diferentes, cada


proyecto se finaliza a lo más en 3 años.
Los flujos de caja requeridos en cada año junto con el Valor Presente Neto
de cada proyecto, concluidos los años de ejecución, y las disponibilidades
de recursos financieros se resumen en la siguiente tabla:
Proy 1 Proy 2 Proy 3 Proy 4 Disp. Recursos
Año 1 10 8 6 12 30
Año 2 8 15 4 0 15
Año 3 18 0 16 0 12
V.P.N. 35 18 24 16

Interesa determinar en cuáles proyectos invertir de modo de conseguir el mayor


V.P.N. de la inversión.
En este caso, la decisión a tomar es invertir o no invertir en los proyectos. Se verá
cómo se plantearía el modelo.
Programación entera: Variables de decisión

ì1, si se invierte en el proyecto i


xi = í con i = 1,2,3,4
î0, sin o

si = Cantidad no invertida en el periodo i (i=1,2)


Programación entera: Problema ejemplo

Función objetivo:
Max 35x1 + 18x2 + 24x3 + 16x4

Restricciones (tres alternativas):

1) Reinvirtiendo el dinero no utilizado en un período:

Año1: 10x1 + 8x2 + 6x3 + 12x4 + s1 = 30


Año2: 8x1 + 15x2 + 4x3 + s2 = 15 + s1
Año3: 18x1 + 16x3 £ 12 + s2

xi Î {0,1} i = 1,2,3,4
Programación entera: Problema ejemplo

Función objetivo:
Max 35x1 + 18x2 + 24x3 + 16x4

Restricciones (tres alternativas):

2) Sin invertir el dinero no utilizado en un período, pero utilizando el


retorno de los proyectos concluidos:

Año1: 10x1 + 8x2 + 6x3 + 12x4 £ 30


Año2: 8x1 + 15x2 + 4x3 £ 15 + 16x4
Año3: 18x1 + 16x3 £ 12 + 18x2

xi Î {0,1} i = 1,2,3,4
Programación entera: Problema ejemplo

Función objetivo:
Max 35x1 + 18x2 + 24x3 + 16x4

Restricciones (tres alternativas):

3) Reinvirtiendo el dinero no utilizado en un período y, también el retorno


de proyectos concluidos:

Año1: 10x1+ 8x2 + 6x3 + 12x4+ s1 = 30


Año2: 8x1 + 15x2+ 4x3 + s2 = 15 + s1 + 16x4
Año3: 18x1 + 16x3 £ 12 + s2 + 18x2

xi Î {0,1} i = 1,2,3,4
Programación entera: Problema ejemplo

Aumentando nuevas restricciones:

a) Se debe invertir en al menos 1 de los 3 primeros proyectos:


x1 + x2 + x3 >= 1

b) El proyecto 2 no puede ser tomado a menos que el proyecto 3 sí sea


tomado:
x2 <= x3

c) Se puede tomar el proyecto 3 ó 4 pero no ambos:


x3 + x4 <= 1

d) No se puede invertir en más de dos proyectos:


x1 + x2 + x3 + x4 <= 2
Programación entera: Lote Mínimo

Condición: Si un determinado producto “A” se fabrica, deben producirse al menos


m unidades y como máximo M unidades. Entonces entre las restricciones del
problema encontraremos:
Xa <= M Ia
Xa >= m Ia

La variable Ia es entera binaria y solo puede adoptar los valores 0 ó 1.

La variable M es un número cuyo valor es sustancialmente mayor al resto de los


valores del modelo o una cota superior para el valor de Xa.
El valor m es la cantidad mínima a fabricar de Xa cuando se produce alguna
unidad de Xa.
Es decir que Xa puede ser: Xa = 0 ó m ≤ Xa ≤ M

Cuando Ia = 0 las restricciones se reducen a: Xa ≤ 0 y Xa ≥ 0 con lo que Xa = 0.


Cuando Ia = 1 las restricciones se reducen a Xa ≤ M y Xa ≥ m.
Programación entera: Lote Mínimo

El siguiente es un ejemplo de cómo debe incorporarse a un modelo


de PL la condición: X2 = 0 ó 4000 ≤ x2 ≤ 10000.
Max Z= 8 x1 + 5 x2
Restricciones:
1 x1 + 4 x2 < 32000
4 x1 + 3 x2 < 37000
3 x1 - 2 x2 < 15000
2 x1 + 1 x2 > 4000
x2 <= 10000 Ia
x2 <= 4000 Ia

NN: x1y x2 >= 0; Ia ={0,1}


Programación entera: Exclusión de Alternativas

Se exige que de entre dos o más productos solamente se fabrique uno de ellos.
Entre las restricciones del problema encontraremos:
Xa <=M Ia
Xb <= M Ib
Ia + Ib = 1
Las variables Ia e Ib son enteras binarias y solo pueden adoptar los valores 0 ó 1.

La variable M es un número cuyo valor es sustancialmente mayor al resto de los


valores del modelo o una cota superior para los valores que puedan adoptar Xa y
Xb.
Como Ia + Ib = 1, Ia e Ib no pueden ser simultáneamente iguales a 1.

Si Ia = 1; entonces Xa ≤ M y Xb = 0

Si Ib = 1; entonces Xb ≤ M y Xa = 0
Programación entera: Exclusión de Alternativas

El siguiente es un ejemplo cómo debe incorporarse la condición


de exclusión para dos productos.
Max 8 x1 + 5 x2
Restricciones:
1 x1 + 4 x2 < 32000
4 x1 + 3 x2 < 37000
3 x1 - 2 x2 < 15000
2 x1 + 1 x2 > 4000
x1 <= 100000 Ia
x2 <= 100000 Ib
Ia+Ib=1

NN: x1 y x2 >= 0; Ia, Ib ={0,1}


Programación entera: Activación de Restricciones

Puede ser de interés que una restricción exista en el modelo si se están


produciendo unidades de determinado producto, y que la restricción esté ausente si
no se están produciendo unidades de ese producto.
Entre las restricciones del problema encontraremos:
Xa <= M Ia
Σ aj Xj <= M – M Ia + b

Como en los casos anteriores, la ecuación Xa – M Ia ≤ 0 (con Ia binaria y entera)


hace que Ia sea igual a 1 solamente cuando Xa es distinto de cero.
Cuando Ia=1 la restricción se reduce a:
Σ aj Xj ≤ b
Cuando Ia=0 la restricción queda como:
Σ aj Xj ≤ M + b
Siendo M un número muy grande en comparación con el resto de los
coeficientes del modelo, la restricción queda en la práctica inactiva.
Programación entera: Activación de Restricciones

El siguiente es un ejemplo de cómo debe incorporarse la condición de Activación


de Restricciones..
Max 8 x1 + 5 x2
Restricciones:
1 x1 + 4 x2 < 32000
4 x1 + 3 x2 < 37000
2 x1 + 1 x2 >4000
3 x1 - 2 x2 <= 100000 – 100000 Ia +15000
x2 <= 100000 Ia

NN: x1 y x2 >= 0; Ia ={0,1}


Programación entera: Costos Fijos

Es posible que existan costos fijos atribuibles a un determinado producto.


Es decir, costos que existen si se produce alguna unidad de ese producto y que no
existen en caso contrario.
Aquí también puede recurrirse al empleo de variables enteras binarias para
modelar la situación.
El funcional deberá incluir una variable entera binaria multiplicando al
coeficiente que representa los costos fijos:
Z = a1 x1 + ..... aj xj + CF Ij + ....an Xn.

Entre las restricciones encontraremos: xj <= M Ij

De esta forma si xj es mayor que cero se activa Ij adoptando el valor 1 y el


coeficiente CF aparecerá en el funcional.
En caso contrario si xj = 0 la variable entera Ij = 0 y el coeficiente CF no
aparece afectando al funcional.
Programación entera: Activación de Restricciones

Decisiones contingentes:
X3-X1<=0
Activar una u otra restricción:
3X1+2X2<=18+yM
X1+4X2<=16+(1-y)M
M muy grande
Problema 1

Una inmobiliaria desea promocionar una nueva urbanización mediante una campaña publicitaria. Para ello
dispone de 5 tipos de anuncios: anuncios en televisión local al mediodía (tvm), anuncios en televisión local
a la noche (tvn), anuncios en periódico local (per), anuncios en suplemento dominical local (sup) y
anuncios en radio local por la mañana (rad). La empresa ha reunido datos sobre la cantidad de clientes
potenciales a los que se destina cada tipo de anuncio y el coste de cada anuncio en euros. Además, se ha
llevado a cabo una valoración de la calidad que tiene cada anuncio de acuerdo al medio en el que se
expone, en una escala de 0 a 100 (0 nula, 100 excelente). Los datos se recogen en la siguiente tabla:

Anuncios Clientes Potenciales Coste (euros) Calidad exposición


tvm 1000 1500 65
tvn 2000 3000 90
per 1500 400 40
sup 2500 1000 60
rad 300 100 20

El número máximo de anuncios que se pueden emitir es 15, 10, 25, 4 y 30 de tvm, tvn, per, sup y rad,
respectivamente. La inmobiliaria, aconsejada por una agencia de publicidad, decide utilizar al menos 10
anuncios en la televisión, alcanzar por lo menos 50000 clientes potenciales, no gastar más de 18000 euros
en anuncios en televisión y si se hacen anuncios en el periódico entonces no hacer anuncios en la
televisión por la noche. El presupuesto máximo para la campaña publicitaria es de 30000 euros. Modelizar,
sin resolver, mediante programación lineal entera el problema de como debe planificar la campaña si se
desea maximizar la calidad de la exposición de todos los anuncios de la campaña publicitaria.
Solución:

Variables de decisión:
x1 = número de anuncios a emitir en tvm
x2 = número de anuncios a emitir en tvn
x3 = número de anuncios a emitir en per
x4 = número de anuncios a emitir en sup
x5 = número de anuncios a emitir en rad
1 si se hacen anuncios per
y =!
0 en caso contrario
FO: Max(65x +90x +40x +60x +20x )
Restricciones:
x1 ≤15
x4 ≤ 4
x5 ≤30
x1+x2 ≥10
1000x1 + 2000x2+1500x3 +2500x4 +300x5 ≥ 50000
1500x1 +3000x2 ≤18000
1500x1 +3000x2 +400x3 +1000x4 +100x5 ≤ 30000
x3 ≤ 25y
x2 ≤ 10(1-y)
xi ≥ 0 y enteras I = {1,...,5}, y pertenece a {0,1}
Problema 2

Una empresa de juguetes está considerando la puesta en marcha de tres nuevos modelos de juguetes (1,
2 y 3) para su posible inclusión en la próxima campaña de Navidad. La preparación de instalaciones para
la fabricación de estos modelos costaría 25000 €, 35000 € y 30000 € respectivamente, y la ganancia
unitaria sería de 10 €, 15 € y 13 € respectivamente. La empresa dispone de tres plantas de producción
para la elaboración de estos modelos, pero para evitar gastos sólo en una de ellas se producirían los
juguetes, dependiendo la elección de la maximización de las ganancias.
El número de horas que se precisa para producir cada juguete en cada planta es:

Juguete 1 Juguete 2 Juguete 3


Planta 1 5 4 6
Planta 2 4 2 2
Planta 3 3 3 2

Las plantas disponen al día 500, 600 y 630 horas de producción respectivamente. La gerencia ha decidido
desarrollar al menos uno de los tres juguetes.
a) Modelizar el problema utilizando programación lineal entera para maximizar el beneficio total.
b) La empresa decide producir únicamente el juguete tipo 3, pero debe tener en cuenta que si produce más
de 50 unidades de este tipo de juguete entonces:
v El coste de preparación de instalaciones del juguete tipo 3 es de 40000€
v Debe producirlo en la planta 3
Modelizar el problema, añadiendo esta información, utilizando programación lineal entera.
Solución:

a)
Variables de decisión:
xi = número de juguetes producidos diariamente del tipo i i=1,2,3
1 si se fabrica el juguete tipo i
yi = ! i=1,2,3
0 en caso contrario
1 si se pone en marcha la planta j
zj = !
0 en caso contrario
FO: Max(10x1 −25000y1 +15x2 −35000y2 +13x3 −30000y3 )
Restricciones:
y1 + y2 + y3 ≥ 1
xi ≤ Myi i={1,2,3}
5x1 + 4x2 + 6x3 ≤ 500 + M(1−z1)
4x1 + 2x2 + 2x3 ≤ 600 + M(1−z2)
3x1 + 3x2 + 2x3 ≤ 630 + M(1−z3)
z1 + z2 + z3 =1
xi ≥ 0 y enteras, para todo i = {1, 2, 3}
yi pertenece a {0,1}, para todo i={1, 2, 3}
zj pertenece a {0,1}, para todo j={1, 2, 3}
M positivo suficientemente grande.
Solución:

b)
Variables de decisión:
x3 = número de juguetes producidos diariamente del tipo 3
1 si se pone en marcha la planta j
zj = !
0 en caso contrario

1 si x3 ≥ 51.
p= !
0 en caso contrario
FO: Max(13x3 −30000(1− p)−40000p)
Restricciones:
51p ≤ x3
x3 ≤ 50(1 − p) + M p
p ≤ z3
6x3 ≤ 500 + M(1−z1)
2x3 ≤ 600 + M(1−z2)
2x3 ≤ 630 + M(1−z3)
z1 + z2 + z3 =1
x3 ≥ 0 y entera
p pertenece a {0, 1}
zj pertenece a {0,1} para todo j={1, 2, 3}
M positivo suficientemente grande.

También podría gustarte