T5 Optimizacion
T5 Optimizacion
lineal y
métodos de optimización
Este material está basado en material elaborado
por Ángel Cobo Ortega, Universidad de Cantabria
Última modificación: 20nov2017
Objetivos del tema
● Reconocer la importancia de la optimización en los
distintos campos de la ingeniería.
● Identificar las componentes principales de un
problema de optimización.
● Analizar el caso particular de la programación
lineal.
● Saber utilizar software de apoyo a la toma de
decisiones.
Optimización en la ingeniería
Ingeniería
● Objetivo
Crear sistemas competitivos no sólo en términos de
funcionamiento sino también en términos de productividad,
servicio, ciclo de vida,...
● Necesidades
Uso de metodologías de diseño rigurosas y de carácter
cuantitativo que puedan complementar a la intuición y la
faceta creativa no cuantitativa del proceso de diseño.
OPTIMIZACIÓN:
Búsqueda de la “mejor” solución a un problema dado
● Minimización y maximización
● Ejemplos: Problemas de localización, asignación, confección
de calendarios, rutas de vehículos,…
Metodología
Problemas de optimización
Programas
matemáticos
Minimizar costes, Maximizar los beneficios,
tiempo de producción, nivel de ventas, satisfacción
riesgo de la inversión, del cliente, resistencia de los
plazo de entrega,... materiales,...
El punto en el que
una función alcanza
su máximo es el
mismo en el que su
función opuesta
alcanza el mínimo,
siendo los valores
óptimos respectivos
opuestos
Elementos de todo problema optimización
● Variables de decisión x = (x1,x2,...,xn)
● Variables reales, enteras, binarias o booleanas
● Función objetivo f(x) = f(x1,x2,...,xn)
● Región factible o espacio de soluciones
factibles: D conjunto en Rn
Restricciones
Las restricciones (p.ej. escasez de recursos, limitaciones
tecnológicas, restricciones de diseño) delimitan la región
factible.
Tipos de restricciones
● Problemas no restringidos
● Restricciones de igualdad Optimización
– h(x) = 0
clásica
– Lagrange
● Restricciones de desigualdad
– g(x) ≤ 0 Programación
– ai ≤ xi ≤bi matemática
– KarushKuhnTucker
– Programación lineal Ej 5.7
Contenidos
● Condiciones de optimalidad
– Necesarias
– Suficientes
● El vector gradiente. Análisis geométrico.
● Solución numérica de problemas de optimización
– No restringida
● Descenso gradiente, gradiente conjugado, Newton, DFP
– Restringida
● Programación lineal
– Características
– Resolución geométrica
– Resolución mediante software
Técnicas clásicas de optimización
● Análisis de condiciones de optimalidad:
● Condiciones necesarias
● Condiciones suficientes
● La mayoría de las técnicas están basadas en el
cálculo diferencial
● No aplicables a muchos tipos de problemas
● Dificultad de obtención de soluciones exactas en
muchos casos → Métodos numéricos
● Problema de los óptimos locales
El problema de los óptimos locales
valor
mínimo
local
f(x0)
valor
mínimo
global
x0 x0 x0
mínimo global mínimo local mínimo local no
estricto estricto estricto
Es preferible un óptimo global a uno local, pero desgraciadamente,
la mayoría de las técnicas de optimización localizan óptimos locales
y tienen dificultades para reconocer la globalidad.
El papel del vector gradiente
Los vectores gradiente son ortogonales a
las curvas de nivel (curvas f(x,y)=cte)
Siempre señalan sobre el dominio la
dirección de más rápido crecimiento de la
función
"Huyen" de los mínimos y se sienten
"atraídos" por los máximos
Análisis geométrico
En casos muy sencillos y de pocas dimensiones
(1 ó 2), se puede resolver el problema de
optimización de forma gráfica, utilizando los
conceptos de gradiente y curva de nivel.
Pasos:
● Representar la región factible
● Representar las curvas de nivel y el vector
gradiente.
● Localizar el óptimo dentro (o en los bordes!) de la
región factible.
Ejemplo
Curvas de nivel
Ej 5.2a
Cond. de optimalidad con f. diferenciables
Condiciones necesarias
● Problemas sin restricciones:
– Todo óptimo tiene asociado un vector gradiente nulo
● Problemas restringidos:
Condiciones suficientes
● Clasificación de matriz hessianas
Ejemplo
Candidato
a óptimo
Ejemplo
Candidato
a óptimo
La matriz hessiana es def. pos.,
por lo que el punto es un
mínimo.
Ejemplo
Matlab tip
f = inline('2*x.^2+y.^2+2*x.*y+xy+2')
dens = 50;
x = y = linspace(5,5,dens);
[xx, yy] = meshgrid(x,y);
zz = f(xx,yy);
surf(xx,yy,zz, 'EdgeColor','none');
xlabel('x'); ylabel('y')
hold on
contour3(xx,yy,zz,'w')
scatter3(1,3/2,f(1,3/2),'w')
Candidato
a óptimo
La matriz hessiana es def. pos.,
por lo que el punto es un
mínimo.
Ejemplo
Si añadimos
una
restricción
Candidato
a óptimo
La matriz hessiana es definida positiva para todo (x,y) y , por lo
que el punto es un mínimo. Ej 5.3
Contenidos
● Condiciones de optimalidad
– Necesarias
– Suficientes
● El vector gradiente. Análisis geométrico.
● Solución numérica de problemas de optimización
– No restringida
● Descenso gradiente, gradiente conjugado, Newton, DFP
– Restringida
● Programación lineal
– Características
– Resolución geométrica
– Resolución mediante software especializado: LINGO
Programación Lineal
La programación lineal es instrumento habitual en
empresas.
Una de las ramas de la Optimización más desarrollada
y con mayor número de aplicaciones prácticas
Orígenes de la programación lineal:
● Economistas de la URSS: modelos lineales para
aumentar la eficiencia en la organización y
planificación de la producción
● Segunda Guerra Mundial: Proyecto SCOOP
(Scientific Computation of Optimal Programs)
● Dantzig: método Simplex
http://www.ormstoday.org/orms1207/frhistory.html
Programas lineales
Función objetivo
Restricciones
lineales
Características:
● Todo óptimo es global
● Las condiciones necesarias de primer orden son suficientes
● Si hay dos soluciones distintas, también lo es cualquier
combinación lineal convexa
Programas lineales
Función objetivo
Restricciones
lineales
Ventajas:
● Fáciles de definir y formular
● Se trabaja de forma eficiente con un número elevado de variables
de decisión
● Se adaptan mejor al tratamiento algorítmico con computadores
(rápidez de cálculo).
Análisis geométrico
El espacio D de soluciones
factibles es un polítopo con
un número finito de
vértices.
Es recomendable que sea
acotado para garantizar la
existencia de un óptimo.
En programación lineal habitualmente no
se consideran restricciones estrictas
Caso a=20, b=60
El máximo se alcanza en el vértice A=(0,80)
Valor máximo de la función f(0,80)=4800
Caso a=30, b=60
El máximo se alcanza en los vértices A=(0,80) y B=(40,60) y en todos los puntos que
están en todo el lado que determinan.
El valor de la función en todos ellos es 4800. Hay infinitas soluciones
Caso a=50, b=60
El máximo se alcanza en el vértice B=(40,60)
Valor máximo de la función f(40,60)=5600
Análisis geométrico
Deducción de propiedades:
● Todo óptimo es global y siempre se alcanza en la frontera de D
(alguna restricción se satura).
● Si existe óptimo, éste se alcanza, al menos, en un vértice de D.
● Si varios puntos son óptimos, también lo es cualquier
combinación lineal convexa.
No aconsejable para problemas de grandes dimensiones.
Método Simplex
Formulación estándar de programas lineales:
Objetivos de la empresa:
1. Diseñar política de suministros que minimice costes de transporte (cij).
2. No sobrepasar los límites de producción de cada una de sus fábricas (pi).
3. Atender la demanda de cada uno de los mercados (dj).
El problema del transporte
Una empresa dispone de m fábricas para producir un único producto
que ha de distribuirse a n mercados diferentes, siendo Cij el coste, por
unidad de producto, desde la fábrica Fi al mercado Mj
Función objetivo:
coste total del transporte (minimizar)
Variables de decisión:
unidades transportadas desde cada fábrica a cada mercado (xij)
Restricciones: Atender la demanda de cada mercado (dj)
No sobrepasar las capacidades de producción de cada fábrica (pi)
Ejemplo
Una empresa multinacional dedicada a la fabricación de
electrodomésticos recibe un pedido de 8.000 hornos y 12.000
cocinas.
Para hacer frente al pedido en un plazo de un mes debe producir los
electrodomésticos en cuatro fábricas diferentes.
El objetivo que se plantea la empresa es la planificación óptima de
la producción del pedido.
FUNCIÓN OBJETIVO (COSTES TOTALES):
Prod = 20 X1C + 25 X2H + 20 X2C + 30 X3H + 20 X4H + 25 X4C
Trans = 10 X1C + 13 (X2H + X2C) + 12 X3H + 9 (X4H + X4C)
COSTE TOTAL = 30 X1C + 38 X2H + 33 X2C + 42 X3H + 29 X4H + 34 X4C
LIMITACIONES O RESTRICCIONES:
Capacidades de producción en cada fábrica:
X1C <= 4000; X2H <= 5000; X2C <= 6000
X3H <= 7000; X4H <= 3000; X4C <= 8000
Necesidad de satisfacer el pedido:
X2H + X3H + X4H >= 8000;
X1C + X2C + X4C >= 12000
No negatividad de las variables:
X2H, X3H, X4H, X1C, X2C, X4C >= 0
Resolución de programas
lineales con el ordenador
Ejemplo
Resolución del problema anterior con un software de
Investigación operativa: Lingo
(http://www.lindo.com)
Matlab tip
[xopt, fopt] = linprog(c,A,b, ...)
R
Python
MS Excel
Ejemplo
Solución (Octave): Valor óptimo
>> fopt
fopt = 663000
0 -4
0 0
Precios
0 -1 duales:
7000 0 miden la
0 -9 sensibilidad del
6000 valor óptimo ante
0
cambios en los
0 38 términos de la
0 34 derecha de las
restricciones
Holguras en las
restricciones
Ejemplo
Una empresa del sector metalúrgico elabora en su planta
cuatro aleaciones diferentes, que vende a sus clientes a un
precio por tonelada de...
Aleación A B C D
Precio (kEUR) 44 40 50 48
Variables de decisión:
A: Tn de aleación de tipo A que debe producir
B: Tn de aleación de tipo B que debe producir
C: Tn de aleación de tipo C que debe producir
D: Tn de aleación de tipo D que debe producir
Ingresos obtenidos:
44*A + 40*B + 50*C + 48*D
Ejemplo
Para la elaboración de una tonelada de cada tipo de
aleación necesita:
Kg necesarios para una Tn de aleación del tipo …
Mineral A B C D
estaño 600 250 450 500
zinc 100 150 450 400
plomo 300 600 100 100
La empresa puede disponer diariamente de un máximo de
40 Tn de estaño y 50 Tn de zinc y plomo.
fopt
[xopt extra.redcosts]
[extra.holguras extra.lambda]
>> fopt
4750
>> [xopt extra.redcosts]
0.00000 13.50000 A
25.00000 0.00000 B
75.00000 0.00000 C
0.00000 4.50000 D
>> [extra.holguras extra.lambda]
0.00000 50.00000 Estaño
12.50000 0.00000 Zinc
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario
¿Cuántas toneladas de cada aleación se deben producir al día para
maximizar los ingresos?
>> fopt
4750
>> [xopt extra.redcosts]
0.00000 13.50000 A
25.00000 0.00000 B
75.00000 0.00000 C
0.00000 4.50000 D
>> [extra.holguras extra.lambda]
0.00000 50.00000 Estaño
12.50000 0.00000 Zinc
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario
¿Cuáles serían esos ingresos máximos?
>> fopt
4750 Los ingresos
>> [xopt extra.redcosts] máximos
alcanzarían los
0.00000 13.50000 A 4750 kEUR
25.00000 0.00000 B
75.00000 0.00000 C
0.00000 4.50000 D
>> [extra.holguras extra.lambda]
0.00000 50.00000 Estaño
12.50000 0.00000 Zinc
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario
¿Hay alguna aleación que no sea rentable?
>> fopt
4750 Las aleaciones de
>> [xopt extra.redcosts] tipo A y D no son
rentables ya que
0.00000 13.50000 A su producción
25.00000 0.00000 B óptima es nula.
75.00000 0.00000 C
0.00000 4.50000 D
No son rentables
>> [extra.holguras extra.lambda] porque consumen
mucha materia
0.00000 50.00000 Estaño prima en
12.50000 0.00000 Zinc proporción a su
27.50000 0.00000 Plomo precio de venta.
0.00000 27.50000 Máx diario
¿Cuánto debería subir el precio de las aleaciones no
rentables para que empiecen a serlo?
>> fopt
4750 Para que la aleación
A resulte rentable se
>> [xopt extra.redcosts]
le tiene que aplicar un
incremento a su
0.00000 13.50000 A
precio (coeficiente de
25.00000 0.00000 B la función objetivo) de
75.00000 0.00000 C al menos el valor del
0.00000 4.50000 D coste reducido
asociado, es decir
>> [extra.holguras extra.lambda] incrementar el precio
en al menos 13.5
0.00000 50.00000 Estaño kEUR.
12.50000 0.00000 Zinc
En el caso de la
27.50000 0.00000 Plomo
aleación D, el precio
0.00000 27.50000 Máx diario
debería sufrir un
incremento mínimo
de 4.5 kEUR.
¿Se agota alguna materia prima?
>> fopt
4750 Las holguras de las
>> [xopt extra.redcosts] tres restricciones
asociadas a las
0.00000 13.50000 A materias primas
25.00000 0.00000 B indican que se ha
75.00000 0.00000 C agotado una de
0.00000 4.50000 D ellas (holgura 0): el
estaño.
>> [extra.holguras extra.lambda]
En cambio, han
0.00000 50.00000 Estaño
sobrado 12.5 Tn de
12.50000 0.00000 Zinc zinc y 27.5 Tn de
27.50000 0.00000 Plomo plomo.
0.00000 27.50000 Máx diario
¿Se agota alguna materia prima?
>> fopt
4750 Además, hemos
>> [xopt extra.redcosts] alcanzado el límite
de producción
0.00000 13.50000 A diaria de la planta.
25.00000 0.00000 B
75.00000 0.00000 C
0.00000 4.50000 D
>> [extra.holguras extra.lambda]
0.00000 50.00000 Estaño
12.50000 0.00000 Zinc
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario
¿Cuál es el precio máximo que estaríamos dispuestos a
pagar por una materia prima?
>> fopt
4750 Los precios duales
>> [xopt extra.redcosts] de las restricciones
indican que la
0.00000 13.50000 A empresa estaría
25.00000 0.00000 B dispuesta a pagar
75.00000 0.00000 C un máximo de 50
0.00000 4.50000 D kEUR por Tn de
estaño.
>> [extra.holguras extra.lambda] En cambio, por el
zinc o el plomo, al
0.00000 50.00000 Estaño tener excedentes
12.50000 0.00000 Zinc
no pagaría nada.
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario
¿Cuál es el precio máximo que estaríamos dispuestos a
pagar por una materia prima?
>> fopt
4750 La empresa también
>> [xopt extra.redcosts] estaría dispuesta a
pagar un máximo de
0.00000 13.50000 A 27.5 kEUR por
25.00000 0.00000 B poder producir una
75.00000 0.00000 C Tn adicional de
0.00000 4.50000 D aleación al día.
>> [extra.holguras extra.lambda]
Otra forma de verlo
0.00000 50.00000 Estaño
es: en cuánto
12.50000 0.00000 Zinc aumenta la función
27.50000 0.00000 Plomo objetivo (los
0.00000 27.50000 Máx diario beneficios) si se
pudiese producir
una Tn más de
aleación.
¿Cómo afectaría a los beneficios disponer de más materia
prima?
>> fopt
4750 Los precios duales
>> [xopt extra.redcosts] de las restricciones
también indican que
0.00000 13.50000 A por cada Tn
25.00000 0.00000 B adicional que se
75.00000 0.00000 C disponga de estaño
0.00000 4.50000 D los ingresos
podrían verse
>> [extra.holguras extra.lambda] mejorados en 50
kEUR.
0.00000 50.00000 Estaño
12.50000 0.00000 Zinc
27.50000 0.00000 Plomo
0.00000 27.50000 Máx diario