module faq.faq_cvxopt
#
Short summary#
module ensae_teaching_cs.faq.faq_cvxopt
Quelques problèmes récurrents avec CVXOPT.
Functions#
function |
truncated documentation |
---|---|
Quelques erreurs lorsqu’on cherche à optimiser avec CVXOPT. |
Documentation#
Quelques problèmes récurrents avec CVXOPT.
- ensae_teaching_cs.faq.faq_cvxopt.optimisation()#
Quelques erreurs lorsqu’on cherche à optimiser avec CVXOPT.
TypeError: “q” must be a “d” matrix with one column
Cette erreur survient même lorsque la dimension de la matrice
q
en question est la dimension attendue. Dans le cas présent, elle est définie comme suit :q=matrix([[0,0,0]])
Mais la fonction coneqp retourne l’erreur :
Traceback (most recent call last): File "toutbiss.py", line 236, in <module> liste_composition,liquide = actualisation(liste_df,index,liquide,liste_composition, nb_jours_rendement,nb_jours_volatilite,volatilite_max) File "toutbiss.py", line 136, in actualisation objectif_repartition=volatilite_quadra2(liste_df,index,nb_jours_rendement,nb_jours_volatilite,volatilite_max) File "toutbiss.py", line 121, in volatilite_quadra2 sol=solvers.coneqp(P=P,q=q,G=G,h=h,b=b,A=A) File "C:\Python35_x64\lib\site-packages\cvxopt\coneprog.py", line 1852, in coneqp raise TypeError("'q' must be a 'd' matrix with one column") TypeError: 'q' must be a 'd' matrix with one column
C’est dû au fait que le module fait la différence entre les entiers et les réels. Il suffit juste d’écrire :
q=matrix([[0.0,0.0,0.0]])
Bien sûr, si l’erreur est vraiment un problème de dimension, cette correction n’aidera pas.
ValueError: Rank[|A|] < p or Rank[|[P; A; G]|] < n)
La fonction coneqp déclenche parfois cette erreur :
Traceback (most recent call last): File "C:\Python35_x64\lib\site-packages\cvxopt\coneprog.py", line 2271, in coneqp try: f3 = kktsolver(W) File "C:\Python35_x64\lib\site-packages\cvxopt\coneprog.py", line 1996, in kktsolver return factor(W, P) File "C:\Python35_x64\lib\site-packages\cvxopt\misc.py", line 1457, in factor lapack.potrf(F['S']) ArithmeticError: 3 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "toutbiss.py", line 237, in <module> liste_composition,liquide = actualisation(liste_df,index,liquide,liste_composition, nb_jours_rendement,nb_jours_volatilite,volatilite_max) File "toutbiss.py", line 137, in actualisation objectif_repartition=volatilite_quadra2(liste_df,index,nb_jours_rendement,nb_jours_volatilite,volatilite_max) File "toutbiss.py", line 122, in volatilite_quadra2 sol=solvers.coneqp(P=P,q=q,G=G,h=h,b=b,A=A) File "C:\Python35_x64\lib\site-packages\cvxopt\coneprog.py", line 2274, in coneqp raise ValueError("Rank(A) < p or Rank([P; A; G]) < n") ValueError: Rank(A) < p or Rank([P; A; G]) < n
Le message est explicite mais si aucune de ces conditions n’est vérifiée, cela peut vouloir dire qu’une autre hypothèse du problème à résoudre n’est pas vérifiée :
la symétrie d’une matrice
le fait qu’une matrice doit être définie semi-positive