Modelos de Optimización Matemática
Modelos de Optimización Matemática
MODELOS DE OPTIMIZACIÓN
Begoña Vitoriano
bvitoriano@[Link]
[Link]/~bvitoria
Andrés Ramos
aramos@[Link]
Facultad CC. Matemáticas, Universidad Complutense, Pza. Ciencias 3, 28040 Madrid [Link]
ÍNDICE
I. OPTIMIZACIÓN .............................................................................. 1
08/01/2019 i
III.2. REFERENCIAS...................................................................................................... 51
III.3. BIBLIOTECA DE PROBLEMAS ............................................................................... 51
III.4. RESULTADOS DE LA BIBLIOTECA DE PROBLEMAS ................................................ 69
IV. CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN ............... 89
ii 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
I. Optimización
“In the last decade, new advances in algorithms have been as important as the
impressive advances in computer technology” George L. Nemhauser (1994).
08/01/2019 1
I OPTIMIZACIÓN
1
En castellano la traducción de esta palabra es símplice pero no es habitual su uso para denominar este
método de optimización lineal.
2
En [Link] se puede encontrar un resumen de
sus logros así como una entrevista sobre diversos temas, incluyendo imágenes en vídeo.
2 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 3
I OPTIMIZACIÓN
orientación más matemática mientras que [Winston, 1994] los presenta con una
perspectiva más de administración de empresas. [Sarabia, 1996] da una base teórica
suficiente para poder resolver una colección de problemas relacionados con el temario de
investigación operativa.
Entre las revistas principales que tratan sobre optimización se pueden incluir:
Interfaces, Operations Research, Management Science, European Journal of
Operational Research, Mathematics of Operations Research, OR/MS Today,
Mathematical Programming, INFORMS Journal on Computing, Journal of the
Operational Research Society, Omega, Journal of Optimization Theory and Applications,
Transportation Science, Transportation Research. Existe una enciclopedia de
investigación operativa que puede servir como consulta inicial y referencia de un tema
específico, ver [Gass, 2001]. Además se puede encontrar información sobre los temas de
investigación operativa en las direcciones de la Sociedad Española de Estadística e
Investigación Operativa (SEIO) ([Link]), de la Association of European
Operational Research Societies (EURO) ([Link]), de la International
Federation of Operational Research Societies (IFORS) ([Link]) y del Institute
for Operations Research and the Management Sciences (INFORMS) ([Link]).
• función objetivo
4 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
• variables
Representan las decisiones que se pueden tomar para afectar el valor de la función
objetivo. Desde un punto de vista funcional se pueden clasificar en variables
independientes o principales o de control y variables dependientes o auxiliares o de
estado, aunque matemáticamente todas son iguales. En el caso de un sistema eléctrico
serán los valores de producción de los grupos de generación o los flujos por las líneas.
En el caso de la venta, la cantidad de cada producto fabricado y vendido. En el caso
de la fabricación de un producto, sus dimensiones físicas.
• restricciones
Los métodos de optimización los podemos clasificar en: métodos clásicos (que son
los algoritmos que habitualmente se explican en los libros de optimización) y métodos
metaheurísticos (que aparecieron ligados a lo que se denominó inteligencia artificial e
imitan fenómenos sencillos observados en la naturaleza). Dentro de los primeros se
encuentra la optimización lineal, lineal entera mixta, no lineal, estocástica, dinámica, etc.
que se explican en el documento. En el segundo grupo se incluyen los algoritmos
evolutivos (genéticos entre otros), el método del recocido simulado (simulated
annealing), las búsquedas heurísticas (método tabú, búsqueda aleatoria, avariciosa, etc.)
o los sistemas multiagente. De forma muy general y aproximada se puede decir que los
métodos clásicos buscan y garantizan un óptimo local mientras que los métodos
metaheurísticos tienen mecanismos específicos para alcanzar un óptimo global aunque
no garantizan su alcance.
08/01/2019 5
I OPTIMIZACIÓN
6 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
enteras, programación entera binaria BIP (binary integer programming) si todas son
binarias o programación lineal entera mixta MIP (mixed integer programming) si algunas
son enteras o binarias y el resto continuas.
Un caso particular, pero muy frecuente, de variables enteras son las variables binarias
(0/1), ya que permiten modelar condiciones de asignación o condiciones lógicas. Por otra
parte, toda variable entera x se puede expresar como suma de variables binarias yi , donde
el intervalo 2 N ≤ u ≤ 2 N +1 .
No existe una función objetivo como tal. Únicamente interesa encontrar una solución
factible a un problema con un conjunto de restricciones.
• optimización multiobjetivo
Existe más de una función objetivo. El problema que se plantea es cómo tratar varias
funciones objetivo a la vez, teniendo en cuenta que el óptimo para un objetivo no lo
es para otro, son objetivos en conflicto entre sí. Ésta se enmarca dentro de lo que se
conoce de forma más general como decisión multicriterio (multicriteria decision
making MCDM).
08/01/2019 7
I OPTIMIZACIÓN
f : n →
Ajuste no lineal mínimo cuadrático
Programación multiobjetivo min( f1 ( x),..., f k ( x))
x
(multiobjective programming) Ax = b
x≥0
x ∈ n , c ∈ n , A ∈ m×n , b ∈ m
fi ( x) : n →
I.2. Referencias
Gass, S.L. and Harris, C.M. (eds.) (2001) Encyclopedia of Operations Research and
Management Science. Centennial Edition. Kluwer Academic Publishers.
8 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 9
II MODELOS DE PROGRAMACIÓN MATEMÁTICA
modelo. El desarrollo de un modelo es una creación hecha con ayuda de ciencias básicas
o herramientas de apoyo.
Entre los beneficios explícitos o implícitos, tanto para el modelador como para el
experto, derivados del proceso de modelado además del modelo en sí mismo, se pueden
mencionar:
Las etapas que componen el ciclo de vida de un modelo son las siguientes:
10 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Los problemas reales suelen estar definidos en términos vagos e imprecisos. Se debe
hacer la tarea de traducción o interpretación en frases precisas, convertibles en ecuaciones
matemáticas. En esta etapa se establecen y documentan los supuestos realizados que en
etapas posteriores deberán ser validados.
Esta etapa es fundamental para que las soluciones proporcionadas, las conclusiones
obtenidas sean útiles, las decisiones adoptadas sean correctas. Los datos suelen ser vitales
para conseguir un realismo o aplicabilidad en las soluciones. A menudo representan el
cuello de botella del proceso de modelado.
08/01/2019 11
II MODELOS DE PROGRAMACIÓN MATEMÁTICA
todo, desde la aparición de los métodos de punto interior. En la tabla 1.1 se propone una
clasificación de tipos de problemas LP según su tamaño. Esta clasificación debe ser
tomada como guía o referencia relativa actual pero téngase en cuenta que los tamaños
relativos de los problemas cambiarán conforme evolucionen los códigos de optimización.
Actualmente se puede afirmar que los códigos de optimización lineal implantan
algoritmos muy eficientes, son fiables y numéricamente robustos y están ampliamente
disponibles.
Restricciones Variables
Resolución
La solución óptima debe ser suficientemente satisfactoria, debe ser una guía de
actuación para el experto.
12 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Ésta es una etapa fundamental del desarrollo de un modelo para garantizar su amplia
difusión. La documentación ha de ser clara, precisa y completa. El manual de usuario
debe incluir la especificación técnica funcional, matemática e informática. El propio
código debe incluir una buena documentación para facilitar la tarea del mantenimiento.
Piénsese que la mayor parte del ciclo de vida de un modelo no está en el desarrollo sino
en la fase de uso y mantenimiento.
En esta etapa se incluye también la tarea de formación para los usuarios del modelo.
08/01/2019 13
II MODELOS DE PROGRAMACIÓN MATEMÁTICA
II.3. Referencias
Williams, H.P. (1999) Model Building in Mathematical Programming. 4th Edition. John
Wiley and Sons.
14 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Aprovechamos este ejemplo para seguir paso a paso las etapas en el desarrollo de un
modelo.
08/01/2019 15
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Para ello analizamos y organizamos los datos del problema. Sean i los alimentos
disponibles (pienso y forraje) y sean j los nutrientes (proteínas, calcio y vitaminas).
Sea b j la cantidad mínima diaria requerida de cada nutriente. Sea aij la cantidad de
min ∑ ci xi (1.1)
xi
i
∑a x
i
ij i ≥ b j ∀j (1.2)
Además hay que añadir la restricción natural de que la cantidad de cada alimento ha
de ser no negativa.
xi ≥ 0 (1.3)
16 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
30 x1 + 45 x2 ≥ 700
2 x1 + x2 ≥ 28
10 x1 + 5 x2 ≥ 150
x1 ≥ 0
x2 ≥ 0
Los resultados indican que la decisión óptima es comprar 10.833 kg de pienso y 8.333
kg de forraje cada día. Con estas decisiones el coste diario de los alimentos es de
6.1667 €.
08/01/2019 17
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
j.
1 b1
a1 1
a2 2 2 b2
am m
n bn
transportadas desde i hasta j , ∀i, j , que minimizan los costes de transporte sujeto a las
restricciones de oferta disponible en cada origen i ( m restricciones de oferta) y demanda
en cada destino j ( n restricciones de demanda)
m n
min ∑∑ cij xij
xij
=i 1 =j 1
n
∑=
x
j =1
ij a=
i i 1, , m
(1.4)
m
∑=
x
i =1
ij b=
j j 1, , n
xij ≥ 0
∑i 1=
ai = ∑ j 1 b j .=
Si ∑ i 1 =
ai > ∑ j 1 b j se ha solido decir que se
m n m n
demanda del mismo
=
y si ∑ i 1 =
ai < ∑ j 1 b j se añade una fuente
m n
añade un sumidero universal con coste nulo, =
universal conectada con todos los destinos con coste muy elevado. Esta opción se lleva a
cabo para aplicar métodos específicos de solución para el problema de transporte.
18 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Industrialmente, este modelo se utiliza muy a menudo, pero hay que tener en cuenta
algunos detalles de formulación. En primer lugar, respecto al estilo, es importante que las
variables reflejen su significado, así como los datos. Por ejemplo, es habitual para
cantidades usar Q, para demandas d, etc. También es importante, distinguir de alguna
forma datos de variables (por ejemplo, unos en mayúsculas y otros en minúsculas).
Respecto a las condiciones de los datos, el modelo se formula sin hacer hipótesis sobre
los valores iniciales ni la red (pueden no existir conexiones entre algunos orígenes y
destinos, de modo que A es el conjunto de arcos de la red), siendo la siguiente formulación
la que contempla que pueda haber más oferta que demanda (equivalente a poner un
sumidero universal):
min ∑
( i , j )∈ A
cij Qij
∑
j /( i , j )∈ A
Qij ≤ oi i =
1, , m
(1.5)
∑=
Q
i /( i , j )∈ A
ij d=
j j 1, , n
Qij ≥ 0
Por otra parte, para evitar infactibilidades que harían que el modelo no dé solución
alguna, se introducen unas variables que recogen la demanda no suministrada en cada
nodo y que son penalizadas en la función objetivo, por ejemplo con un valor p:
min ∑
( i , j )∈ A
cij Qij + ∑ pN j
j
∑
j /( i , j )∈ A
Qij ≤ oi i=
1, , m
(1.6)
∑ Qij d=
= j +N j j 1, , n
i /( i , j )∈ A
Qij , N j ≥ 0
Éste sería un modelo formulado para poder ser implementado de forma industrial.
08/01/2019 19
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
1 1 1 1
2 1 1 1
m 1 1 1
1 1 1 1
2 1 1 1
n 1 1 1
Si tanto las ofertas como las demandas de los productos son números enteros,
entonces el valor óptimo de las variables va a resultar entero por ser la matriz totalmente
unimodular 3, por lo que no se necesita recurrir a métodos específicos de resolución de
problemas de programación entera.
Consiste en determinar en una red con n nodos las cantidades óptimas para llevar
unidades de un producto desde sus orígenes a sus destinos pasando por puntos de
transbordo intermedios.
Cada origen genera bi > 0 unidades, cada destino consume bi < 0 unidades y cada
3
Una matriz es totalmente unimodular si toda submatriz cuadrada tiene determinante 0, 1 ó –1. Si la
matriz de un problema lineal es totalmente unimodular y las cotas de las restricciones son enteras, entonces
todos los puntos extremos del poliedro tienen coordenadas enteras (se denomina politopo entero).
20 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Hay que determinar las unidades de producto transportadas desde i a j , xij ≥ 0 , ∀i, j
xij ≥ 0
∑
n
producto, es decir, b = 0.
i =1 i
Esta matriz también es totalmente unimodular por lo que el problema también puede
ser resuelto mediante programación lineal.
=
( si 0,=
di 0 ).
08/01/2019 21
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
∑ j/
Qij − ∑j/
Q ji = Pi − di + N i ∀i
( i , j )∈A ( j ,i )∈A
Pi ≤ si ∀i (1.8)
N i ≤ di ∀i
Qij ≥ 0 ∀(i, j ) ∈ A Pi , N i ≥ 0 ∀i
Consiste en minimizar el coste total de realizar las tareas sabiendo que cada tarea i
debe ser hecha por una sola persona y cada persona j debe realizar una única tarea,
siendo cij el coste de realizar la tarea i por la persona j . Las variables del problema son
n n
min ∑∑ cij xij
xij
=i 1 =j 1
n
∑=
x
j =1
ij 1=i 1, , n
(1.9)
n
∑=
x
i =1
ij 1=j 1, , n
xij ≥ 0
22 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
∑c x
j =1
j j ≤b (1.10)
x j ∈ {0,1}
1 si i pertenece a j
combinación j, aij = . Denominamos las variables
0 si no pertenece
1 si se elige la combinación j
xj = .
0 en cualquier otro caso
08/01/2019 23
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
n
min ∑ c j x j
xj
j =1
n
∑a x
j =1
ij j ≥1 i =
1, , m (1.11)
x j ∈ {0,1}
24 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Secuencias factibles
1 2 3 4 5 6 7 8 9 10 11 12
SF – LA 1 1 1 1
SF – Denver 1 1 1 1
SF – Seattle 1 1 1 1
2
LA – Chicago 2 3 2 3
LA – SF 2 3 5 5
Chicago – Denver 3 3 4
Chicago – Seattle 3 3 3 3 4
Denver – SF 2 4 4 5
Denver – Chicago 2 2 2
Seattle – SF 2 4 4 5
Seattle – LA 2 2 4 4 2
Coste (M€) 2 3 4 6 7 5 7 8 9 9 8 9
Se definen las variables del problema como
1 si se asigna la secuencia j
xj = , x j ∈ {0,1} j = 1, ,12
0 en cualquier otro caso
x1 + x4 + x7 + x10 ≥ 1 (SF-LA)
x2 + x5 + x8 + x11 ≥ 1 (SF-Denver)
x3 + x6 + x9 + x12 ≥ 1 (SF-Seatlle)
12
Asignación de las tres tripulaciones ∑x
j =1
j =3
08/01/2019 25
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
1 si i pertenece a j
de pertenencia de cada proyecto i a cada paquete j es aij . Las
0 si no pertenece
1 si se elige el paquete j
variables del problema son x j . La formulación del problema
0 en cualquier otro caso
es la siguiente
n
max ∑ c j x j
xj
j =1
n
∑a x
j =1
ij j ≤1 i =
1, , m (1.12)
x j ∈ {0,1}
∑a =
x
j =1
ij j 1=i 1, , m (1.13)
x j ∈ {0,1}
26 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
El problema consiste en hacer un recorrido que pase por n ciudades sin repetir
ninguna y volviendo a la ciudad de partida de manera que la distancia (o tiempo o coste)
total sea mínima. Es un problema de asignación pero con la condición de que la
asignación sea un ciclo. Es uno de los problemas más importantes en la historia de la
programación matemática por todas las investigaciones a las que ha dado lugar y por
todas las aplicaciones que tiene, tanto directamente o apareciendo como subproblema
dentro de otros más complejos. En una noticia de OR/MS Today (publicada por el Institute
of Operations Research and the Management Sciences (INFORMS)) de junio de 2004,
mencionaba que se había conseguido resolver un problema del viajante con 24978
ciudades. Los problemas de enrutamiento de vehículos (expedición o recogida de
mercancías) pueden ser formulados basándose en este modelo. Una de las características
más interesantes de este problema es que existen muchas formulaciones conocidas para
el mismo, ver [Williams, 1999] y [Nemhauser, 1999]. Una de ellas es la siguiente. Sea cij
1 si se va de la ciudad i a la ciudad j
xij =
0 en otro caso
∑ x=
i
ij 1 ∀j
∑ x=
j
ij 1 ∀i (1.14)
T j ≥ Ti + cij − m(1 − xij ) ∀i, j
T j ≥ c1 j − m(1 − x1 j ) ∀j ≠ 1
xij ∈ {0,1} , T j ≥ 0
08/01/2019 27
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
La primera restricción indica que a una ciudad j sólo se puede llegar una vez desde
cualquier ciudad i . La segunda dice que desde una ciudad i sólo se puede salir una vez
a cualquier otra ciudad j . Sólo con estas variables no es suficiente para formular el
problema, ya que se pueden formar subciclos. La forma de evitarlos es añadiendo las
variables continuas.
Los problemas de coste fijo aparecen cuando el coste de una variable tiene un término
fijo con valor diferente de 0 si la variable toma un valor estrictamente positivo. Es una
función no lineal y discontinua:
fj
cj
0 xj = 0
f j (x j ) =
k j + c j x j xj > 0 kj
xj
Este coste se puede modelar con ayuda de una variable binaria auxiliar y j ∈ {0,1}
1 x j > 0
definida como yj = , que indica la realización de la actividad x j .
0 x j = 0
∑(k yj + cjxj )
n n
min ∑=
f j (x j ) j
xj ,yj
= j 1 =j 1
x j ≤ My j
xj ≥ 0
y j ∈ {0,1}
28 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
implicación es
x A ≥ 1 → xB ≥ 1
depende de que se cumpla otra ( x A ≥ 1 ) y esto sólo se conoce una vez que se ha
determinado la solución óptima. Un problema de optimización no se puede redefinir
endógenamente, es decir, en función de los propios valores que toman las variables del
problema.
Disyunciones
Las disyunciones implican una pareja de restricciones donde una (cualquiera de las
dos) debe satisfacerse, mientras que la otra no es necesario que se cumpla. Debe cumplirse
una al menos pero no necesariamente las dos.
f ( x) ≤ 0 ó g ( x) ≤ 0
3 x1 + 2 x2 − 18 ≤ 0 ó x1 + 4 x2 − 16 ≤ 0
08/01/2019 29
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
3 x1 + 2 x2 − 18 ≤ 0 3 x1 + 2 x2 − 18 ≤ M
ó
x1 + 4 x2 − 16 ≤ M x1 + 4 x2 − 16 ≤ 0
1 se relaja la ecuación 1
y= . Luego las restricciones disyuntivas se modelan en un
0 se relaja la ecuación 2
problema de optimización como
3 x1 + 2 x2 − 18 ≤ My
x1 + 4 x2 − 16 ≤ M (1 − y )
f ( x) > 0 → g ( x) ≤ 0
es equivalente a
f ( x) ≤ 0 ó g ( x) ≤ 0
Cumplir k de N ecuaciones
f1 ( x1 , , xn ) ≤ 0
f 2 ( x1 , , xn ) ≤ 0
f N ( x1 , , xn ) ≤ 0
añadiendo una constante M y una variable binaria yi para cada ecuación tenemos
30 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
f1 ( x1 , , xn ) ≤ My1
f 2 ( x1 , , xn ) ≤ My2
f N ( x1 , , xn ) ≤ MyN
∑ y= i N −k yi ∈ {0,1} i = 1, , N
i =1
Sea una función con múltiples posibles valores y se desea elegir uno de ellos.
d1
d
f ( x1 , , xn ) = 2
d N
∑y
i =1
i =1
yi ∈ {0,1} i =
1, , N
Las variables binarias se utilizan para indicar que el cumplimiento de una restricción
implica el cumplimiento de otra.
Implicaciones sencillas
x ≤ Mδ
08/01/2019 31
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
δ = 0 → x ≤ 0
x ≤ Mδ
x > 0 →δ = 1
32 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
δ = 0 → x ≥ 0
x ≥ mδ
x < 0 →δ = 1
La implicación
1→ ∑ ajxj ≤ b
δ=
j
es equivalente a
∑a x
j
j j ≤ b + M (1 − δ )
∑ j
a j x j − b ≤ M . Efectivamente de manera directa se deduce que si δ = 1 se impone la
∑a xj
j j > b →δ =0
La implicación
∑a xj
j j ≤ b →δ =
1
equivalente a
∑a x
j
j j ≥ b + ε + (m − ε )δ
∑ j
ajxj − b ≥ m .
08/01/2019 33
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
La implicación
1→ ∑ ajxj ≥ b
δ=
j
es equivalente a
∑a x
j
j j ≥ b + m(1 − δ )
∑ j
a j x j − b ≥ m . Efectivamente de manera directa se deduce que si δ = 1 se impone la
∑a xj
j j < b →δ =0
La implicación
∑a xj
j j ≥ b →δ =
1
equivalente a
∑a x
j
j j ≤ b − ε + ( M + ε )δ
∑ j
ajxj − b ≤ M .
34 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
La implicación
1→ ∑ ajxj =
δ= b
j
es equivalente a
1→ ∑ ajxj ≤ b
δ=
j
1→ ∑ ajxj ≥ b
δ=
j
∑a x
j
j j ≤ b + M (1 − δ )
∑a x
j
j j ≥ b + m(1 − δ )
La implicación
∑a x j
j j = b → δ =1
∑a x j j ≤ b →δ′ =
1
y además δ ′ =1 y δ ′′ =1 → δ =1
j
∑a x
j
j j ≥ b → δ ′′ =
1
∑a x
j
j j ≥ b + ε + (m − ε )δ ′
∑a x
j
j j ≤ b − ε + ( M + ε )δ ′′
08/01/2019 35
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Implicaciones dobles
j ∑ a j x j ≤ b → δ =
1
j
La siguiente tabla presenta todas las implicaciones lógicas y su formulación lineal:
1→ ∑ ajxj ≤ b
δ= ∑a x j j ≤ b + M (1 − δ )
j j
∑a x
j
j j ≤ b →δ =
1 ∑a x
j
j j ≥ b + ε + (m − ε )δ
1→ ∑ ajxj ≥ b
δ= ∑a x j j ≥ b + m(1 − δ )
j j
∑a x
j
j j ≥ b →δ =
1 ∑a x
j
j j ≤ b − ε + ( M + ε )δ
1→ ∑ ajxj =
δ= b ∑ a j x j ≤ b + M (1 − δ )
j j
∑a x
j
j j ≥ b + m(1 − δ )
∑a x
j
j j = b → δ =1 ∑a x
j
j j ≥ b + ε + (m − ε )δ ′
∑a x
j
j j ≤ b − ε + ( M + ε )δ ′′
δ ′ + δ ′′ − δ ≤ 1
1 ↔ ∑ ajxj ≤ b
δ= ∑a x j j ≤ b + M (1 − δ )
j j
∑a x
j
j j ≥ b + ε + (m − ε )δ
1 ↔ ∑ ajxj ≥ b
δ= ∑a x j j ≥ b + m(1 − δ )
j j
∑a x
j
j j ≤ b − ε + ( M + ε )δ
1 ↔ ∑ ajxj =
δ= b ∑ a j x j ≤ b + M (1 − δ )
j j
∑a x
j
j j ≥ b + m(1 − δ )
∑a x
j
j j ≥ b + ε + (m − ε )δ ′
∑a x
j
j j ≤ b − ε + ( M + ε )δ ′′
δ ′ + δ ′′ − δ ≤ 1
36 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Hasta ahora se han modelado disyunciones entre restricciones o implicaciones del tipo
si δ = 1 entonces se debe verificar tal restricción o viceversa, si se verifica esta restricción
entonces δ = 1 , o la doble implicación. Se puede necesitar el modelado de proposiciones
condicionales y/o compuestas más complejas que las simples implicaciones o
disyunciones anteriores. Por ejemplo, si se fabrica el producto A o B (o ambos) entonces
debe fabricarse también al menos uno de los productos C, D o E. Este tipo de restricciones
también se modela con la ayuda de variables binarias.
P→Q no P o Q
P → (Q y R) (P → Q) y (P → R)
P → (Q o R) (P → Q) o (P → R)
(P y Q) → R (P→ R) o (Q → R)
(P o Q) → R (P→ R) y (Q → R)
no (P o Q) no P y no Q
no (P y Q) no P o no Q
08/01/2019 37
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
1 si se cumple la restricción i
X i al cumplimiento de la restricción i y δ i = a la variable
0 si no se cumple
binaria auxiliar indicadora de su cumplimiento, esta tabla se puede interpretar fácilmente.
X1 o X 2 δ1 + δ 2 ≥ 1
X1 y X 2 δ1 = 1 , δ 2 = 1
no X 1 δ1 = 0
X1 → X 2 δ1 − δ 2 ≤ 0
X1 ↔ X 2 δ1 − δ 2 =
0
expresarlo con una ecuación lineal es δ1 + δ 2 ≥ 1 . Además tiene que haber una restricción
(X A o X B ) → (XC o X D o X E )
δ A + δ B ≥ 1 → δC + δ D + δ E ≥ 1
Para poder modelar estas implicaciones lógicas, por complejas que sean, de manera
automática la implicación se separa en dos bloques
38 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
δ A + δB ≥ 1 → δ =1
δ =→
1 δC + δ D + δ E ≥ 1
δ A + δB ≥ 1 → δ =1 equivale a δ A + δ B ≤ 2δ
ya que ε = 1 y M = 1 y
1 δ C + δ D + δ E ≥ 1 equivale a δ C + δ D + δ E ≥ δ
δ =→
siendo m = −1 .
δ A + δ B ≤ 2δ
δ C + δ D + δ E ≥ δ
δA −δ ≤ 0
δB −δ ≤ 0
δ + δ + δ ≥ δ
C D E
δ C + δ D + δ E ≥ δ A
δ C + δ D + δ E ≥ δ B
08/01/2019 39
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
• Por los menos dos jugadores deben estar en disposición de actuar de pivot, al menos
dos de alero y por lo menos uno de base.
• Su nivel medio, tanto en el manejo de pelota como de tiro y rebote, debe ser no inferior
a 2.
• El jugador 8 ó el 9, pero no los dos a la vez, deben formar parte del equipo.
En primer lugar se definen las variables de decisión que se van a utilizar. Éstas son
40 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Estas últimas variables definidas sólo para los jugadores con capacidad para jugar en
varias posiciones.
max 3 x1 + 2 x2 + 2 x3 + x4 + 2 x5 + 3 x6 + x7 + 2 x8 + 3 x9
x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 =
5
x1 + x3 p + x5 p + x7 p + x8 ≥ 2
x3a + x4 a + x5 a + x6 a + x7 a + x9 ≥ 2
x2 + x4b + x6b ≥ 1
2 x1 + 3 x2 + 2 x3 + x4 + x5 + 3 x6 + 3 x7 + 2 x8 + 3 x9 ≥ 10
x1 + 3 x2 + 3 x3 + 3 x4 + 3 x5 + x6 + 2 x7 + x8 + 3 x9 ≥ 10
3 x1 + x2 + 2 x3 + 3 x4 + x5 + 2 x6 + 2 x7 + 3 x8 + x9 ≥ 10
x3 =1 → x6 =0 equivale a x3 ≤ 0 ó x6 ≤ 0
x3 ≤ y1
x6 ≤ 1 − y1
x3 + x6 ≤ 1
08/01/2019 41
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
x3 ≤ y1
La formulación con las dos ecuaciones es más fuerte (mejor) que la de
x6 ≤ 1 − y1
una única ecuación x3 + x6 ≤ 1 , porque la región factible del problema relajado es menor
para el primer caso que para el segundo. En el apartado I.6.5.2 se explican algunas
técnicas de reformulación de problemas MIP para conseguir soluciones más fuertes.
x1 ≥ 1 → x4 + x5 =1 es equivalente a x1 ≤ 0 ó (x4 + x5 ≤ 1 y x4 + x5 ≥ 1)
x1 ≤ y2
x4 + x5 − 1 ≤ (1 − y2 )
x + x − 1 ≥ −1(1 − y )
4 5 2
x4 + x5 ≤ 2 − x1
x4 + x5 ≥ x1
x8 + x9 =
1
x3 p + x3a − x3 =
0
x4 a + x4b − x4 =
0
x5 p + x5 a − x5 =
0
x6 a + x6b − x6 =
0
x7 p + x7 a − x7 =
0
xi , yi ∈ {0,1}
42 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Las variables binarias también se pueden utilizar para eliminar algunos productos de
variables que convertirían el problema en no lineal pero que con esta transformación
resulta un problema lineal entero mixto, más fácil de resolver.
08/01/2019 43
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Datos
Variables
44 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
∑P t =1
ht = Dh H
T
∑ (P A
t =1
t ht − Pht ) =
RDh H
SCALAR
r porcentaje de reserva rodante sobre la demanda [p.u.] /0.2/
PARAMETERS
d(h) demanda cada hora [MW]
/h1 1000 , h2 1400 , h3 2400 , h4 2000 , h5 1000/
pmax(t) pot máxima de cada térmico [MW]
/GALICIA 400, CATALUNA 500, MADRID 700, VALENCIA 400, EXTREMAD 300, ANDALUCI 800, CASTLEON
800/
pmin(t) pot mínima de cada térmico [MW]
/GALICIA 100, CATALUNA 150, MADRID 150, VALENCIA 50, EXTREMAD 50, ANDALUCI 400, CASTLEON
200 /
rs(t) rampa de subida [MW por hora]
/GALICIA 200, CATALUNA 300, MADRID 500, VALENCIA 300, EXTREMAD 100, ANDALUCI 500, CASTLEON
400/
rb(t) rampa de bajada [MW por hora]
/GALICIA 300, CATALUNA 300, MADRID 200, VALENCIA 100, EXTREMAD 100, ANDALUCI 500, CASTLEON
400/
c(t) coste lineal de producción [€ por MWh]
/GALICIA 4, CATALUNA 4, MADRID 4, VALENCIA 4, EXTREMAD 3, ANDALUCI 2, CASTLEON 7/
b(t) coste fijo de producción [€]
/GALICIA 50, CATALUNA 30, MADRID 30, VALENCIA 25, EXTREMAD 30, ANDALUCI 80, CASTLEON 70/
ca(t) coste de arranque
/GALICIA 10, CATALUNA 20, MADRID 10, VALENCIA 15, EXTREMAD 20, ANDALUCI 10, CASTLEON 15/
cp(t) coste de parada
/GALICIA 5, CATALUNA 10, MADRID 5, VALENCIA 10, EXTREMAD 5, ANDALUCI 15, CASTLEON 10/
08/01/2019 45
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
VARIABLES
CT coste variable total del sistema [M€]
A(t,h) acoplamiento del grupo t a las h horas [0-1]
AR(t,h) arranque del grupo t a las h horas [0-1]
PR(t,h) parada del grupo t a las h horas [0-1]
P(t,h) generación producida por el grupo t a las h horas [MW]
EQUATIONS
COSTE costes variables de generación-función objetivo [€]
DEMANDA(h) abastecimiento de la demanda [MW]
RESERVA(h) reserva rodante del sistema [MW]
COTASUP(t,h) cota superior de producción del grupo t [MW]
COTAINF(t,h) cota inferior de producción del grupo t [MW]
RAMPASUB(t,h) limitación de rampa de subida del grupo t [MW]
RAMPABAJ(t,h) limitación de rampa de bajada del grupo t [MW]
LOGICA(t,h) relación lógica entre variables de acoplamiento arranque y parada ;
[Link](t,h) = pmax(t)
OPTION OPTCR = 0
46 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
En algunos problemas de producción se puede suponer que hay una ganancia unitaria
fija asociada a cada producto, con lo que la función objetivo de beneficio que se obtiene
es lineal. Sin embargo, en otros problemas ciertos factores introducen no linealidades en
la función objetivo. Por ejemplo, un gran fabricante puede encontrar precios elásticos
mediante los cuales la cantidad que se puede vender de un producto va en relación inversa
con el precio que se cobra. La curva precio-demanda, p ( x) , que representa el precio
unitario que se necesita para poder vender x unidades, sería una función no lineal
decreciente, nunca inferior al coste unitario de producción c .
=
P ( x) xp ( x) − cx
Si, además, la empresa tiene una función semejante para cada uno de los n productos
que puede fabricar la función objetivo global sería una suma de funciones no lineales.
n n
=
f ( x) ∑=
=j 1 =j 1
Pj ( x) ∑ x j p j ( x j ) − c j x j
Otra razón por la que pueden surgir no linealidades en la función objetivo es a causa
de los costes de producción, ya que éstos pueden variar con el nivel de producción. Por
ejemplo, el coste puede decrecer cuando aumenta el nivel de producción gracias al efecto
de una curva de aprendizaje (mayor eficiencia con más experiencia) o aumentar por
necesidad de tiempos extra o instalaciones más costosas.
Las restricciones también se pueden ver afectadas por estos tipos de no linealidades.
Una que surge inmediatamente es la restricción de presupuesto, si existe, cuando los
costes de producción varían como se ha descrito anteriormente. También serán funciones
no lineales las asociadas a los recursos, siempre que el uso de un determinado recurso no
sea proporcional a los niveles de los respectivos productos.
08/01/2019 47
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Así pues, el coste de embarcar x unidades viene dado por una función poligonal,
C ( x) , continua, con pendiente en cada tramo igual al coste unitario de transporte. En
consecuencia, si cada combinación de origen y destino tiene una función semejante, la
función objetivo sería
m n
f ( x) = ∑∑ Cij ( xij )
=i 1 =j 1
Sin embargo, hay que distinguir dos casos al hacer la formulación, según el descuento
se aplique a todas las unidades si la cantidad supera un valor, o sólo a las que superan ese
valor.
En el caso de que el descuento sólo se aplique a las cantidades que superan un valor,
por ejemplo k, de modo que las k primeras siempre tienen un coste unitario c y las que
sobrepasen a k, tengan un descuento siendo su coste unitario c-a, obsérvese que la función
es continua:
48 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
El modelo para representar esta función, siendo X la variable pasa por dividir esta
variable en dos, una hasta el valor k y otra para el exceso, obligando a que la segunda no
sea distinta de cero mientras la otra no llegue al valor k:
min cX 1 + (c − a ) X 2
= X1 + X 2
X
δ k ≤ X1 ≤ k
0 ≤ X 2 ≤ cot a δ
δ ∈ {0,1}
En el caso, de aplicarse el descuento a todas las unidades la función es discontinua:
se van a incluir. Sean µ j y σ jj la media y la varianza del rendimiento sobre cada acción
de tipo j , en donde σ jj es una medida del riesgo de estas acciones. Sea σ ij la covarianza
08/01/2019 49
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
del rendimiento sobre una acción de cada tipo i y j . Entonces, el valor esperado R ( x) y
la varianza V ( x) del rendimiento total de la cartera son
n
R( x) = ∑ µ j x j
j =1
n n
V ( x) = ∑∑ σ ij xi x j
=i 1 =j 1
( x) R( x) − βV ( x)
f=
donde β se denomina factor de aversión al riesgo, ya que cuanto mayor sea mayor
importancia (negativa) se le da en la función objetivo a la variabilidad (la volatilidad del
rendimiento no es más que su desviación estándar) de la inversión final.
∑P x
j =1
j j ≤B
xj ≥ 0 j =
1,..., n
50 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
III.2. Referencias
Nemhauser, G.L. and Wolsey, L.A. (1999) Integer and Combinatorial Optimization. John
Wiley and Sons.
Williams, H.P. (1999) Model Building in Mathematical Programming. 4th Edition. John
Wiley and Sons.
Costes (u.m.) E1 E2 E3 E4
D1 100 – 125 –
D2 – 100 125 100
08/01/2019 51
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
D3 75 100 – 125
Formular y resolver un problema para determinar el plan de rutas óptimo que
maximice el beneficio de la empresa.
PROBLEMA: PRODUCCIÓN
M1 M2 M3 M4 M5 Precio venta
P1 1 1 1 15
P2 1 1 1 20
P3 1 1 1 15
P4 1 1 10
Disponible 200 150 150 200 100
52 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Tienen que transportarse sacos con alimentos mediante tres tipos de aviones A1, A2,
A3, desde un aeropuerto y arrojarse en las aldeas V1, V2, V3, V4, V5, afectadas por
inundaciones. La cantidad de alimentos (en unidades adecuadas) que cada avión puede
transportar a cada aldea en cada viaje, se da en la siguiente tabla. El número de viajes que
puede hacer cada avión se da en la última columna y el número máximo de aviones que
puede recibir diariamente cada aldea en la última fila. Encontrar el número de viajes que
deberá hacer cada avión a cada aldea de forma que se maximice la cantidad de alimento
distribuido por día.
V1 V2 V3 V4 V5
A1 10 8 6 9 12 50
A2 5 3 8 4 10 90
A3 7 9 6 10 4 60
100 80 70 40 20
Una compañía planea construir varios almacenes para guardar un cierto producto.
Estos almacenes surtirán a dos grandes clientes con las unidades demandadas
mensualmente apuntadas en la última fila de la tabla. Se pueden construir hasta tres
almacenes, que se tienen como candidatos, con capacidades expresadas en la última
columna. Usando el coste estimado de construcción de los almacenes, su vida útil y el
valor del dinero en el tiempo, los costes de construcción por mes para los tres almacenes
se han estimado en 8000, 12000 y 7000. A continuación se dan los costes de transporte
por unidad desde los tres almacenes candidatos a los clientes.
08/01/2019 53
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Una compañía tiene dos fábricas, una en Alicante y otra en Huelva. Las dos fábricas
producen frigoríficos y lavadoras. Las capacidades de producción de estos artículos en
Alicante son de 5000 y 7000, respectivamente, y en Huelva de 8000 y 4000. La compañía
entrega estos productos a tres grandes clientes en las ciudades de Barcelona, A Coruña y
Valencia, siendo las demandas:
Demanda/Cliente
Barcelona A Coruña Valencia
Los artículos se transportan por ferrocarril. En la tabla siguiente se muestran los costes
unitarios de transporte y las limitaciones para enviar cualquiera de los dos productos de
cada fábrica a cada cliente:
54 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
PROBLEMA: LOGÍSTICA
Una empresa tiene dos factorías, F1 y F2, con las que abastece a tres almacenes de
distribución, D1, D2 y D3, de dos artículos, A1 y A2.
Los costes de transporte de una unidad de cualquiera de los dos artículos desde cada
factoría a cada almacén se dan en la tabla izquierda, en tanto que los precios de venta
unitarios de cada artículo en cada almacén se dan en la tabla derecha.
Coste Tr D1 D2 D3 Precio D1 D2 D3
F1 4 7 5 A1 17 20 18
F2 6 5 7 A2 19 17 21
El tiempo, expresado en minutos, que se tarda en fabricar una unidad de cada artículo
en cada una de las factorías se refleja en la tabla izquierda, en tanto que los costes unitarios
de fabricación de cada artículo en cada factoría aparecen en la tabla derecha.
Tiempo A1 A2 Coste Fb A1 A2
F1 6 7.5 F1 8 6
F2 10 5 F2 5 10
La capacidad de producción de la factoría 1 es de 260 horas y la de la factoría 2 de
240 horas.
Las demandas mínimas de cada uno de los artículos que en cada almacén deben ser
satisfechas son expresadas en la tabla siguiente.
D1 D2 D3
Por último y por cuestiones de tipo técnico y de política de empresa, nunca se pueden
producir en cualquiera de las factorías más de 500 unidades de un artículo que de otro.
08/01/2019 55
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los turnos de autobuses funcionan durante ocho horas seguidas y pueden comenzar
al principio de cualquiera de los seis periodos descritos anteriormente. Además, si en el
turno que comienza a las 8:00 p.m. hay estrictamente más de 4 autobuses, en el siguiente
ha de haber también estrictamente más de 4. Plantear un problema de programación lineal
entera para determinar el mínimo número de autobuses diario que satisface las
necesidades anteriores.
56 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
¿Cuál es el número óptimo de camiones de ambas clases que deben movilizarse para
ese transporte y teniendo en cuenta las restricciones?
08/01/2019 57
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Empleados
Lunes 17
Martes 13
Miércoles 15
Jueves 19
Viernes 14
Sábado 16
Domingo 11
PROBLEMA: ABASTECIMIENTO
Una empresa abastecedora de agua tiene que llevar agua de un punto s a un punto t
y para realizar la conexión entre ambos puntos ha de pasar por unos puntos intermedios.
Cada conexión entre un par de puntos tiene un coste estimado de construcción y, una vez
construida, un coste unitario de envío de cada litro y una capacidad por hora que se
recogen en la siguiente tabla:
58 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Dados unos trabajos que realizar, una duración de éstos y una fecha de entrega
prevista, plantear un problema de programación lineal entera para encontrar la secuencia
que minimiza el retraso o demora media con que los trabajos son entregados, con los
siguientes datos:
Tarea T1 T2 T3 T4
Tiempo de proceso 9 12 7 14
Fecha de entrega 15 19 23 31
08/01/2019 59
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
PROBLEMA: PRODUCCIÓN II
Además existe una limitación inferior y superior en caso de que se produzca alguna
cantidad de cada artículo. Es decir, si se produce algo del producto 1 ha de ser más de 15
y menos de 30 kg y si se produce algo del producto 2 ha de ser más de 10 y menos de 20
kg. Plantear el problema y obtener la solución óptima.
60 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
En una misión pacífica de las Naciones Unidas se dispone de 5 aviadores para formar
las tripulaciones de dos aviones biplaza. Estos aviadores son de distintas nacionalidades:
Español, Francés, Italiano, Griego y Portugués. Como en toda cuestión diplomática las
relaciones internacionales son de gran peso, cada una de las distintas composiciones de
las tripulaciones conlleva un beneficio, siendo éstos:
Español 2 5 4 3
Francés 4 4 2
Italiano 5 4
Griego 3
Por otra parte, estas mismas relaciones internacionales hacen que si una tripulación
está formada por el aviador español y el italiano la otra ha de estar formada por el aviador
francés y el griego. Formular el problema de programación lineal entera.
La empresa Sunco Oil produce dos tipos de gasolina (1 y 2), cada una de ellas
mezclando dos tipos de crudo (1 y 2). Los precios de venta de cada barril de gasolina son
7000 y 6000 €, respectivamente. Por su parte, los precios de compra de los dos tipos de
crudo son de 4500 y 3500 € por barril, respectivamente. Se pueden comprar hasta 5000
barriles de cada crudo diarios. Los dos tipos de gasolina difieren en su índice de octano y
en su contenido en azufre. La mezcla del petróleo crudo que se utiliza para obtener la
gasolina 1 ha de tener un índice de octano promedio de al menos 10 y a lo sumo un 1 %
de azufre. La mezcla que se obtiene para la gasolina 2 ha de tener un índice promedio de
octano de por lo menos 8 y a lo sumo un 2 % de azufre. Los índices de octano y el
contenido en azufre de los dos tipos de crudo son:
Crudo
Octano Azufre
1 12 0.5
08/01/2019 61
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
2 6 2.0
PROBLEMA: PRODUCCIÓN VI
siendo j cada una de las semanas, y ha de ser satisfecha. Cada una de las máquinas i
puede estar arrancada y produciendo durante cada semana o no, pero si lo está tiene un
coste fijo por estar arrancada de cfi €, siendo su producción máxima pmi . Además, el
coste unitario de producción con cada una de las máquinas es variable con las semanas,
siendo cvij € por unidad de producto, y el coste de almacenamiento de una semana a otra
está estimado en calm € por unidad de producto. Por otra parte, arrancar una máquina
para acoplarla una semana si no lo estaba la anterior tiene un coste de arranque carri . Se
supone que todas las máquinas inicialmente están arrancadas (no hay coste de arranque
para la primera semana).
b) Sobre la formulación anterior supóngase ahora que cuando una máquina para, ha
de hacerlo al menos dos semanas consecutivas por razones técnicas, ¿cómo se
modelaría esta nueva condición?
62 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Una empresa de transporte opera en una línea ferroviaria con un determinado material
rodante que puede transportar un volumen máximo V y un peso máximo P de
mercancías, transportando distintas mercancías de otras empresas. Para un determinado
día dispone de distintas solicitudes de mercancías, de modo que de cada mercancía i
conoce la cantidad máxima a transportar mxi , el volumen vi y peso pi unitarios, el pago
que el propietario de la mercancía está dispuesto a pagar a la empresa por cada unidad
transportada, bi , y el coste que estima la empresa por cada unidad a transportar, ci . La
empresa de transporte desea tener un modelo que le permita elegir cada día las cantidades
de las mercancías que le proporcionen mayor beneficio a partir de estos datos diarios.
A su vez, puede variar la capacidad del material rodante, tanto en volumen o peso, de
modo que desea saber en cuánto puede valorar cada unidad extra de volumen y de peso
de la que puede disponer, para saber cuánto puede estar dispuesto a pagar por un aumento
de éstos.
Por otra parte, a los propietarios de las mercancías que no son transportadas, puede y
debe informarles de la cantidad en la que deberían aumentar su oferta para que su
mercancía fuera transportada (en detrimento de otras).
a) Presentar un modelo lineal para este problema, suponiendo que las cantidades se
pueden fraccionar. ¿Qué elementos del modelo darías como resultado para responder
a las distintas preguntas planteadas?
b) Supóngase ahora que la oferta conlleva un descuento por volumen de modo que la
cantidad que un propietario paga por cada unidad es de la forma ai − gi xi , donde xi
es la cantidad transportada. Plantear el nuevo modelo.
c) Sobre el planteamiento del apartado a), supóngase que lo que hay es una capacidad
de volumen y peso por vagón, V y P , y que hay que decidir además de cuánto
transportar, cuántos vagones hay que enganchar, existiendo un coste unitario por
vagón utilizado, cvag . Plantear el nuevo modelo.
08/01/2019 63
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Una compañía discográfica está pensando en editar una colección de grandes éxitos
de uno de sus cantantes más famosos. Todas sus canciones han sido agrupadas en doce
lotes. Cada lote ocupa tiene un cierto tamaño expresado en MB y tiene asociado un índice
de marketing (relacionado con su demanda esperada).
Una compañía aérea tiene una flota de 15 aeronaves: 5 de cada uno de tres tipos A, B
y C, cuyas respectivas capacidades para el transporte de viajeros son de 80, 68 y 55
personas. Una agencia de viajes le solicita presupuesto para trasladar a 372 personas. La
64 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
compañía analiza sus costes, que dependen del número de aviones de cada tipo que quiera
utilizar para transportar a esas personas, datos que se dan en la siguiente tabla en miles
de euros
Tipo 1 2 3 4 5
A 11 20 30 40 50
B 9 17 24 34 45
C 8 15 21 26 31
Además la compañía aérea incurre en un coste fijo adicional de 6 k€ por cada tipo de
aviones que utilice.
PROBLEMA: PROVEEDORES
M1 M2 M3 M4 Existencias en almacenes
A1 6 7 9 5 220
A2 7 10 9 6 350
A3 5 8 7 5 270
Demandas en mercados 80 90 100 135
Cuando un almacén abastece a un mercado ha de firmar un contrato para establecerse
como proveedor del mercado, de modo que ha de pagar una cantidad por el único hecho
de ser proveedor, establecida en 100 €. La demanda de los mercados ha de ser satisfecha.
08/01/2019 65
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Un pequeño ganadero alimenta sus reses con una mezcla de dos piensos compuestos,
P1 y P2, que él mismo elabora, y en los que es posible encontrar tres nutrientes N1, N2 y
N3, de acuerdo con lo reflejado en la tabla, donde se da el contenido, en gramos, de cada
nutriente por kilo de pienso compuesto.
N1 N2 N3 Aditivos
Los costes de fabricación de un kilo de cada pienso son de 0.3 € para P1 y de 0.36 €
para P2. Las necesidades diarias de una res respecto a los nutrientes considerados son:
• N1: entre 250 y 300 gramos, con una cantidad óptima de 250 gramos
• N2: entre 325 y 460 gramos, con una cantidad óptima de 400 gramos
66 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Vacas Cerdos
M1 M2 M3 Disponibilidad M1 M2 M3 Disponibilidad
G1 25 21 20 25 6 7 8 130
G2 27 19 25 32 8 6 7 100
Demanda 17 6 22 45 85 76
En cada explotación hay 6 vehículos especialmente adaptados para el transporte de
vacas y 8 para el de cerdos. Un vehículo para vacas tiene una capacidad en volumen de
100 unidades y uno para cerdos tiene una capacidad de 80 unidades de volumen. Con
independencia de la explotación ganadera y del matadero entre los que puedan hacer un
viaje, el uso de un camión para vacas tiene un coste fijo de 200 €, además del coste
directamente asociado a las vacas transportadas. Por lo que hace a los camiones para
cerdos, dicho coste fijo es de 165 €.
1. Elaborar un modelo de programación lineal entera que satisfaga las demandas de los
mataderos con un coste de transporte mínimo.
08/01/2019 67
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
3. Minimizar la suma de los retrasos de cada pedido con respecto a las fechas de entrega
teniendo en cuenta que el corte de una bobina madre en bobinas hija dura 6 horas y
que sólo se dispone de una máquina de corte de bobinas madre por lo que el corte de
cada bobina se hace consecutivamente
68 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
3. ¿Qué modificación adicional hay que introducir cuando el coste unitario de transporte
entre un centro de distribución y un mercado cualesquiera de todas las unidades que
excedan de un mínimo m , y sólo de ellas, se reduce en una cantidad h ?
08/01/2019 69
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
s.a. ∑X j
ij ≤ capi ∀i
∑X
i
ij ≤ dem j ∀j
X ij ≤ capacij ∀i, j
X ij ≤ 20Yij ∀i, j X ij , Yij ≥ 0, Yij ∈
Objetivo: 825
E1 E2 E3 E4 E1 E2 E3 E4
Cantidades Camiones
D1 80 0 60 0 D1 4 0 3 0
D2 0 60 80 80 D2 0 3 4 4
D3 40 60 0 40 D3 2 3 0 2
min ∑ c T + 200Y
i
i i
=
s.a. Ti ∑
j ≠ i +1,i + 2
X j ≥ neci ∀i ≠ 5, 6, 7
=Ti ∑
j ≠ i +1,i + 2
X j + Y ≥ nec
= i ∀i 5, 6, 7
Y ≤3
X i , Ti , Y ≥ 0
L M X J V S D Extra
8 2 2 4 3 3 0 0
COSTE: 6730
70 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
s.a. ∑a i
ij X i ≤ disp j M j ∀j
X i ≥ 0, M j ∈ {0,1}
Beneficio 1435
P1 50
P2 100
P3 0
P4 150
∑x
j
ij ≤ ai ∀i
∑x
i
ij ≤ v j ∀j
xij ≥ 0
∑xj
ij ≤ ci yi ∀i
∑x
i
ij ≥ dj ∀j
xij ≥ 0, yi ∈ {0,1}
08/01/2019 71
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Construir los almacenes 1 y 3 y servir 3000 unidades del almacén 1 al cliente 1 y 1000
unidades al cliente 2 y del almacén 3 4000 unidades al cliente 2.
∑x
j
ijk ≤ aik ∀i, k
∑x
i
ijk ≥ b jk ∀j , k
∑x
k
ijk ≤ tij ∀i, j
xijk ≥ 0
∑t
j ,k
x ≤ hi
ik ijk ∀i
∑x
i
ijk ≥ b jk ∀j , k
xijk ≥ 0
A1 D1 D2 D3
F1 600 0 500
F2 0 840 0
72 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
A1 D1 D2 D3
F1 0 0 1200
F2 700 500 0
El beneficio neto es de 29000.
min x1 + x2 + x3 + x4 + x5 + x6
x1 + x6 ≥ 4
x1 + x2 ≥ 8
x2 + x3 ≥ 10
x3 + x4 ≥ 7
x4 + x5 ≥ 12
x5 + x6 ≥ 4
x5 + x6 ≤ 4 + 12δ
x1 + x6 ≥ 5δ
xi ∈ + , δ ∈ {0,1}
08/01/2019 73
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
min 4 x1 + 4 x2 + 4 x3 + 4 x4 + 3 x5 + 4 x6 + 3 x7 + 3 x8
x1 + x2 + x6 ≥ 1
x1 + x3 + x5 + x8 ≥ 2
x1 + x2 + x3 + x7 ≥ 1
x1 + x3 + x6 ≥ 1
x2 + x4 + x6 ≥ 1
x3 + x8 ≥ 1
x2 + x4 + x5 ≥ 1
x5 + x7 ≥ 1
x4 + x7 ≥ 1
x4 + x6 + x8 ≥ 1
x2 + δ ≥ 1
o bien { x5 + x7 ≥ 2 − 2 x2
x5 + x7 − 2δ ≥ 0
xi , δ ∈ {0,1}
x1 + x4 + x5 + x6 + x7 ≥ 17
x1 + x2 + x5 + x6 + x7 ≥ 13
x1 + x2 + x3 + x6 + x7 ≥ 15
x1 + x2 + x3 + x4 + x7 ≥ 19
x1 + x2 + x3 + x4 + x5 ≥ 14
x2 + x3 + x4 + x5 + x6 ≥ 16
x3 + x4 + x5 + x6 + x7 ≥ 13
xi ∈ +
74 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Se eligen las conexiones (s–1), (s–2), (1–3), (1–t), (2–t) y (3–t) y pasa un flujo de 80,
100, 50, 30, 100 y 50 respectivamente. El coste total es 853300.
08/01/2019 75
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
1
La función objetivo será la minimización de la demora media min ∑ pi sujeto a:
4 i
- Por otra parte, el trabajo j que acaba en esa posición acaba en el instante
∑ j
d j ∑ k ≤i xkj . Las variables ni y pi , cuentan si acaba antes de tiempo
en la función objetivo ∑d ∑ x
j
j
k ≤i
kj + ni=
− pi ∑r x
j
j ij ∀i
- ni , pi ≥ 0 xij ∈ {0,1}
76 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
max ∑ pk yk − e∑ tk xk − c ∑ xk
k k k
∑x
k
k ≤x
∑t x
k
k k ≤t
=
yk ak xk , ∀k
uk y k ≤ yk ≤ uk y k , ∀k
xk , yk ≥ 0, uk = {0,1} , ∀k
ii + pi − di =
ii +1
pi ≤ pi
ii ≤ ii
= =
i1 250, i5 100
ii , pi ≥ 0
08/01/2019 77
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
max 7000( x11 + x21 ) + 6000( x12 + x22 ) - 4500( x11 + x12 ) - 3500( x21 + x22 )
-400( x11 + x12 + x21 + x22 ) - y1 - y2
x11 + x12 ≤ 5000
x21 + x22 ≤ 5000
x11 + x12 + x21 + x22 ≤ 9000
12 x11 + 6 x21 ≥ 10( x11 + x21 )
12 x12 + 6 x22 ≥ 8( x12 + x22 )
0.5 x11 + 2 x21 ≤ x11 + x21
0.5 x12 + 2 x22 ≤ 2( x12 + x22 )
x11 + x21= 3000 + 0.1 y1
x12 + x22 = 2000 + 0.1 y2
x11 , x12 , x21 , x22 , y1 , y2 ≥ 0
min ∑ calmAl j + ∑ ( cvij Pij + cfi λij + carri Arrij )
j i
∑ Pij + Al j −1 = dem j + Al j ∀j ( Al0 = 0)
i
78 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
=
max z ∑ (b − c ) x
i
i i i
∑v x i i ≤V
a) i
∑px i
i i ≤P
0 ≤ xi ≤ mxi ∀i
max z= ∑ (a − g x − c ) x
i
i i i i i
∑v x i i ≤V
b) i
∑px i
i i ≤P
0 ≤ xi ≤ mxi ∀i
max z = ∑ (b − c ) x
i, j
i i ij − cvag ∑ y j
j
∑v x
i
i ij ≤ Vy j ∀j
c) ∑px
i
i ij ≤ Py j ∀j
∑x
j
ij ≤ mxi ∀i
xij ≥ 0, y j ∈ {0,1}
o bien
max z = ∑ (b − c ) x − cvag ⋅ y
i
i i i
∑v x
i
i i ≤ Vy
∑px
i
i i ≤ Py
0 ≤ xi ≤ mxi ∀i
+
y ∈
08/01/2019 79
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
max ∑ y j
j
∑ x=j
ij 1 ∀i
∑ tam x
i
i ij ≤ 700 y j ∀j
∑ indi x
i
i ij ≥ 45 y j ∀j
x1 j + x2 j + x3 j ≤ 1 ∀j
xij , y j ∈ {0,1}
∑ CAP ∑ j ⋅ x i ij ≥D ∑ CAP ∑ j ⋅ x i ij ≥D
i j o bien i j
∑x
j
ij ≤ yi ∀i ∑x j
ij ≤ 1 ∀i
∑X
j
ij ≤ ai ∀i
1. ∑=
X
i
ij dj ∀j
80 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
∑X
j
ij ≤ ai ∀i
∑=
X
i
ij dj ∀j
min ∑ ci X i + ∑ p j ( D j + E j )
i j
∑a
i
ij X i ≥ min j ∀j
a) ∑a
i
ij X i ≤ max j ∀j
∑a
i
ij X i + D j − E=
j opt j ∀j
Xi , Dj , E j ≥ 0
min ∑ ci X i + Extra + ∑ p j ( D j + E j )
i j
∑a
i
ij X i ≥ min j ∀j
∑a
i
ij X i ≤ max j ∀j
∑a
i
ij X i + D j − E=
j opt j ∀j
X1 − 2 X 2 ≤ M δ
Extra ≥ 0.05 X 1 − M (1 − δ )
X i , D j , E j , Extra ≥ 0 δ ∈ {0,1}
08/01/2019 81
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
∑a
i
ij X i ≥ min j ∀j
∑a
i
ij X i ≤ max j ∀j
∑a
i
ij X i + D j − E=
j opt j ∀j
=
X 1 X 1− + X 1+
X1 − 2 X 2 ≤ M δ
X 1− ≤ M (1 − δ )
X 1+ ≤ M δ
X i , X 1− , X 1+ , D j , E j ≥ 0 δ ∈ {0,1}
FIJOk coste fijo de uso del camión para transportar animales tipo k
camión de tipo k
82 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Variables:
min ∑ ∑ ( COSTE x + FIJOk zijk )
ijk ijk
k i, j
∑x
j
ijk ≤ DISPik ∀i, k
∑x
i
ijk ≥ DEM jk ∀j , k
∑z
j
ijk ≤ N ik ∀i, k
xijk ≤ ANIM k zijk ∀i, j , k Cuasicorrecto :VOLk xijk ≤ CAPk zijk ∀i, j , k
xijk , zijk ∈ +
b)
n vehículo
cada animal k
FIJOk coste fijo de uso del camión para transportar animales tipo k
08/01/2019 83
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Variables
kn
xijk cantidad de animales de tipo k transportados entre la explotación ganadera i y
vijnk uso o no del vehículo n diseñado para el transporte del animal k para transportar
∑ (x
nj
kn
ijk
k ′n
+ yijk ) ≤ DISPik ∀ik
∑v
j
kn
ij ≤ 1 ∀ikn
kn
xijk kn
, yijk ∈ + , viknj ∈ {0,1}
La solución óptima con una tolerancia relativa del 3 % tiene un coste de 4943 €.
Vehículos Vehículos
de vacas de cerdos
M1 M2 M3 M1 M2 M3
G1 (8,0) (0,23) (0,26) (0,24)
(8,0) (1,22)
(6,0)
G2 (8,0) (6,7) (0,26) (0,26)
(8,0) (0,26) (0,26)
84 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
J
• Satisfacción de cada pedido i : ∑ X=
j =1
ij 1 ∀i
I
• Los pedidos de una bobina no pueden exceder su ancho: ∑AX
i =1
i ij ≤ AY j ∀j
∑AX
i =1
i ij + D=
j AY j ∀j
08/01/2019 85
III FORMULACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
∑ 6 jX ij + ADi − RTi = Fi
j =1
∀i o bien ∑ 6 jX
j =1
ij − RTi ≤ Fi ∀i
1. Variables
min ∑ cij X ij + ∑ w jk Y jk
ij jk
∑Xj
ij ≤ ei ∀i
∑=
Y
j
jk dk ∀k
∑ X ij
=
i
∑Y
k
jk ∀j
X ij , Y jk ≥ 0 X ij , Y jk ∈ ??
1 le provee distribuidor 1
2. Nueva variable: Z =
0 le provee distribuidor 2
Y11 ≤ MZ
Y21 ≤ M (1 − Z )
Z ∈ {0,1}
86 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
3. Entiendo por el enunciado que las m primeras siempre cuestan lo mismo y las
que se pasen son las que tienen descuento (no todas una vez se pasan).
Nuevas variables
N jk , Pjk : exceso y defecto sobre el valor m
1 si N jk > 0
δ jk =
0 si Pjk > 0
Modificar función objetivo añadiendo el término −∑ hN jk
jk
(Estas dos últimas son necesarias pues si no pueden ser distintas de 0 ambas a la
vez, para un mismo valor de Y y lograr menor coste).
P
4. Sea cap = número de artículos que caben en un camión. Sean las variables:
p
Modificar la función objetivo añadiendo el término +C ∑ Tij + ∑ S jk
ij jk
X ij ≤ capTij ∀i, j
Y jk ≤ cap S jk ∀j , k
08/01/2019 87
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 89
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los optimizadores de las hojas de cálculo, por ser aplicaciones muy comunes y
conocidas, pueden ser un vehículo eficaz de difusión de un modelo entre cierto tipo
de usuarios y facilitan el manejo de datos que se encuentren ya en dicho formato
[Ragsdale, 1998]. Como ventajas específicas se pueden mencionar: su facilidad de
uso, su integración total con la hoja de cálculo, la familiaridad con el entorno que
facilita la explicación del modelo y de sus resultados, así como la facilidad de
presentación de resultados en gráficos. Sin embargo, no inducen una buena práctica
de programación, presentan la dificultad de su desarrollo, verificación, validación,
actualización, documentación y, en general, el mantenimiento del modelo y no
permiten modelar problemas complejos o de gran tamaño [Gass, 1995]. Frontline
Systems ([Link]) ha desarrollado optimizadotes para Microsoft Excel.
Todas estas alternativas pueden ser utilizadas para desarrollo rápido de un prototipo
o una demostración ya que presentan capacidades de presentación gráfica que pueden
ser aprovechadas. Son difícilmente utilizables cuando se plantean problemas de
optimización de tamaño medio o superior.
Son las alternativas más complejas y potentes por su capacidad de indexación de las
variables y ecuaciones, permiten cambiar sin dificultad las dimensiones del modelo,
de forma natural separan datos de resultados. Desde el punto de vista del modelador
permiten la detección de errores de consistencia en la definición y verificación del
modelo. Desde el punto de vista del usuario simplifican drásticamente su
mantenimiento. Entre los lenguajes de modelado más conocidos se pueden
mencionar: GAMS ([Link]), AMPL ([Link]) de origen
estadounidense y MPL ([Link]) y AIMMS ([Link])
y XPRESS-MP ([Link]) de origen europeo, por citar algunos.
De algunos de ellos se pueden descargar versiones de estudiante desde sus páginas
web. GAMS es el más antiguo, pero con el conjunto de usuarios más amplio, quizá
90 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
por eso con algunas limitaciones en sus capacidades de modelado. AMPL es más
nuevo, muy potente para el modelado pero con un conjunto reducido de usuarios.
MPL es otro lenguaje de modelado robusto, cuya versión de estudiante acompaña al
libro [Hillier y Lieberman, 2002].
Existen libros específicos que describen sus características y que sirven como guías
de usuario tanto para el lenguaje GAMS [Brooke, 1998], [McCarl, 1998], para
AMPL, [Fourer, 2000], o para OPL [Van Hentenryck, 1999]. Incluso en España se ha
publicado un libro de optimización que se apoya en GAMS para la presentación de
ejemplos [Mocholí, 1996]. Los campos de aplicación de estos lenguajes son tan
4
CPLEX es problablemente el mejor optimizador existente para problemas LP y MIP.
5
Se denomina programación de restricciones a un tipo de programación lógica donde el dominio de
las variables viene definido por relaciones lógicas y por restricciones.
08/01/2019 91
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los lenguajes algebraicos son lenguajes de alto nivel que han sido diseñados
específicamente para el desarrollo e implantación de modelos de optimización de forma
más directa para los programadores y más inteligible para los usuarios. En consecuencia,
el campo de actuación y utilidad de los modelos de optimización se ha ampliado
tremendamente al utilizar estos lenguajes. Entre sus características y ventajas principales
destacan las siguientes:
• Separan de manera natural los datos de la estructura del modelo y ésta de los
algoritmos de solución
92 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
• Los optimizadores pueden ser intercambiados sin dificultad, se pueden probar nuevos
optimizadores, nuevos métodos o nuevas versiones. Por ejemplo, en el lenguaje
GAMS se encuentran entre otros disponibles los optimizadores CPLEX, OSL, XA y
XPRESS para problemas LP y MIP, MINOS y CONOPT para problemas NLP,
DICOPT para problemas MINLP y MILES y PATH para problemas MCP.
6
Una manera habitual de desarrollar es utilizar una maqueta (caso ejemplo) para la depuración y
verificación del modelo y una vez comprobada su validez utilizar el caso real a ser resuelto.
08/01/2019 93
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
IV.1.3. Referencias
Brooke, A., Kendrick, D., Meeraus, A. and Raman, R. (1998) GAMS A User’s Guide.
GAMS Development Co.
Fourer, R., Gay, D.M. and Kernighan, B.W. (2000) AMPL: A Modeling Language for
Mathematical Programming. The Scientific Press. 2nd ed.
Gass, S.I., Hirshfeld, D.S. and Wasil, E.A. (1995) “Model World: The Spreadsheeting of
OR/MS” Interfaces pp. 72-81. September-October.
McCarl, B.A. and Spreen, Th.H. (1998) Applied Mathematical Programming using
Algebraic Systems. Technical Report.
94 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Van Hentenryck, P. (1999) The OPL Optimization Programming Language. The MIT
Press.
X ≥ 20
X + Y ≤ 100
X + Y ≥ 50
X ,Y ≥ 0
08/01/2019 95
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Por otra parte, los dos atributos planteados y su dirección de optimización, serían:
Calidad: max X
Coste: min 200 X + 100Y
A continuación, para cada objetivo, marcar una celda que contendrá la fórmula de ese
objetivo como función de las variables. Por ejemplo, para el criterio Calidad, cuya
expresión es la cantidad del componente 1, en el ejemplo se ha seleccionado la celda C3
donde se ha escrito =A2 , ya que es la celda donde está el valor de X. Para el criterio
96 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Para introducir cada una de las restricciones, se selecciona una celda con la expresión
del lado izquierdo de la restricción, y otra con el lado derecho de la restricción. Por
ejemplo, para indicar que del componente 1 ha de haber al menos un 20%, en la celda B7
se ha introducido =A2; y en la celda C7, se ha introducido 20. Para indicar que la suma
de ambos componentes ha de ser a lo sumo el 100%, en la celda B8 se ha introducido
=A2+B2, y en la celda C8 100 . Por último, para que la suma sea de al menos el 50%, se
ha introducido en la celda B9 =A2+B2, y la celda C9 100 . Todas estas celdas están con
fondo naranja.
Con esto se han introducido los datos del modelo que se montará y resolverá con el
complemento Solver. Este complemento viene por defecto en Excel, pero no siempre está
activado. Si al ir al menú de Herramientas, no apareciera, haga click sobre Complementos,
y en la pantalla que se abrirá, active la línea que pone Solver. Para montar el modelo,
vaya al menú Herramientas y haga click sobre Solver. Aparecerá una pantalla como la
siguiente, titulada Parámetros de Solver, pero vacía.
Donde pone Celda Objetivo, marque la celda donde está la expresión del objetivo que
desea optimizar. En la imagen está C3 (por defecto Solver lo pone con dólares entre
medias), que es que se va a optimizar la Calidad, cuya expresión pusimos en esa celda.
08/01/2019 97
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Donde pone Valor de la celda objetivo, puede marcar Máximo si desea maximizar ese
atributo, Mínimo si desea minimizar, y otra opción no relevante para nuestro propósito.
En este caso, siendo Maximizar la Calidad el criterio, marcamos Máximo.
Después pregunta acerca de las celdas que contienen el valor de las variables. En ese
cuadro debe marcar las celdas donde están las variables, en nuestro caso A2 y B2.
Donde pone Referencia de la celda, deber marcar la celda con la expresión del lado
izquierdo de la restricción. Donde pone Restricción, la celda que recoge el lado derecho
de la restricción. Y en medio, da a elegir entre 5 opciones: <= para restricciones de menor
o igual, = para restricciones de igualdad, >= para restricciones de mayor o igual, int para
que las variables marcadas en el lado izquierdo tengan que ser variables que sólo toman
valores enteros, y bin para indicar que las variables marcadas en el lado izquierdo sólo
puedan tomar valores 0 o 1.
98 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Como norma general, son parámetros bastante técnicos, pero hay dos que es necesario
tocar, y alguno que es conveniente. Los que son necesarios es marcar Adoptar modelo
lineal, y Asumir no negativos (especialmente éste último, ya que es donde indicamos que
las variables sólo pueden tomar valores positivos). También es recomendable reducir
algunos de los números que aparecen por defecto (los de Precisión, Tolerancia y
Convergencia), pero no se puede llegar a poner 0 que sería lo ideal. Pulsar Aceptar para
08/01/2019 99
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Este modelo creado aparecerá siempre que se pulse Solver, y se puede modificar el
objetivo simplemente marcando la otra celda objetivo (C4) en el primer parámetro de
Solver, cambiando a Mínimo para minimizar el coste, y pulsando Resolver.
100 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
El archivo Excel que incluye las soluciones de los casos de estudio es Ejemplos
MO_MIM.xls
E1 E2 E3 E4 Capacidad
D1 80 – 70 – 150
D2 – 60 90 85 300
D3 40 60 – 50 250
Demanda 130 200 150 250
08/01/2019 101
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Además, cada unidad que se envíe a las gasolineras le supone un beneficio de 7 u.m. y
los envíos se llevan a cabo en camiones cuya capacidad es de 20 unidades cada uno, con
un coste estimado por camión en cada una de las rutas de:
Costes (u.m.) E1 E2 E3 E4
D1 100 – 125 –
D2 – 100 125 100
D3 75 100 – 125
Formular y resolver un problema para determinar el plan de rutas óptimo que
maximice el beneficio de la empresa.
SOLUCIÓN:
s.a. ∑X j
ij ≤ capi ∀i
∑Xi
ij ≤ dem j ∀j
X ij ≤ capacij ∀i, j
X ij ≤ 20Yij ∀i, j X ij , Yij ≥ 0, Yij ∈
Objetivo: 825
Cantidades E1 E2 E3 E4 Camiones E1 E2 E3 E4
D1 80 0 60 0 D1 4 0 3 0
D2 0 60 80 80 D2 0 3 4 4
D3 40 60 0 40 D3 2 3 0 2
102 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
conductores para operar los trenes varía dependiendo del día, siendo, de lunes a domingo,
de 18, 16, 15, 16, 19, 14 y 12 conductores respectivamente. El coste de personal varía a
lo largo de la semana. Para un día cualquiera de lunes a viernes el coste es de 50 € por
día, los sábados se pagan a 75 y los domingos a 90.
SOLUCIÓN:
s=
.a. Ti ∑
j ≠ i −1,i − 2
X j ≥ neci ∀i ≠ 5, 6, 7
Ti = ∑
j ≠ i −1,i − 2
X j + Y ≥ neci ∀i =5, 6, 7
Y ≤3
X i , Ti , Y ≥ 0
COSTE: 6730
L M X J V S D Extra
8 2 2 4 3 3 0 0
08/01/2019 103
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
M1 M2 M3 M4 M5 Precio venta
P1 1 1 1 15
P2 1 1 1 20
P3 1 1 1 15
P4 1 1 10
Disponible 200 150 150 200 100
El precio unitario de cada materia prima es de 2, 3, 4, 5 y 5, respectivamente, pero
hay un coste adicional por hacer un pedido de cada materia prima, independiente de la
cantidad que se pida, de 20, 25, 20, 25, 25 unidades, respectivamente. Determinar el plan
de producción óptimo para maximizar los beneficios de la empresa.
SOLUCIÓN:
s.a. ∑a i
ij X i ≤ disp j M j ∀j
X i ≥ 0, M j ∈ {0,1}
Beneficio 1435
P1 50
P2 100
P3 0
P4 150
104 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
En este apartado se presentan varios ejemplos sencillos que permiten mostrar algunas
de las características del lenguaje GAMS. Sin embargo, el manual de usuario contiene un
capítulo tutorial y la referencia de todas las características del lenguaje.
la demanda total para que el problema sea factible). El coste de transporte entre cada
fábrica i y cada mercado j por cada caja es cij . Se desea satisfacer la demanda de cada
mercado al mínimo coste. Las variables de decisión del problema serán las cajas
transportadas entre cada fábrica i y cada mercado j , x ij . Las ecuaciones que deben
satisfacerse son:
x j
ij ai para cada fábrica i
x
i
ij bj para cada mercado j
c x
i j
ij ij
08/01/2019 105
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
SETS
I fábricas de envasado / VIGO, ALGECIRAS /
J mercados de consumo / MADRID, BARCELONA, VALENCIA /
PARAMETERS
A(i) capacidad de producción de la fábrica i [cajas]
/ VIGO 350
ALGECIRAS 700 /
B(j) demanda del mercado j [cajas]
/ MADRID 400
BARCELONA 450
VALENCIA 150 /
TABLE C(i,j) coste unitario transporte entre i y j [miles de euros por caja]
MADRID BARCELONA VALENCIA
VIGO 0.06 0.12 0.09
ALGECIRAS 0.05 0.15 0.11
VARIABLES
X(i,j) cajas transportadas entre fábrica i y mercado j [cajas]
CT coste de transporte [miles de euros]
POSITIVE VARIABLE X
EQUATIONS
COSTE coste total de transporte [miles de euros]
CAPACIDAD(i) capacidad máxima de cada fábrica i [cajas]
DEMANDA(j) satisfacción demanda de cada mercado j [cajas] ;
106 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
- 0.05*X(ALGECIRAS,MADRID) - 0.15*X(ALGECIRAS,BARCELONA)
X(VIGO,MADRID)
(.LO, .L, .UP = 0, 0, +INF)
08/01/2019 107
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
-0.06 COSTE
1 CAPACIDAD(VIGO)
1 DEMANDA(MADRID)
X(VIGO,BARCELONA)
(.LO, .L, .UP = 0, 0, +INF)
-0.12 COSTE
1 CAPACIDAD(VIGO)
1 DEMANDA(BARCELONA)
X(VIGO,VALENCIA)
(.LO, .L, .UP = 0, 0, +INF)
-0.09 COSTE
1 CAPACIDAD(VIGO)
1 DEMANDA(VALENCIA)
CT
(.LO, .L, .UP = -INF, 0, +INF)
1 COSTE
S O L V E S U M M A R Y
MODEL TRANSPORTE OBJECTIVE CT
TYPE LP DIRECTION MINIMIZE
SOLVER CPLEX FROM LINE 39
108 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
GAMS/Cplex May 18, 2000 [Link] 19.3 [Link] For Cplex 6.6
Cplex 6.6.1, GAMS Link 16, Using a GAMS/Cplex demo license installed at runtime.
Objective : 93.500000
08/01/2019 109
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
INPUT D:\[Link]
OUTPUT D:\[Link]
SETS
M máquinas / maquina1 * maquina3 /
P tipos de papel / prensa, folio, imprenta, reciclado /
110 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
VARIABLES
PRODUCC(p,m) producción de cada tipo papel en cada máquina (t por mes)
BENEFICIO beneficio (€ por mes)
POSITIVE VARIABLE PRODUCC
EQUATIONS
CAPACMAQ(m) capacidad de cada máquina (h por mes)
DEMANDAP(p) demanda de cada tipo de papel (t por mes)
BENEF beneficio (€ por mes) ;
08/01/2019 111
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Dada una máquina y 5 trabajos que hay que realizar en ella, en cualquier orden, se
dispone del tiempo de ejecución de cada trabajo
15 13 12 14 16
y del tiempo de ajuste de la máquina para pasar de ejecutar el trabajo i (fila) a ejecutar el
trabajo j (columna)
TR1 2 5 1 6
TR2 3 4 2 5
TR3 4 2 3 4
TR4 5 3 6 5
TR5 4 4 4 3
SETS
I trabajos que se van a ejecutar / TR1 * TR5 /
ALIAS (i,j)
112 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
TR5 4 4 4 3
VARIABLES
X(i,j) paso del trabajo i al trabajo j
TT tiempo total en completar los trabajos
BINARY VARIABLE X
EQUATIONS
TIEMPO tiempo total de trabajo
ANTERIOR(i) de cada trabajo se parte una vez
POSTERIOR(j) a cada trabajo se llega una vez
PAREJAS(i,j) suma de los trabajos por parejas ;
Veamos tres posibles formulaciones del problema del viajante de comercio escritas
en GAMS. La primera formulación es la denominada de Miller, Tucker y Zemlin
min cij x ij
x ij ,ui
i, j
xi
ij 1 j
xj
ij 1 i (1.15)
08/01/2019 113
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
SETS
I Ciudades
K Etapas
ALIAS(I,J,R,S)
PARAMETER
COSTE(i,j) Coste de ir de la ciudad i a la ciudad j [€]
VARIABLE
FOBJ Función objetivo [€]
BINARY VARIABLES
X1(i,j) Indica si se viaja de la ciudad i a la ciudad j
X2(i,j,k) Indica si se viaja de la ciudad i a la ciudad j en la etapa k
POSITIVE VARIABLE
U(i) Etapa en que se visita una cierta ciudad
EQUATIONS
E_FOBJ1 Función objetivo
E_ORIGEN1(i) Cada ciudad es origen una sola vez
E_DESTINO1(j) Cada ciudad es destino una sola vez
E_SUBCICLO1(i,j) Restricciones para eliminar subciclos
E_SUBCICLO2(i,j) Restricciones para eliminar subciclos de orden 2
E_SUBCICLO3(i,j,r) Restricciones para eliminar subciclos de orden 3
E_SUBCICLO4(i,j,r,s) Restricciones para eliminar subciclos de orden 4
114 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
E_SUBCICLO4(i,j,r,s) $(NOT SAMEAS(i,j) AND NOT SAMEAS(j,r) AND NOT SAMEAS(r,i) AND
NOT SAMEAS(r,s) AND NOT SAMEAS(s,i) AND NOT SAMEAS(s,j)) ..
X1(i,j) + X1(j,r) + X1(r,s) + X1(s,i) =L= 3;
********************************************************************************
* Caso ejemplo: Schrage (1997) p. 319
* Esta información se podría introducir mediante ficheros de texto
* utilizando la instrucción $INCLUDE nombrefichero
SETS
I Ciudades
/ Atl, Chi, Cin, Hou, LA, Mon, NY, Phi, Pit, StL, SD, SF /
K Etapas / 1 * 12 /
08/01/2019 115
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
[Link](i) = CARD(i) ;
OPTION OPTCR = 0
* Orden de ejecución
116 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Datos
Variables
H T
min at Pht bt Aht cat ARht cpt PRht
h 1 t 1
08/01/2019 117
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
P
t 1
ht Dh H
T
(P A
t 1
t ht Pht ) RDh H
SETS
T grupos térmicos /GALICIA, CATALUNA, MADRID, VALENCIA,
EXTREMAD, ANDALUCI, CASTLEON/
H hora h /h1 * h5/
SCALAR
r porcentaje de reserva rodante sobre la demanda [p.u.] /0.2/
PARAMETERS
d(h) demanda cada hora [MW]
/h1 1000 , h2 1400 , h3 2400 , h4 2000 , h5 1000/
pmax(t) pot máxima de cada térmico [MW]
/GALICIA 400, CATALUNA 500, MADRID 700, VALENCIA 400,
EXTREMAD 300, ANDALUCI 800, CASTLEON 800/
pmin(t) pot mínima de cada térmico [MW]
/GALICIA 100, CATALUNA 150, MADRID 150, VALENCIA 50,
EXTREMAD 50, ANDALUCI 400, CASTLEON 200 /
rs(t) rampa de subida [MW por hora]
/GALICIA 200, CATALUNA 300, MADRID 500, VALENCIA 300,
EXTREMAD 100, ANDALUCI 500, CASTLEON 400/
rb(t) rampa de bajada [MW por hora]
/GALICIA 300, CATALUNA 300, MADRID 200, VALENCIA 100,
EXTREMAD 100, ANDALUCI 500, CASTLEON 400/
c(t) coste lineal de producción [€ por MWh]
/GALICIA 4, CATALUNA 4, MADRID 4, VALENCIA 4,
EXTREMAD 3, ANDALUCI 2, CASTLEON 7/
118 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
VARIABLES
CT coste variable total del sistema [M€]
A(t,h) acoplamiento del grupo t a las h horas [0-1]
AR(t,h) arranque del grupo t a las h horas [0-1]
PR(t,h) parada del grupo t a las h horas [0-1]
P(t,h) generación producida por el grupo t a las h horas [MW]
EQUATIONS
COSTE costes variables de generación-función objetivo [€]
DEMANDA(h) abastecimiento de la demanda [MW]
RESERVA(h) reserva rodante del sistema [MW]
COTASUP(t,h) cota superior de producción del grupo t [MW]
COTAINF(t,h) cota inferior de producción del grupo t [MW]
RAMPASUB(t,h) limitación de rampa de subida del grupo t [MW]
RAMPABAJ(t,h) limitación de rampa de bajada del grupo t [MW]
LOGICA(t,h) relación lógica entre variables de acoplamiento arranque y parada ;
08/01/2019 119
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
[Link](t,h) = pmax(t)
OPTION OPTCR = 0
120 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
v GTR
t 1
t t vhGHEh vn PNSn
h 1 n 1
siendo datos vt el coste variable unitario de generación del grupo térmico t , vh el coste
de oportunidad unitario de la hidráulica de emergencia h y vn el coste variable unitario
de la potencia no suministrada en el nudo n . Las variables son: GTRt potencia producida
por el grupo térmico t , GHEh potencia hidráulica de emergencia del grupo hidráulico h
y PNSn potencia no suministrada en el nudo n . T , H y N son todos los grupos
térmicos, hidráulicos y nudos del sistema respectivamente.
08/01/2019 121
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
I J
La segunda ley de Kirchhoff nos dice que el flujo por una línea es proporcional a la
diferencia de los ángulos de tensión de sus nudos extremos:
Xi j
Fi j i j
SB
Algunas variables del problema están acotadas entre ciertos valores. La potencia
térmica producida de cada grupo t se encuentra entre su valor mínimo GTRt y máximo
GTRt .
La potencia hidráulica programada de cada grupo h puede tomar como valor máximo
GHPh , valor dado por un programa de coordinación hidrotérmica de jerarquía superior.
0 GHPh GHPh
programada.
0 PNSn Dn
122 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Fi j Fi j Fi j
GTR
t n
t (GHPh GHEh ) PNSn
h n
I J
Xi j
i j Fi j
SB
Xi j
i j Fi j
SB
En el código escrito en GAMS se añade, además, una formulación del flujo de cargas
óptimo en corriente continua con pérdidas óhmicas. Las pérdidas óhmicas de una línea
se modelan con una expresión no lineal en función del coseno de la diferencia angular.
Esto convierte el problema de optimización en no lineal.
ri j
Li j 2S B 1 cos(i j )
ri j X i2 j
2
7
Las cotas en las variables no cuentan como restricciones desde el punto de vista del tiempo de cálculo,
ya que los algoritmos de optimización las tratan de forma específica.
08/01/2019 123
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Éstas se incluyen como dos cargas adicionales iguales en los extremos de la línea. La
primera ley de Kirchhoff tiene ahora esta expresión
I J
GTR
t n
t (GHPh GHEh ) PNSn Fi n Fn j Dn Ln
h n i 1 j 1
I J
Ln Li n Ln j / 2
i 1 j 1
SETS
ND nudos
GR generadores
TR(gr) generadores térmicos
HD(gr) generadores hidráulicos
NDGR(nd,gr) localización de generadores en nudos
LN(nd,nd) líneas
SCALARS
SBASE potencia base [GW] / 0.1 /
OPCPRD opción de modelado de las pérdidas (no 0 si 1) / 0 /
PARAMETERS
DATNUD(nd,cn) datos de los nudos
DATGEN(gr,cg) datos de los generadores
DATLIN(nd,nd,cl) datos de las líneas
VARIABLES
COSTE función objetivo [M€]
124 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
POSITIVE VARIABLES
GTR(gr) generación térmica [GW]
GHP(gr) generación hidráulica programada [GW]
GHE(gr) generación hidráulica de emergencia [GW]
PNS(nd) potencia no suministrada [GW]
PRDAS(nd) pérdidas de las líneas conectadas al nudo [GW]
EQUATIONS
FO costes de generación y de indisponibilidad [M€]
KR1F(nd) primera ley de Kirchhoff para cada nudo en función de flujos
KR1A(nd) primera ley de Kirchhoff para cada nudo en función de ángulos
FLJ(ni,nf) flujo en función de ángulos de tensión
FLJP(ni,nf) diferencia angular máxima en cada línea en un sentido
FLJN(ni,nf) diferencia angular máxima en cada línea en otro sentido
EPRDAS(nd) pérdidas de las líneas conectadas al nudo ;
KR1F(nd) ..
SUM[NDGR(nd,tr), GTR(tr)] + SUM[NDGR(nd,hd), GHP(hd) + GHE(hd)]
+ SUM[LN(ni,nd), FL(ni,nd)] - SUM[LN(nd,nf), FL(nd,nf)]
+ PNS(nd) =E= DATNUD(nd,'dem') + PRDAS(nd) $OPCPRD ;
KR1A(nd) ..
SUM[NDGR(nd,tr), GTR(tr)]
+ SUM[NDGR(nd,hd), GHP(hd) + GHE(hd)]
+ SUM[LN(ni,nd), (TT(ni) - TT(nd)) / DATLIN(ni,nd,'x')] * SBASE
- SUM[LN(nd,nf), (TT(nd) - TT(nf)) / DATLIN(nd,nf,'x')] * SBASE
+ PNS(nd) =E= DATNUD(nd,'dem') + PRDAS(nd) $OPCPRD ;
FLJP(LN(ni,nf)) ..
TT(ni) - TT(nf) =L= DATLIN(ni,nf,'flmax') * DATLIN(ni,nf,'x') / SBASE ;
FLJN(LN(ni,nf)) ..
TT(ni) - TT(nf) =G= - DATLIN(ni,nf,'flmax') * DATLIN(ni,nf,'x') / SBASE ;
08/01/2019 125
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
* caso de estudio
*** esta parte iría en ficheros independientes y se introduciría con $include
SETS
ND nudos / nudo-1 * nudo-9 /
GR generadores / genr-1 * genr-9, genh-1 * genh-4 /
NDGR(nd,gr) localización de generadores en nudos
/
nudo-1 . genr-1
nudo-1 . genr-2
nudo-1 . genr-3
nudo-2 . genr-4
nudo-2 . genr-5
nudo-2 . genr-6
nudo-3 . genr-7
nudo-3 . genr-8
nudo-3 . genr-9
nudo-1 . genh-1
nudo-3 . genh-2
nudo-6 . genh-3
nudo-8 . genh-4
/ ;
TABLE DATNUD(nd,cn) datos de los nudos
dem cpns
* MW €/kWh
nudo-1 1 1500
nudo-2 240 1500
nudo-3 40 1500
nudo-4 160 1500
nudo-5 240 1500
nudo-6 80 1500
126 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 127
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
[Link](tr) = DATGEN(tr,'pmin') ;
[Link](tr) = DATGEN(tr,'pmax') ;
[Link](hd) = DATGEN(hd,'hdrpro') ;
[Link](hd) = DATGEN(hd,'hdrmax') - DATGEN(hd,'hdrpro') ;
[Link](nd) = DATNUD(nd,'dem') ;
[Link](ln) = - DATLIN(ln,'flmax') ;
[Link](ln) = DATLIN(ln,'flmax') ;
[Link](nd) = - 1.5 ;
[Link](nd) = 1.5 ;
* nudo de referencia
[Link](nd) $(ORD(nd) EQ 1) = 0 ;
OPCPRD = 0 ;
128 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
OPTION BRATIO = 1 ;
OPCPRD = 1 ;
IV.4.1. Generales
08/01/2019 129
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
MODULARIDAD
8
Se entiende por mantenibilidad la reutilización, reparación o modificación de un modelo.
9
Se recomienda la introducción de los datos tal como son recogidos y entendidos por el usuario y se
hacen en el modelo los cálculos auxiliares que sean necesarios.
130 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Mantener una coherencia en las reglas de escritura, de manera que se observe una
norma sistemática en todo el código. Por ejemplo, endentación en las instrucciones
repetitivas, sangría de tres espacios cada vez que se realiza una instrucción tipo LOOP,
IF. Las palabras reservadas del lenguaje van en mayúsculas (LOOP, IF, THEN, ELSE, SET,
SCALAR, PARAMETER, TABLE, etc.). La coma del final de instrucción va separada por
un blanco. El signo de igualdad en las asignaciones se separa por espacios en blanco a
ambos lados.
Las líneas de código deben tener una longitud aproximada de 100 columnas, no
sobrepasando nunca las 110. Romper la instrucción en cuantas líneas sea necesario para
cumplir esta recomendación.
Los comentarios deben ser suficientemente ilustrativos del contenido y estar bien
localizados. Deben ayudar a documentar la naturaleza y origen de los datos
Se deben utilizar nombres largos y descriptivos para las entidades del modelo.
Los nombres y los índices de los parámetros, variables y ecuaciones han de ser
acrónimos que representen su significado. Se recomienda una longitud de hasta 10
caracteres para los primeros y de hasta 2 para los segundos. Los comentarios explicativos
pueden hacerse de hasta 80 caracteres.
Las definiciones de las entidades del modelo deben llevar las dimensiones físicas del
problema.
08/01/2019 131
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
circuito eléctrico se puede utilizar una función no lineal o una poligonal aproximada.
Habitualmente la formulación poligonal convexa requiere mucho menos tiempo.
x
j 1
j 1
n
r x
j 1
j j r0
n n
min x i q x ij j
i 1 j i 1
n
x
j 1
j 1
n
r x
j 1
j j r0
n
min x iwi
i 1
n
wi q x
j i 1
ij j
x
j 1
j 1
n
r x
j 1
j j r0
132 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Caso 1 Caso 2
Restricc. Variables Elementos Restricc. Variables Elementos
Sin preproceso 19047 27262 81215 48971 63935 187059
Con preproceso 15744 21982 51079 40794 56133 135361
Decremento 17% 19% 37% 17% 12% 28%
Tabla 1.3 Reducción de tamaños con la opción de preproceso.
Éste es una ayuda para ser consciente del tamaño esperable del problema y ver su
dependencia en función de los elementos básicos que lo componen. El número real
de restricciones para un caso concreto se muestra con la opción profile. Puede ser
utilizado para detectar errores en la formulación. Por ejemplo, por excesivo número
de ecuaciones al haber puesto dimensiones superfluas no controladas
convenientemente con conjuntos dinámicos.
10
El desarrollo de las técnicas de preproceso y reformulación han originado avances muy importantes
en la resolución de problemas MIP.
08/01/2019 133
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Hay que tener cuidado con lo que se entiende por superfluas porque algunas
condiciones redundantes pueden realmente llevar a obtener un modelo más fuerte en
el contexto de programación entera. Sin embargo, el conocimiento de la naturaleza
del problema permite introducir condiciones lógicas (mediante el uso del operador $)
que eliminan algunas de ellas en la escritura de las ecuaciones o de las variables. Por
ejemplo, en el caso de una red se suprimen variables o ecuaciones asociadas a líneas
entre nudos no conectados entre sí. Aunque los optimizadores pueden detectar algunas
de estas ecuaciones/variables superfluas, es más eficiente evitarlo mediante
condiciones expresas.
134 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Las cotas en las variables no cuentan como restricciones desde el punto de vista del
tiempo de cálculo, ya que los algoritmos de optimización las tratan de forma
específica. Las cotas pueden tener sentido físico (y, por tanto, forman parte de la
naturaleza del problema) o ser algorítmicas (es decir, cotas superfluas que nunca
deben ser activas en la solución óptima pero que reducen el tiempo de optimización).
08/01/2019 135
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los conjuntos ordenados (Special Ordered Sets SOS) son conjuntos de variables que
cumplen las siguientes condiciones:
En Internet ([Link]/otc/guide/faq/[Link]) y en la
revista OR/MS Today, Fourer (2003), se pueden encontrar opiniones y revisiones del
software disponible para la resolución de problemas de optimización de todo tipo. Entre
los optimizadores a los que se ha tenido acceso destacan CPLEX y OSL para LP, MINOS
y CONOPT para NLP y MILES y PATH para MCP.
136 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 137
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los parámetros son propios de cada optimizador y también pueden serlo de cada
método de optimización. Por mencionar algunos que pueden ser importantes en MINOS
(linesearch tolerance, penalty, major iterations, minor iterations, factorization frequency) y en
CPLEX (epopt, eprhs, epmrk).
138 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
A pesar de ello esta ventaja puede no ser suficiente para ciertos tamaños como para
superar al método de punto interior. Por ejemplo, aproximadamente a partir de 20000
restricciones por 20000 variables el método de punto interior resulta más competitivo que
el simplex aun comenzando éste con una base previa de un problema anterior.
DETECCIÓN DE INFACTIBILIDADES
ANÁLISIS DE SENSIBILIDAD
08/01/2019 139
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Los métodos de descomposición no son más que técnicas matemáticas que permiten
resolver problemas gigantescos (por ejemplo, de más de 1 millón de restricciones y
variables) con una estructura especial, que ni siquiera se pueden formular explícitamente,
mediante la solución iterativa de problemas de menor tamaño. Como ejemplo se puede
mencionar el caso de un problema de coordinación hidrotérmica en un sistema eléctrico
cuya resolución se efectúa mediante descomposición anidada estocástica, ver Jacobs
(1995).
140 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Además de éstos hay que añadir el tiempo de compilación del modelo. Sin embargo,
este tiempo se da únicamente una vez al comienzo y habitualmente es despreciable frente
al resto.
El valor e importancia de cada uno de estos tiempos se puede conocer con las opciones
stepsum, que resume el consumo de tiempo entre llamadas al optimizador, y profile, que
informa sobre el consumo de tiempo y memoria en cada instrucción del código. Antes de
iniciar las acciones de mejora es necesario realizar un análisis de los consumos de tiempo
del modelo y de cómo se reparten.
La relación entre ellos depende de las diversas características del problema: tamaño
y estructura de la matriz de restricciones, número de optimizaciones, variación de los
parámetros en sucesivas optimizaciones, como más importantes. Las direcciones de
mejora que se presentan a continuación tienen una orientación o bien informática o bien
11
Esta clasificación del tiempo de ejecución de un modelo en tres componentes es relevante para los
modelos escritos en GAMS. Quizá con otros lenguajes de modelado alguno de estos tiempos puede ser
despreciable.
08/01/2019 141
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
12
En GAMS la comunicación entre el lenguaje y los optimizadores se hace mediante ficheros. En otros
lenguajes esta relación se establece a través de variables localizadas en la memoria principal.
13
La memoria caché mantiene una copia de la última información leída o escrita en disco, de manera
que pueden evitarse accesos a disco cuyo tiempo de acceso es superior.
142 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
• El orden de colocación de los índices/dimensiones debe ser consistente para todos los
parámetros, ecuaciones y variables.
• Se debe pensar desde el punto de vista de una ordenación natural de todos los índices
para el conjunto del problema. Esta ordenación influye también en la formulación de
las ecuaciones.
Como referencia final una indicación sobre el tamaño de los problemas que se están
resolviendo y a los que se ha llegado aplicando estas recomendaciones. Se han podido
resolver sin dificultad problemas de 150000 restricciones por 227000 variables con
566000 elementos no nulos en la matriz de restricciones en 300 segundos en un PC con
procesador Pentium III Mobile a 1 GHz.
08/01/2019 143
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
nombre_modelo.SOLPRINT=2 ;
gams nombre_modelo.gms ll 0 lo 0
$SET CONSOLA
144 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
Esta opción también puede utilizarse para paralelizar bucles 14. La parte común se
genera con la instrucción SAVE en el procesador principal. Después, la parte paralelizada
(cada ciclo del bucle) se ejecuta con un RESTART en cada procesador independiente y
asíncronamente. Una vez terminadas todas las ejecuciones se integran los resultados
obtenidos.
PP(i+[card(i)-2*ord(i)+1])
nombre_modelo.HOLDFIXED = 1 ;
SAMEAS(elemento_de_set1.elemento_de_set2)
14
El IIT ha desarrollado una utilidad que permite la ejecución asíncrona de scripts de UNIX que pueden
ser utilizados para la paralelización de aplicaciones en GAMS.
08/01/2019 145
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
Función que devuelve verdadero si las cadenas de caracteres de los nombres de los
elementos de set son iguales o falso en caso contrario.
DIAG(elemento_de_set1.elemento_de_set2)
$CALL
$EXECUTE
Llamada externa a una aplicación que devuelve el control a GAMS cuando ésta
finaliza.
option SOLSLACK = 1
Presenta el valor de las variables de holgura de las restricciones en lugar del valor de
la restricción como tal.
Utilidades complementarias
gams-f
gamschk
gamsbas
146 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
[Link]
[Link]
[Link]
Escribe datos en una hoja de cálculo. Los intervalos de escritura son fijos.
Algunas de estas utilidades se pueden usar para realizar interfaces más sencillas con
bases de datos.
[Link]
[Link]
[Link]
[Link]
08/01/2019 147
IV CODIFICACIÓN DE PROBLEMAS DE OPTIMIZACIÓN
[Link]
[Link]
[Link] y [Link]
IV.4.3. Referencias
Bixby, R.E., Fenelon, M., Gu, Z., Rothberg, E. and Wunderling, R. (2000) MIP: Theory
and Practice - Closing the Gap. Technical Report.
Guieu, O. and Chinneck, J.W. (1999) “Analyzing Infeasible Mixed-Integer and Integer
Linear Programs”, INFORMS Journal on Computing, vol. 11, no. 1, pp. 63-77.
McCarl, B. A. (1998) So Your GAMS Model Didn’t Work Right. A Guide to Model Repair.
Technical Report.
Jacobs, J., Freeman, G., Grygier, J., Morton, D., Schultz, G., Staschus, K. and Stedinger,
J. (1995) “SOCRATES: A system for scheduling hydroelectric generation under
uncertainty” Annals of Operations Research 59. pp. 99-133.
148 08/01/2019
PROGRAMACIÓN MATEMÁTICA: MODELOS DE OPTIMIZACIÓN
08/01/2019 149