2017-04-25 4 views
0

Je suis à la recherche d'un guide définitif sur la formulation d'un problème de programmation quadratique CVXOPT avec des contraintes quadratiques. Il y a de bons documents fournis ici:Programmation quadratique Python avec CVXOPT

L'énoncé du problème que je traite est identique au problème here:

enter image description here

Quelle est la matrice G censé ressembler? J'ai formulé comme un système d'équations linéaires, mais en regardant des exemples cela ne semble pas être correct?

La meilleure ressource que j'ai trouvée est https://courses.csail.mit.edu/6.867/wiki/images/a/a7/Qp-cvxopt.pdf, mais les liens à la fin sont morts pour plus de lecture.

J'ai un ordinateur portable ipython essayant d'utiliser cette méthode de programmation, mais il échoue sans cesse: https://gist.github.com/jaredvacanti/62010beda0ccfc20d2eac3c900858e50

Edit: J'ai modifié le fichier source de données dans le bloc-notes pour fournir un accès aux données réelles utilisées dans ce problème d'optimisation.

+0

Le premier lien vous indique à quoi G devrait ressembler. Quel est exactement le problème? Aussi: si vous n'avez aucune expérience avec cvxopt et que vous n'avez pas besoin de l'option de résolution personnalisée (un des avantages de cvxopt), alors utilisez cvxpy, qui est beaucoup plus facile à utiliser (approche de haut niveau). – sascha

+0

Lorsque je fournis P, q, A et b au solveur, j'obtiens une solution optimale qui est similaire aux données d'échantillon auxquelles j'essaie de faire correspondre une spline, mais quand je fournis G et h, j'ai un non-sens/non solution optimale. Pour cette raison, je crois qu'il y a quelque chose qui ne va pas dans la formulation de G et h. – Jared

Répondre

0

Le carnet que vous avez posté semble avoir tout compris. Le problème que j'ai eu est que le fichier source pour les données n'est pas disponible.

maintenant à votre question:

Quelle est la matrice G censé ressembler? J'ai formulé comme un système de équations linéaires, mais en regardant des exemples cela ne semble pas être correct?

réécrire votre "équations linéaires" en forme de matrice, à savoir

2x + 2y = 4 
x - y = 1 

est équivalente à

matrix([[2,2],[1,-1]]) * matrix([[x],[y]]) = matrix([[4],[1]]) 

matrix est de cvxopt.

+0

J'ai mis à jour le bloc-notes pour inclure les données afin que l'exemple puisse fonctionner correctement. Lors de l'exécution du solveur, si seulement P, q, A et B sont fournis, il y a un bon ajustement en tant que solution. Lorsque G et h sont fournis, le solveur ne se termine pas. C'est mon problème - il doit s'agir d'une formulation de G et h. – Jared