Il existe des routines d'optimisation spécifiquement pour l'optimisation locale ou globale des problèmes de programmation quadratique, que la fonction objectif soit convexe ou non.
BARON est un optimiseur global à usage général qui peut gérer et tirer parti des problèmes de programmation quadratique, convexe ou non.
CPLEX possède un solveur de programmation quadratique qui peut être appelé avec solutiontarget = 2 pour trouver un optimum local ou = 3 pour trouver un optimum global. Dans MATLAB, cela peut être invoqué avec cplexqp.
Des optimiseurs locaux à usage général qui peuvent gérer des contraintes linéaires peuvent également être utilisés pour trouver un optimum local. Un exemple dans R est https://cran.r-project.org/web/packages/trust/trust.pdf . Les optimiseurs pour R sont répertoriés sur https://cran.r-project.org/web/views/Optimization.html .
Dans MATLAB, la fonction quadprog de la boîte à outils d'optimisation peut être utilisée pour trouver un optimum local.
Dans Julia, il existe une variété d'optimiseurs disponibles.
«N'importe quel» algorithme de descente de gradient peut ne pas vous amener sur quoi que ce soit, sans parler des contraintes. Utilisez un package développé par quelqu'un qui sait ce qu'il fait.
L'exemple de problème fourni est facilement résolu en une optimalité globale prouvable. Peut-être qu'avec le passage de plus de 2 ans, il n'est plus nécessaire, ou peut-être un exemple qu'il n'a jamais été, mais en tout cas, l'optimum global est à x = 0,321429, y = 0,535714