Maximización simultánea de dos funciones sin derivados disponibles.

8

Tengo dos variables ky tcomo funciones de otras dos variables p1y p2. También sé sus valores máximos. No tengo ninguna expresión analítica para esto. Quiero encontrar los valores de ky tcuá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 * t0o el producto de los cuadrados k0^2 * t0^2o alguna otra relación de los dos.

¿Es esto eficiente y qué camino tomar?

Gracias.

Christian Clason
fuente
1
¿Podría ser un poco más específico sobre lo que está buscando? ¿Quieres encontrar p1y p2tal ky talcanzar (lo más cerca posible) sus valores máximos? Supongo que tiene una función que, dada p1y p2, devuelve el valor de ky t, pero no hay información sobre las derivadas de ky tcon respecto a p1y p2?
Christian Clason
@ChristianClason sí, lo entiendes correctamente. No puedo obtener los derivados, y en general no hay analíticos disponibles.
¿Y sabe si se alcanzará el máximo de ky ten el mismo punto (que está tratando de encontrar), o está buscando una compensación?
Christian Clason
@ChristianClason Supongo (y seguro) que los valores máximos no están en el mismo punto. Estoy buscando una compensación. Pero no se puede decir de qué manera - Es probable que pueda comparar los productos o las sumas de los valores ...

Respuestas:

14

Hay dos problemas aquí:

  1. 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(pags1,pags2)t=F2(pags1,pags2)f 1 f 2 F ( p 1 , p 2 ) = ( f 1 ( p 1 , p 2 ) - K ) 2 + ( f 2 ( p 1 , p 2 ) -F1F2

    F(pags1,pags2)=(F1(pags1,pags2)-K)2+(F2(pags1,pags2)-T)2,
    KTky , 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-F12-F22

  2. 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 local FF(pags1,pags2)Fpagsk=(pags1k,pags2k)

    metrok(pagsk+re)=F(pagsk)+(solk)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 evaluarrekpagsk+1=pagsk+rekϵ>0 0
    solk=(sol1,sol2)T,solyo=F(pagsk+ϵmiyo)-F(pagsk-ϵmiyo)2ϵ
    mi1=(1,0 0)Tmi2=(0 0,1)T
    Hk=(h11h12h21h22),hyoj=F(pagsk+ϵmiyo+ϵmij)-F(pagsk+ϵmiyo)-F(pagsk+ϵmij)+F(pagsk)ϵ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).ϵϵ=tu1/ /3tu10-dieciséis

    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

Christian Clason
fuente
Gracias por la gran respuesta! Es realmente útil, aunque el tema es bastante complicado para mí. Lo siento, mi reputación es muy baja, no puedo votar por tu respuesta.
@AlexPi No te preocupes, estoy feliz de que la respuesta sea de alguna ayuda. Y el tema es realmente complicado (de lo contrario los matemáticos estarían sin trabajo :)). Si usted tiene acceso a Matlab Optimization Toolbox, usted podría tratar de alimentar a su en (que utiliza un método similar al de arriba) para ver qué pasa. Ffminunc
Christian Clason
2
@AlexPi: no tome demasiado pequeños, o se encontrará con problemas de estabilidad numérica. mipagss
Arnold Neumaier
@ArnoldNeumaier: Buen punto. He agregado algunas observaciones sobre este tema.
Christian Clason
1
@ChristianClason Creo que el segundo término en su h_ij debería ser F (p ^ k + \ epsilon * e_i).
Suzie
2

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+unatunaktuna

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).

Vidente de Godric
fuente