Re: [R] Increasing precision of rgenoud solutions

2007-05-10 Thread Jasjeet Singh Sekhon

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.01)

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(-999)
else x1+x2
  }
  
  genoud(myfunc, nvars=2,
  Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.01)
  
  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
  
 

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


Re: [R] Increasing precision of rgenoud solutions

2007-05-10 Thread Paul Smith
Thanks, Jasjeet, for your reply, but maybe I was not enough clear.

The analytical solution for the optimization problem is the pair

(sqrt(2)/2,sqrt(2)/2),

which, approximately, is

(0.707106781186548,0.707106781186548).

The solution provided by rgenoud, with

solution.tolerance=0.1

was

$par
[1] 0.7090278 0.7051806

which is not very precise comparing with the values of the
(analytical) solution. Is it possible to increase the degree of
closeness of the rgenoud solutions with the analytical ones?

Paul


On 5/10/07, Jasjeet Singh Sekhon [EMAIL PROTECTED] wrote:

 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.01)

 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(-999)
 else x1+x2
   }
  
   genoud(myfunc, nvars=2,
   
 Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.01)
  
   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
  
  


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


Re: [R] Increasing precision of rgenoud solutions

2007-05-10 Thread Jasjeet Singh Sekhon

Hi Paul,

I see.  You want to increase the population size (pop.size)
option---of lesser importance are the max.generations,
wait.generations and P9 options.  For more details, see
http://sekhon.berkeley.edu/papers/rgenoudJSS.pdf.

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.001,
pop.size=6000, P9=50)

options(digits=12)

I obtain:

#approx analytical solution
sum(c(0.707106781186548,0.707106781186548))
[1] 1.41421356237

#genoud solution
#a$value
[1] 1.41421344205

#difference
a$value-sum(c(0.707106781186548,0.707106781186548))

[1] -2.91195978441e-09

If that's not enough precision, increase the options (and the
run-time).  This would be faster with analytical derivatives.

Cheers,
Jas.

===
Jasjeet S. Sekhon 
  
Associate Professor 
Travers Department of Political Science
Survey Research Center  
UC Berkeley 

http://sekhon.berkeley.edu/
V: 510-642-9974  F: 617-507-5524
===



Paul Smith writes:
Thanks, Jasjeet, for your reply, but maybe I was not enough clear.

The analytical solution for the optimization problem is the pair

(sqrt(2)/2,sqrt(2)/2),

which, approximately, is

(0.707106781186548,0.707106781186548).

The solution provided by rgenoud, with

solution.tolerance=0.1

was

$par
[1] 0.7090278 0.7051806

which is not very precise comparing with the values of the
(analytical) solution. Is it possible to increase the degree of
closeness of the rgenoud solutions with the analytical ones?

Paul

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(-999)
else x1+x2
  }
  
  genoud(myfunc, nvars=2,
  Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.01)
  
  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
  
  


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


Re: [R] Increasing precision of rgenoud solutions

2007-05-10 Thread Paul Smith
Thanks a lot, Jasjeet. That is it.

Paul


On 5/10/07, Jasjeet Singh Sekhon [EMAIL PROTECTED] wrote:

 Hi Paul,

 I see.  You want to increase the population size (pop.size)
 option---of lesser importance are the max.generations,
 wait.generations and P9 options.  For more details, see
 http://sekhon.berkeley.edu/papers/rgenoudJSS.pdf.

 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.001,
 pop.size=6000, P9=50)

 options(digits=12)

 I obtain:

 #approx analytical solution
 sum(c(0.707106781186548,0.707106781186548))
 [1] 1.41421356237

 #genoud solution
 #a$value
 [1] 1.41421344205

 #difference
 a$value-sum(c(0.707106781186548,0.707106781186548))

 [1] -2.91195978441e-09

 If that's not enough precision, increase the options (and the
 run-time).  This would be faster with analytical derivatives.

 Cheers,
 Jas.

 ===
 Jasjeet S. Sekhon

 Associate Professor
 Travers Department of Political Science
 Survey Research Center
 UC Berkeley

 http://sekhon.berkeley.edu/
 V: 510-642-9974  F: 617-507-5524
 ===



 Paul Smith writes:
 Thanks, Jasjeet, for your reply, but maybe I was not enough clear.
 
 The analytical solution for the optimization problem is the pair
 
 (sqrt(2)/2,sqrt(2)/2),
 
 which, approximately, is
 
 (0.707106781186548,0.707106781186548).
 
 The solution provided by rgenoud, with
 
 solution.tolerance=0.1
 
 was
 
 $par
 [1] 0.7090278 0.7051806
 
 which is not very precise comparing with the values of the
 (analytical) solution. Is it possible to increase the degree of
 closeness of the rgenoud solutions with the analytical ones?
 
 Paul
 
 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(-999)
 else x1+x2
   }
  
   genoud(myfunc, nvars=2,
   Domains=rbind(c(0,1),c(0,1)),max=TRUE,boundary.enforcement=2,solution.tolerance=0.01)
  
   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
  
  
 


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