He estado trabajando en un problema con una restricción esférica y otra de normalización.
Para ser precisos tengo una función $\mathrm{H}(X_{i})$ y el $X_{i}$ son las variables que deseo optimizar. Las restricciones son
\begin{equation} \sum_{i=1}^{N} X_{i}^2 = 1 \qquad \sum_{i=1}^{N} X_{i} = m \end{equation}
He probado el método de los multiplicadores de Lagrange para construir la función $\mathrm{H}'$ de la siguiente forma:
\begin{equation} \mathrm{H}' = H + \nu_{1}(\sum_{i=1}^{N} X_{i}^2 - 1) + \nu_{2} (\sum_{i=1}^{N} X_{i} - m) \end{equation} .
Sin embargo, por alguna razón que no he podido averiguar esto no parece funcionar numéricamente. (Puedo calcular $\nu_{1}$ y $\nu_{2}$ analíticamente. Esto es lo que inyecté en la rutina final de descenso de gradiente).
Tras el respuesta aquí, me preguntaba si se podría hacer algo similar para la restricción de normalización anterior. He probado el siguiente procedimiento:
-
Calcular el gradiente de la función $\mathrm{H}$ es decir, sin las restricciones. A continuación, siga el enlace anterior. Esto fija la restricción esférica.
-
A continuación, "reproyecte" la nueva variable $X_{i}(t+\Delta t)$ en el plano definido por $\sum_{i}^{N} X_{i} = m$ .
Para el último paso, elegí un vector $((1-m)/N, ... (1-m)/N)$ y luego realizó operaciones estándar de álgebra lineal para proyectar $X_{i}(t+\Delta t)$ .
Sin embargo, esto no parece funcionar demasiado bien en la práctica: El gradiente disminuye y también lo hace la función $\mathrm{H}$ . La restricción esférica también se cumple. Sin embargo, la restricción de normalización no lo es.
¿Alguna sugerencia/idea/referencia para este problema? He buscado en la web problemas de este tipo. La restricción esférica parece bastante estándar, pero la otra no parece darse en muchos sitios. No he visto ninguna referencia que trate las dos juntas. Gracias.