Tengo dos variables k
y t
como funciones de otras dos variables p1
y p2
. También sé sus valores máximos. No tengo ninguna expresión analítica para esto. Quiero encontrar los valores de k
y t
cuáles son los más cercanos a sus valores máximos.
¿Hay alguna manera de optimizar el k = f1(p1, p2)
y t = f2(p1, p2)
?
Puedo intentar verificar el producto k0 * t0
o el producto de los cuadrados k0^2 * t0^2
o alguna otra relación de los dos.
¿Es esto eficiente y qué camino tomar?
Gracias.
optimization
Christian Clason
fuente
fuente
p1
yp2
talk
yt
alcanzar (lo más cerca posible) sus valores máximos? Supongo que tiene una función que, dadap1
yp2
, devuelve el valor dek
yt
, pero no hay información sobre las derivadas dek
yt
con respecto ap1
yp2
?k
yt
en el mismo punto (que está tratando de encontrar), o está buscando una compensación?Respuestas:
Hay dos problemas aquí:
Su problema de optimización tiene dos objetivos en competencia: maximizar y maximizar . Esto se conoce como optimización de objetivos múltiples (o criterios múltiples ), y tales problemas tienen un número infinito de soluciones, cada una basada en una elección específica del peso relativo de los objetivos (es decir, es más importante que esté cerca al valor máximo que para ?). Si ambos tienen la misma importancia para usted, simplemente puede minimizar la función donde y son los valores máximos conocidos dek = f1( p1, p2) t = f2( p1, p2) f 1 f 2 F ( p 1 , p 2 ) = ( f 1 ( p 1 , p 2 ) - K ) 2 + ( f 2 ( p 1 , p 2 ) -F1 F2 F( p1, p2) = ( f1( p1, p2) - K)2+ ( f2( p1, p2) - T)2, K T k y , respectivamente. De lo contrario, agregaría un peso correspondiente antes de cada término. (Si no se conocieran los valores máximos, en su lugar, minimizaría ).t - f21- f22
Para encontrar un minimizador de , solo puede usar valores de función de en un punto dado . Esto se conoce como optimización sin derivados ; véase, por ejemplo, Introducción a la optimización sin derivados de Conn, Scheinberg y Vicente o el capítulo 9 en Optimización numérica . La mayoría de estos usan derivados aproximados basados en diferencias finitas o derivados de funciones de interpolación. Dado que es una función de solo dos variables, construir aproximaciones de diferencias finitas del hessiano completo no es demasiado costoso (o inestable). La idea es la siguiente: dado un punto , construyes un modelo cuadrático localF F ( p1, p2) F pagsk= ( pk1, pk2) metrok( pk+ d) = F( pk) + ( gk)Tre+ 12reTHkre,
calcula su minimizador y establece . Aquí, para un pequeño (pero no demasiado pequeño, ver más abajo) ,
con y , es el gradiente aproximado y
es una aproximación de Taylor de la arpillera. Esto requiere evaluarrek pagsk + 1= pk+ dk ϵ > 0 solk= ( g1, g2)T,solyo= F( pk+ ϵ eyo) - F( pk- ϵ eyo)2 ϵ mi1= ( 1 , 0 )T mi2= ( 0 , 1 )T Hk= ( h11h21h12h22) ,hyo j= F( pk+ ϵ eyo+ ϵ ej) - F( pk+ ϵ eyo) - F( pk+ ϵ ej) + F( pk)ϵ2 F en 5 puntos adicionales en cada iteración.
Una cuestión importante en cualquier aproximación de diferencia finita es la elección de : si es demasiado grande, tiene una aproximación pobre de la derivada; Si es demasiado pequeño, corre el riesgo de cancelación y, por lo tanto, de inestabilidad numérica. Una buena regla general es tomar , donde es el redondeo de la unidad (aproximadamente para doble precisión).ϵ ϵ = u1 / 3 tu 10- 16
En la práctica, desearía combinar esto con una estrategia de región de confianza, donde requeriría dentro de una bola cuyo radio se adapte durante la iteración (consulte los libros mencionados anteriormente).rek
Puede encontrar una comparación de algoritmos e implementaciones para la optimización sin derivados en esta página web , que acompaña al documento "Optimización sin derivados: una revisión de algoritmos y comparación de implementaciones de software" por Luis Miguel Rios y Nikolaos V. Sahinidis
fuente
fminunc
Con la optimización multiobjetivo, hay muchas formas de combinar / comparar las variables objetivas en su análisis. El problema es que no hay una forma "correcta" de hacerlo. Depende completamente de cuál es el problema y qué representan las variables. Es probable que su mejor apuesta sea maximizar algo como donde es un valor positivo arbitrario. Una vez que tenga una respuesta, vea si le gustan las y resultantes , y modifique según sea necesario hasta que encuentre una solución con la que esté satisfecho.k + a ∗ t una k t una
En cuanto a la optimización real, no tener una expresión analítica para las funciones no es el fin del mundo, pero no tener ninguna información lo hará difícil. Si puede asumir algún nivel de suavidad / continuidad, incluso si es solo por partes, puede usar un algoritmo de búsqueda de raíz en una aproximación derivada para encontrar máximos locales (hay muchos métodos más sofisticados que esto, pero no estoy familiarizado con ellos. Otras personas aquí probablemente podrían señalarle en la dirección correcta). Si puede establecer la convexidad, puede extenderla a la optimización global.
La verdadera optimización de objetivos múltiples de la caja negra no es exactamente un problema fácil, pero algunas suposiciones y un proceso iterativo con una reducción objetiva deberían obtener una respuesta aceptable (suponiendo que exista una).
fuente