[R] Trouble with Optimization in "Alabama" Package

mcgrete mcgrete.drs at gmail.com
Mon Jun 20 05:41:36 CEST 2011


Hello Erik and Ravi,

I am curious if Erick or Ravi have a solution to Erick's question.

I have a similar problem.  I wish to use auglag to solve a nonlinear
optimization problem.  The cost function, grad function, and constraints are
all function of some parameters that are dependent upon the system I wish to
analyze.  For any given system, these parameters are fixed, e.g. x,y,z are
parameters that are problem or system dependent.  The variable f is a vector
that I wish to find such that my cost function is maximized or minimized.

I have used auglag without any issues as follows.  At first, I called auglag
without trying to provide arguments for x,y,z, but rather only the initial
parameter fo.  My functions (fn, gr, hin, heq, etc) were all defined in the
format of:
foo<-function(f){
# code...
}
The parameters x,z,z were obtained from what I understand to be the global
environment.  I was NOT calling 'auglag' from a function, but simply from
the command line in 'Rkward'. In other words, parameters x,y,z were
calculated outside of any functions but were utilized in the function
fn,gr,hin,heq,etc.

Now, I have constructed a function, foobar, that utilizes inputs a,b,c that
are used to calculate parameters x,y,z.  And within foobar, I attempt to
call 'auglag' to find an optimum solution.  For example:
foobar<-function(a,b,c){
# code to calculate x,y,z as function of a,b,c
ans<-auglag(par=fo,fn=foo1,gr=foo2,hin=foo3,heq=foo4)
return(ans)
}

However, auglag appears to utilize x,y,z from the global environment rather
than my local variables x,y,z inside foobar.

I have attempted to construct functions fn,gr,hin,heq,... by several ways
without success.
For example
foo<-function(f,x,y,z){code...},
ans<-auglag(par=fo,fn=foo1,gr=foo2,hin=foo3,heq=foo4), or
ans<-auglag(par=c(fo,x,y,z),fn=foo1(,gr=foo2,hin=foo3,heq=foo4)

and I tried
foo<-function(f,...){code...},
ans<-auglag(par=fo,fn=foo1,gr=foo2,hin=foo3,heq=foo4), or

foo<-function(f,...){code...},
ans<-auglag(par=c(fo,x,y,z),fn=foo1(,gr=foo2,hin=foo3,heq=foo4)

All failed.

Is it simply not feasible to use 'auglag' in this manner?  Or, have I missed
how to pass arguments to auglag, which in turn can pass these arguments to
fn,gr,hin,heq,...

Any help would be greatly appreciated.

Regards,
Tim



--
View this message in context: http://r.789695.n4.nabble.com/Trouble-with-Optimization-in-Alabama-Package-tp2548801p3610402.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list