[R] question about constraint minimization

Hans W Borchers hwborchers at googlemail.com
Sat Nov 20 09:15:39 CET 2010

dhacademic <at> gmail.com <dhacademic <at> gmail.com> writes:

> Hi, 
> I am a beginner of R. There is a question about constraint minimization. A
> function, y=f(x1,x2,x3....x12), needs to be minimized. There are 3
> requirements for the minimization: 
> (1) x2+x3+...+x12=1.5 (x1 is excluded);
> (2) x1=x3=x4;
> (3) x1, x3 and x5 are in the range of -1~0, respectively. The rest variables
> (x2, x4, x6, x7, ...., x12) are in the range of 0~1, respectively.
> The "optim" function is used. And part of my input is as follow, where
> "xx1r" represents the x12:
> xx1r=1.5-x[2]-x[1]-x[1]-x[3]-x[4]-x[5]-x[6]-x[7]-x[8]-x[9]
> start=rnorm(9)
> up=1:9/1:9*1
> lo=1:9/1:9*-1
> out=optim(start,f,lower=lo,upper=up,method="L-BFGS-B",hessian=TRUE,
> control=list(trace=6,maxit=1000))
> There are two problems in this input. the "up" and "lo" only define a range
> of -1~1 for x1 to x11, which can not meet the requirement (3). In addition,
> there is not any constraint imposed on x12. I have no idea how to specify a
> matrix that can impose different constraints on individual variables in a
> function. Any suggestion is highly appreciated.
> Best,
> Hao

I don't see any direct need for real 'constraint' optimization here,
it is a 'bounded' optimization where you are allowed to use

    lower <- c(-1,0,-1,0,-1,0,0,0,0,0,0,0)
    upper <- c( 0,1, 0,0, 0,1,1,1,1,1,1,1)

Otherwise, your description is confusing:
  (1) Did you change f to a new function with 9 variables, eliminating
      x3, x4, and x12 ?
  (2) x4 (being equal to x1) has to be in [-1, 0] but also in [0, 1]?
  (3) If you need to restrict x12 to [0, 1] also, you cannot eliminate it.
      Either keep x12 and use an equality constraint, or use inequality 
      constraints on xxlr.

Hans Werner

More information about the R-help mailing list