2017-01-12 2 views
1

선형 제약 조건에서 내 2 차 문제를 해결하기 위해 solve.QP.compact를 사용하려고합니다. 최소화 할 함수는 양수이어야하는 볼록 계수를 나타내는 Beta (Beta> 0, Beta의 합 = 1)로 Beta Dmat Beta로 작성할 수 있습니다. DMAT는 다음과 같다 : 마찬가지로 solve.QP.compactR - solve.QP.compact - 제약 조건이 일치하지 않습니다

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) 

, 해결한다 함수 -d^TB + 2^B TDB, I는

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

를 가지며 제약

의해 정의 된
Amat = matrix(data=0, nrow=nrow(Dmat), ncol=nrow(Dmat)+1) 
Amat[1,] = 1 
Amat[,1] = 1 

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))) 

합이 EQU해야 1 등, 다른 모든 값은 긍정적이어야한다, 그래서 나는

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

에 의해 정의 bvec하고 난 다음 오류

constraints are inconsistent, no solution! 
에 의해 solve.QP.compact

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

이 결과를 사용

내가 뭘 잘못하고 있니?

+0

시도가 0보다 작은 bvec''설정할 수 있습니다. –

답변

3

Dmat에 거대한 숫자가 잘못 표시되었습니다.

아마 솔루션 벡터가 0에서 구별지고로 b ( .Machine$double.eps 참조)의 요소는 여전히 quadprog 제약 조건이 일치하게 내부 b^T D b이 너무 크고 어떤 존재에 해결.

이 도움이 될 것 같은데 : 0으로 설정 곳

Dmat <- Dmat/10^6 
관련 문제