[R] Problems using quadprog for solving quadratic programming problem

From: Fabian Barth <Fabian.Barth_at_web.de>
Date: Tue 06 Jun 2006 - 20:13:22 EST


Hi,

I'm using the package quadprog to solve the following quadratic programming problem.

I want to minimize the function
(b_1-b_2)^2+(b_3-b_4)^2
by the following constraints b_i, i=1,...,4:

b_1+b_3=1
b_2+b_4=1

0.1<=b_1<=0.2
0.2<=b_2<=0.4
0.8<=b_3<=0.9
0.6<=b_4<=0.8

In my opinion the solution should be b_1=b_2=0.2 und b_3=b_4=0.8.

Unfortunately R doesn't find this solution and what's surprising to me, evaluation the solution of solve.QP with my function doesn't lead the minimal "value" calculated by solve.QP

I would be very happy, if anyone could help and tell me, where's my mistake. Thank you very much. Fabian

My R-code also containing the sampel of quadprog starts here:

#sample from quadprog package
library(quadprog)

Dmat       <- matrix(0,3,3)
diag(Dmat) <- 1
dvec       <- c(0,5,0)
Amat       <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3)
bvec       <- c(-8,2,0)

erg<-solve.QP(Dmat,dvec,Amat,bvec=bvec)

print(erg)

erg<-erg$solution
-dvec%*%erg+.5*erg^T%*%Dmat%*%erg

# my "non working" sample

n<-2
k<-2
Dmatj<-diag((n-1),n)
Dmatj[lower.tri(Dmatj)]<--2
Dmat<-matrix(0,nrow=n*k,ncol=n*k)
for(j in 1:k){
  Dmat[((j-1)*n+1):(j*n),((j-1)*n+1):(j*n)]<-Dmatj }
print(Dmat)
Amat<-matrix(ncol=n,nrow=k*n,0)
ind<-seq(1,((k-1)*n+1),n)
for(i in 1:n){
  Amat[(ind+(i-1)),i]<-1
}
Amat<-cbind(Amat,diag(n*k),-diag(n*k))
print(Amat)
bvec<-c(rep(1,n),c(0.1,0.2,0.8,0.6,-0.2,-0.4,-0.9,-0.8)) print(bvec)
dvec=rep(0,(n*k))   

erg<-solve.QP(Dmat,dvec,Amat,bvec,meq=n)

print(erg)

erg<-erg$solution
-dvec%*%erg+.5*erg^T%*%Dmat%*%erg



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Jun 06 20:23:38 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 07 Jun 2006 - 02:10:36 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.