http://cran.r-project.org/web/packages/quadprog/quadprog.pdf
El paquete R quadprog
parece ser capaz de resolver el problema de programación cuadrática solo cuando la matriz Es positivo definitivo.
Sin embargo, hay un caso cuando la matriz No es positivo definido. como
¿Cómo puedo resolver este tipo de problema?
r
optimization
usuario67275
fuente
fuente
Respuestas:
Existen rutinas de optimización específicamente para la optimización local o global de problemas de programación cuadrática, ya sea que la función objetivo sea convexa o no.
BARON es un optimizador global de propósito general que puede manejar y aprovechar problemas de programación cuadrática, convexos o no.
CPLEX tiene un solucionador de programación cuadrática que se puede invocar con solutiontarget = 2 para encontrar un óptimo local o = 3 para encontrar un óptimo global. En MATLAB, eso se puede invocar con cplexqp.
Los optimizadores locales de uso general que pueden manejar restricciones lineales también se pueden utilizar para encontrar un óptimo local. Un ejemplo en R es https://cran.r-project.org/web/packages/trust/trust.pdf . Los optimizadores para R se enumeran en https://cran.r-project.org/web/views/Optimization.html .
En MATLAB, la función quadprog en Optimization Toolbox se puede usar para encontrar un óptimo local.
En Julia, hay una variedad de optimizadores disponibles.
"Algún" algoritmo de descenso de gradiente podría no llevarte a nada, y mucho menos lidiar con restricciones. Use un paquete desarrollado por alguien que sepa lo que está haciendo.
El problema de ejemplo proporcionado se resuelve fácilmente con una optimización global demostrable. Quizás con el paso de más de 2 años ya no sea necesario, o tal vez sea un ejemplo que nunca fue, pero en cualquier caso, el óptimo global está en x = 0.321429, y = 0.535714
fuente
Se puede construir una solución mediante el uso
nearPD
delMatrix
paquete de este modo:nearPD(D)$mat
.nearPD
calcula la matriz definida positiva más cercana.fuente