[R] Optim with two constraints

Jens Hainmueller jhainm at fas.harvard.edu
Thu Oct 13 03:52:30 CEST 2005


Hi R-list,

I am new to optimization in R and would appreciate help on the following
question. I would like to minimize the following function using two
constraints:

######
fn <- function(par,H,F){
      
     fval <- 0.5 * t(par) %*% H %*% par + F%*% par
     fval  
  
  }

# matrix H is (n by k)
# matrix F is (n by 1) 
# par is a (n by 1) set of weights 

# I need two constraints:
# 1. each element in par needs to be between 0 and 1
# 2. sum(par)=1 i.e. the elements in par need to sum to 1

## I try to use optim
res <- optim(c(runif(16),fn, method="L-BFGS-B", H=H, F=f
,control=list(fnscale=-1), lower=0, upper=1)
######

If I understand this correctly, using L-BFGS-B with lower=0 and upper=1
should take care of constraint 1 (box constraints). What I am lacking is the
skill to include constraint no 2.

I guess I could solve this by reparametrization but I am not sure how
exactly. I could not find (i.e. wasn't able to infer) the answer to this in
the archives despite the many comments on optim and constrained optimization
(sorry if I missed it there). I am using version 2.1.1 under windows XP.

Thank you very much.

Jens




More information about the R-help mailing list