Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Canca, D., Eguia, I., Racero, J. Construcción de Modelos de PL
Canca, D., Eguia, I., Racero, J. Construcción de Modelos de PL
DE PROGRAMACIÓN LINEAL
Escuela Superior de Ingenieros
Universidad de Sevilla
David Canca
Ignacio Eguía
Jesús Racero
1
CAPÍTULO X
MODELADO DE PROBLEMAS LINEALES
X.1. Introducción....................................................................................................................3
X.2. Modelos en Programación Matemática. .......................................................................4
X.3. Construcción de un modelo lineal................................................................................4
X.4. Programación lineal entera. ..........................................................................................5
X.5. El uso habitual de las variables enteras. .....................................................................5
X.6. Algunas relaciones frecuentes. ....................................................................................6
X.6.1. Relaciónes entre una variable continua y una variable auxiliar..........................6
X.6.2. Uso de variables auxiliares en el modelado de costes de setup. .......................7
X.6.3. Uso de variables auxiliares para activar o desactivar restricciones. .................7
X.6.4. Aproximación lineal de una función no lineal.....................................................10
X.6.5. Restricciones disyuntivas.....................................................................................12
X.6.6. Modelando implicaciones lógicas sencillas........................................................12
X.6.7. Objetivos de tipo Minimax y Maximin. .................................................................14
X.6.8. Regiones no convexas. .........................................................................................14
CASOS ..................................................................................................................................17
Planificación .....................................................................................................................17
1. Plan de incorporaciones en un servicio de urgencias..........................................17
2. Elaboración de pizzas en hora punta. ....................................................................23
3. Programación de una cadena de televisión...........................................................28
4. Planificación de una explotación minera ...............................................................32
5. Estudio de la compra de aviones por una compañía ............................................39
6. Fabricación de bobinas............................................................................................45
Asignación ........................................................................................................................48
7. Asignación de alumnos a institutos .......................................................................48
8. Reparto de trabajos ..................................................................................................52
9. Red de comunicaciones de ordenadores...............................................................55
Cobertura ..........................................................................................................................60
10. Vigilancia de las salas de un museo.....................................................................60
11. Localización de cámaras de TV.............................................................................63
Localización......................................................................................................................66
12. Localización continua de Hospitales....................................................................66
13. Ubicación estaciones de bomberos .....................................................................69
Distribución ......................................................................................................................73
14. Planificación de la distribución de un producto..................................................73
Secuenciación ..................................................................................................................81
15. Periódicos ...............................................................................................................81
Equilibrado de cadenas ...................................................................................................84
16. Embalaje de objetos con relaciones de precedencia..........................................84
Técnicas de modelado.....................................................................................................87
17. Regresión lineal. .....................................................................................................87
18. Funciones lineales a trozos...................................................................................90
2
Construcción de modelos de Programación Lineal
X.1. Introducción.
En lo que a este texto se refiere, nuestra atención se centrará de forma exclusiva en un tipo
particular de modelos abstractos, construido en base a relaciones matemáticas (ecuaciones,
desigualdades, relaciones lógicas, etc..) que se corresponderán con condiciones
tecnológicas, limitaciones en los recursos disponibles, elección de alternativas u otro tipo de
relaciones en el mundo real.
Los modelos matemáticos estudiados en este libro utilizan una forma estándar. Muchos de
los modelos usados en el ámbito de los métodos cuantitativos aplicados a la gestión utilizan
formas estándar. Esta característica es común al caso de numerosos modelos usados en
ingeniería. Existen no obstante muchas situaciones que no pueden ser modeladas de la
manera que describiremos, y que precisaran modelos diferentes tales como modelos de
simulación, econométricos, modelos de previsión, etc...
Frente a la primera crítica cabe decir que muchas de las decisiones que involucran
conceptos no cuantificables en el ámbito de la gestión necesitan de cierta cuantificación,
mas o menos formal, de la que es imposible prescindir, a veces una simple ordenación. El
esfuerzo por conseguir una formulación explícita de esta cuantificación resulta
evidentemente mas científico.
El segundo aspecto debe ser discutido en relación con cada modelo específico. Aunque
muchos de los datos de un modelo sean poco precisos, es posible que la estructura del
3
Construcción de modelos de Programación Lineal
modelo permita obtener resultados aceptables, disminuyendo el ruido introducido por los
datos iniciales.
En el otro extremo se encuentran los que lejos de criticar los modelos, confían ciegamente
en su validez y especialmente en sus resultados, especialmente si la resolución de los
mismos implica el uso del ordenador.
Un modelo debe ser usado como una de entre otras herramientas de ayuda para la toma de
decisiones. El proceso de construcción de un modelo debe verse realimentado a partir de
un análisis crítico derivado de las soluciones obtenidas.
Tal vez la característica común a todos los modelos de programación matemática radica en
su finalidad: son modelos de optimización. Cada modelo de programación matemática es
concebido con el objetivo de encontrar, para el problema que representa, la solución (o las
soluciones), de entre las existentes, que alcance el valor máximo o mínimo de acuerdo a
cierto criterio que denominamos objetivo.
Los modelos lineales, como ya se vio en los primeros capítulos del libro, exigen que la
función objetivo y las restricciones del problema sean lineales. En algunas situaciones esta
consideración resulta excesiva y supone ciertamente una limitación a la hora de modelar.
En algunas ocasiones, las expresiones no lineales pueden ser tratadas, obteniéndose un
modelo final lineal.
A pesar de estas observaciones, resulta más fácil, de forma general, resolver modelos
lineales, de aquí su importancia y su amplia utilización.
4
Construcción de modelos de Programación Lineal
objetivo, las restricciones y la definición de signo o tipo de las variables. El proceso de
modelado consiste en la especificación de estos tres bloques. No existe ninguna
metodología específica para modelar problemas, la experiencia resulta fundamental, es en
este sentido en el que el proceso de modelar es a veces llamado “arte” de modelar. No
obstante, en el presente capítulo se reflejarán las situaciones más comunes que se
presentan en el modelado de problemas lineales. Posteriormente se complementará lo
expuesto desarrollando de forma minuciosa algunos casos concretos.
Conocidas las variables de decisión, formularemos las restricciones del problema, a partir
de la descripción formal del mismo, incluyendo las variables auxiliares que resulten
necesarias. De forma adicional surgirán restricciones implícitas al modelo como
consecuencia de la elección inicial de determinadas variables, de procesos de linealización
y de la relación entre variables de decisión y auxiliares.
En último lugar, aunque no siempre será así, formularemos el objetivo del problema.
Una amplia variedad de situaciones reales necesitan ser modeladas haciendo uso de
variables enteras (Integer Linear Programming, ILP). A veces estos modelos contienen
variables contínuas y enteras (Mixed Integer Linear Programming, MILP).
Existen además muchas otras situaciones donde el uso de la programación entera resulta
menos obvio pero igualmente necesario. Tal es el caso de situaciones en las que se hace
preciso tomar decisiones. En estos casos se utilizan variables binarias (0-1) que
representan decisiones tipo “SI,
NO”, o “verdadero, falso”. Las relaciones que involucran este tipo de variables se pueden
modelar en muchas ocasiones de forma lineal. Posteriormente al estudio del modelado de
problema con variables enteras se propondrán métodos para su resolución.
Modelar problemas haciendo uso de variables enteras y binarias supone una mayor
complejidad frente al modelado continuo. Por este motivo, en general, estudiaremos
modelos de programación lineal mixta-entera, con la confianza de que una vez aportadas
las herramientas para modelar situaciones complejas resulte sencillo adquirir dominio en la
construcción de modelos continuos.
5
Construcción de modelos de Programación Lineal
Como se comento anteriormente, las variables enteras se usan de forma muy frecuente en
el modelado de situaciones reales. Estas variables suelen ser de dos tipos, comentados en
la tabla siguiente:
Cuando una variable continua condiciona otras restricciones del problema se usa una
variable auxiliar binaria para recoger el estado de la primera y se relaciona con las
restricciones afectadas.
Este apartado no pretende mostrar todos los tipos de restricciones que puede aparecer en
el modelado de problemas de programación lineal entera. La simple pretensión de hacerlo
resulta absurda. El objetivo de los siguientes epígrafes es el de plasmar algunas relaciones
y situaciones comunes que se presentan con frecuencia en el modelado lineal de
problemas, con la esperanza de que estas explicaciones permitan mejorar la comprensión
de los modelos que se expondrán con posterioridad.
Considérese una variable continua Z y una variable auxiliar ∗. La variable auxiliar deberá
tomar valor 1 cuando Z sea estrictamente mayor que cero. La variable auxiliar, por tanto,
indica el estado, positivo de la variable continua.
Z > 0 ⇒ δ =1
Z ≤ Sδ
De esta forma, un valor positivo de Z obliga a la variable auxiliar a tomar el valor 1. El valor
de S debe ser el de una cota superior de la variable Z. Este valor puede extraerse de las
restricciones del problema, anulando todas las demás variables y despejando las
acotaciones de Z.
6
Construcción de modelos de Programación Lineal
Z =0⇒δ =0
Esta implicación puede formularse en sentido contrario usando la negación de cada uno de
los predicados
δ =1⇒ Z > 0
Z ≥ iδ
Ahora, cuando la variable auxiliar toma valor 1 la variable Z es mayor que i. Esta constante
representa un valor infinitesimal, de manera que obliga a Z a ser positiva.
Ahora bien, puesto que en este coste inicial sólo se incurre cuando X > 0, es decir, se
fabrica al menos una unidad, la función objetivo del problema debe recoger el término Cs
multiplicado por una variable auxiliar ∃. Esta variable tomará valor 1 cuando la actividad X
sea estrictamente mayor que cero. Es decir el coste queda modelado:
Coste = Cu X + Cs ∃
X ≤ Sβ
7
Construcción de modelos de Programación Lineal
m
∑a
j =1
ij x j ≤ bi
donde los coeficientes aij representan el consumo unitario que cada actividad xj (∃0) supone
sobre cierto recurso i, limitado de forma global por una disponibilidad de bi unidades.
∑a
j =1
ij x j ≤ bi + M (1 − α )
De esta forma cuando la variable auxiliar toma el valor 1 el termino de la derecha queda
reducido a bi. Por otra parte, cuando ∀=0, la restricción resultante es
m
∑a
j =1
ij x j ≤ bi + M
B) Supongamos ahora que deseamos modelar el caso contrario, es decir, la variable auxiliar
∀ debe tomar valor unitario cuando se satisface la restricción.
∑a j =1
ij x j ≤ bi ⇒ α = 1
m
bi − ∑ aij x j ≥ 0 ⇒ α = 1
j =1
m
bi − ∑ aij x j ≤ Mα
j =1
El problema de esta acotación surge cuando la restricción se cumple con signo de igualdad.
En este caso el término de la izquierda vale cero y no queda implicado el valor unitario de ∀.
8
Construcción de modelos de Programación Lineal
Para evitar este problema se recurre a considerar un valor infinitesimal > que se suma al
termino independiente. Ahora la implicación queda
m
ξ + bi − ∑ aij x j ≥ 0 ⇒ α = 1
j =1
m
ξ + bi − ∑ aij x j ≤ ( M + ξ )α
j =1
C) Activación de una restricción con signo de mayor o igual en función de una variable
auxiliar.
Se trata en esta ocasión de forzar el cumplimiento de una restricción del tipo
∑a j =1
ij x j ≥ bi
cuando una variable auxiliar ∀ tome valor 1. Como en otras ocasiones mostramos la
implicación que se desea modelar:
m
α = 1 ⇒ ∑ aij x j ≥ bi
j =1
∑a
j =1
ij x j ≥ bi − m(1 − α )
Así cuando ∀=1 la restricción se satisface, y cuando la variable auxiliar es nula se consigue
desplazar la restricción adecuadamente fuera de la región de admisibilidad descrita por el
resto de restricciones del problema.
∑a
j =1
ij x j ≥ bi ⇒ α = 1
m
donde M es la mayor cota superior para el término ∑a
j =1
ij x j − bi .
Existen diferentes métodos para aproximar una función no lineal mediante segmentos
lineales de forma que el resultado de lugar a un conjunto de restricciones lineales a
incorporar en el modelo. En este apartado veremos dos posibles alternativas. En ambos
casos es necesario recurrir al uso variables auxiliares binarias.
Consideremos una función y=f(x) tal como la mostrada en la figura. Para el intervalo de
estudio se selecciona un conjunto de pares (xk,f(xk)), tantos como se desee.(k=1...n) A
medida que aumenta el número de pares, la aproximación lineal es más exacta.
n
x = ∑ xk λk
k =1
n
y = ∑ f ( x k )λ k
k =1
n
∑λ k =1
k =1
Siendo 8k un conjunto de pesos que multiplican a los pares (xk,f(xk)), de manera que 0 # 8k
#1 ∀ k, y la suma de todos ellos es igual a 1.
f(xk)
f(x4)
f(x3)
f(x2)
f(x1)
x1 x2 x3 x4 xk
.
Para que la aproximación sea coherente, es necesario obligar que sólo dos variables 8k
(k=1...n) consecutivas sean distintas de cero. De esta manera x pertenecerá a uno sólo de
los segmentos que aproximan la curva e y tomará el valor de f(x).
Para obligar esta condición es preciso utilizar variables auxiliares binarias γk (k=1...n-1) que
10
Construcción de modelos de Programación Lineal
acotan a los pesos de la siguiente manera:
λ1 ≤ γ 1
λ2 ≤ γ 1 + γ 2
λ3 ≤ γ 2 + γ 3
M
λn ≤ γ n−1
Imponiendo además la condición de que sólo una de las variables binarias sea positiva:
n −1
∑γ
k =1
k =1
n −1
x = ∑ zk
k =1
Cada una de estas variables zk continuas se acota dentro de su intervalo (xk,xk+1), y sólo una
de ellas puede ser positiva. Para lograr esto, al acotar cada variable dentro de su intervalo,
se multiplican los extremos de cada intervalo por una variable auxiliar binaria. Finalmente la
suma de todas las variables binarias debe ser igual a 1.
x1δ 1 ≤ z1 ≤ x 2δ 1
x 2 δ 2 ≤ z 2 ≤ x 3δ 2
M
x n −1δ n −1 ≤ z n −1 ≤ x nδ n −1
n −1
∑δ
k =1
k =1
Queda no obstante por modelar el valor de la variable y. Para ello basta sumar las
diferentes rectas de la aproximación lineal, teniendo en cuenta la ordenada en el origen
para cada una de ellas.
Para el segmento (xs,xs+1), la recta que aproxima la función no lineal pasa por los puntos
(xs,f(xs)), (xs+1,f(xs+1)), de acuerdo a la expresión:
f ( x s +1 ) − f ( x s )
y = f ( xs ) + ( x − xs )
x s +1 − x s
es decir
f ( x s +1 ) − f ( x s ) f ( x s +1 ) − f ( x s )
y= x + f ( xs ) − xs
x s +1 − x s x s +1 − x s
11
Construcción de modelos de Programación Lineal
n −1
⎛ f ( x s +1 ) − f ( x s ) ⎞ n −1
⎛ f ( x s +1 ) − f ( x s ) ⎞
y = ∑ ⎜⎜ ⎟⎟ z s + ∑ ⎜⎜ f ( x s ) − ⎟⎟ δ s
s =1 ⎝ x s +1 − x s ⎠ s =1 ⎝ x s +1 − x s ⎠
Nos referimos pues a situaciones en que dos (o más) restricciones no se pueden cumplir a
la vez, (se debe satisfacer una u otra), pero que exigen la inclusión de ambas (todas) ya
que a priori se desconoce cual de ellas se va a satisfacer.
∑a
j =1
j xj ≤ b
∑c
j =1
j xj ≤ d
La forma de satisfacer una o la otra consiste en usar una variable binaria δ al estilo de la
formulación considerada en el punto X.6.3, apartado A.
∑a
j =1
j x j ≤ b + M 1 (1 − δ )
∑c
j =1
j x j ≤ d + M 2δ
De esta manera, cuando δ=1 la primera restricción se cumple, mientras que la segunda
restricción se desplaza paralelamente a sí misma en una cantidad M2 que la sitúa fuera de
la región de admisibilidad, de manera que no contribuye a la definición de la misma.
Este apartado presenta una metodología para modelar implicaciones lógicas entre variables
binarias. Se trata en definitiva de introducir el modelado de tablas de verdad, donde la
combinación de ciertos valores de unas variables implica que otra variable (auxiliar o de
12
Construcción de modelos de Programación Lineal
decisión) binaria tome un valor determinado.
Para comenzar pensemos en una tabla de verdad que recoge los valores posibles de dos
variables de decisión de un problema δ1 y δ2. En la tercera columna se representa el valor
de una tercera variable φ en función de los valores de las anteriores.
δ1 δ2 φ
0 0 0
1 0 1
0 1 0
1 1 0
Cada fila se modela mediante una restricción. Así pues introduciremos una restricción que
obliga a φ a tomar valor 1 cuando δ1 vale 1 y δ2 es cero. Para ello procedemos de la
siguiente manera:
La primera parte de la restricción esta formada por las variables δ1 y δ2. Si el valor de la
variable δi es 1 se suma un término igual a la variable. Si el valor de δi es cero se suma un
término igual a (1-δi ). A continuación se escribe el signo ≤. El término de la derecha de la
restricción comienza con una constante igual al número de variables δi menos uno. A
continuación se suma la variable implicada si ésta ha de tomar valor 1 o el complemento a
uno de la variable si esta ha de tomar valor cero.
δ1 + (1- δ2) ≤ 1+ φ
Supongamos ahora que la función objetivo del problema fuera maximizar y el coste
unitario de φ es positivo. En este caso, siempre que sea posible la variable φ tomará
valor 1. Es preciso modelar la primera, tercera y cuarta filas de la tabla de verdad. El
procedimiento es similar al descrito, así pues:
Min { Max{t }}
i =1...N
i
Z = Max{t i }
i=1...N
La función objetivo del problema consiste ahora en la minimización de la variable Z. (Min Z).
Siendo necesario incluir N restricciones que relacionan la variable Z con cada una de las ti.
Puesto que Z es el máximo de ellas, bastará escribir:
ti ≤ Z ; i = 1...N
Max Z
sa :
Z ≤ ti i = 1...N
Max 2x1+x2
sa:
-x1 + ½ x2 ≤ 1, sí x1≤ 1
½ x1 – x2 ≤ 1, sí x2 ≤ 1
x1,x2 >= 0
14
Construcción de modelos de Programación Lineal
-x1 + ½ x2 =1
x2
Región admisible
cuando x1≤1
½ x1 – x2 = 1
x2≤ 1
x1
Que define una región no convexa dependiendo de los valores de las variables x1 y x2. La
forma de modelar esta situación pasa necesariamente por la inclusión de variables binarias
auxiliares. En definitiva existen dos conjuntos de restricciones diferentes que no se pueden
satisfacer de forma conjunta. Para resolver este problema utilizamos una formulación similar
a la de conjuntos de restricciones disyuntivas.
A) x1 ≤ 1
-x1 + ½ x2 ≤1+M1 δ1
x1≤ 1+N1 δ1
Cuando toma valor 1 las restricciones no deben actuar, esto se consigue para ciertos
valores de las constantes N1 y M1, concretamente los valores que desplazan
convenientemente las restricciones hasta fuera de la región de admisibilidad descrita
por el caso x2≤ 2.
15
Construcción de modelos de Programación Lineal
-x1 + ½ x2 =1
x2
x1≤ 4
x1
x1≤ 1
-x1 + ½ x2 =1/ 2
Por tanto su formulación sería
-x1 + ½ x2 ≤1- ½ δ1
x1≤ 1+3 δ1
B) x2≤ 1
De la misma manera, cuando x2 ≤ 1 se deben satisfacer las restricciones
½ x1 – x2 ≤ 1
x2 ≤ 1
Pero no las dos primeras (-x1 + ½ x2 ≤ 1, x1≤ 1). Para lograr este efecto se incluye una
segunda variable auxiliar δ2.
½ x1 – x2 ≤ 1+M2 δ2
x2 ≤ 1+ N2 δ2
cuya finalidad es exactamente la misma que en el caso de δ1. Además como las
variables auxiliares no pueden ser positivas al mismo tiempo, es posible sustituir δ2
por 1-δ1.
De esta forma, una vez sustituidas N2 y M2 de forma conveniente, el caso analizado puede
ser formulado como:
Max 2x1+x2
sa:
-x1 + ½ x2 ≤1- ½ δ1
x1≤ 1+3 δ1
½ x1 – x2 ≤ 1-1/2 δ2
x2 ≤ 1+ 3 δ2
x1,x2 ≥ 0
δ1, δ2 (0,1)
16
Construcción de modelos de Programación Lineal
CASOS
Planificación
1.1.- Descripción.
El coste de un/a ATS que inicia su jornada laboral en la hora i-ésima es de ci pts/día.
1.2.1.- Horizonte.
El horizonte infinito sugiere el modelado del problema en régimen permanente. Esto es, se
considerara un día cualquiera, precedido de un comportamiento similar en el día anterior y
al que sigue un plan exactamente igual el día posterior. La dificultad de la puesta en
práctica de la solución del modelo radica en el primer día de trabajo, que no podrá tener en
cuenta incorporaciones realizadas en las últimas horas del día anterior.
1.2.2.- Variables.
Las variables propias del problema representan el número de ATS que se deben incorporar
en la hora i-ésima, y que representaremos mediante Xi (i=0,...,23). El número de ATS
incorporados en la i-ésima hora se compone de aquellos que descansan después de tres
(Xi3), cuatro (Xi4) y cinco (Xi5) horas del inicio de su jornada laboral.
X i = X i3 + X i4 + X i5
Puesto que el número total de ATS incorporados en la hora i se obtiene como suma de
aquellos que descansan tras trabajar tres, cuatro y cinco de horas, se usarán únicamente
las variables Xij (j=3,4,5), que proporcionan mayor información.
1.2.3.- Restricciones.
Para cada hora del día se debe satisfacer la demanda de Asistentes Técnicos
Sanitarios. La ilustración 1 muestra un esquema del número de ATS que se
encuentran trabajando durante la hora i-ésima. Son todos aquellos incorporados
desde la hora i-8 hasta la i-ésima excepto los que se encuentran descansando, es
decir, los incorporados en i-3 que descansan en la tercera hora, los que comienzan
su jornada en i-4 y descansan tras cuatro horas y los que comenzaron a trabajar en
i-5 y descansan después de cinco horas de trabajo.
i-7, j
x i-5, j
x i-3, j
x i-1, j
x
Incorporaciones
j=3,4,5 j=3,4,5 j=3,4,5 j=3,4,5
hasta la hora
i-ésima x i-8, j
x i-6, j
x i-4, j
x i-2, j
x i, j
j=3,4,5 j=3,4,5 j=3,4,5 j=3,4,5 j=3,4,5
Descansan x i-3, 3
durante la hora
i-ésima x i-4, 4
x i-5, 5
18
Construcción de modelos de Programación Lineal
Así pues, el número de ATS que se encuentra disponible en la hora i-ésima, deberá
satisfacer la demanda de dicha hora di. Esta restricción se puede expresar como:
≥ ∀i = 8,...,23
i 5
∑ ∑X
k =i - 8 j=3
kj - X i -3,3 - X i -4,4 - X i -5,5 di
En el caso en que se considere como horizonte un único día, esta restricción sólo
tendría validez para i=8,...,15. Siendo necesaria su particularización para las
restantes horas del día. Para i < 8 el primer sumatorio deberá comenzar para k=0.
Si i <3 ningún ATS se encuentra en su hora de descanso. En el caso i > 15 el
primer sumatorio finalizaría en K=15, ya que la incorporación de ATS en horas
posteriores supondría el incumplimiento de su jornada laboral de 8 horas (trabajarían
un número menor de horas).
≥
i 5
∑ ∑X
k =i - 8 j= 3
kj - X i -3,3 - X i -4,4 - X i -5,5 di ∀i = 8,...,31
El enunciado del caso indica la existencia de una cota superior M para el número de
ATS que se pueden contratar durante un día. En este caso, la suma de los ATS
incorporados durante cada una de las 24 horas del día no podrá superar el valor M.
Esta acotación se puede expresar como sigue:
≤
23 5
∑∑ X
i=0 j=3
ij M
1.2.4.- Objetivo.
19
Construcción de modelos de Programación Lineal
23 5
MIN ∑∑c
i=0 j=3
i X ij
1.2.5.- Modelo.
≥
i 5
∑ ∑X
k =i - 8 j= 3
kj - X i -3,3 - X i -4,4 - X i -5,5 di ∀i = 8,...,31
23 5
∑∑ X
i=0 j=3
ij ≤ M
X ij ≥ 0; i = 0,...,31, j = 3,4,5
1.3.1.- Variables.
Sean Xij* los valores óptimos de las variables para el modelo descrito en el apartado 2.5.
En ese caso, para el primer día (puesta en marcha del plan de contratación) se puede
formular un modelo similar al descrito en el citado apartado:
23 5
MIN ∑∑c
i=0 j=3
i X ij
≥
i 5
∑ ∑X
k =i - 8 j=3
kj - X i -3,3 - X i -4,4 - X i -5,5 di i = 8,...,15
i 5
∑∑ X kj - X i -3,3 - X i -4,4 ≥ di i= 4
k =0 j=3
i 5
∑∑ X kj - X i -3,3 ≥ di i= 3
k =0 j=3
i 5
∑∑ X kj ≥ di i = 0,..,2
k =0 j=3
23 5
∑∑ X
i=0 j=3
ij ≤ M
X ij ≥ 0; i = 0,...,23, j = 3,4,5
21
Construcción de modelos de Programación Lineal
ciertos ATS durante dos turnos de trabajo así como un aumento de los emolumentos
percibidos por los mismos, usualmente mayor al que les correspondería por un segundo
turno).
Tampoco se han tenido en cuenta posibles costes fijos como los debidos al alta en plantilla
de los ATS. Su consideración podría suponer un aumento en el número guardias solicitadas
a los ATS, en detrimento del número de ATS que se mantienen en plantilla.
22
Construcción de modelos de Programación Lineal
2.1. Descripción.
La cadena de Pizzerías “Mamma Mía” ha observado que durante una hora determinada del
día la venta de Pizzas alcanza un valor muy importante, concentrándose la misma en tres tipos
de productos, Pizzas tipo A, B, C. La demanda de pizzas A supone un 50%, y las de tipos B y
C un 30% y 20% respectivamente. La cadena dispone de un tipo estándar de establecimiento,
de manera que en cada uno de ellos, la elaboración de pizzas queda encargada a un operario
que dispone de dos hornos, llamados H1 y H2. Con el fin de evitar mezclas de sabores, la
directriz de la compañía consiste en que en los hornos H1 se elaboren únicamente pizzas A y
B, mientras en los H2 se prepararán tipos A y C.
Los tiempos de paso por horno de los productos son conocidos, T1A, TB, TC y T2A. Cada
establecimiento dispone de un número máximo de bases para pizzas, NP, con el objetivo de
atender las necesidades de la hora en cuestión.
Se desea construir el plan de producción para esa hora punta, para cada establecimiento, de
manera que se satisfaga en lo mayor posible la demanda. Es necesario tener en cuenta que
en ningún caso se deben producir más de dos Pizzas del mismo tipo consecutivas (en el
mismo horno), para evitar que se enfríen, pues la experiencia demuestra que esto supone
elevada pérdidas al ser rechazadas por los clientes.
2.2. Discusión.
En un primer momento supondremos que un único operario se encarga de los dos hornos.
De esta manera, cuando un horno procesa una pizza, el otro horno está vacío. Esta
consideración facilita el modelado de restricciones de consecutividad en la elaboración de
pizzas, es decir, resulta sencillo impedir que no se horneen dos pizzas consecutivas del
mismo tipo en el mismo horno, entendiendo que el turno de descanso en el horno rompe la
consecutividad. La dificultad que presenta esta condición queda de manifiesto en el
siguiente ejemplo:
A A A
H1
H2
C A
Se procesan tres pizzas tipo A de forma consecutiva en el horno H1. Es imposible conocer a
priori el numero de bases a tener en cuenta para evitar este problema. El modelado que se
formula a continuación impedirá que mas de dos pizzas consecutivas de la cadena de
bases de pizzas vayan al mismo horno, pero podría ocurrir algo como lo que se muestra en
el gáfico anterior, esto es, en el horno 1 entran tres pizzas seguidas del tipo A, aunque en la
cadena no ocupen lugares consecutivos. Para evitar este problema se formulará
posteriormente un modelo mas complejo.
2.3.1. Variables.
23
Construcción de modelos de Programación Lineal
2.3.2. Restricciones.
∑δ
i =1
ij =1 ∀j = 1....NP
En principio podría parecer conveniente modelar las demandas como pesos de los
distintos tipos de pizzas en la función objetivo del modelo. Sin embargo, esta
solución no conlleva la satisfacción de la demanda, por tanto resulta mas
conveniente incluir restricciones que obliguen a producir pizzas en las proporciones
requeridas.
Pizzas tipo A
2 NP
∑∑ δ
i =1 J =1
ij ≥ 0.5D
Pizzas tipo B
NP
∑δ
J =1
3j ≥ 0.3D
Pizzas tipo C
NP
∑δ
J =1
4j ≥ 0.2 D
24
Construcción de modelos de Programación Lineal
Esta restricción obliga a que se termine la fabricación de pizzas dentro del intervalo
temporal de la hora de máxima venta. En realidad no es preciso formular esta
restricción, salvo que se desee comprobar si es posible realizar todo el trabajo en el
plazo de una hora. Suponiendo que los tiempos de procesado están expresados en
minutos, de acuerdo a la siguiente tabla, la restricción se formula como:
NP
∑ (t
j =1
δ + t 2 Aδ 2 j + t Bδ 3 j + t C δ 4 j ) ≤ 60
1A 1 j
Para formular esta restricción, estamos suponiendo que mientras una pizza se
elabora en un horno, el otro horno descansa, por eso tiene sentido la suma
acumulada de tiempos en la restricción anterior. Posteriormente veremos un
modelado más realista de esta situación. Con la suposición anterior la restricción se
formula impidiendo que mas de dos pizzas consecutivas en la cadena de bases sean
del mismo tipo:
δ ij + δ ij +1 + δ ij + 2 ≤ 2 i = 1,2,3,4; j = 1...NP
NP 4
Min ∑∑ δ
j =1 i =1
ij
Se trata de un modelo alternativo formulado para conseguir que no se procesen dos pizzas
consecutivas en el mismo horno aunque ocupen lugares distantes en la cadena de bases
de pizzas. Ahora se considera que los dos hornos trabajan simultáneamente, lo que resulta
mas realista a la vez que disminuye el tiempo total de elaboración del conjunto de pizzas.
Consideraremos dos filas o cadenas de pizzas, una para cada horno. La suma del número
de bases de pizzas de las dos filas será igual al número de bases disponibles NP. Nuestro
problema radica ahora en la determinación de la longitud de cada una de las cadenas, de
manera que puedan ser usadas como límites en los sumatorios correspondientes.
El cálculo de las longitudes de las filas de pizzas se realizará de manera que ambos hornos
25
Construcción de modelos de Programación Lineal
terminen su trabajo al mismo tiempo, siempre que esto sea posible. Además, todas las
pizzas tipo B se elaborarán en el horno 1 y las de tipo C en el horno 2. para ello
supondremos inicialmente que se ha de satisfacer la demanda de pizzas tipo B y C,
posteriormente repartiremos las pizzas tipo A entre las dos filas.
El número de pizzas tipo B que denotaremos por NB será igual al entero superior a 0,3 D.
NB = ⎡0,3D ⎤
El número de bases reservadas para pizzas tipo C, NC, será el entero superior al 20% de la
demanda de la hora punta.
NC = ⎡0,2 D ⎤
NA1 t A1 + NB t B = NA2 t A2 + NC t C
Además NA1 + NA2 ≥ ⎡0,5 D ⎤ . Podremos suponer en un principio que se cumple con signo
de igualdad, tendremos así una cota inferior del número de pizzas tipo A. Las dos
ecuaciones anteriores permiten despejar el valor de NA1 y NA2.
Sean NP1 y NP2 las longitudes de las dos filas de pizzas correspondientes a los hornos 1 y
2. La suma de ambas debe ser igual a NP, además NP1 ≥ NA1+NB y NP2 ≥ NA2 + NC.
2.4.1. Variables.
Ahora para cada una de las filas escogeremos un tipo de variable de decisión binaria, de
acuerdo a:
⎧ 1 Si la pizza tipo i (A, B) ocupa la posición j - ésima de la cadena de bases para pizzas en horno 1
δ ij ⎨
⎩0 En otro caso
⎧ 1 Si la pizza tipo i (A, C) ocupa la posición j - ésima de la cadena de bases para pizzas en horno 2
γ ij ⎨
⎩0 En otro caso
2.4.2. Restricciones.
2 NP1 2 NP1
∑∑ δ ij ≤ 1
i =1 j =1
∑∑ γ
i =1 j =1
ij ≤1
Pizzas tipo A
NP1 NP 2
∑δ
J =1
1j + ∑ γ 2 j ≥ 0 .5 D
j =1
Pizzas tipo B
NP1
∑δ
J =1
3j ≥ 0.3D
Pizzas tipo C
NP 2
∑γ
J =1
4j ≥ 0.2 D
δ ij + δ ij +1 + δ ij + 2 ≤ 2 i = 1,3; j = 1...NP1
γ ij + γ ij +1 + γ ij + 2 ≤ 2 i = 2,4; j = 1...NP 2
NP1 NP 2
Min ∑∑ δ ij +
i =1, 3 j =1
∑ ∑γ
i = 2 , 4 j =1
ij
27
Construcción de modelos de Programación Lineal
3.1. Descripción.
Una cadena de T.V. pretende realizar la programación de espacios para 8 horas. Para ello
dispone de un conjunto de programas de los que se conoce su duración (véase la tabla 1).
Por otra parte, para cada una de las 8 horas, se conoce el número de personas que hay
viendo la televisión, es decir, la audiencia total (véase la tabla 2). Además, se disponen de
datos sobre la cuota (en tanto por cien) de audiencia que obtiene dicha cadena de T.V. si un
determinado programa se proyecta una hora dada de las ocho en cuestión (véase la tabla
3).
El problema que se plantea es decidir qué programa se transmite cada hora con el criterio
de maximizar la audiencia durante las ocho horas consideradas.
Tabla 1
Program Duración Tabla 2
1 3 Hora Audiencia
2 4 1 500000
3 3 2 450000
4 1 3 400000
5 1 4 450000
6 2 5 450000
7 1 6 500000
8 2 7 550000
9 1 8 550000
10 1
Tabla 3
H H H H H H H H
P1 33 20 40 50 60 21 19 14
P2 56 45 32 23 25 78 90 21
P3 76 12 23 43 56 76 34 23
P4 87 28 25 24 34 54 74 33
P5 21 32 43 54 65 76 56 34
P6 16 19 21 23 25 32 34 35
P7 76 14 24 28 65 45 34 90
P8 10 8 9 11 12 15 23 24
P9 25 34 33 36 37 56 45 34
P10 44 54 56 76 87 76 65 54
28
Construcción de modelos de Programación Lineal
Se desea modelar el problema mediante programación lineal en notación compacta. Se
considerará que los programas se emiten sin cortes, es decir, una vez que un programa
comienza a emitirse no se interrumpe su emisión.
3.2.1. Horizonte.
Datos
I Horas de programación (i=1...8)
J Programa a emitir (j=1...10)
Ai Audiencia total correspondiente a la hora i-ésima
Dj Duración del programa j-esimo
Cij
3.2.2. Variables.
Para modelar el problema usaremos dos conjuntos de variables binarias, tal y como se
definen a continuación.
De esta manera se podrá conocer la hora de emisión de cada programa y que programa se
está emitiendo durante cada una de las ocho oras de programación.
3.2.3. Restricciones.
En primer lugar, cada programa se emite a lo sumo una vez, por tanto, sumando
para todas las horas de programación, la suma de variables que indican el inicio de
cada programa debe ser ≤ 1. El signo ≤ corresponde a la posibilidad de que un
determinado programa no se emita.
∑δ
i =1
ij ≤1 j = 1...10
29
Construcción de modelos de Programación Lineal
3.2.3.2. Acotación de la longitud de programas según hora de inicio.
D j δ ij ≤ 8 − i + 1 i = 1...8; j = 1...10
Cada hora de programación debe quedar cubierta por uno y solo uno de los
programas preparados para emisión. Basta igualar a 1 la suma en j (para todos los
programas) de las variables que indican que programa cubre la hora i-ésima.
10
∑β
j =1
ij =1 i = 1...8
Cuando un programa comienza a emitirse en la hora i-esima, todas las horas que
van desde i hasta la de finalización del programa deben quedar cubiertas por el
programa que está siendo emitido. De otra forma podría existir discontinuidad en la
emisión de programas. Esta restricción de continuidad se formula:
i + D j −1
D j δ ij ≤ ∑β
k =i
kj i = 1...(8 − D j + 1) ; j = 1...10
Por último hay que garantizar que si un programa no comienza a emitirse en ninguna
hora no pueda ser visto en otras horas. La falta de esta restricción podría acarrear la
aparición de un programa que se ha decidido no emitir en determinadas horas.
⎛ 8 ⎞ 8
D j ⎜ ∑ δ ij ⎟ ≤ ∑ β ij j = 1...10
⎝ i =1 ⎠ i =i
8
Ai ⎛ 10 ⎞
Max ∑ ⎜ ∑ cij β ij ⎟
⎜
i =1 100 ⎝ j =1
⎟
⎠
30
Construcción de modelos de Programación Lineal
3.2.5. Modelo del caso.
8
Ai ⎛ 10 ⎞
Max ∑ ⎜ ∑ cij β ij ⎟
⎜
i =1 100 ⎝ j =1
⎟
⎠
sa:
8
∑δ i =1
ij ≤1 j = 1...10
D j δ ij ≤ 8 − i + 1 i = 1...8; j = 1...10
10
∑β
j =1
ij =1 i = 1...8
i + D j −1
D j δ ij ≤ ∑β
k =i
kj i = 1...(8 − D j + 1) ; j = 1...10
⎛ 8 ⎞ 8
D j ⎜ ∑ δ ij ⎟ ≤ ∑ β ij j = 1...10
⎝ i =1 ⎠ i =i
31
Construcción de modelos de Programación Lineal
4.1.- Descripción.
Una compañía minera desea componer un plan de explotación de minas para los próximos
5 años. La zona geográfica objeto del estudio contiene cuatro minas. Durante cada año la
compañía podrá extraer mineral de a lo sumo tres de las minas.
1 5 1 2
2 4 2 2,5
3 5 3 1,3
4 5 4 3
Tabla 1 Tabla 2
La calidad del mineral (% mineral puro sobre material extraído) que se extrae de cada una
de las minas se resume en la Tabla 3. La calidad prevista que exige el mercado puede
resumirse para cada año del horizonte de extracciones en la Tabla 4.
1 0.95 1 0.9
2 0.7 2 0.8
3 0.99 3 0.85
4 0.5 4 0.6
Tabla 3 5 0.95
Tabla 4
32
Construcción de modelos de Programación Lineal
4.2.1.- Horizonte.
Para cada mina con posibilidad de extracción es preciso determinar la cantidad de mineral
extraído de manera que la mezcla de mineral procedente de las diferentes minas satisfaga
las demanda del mercado y la calidad exigida por el mismo.
4.2.2.- Variables.
Las variables naturales del modelo representan la cantidad de mineral que debe ser
extraído de cada mina durante cada uno de los años que durará el plan de explotación.
Dichas cantidades se representarán mediante la letra X afectada de dos subíndices, el
primero de ellos (i) hace referencia a cada una de las minas y el segundo (t) al año dentro
del horizonte de planificación.
Así pues contaremos con 20 variables Xit ; i =1,...,4 ; t =1,...,5. Las cantidades extraídas
serán mayores o iguales a cero, y en principio parece adecuado considerar estas variables
como continuas, pues no se deduce del modelo la necesidad de extraer un número entero
de toneladas de mineral.
33
Construcción de modelos de Programación Lineal
⎧ 1 Si la compañia tiene o adquiere ⎫
⎪ ⎪
γ it = ⎨ derecho de explotacion para la mina i en el año t ⎬
⎪ 0 En otro caso ⎪
⎩ ⎭
i = 1 ,..., 4 ; t = 1 ,..., 5
4.2.3.- Restricciones.
δ it ≤ γ it i = 1 , ... , 4 ; t = 1 , ... , 5
Durante cada uno de los años del horizonte de planificación, la compañía puede, a lo
sumo, extraer mineral de tres de las minas. Puesto que γ es la variable indicativa de
extracción, la suma extendida a todas las minas de dicha variable debe ser menor o
igual a 3.
≤
4
∑δ
i=1
it 3 t = 1 , ... , 5
34
Construcción de modelos de Programación Lineal
4.2.3.3.- Pérdida de derecho de explotación.
X it ≤ Ci i = 1 , ... , 4 ; t = 1 , ... , 5
35
Construcción de modelos de Programación Lineal
término independiente es una constante, basta con multiplicarlo por la variable δit.
Así, cuando δit=0 se fuerza que Xit=0.
X it ≤ Ci δ it i = 1 , ... , 4 ; t = 1 , ... , 5
∑
i=1
X it ≥ dt t = 1 , ... , 5
∑Q
i=1
i Xit ≥ Qt d t t = 1 , ... , 5
El conjunto anterior de restricciones relaciona, para cada año, la calidad exigida por
el mercado con las cantidades y calidades de mineral extraídas de cada una de las
minas. Obsérvese la formulación lineal de cada una de las restricciones. Se ha
considerado que la calidad del mineral obtenido tras la mezcla (de los minerales
procedentes de cada mina activa) se obtiene de forma aproximada como una media
ponderada de las calidades de cada mina. Puesto que la demanda (2.3.5) puede no
satisfacerse con signo de igualdad, pude ser mas exacto considerar una
restricciones del tipo:
4 4
∑Qi Xit ≥ Qt
i=1
∑X
i =1
it t = 1 , ... , 5
36
Construcción de modelos de Programación Lineal
Que utiliza la suma de cantidades extraídas para calcular la calidad media del
mineral obtenido tras la mezcla. Ambas restricciones coinciden cuando las
cantidades extraídas satisfacen exactamente la demanda. La equivalencia de ambos
tipos de restricciones se podrá analizar con mayor profundidad tras la formulación de
la función objetivo.
4.2.4.- Objetivo.
4 5
Min ∑ ∑R it γ it
i=1 t=1
donde Rit se puede expresar en función del royalty del primer año Ri1
t -1
R it = R i1 ( 1.1 ) t = 1 , ... , 5
4.2.5.- Modelo.
4 5
Min ∑ ∑R it γ it
i=1 t=1
sa:
δ it ≤ γ it i = 1 , ... , 4 ; t = 1 , ... , 5
37
Construcción de modelos de Programación Lineal
4
∑δ
i=1
it ≤ 3 t = 1 , ... , 5
∑
i=1
X it ≥ dt t = 1 , ... , 5
4 4
∑Qi Xit ≥ Qt
i=1
∑X
i =1
it t = 1 , ... , 5
X it ≥ 0, γ it , δ it binarias
En el caso en que el mineral extraído en exceso pudiera ser vendido a un precio residual de
m $/Ton, la restricción de demanda podría ser formulada:
∑
i=1
X it - E t = dt t = 1 , ... , 5
donde Et (t=1,...,5) son variables continuas que miden el exceso de mineral extraído para
cada año. En este caso, la función objetivo del problema queda:
⎡ ⎤
∑( )
4 5
Min ∑ ⎢ R it γ it - m E t ⎥
i=1 ⎣ t=1 ⎦
38
Construcción de modelos de Programación Lineal
5.1.- Descripción
Para facilitar el mantenimiento y los repuestos se desea que del nuevo grupo de aeronaves
que se adquiera, uno de los tipos de avión sea dominante, adquiriendo al menos 10
unidades del mismo. Además, por razones de diversificación y de especialización de la flota,
en el caso de que se adquiera un tipo de avión, la cantidad mínima que se compre debe ser
al menos de 2 unidades.
5.2.- Modelado
5.2.1.- Horizonte.
Se considera un año. Con respecto a un año se analizan los costes de personal, las
limitaciones presupuestarias de mantenimiento, de capacidad de mantenimiento y los
beneficios netos aportados por los nuevos aviones. La adquisición de los aviones está
limitada por la limitación global (no temporal) del presupuesto de compra.
5.2.2.- Variables.
Variables propias: Las que representan lo que se desea conocer, que en este caso son
39
Construcción de modelos de Programación Lineal
el número de aviones que se adquieren de cada tipo. Precisando, A,
B y M reflejarán en el modelo el número de aviones de cada tipo que
se recomienda adquirir.
5.2.3. Restricciones.
5.2.4.- Criterio(s).
Las soluciones admisibles se valoran con respecto al beneficio anual neto que aportará el
empleo de los aviones comprados.
5.2.5 Datos.
Restricciones:
Compra (u.m.) 3000 A + 4200 B + 2750 M # 75000
40
Construcción de modelos de Programación Lineal
Mantenimiento (días) 38 A + 45 B + 42 M # 800
Mantenimiento (u.m.) 18 A + 20 B + 19 M # 1000
A,B,M≥0
A ≥ 10 γA B ≥ 10 γB M ≥ 10 γM γA + γB + γM = 1
De esta forma se obliga a que haya un tipo de avión dominante y no se impone ninguna otra
limitación sobre el número de aviones adquiridos de cada tipo.
αA = 1 implica A ≥ 2 y αA = 0 implica A = 0
A ≥ 2 αA B ≥ 2 αB M ≥ 2 αM
recoge la primera implicación, mientras que para la segunda implicación escribimos las
relaciones,
41
Construcción de modelos de Programación Lineal
A ≤ 25 αA B ≤ 18 αB M ≤ 28 αM
Restricciones
Avión dominante:
A ≥ 10 γA B ≥ 10 γB M ≥ 10 γM γA + γB + γM = 1
A ≥ 2 αA B ≥ 2 αB M ≥ 2 αM
A ≤ 25 αA B ≤ 18 αB M ≤ 28 αM
Una vez obtenido el modelo completo, es conveniente señalar sus características, las
limitaciones del modelo propuesto y lo que se puede esperar de su análisis y resolución.
Se ha construido un modelo lineal en sus variables. Para ello se ha optado por una
expresión lineal de las condiciones. En este sentido, la descripción de las relaciones que
obligan a la existencia de un avión dominante también pueden intentarse mediante otras
expresiones alternativas:
42
Construcción de modelos de Programación Lineal
5.5.1.- La suma de las variables indicadores es, al menos, la unidad.
A ≥ 10 γA B ≥ 10 γB M ≥ 10 γM γA + γB + γM ≥ 1
A γA + B γB + M γM ≥ 10 γA + γB + γM = 1
A γA + B γB + M γM ≥ 10 γA + γB + γM ≥ 1
para que varias variables indicadores puedan ser 1. Pero esta formulación es incorrecta, ya
que valores del número de aviones inferiores a 10 harían que se cumplieran las
restricciones sin que respetaran la imposición de un tipo de avión dominante. Así, por
ejemplo, A = B = M = 4 con todos los valores de las variables indicadoras a la unidad
satisfacen la expresión pero no existe avión dominante (nótese que estos valores no
satisfacen la restricción 5.2).
Otro aspecto es la decisión de obligar a que las variables A, B y M que recogen el número
de aviones que se compran sean enteras o no. Obviamente, los valores fraccionarios de
estas variables no tienen significado en un sentido estricto. Sin embargo, la complejidad
añadida para el análisis y resolución del modelo que supondría el considerarlas como
variables enteras es probablemente superior al incremento en la precisión y realismo del
modelo que con ello se conseguiría. Por estas consideraciones se prefiere modelarlas como
variables continuas y “redondear convenientemente” a posteriori su significado. En cuanto a
las variables empleadas para escribir, mediante restricciones lineales, las condiciones
lógicas que ha de satisfacer el número de aviones adquiridos, éstas son intrínsecamente
binarias y no tiene sentido aproximarlas a partir de valores fraccionarias. Sería una
distorsión fundamental en el modelo, por lo que se asume la complejidad añadida y se
tratan explícitamente como variables enteras.
44
Construcción de modelos de Programación Lineal
6. Fabricación de bobinas
6.1.- Descripción.
Las órdenes de los clientes se refieren a bobinas de papel de distintos anchos e igual
longitud que la bobina producida. Debido al carácter de los pedidos, la fábrica dispone de
una sección de corte longitudinal de las bobinas, de acuerdo al ancho de los diferentes
pedidos. El problema se plantea a la hora de decidir de qué forma se efectuarán los cortes,
pues las bobinas resultantes de menos de 55 c.m. de ancho suponen elevadas pérdidas.
55 100
60 200
178 150
El objetivo es minimizar los trozos de bobina que tras el corte no satisfacen el pedido.
6.2.1.- Problemática.
El pedido especifica el número de bobinas requeridas para los anchos de 55 c.m., 60 c.m. y
178 c.m. Por lo tanto, dada una bobina los cortes a efectuar deberán conseguir alguno de
los anchos anteriores.
Analizando los posibles cortes a realizar sobre una bobina, identificamos 7 cortes (A,...,G),
dando lugar cada uno de ellos a un determinado número de bobinas de los tipos requeridos
en el pedido (55 c.m., 60 c.m. y 178 c.m.). Además, el corte puede dar lugar a un AResto@
no aprovechable en el pedido.
A continuación se muestra, para cada uno de los siete tipos de corte, el número de bobinas
de cada uno de los anchos a que da lugar. En la columna AResto@ se especifica el ancho
del resto no aprovechable en el corte correspondiente:
45
Construcción de modelos de Programación Lineal
A 4 - - 30
B - 4 - 10
C 3 1 - 25
D 2 2 - 20
E 1 3 - 15
F 1 - 1 17
G - 1 1 12
6.2.2.- Variables.
Asociado a cada uno de los siete tipos de corte se definirá una variable representativa del
número de cortes a realizar de ese tipo. En concreto, las variables serán: XA, XB, XC, XD,
XE, XF y XG. Obviamente, estas variables son enteras ya que el número de cortes no
puede ser un número fraccionario.
6.2.3.- Restricciones.
4 X A + 3 X C + 2 X D + X E + X F ≥ 100 55 c.m.
4 X B + X -C + 2 X D + 3 X E + X G ≥ 200 60 c.m.
X F + X G ≥ 150 178 c.m.
6.2.4.- Objetivo.
46
Construcción de modelos de Programación Lineal
Min X A + X B + X C + X D + X E + X F + X G
6.2.5.- Modelo.
Min X A + X B + X C + X D + X E + X F + X G
sa:
4 X A + 3 X C + 2 X D + X E + X F ≥ 100 55 c.m.
4 X B + X -C + 2 X D + 3 X E + X G ≥ 200 60 c.m.
X F + X G ≥ 150 178 c.m.
X A , X B , X C , X D , X E , X F , X G ≥ 0 enteras
Min 30 X A + 10 X B + 25 X C + 20 X D + 15 X E + 17 X F + 12 X G
Con esta función objetivo se penalizan más aquellos cortes que dan lugar a un mayor ancho
en el resto.
Otra posible modificación a introducir en el modelo es el tipo de las variables. Es claro que
el número de cortes a realizar de cada tipo es entero, no obstante si el valor de las variables
es elevado no se comete mucho error en cuanto a optimalidad suponerlas continuas y
realizar a posteriori un Aredondeo@ a valores enteros.
47
Construcción de modelos de Programación Lineal
Asignación
7.1.- Descripción.
7.2.-Modelado.
7.2.1.- Horizonte.
7.2.2.- Variables.
• Variables propias: Están asociadas a las decisiones a tomar, esto es, lo que se desea
conocer. En este caso son el número de alumnos que de cada una de las zonas es
asignado a cada uno de los institutos. Precisando, si con el subíndice i denotamos zonas
(i=1,2,3,4.) y con el j institutos (j=1,2,3), las variables serán x ij ∀i, j.
• Variables auxiliares: En caso de ser necesarias, surgirán durante el diseño del modelo.
48
Construcción de modelos de Programación Lineal
7.2.3.- Restricciones
Serán las condiciones que deben cumplir las distintas asignaciones de alumnos a institutos.
7.2.4.- Criterio(s)
Las soluciones admisibles se valorarán según la distancia acumulada a que dan lugar.
7.2.5.- Datos.
7.2.5.1.- En relación a cada uno de los institutos, la capacidad de cada uno de ellos.
7.2.5.3.- En relación con el criterio de evaluación, la distancia de cada zona a cada uno de los
institutos.
Este modelo no tiene en cuenta el equilibrado de ambas comunidades en cada uno de los
institutos. Esta característica va a ser modelada mediante restricciones del modelo. Para
ello impondremos cotas inferiores (en %), I=50-p, y cotas superiores, S=50+p, para cada
49
Construcción de modelos de Programación Lineal
comunidad en cada instituto, donde p es un parámetro del modelo que define el porcentaje
de desviación permitido frente al equilibrado total (ambas comunidades están al 50% en
cada uno de los institutos). Dada una asignación de alumnos de una zona a un instituto, los
mismos se distribuyen entre las comunidades A y B en igual proporción en que coexisten
las comunidades en la zona correspondiente.
⎛ 50 − p ⎞ ⎛ 50 + p ⎞
⎟( x 11 + x 21 + x 31 + x 41 ) ≤ x 11 + 1 x 21 + x 31 ≤ ⎜ ⎟( x + x 21 + x 31 + x 41 )
3 2
⎜
⎝ 100 ⎠ 4 5 ⎝ 100 ⎠ 11
⎛ 50 − p ⎞ ⎛ 50 + p ⎞
⎟( x 12 + x 22 + x 32 + x 42 ) ≤ x 12 + 1 x 22 + x 32 ≤ ⎜ ⎟( x + x 22 + x 32 + x 42 )
3 2
⎜
⎝ 100 ⎠ 4 5 ⎝ 100 ⎠ 12
⎛ 50 − p ⎞ ⎛ 50 + p ⎞
⎟( x 13 + x 23 + x 33 + x 43 ) ≤ x 13 + 1 x 23 + x 33 ≤ ⎜ ⎟( x + x 23 + x 33 + x 43 )
3 2
⎜
⎝ 100 ⎠ 4 5 ⎝ 100 ⎠ 13
50
Construcción de modelos de Programación Lineal
Equilibrado de ⎛ 50 + p ⎞
⎟( x + x 23 + x 33 + x 43 )
3 2
comunidad A en x 13 + 1 x 23 + x 33 ≤ ⎜
4 5 ⎝ 100 ⎠ 13
instituto 3
⎛ 50 − p ⎞
⎟( x + x 23 + x 33 + x 43 )
3 2
x 13 + 1 x 23 + x 33 ≥ ⎜
4 5 ⎝ 100 ⎠ 13
Signo de x 11 , x 12 , x 13 , x 21 , x 22 , x 23 , x 31 , x 32 , x 33 , x 41 , x 42 , x 43 ≥ 0
variables
El modelo construido es lineal en sus variables Para ello se ha optado por una expresión
lineal de las condiciones. La característica del equilibrado de las comunidades en cada uno
de los institutos se ha modelado como restricciones del modelo. No obstante, se podrían
haber introducido como otro criterio, que junto con el de minimizar la distancia acumulada
recorrida por los alumnos habría dado lugar a un problema de programación multiobjetivo.
Se ha optado por la solución propuesta debido a su mayor simplicidad para una posterior
resolución.
51
Construcción de modelos de Programación Lineal
8. Reparto de trabajos
8.1.- Descripción.
La colección de problemas está compuesta por m capítulos, constando cada uno de ellos
de un número de problemas conocido. De igual forma se conoce el tiempo que tarda cada
uno de los alumnos en realizar los problemas de los distintos capítulos. Se supone que los
problemas de cada capítulo son de igual dificultad por lo que un mismo alumno, tardaría el
mismo tiempo en resolver cualquiera de ellos.
El problema que se les plantea es repartir el trabajo a realizar entre los alumnos, de forma
que el tiempo de trabajo invertido por los distintos alumnos esté lo más equilibrado posible.
Para ello, construya un modelo que describa la situación planteada.
8.2.-Modelado.
8.2.1.- Horizonte.
8.2.2.- Datos.
Subíndices
i (i=1,...,n) alumnos
j (j=1,...,m) capítulos
Parámetros
pj número de problemas del capítulo j
tij tiempo invertido por el alumno i en realizar un problema del
capítulo j
Obsérvese que debido a que todos los problemas de un capítulo son de igual complejidad,
el tiempo en que un alumno realiza cada uno de ellos es el mismo.
8.2.3.- Variables.
• Variables propias: Están asociadas a las decisiones a tomar, esto es, el reparto de los
problemas de los distintos capítulos entre los alumnos. Para modelar las decisiones
anteriores se utilizan las variables x ij ∀i, j que denotan la fracción de problemas que
52
Construcción de modelos de Programación Lineal
cada alumno realiza de cada uno de los capítulos.
• Variables auxiliares: En caso de ser necesarias, surgirán durante el diseño del modelo.
8.2.4.- Restricciones
Serán las condiciones que deben cumplir los distintos repartos de trabajo.
8.2.5.- Criterio(s)
Para modelar el criterio de equilibrar los tiempos de trabajo invertidos por los distintos
alumnos se puede introducir una variable auxiliar umax, que sea una cota superior de los
tiempos de trabajo de los distintos alumnos. Minimizando esta cota superior, aparentemente
equilibraremos los tiempos de trabajo de los alumnos.
El primer grupo de restricciones impone para cada capítulo, que la suma de las fracciones
que los alumnos hacen del mismo sea la unidad. En el segundo grupo se fija el valor de la
variable ui, para ello se suman los tiempos que el alumno invierte en cada capítulo, que
serán el producto del tiempo invertido en un problema (tij) por el número de problemas que
realiza del mismo (pjtij). Por último, en el último grupo se impone que umax sea una cota
superior de los tiempos invertidos por los alumnos. La función objetivo asegura que umax es
el mayor tiempo de trabajo correspondiente a un alumno. La minimización del mismo hace
que la colección de problemas se termine lo antes posible, además parece intuitivo que
equilibra los tiempos de los alumnos.
53
Construcción de modelos de Programación Lineal
El modelo anterior puede no ser totalmente correcto en determinadas situaciones debido a
la forma de la función objetivo. En la función objetivo anterior no aparece ninguna forma del
desequilibrio, el cual queremos minimizar.
En situaciones donde la carga total a repartir no es constante, puede que el modelo anterior
no proporcione la solución más equilibrada. En definitiva, parece lógico modelar el
equilibrado de tiempos de trabajo de tal forma que se minimice una forma del desequilibrio.
Para ello, introduciremos una nueva variable auxiliar umin, que representa una cota inferior
del menor tiempo invertido por un alumno:
u min ≤ u i ∀i
Una forma de medir el desequilibrio es mediante la diferencia entre los tiempos invertidos
por el alumno que más trabaja y el que menos, minimizando dicha diferencia:
Obsérvese que con esta función objetivo se minimiza directamente una forma del
desequilibrio, es decir, la solución totalmente equilibrada coincide con el óptimo del modelo
con esta nueva función objetivo.
9.1. Descripción.
9.2.1.Horizonte.
9.2.2. Variables.
55
Construcción de modelos de Programación Lineal
Supongamos que todas las tareas necesitan rs unidades de memoria, entonces α=⎣R/ rs ⎦
proporciona el número máximo de tareas que se pueden asignar a cada procesador. Así
pues, β=⎡N/α⎤ es una cota superior del número de procesadores.
Por tanto, β depende de los datos del problema. Conocidos éstos, podremos formular el
modelo. El número de variables δij es Nβ, de las cuales, tras su resolución, en el óptimo, N
variables tomarán valor 1 y N(β-1) serán nulas.
9.2.3. Restricciones.
La memoria total de cada procesador es igual a R unidades. La memoria consumida por las
tareas asignadas a cada uno de ellos debe ser inferior al valor antes indicado. Así pues:
∑rδ
i =1
i ij ≤R ∀j = 1....β
Cada tarea debe ser asignada a uno y sólo uno de los procesadores, por tanto:
∑δ
j =1
ij =1 ∀i = 1....N
Para modelar esta consideración en la función objetivo del problema es necesario utilizar
una variable auxiliar γik que tome valor 1 cuando las tareas (i,k) se ejecuten en
procesadores distintos , y valor cero si lo hacen en el mismo procesador. Cualquier intento
de modelado prescindiendo de este tipo de variables complicaría enormemente la
formulación de la función objetivo.
N −1 N
Min ∑ ∑c γ
i =1 j =i +1
ij ij
Nótese que el sumatorio recoge sólo una vez cada uno de los tiempos de comunicación cij
(esto resulta válido siempre que los tiempos de comunicación sean simétricos cij= cji).
Para finalizar el modelo de este caso es necesario relacionar las variables de decisión δij
(i=1...N,j=1... .β) y las variables auxiliares γik (i=1....N,k=1....N). Para ello consideremos la
siguiente tabla que relaciona los valores que pueden tomar dichas variables:
56
Construcción de modelos de Programación Lineal
Puesto que la función objetivo responde al criterio Minimizar con coeficientes cij ≥ 0 (pues
representan tiempos), las filas primera y cuarta de la tabla anterior no necesitan un
modelado explícito, ya que si es posible, las variables tomarán valor cero. Sin embargo es
necesario forzar mediante nuevas restricciones los casos recogidos en las filas segunda y
tercera de la tabla de relación.
(1 − δ ij ) + δ kj ≤ 1 + γ ij ⎫
i = 1....N − 1, k = i + 1....N , j = 1.....β
δ ij + (1 − δ kj ) ≤ 1 + γ ij ⎬⎭
Así, cuando una de las variables de decisión es positiva y la otra es nula el término de la
izquierda para una de las restricciones toma valor cero y para la otra toma valor dos. En
último este caso la variable auxiliar se ve obligada a tomar el valor uno.
N −1 N
Min ∑ ∑c γ
i =1 j =i +1
ij ij
sa:
∑rδ
i =1
i ij ≤R ∀j = 1....β
∑δ
j =1
ij =1 ∀i = 1....N
(1 − δ ij ) + δ kj ≤ 1 + γ ij ⎫
i = 1....N − 1, k = i + 1....N , j = 1.....β
δ ij + (1 − δ kj ) ≤ 1 + γ ij ⎬⎭
57
Construcción de modelos de Programación Lineal
Recordemos que este tipo de variables facilita enormemente la formulación de los términos
que aparecen en la función objetivo. Se trata pues de N(N-1)/2 variables, para i=1....N-1,
j=i+1....N.
9.3.1. Restricciones.
k −1 N
∑ ri xik +
i =1
∑r x
i = k +1
i ik ≤ R − rk k = 1.....N
Estas relaciones se formulan mediante tres restricciones para cada trío de tareas, del modo:
La función objetivo es parecida a la del modelado anterior ya que entonces sólo intervenían
variables auxiliares, ahora convertidas en variables de decisión.
N −1 N
Min ∑ ∑c
i =1 j =i +1
ij (1 − γ ij )
La diferencia radica en que se suma el coste cuando la variable toma el valor cero (las
58
Construcción de modelos de Programación Lineal
tareas se encuentran en distintos procesadores) y no se suma (1- γij) cuando la variable
toma valor uno, es decir las tareas comparten procesador.
N −1 N
Min ∑ ∑c
i =1 j =i +1
ij (1 − γ ij )
sa:
k −1 N
∑r x
i =1
i ik + ∑r x
i = k +1
i ik ≤ R − rk k = 1.....N
9.4. Comentarios.
En cuanto a tamaño de los modelos, la siguiente tabla recoge la diferencia entre ambos:
Variables Restricciones
N ( N − 1) N ( N − 1) β + N + β
+βN
2
N ( N − 1) N ( N − 1)( N − 2)
+N
2 2
Es decir el primer modelo tiene siempre un número mayor de variables al utilizar las
variables de decisión más las auxiliares, así mismo, el número de restricciones suele ser
mayor en el primer modelo, dependiendo de los datos del problema, pues β se calcula a
partir del número máximo de tareas que se pueden albergar en un procesador, por tanto
dependen del máximo valor de rk para valores de k entre 1 y N. A priori parece que el
segundo modelo presentará una resolución mas sencilla, en este sentido sería el modelo
recomendado para esta situación.
59
Construcción de modelos de Programación Lineal
Cobertura
10.1. Descripción.
En la figura adjunta se observa la planta de un museo con once salas comunicadas por
catorce puertas. Un guardia situado en una puerta vigila las dos salas adyacentes que dicha
puerta comunica. Determinar el número mínimo de guardias que se requiere para vigilar todas
las salas del museo. ¿Cual sería la distribución de guardas si se desea que en ningún caso
haya más de un guardia por habitación?
10.2. Discusión.
Al igual que el problema anterior, este problema plantea una situación de cobertura. Es
necesario localizar un conjunto de servicios en una serie de localizaciones conocidas de
manera que quede cubierta una superficie. A partir de los datos del problema se construye
una matriz de cobertura. cuyas filas representan las habitaciones a vigilar, para las filas
usaremos el índice i (i=1...25). Las columnas de la matriz son las posibles localizaciones de
los guardias, en este caso son 14, y las representaremos mediante el índice j. Los
elementos aij de la matriz toman valor 1 si la habitación i queda cubierta por el guardia
ubicado en la puerta j. Se trata de encontrara el mínimo número de guardias que pueden
vigilar el conjunto salas del museo.
10.3. Variables.
Para cada puerta j (j=1...14) usaremos una variable binaria con el significado siguiente:
10.4. Restricciones.
Así pues:
14
∑a δ
j =1
ij j ≥1 i = 1....11
14
Min ∑ δ j
j =1
14
Min ∑ δ j
j =1
sa:
14
∑a δ
j =1
ij j ≥1 i = 1....11
En el caso en que se desea que ninguna sala quede vigilada por mas de dos guardias el
modelado anterior no es válido. En este caso es necesario permitir que algún guardia quede
en el interior de alguna de las salas. Para modelar esta situación necesitaríamos incluir
variables binarias que recojan la existencia de un guardia en cada una de las salas, además
de las variables binarias que indican la existencia de guardias en cada puerta.
Sean pues:
⎧1 Si se ubica un guardia en la puerta j - ésima ⎫
δj =⎨ ⎬
⎩0 Si no se ubica un guardia en la puerta j - ésima ⎭
Puesto que es preferible situar guardias en puertas en lugar del interior de las salas, ya que
en una puerta vigilan todas las salas que se comunican a través de la puerta, usaremos un
peso superior en la función objetivo para las variables βk.
61
Construcción de modelos de Programación Lineal
esta nueva submatriz tienen el mismo significado que los iniciales, aik toman valor 1 cuando
se sitúa un guardia en la sala k-ésima. La nueva submatriz es diagonal, pues en cada sala
se considera una única ubicación. Las nuevas restricciones del problema son similares a las
anteriores, ahora con signo de igualdad e incluyendo la variable propia de la sala.
14
∑a δ
j =1
ij j + βi = 1 i = 1....11
14 11
Min ∑ δ j + M ∑ β k
j =1 k =1
Siendo M un valor positivo mayor que la unidad que penaliza la colocación de guardias en el
interior de las salas.
62
Construcción de modelos de Programación Lineal
11.1.Descripción.
Cplus tiene que televisar el partido del año. Los productores han identificado 12 posibles
localizaciones para las cámaras y 25 áreas del estadio que requieren ser cubiertas por las
cámaras. La tabla indica la relación entre ambas:
11.2. Discusión.
Este problema plantea una situación frecuente en programación lineal denominada situación
o problema de cobertura. Es necesario localizar un conjunto de servicios en una serie de
localizaciones conocidas de manera que quede cubierta una superficie. Los problemas de
cobertura se modelan siempre de una forma estándar. En primer lugar, a partir de los datos
del problema se construye una matriz de cobertura. cuyas filas representan las zonas a
cubrir, en este caso las zonas del estadio, para las filas usaremos el índice i (i=1...25). Las
columnas de la matriz son las posibles localizaciones de las cámaras, en este caso son 12,
y las representaremos mediante el índice j. Los elementos aij de la matriz toman valor 1 si la
zona i queda cubierta por la cámara ubicada en la localización j. Se trata de encontrara el
mínimo numero de localizaciones que cubren el conjunto de las zonas.
1 2 3 4 5 6 7 8 9 10 11 12
1 1 0 0 1 0 0 0 0 1 0 0 1
2 0 0 1 1 0 0 0 1 0 0 1 0
3 1 0 0 0 1 0 0 0 0 0 0 0
4 1 1 0 0 0 0 0 0 0 0 1 0
5 0 0 1 0 0 0 0 0 0 0 0 0
63
Construcción de modelos de Programación Lineal
6 1 0 0 0 1 0 0 0 1 0 1 1
7 1 1 0 0 0 0 0 0 0 0 0 0
8 0 1 0 0 0 1 0 0 0 0 1 0
9 0 0 1 0 0 0 0 0 0 0 0 0
10 0 0 0 0 1 0 0 1 0 0 0 0
11 0 0 1 0 0 0 0 0 1 0 0 0
12 0 1 0 0 1 0 0 0 0 0 0 1
13 0 0 1 0 0 0 0 0 0 0 0 0
14 0 0 0 0 1 1 0 0 0 0 0 0
15 0 0 0 0 0 1 0 0 0 0 0 0
16 0 0 0 0 0 1 0 1 0 0 0 0
17 0 0 0 0 0 1 0 0 0 0 0 1
18 0 0 0 1 0 0 1 0 0 0 0 0
19 0 0 0 1 0 0 0 0 0 0 0 0
20 0 0 0 0 0 0 0 0 0 1 0 0
21 0 0 0 1 0 0 1 0 0 0 0 0
22 0 0 0 0 0 0 0 0 0 1 0 0
23 0 0 0 0 0 0 0 1 0 0 0 0
24 0 0 0 0 0 0 1 0 0 1 0 0
25 0 0 0 0 0 0 1 0 0 1 0 0
11.3. Variables.
Para cada localización j (j=1...12) usaremos una variable binaria con el significado
siguiente:
11.4. Restricciones.
Así pues:
12
∑a δ
j =1
ij j ≥2 i = 1,2
12
∑a δ
j =1
ij j ≥1 i = 3....25
Además, el enunciado del caso nos indica que la localización novena debe disponer de una
cámara, por tanto es preciso añadir:
64
Construcción de modelos de Programación Lineal
δ9 =1
12
Min ∑ δ j
j =1
12
Min ∑ δ j
j =1
sa:
12
∑a δ
j =1
ij j ≥2 i = 1,2
12
∑a δ
j =1
ij j ≥1 i = 3....25
δ9 =1
65
Construcción de modelos de Programación Lineal
Localización
12.1. Descripción.
Considérese una definición de distancia rectangular. Es decir, la distancia entre dos puntos
X (x1,x2) e Y(y1,y2) responde a la expresión:
Min ⎡ Max ( | X - ai | + | Y - bi | ) ⎤
⎢⎣ i=1,...,n ⎥⎦
Con el fin de disponer de una función objetivo lineal, siempre es posible traducir el máximo
anterior en un conjunto no lineal de restricciones. Para ello basta con definir una variable Z
Z = Max ( | X - ai | + | Y - bi | )
i=1,...,n
Min Z
| X - a i | + | Y - bi | ≤ Z i = 1,..., n
de la distancias:
66
Construcción de modelos de Programación Lineal
12.4. Conversión en un modelo lineal.
En el caso que nos ocupa se optará por la segunda posibilidad. El conjunto de restricciones
| X - a i | + | Y - bi | ≤ Z i = 1,..., n
X - ai + Y - bi ≤ Z i = 1,..., n
-X + ai + Y - bi ≤ Z i = 1,..., n
X - ai - Y + bi ≤ Z i = 1,..., n
-X + ai - Y + bi ≤ Z i = 1,..., n
Min Z
sa :
X + Y - Z ≤ ai + bi i = 1,..., n
-X + Y - Z ≤ - ai + bi i = 1,..., n
X - Y - Z ≤ ai - bi i = 1,..., n
-X - Y - Z ≤ - ai - bi i = 1,..., n
X, Y, Z libres
67
Construcción de modelos de Programación Lineal
12.5. Simplificaciones.
Nótese que las primeras y últimas de las restricciones tienen el mismo término
independiente cambiado de signo. Lo mismo ocurre con las restricciones segundas y
terceras. Multiplicando por -1 las restricciones segundas y últimas, se tiene:
X + Y - Z ≤ ai + bi i = 1,..., n
X - Y + Z ≥ ai - bi i = 1,..., n
X - Y - Z ≤ ai - bi i = 1,..., n
X + Y + Z ≥ ai + bi i = 1,..., n
Cada uno de los conjuntos de restricciones consiste en n restricciones idénticas en las que
varía exclusivamente el término independiente. Se trata pues de un conjunto de hiperplanos
paralelos. Por ello, para cada conjunto, n-1 restricciones resultan redundantes.
Considérense las siguientes definiciones:
s = min { ai + bi }
i
S = max { ai + bi }
i
D = max { ai - bi }
i
d = min { ai - bi }
i
Entonces, las restricciones del problema pueden simplificarse, formulándose como sigue:
X + Y - Z≤s
X - Y + Z≥D
X - Y - Z ≤d
X + Y + Z ≥S
Min Z
sa :
X + Y - Z≤s
X - Y + Z≥D
X - Y - Z ≤d
X + Y + Z ≥S
X,Y, Z libres
68
Construcción de modelos de Programación Lineal
13.1.- Descripción.
Diseñe un modelo que permita localizar las estaciones de bomberos, hasta un máximo de
B, asigne los distritos a las estaciones de bomberos que se abran (una sola estación
asignada a cada distrito, si bien varios distritos pueden ser cubiertos desde la misma
estación de bomberos) de forma que se minimice la máxima distancia que se haya de viajar
desde uno de los (centros de los) distritos hasta la estación de bomberos que se le ha
asignado.
13.2.1.- Problemática.
Las variables modelarán los dos tipos de decisiones a adoptar. En primer lugar, y asociado
a cada localización se introducirá una variable que modele si se abre o no una estación de
bomberos (Yj). En segundo lugar, dadas una localización y un distrito se tendrá que decidir
si se asigna dicho distrito a la posible estación que se abra en la localización (Xij). En total
tendremos M+M x N variables binarias.
Formalmente:
69
Construcción de modelos de Programación Lineal
⎧ 1 Si se abre una estaci n en ⎫
⎪ ⎪
Yj = ⎨ la localizaci n j ⎬
⎪ ⎪
⎩ 0 En otro caso ⎭
⎧ 1 Si el distrito i es asignado ⎫
⎪ ⎪
X ij = ⎨ a la estaci n (abierta en) j ⎬
⎪ ⎪
⎩ 0 En otro caso ⎭
i = 1 ,..., M ; j = 1 ,..., N
13.2.4.- Restricciones.
∑Y
j=1
j ≤ B
Para cada distrito, de las posibles estaciones a las que puede ser asignado, sólo lo
será a una de ellas. Como las variables que modelan la asignación de distritos a
estaciones abiertas en localizaciones son las Xij, para cada i tendremos que
∑X =
j=1
ij 1 i = 1 , ... , M
X ij ≤ Y j i = 1 , ... , M ; j = 1 , ... , N
70
Construcción de modelos de Programación Lineal
13.2.4.3.- Máxima distancia entre un distrito y su estación de bomberos.
Para modelar lo anterior se introduce para cada distrito una restricción en donde se
impone que la distancia desde el mismo a su estación sea menor o igual a U. Para
expresar la distancia entre un distrito y su estación, se realiza la suma extendida a
las N localizaciones del producto de la distancia entre el distrito y cada localización:
≤
N
∑d
j=1
ij X ij U i = 1 , ... , M
El primer término de las relaciones anteriores recoge las distancias de los distritos a
sus respectivas estaciones ya que con las restricciones 2.4.2 se impone que cada
distrito se asigna a una sola estación.
13.2.4.- Objetivo.
Min U
13.2.5.- Modelo.
Min U
sa:
∑Y
j=1
j ≤ B
∑X =
j=1
ij 1 i = 1 , ... , M
X ij ≤ Y j i = 1 , ... , M ; j = 1 , ... , N
71
Construcción de modelos de Programación Lineal
≤
N
∑d
j=1
ij X ij U i = 1 , ... , M
U ≥ 0, X ij , Y j binarias
∑X
i=1
ij ≤ M Yj j = 1 , ... , N
72
Construcción de modelos de Programación Lineal
Distribución
14.1. Descripción.
Cierta empresa dispone de dos fábricas F1 y F2 cuya producción abastece seis zonas
geográficas Z1,...,Z6. La empresa cuenta asimismo con cuatro almacenes A1,..,A4
geográficamente dispersos que son usados como almacenamiento del producto y como
fuente para satisfacer la demanda.
F1 F2 A1 A2 A3 A4 Total
Tabla 1
Z1 Z2 Z3 Z4 Z5 Z6 Total
Tabla 2
A1 A2 A3 A4
Tabla 3
Z1 Z2 Z3 Z4 Z5 Z6
F1 1 2 2 6
F2 2
A2 1 0,5 1 1 0,5
A3 2 0,5 1,5
73
Construcción de modelos de Programación Lineal
Tabla 4
Tras cierto tiempo de operación, la empresa se plantea la posibilidad de abrir dos nuevos
almacenes M1 y M2 así como la ampliación del segundo de sus almacenes A2. En
cualquier caso se desea que el número de almacenes abiertos no supere el número inicial,
pues esto supondría la contratación de personal nuevo. En el caso en que fuese necesario
cerrar uno o dos almacenes, se deberá elegir entre A3 y A4.
14.2. Modelo.
14.2.1. Horizonte.
14.2.2. Variables.
Las variables naturales del problema se refieren a las cantidades a enviar desde fabricas a
almacenes y zonas así como desde los almacenes a las zonas de demanda. Al igual que en
otros casos se considerarán variables de tipo contínuo para representar el número de
productos enviados. Si el valor o tamaño de los productos es elevado convendría utilizar
variables enteras.
14.2.3. Restricciones.
+ ∑Y ≤
4 6
∑X
j=1
ij
k =1
ik Ci i = 1 , 2
- ∑Z ≤
4 6
∑X
i=1
ij
k =1
jk CA j j = 1 , ... , 4
- ∑Z ≤
4 6
∑X
i=1
ij
k =1
jk CA j - Io j j = 1 , ... , 4
75
Construcción de modelos de Programación Lineal
El número de productos enviado a cada una de las zonas deberá superar el valor
mínimo demandado. Puesto que se minimizan costes de transporte parece
adecuado enviar hasta las zonas de consumo el número exacto de productos. Las
restricciones de demanda, una para cada zona de distribución, se formulan a
continuación:
+ ∑Z ≥
2 4
∑ X ik
i=1 j=1
jk Dk k = 1 , ... , 6
2 4 2 6 4 6
Min ∑∑C
i=1 j=1
ij X ij + ∑∑C
i=1 k =1
ik
′ Y ik + ∑∑C
j=1 k =1
jk
″ Z jk
Siendo Cij, C=ik y C@jk los costes asociados a los desplazamientos fábrica-almacén, fábrica-
zona y almacén-zona respectivamente, cuyos valores aparecen en las tablas 3 y 4.
2 4 2 6 4 6
Min ∑∑C
i=1 j=1
ij X ij + ∑∑C
i=1 k =1
ik
′ Y ik + ∑∑C
j=1 k =1
jk " Z jk
+ ∑Y ≤
4 6
∑X
j=1
ij
k =1
ik Ci i= 1 , 2
sa:
76
Construcción de modelos de Programación Lineal
- ∑Z ≤
4 6
∑ X ij
i=1 k =1
jk CA j - Io j j = 1 , ... , 4
∑ X + ∑Z ≥
2 4
ik jk Dk k = 1 , ... , 6
i=1 j=1
Las tablas de costes (Tablas 3 y 4) muestran algunas casillas sin ningún valor. Esta
circunstancia debe interpretarse como la existencia de rutas prohibidas, es decir pares
origen-destino no permitidos. El modelado de esta situación puede realizarse considerando
costes muy altos en las rutas implicadas o forzando las respectivas variables a un valor
cero, lo que supone la inclusión de nuevas restricciones.
La empresa se plantea, tras cierto tiempo de operación, la posibilidad de abrir dos nuevos
almacenes M1 y M2 y la ampliación del almacén A2. En ningún caso el número total de
almacenes excederá el inicial, esto es, cuatro almacenes. Si fuese preciso cerrar alguno de
los almacenes existentes se optará entre A3, A4 o ambos.
La empresa desea estudiar un nuevo plan de distribución teniendo en cuenta las decisiones
sobre apertura, ampliación y cierre de los almacenes afectados.
δ1: Tomará valor 1 si se decide abrir el almacén M1. Cero en caso contrario.
δ2: Tomará valor 1 si se decide abrir el almacén M2. Cero en caso contrario.
δ3: Tomará valor 1 si se mantiene abierto el almacén A3. Cero en caso contrario.
δ4: Tomará valor 1 si se mantiene abierto el almacén A4. Cero en caso contrario.
δ5: Tomará valor 1 si se decide ampliar el almacén A2. Cero en caso contrario.
77
Construcción de modelos de Programación Lineal
La empresa no desea mantener más de cuatro almacenes abiertos de forma simultánea.
Puesto que los almacenes involucrados en esta decisión son M1, M2, A3 y A4, y de acuerdo
a la definición anterior para las variables binarias.
δ 1 +δ 2 +δ 3 +δ 4 ≤ 2
Es decir, de los cuatro almacenes (dos nuevos y dos antiguos), solamente dos podrán
quedar abiertos.
14.5.2. Limitación del número de productos que llega o sale de cada almacén.
La decisión final de la empresa supondrá la no existencia de dos de los almacenes M1, M2,
A3 y A4. Si alguno de ellos no se construye (M1, M2), o se cierra (A3, A4), la cantidad de
productos que le llega desde las fábricas debe ser nula. Del mismo modo, al no existir, no
se podrán envíos desde él hacia las zonas de consumo.
Para modelar estas restricción es (para cada almacén) basta con acotar la suma de
cantidades enviadas desde las fabricas (o las cantidades a enviar hacia zonas de demanda)
mediante el producto de la correspondiente variable binaria y cierta constante. Si la variable
binaria toma valor cero (almacén cerrado) las variables Xij y Zjk serán nulas.
∑X ≤
2
is δ s Ωs s = 1 , 2, 3 , 4 (M1 , M2 , A3 , A4)
i=1
∑Z ≤
6
sk δ s Ψs s = 1 , 2, 3 , 4 (M1 , M2 , A3 , A4)
k =1
En el primer caso la constante Ωs de cada restricción puede ser sustituida por la suma de
las producciones de todas las fábricas. Quedando la restricción como:
∑X ≤
2 2
i=1
is δs ∑C
i=1
i s = 1 , 2, 3 , 4 (M1 , M2 , A3 , A4)
En el segundo caso se puede usar la suma de todas las demandas como cota para las
restricciones:
≤
6 6
∑Z
k =1
sk δs ∑D
k =1
k s = 1 ,78
2, 3 , 4 (M1 , M2 , A3 , A4)
Construcción de modelos de Programación Lineal
Estas restricciones mantienen su formulación para todos los almacenes, incluyendo los
almacenes M1 y M2.
∑ X - ∑Z ≤
4 6
ij jk CA j - Io j j = 1 , 3 ,... , 6
i=1 k =1
El índice j recoge los almacenes A1,A3,A4 y los nuevos M1 y M2. Para el almacén A2 es
preciso formular una nueva restricción que considere la ampliación de capacidad:
- ∑Z ≤ Δ CA -
4 6
∑ X i2
i=1 k =1
2k CA2 + δ2 2 Io j j = 1 , 3 ,... , 6
La función objetivo del problema se verá modificada con los costes debidos a la apertura de
nuevos almacenes así como los posibles beneficios derivados del cierre de los almacenes
A3 y A4 (si es que tiene lugar).
2 4 2 6 4 6
Min ∑∑C
i=1 j=1
ij X ij + ∑∑C
i=1 k =1
ik
′ Y ik + ∑∑C
j=1 k =1
jk " Z jk + ( 12 x 106 ) δ + 1
2 4 2 6 4 6
Min ∑ ∑ C ij X ij
i=1 j=1
+ ∑∑C
i=1 k =1
ik
′ Y ik + ∑∑C
j=1 k =1
jk " Z jk + ( 12 x 106 ) δ + 1
( 6 x 10 6 ) δ 2 - ( 10 x 10 6 ) δ - ( 5 x 10 6 ) δ + ( 3 x 10 6 ) δ
3 2 5
- ∑Z ≤
4 6
∑X
i=1
ij
k =1
jk CA j - Io j j = 1 , 3 ,... , 6
sa:
- ∑Z ≤ Δ CA -
4 6
∑X
i=1
i2
k =1
2k CA2 + δ2 2 Io j j = 1 , 3 ,... , 6
≤
2 2
∑ X is
i=1
δs ∑C i=1
i s = 1 , 2, 3 , 4 (M1 , M2 , A3 , A4)
79
Construcción de modelos de Programación Lineal
≤
6 6
∑ Z sk
k =1
δs ∑D
k =1
k s = 1 , 2, 3 , 4 (M1 , M2 , A3 , A4)
δ 1 +δ 2 +δ 3 +δ 4 ≤ 2
+ ∑Y ≤
4 6
∑Xj=1
ij
k =1
ik Ci i = 1 , 2
+ ∑Z ≥
2 4
∑ X ik
i=1 j=1
jk D k k = 1 , ... , 6
X ij , Y ik , Z jk ≥ 0 , δ i ( 0 , 1 )
80
Construcción de modelos de Programación Lineal
Secuenciación
15. Periódicos
15.1. Descripción.
Cuatro estudiantes que comparten piso se levantan temprano para asistir a las clases
matinales. A las 8.00 de la mañana reciben su suscripción a cuatro periódicos de tirada
nacional (El País, ABC, El Mundo y Diario 16). Desayunan a las 9.00 (como más tarde),
disponiendo pues de una hora para ojear los distintos diarios. Los tiempos que cada uno de los
lectores dedica a cada uno de los periódicos aparecen en la siguiente tabla:
¿En qué orden deben leer los periódicos para que queden libres lo antes posible?
15.2. Horizonte.
El horizonte temporal del caso se inscribe en una hora, tiempo del que disponen los lectores
para disfrutar de la lectura de los diarios hasta el momento del desayuno a las 9:00 horas.
En principio se podría pensar en discretizar el intervalo en períodos de 5 minutos, al ser la
menor fracción de tiempo dedicada a lectura y puesto que los tiempos de lectura son
múltiplos de 5 minutos. De esta forma se dispondría de 12 intervalos. El modelado se
reduciría a ocupar cada uno de estos intervalos para cada uno de los lectores. este punto
de vista implica la consideración de restricciones de continuidad, de forma que cuando un
lector comienza la lectura de un diario no pude alternar otro diario hasta haber finalizado
completamente el tiempo dedicado al primero. El enfoque que se sigue a continuación es
diferente, no se discretizará el tiempo, en su lugar usaremos variables continuas que indican
el instante de comienzo de cada periódico por cada lector. Posteriormente se relacionarán
estas variables para evitar simultaneidad en la lectura de dos periódicos y que varios
lectores usen un mismo diario. Utilizaremos los índice i, r para lectores y los índices j, k
para periódicos.
15.3.Variables.
En principio las variables de decisión del problema son continuas y representan el inicio de
lectura de cada periódico por parte de cada lector.
Como dato de partida se conocen los tiempos que cada lector dedica a cada periódico,
aparecen en la tabla del apartado 1 del caso y los representaremos mediante dij.
15.4. Restricciones.
81
Construcción de modelos de Programación Lineal
15.4.1. Un lector sólo lee un periódico de forma simultánea.
Entonces para cada lector i (i=1..4) y cada par de periódicos j, k (j=1..3, k=j+1...4) se
cumple una de las siguientes relaciones:
t ij ≥ t ik + d ik
o
t ik ≥ t ij + d ij
Sea
⎧1 Si el lector i - ésimo lee el periódico j antes que el k ⎫
δ ijk = ⎨ ⎬ i = 1...4 , j = 1...3, k = j + 1...4
⎩0 En caso contrario ⎭
Mδ ijk + t ij ≥ t ik + d ik
M (1 − δ ijk ) + t ik ≥ t ij + d ij
Esto es, si i lee j antes que k se satisface la segunda restricción, es decir el instante de
inicio de lectura del periódico k es posterior a la finalización de la lectura del diario j-ésimo.
La primera restricción no actúa para un valor conveniente de la cota M. Piénsese que un
valor adecuado para M sería, por ejemplo, el de 60 minutos, en este caso la primera
restricción dice que el instante de inicio de lectura del periódico k + 60 minutos es mayor
que el instante de finalización de lectura del periódico j, o de otra forma, la primera
desigualdad no restringe el espacio de decisión (región de admisibilidad del problema) al ser
desplazada fuera de la misma.
Nuevamente se plantean dos restricciones disyuntivas, esta vez para dos lectores y un
único periódico.
t ij ≥ t rj + d rj
o
t rj ≥ t ij + d ij
Nβ irj + t ij ≥ t rj + d rj
N (1 − β irj ) + t rj ≥ t ij + d ij
Que tienen una lectura similar al caso del apartado anterior. La constante N puede ser fijada
al mismo valor que M, es decir 60 minutos.
Formalmente:
⎧ ⎫
Min ⎨Max{t ij + d ij }⎬
⎪ ⎪
⎪⎩ ⎪⎭
i, j
{ }
Para linealizar esta expresión se define T= Max t ij + d ij . Entonces la función objetivo del
i, j
t ij + d ij ≤ T i = 1....4, j = 1...4
Min T
sa:
t ij + d ij ≤ T i = 1....4, j = 1...4
Mδ ijk + t ij ≥ t ik + d ik
M (1 − δ ijk ) + t ik ≥ t ij + d ij
Nβ irj + t ij ≥ t rj + d rj
N (1 − β irj ) + t rj ≥ t ij + d ij
83
Construcción de modelos de Programación Lineal
Equilibrado de cadenas
16.1.Descripción.
Una empresa de transporte pretende embalar siete objetos, para ello dispone de siete cajas
(numeradas del 1 al 7) con una capacidad de 17 m3 cada una de ellas.
El grafo de la figura representa en los nodos cada uno de los siete objetos, indicando
encima de éstos el volumen (en m3) requerido por cada uno de ellos. Los arcos representan
relaciones de precedencia a verificar por la ordenación en la que se embalan los objetos en
las cajas. Por ejemplo, para embalar el objeto “2” en la caja “2”, el objeto “1” ha tenido que
ser embalado en las cajas “1” ó “2”.
El problema que se plantea es decidir en qué caja se embala cada objeto, de tal forma que
el número de cajas utilizadas sea lo más pequeño posible. Modele la problemática mediante
programación lineal.
5 4
2 5
1 4 7
12 5 8
3 6
7 6
16.2. Variables.
Para modelar este problema utilizaremos un conjunto de variables binarias que indicarán si
el objeto i-ésimo ha sido embalado en la caja j-ésima. El índice i se reserva para objetos y el
j para las cajas, ambos varían de 1 a 7.
i A(i) N(i)
1 - 0
2 1 1
3 1 1
4 1,2,3 3
5 1,2,3,4 4
6 1,2,3,4 4
7 1,2,3,4,5,6 6
84
Construcción de modelos de Programación Lineal
Estos conjuntos resultarán de utilidad a la hora de formular las restricciones del problema.
16.3.Restricciones.
En primer lugar, todos los objetos deben ser envasados en alguna de las cajas, por tanto, la
suma de las variables δij extendida al número de cajas debe ser igual a 1 para cada uno de
los objetos.
∑δj =1
ij =1 i = 1...7
Cada una de las cajas tiene un volumen de 17 m3 que no puede ser superado. Por tanto la
suma de los volúmenes de objetos en cada caja debe ser menor que la capacidad de la
caja.
7
∑pδ
i =1
i ij ≤ 17 j = 1...7
16.3.3.Restricciones de precedencia.
Si analizamos la pertenencia del objeto i-ésimo a la caja número s, todos los objetos
precedentes (por tanto pertenecientes al conjunto A(i)) deben haber sido embalados en
cajas que van desde la 1 a la número s incluida ésta. La suma de objetos precedentes debe
coincidir con N(i), si no es así, el objeto i-ésimo no puede ser envasado en la caja número s.
Esta condición se puede establecer mediante la siguiente restricción:
s
N (i ) δ is ≤ ∑ δ kj k ∈ A(i ), s = 1...7
j =1
La función objetivo consiste en minimizar el número de cajas que se deben usar para
envasar los siete objetos. Para su formulación definimos S como el número máximo de
cajas, con lo cual el objetivo consiste en minimizar S. Es necesario relacionar las variables
binarias del problema con la variable S. Para ello se introduce la siguiente restricción:
7
S ≥ ∑ jδ ij i = 1...7
j =1
Para cada uno de los objetos, S debe ser mayor que el número de caja en que ha sido
embalado, recordemos que sólo una de las δij que aparecen sumadas en la restricción
anterior será igual a 1. El índice j nos índica a que caja pertenece el objeto i-ésimo. Así
pues, el objetivo se reduce a minimizar el número máximo de cajas usadas.
85
Construcción de modelos de Programación Lineal
Min S
16.5. Modelo.
Min S
sa:
∑δj =1
ij =1 i = 1...7
∑pδ
i =1
i ij ≤ 17 j = 1...7
s
N (i ) δ is ≤ ∑ δ kj k ∈ A(i ), s = 1...7
j =1
7
S ≥ ∑ jδ ij i = 1...7
j =1
86
Construcción de modelos de Programación Lineal
Técnicas de modelado
17.1. Descripción.
Exp 1 2 3 4 5 6 7 8 9 10
x 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
y 0.9 0.7 1.5 2.0 2.4 3.2 2 2.7 3.5 1
Se desea efectuar una aproximación cuadrática del tipo y=cx2+bx+a que refleje la relación
funcional entre la variable independiente x y la variable dependiente y, de forma que se
minimice el máximo error absoluto obtenido, teniendo en cuenta los diez experimentos
realizados.
17.2. Discusión.
Aproximación
cuadrática
Desviación
La formulación inicial de este problema responde a un objetivo del tipo MiniMax. Se trata de
minimizar la máxima de las desviaciones en valor absoluto, esto es:
{ { y − (ax
Min Max
i
i i
2
+ bxi + c) }}
Donde a,b y c son las variables a determinar, xi (i=1...10) los valores de la variable
independiente e yi (i=1...10) los valores de la variable dependiente. Los pares (xi,yi) son
datos conocidos como resultado de los experimentos realizados.
87
Construcción de modelos de Programación Lineal
Se trata de una expresión no lineal. La linealización de la misma dará lugar al modelo de
programación lineal deseado. En el apartado 6.7. del presente capítulo se analizó la manera
de tratar expresiones del tipo MiniMax. Para ello se define una variable Z como el máximo
de las expresiones entre valores absolutos.
{
Z = Max yi − (axi + bxi + c)
i
2
}
Ahora la función objetivo será simplemente
Min Z
Y es preciso relacionar Z con los términos entre valores absolutos teniendo en cuenta que al
ser Z su máximo, se debe satisfacer:
Por tanto el modelo, aún no lineal, que resuelve el problema de aproximación queda:
Min Z
sa:
yi − (axi + bxi + c) ≤ Z i = 1....10
2
a,b,c libres
17.3. Variables.
a = A1 − A2
b = B1 − B 2
c = C1 − C 2
A1, A2, B1, B 2, C1, C 2 ≥ 0
17.4. Restricciones.
88
Construcción de modelos de Programación Lineal
A) Consiste en duplicar las restricciones de manera que se cumplan tanto si el contenido del
valor absoluto es positivo como si es negativo, es decir:
B) Deshacer los valores absolutos mediante un cambio de variables, para ello se iguala el
contenido de los valores absoluto a la diferencia de dos variables positivas y se toma el
valor absoluto igual a la suma de dichas variables.-
u i + vi ≤ Z i = 1...10
ui, vi ≥ 0
a,b,c libres
Este método se basa en que cada par de variables (ui,vi) se corresponde en cada iteración
de la tabla simplex con dos columnas iguales pero con signo contrario, por tanto ui es
básica no puede serlo vi y viceversa. Este es el motivo por el que se sustituye el valor
absoluto por la suma de variables, ya que como máximo sólo una de cada par es positiva,
siendo nula su pareja.
17.5. Modelo 1.
Cada uno de los conjuntos de restricciones anteriores pueden formar el cuerpo del modelo
lineal solicitado, por tanto un primer modelo lineal para el caso propuesto sería:
Min Z
sa:
a,b,c libres
Min Z
sa:
yi − (axi + bxi + c) = u i − vi i = 1....10
2
u i + vi ≤ Z i = 1...10
ui, vi ≥ 0
a,b,c libres
89
Construcción de modelos de Programación Lineal
18. Funciones lineales a trozos.
⎧ 5x 0 ≤ x ≤ 4
⎪
f(x) = ⎨ x + 16 4 ≤ x ≤ 10
⎪ 3x - 4 x ≥ 10
⎩
⎧ x 0≤x≤4
⎪
f(x) = ⎨ 3x - 8 4 ≤ x ≤ 10
⎪ 6x - 38 x ≥ 10
⎩
18.2.1. Caso A.
18.2.1.1. Variables. 40
⎧ 5x 0 ≤ x ≤ 4
⎪
f(x) = ⎨ x + 16 4 ≤ x ≤ 10 26
⎪ 3x - 4 x ≥ 10 20
⎩
90
Construcción de modelos de Programación Lineal
Cuando δi=0 (i=1,2,3) la variable xi deberá tomar valor cero, además, necesariamente una
de las variables δ valdrá 1.
18.2.1.2. Restricciones.
δ 1+δ 2 +δ 3 = 1
0 ≤ x1 ≤ 4 δ 1
4 δ 2 ≤ x 2 ≤ 10 δ 2
10 δ 3 ≤ x3
La variable x es una de las variables xi. Puesto que únicamente una de ellas es
positiva se tiene
x = x1 + x 2 + x 3
Min 5 x1 + ( x 2 + 16 δ 2 ) + ( 3 x3 - 4 δ 3 )
18.2.2. Caso B.
91
Construcción de modelos de Programación Lineal
⎧ x 0≤x≤4
⎪ 40
f(x) = ⎨ 3x - 8 4 ≤ x ≤ 10
⎪ 6x - 38 x ≥ 10
⎩
22
Como se observa en la figura, la 20
pendiente de los tramos es
creciente. Puesto que el objetivo
del problema consiste en
minimizar, es posible modelar el 4
problema sin necesidad de
variables binarias. 4 5 10 15
Para ello se considera que la variable x se obtiene como suma de x1, x2 y x3, cada
una de ellas >= 0 y acotada por la longitud del correspondiente intervalo de
comportamiento de la función objetivo, es decir.
x = x1 + x 2 + x 3
0 ≤ x1 ≤ 4
0 ≤ x2 ≤ 6
0 ≤ x3
Puesto que las pendientes de las rectas son crecientes, y el objetivo consiste en
minimizar, si es posible (si lo permite el resto de restricciones del problema) la
variable x quedará especificada por el valor de x1. Al diferencia del problema
anterior, es posible que más de una xi sean estrictamente positivas. La variable x
será la suma de las xi. La variable x2 podrá ser >0 únicamente cuando x1 tome su
valor máximo (x1=4).
El comportamiento creciente de
las pendientes de los diferentes 40
segmentos lineales permite
modelar la variable x de forma
aditiva, y garantiza que si una xi 6
es estrictamente >0 las xj (j<i) 22
necesariamente toman su valor
máximo.
4
Min x1 + 4 x2 + 6 x3 4
1
4 5 10
92
Construcción de modelos de Programación Lineal
Min Z
sa :
Z≥x
Z ≥ 3x - 8
Z ≥ 6x - 38
Z ≥0
93