[R] Increasing precision of rgenoud solutions
Jasjeet Singh Sekhon
sekhon at berkeley.edu
Thu May 10 19:54:32 CEST 2007
Hi Paul,
Solution.tolerance is the right way to increase precision. In your
example, extra precision *is* being obtained, but it is just not
displayed because the number of digits which get printed is controlled
by the options("digits") variable. But the requested solution
precision is in the object returned by genoud().
For example, if I run
a <- genoud(myfunc, nvars=2,
Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.000001)
I get
> a$par
[1] 0.7062930 0.7079196
But if I set options("digits"=12), and without rerunning anything I check
a$par again, I observe that:
> a$par
[1] 0.706293049455 0.707919577559
Cheers,
Jas.
=======================================
Jasjeet S. Sekhon
Associate Professor
Survey Research Center
UC Berkeley
http://sekhon.berkeley.edu/
V: 510-642-9974 F: 617-507-5524
=======================================
Paul Smith writes:
> Dear All
>
> I am using rgenoud to solve the following maximization problem:
>
> myfunc <- function(x) {
> x1 <- x[1]
> x2 <- x[2]
> if (x1^2+x2^2 > 1)
> return(-9999999)
> else x1+x2
> }
>
> genoud(myfunc, nvars=2,
> Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.000001)
>
> How can one increase the precision of the solution
>
> $par
> [1] 0.7072442 0.7069694
>
> ?
>
> I have tried solution.tolerance but without a significant improvement.
>
> Any ideas?
>
> Thanks in advance,
>
> Paul
>
>
More information about the R-help
mailing list