Anda di halaman 1dari 147

Programación No Lineal

7
Postgrado de Investigación de Operaciones

Prof. Gonzalo Müller


gmullerb@mail.com
Facultad de Ingeniería
Universidad Central de Venezuela
Clase Anterior
 Métodos numéricos: Algoritmos.
 Metodología para resolución de un problema.
 Algoritmo.
 Características de un algoritmo.
 Representación: Diagramas de Flujo.
 Matlab.
 Ambiente de trabajo.
 Conceptos Básicos: Matrices.
 Operadores Aritméticos.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 2
Clase Anterior
 Funciones Matemáticas Básicas.
 Algoritmos.
 Estructuras Básicas de Programación.
 Operadores Relaciónales.
 Operadores Lógicos.
 Variables.
 Operaciones útiles.
 Mapa algorítmico.
 Mapa Cerrado.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 3
Clase Anterior
 Algoritmo de Optimización.
 Características Necesarias.
 Reglas de parada.
 Uso.
 Requerimientos.
 Parámetros.
 Desempeño: función O (de orden).
 Programación Lineal.
 Conjuntos poliédricos.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 4
Clase Anterior
 Punto Extremo.
 Rayo.
 Dirección extrema.
 Caracterización de puntos extremos.
 Caracterización de las direcciones extremas.
 Método Simplex.
 Algoritmo.
 Método del Elipsoide.
 Elipsoide.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 5
Clase Anterior
 Funciones Convexas Diferenciables.
 Separación de Conjuntos Convexos.
 Algoritmo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 6


Algoritmos
 En la programación no lineal los algoritmos
generalmente no alcanzan la solución óptima sino que
convergen a ella, es decir, se obtiene una solución lo
suficientemente cercana al óptimo, esto justifica las
reglas de parada.
 Son algoritmos iterativos los cuales se caracterizan
por:
 Una convergencia local.
 Una convergencia global.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 7


Optimización irrestricta
 Minimizando una función irrestricta
Sea el siguiente problema de minimización de una
función θ: E1 → E1 irrestricta:

min θ(∆)

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 8


Búsqueda Lineal
 Intervalo de incertidumbre: se le denomina al intervalo
[a, b] de ∆ tal que el mínimo de θ(∆) se encuentra en
éste, pero su localización desconocida.

a b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 9


Búsqueda Lineal
 Intervalo de incertidumbre: se le denomina al intervalo
[a, b] de ∆ tal que el mínimo de θ(∆) se encuentra en
éste, pero su localización desconocida.

a b

 A medida que se realiza la búsqueda éste intervalo


es reducido al eliminar porciones de éste donde se
tiene la certeza de que no se encuentra el mínimo.

a b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 10


Búsqueda Lineal
 Búsqueda Lineal

 Búsqueda lineal simultanea: las nuevas soluciones


son determinadas a priori.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 11


Búsqueda Lineal
 Búsqueda Lineal

 Búsqueda lineal simultanea: las nuevas soluciones


son determinadas a priori.

 Búsqueda lineal secuencial: las nuevas soluciones


son determinadas basadas en los valores de la
función de soluciones anteriores.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 12


Búsqueda Lineal Simultanea
 Búsqueda Uniforme
 Concepto
 El intervalo de incertidumbre es dividido en una
malla de puntos de separación δ.


a b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 13


Búsqueda Lineal Simultanea
 Búsqueda Uniforme
 Concepto
 El intervalo de incertidumbre es dividido en una
malla de puntos de separación δ.
 La función θ es evaluada para cada uno de los
puntos.


a b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 14


Búsqueda Lineal Simultanea
 Algoritmo:
 Entrada:
[a, b]: intervalo de incertidumbre.
δ: distancia de punto a punto de la malla.

 Salida:
∆: Solución del problema.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 15


Búsqueda Lineal Simultanea
 Algoritmo: Comienzo

k=0
∆min = a
Inicialización
θmin = θ(a)
∆k = a

F
θ(∆k) < θmin
V
k=k+1 ∆min = ∆k Búsqueda
∆k+1 = ∆k + δ θmin = θ(∆k)

V F
∆k <> b Fin
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 16
Búsqueda Lineal Simultanea
Ejemplo 7.1: Resolver el siguiente problema por
búsqueda uniforme partiendo del intervalo [– 1, 2] con
una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 17


Búsqueda Lineal Simultanea
Ejemplo 7.1: Resolver el siguiente problema por
búsqueda uniforme partiendo del intervalo [– 1, 2] con
una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
δ = 0.5/2 = 0.25
 Salida:
∆: Solución del problema.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 18
Búsqueda Lineal Simultanea
 Inicialización: k=0
k=0 ∆min = a
∆min = – 1 θmin = θ(a)
θmin = (– 1)2 – 1 = 0 ∆k = a
∆0 = – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 19


Búsqueda Lineal Simultanea
 Inicialización: k=0
k=0 ∆min = a
∆min = – 1 θmin = θ(a)
θmin = (– 1)2 – 1 = 0 ∆k = a
∆0 = – 1
 Iteración 1:
Se evalúa el nuevo punto: θ(∆k) < θmin
F

θ(∆0) = (– 1)2 – 1 = 0 V

θ(∆0) < θmin → Falso


Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 20
Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆0 <> 2 → Verdadero
V F
∆k <> b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 21


Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆0 <> 2 → Verdadero
V F
∆k <> b

Se continua al siguiente punto:


∆1 = ∆0 + 0.25 = – 0.75 ∆k+1 = ∆k + δ

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 22


Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆0 <> 2 → Verdadero
V F
∆k <> b

Se continua al siguiente punto:


∆1 = ∆0 + 0.25 = – 0.75 ∆k+1 = ∆k + δ

k iteraciones completas:
k=k+1
k=k+1=1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 23


Búsqueda Lineal Simultanea
 Iteración 2:
F
Se evalúa el nuevo punto: θ(∆k) < θmin
V
θ(∆1) = (– 0.75)2 – 1 = – 0.4375
θ(∆1) < θmin → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 24


Búsqueda Lineal Simultanea
 Iteración 2:
F
Se evalúa el nuevo punto: θ(∆k) < θmin
V
θ(∆1) = (– 0.75)2 – 1 = – 0.4375
θ(∆1) < θmin → Verdadero

Se ajusta los valores:


∆min = ∆k
∆min = – 0.75 θmin = θ(∆k)
θmin = – 0.4375

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 25


Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆1 <> 2 → Verdadero
V F
∆k <> b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 26


Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆1 <> 2 → Verdadero
V F
∆k <> b

Se continua al siguiente punto:


∆2 = ∆1 + 0.25 = – 0.5 ∆k+1 = ∆k + δ

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 27


Búsqueda Lineal Simultanea
Se evalúa si se exploro todo el intervalo:
∆1 <> 2 → Verdadero
V F
∆k <> b

Se continua al siguiente punto:


∆2 = ∆1 + 0.25 = – 0.5 ∆k+1 = ∆k + δ

k iteraciones completas:
k=k+1
k=k+1=2

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 28


Búsqueda Lineal Simultanea

k ∆k θ(∆k) θ(∆k)<θmin ∆min θmin ∆k<b


0 –1 0 F –1 0 F
1 – 0.75 –0.4375 V – 0.75 –0.4375 F
2 – 0,5 – 0.75 V – 0,5 – 0,75 F
3 – 0.25 –0.9375 V – 0.25 –0.9375 F
4 0 –1 V 0 –1 F
5 0.25 –0.9375 F 0 –1 F
6 0.7 – 0.75 F 0 –1 F
Se continua hasta haber explorado todo el intervalo

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 29


Búsqueda Lineal Simultanea
 Si θ es estrictamente cuasiconvexa sobre el intervalo
de incertidumbre,
Entonces el mínimo de θ se encuentra en el
intervalo [∆min – δ, ∆min + δ].

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 30


Búsqueda Lineal Simultanea
 Si θ es estrictamente cuasiconvexa sobre el intervalo
de incertidumbre,
Entonces el mínimo de θ se encuentra en el
intervalo [∆min – δ, ∆min + δ].
 El intervalo de incertidumbre se reduce:
[a, b] → [∆min – δ, ∆min + δ]

 El algoritmo se puede modificar

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 31


Búsqueda Lineal Simultanea
 Algoritmo:
 Requerimientos:
La función θ debe ser estrictamente cuasiconvexa
sobre el intervalo de incertidumbre.
 Entrada:
[a, b]: intervalo de incertidumbre.
δ: distancia de punto a punto de la malla.
 Salida:
∆: Solución del problema.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 32
Búsqueda Lineal Simultanea
 Algoritmo: Comienzo

k=1
Inicialización
∆k = a

∆min = ∆k

k=k+1 θmin = θ(∆k)

∆k+1 = ∆k + δ Búsqueda

V F
θ(∆k+1) < θ (∆k) Fin

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 33


Búsqueda Lineal Simultanea
 Recomendación: En función de reducir el costo
computacional.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 34


Búsqueda Lineal Simultanea
 Recomendación: En función de reducir el costo
computacional.
 Utilizar una malla de puntos de separación δk mayor
al comienzo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 35


Búsqueda Lineal Simultanea
 Recomendación: En función de reducir el costo
computacional.
 Utilizar una malla de puntos de separación δk mayor
al comienzo.
 Sobre el nuevo intervalo reducido utilizar una malla
de puntos fina o de menor separación tal que δk+1 <
δk.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 36


Búsqueda Lineal Simultanea
 Recomendación: En función de reducir el costo
computacional.
 Utilizar una malla de puntos de separación δk mayor
al comienzo.
 Sobre el nuevo intervalo reducido utilizar una malla
de puntos fina o de menor separación tal que δk+1 <
δk.
 Repetir este proceso hasta satisfacer alguna regla de
parada.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 37


Búsqueda Lineal Simultanea
Ejemplo 7.2: Resolver el siguiente problema por
búsqueda uniforme partiendo del intervalo [– 1, 2] con
una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 38


Búsqueda Lineal Simultanea
Ejemplo 7.2: Resolver el siguiente problema por
búsqueda uniforme partiendo del intervalo [– 1, 2] con
una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
δ = 0.5/2 = 0.25
 Salida:
∆: Solución del problema.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 39
Búsqueda Lineal Simultanea
 Inicialización:
k=1
k=1
∆k = a
∆1 = – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 40


Búsqueda Lineal Simultanea
 Inicialización:
k=1
k=1
∆k = a
∆1 = – 1
 Iteración 1:
Se conserva el nuevo mínimo:
∆min = ∆k
∆min = ∆1 = – 1
θmin = θ(∆k)
θmin = θ(∆1) = 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 41


Búsqueda Lineal Simultanea
Se calcula el nuevo punto a explorar:
∆2 = ∆1 + 0.25 = – 0.75 ∆k+1 = ∆k + δ

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 42


Búsqueda Lineal Simultanea
Se calcula el nuevo punto a explorar:
∆2 = ∆1 + 0.25 = – 0.75 ∆k+1 = ∆k + δ

Se evalúa el nuevo punto: V F


θ(∆k+1) < θ (∆k)
θ(∆2) = (– 0.75)2 – 1 = – 0.4375
θ(∆2) < θmin → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 43


Búsqueda Lineal Simultanea
Se calcula el nuevo punto a explorar:
∆2 = ∆1 + 0.25 = – 0.75 ∆k+1 = ∆k + δ

Se evalúa el nuevo punto: V F


θ(∆k+1) < θ (∆k)
θ(∆2) = (– 0.75)2 – 1 = – 0.4375
θ(∆2) < θmin → Verdadero

k iteraciones completas:
k=k+1
k=k+1=2
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 44
Búsqueda Lineal Simultanea
 Iteración 2:
Se conserva el nuevo mínimo:
∆min = ∆2 = – 0.75 ∆min = ∆k

θmin = θ(∆k)
θmin = θ(∆2) = – 0.4375

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 45


Búsqueda Lineal Simultanea
 Iteración 2:
Se conserva el nuevo mínimo:
∆min = ∆2 = – 0.75 ∆min = ∆k

θmin = θ(∆k)
θmin = θ(∆2) = – 0.4375

Se calcula el nuevo punto a explorar:


∆3 = ∆2 + 0.25 = – 0.50 ∆k+1 = ∆k + δ

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 46


Búsqueda Lineal Simultanea
Se evalúa el nuevo punto: V F
θ(∆k+1) < θ (∆k)
θ(∆3) = (– 0. 50)2 – 1 = – 0.75
θ(∆3) < θmin → Verdadero

k iteraciones completas: k=k+1


k=k+1=3

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 47


Búsqueda Lineal Simultanea

θ(∆k+1)<
k ∆k ∆min θmin ∆k+1 θ(∆k+1) θ(∆k)
1 –1 –1 0 – 0.75 –0.4375 V
2 – 0.75 – 0.75 –0.4375 – 0,5 – 0,75 V
3 – 0,5 – 0,5 – 0,75 – 0.25 –0.9375 V
4 – 0.25 – 0.25 –0.9375 0 –1 V
5 0 0 –1 0.25 –0.9375 F

En 5 iteraciones se obtiene una solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 48


Búsqueda Lineal Secuencial
 Reducción del intervalo de incertidumbre:
Si θ es estrictamente cuasiconvexa sobre el intervalo
de incertidumbre,


a b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 49


Búsqueda Lineal Secuencial
 Reducción del intervalo de incertidumbre:
Si θ es estrictamente cuasiconvexa sobre el intervalo
de incertidumbre,
Entonces el intervalo de incertidumbre se puede
reducir con la evaluación de dos puntos.


a ∆1 ∆2 b
∆1, ∆2 ∈ [a, b]
∆1 < ∆2
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 50
Búsqueda Lineal Secuencial
 Si θ(∆1) > θ(∆2)

θ(∆1)

θ(∆2)


a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 51


Búsqueda Lineal Secuencial
 Si θ(∆1) > θ(∆2)
Entonces para ∆k ∈ [a, ∆1) → θ(∆k) > θ(∆1)
θ(∆1)

θ(∆2)


a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 52


Búsqueda Lineal Secuencial
 Si θ(∆1) > θ(∆2)
Entonces para ∆k ∈ [a, ∆1) → θ(∆k) > θ(∆1)
θ(∆1)

θ(∆2)


a ∆1 ∆2 b

El nuevo intervalo de incertidumbre sería [∆1, b]



∆1 b
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 53
Búsqueda Lineal Secuencial
 Si θ(∆1) ≤ θ(∆2)

θ(∆2)

θ(∆1)


a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 54


Búsqueda Lineal Secuencial
 Si θ(∆1) ≤ θ(∆2)
Entonces para ∆k ∈ (∆2, b] → θ(∆k) > θ(∆2)
θ(∆2)

θ(∆1)


a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 55


Búsqueda Lineal Secuencial
 Si θ(∆1) ≤ θ(∆2)
Entonces para ∆k ∈ (∆2, b] → θ(∆k) > θ(∆2)
θ(∆2)

θ(∆1)


a ∆1 ∆2 b

El nuevo intervalo de incertidumbre sería [a, ∆2]



a ∆2
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 56
Búsqueda Lineal Secuencial sin derivadas
 Búsqueda Dicotómica
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente hasta hacerlo muy pequeño.
 Se evalúan dos puntos alrededor del punto medio
del intervalo de incertidumbre, a una distancia δ.


a ½(a+b) b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 57


Búsqueda Lineal Secuencial sin derivadas
 Algoritmo:
 Requerimientos:
La función θ debe ser estrictamente cuasiconvexa sobre el
intervalo de incertidumbre.
 Entrada:
[a, b]: intervalo de incertidumbre.
ε: máximo error permisible o ancho del intervalo de
incertidumbre final.
δ: distancia alrededor del punto medio(<< ε).
 Salida:
[a, b]: intervalo de incertidumbre final.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 58


Búsqueda Lineal Secuencial sin derivadas
Comienzo
 Algoritmo:
k=0
ak = a Inicialización
bk = b

bk – ak > ε F Fin
V
∆1k= ½(ak + bk)– δ
∆2k= ½(ak + bk)+ δ
k=k+1 Búsqueda
V F
θ(∆1k) < θ(∆2k)
ak+1 = ak ak+1 = ∆1k
bk+1 = ∆2k bk+1 = bk
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 59
Búsqueda Lineal Secuencial sin derivadas
Comienzo
 Algoritmo:
k=0
ak = a Inicialización
bk = b

bk – ak > ε F Fin
V
Cálculo de los ∆1k= ½(ak + bk)– δ
puntos de
estudio
∆2k= ½(ak + bk)+ δ
k=k+1 Búsqueda
V F
θ(∆1k) < θ(∆2k)
Reducción del ak+1 = ak ak+1 = ∆1k
intervalo de
incertidumbre
bk+1 = ∆2k bk+1 = bk
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 60
Búsqueda Lineal Secuencial sin derivadas
 Recomendación: En función de estimar así reducir
el costo computacional es posible determinar el
número de iteraciones requeridas para alcanzar un
nivel de error deseado:
(bN – aN) =(b1 – a1)/2N + 2 δ(1 – 1/2N)
Incertidumbre Intervalo inicial
máxima admisible
N ≥ log(((b1 – a1) – 2 δ)/((bN – aN) – 2 δ))/log(2)

N ≥ log(((b1 – a1) – 2 δ)/(ε – 2 δ))/log(2)

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 61


Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.3: Resolver el siguiente problema por
búsqueda dicotómica partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 62


Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.3: Resolver el siguiente problema por
búsqueda dicotómica partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
ε = 0.5
δ = 0.05
→N=3
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 63
Búsqueda Lineal Secuencial sin derivadas
 Inicialización: k=0
k=0 ak = a
a0 = – 1 bk = b
b0 = 2

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 64


Búsqueda Lineal Secuencial sin derivadas
 Inicialización: k=0
k=0 ak = a
a0 = – 1 bk = b
b0 = 2
 Iteración 1:
Se evalúa si se alcanzo el error deseado:
b0 – a0 > 0.5 bk – ak > ε F

3 > 0.5 → Verdadero V

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 65


Búsqueda Lineal Secuencial sin derivadas
Se determinan los puntos de
∆1k= ½(ak + bk)– δ
evaluación: ∆2k= ½(ak + bk)+ δ
∆10 = ½(– 1 + 2) – 0.05 = 0.45
∆20 = ½(– 1 + 2) + 0.05 = 0.55

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 66


Búsqueda Lineal Secuencial sin derivadas
Se determinan los puntos de
∆1k= ½(ak + bk)– δ
evaluación: ∆2k= ½(ak + bk)+ δ
∆10 = ½(– 1 + 2) – 0.05 = 0.45
∆20 = ½(– 1 + 2) + 0.05 = 0.55

V F
θ(∆1k) < θ(∆2k)
Se evalúa la mejora:
θ(∆10) = (0.45)2 – 1 = – 0.7975
θ(∆20) = (0.55)2 – 1 = – 0.6975
θ(∆10) < θ(∆20) → Verdadero
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 67
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.55
k iteraciones completas:
k=k+1=1 k=k+1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 68


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.55
k iteraciones completas:
k=k+1=1 k=k+1
 Iteración 2:
Se evalúa si se alcanzo el error deseado:
b1 – a1 > 0.5 F
bk – ak > ε
1.55 > 0.5 → Verdadero V
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 69
Búsqueda Lineal Secuencial sin derivadas
Se determinan los puntos de
∆1k= ½(ak + bk)– δ
evaluación: ∆2k= ½(ak + bk)+ δ
∆11 = ½(– 1 + 0.55) – 0.05 = – 0.275
∆21 = ½(– 1 + 0.55) + 0.05 = – 0.175

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 70


Búsqueda Lineal Secuencial sin derivadas
Se determinan los puntos de
∆1k= ½(ak + bk)– δ
evaluación: ∆2k= ½(ak + bk)+ δ
∆11 = ½(– 1 + 0.55) – 0.05 = – 0.275
∆21 = ½(– 1 + 0.55) + 0.05 = – 0.175

V F
θ(∆1k) < θ(∆2k)
Se evalúa la mejora:
θ(∆11) = (– 0.275)2 – 1 = – 0.924375
θ(∆21) = (– 0.175)2 – 1 = – 0.969375
θ(∆11) < θ(∆21) → Falso
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 71
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.275
bk+1 = bk
b2 = b1 = 0.55
k iteraciones completas:
k=k+1=2 k=k+1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 72


Búsqueda Lineal Secuencial sin derivadas

bk – ak θ(∆1k)<
k ∆1k ∆2k θ(∆1k) θ(∆2k) ak+1 bk+1
>ε θ(∆2k)
0 V 0.45 0.55 -0.7975 -0.6975 V -1 0.55
1 V -0.275 -0.175 -0.9244 -0.9694 F -0.275 0.55
2 V 0.0875 0.1875 -0.9923 -0.9648 V -0.275 0.1875
3 F - - - - - - -

En 3 iteraciones se obtiene una solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 73


Búsqueda Lineal Secuencial sin derivadas
 Método de Sección Dorada
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor fijo δ.
 Requiere evaluar sólo un punto en el nuevo intervalo
de incertidumbre.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 74


Búsqueda Lineal Secuencial sin derivadas
 Como evaluar un solo punto?

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 75


Búsqueda Lineal Secuencial sin derivadas
 Como evaluar un solo punto?
 Inicialmente se requieren dos puntos:

∆k
a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 76


Búsqueda Lineal Secuencial sin derivadas
 Como evaluar un solo punto?
 Si θ(∆1k) ≥ θ(∆2k)

∆k
a ∆1 ∆2 b
θ(∆1k) ≥ θ(∆2k)
∆k+1
a ∆1 ∆2 b

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 77


Búsqueda Lineal Secuencial sin derivadas
 Como evaluar un solo punto?
 Si se logra que ∆1k+1= ∆2k

∆k
a ∆1 ∆2 b
θ(∆1k) ≥ θ(∆2k)
∆k+1
a ∆1 ∆2 b

 Solo sería necesario evaluar el nuevo punto ∆2k+1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 78


Búsqueda Lineal Secuencial sin derivadas
 Como evaluar un solo punto?

∆k Sección Dorada
a ∆1 ∆2 b
θ(∆1k) ≥ θ(∆2k)
∆k+1
a ∆1 ∆2 b 5 −1
θ(∆1k) < θ(∆2k) δ =
∆k+1 2
a ∆1 ∆2 b Nuevo punto a calcular

 Existe un factor llamado sección dorada permite


reducir el intervalo de esta manera.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 79


Búsqueda Lineal Secuencial sin derivadas
 Algoritmo:
 Requerimientos:
La función θ debe ser estrictamente cuasiconvexa
sobre el intervalo de incertidumbre.
 Entrada:
[a, b]: intervalo de incertidumbre.
ε: máximo error permisible.
 Salida:
[a, b]: intervalo de incertidumbre final.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 80
Búsqueda Lineal Secuencial sin derivadas
Comienzo
 Algoritmo k = 0, a0 = a , b0 = b
∆10= b0 – δ*(b0 – a0) Inicialización
∆20= a0 + δ*(b0 – a0)

bk – ak ≥ ε F Fin
V
k=k+1 V F
θ(∆1k) < θ(∆2k)
Búsqueda

ak+1 = ak ak+1 = ∆1k


bk+1 = ∆2k bk+1 = bk
∆2k+1 = ∆1k ∆1k+1 = ∆2k
∆1k+1= bk+1 – δ*(bk+1 – ak+1) ∆2k+1= ak+1 + δ*(bk+1 – ak+1)
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 81
Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.4: Resolver el siguiente problema por el
método de sección dorada partiendo del intervalo [– 1,
2] con una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 82


Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.4: Resolver el siguiente problema por el
método de sección dorada partiendo del intervalo [– 1,
2] con una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
ε = 0.5

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 83


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b
k=0
∆10= b0 – δ*(b0 – a0)
a0 = – 1
∆20= a0 + δ*(b0 – a0)
b0 = 2
∆10 = 2 – δ*(2 – (– 1)) = 0.145898
∆20 = – 1 + δ*(2 – (– 1)) = 0.854102

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 84


Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: bk – ak ≥ ε F

Se evalúa si se alcanzo el error deseado: V

b0 – a0 > 0.5
3 > 0.5 → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 85


Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: bk – ak ≥ ε F

Se evalúa si se alcanzo el error deseado: V

b0 – a0 > 0.5
3 > 0.5 → Verdadero

Se evalúa la mejora: V
θ(∆1k) < θ(∆2k)
F

θ(∆10) = (0.145898)2 – 1 = – 0.978714


θ(∆20) = (0.854102)2 – 1 = – 0.27051
θ(∆10) < θ(∆20) → Verdadero
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 86
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.854102

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 87


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.854102

Se calculan los nuevos


puntos de evaluación: ∆2k+1 = ∆1k
∆21 = ∆10 = 0.145898 ∆1k+1= bk+1 – δ*(bk+1 – ak+1)
∆11 = 0.854102 – δ*(0.854102 – (– 1))
∆11 = – 0.291796
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 88
Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se evalúa si se alcanzo el error deseado:
b1 – a1 > 0.5 bk – ak ≥ ε F

1.854102 > 0.5 → Verdadero V

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 89


Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se evalúa si se alcanzo el error deseado:
b1 – a1 > 0.5 bk – ak ≥ ε F

1.854102 > 0.5 → Verdadero V

Se evalúa la mejora: V
θ(∆1k) < θ(∆2k)
F

θ(∆11) = (– 0.291796)2 – 1 = – 0.914855


θ(∆21) = θ(∆10) = – 0.978714
θ(∆11) < θ(∆21) → Falso
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 90
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.291796
bk+1 = bk
b2 = b1 = 0.854102

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 91


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.291796
bk+1 = bk
b2 = b1 = 0.854102

Se calculan los nuevos


puntos de evaluación: ∆1 k+1 = ∆2k
∆12 = ∆21 = 0.145898 ∆2 k+1= ak+1 + δ*(bk+1 – ak+1)

∆22 = – 0.291796 – δ*(0.854102 – (– 0.291796))


∆22 = 0.416407
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 92
Búsqueda Lineal Secuencial sin derivadas

bk – ak θ(∆1k)<
k θ(∆1k) θ(∆2k) ak+1 bk+1 ∆1k+1 ∆2k+1
>ε θ(∆2k)
0 V -0.9787 -0.2705 V -1 0.85410 -0.2917 0.14589
1 V -0.9148 -0.9787 F -0.2917 0.85410 0.14589 0.41640
2 V -0.9787 -0.8266 V -0.2917 0.41640 -0.0212 0.14589
3 V -0.9995 -0.9787 V -0.2917 0.14589 -0.1246 -0.0212
4 F - - - - - - -

En 4 iteraciones se obtiene una solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 93


Búsqueda Lineal Secuencial sin derivadas
 Búsqueda de Fibonacci
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor variable δ.
 Al igual que sección dorada requiere evaluar un
punto en el nuevo intervalo de incertidumbre.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 94


Búsqueda Lineal Secuencial sin derivadas
 Búsqueda de Fibonacci
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor variable δ.
 Al igual que sección dorada requiere evaluar un
punto en el nuevo intervalo de incertidumbre.
 Sucesión de Fibonacci {Fk}
F1 = F2 = 1
Fk+1 = Fk + Fk–1 δ = FN–k/FN–k+1
{Fk} = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 95
Búsqueda Lineal Secuencial sin derivadas
 Algoritmo:
 Requerimientos:
La función θ debe ser estrictamente cuasiconvexa
sobre el intervalo de incertidumbre.
 Entrada:
[a, b]: intervalo de incertidumbre.
ε: máximo error permisible.
 Salida:
[a, b]: intervalo de incertidumbre final.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 96
Búsqueda Lineal Secuencial sin derivadas
 Número de iteraciones necesarias:
Iteración δ
1 FN–1/FN
2 FN–2/FN–1
3 FN–3/FN–2
… …
N–2 F2/F3 = ½
N–1 F1/F2 = 1 No hay reducción

N F0/F1 = ?

 Se requieren N – 2 iteraciones.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 97
Búsqueda Lineal Secuencial sin derivadas
 Número de iteraciones necesarias:
bk – ak ≤ ε

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 98


Búsqueda Lineal Secuencial sin derivadas
 Número de iteraciones necesarias:
bk – ak ≤ ε
Dado δ y luego de N – 2 iteraciones:

bk – ak = (b0 – a0) FN–1/FN *FN–2/FN–1 … F3/F4 *F2/F3


bk – ak = (b0 – a0) F2/FN
(b0 – a0)/FN ≤ ε

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 99


Búsqueda Lineal Secuencial sin derivadas
 Número de iteraciones necesarias:
bk – ak ≤ ε
Dado δ y luego de N – 2 iteraciones:

bk – ak = (b0 – a0) FN–1/FN *FN–2/FN–1 … F3/F4 *F2/F3


bk – ak = (b0 – a0) F2/FN
(b0 – a0)/FN ≤ ε

N deber ser tal que FN ≥ (b0 – a0)/ε


Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 100
Búsqueda Lineal Secuencial sin derivadas
 Algoritmo

Inicialización
Comienzo

k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)

k<N-2 F Fin
V
k=k+1 V F
θ(∆1k) < θ(∆2k)

Búsqueda
ak+1 = ak ak+1 = ∆1k
bk+1 = ∆2k bk+1 = bk
∆2k+1 = ∆1k ∆1k+1 = ∆2k

∆1k+1= ak+1 + (FN–k–3/FN–k–1)(bk+1 – ak+1)


∆2k+1= ak+1 + (FN–k–2/FN–k–1)(bk+1 – ak+1)
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 101
Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.5: Resolver el siguiente problema por
búsqueda de fibonacci partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 102


Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.5: Resolver el siguiente problema por
búsqueda de fibonacci partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
ε = 0.5

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 103


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
k=0 ∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)
a0 = – 1
b0 = 2

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 104


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
k=0 ∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)
a0 = – 1
b0 = 2 F1 1
F2 1
FN ≥ (2 – (– 1))/0.5
F3 2
FN ≥ 6 → N=6 F4 3
F5 5
F6 8

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 105


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
k=0 ∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)
a0 = – 1
b0 = 2 F1 1
F2 1
FN ≥ (2 – (– 1))/0.5
F3 2
FN ≥ 6 → N=6 F4 3
F5 5
∆10 = – 1 + (F4/F6)(2 – (– 1)) = 0.125 F6 8

∆20 = – 1 + (F5/F6)(2 – (– 1)) = 0.875


Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 106
Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: k<N-2 F

Se completaron las iteraciones necesarias: V

0 < 4 → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 107


Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: k<N-2 F

Se completaron las iteraciones necesarias: V

0 < 4 → Verdadero

V F
Se evalúa la mejora: θ(∆1k) < θ(∆2k)
θ(∆10) = (0.125)2 – 1 = – 0.984375
θ(∆20) = (0.875)2 – 1 = – 0.234375
θ(∆10) < θ(∆20) → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 108


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.875

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 109


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.875

Se calculan los nuevos


∆2k+1 = ∆1k
puntos de evaluación:
∆1k+1= ak+1 + (FN–k–3/FN–k–1)(bk+1 – ak+1)
∆21 = ∆10 = 0.125
∆11 = – 1 + (F3/F5)(0.875 – (– 1))
∆11 = – 0.25
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 110
Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se completaron las iteraciones necesarias:
1 < 4 → Verdadero F
k<N-2
V

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 111


Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se completaron las iteraciones necesarias:
1 < 4 → Verdadero F
k<N-2
V

Se evalúa la mejora: V
θ(∆1k) < θ(∆2k)
F

θ(∆11) = (– 0.25)2 – 1 = – 0.9375


θ(∆21) = θ(∆10) = – 0.984375
θ(∆11) < θ(∆21) → Falso
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 112
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.25
bk+1 = bk
b2 = b1 = 0.875

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 113


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.25
bk+1 = bk
b2 = b1 = 0.875

∆1k+1 = ∆2k
Se calculan los nuevos
puntos de evaluación:
∆2k+1= ak+1 + (FN–k–2/FN–k–1)(bk+1 – ak+1)
∆12 = ∆21 = 0.125
∆22 = – 0.25 + (F3/F4)(0.875 – (– 0.25))
∆22 = 0.5
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 114
Búsqueda Lineal Secuencial sin derivadas

θ(∆1k)<
k k<N-2 θ(∆1k) θ(∆2k) ak+1 bk+1 ∆1k+1 ∆2k+1
θ(∆2k)
0 V -0.9844 -0.2344 V -1 0.875 -0.25 0.125
1 V -0.9375 -0.9844 F -0.25 0.875 0,125 0.5
2 V -0.9844 -0.75 V -0.25 0.5 0.125 0.125
3 - - - - - - - -

En 3 iteraciones se obtiene una solución que no satisface


el error

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 115


Búsqueda Lineal Secuencial sin derivadas

θ(∆1k)<
k k<N-2 θ(∆1k) θ(∆2k) ak+1 bk+1 ∆1k+1 ∆2k+1
θ(∆2k)
0 V -0.9844 -0.2344 V -1 0.875 -0.25 0.125
1 V -0.9375 -0.9844 F -0.25 0.875 0,125 0.5
2 V -0.9844 -0.75 V -0.25 0.5 0.125 0.125
3 - - - - - - - -

En 3 iteraciones se obtiene una solución que no satisface


el error y no se puede continuar ∆13 = ∆23

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 116


Búsqueda Lineal Secuencial sin derivadas
 Debido a que en la ultima iteración, los dos puntos
interiores, ∆1 y ∆2, coinciden, ya que F2/F3= F1/F3
= ½.

½ ½

∆N-2
a ∆ 1, ∆ 2 b

Es necesario hacer N tal que


FN-1 ≥ (b0 – a0)/ε
y realizar N – 3 iteraciones para garantizar el error
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 117
Búsqueda Lineal Secuencial sin derivadas
 Algoritmo

Inicialización
Comienzo

k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)

k<N-3 F Fin
V
k=k+1 V F
θ(∆1k) < θ(∆2k)

Búsqueda
ak+1 = ak ak+1 = ∆1k
bk+1 = ∆2k bk+1 = bk
∆2k+1 = ∆1k ∆1k+1 = ∆2k

∆1k+1= ak+1 + (FN–k–3/FN–k–1)(bk+1 – ak+1)


∆2k+1= ak+1 + (FN–k–2/FN–k–1)(bk+1 – ak+1)
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 118
Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.6: Resolver el siguiente problema por
búsqueda de fibonacci partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 119


Búsqueda Lineal Secuencial sin derivadas
Ejemplo 7.6: Resolver el siguiente problema por
búsqueda de fibonacci partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
ε = 0.5

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 120


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
k=0 ∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)
a0 = – 1
b0 = 2

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 121


Búsqueda Lineal Secuencial sin derivadas
 Inicialización:
k = 0, a0 = a , b0 = b, N | FN ≥ (b0 – a0)/ε
k=0 ∆10= a0 + (FN–2/FN)(b0 – a0), ∆20= a0 + (FN–1/FN)(b0 – a0)
a0 = – 1
b0 = 2 F1 1
F2 1
FN – 1 ≥ (2 – (– 1))/0.5
F3 2
FN – 1 ≥ 6 → N–1=6 F4 3
N=7 F5 5
∆10 = – 1 + (F5/F7)(2 – (– 1)) = 0.1538462 F6 8
∆20 = – 1 + (F6/F7)(2 – (– 1)) = 0.8461538 F7 13
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 122
Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: k<N-3 F

Se completaron las iteraciones necesarias: V

0 < 3 → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 123


Búsqueda Lineal Secuencial sin derivadas
 Iteración 1: k<N-3 F

Se completaron las iteraciones necesarias: V

0 < 3 → Verdadero

V F
Se evalúa la mejora: θ(∆1k) < θ(∆2k)
θ(∆10) = (0.1538462)2 – 1 = – 0.976331
θ(∆20) = (0.8461538)2 – 1 = – 0.284024
θ(∆10) < θ(∆20) → Verdadero

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 124


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.8461538

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 125


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ak
a1 = a0 = – 1
bk+1 = ∆2k
b1 = ∆20 = 0.8461538

Se calculan los nuevos


∆2k+1 = ∆1k
puntos de evaluación:
∆1k+1= ak+1 + (FN–k–3/FN–k–1)(bk+1 – ak+1)
∆21 = ∆10 = 0.1538462
∆11 = – 1 + (F4/F6)(0.8461538 – (– 1))
∆11 = – 0.307692
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 126
Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se completaron las iteraciones necesarias:
1 < 3 → Verdadero F
k<N-3
V

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 127


Búsqueda Lineal Secuencial sin derivadas
k iteraciones completas: k = k + 1 = 1
k=k+1
 Iteración 2:
Se completaron las iteraciones necesarias:
1 < 3 → Verdadero F
k<N-3
V

Se evalúa la mejora: V
θ(∆1k) < θ(∆2k)
F

θ(∆11) = (– 0.307692)2 – 1 = – 0.905325


θ(∆21) = θ(∆10) = – 0.976331
θ(∆11) < θ(∆21) → Falso
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 128
Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.307692
bk+1 = bk
b2 = b1 = 0.8461538

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 129


Búsqueda Lineal Secuencial sin derivadas
Se determina el nuevo intervalo:
ak+1 = ∆1k
a2 = ∆11 = – 0.307692
bk+1 = bk
b2 = b1 = 0.8461538
∆1k+1 = ∆2k
Se calculan los nuevos
puntos de evaluación: ∆ = a + (F /F )(b – a )
2k+1 k+1 N–k–2 N–k–1 k+1 k+1
∆12 = ∆21 = 0.1538462
∆22 = – 0.307692 + (F4/F5)(0.8461538 – (–
0.307692))
∆22 = 0.3846154
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 130
Búsqueda Lineal Secuencial sin derivadas

θ(∆1k)<
k k<N-3 θ(∆1k) θ(∆2k) ak+1 bk+1 ∆1k+1 ∆2k+1
θ(∆2k)
0 V -0.9763 -0.2840 V -1 0.84615 -0.3077 0.15385
1 V -0.9053 -0.9763 F -0.3077 0.84615 0.15385 0.38462
2 V -0.9763 -0.8521 V -0.3077 0.38462 -0.0769 0.15385
3 V -0.9941 -0.9763 V -0.3077 0.15385 -0.0769 -0.0769
4 F - - - - - - -

En 4 iteraciones se obtiene una solución que satisface el


error

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 131


Búsqueda Lineal Secuencial sin derivadas
 Eficiencia: Requiere una menor cantidad de
iteraciones para reducir el intervalo de incertidumbre a
un tamaño dado.
1º Búsqueda de Fibonacci.

2º Método de Sección Dorada.


Más eficiente
3º Búsqueda Dicotómica.

4º Búsqueda Uniforme.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 132
Búsqueda Lineal Secuencial con derivadas
 Búsqueda por Bisección
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor fijo δ con la
evaluación de θ’ en un punto ∆k.
 Si θ’(∆k) = 0, Entonces ∆k es un mínimo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 133


Búsqueda Lineal Secuencial con derivadas
 Búsqueda por Bisección
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor fijo δ con la
evaluación de θ’ en un punto ∆k.
 Si θ’(∆k) = 0, Entonces ∆k es un mínimo.
 Si θ’(∆k) > 0, Entonces si θ es pseudoconvexa:
∆1 > ∆k → θ(∆1) ≥ θ(∆k).

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 134


Búsqueda Lineal Secuencial con derivadas
 Búsqueda por Bisección
 Concepto
 El intervalo de incertidumbre es reducido
progresivamente en un factor fijo δ con la
evaluación de θ’ en un punto ∆k.
 Si θ’(∆k) = 0, Entonces ∆k es un mínimo.
 Si θ’(∆k) > 0, Entonces si θ es pseudoconvexa:
∆1 > ∆k → θ(∆1) ≥ θ(∆k).
θ(∆1) δ =½
θ(∆k)

a ∆k ∆1 b
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 135
Búsqueda Lineal Secuencial con derivadas
 Algoritmo:
 Requerimientos:
La función θ debe ser pseudoconvexa sobre el
intervalo de incertidumbre.
 Entrada:
[a, b]: intervalo de incertidumbre.
ε: máximo error permisible.
 Salida:
[a, b]: intervalo de incertidumbre final.
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 136
Búsqueda Lineal Secuencial con derivadas
 Número de iteraciones

bk – ak < ε
Dado δ y luego de N iteraciones:
bk – ak = (b0 – a0) ½N
(b0 – a0) ½N < ε

N > log((b0 – a0)/ε)/log(2)

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 137


Búsqueda Lineal Secuencial con derivadas
 Algoritmo Comienzo

a0 = a, b0 = b
Inicialización
k = 0, N|N>log((b0–a0)/ε)/log(2)
F
k<N Fin
V
∆k= ½(ak + bk)
F
θ’(∆k) <> 0 Fin
k=k+1 V Búsqueda
V F
θ’(∆k) > 0
ak+1 = ak ak+1 = ∆k
bk+1 = ∆k bk+1 = bk
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 138
Búsqueda Lineal Secuencial con derivadas
Ejemplo 7.7: Resolver el siguiente problema por
búsqueda por bisección partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 139


Búsqueda Lineal Secuencial con derivadas
Ejemplo 7.7: Resolver el siguiente problema por
búsqueda por bisección partiendo del intervalo [– 1, 2]
con una incertidumbre máxima de 0.5:
min x2 – 1
 Entrada:
[a, b] = [– 1, 2]
ε = 0.5

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 140


Búsqueda Lineal Secuencial con derivadas
 Inicialización: a0 = a, b0 = b
k=0 k = 0, N|N>log((b0–a0)/ε)/log(2)
a0 = – 1
b0 = 2
N > log((2 – (– 1))/ε)/log(2)
N > log((2 – (– 1))/ε)/log(2)
N=7

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 141


Búsqueda Lineal Secuencial con derivadas
 Iteración 1: k<N
F

Se completaron las iteraciones necesarias: V

0 < 3 → Verdadero

Se determina el punto de evaluación:


∆0 = ½(2 + (– 1))= 0.5 ∆k= ½(ak + bk)

La punto actual no es el óptimo: θ’(∆k) <> 0


F

V
2(∆0) = 3 <> 0 → Verdadero
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 142
Búsqueda Lineal Secuencial con derivadas
Determinar el sentido de la mejora:
V F
2(∆0) = 3 > 0 → Verdadero θ’(∆k) > 0

Se calcula en nuevo intervalo: ak+1 = ak


a1 = a0 = – 1 bk+1 = ∆k
b1 = ∆0 = 0.5

Se han completado k iteraciones: k=k+1


k=k+1=1
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 143
Búsqueda Lineal Secuencial con derivadas
 Iteración 2: k<N
F

Se completaron las iteraciones necesarias: V

1 < 3 → Verdadero

Se determina el punto de evaluación:


∆0 = ½(0.5 + (– 1)) = – 0.25 ∆k= ½(ak + bk)

La punto actual no es el óptimo: θ’(∆k) <> 0


F

V
2(∆0) = – 0.5 <> 0 → Verdadero
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 144
Búsqueda Lineal Secuencial con derivadas
Determinar el sentido de la mejora:
V F
2(∆0) = – 0.5 > 0 → Falso θ’(∆k) > 0

Se calcula en nuevo intervalo: ak+1 = ak


a2 = ∆1 = – 0.25 bk+1 = ∆k
b2 = b1 = 0.5

Se han completado k iteraciones: k=k+1


k=k+1=2
Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 145
Búsqueda Lineal Secuencial con derivadas

θ’(∆k)<>
k k<N ∆k θ’(∆k) θ’(∆k)>0 ak+1 bk+1
0
0 V 0.5 1 V V -1 0.5
1 V -0.25 -0.5 V F -0.25 0.5
2 V 0.125 0.25 V V -0.25 0.125
3 F - - - - - -

En 3 iteraciones se obtiene una solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 146


Resumen
 Optimización irrestricta.
 Búsqueda lineal: Simultanea, Secuencial.
 Intervalo de incertidumbre.
 Búsqueda lineal simultanea: Búsqueda uniforme.
 Reducción del intervalo de incertidumbre.
 Búsqueda lineal Secuencial sin derivadas:
 Búsqueda dicotómica.
 Método de sección dorada.
 Búsqueda Fibonacci.
 Búsqueda lineal Secuencial con derivadas.
 Búsqueda por Bisección.

Programación No Lineal – Prof. Gonzalo Müller – Clase 7 – GM – 147

Anda mungkin juga menyukai