Optimización Numérica Unidimensional
Optimización Numérica Unidimensional
1. Unidireccional:
Una buena técnica de optimización de funciones de una única variable es fundamental por al menos tres
razones:
1. En muchos problemas las restricciones se pueden incluir dentro de la función objetivo, por lo que la
dimensionaliad del problema se reduce a una variable.
2. Algunos problemas sin restricciones, inherentemente incluyen una única variable
3. Las técnicas de optimización con y sin restricciones, generalmente incluyen pasos de búsqueda
unidireccional en sus algoritmos.
Antes de la aparición de los ordenadores de alta velocidad, los métodos de optimización estaban
prácticamente limitados a los métodos indirectos en los cuales el cálculo del extremo potencial estaba
restringido al uso de derivadas y las condiciones necesarias de optimalidad. Los modernos ordenadores han
hecho posible los métodos directos, esto es la búsqueda de un óptimo por comparación sucesiva de los valores
de la función f(x) en una secuencia de puntos x1, x2, x3... sin la necesidad de hacer intervenir derivadas
analíticas. Para llevar a cabo los métodos directos de minimización numérica solamente se usa el valor de la
función objetivo. Se comienza con un valor inicial de x y se continua seleccionando valores de x de acuerdo
con una estrategia pre-seleccionada. El proceso termina cuando f ( x k +1 )−f ( x k ) < ε donde el superíndice k
designa el número de iteración y ε es la tolerancia pre-especificada o criterio de tolerancia. Los métodos
indirectos tienen la ventaja inherente de que la convergencia es generalmente más rápida incluso aun cuando
se utilicen métodos numéricos para calcular las derivadas. Sin embargo, en problemas de ingeniería esta
1.1. Acotación del optimo Casi todos los procedimientos de búsqueda unidimensional
requieren que el óptimo esté acotado dentro de un intervalo conocido como primer punto de la
estrategia de búsqueda. Existen varias estrategias que se pueden usar para acotar el óptimo, la más
sencilla consiste en fijar un punto y comenzar a movernos una distancia fija en una dirección.
(simulación y optimización de procesos quimicos, 2011)
‖x k−1−x ¿‖
Lineal ≤ c 0≤ c ≤1
‖ x k −x ¿‖
‖x k−1−x ¿‖
Orden p p
≤ c c> 0; p ≥ 1 (el más rápido en la práctica)
‖ x k −x ¿‖
‖x k−1−x ¿‖
Súper lineal lim →0 (habitualmente rápido)
k → ∝ ‖ x −x ‖
k ¿
METODO DE NEWTON De acuerdo con la primera condición necesaria para que una función tuviera
un mínimo local se debe cumplir que f ' x 0 Por lo tanto podemos aplicar el método de Newton a la
derivada. (simulación y optimización de procesos quimicos, 2011)
f ' ( xk)
x k+1=x k −
f {(x} ^ {k} ) ¿
Aseguramos que en la etapa k .f(x k+1)<f(xk), para minimización. Realmente lo que hace el método de
newton es aproximar la función por una función cuadrática en xk.
f ( x )=f ( x ) +f ( x ) ( x−x
k ' k k+1
) + 1 f ' ' ( x)(x−x k )2
2
Las desventajas
Se debe calcular tanto f’(x) como f’’(x)
Si f ' ' ( x) → 0 el método converge muy lentamente
Si existe más de un extremo, el método podría no converger al extremo deseado.
METODO DE NEWTON EN DIFERENCIAS FINITAS los método en diferentes finitas tipo Newton, se
utilizan si la derivada de la función objetiva es complicada de obtener, o ésta viene dada de forma numérica.
Consisten en reemplazar las derivadas por aproximaciones en diferencias finitas. (simulación y optimización
de procesos quimicos, 2011)
METODO DE SECANTE
Los métodos de secante toman los dos puntos de ; x p y xq y resuelve una ecuación muy similar a la dada en el
método de Newton.
f ( x ) +m ( x−x )=0
' k k
METODO DE ELIMINACION DE REGION Los métodos de eliminación de región para una búsqueda
unidimensional se basan en eliminar una región, en cada etapa, del intervalo en el que está comprendido el
mínimo. Cuando la región posible es suficientemente pequeña la búsqueda termina. El elemento básico dentro
del sistema de eliminación de regiones es la comparación de valores de f(x) en dos o más puntos dentro del
intervalo de x. Debemos asumir que f(x) es unimodal, y que tiene un mínimo (es convexa) dentro de [a, b].
(simulación y optimización de procesos quimicos, 2011)
Según la (universidad de carabobo, s.f.).Si partimos de dos puntos de test sean x1, x2 deberíamos elegirlos de
tal manera que la búsqueda fuera lo más eficiente posible. Si usamos un espaciado igual, esto es x a b x x x 1
− = − 2 = 2 − 1 el método de búsqueda se llama ‘búsqueda de dos puntos a intervalos iguales’. El intervalo de
incertidumbre se reduce en 1/3 en cada iteración. Así si L0 es la longitud del intervalo original (b-a) y Lk es el
intervalo después de k iteraciones, como en cada iteración se llevan a cabo dos evaluaciones de la función
objetivo, entonces Lk tras k iteraciones viene dado por:
1 k
Lk =( ) L0
2
la estrategia empleada en el método de la sección aurea es localizar dos puntos interiores del intervalo
eliminando en cada iteración de tal manera que se cumpla la relación
Sea f : [a, b] -> R función derivable definida en el intervalo real [a, b]. Empezamos con un valor
inicial x0 y definimos para cada número natural n
Método de la secante
En análisis numérico el método de la secante es un método para encontrar los ceros de una
función de forma iterativa.
Es una variación del método de Newton-Raphson donde en vez de calcular la derivada de la
función en el punto de estudio, teniendo en mente la definición de derivada, se aproxima la
pendiente a la recta que une la función evaluada en el punto de estudio y en el punto de la
iteración anterior. Este método es de especial interés cuando el coste computacional de derivar la
función de estudio y evaluarla es demasiado elevado, por lo que el método de Newton no resulta
atractivo.
En otras palabras, el método de la secante es un algoritmo de la raíz de investigación que utiliza
una serie de raíces de las líneas secantes para aproximar mejor la raíz de una función f. El método
de la secante se puede considerar como una aproximación en diferencias finitas del método de
Newton-Raphson. Sin embargo, este método fue desarrollado independientemente de este
último.
El método se define por la relación de recurrencia:
Como se puede ver, este método necesitará dos aproximaciones iniciales de la raíz para poder
inducir una pendiente inicial.
[
h=h0 sen ( 2λπ )cos ( 2 πxλ )+e
−x
]
Para 16 , t=12, v=48, h=0.4h0, (40% de la altura inicial)
Movimiento de las moléculas de agua, en la zona superficial del mar, provocado por la acción del
viento. En este movimiento, que es originariamente circular, no hay desplazamiento horizontal de
dichas moléculas ni de la masa de agua por ellas constituida, aunque sí lo hay del movimiento
ondulatorio generado por ese movimiento molecular. Este tipo de olas, que se originan en alta
mar, se conocen con el nombre de 'olas libres' u 'olas estacionarias'.
Cuando una ola se aproxima a la costa, el movimiento típico del mar libre, movimiento circular, se
transforma, por rozamiento con el fondo, en un movimiento elíptico; la cresta de la ola avanza por
este motivo más deprisa que su punto opuesto en la vertical y se produce un desplazamiento
horizontal de la masa de agua que provoca la ruptura de la ola al llegar a la costa.
Para nuestro caso nos dan la ecuación respectiva de la ola junto con varios parámetros de esta
tales como la longitud de onda, las alturas respectivas, la velocidad, el tiempo y nos piden hallar la
distancia donde rompe la ola dada por x.
Debido a la presencia de por ejemplo la función logarítmica estamos en presencia de una ecuación
no lineal y se procederá a hallar las soluciones mediante los métodos anteriormente descritos.
DESCRIPCIÓN DE LA SOLUCIÓN
Para hallar la solución dada se pueden aplicar varios métodos enseñados en el curso de Análisis
Numérico, tales como de Aproximaciones Sucesivas, El método de Newton, Método de la secante,
etc. Para hallar nuestra solución se uso el método de Newton debido a su rápida convergencia en
hallar la solución, así como el más fácil de entender y aplicar, se comprobaron dichos resultados
con el método de la secante obteniéndose los mismos valores de x.
La solución a la ecuación de la ola estacionaria estará dada en los puntos donde f(x) tienen a cero.
Para valores de x donde la función periódica f(x) es igual a cero se tendrán las soluciones para x.
De la gráfica se observa para valores negativos o pequeños de x e-x tiene un efecto considerable
mientras que cuando x tiende a valores mayores e-x tiende a cero por lo que no influye mayor en
la solución, mientras que por lo tanto la función quedaría de la forma:
f(x) = A*sin(K*x) - 0.4
Donde se ve claramente que van a ver infinitas soluciones de x para lo cual f(x) = 0.
Se tendrán infinitas soluciones de x para f(x) = 0, ya que la función seno desplazada 0.4 hacia abajo
corta al eje horizontal cada π radianes, donde 2π es el período de la onda.
En matemática, una función es periódica si los valores de la función se repiten conforme se añade
a la variable independiente un determinado período, o sea:
, donde P es el período.
Las funciones trigonométricas, tales como la función seno o coseno, son casos típicos de funciones
periódicas, en las que su período es de 360 grados.
Al tener la función periódica K seno(2πx/λ) todos los valores donde sea x=x' el valor donde la
función tiende a cero y nos da la solución, para valores de (2π/λ)(x'+λ*n), se tendrán nuevos
valores de x''= x'+λ*n donde n=0,1,2,3,4...N.
CONCLUSIONES
Debido a la naturaleza oscilatoria de las ondas del mar, se tendrán múltiples respuestas sin
embargo se considerará a la solución fundamental a la solución más pequeña positiva.
Se tienen infinitos cruces de la función por cero debido a que para grandes valores de x la función
exponencial tiene a cero, quedando solo la ecuación seno multiplicada por una constante y
desplazada para abajo en 0.4, por lo tanto, corta al eje horizontal 2 veces en cada periodo.
Al hallar las 2 primeras soluciones, se puede ver que las demás soluciones son simplemente
soluciones iguales desplazadas en 2π radianes. Esto se da debido a que sen(x)=sen(x+2π).
En este trabajo se pudo comprobar la eficacia de estos métodos iterativos, encontrando
satisfactoriamente la respuesta y se vio que, a pesar de tener términos no lineales como la función
exponencial, estos sólo prevalecen para una región del problema, que en nuestro caso para hallar
la solución prácticamente no tiene mayor efecto en los valores finales.
2. OBJETIVOS:
3. MÉTODOS DIRECTOS
- Los métodos directos no hacen uso de la información proporcionada para las
derivadas. Bajo estas circunstancias, estos métodos se pueden usar con bastante
efectividad, pero son muy ineficientes comparados con los métodos discutidos
anteriormente (Optimización Numérica Unidimensional).
- Tienen ventaja de que estos métodos son muy simples de entender y muy fáciles
de ejecutar.
3.1. MÉTODOS DE BÚSQUEDA ALEATORIA
- Un método aleatorio simplemente selecciona un vector inicial x0, evalúa la
función objetivo en ese punto y entonces aleatoriamente selecciona otro vector
x1. Tanto la dirección de búsqueda como la longitud de búsqueda son elegidas
simultáneamente. Después de una o más etapas, el valor de f (x k) se compara
con el mejor valor previo de f(x) y se toma la decisión de continuar o terminar el
procedimiento. Existen diversas variaciones de este algoritmo, aunque
estrictamente hablando sólo se alcanza la solución cuando k → ∞, pero desde un
punto de vista práctico, si el objetivo tiene una forma muy plana se pueden
encontrar soluciones subóptimas bastante aceptables. Aunque el método es
bastante ineficiente por sí mismo, puede dar valores aceptables de partida para
otros métodos.
procediendo de tal manera las distancias entre dos puntos vendrán dadas por una
expresión similar.
2 3!
como tenemos tres puntos podemos hacer C 3= =3 , así en dos dimensiones
2! 1 !
(3 vértices) podemos definir tres distintas entre vértices (todas ellas iguales). Por
lo tanto, especificando un punto base x1 el punto x2 estará localizado en un punto
cualquiera de una circunferencia de radio “a” centrada en x1. Una vez elegido el
punto x2, el punto x3 deberá estar en la intersección entre las circunferencias de
radio “a” centradas en x1 y en x2 respectivamente. Existen dos posibilidades.
Resolviendo el sistema:
Una vez fijada la figura inicial del simplex, se sigue una búsqueda secuencial,
en la que en cada paso se eliminará un vértice y se incluirá otro nuevo.
(supondremos que queremos minimizar).
Paso 0:
(b) Si
¿Cómo se puede calcular las direcciones conjugadas sin usar derivadas? Este es
un concepto básico que lo referiremos a la siguiente figura. Comenzamos con el
punto x0. Localizamos el punto xa que es el mínimo en una dirección cualquiera
s. Elegimos otro punto cualquiera (distinto del primero) x1, y localizamos el
punto xb que es el mínimo partiendo del punto x1 en la misma dirección s. Los
puntos xa y xb se obtienen minimizando f(x0+ λ s) con respecto a λ admitiendo
que f(x) es una función cuadrática:
Se puede demostrar que el óptimo de una función cuadrática cae en la línea que
une a xa co xb. Sim embargo esta última afirmación no es válida para otro tipo de
funciones.
Paso 1:
- El método comienza realizando una búsqueda en n direcciones linealmente
independientes que suelen tomarse paralelos a los ejes
coordenados.
Partiendo del punto base x0 se lleva a cabo una búsqueda unidimensional en la
dirección s01 para llegar al punto x 01 . Este punto ( x 01) se toma como punto de
partida para una nueva búsqueda unidireccional, en este caso en la dirección s02,
y así sucesivamente hasta acabar en el punto x 0n.
Paso 2:
- Buscamos el punto particular x 0k para el cual se ha obtenido una mejoría mayor
de la función objetivo respecto al punto anterior x 0k−[Link] dos
magnitudes:
Paso 3:
- Determinamos:
Donde:
El gradiente negativo da la dirección de movimiento, pero no la longitud de
dicho movimiento. Por lo tanto, existen varios procedimientos posibles
dependiendo de la elección de λ k. Entre los diversos métodos que existen para la
selección de la longitud de paso, dos merecen una mención especial. El primero
de ellos emplea una búsqueda unidireccional en la dirección del gradiente. El
segundo especifica a priori la longitud del paso para cada iteración. Claramente
la principal dificultad con la segunda aproximación es que a menudo no se sabe
a priori la longitud de paso adecuada. ¿Cómo se debería cambiar esta longitud
de paso y como debería reducirse a medida que nos aproximamos al mínimo
para conseguir la convergencia? Una ilustración nos indicará el problema:
Supongamos una función cuadrática de dos variables como de la figura
siguiente:
EL MÉTODO DE NEWTON
- El método de Newton hace uso de la aproximación de segundo orden de la
función utilizando las derivadas segundas con respecto a cada una de las
variables independientes. De esa forma es posible tener en cuenta la curvatura
de la función en el punto e identificar las mejores direcciones de búsqueda.
El mínimo de f(x) se obtiene diferenciando la aproximación cuadrática de f(x)
con respecto a cada una de las variables e igualando a cero. Así:
Donde β es una constante positiva para asegurar que H(x) sea definida positiva
cuando H(x) no lo es. También es posible usar.
Donde y es una escalar de suficiente valor para el mismo propósito. Para estar
seguro de que valor β usar se debe calcular el valor propio más pequeño (más
negativo) de la matriz Hessiana en el punto y hacer , donde
es un valor propio de H(x).
Remarcar que si el valor de β es demasiado grande la diagonal principal se hace
tan dominante que el método se convierte en el de máximo descenso. El
problema que aparece ahora es que en cada paso se deben calcular los valores
propios de la matriz Hessiana. Se han desarrollado algunos algoritmos que
utilizan valores arbitrarios de dicho parámetro que se modifican en cada paso de
acuerdo a los valores previos obtenidos.
Aunque el método más común consiste en utilizar una factorización de
Cholesky de la matriz Hessiana.
BFGS:
APLICACIONES:
MÉTODOS DE BÚSQUEDA ALEATORIA
El problema de la programación de producción en talleres de fabricación
Un taller de fabricación o job-shop es una configuración productiva que permite fabricar una gran cantidad
de productos diferentes. Este tipo de sistema se caracteriza por tener máquinas de propósito general, y
porque cada trabajo tiene una ruta de fabricación única, que no necesariamente se repite entre trabajos. Un
taller de maquinado constituye un buen ejemplo de un job-shop: Sus máquinas -tornos, fresadoras, taladros,
rectificadoras, etc.- son de propósito general, ya en ellas se pueden procesar una casi infinita gama de
productos diferentes. En estos talleres cada producto puede tener una ruta diferente dentro del sistema; es
decir, alguna orden de producción irá primero al torno para luego pasar a la fresadora y por último a la
rectificadora, mientras que otra orden puede iniciar su proceso en la fresadora, seguir a la rectificadora y
terminar en el torno.
Jain, y Meeran (1999) describen el problema de la programación de producción en ambientes job-shop de la
siguiente manera: Un conjunto de n trabajos debe ser procesado en m máquinas. Cada trabajo debe ser
procesado en las máquinas en un orden establecido, que no puede ser violado bajo ninguna circunstancia.
Esta última condición se conoce como la restricción de precedencia, y consiste en que, por ejemplo, un
producto no puede ser empacado sin haber sido pintado antes. En este caso la operación de pintura precede
a la operación de empaque. Este problema se conoce como el problema de programación de producción
job-shop de n x m, donde n es el número de trabajos y m el número de máquinas. Considérese una situación
en la cual cuatro trabajos (1, 2, 3, 4) van a ser programados en cuatro máquinas (A, B, C, D) de acuerdo con
la secuencia y los tiempos dados en la tabla 1. El siguiente es un problema de programación de job-shop de
4×4 ; es decir, cuatro trabajos para ser programados en cuatro máquinas. En la figura 1 se puede apreciar
una solución al problema expresada en forma de diagrama de Gantt. Nótese que en el trabajo 1, la
operación en la máquina A precede a la operación en la máquina B, y ésta a su vez precede la operación en
la máquina C. Estas son las relaciones de precedencia mencionadas anteriormente. Una de las características
que hace que la programación de producción en ambientes job-shop sea tan compleja de resolver es
precisamente que estas restricciones de precedencia cambian de un trabajo a otro, como se puede apreciar
en la tabla 1.
La complejidad del problema de programación de producción en job-shop radica en la cantidad abrumadora
de posibles soluciones. Para un problema de n x m, esta cantidad está dada por (n!) m. En estas condiciones
un problema aparentemente sencillo de 20 x 10, en el que se requiera programar 20 trabajos en 10
máquinas tiene 7.2652 x 10138 posibles soluciones. Si una computadora tardara un microsegundo (10-6
segundos) en evaluar cada solución, la edad estimada del universo no bastaría para evaluar todas las
posibles soluciones al problema.
En la estrategia denominada búsqueda en rejilla (o grid search) el proceso anterior se automatiza realizando
una búsqueda, no aleatoria en todo el espacio formado por las posibles combinaciones de los parámetros,
sino en puntos de dicho espacio repartidos de forma espaciada en una rejilla.
Repitamos la búsqueda de los mejores parámetros en el mismo escenario que el de la búsqueda aleatoria.
Comenzamos importando la clase GridSearchCV y cargando el dataset:
iris = sns.load_dataset("iris")
y = [Link]("species")
X = iris
del(iris)
Al objeto de la clase GridSearchCV tenemos que pasarle un mínimo de dos argumentos: estimator -modelo a
usar- y param_grid -diccionario conteniendo como "claves" los hiperparámetros del modelo, y como
"valores" los valores de los hiperparámetros que queremos probar-. El parámetro opcional cv define la
estrategia de validación cruzada a seguir: si pasamos un número entero n, se ejecutará una validación
cruzada con n bloques.
El parámetro param_grid comentado puede ser un diccionario o una lista de diccionarios. Si se trata de una
lista, el objeto GridSearchCV probará de forma secuencial las combinaciones de hiperparámetros de cada
uno de los diccionarios de la lista.
El mayor inconveniente que ofrece este método es que se prueban de forma exhaustiva todas las
combinaciones indicadas, lo que puede exigir un tiempo más que notable y difícilmente estimable. Esto
significa que si queremos aprovechar un equipo para que realice una búsqueda durante la noche, es muy
fácil que el proceso termine a las 4 de la madrugada -y estemos desperdiciando varias horas de posible
búsqueda adicional- o que no termine hasta las 11 de la mañana, retrasando otras tareas que estén
pendientes.
Además, no es posible acceder a los mejores valores encontrados hasta que no termina el entrenamiento.
Fijar el argumento "verbose" a 3 o más muestra en pantalla el detalle del proceso, pero la única forma de
encontrar en la información mostrada los mejores valores es a través de una inspección visual, poco
recomendable y muy pesada.
MÉTODO SIMPLEX
Minimizar la siguiente función:
La
construcción inicial del simplex requiere la especificación de un punto inicial y un factor de escala.
Suponiendo x0 =[0,0]T y α=2, entonces:
Si
observamos detenidamente las iteraciones realizadas podemos percibir que en las últimas cuatro (M = 4)
permanece invariante uno de los vértices del simplex, punto x 6 , en este momento se debe reducir el tamaño
del simplex, de acuerdo a un factor de reducción, es la etapa de “ciclado”. Se comienza nuevamente con las
iteraciones tomando como punto base aquel en el cual se obtuvo el menor valor de función, en nuestro caso
el punto de partida será x 6 . Reducimos ahora el tamaño de nuestro simplex original, x 0 =[5.7954,1.5528]T y
α=0.5, entonces:
El método se continua hasta que el tamaño del simplex o la desviación estándar entre los valores de función
en los vértices sea lo suficientemente pequeña
DIRECCIONES DE BÚSQUEDAS CONJUGADAS
Método de Powell
MÉTODOS INDIRECTOS:
El punto inicial, de igual manera que en los ejemplos anteriores es x 0 =[0,0]T , entonces el nuevo punto es: x1
=[5,1]T . El método de Newton trabaja con una aproximación de segundo orden de la función, al ser la
función objetivo cuadrática el valor óptimo se obtiene en una sola iteración, y este valor es el único punto
crítico de la función.
MÉTODO DE GRADIENTE:
Resolveremos el problema utilizando el método del gradiente, comenzando con el punto xT 1 = (0.00, 3.00).
La tabla 5.5 muestra un resumen de los cálculos. Después de 7 iteraciones, alcanzamos el punto xT 8 = (2.28,
1.15). El algoritmo termina puesto que ||∇f(x8)|| = 0.09 es pequeño. Podemos observar la evolución del
método en la figura 5.7. Notar que la solución de este problema es (2.00, 1.00).
METODO HESSIANO:
CONCLUSIONES
Debido a la naturaleza oscilatoria de las ondas del mar, se tendrán múltiples respuestas sin
embargo se considerará a la solución fundamental a la solución más pequeña positiva.
Se tienen infinitos cruces de la función por cero debido a que para grandes valores de x la función
exponencial tiene a cero, quedando solo la ecuación seno multiplicada por una constante y
desplazada para abajo en 0.4, por lo tanto, corta al eje horizontal 2 veces en cada periodo.
Al hallar las 2 primeras soluciones, se puede ver que las demás soluciones son simplemente
soluciones iguales desplazadas en 2π radianes. Esto se da debido a que sen(x)=sen(x+2π).
REFERENCIAS
[1] Chapra S. & Canales R. / Métodos numéricos para ingenieros. / Edit. Mc
Graw Hill . N.Y. 1994, 641p.
[Link]
[Link]
[Link]
[Link]
leer_desde_pag_10_a_la_18.pdf