Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Optimización
Búsqueda del mínimo o del máximo de una función
Métodos:
● De la sección dorada (sección áurea)
● Interpolación cuadrática
● de Newton
Sección áurea
Se cumple que:
l1 l2
l 0 =l 1 +l 2 =
l0 l 1
Reemplazando,
tomando el recíproco
y definiendo: l2
R=
l1
2
se llega a R + R−1=0
d =R( x u − x l )
x 1 =x l + d
x 2= x u −d
xl x2 xu x1
x2 x1 x1 x2
Sección áurea
Cota del error
Al finalizar una iteración, el óptimo se ecuentra
en alguno de los intervalos:
x l , x 2, x 1 x 2, x 1, x u
En el intervalo superior, los errores máximos
son:
x a = x 1−x 2 =...=2 R−1 x u−x l ≈0.236 x u −x l
x b =x u −x 1=...=1−R x u −x l ≈0.382 x u−x l
con lo cual
εa =(1−R)
| |
x u− x l
x opt
100 %
Ejemplo 13.1 pag. 368
Encontrar el máximo de
2
x
f x=2 sin x− , x ∈[0 ; 4]
10
En la primera iteración,
x l =0 ; x u =4 d=
5−1
4−0=2.472
2
x 1= x l d=2.472 ; x 2 =x u −d =1.528
f x 1 = f 2.472=0.63 ; f x 2 = f 1.528=1.765
Ejemplo 13.1 pag. 368
próxima
x0 x1 x2 x0 x1 x 2
iteración
Interpolación cuadrática: Pseudocódigo
iniciar x0; x1; x2
iniciar iter=0; imax; es
definir funcion f
x3Ant = x2
f0 = f(x0); f1 = f(x1); f2 = f(x2)
repetir:
x3 = (f0*(x1^2x2^2) + f1*(x2^2x0^2) + f2*(x0^2x1^2)) / ...
(2*(f0*(x1x2) + f1*(x2x0) + f2*(x0x1)) )
si x3 < x1:
x2 = x1
f2 = f1
en caso contrario:
x0 = x1
f0 = f1
x1 = x3
f1 = f3
si x3 != 0:
ea = abs((x3x3Ant)/x3)*100
iter = iter + 1
x3Ant = x3
hasta que (ea<es or iter>=imax)
mostrar x3
Ejemplo 13.2, pag. 372
2
x
Obtener el máximo de f x=2 sin x− , x ∈[0 ; 4]
10
Con los valores iniciales x 0=0 , x 1=1 , x 2 =4
Se evalúa la función
f x 0 =0 , f x 1 =1.5829 , f x 2 =−3.1136
f 1.5055=1.7691
Ejemplo 13.2, pag. 372
● Métodos
● Directos
● De gradiente
Métodos directos
● Búsqueda por malla* (algoritmo de fuerza
bruta) – problema 14.10
Búsqueda por malla: Pseudocódigo
iniciar xl; xu; yl; yu; dx; dy
iniciar opt = Inf
definir funcion f
repetir para x desde xl hasta xu cada dx:
repetir para y desde yl hasta yu cada dy:
f = f(x,y)
si f > opt:
opt = f; xopt = x; yopt = y
mostrar xopt, yopt, opt
Problema 14.10
Hallar el máximo de
2 2
f ( x , y)= y− x−2 x −2 x y− y , x ∈[−2 ; 2] , y∈[1 ;3]
Gráfica en Octave (GNUPlot)
x=[2:0.1:2]; y = [1:0.1:3];
[X Y] = meshgrid(x,y);
f = YX2*X.^22*X.*YY.^2;
surfc(X,Y,f)
Gráfica en Python
(Matplotlib)
grafico14_10.py
Problema 14.10
● Código en Octave: fuerzabruta.m
● Código en Python: fuerzabruta.py
Métodos directos
● Búsqueda aleatoria (método de Monte Carlo)
x= x l x u−x l r
y=yl y u−y l r
rangoX = xu – xl; rangoY = yu yl
repetir para i dede 1 hasta nPuntos:
x = xl + rangoX * r
y = yl + rangoY * r
f = f(x,y)
si f > opt:
opt = f; xopt = x; yopt = y
mostrar xopt, yopt, opt
Ejemplo 14.1
Hallar el máximo de
2 2
f x , y=y−x−2 x −2 x y− y , x ∈[−2 ; 2] , y∈[1 ; 3]
Las coordenadas de
cada punto se
determinan por:
x=...=−24 r
y=...=12 r
[ ]
2 2
2
D D D
V cil =L t − V tapa = t t
2 2 2
D2 L 4V0 40.8
=V 0 ⇒ L= 2
⇒ L máx = 2
=1.0186
4 D 1 m
Diseño de un tanque con el menor costo
P R a =
[ V R3 Ra
R 1 R a R2 R 3 R3 R a R 3 R2 ]
Ra
Máxima transferencia de potencia
en un circuito
Realizar un análisis de sensibilidad que muestre
cómo varía la máxima potencia conforme V varía
entre 45 a 105 V.
● Código en Octave: p16_3.m
Problemas 16.1 a 16.29, pag. 440