# [R] Fine tunning rgenoud

Tue Jul 3 22:50:03 CEST 2007

```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.

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

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

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

-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] 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?

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 at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help