2017-01-12 4 views
1

Ich versuche, loeve.QP.compact zu verwenden, um mein quadratisches Problem unter linearer Einschränkung zu lösen. Die zu minimierende Funktion kann als Beta Dmat Beta geschrieben werden, wobei Beta konvexe Koeffizienten darstellt, die positiv sein sollten (Beta> 0 und Summe der Beta = 1). DMAT ist folgende:R - solve.QP.compact - Constraints sind inkonsistent

Dmat <- matrix(c(109372234737,56220334574,73429834051,91873541870,71984996802,26694299175,59466668488,72903058589,34863587167,69990189651,56220334574,30472842846,41528929013,47926044961,39275554021,15336150547,31555630939,46390008065,18268007279,37264936709,73429834051,41528929013,66139008296,63287127518,56359545680,23281467618,42187566934,81859897202,23713602850,48982965873,91873541870,47926044961,63287127518,79910583327,62808190600,22813816846,50498032289,61764252981,29834680574,60303335045,71984996802,39275554021,56359545680,62808190600,61526678668,20293546244,40774759080,65131530787,23760877095,48696449409,26694299175,15336150547,23281467618,22813816846,20293546244,10710118459,16315334904,40553546897,8572539401,18248955543,59466668488,31555630939,42187566934,50498032289,40774759080,16315334904,34293058435,49072014208,19333916546,38891422022,72903058589,46390008065,81859897202,61764252981,65131530787,40553546897,49072014208,201860304636,23395941080,50359726205,34863587167,18268007279,23713602850,29834680574,23760877095,8572539401,19333916546,23395941080,11528523792,23285654687,69990189651,37264936709,48982965873,60303335045,48696449409,18248955543,38891422022,50359726205,23285654687,48461629142), nrow=10, ncol=10) 

Als solve.QP.compact löst Funktion -d^Tb + 1/2 b^TDb, ich habe

dvec <- rep(0,nrow(Dmat))` 

und die Zwänge sind definiert durch

Amat = matrix(data=0, nrow=nrow(Dmat), ncol=nrow(Dmat)+1) 
Amat[1,] = 1 
Amat[,1] = 1 

und

Aind = matrix(data=0, nrow=nrow(Dmat)+1, ncol=nrow(Dmat)+1) 
Aind[1,] = 1 
Aind[1,1] = nrow(Dmat) 
Aind[2,] = c(1, seq(1:nrow(Dmat))) 
Aind[,1] = c(nrow(Dmat), seq(1:nrow(Dmat))) 

Die Summe sollte equ al: 1 und alle anderen Werte positiv sein sollte, so habe ich bvec von

definiert
bvec = rep(0,nrow(Dmat)+1) 
bvec[1] = 1 

Und ich solve.QP.compact

solve.QP.compact(Dmat = Dmat, dvec = dvec, Amat = Amat, Aind=Aind, bvec = bvec) 

Dies führt durch die folgende Fehler

constraints are inconsistent, no solution! 

Was mache ich falsch?

+0

Versuchen 'bvec' etwas über 0 zu setzen, wo Sie es auf 0 gesetzt. –

Antwort

3

Da stimmt etwas nicht mit den riesigen Zahlen in Dmat.

Wahrscheinlich sind die Elemente der Lösungsvektor b, wie sie von 0 (siehe .Machine$double.eps) lösen noch in b^T D b ist zu groß und etwas nicht zu unterscheiden sind immer innerhalb quadprog Einschränkungen inkonsistent macht.

Sieht aus wie diese helfen sollte:

Dmat <- Dmat/10^6 
Verwandte Themen