1

solve.QP.compact を使用して、線形制約の下で二次問題を解こうとしています。最小化する関数は Beta Dmat Beta と書くことができ、Beta は正でなければならない凸係数を表します (Beta > 0 および beta の合計 = 1)。Dmat は次のとおりです。

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)

solve.QP.compact として、関数 -d^Tb + 1/2 b^TDb を解きます。

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

合計は 1 に等しく、他のすべての値は正である必要があるため、bvec を次のように定義します。

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

そして、私は solve.QP.compact を使用します

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

これにより、次のエラーが発生します

constraints are inconsistent, no solution!

私は何を間違っていますか?

4

1 に答える 1

3

の膨大な数に何か問題がありますDmat

おそらく、ソリューション ベクトルの要素は( を参照)bと区別がつかなくなっているため、依然として大きすぎて解決されず、内部の何かによって制約が矛盾します。0.Machine$double.epsb^T D bquadprog

これが役立つように見えます:

   Dmat <- Dmat / 10^6
于 2017-01-12T14:17:29.693 に答える