J'ai besoin de résoudre
Je pense que c'est un problème quadratique qui devrait être résolu avec CVXOPT , mais je ne sais pas comment.
J'ai besoin de résoudre
Je pense que c'est un problème quadratique qui devrait être résolu avec CVXOPT , mais je ne sais pas comment.
Réponses:
J'ai écrit une réponse complète (en dessous de la ligne) avant de découvrir CVXPY , qui (comme CVX pour MATLAB) fait tout le travail difficile pour vous et a un exemple très court presque identique au vôtre ici . Il vous suffit de remplacer la ligne concernée par
p = program(minimize(norm2(A*x-b)),[equals(sum(x),1),geq(x,0)])
Mon ancienne réponse, le faire de la manière la plus difficile avec CVXOPT:
Suite à la suggestion de Geoff de cadrer votre fonction objectif donne
Bien sûr, tous les termes sont des scalaires, vous pouvez donc transposer le troisième et supprimer le dernier (car cela ne dépend pas de et ne changera donc pas quel vous donne un minimum, bien que vous deviez l'ajouter à nouveau en après résolution afin d'obtenir la valeur correcte de votre objectif) pour obtenir Ceci (y compris vos contraintes) a la forme d'un programme quadratique, comme indiqué dans la documentation CVXOPT ici , où il y a aussi un exemple de code pour résoudre un tel problème.
Au lieu du problème que vous avez résolu, résolvez
Ce problème est un problème d'optimisation différentiable, convexe et non linéaire qui peut être résolu dans CVXOPT, IPOPT ou tout autre solveur d'optimisation convexe.