Paul,

You had indicated in your previous email that you are having trouble finding
a feasible starting value for constrOptim().  So, you basically need to
solve a system of linear inequalities to obtain a starting point.  Have you
considered using linear programming? Either simplex() in the "boot" package
or solveLP() in "linprog" would work.  It seems to me that you could use any
linear objective function in solveLP to obtain a feasible starting point.
This is not the most efficient solution, but it might be worth a try. 

I am aware of other methods for generating n-tuples that satisfy linear
inequality constraints, but AFAIK those are not available in R.

Best,
Ravi.


----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology 

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: [EMAIL PROTECTED]

Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html

 

----------------------------------------------------------------------------
--------

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Paul Smith
Sent: Tuesday, July 03, 2007 4:10 PM
To: R-help
Subject: [R] Fine tunning rgenoud

Dear All,

I am trying to solve the following maximization problem, but I cannot
have rgenoud giving me a reliable solution.

Any ideas?

Thanks in advance,

Paul

----------------------------
library(rgenoud)

v <- 0.90
O1 <- 10
O2 <- 20
O0 <- v*O1+(1-v)*O2

myfunc <- function(x) {
  U0 <- x[1]
  U1 <- x[2]
  U2 <- x[3]
  q0 <- x[4]
  q1 <- x[5]
  q2 <- x[6]
  p <- x[7]

  if (U0 < 0)
    return(-1e+200)
  else if (U1 < 0)
    return(-1e+200)
  else if (U2 < 0)
    return(-1e+200)
  else if ((U0-(U1+(O1-O0)*q1)) < 0)
    return(-1e+200)
  else if ((U0-(U2+(O2-O0)*q2)) < 0)
    return(-1e+200)
  else if ((U1-(U0+(O0-O1)*q0)) < 0)
    return(-1e+200)
  else if ((U1-(U2+(O2-O1)*q2)) < 0)
    return(-1e+200)
  else if((U2-(U0+(O0-O2)*q0)) < 0)
    return(-1e+200)
  else if((U2-(U1+(O1-O2)*q1)) < 0)
    return(-1e+200)
  else if(p < 0)
    return(-1e+200)
  else if(p > 1)
    return(-1e+200)
  else if(q0 < 0)
    return(-1e+200)
  else if(q1 < 0)
    return(-1e+200)
  else if(q2 < 0)
    return(-1e+200)
  else
return(p*(sqrt(q0)-(O0*q0+U0))+(1-p)*(v*(sqrt(q1)-(O1*q1+U1))+(1-v)*(sqrt(q2
)-(O2*q2+U2))))

}
genoud(myfunc,nvars=7,max=T,pop.size=6000,starting.values=runif(7),wait.gene
rations=150,max.generations=300,boundary.enforcement=2)

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to