[R] optimize integer function parameters

2013-07-23 Thread Christof Kluß

Hi

I have observations obs - (11455, 11536, 11582, 11825, 11900,  ...)

and a simulation function f(A,B,C,D,E,F), so sim - f(A,B,C,D,E,F)

e.g. sim = c(11464, 11554, 11603, 11831, 11907, ...)

now I would like to fit A,B,C,D,E,F such that obs and f(A,B,C,D,E,F) 
match as well as possible. A,..,F should be integers and have bounds.


How would you solve this problem without bruteforce in an acceptable time?

thx
Christof

__
R-help@r-project.org 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] optimize integer function parameters

2013-07-23 Thread Enrico Schumann
On Tue, 23 Jul 2013, Christof Kluß ckl...@email.uni-kiel.de writes:


 I have observations obs - (11455, 11536, 11582, 11825, 11900,  ...)

 and a simulation function f(A,B,C,D,E,F), so sim - f(A,B,C,D,E,F)

 e.g. sim = c(11464, 11554, 11603, 11831, 11907, ...)

 now I would like to fit A,B,C,D,E,F such that obs and f(A,B,C,D,E,F)
 match as well as possible. A,..,F should be integers and have bounds.

 How would you solve this problem without bruteforce in an acceptable time?



That depends on what your simulation function looks like.  Could you
post a (small) self-contained example?


-- 
Enrico Schumann
Lucerne, Switzerland
http://enricoschumann.net

__
R-help@r-project.org 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] optimize integer function parameters

2013-07-23 Thread Christof Kluß

Hi

the integer values in the vectors sim and obs are dates

when I set sim - f(TS0,TS1,TS2,TB0,TB1,TB2) my A,..,F below
then TS0 and TB0 are depend (and so on)


the main thing in f(...) is something like

 for (i in c(1:length(temperature))) {
  Temp - temperature[i]
  if (DS  0) {
DS - DS + max(Temp-TB0,0) / TS0
  } else if (DS  1) {
... date0 - i
DS - DS + max(Temp-TB1,0) / TS1
  } else if (DS  2) {
... date1 - i
DS - DS + max(Temp-TB2,0) / TS2
  } else {
... date2 - i
break
  }
}


this produced a vector sim = c(date0,date1,date2,...)


now I would like to minimize RMSE(sim,obs) or something like that

thx
Christof



for brute force I would do something like

obs - ...
act - 1000

  for (TS0 in seq(50,100,10))
for (TS1 in seq(750,850,10))
  for (TS2 in seq(400,600,10))
for (TB0 in c(5:7))
  for (TB1 in c(5:7))
for (TB2 in c(4:9)) {
  sim - foosim(dat,TS0,TS1,TS2,TB0,TB1,TB2)
  rmse - sqrt(mean((sim - obs)^2, na.rm = TRUE))

  if (rmse  act) {
print(paste(rmse,TS0,TS1,TS2,TB0,TB1,TB2))
act - rmse
  }
}


Am 23-07-2013 13:20, schrieb Enrico Schumann:

On Tue, 23 Jul 2013, Christof Kluß ckl...@email.uni-kiel.de writes:



I have observations obs - (11455, 11536, 11582, 11825, 11900,  ...)

and a simulation function f(A,B,C,D,E,F), so sim - f(A,B,C,D,E,F)

e.g. sim = c(11464, 11554, 11603, 11831, 11907, ...)

now I would like to fit A,B,C,D,E,F such that obs and f(A,B,C,D,E,F)
match as well as possible. A,..,F should be integers and have bounds.

How would you solve this problem without bruteforce in an acceptable time?




That depends on what your simulation function looks like.  Could you
post a (small) self-contained example?




__
R-help@r-project.org 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] optimize integer function parameters

2013-07-23 Thread Enrico Schumann
On Tue, 23 Jul 2013, Christof Kluß ckl...@email.uni-kiel.de writes:

 Am 23-07-2013 13:20, schrieb Enrico Schumann:

 On Tue, 23 Jul 2013, Christof Kluß ckl...@email.uni-kiel.de writes:


 I have observations obs - (11455, 11536, 11582, 11825, 11900,  ...)

 and a simulation function f(A,B,C,D,E,F), so sim - f(A,B,C,D,E,F)

 e.g. sim = c(11464, 11554, 11603, 11831, 11907, ...)

 now I would like to fit A,B,C,D,E,F such that obs and f(A,B,C,D,E,F)
 match as well as possible. A,..,F should be integers and have bounds.

 How would you solve this problem without bruteforce in an acceptable time?



 That depends on what your simulation function looks like.  Could you
 post a (small) self-contained example?



 the integer values in the vectors sim and obs are dates

 when I set sim - f(TS0,TS1,TS2,TB0,TB1,TB2) my A,..,F below
 then TS0 and TB0 are depend (and so on)


 the main thing in f(...) is something like

  for (i in c(1:length(temperature))) {
   Temp - temperature[i]
   if (DS  0) {
 DS - DS + max(Temp-TB0,0) / TS0
   } else if (DS  1) {
 ... date0 - i
 DS - DS + max(Temp-TB1,0) / TS1
   } else if (DS  2) {
 ... date1 - i
 DS - DS + max(Temp-TB2,0) / TS2
   } else {
 ... date2 - i
 break
   }
 }


 this produced a vector sim = c(date0,date1,date2,...)


 now I would like to minimize RMSE(sim,obs) or something like that

 thx
 Christof



 for brute force I would do something like

 obs - ...
 act - 1000

   for (TS0 in seq(50,100,10))
 for (TS1 in seq(750,850,10))
   for (TS2 in seq(400,600,10))
 for (TB0 in c(5:7))
   for (TB1 in c(5:7))
 for (TB2 in c(4:9)) {
   sim - foosim(dat,TS0,TS1,TS2,TB0,TB1,TB2)
   rmse - sqrt(mean((sim - obs)^2, na.rm = TRUE))

   if (rmse  act) {
 print(paste(rmse,TS0,TS1,TS2,TB0,TB1,TB2))
 act - rmse
   }
 }


Sorry, but that is not what I meant by a (small) self-contained
example. 

In any case, if brute force is feasible -- ie, your function can be
evaluated quickly enough and there are no further parameters -- then why
not do brute force?  (In the NMOF package there is a function
'gridSearch' that allows you to distribute the function evaluations.
Disclosure: I am the package author.)

If that does not work, you might try a Local Search or one of its
variants (see for instance 'LSopt' in the NMOF package).  But it is
difficult to say anything specific without knowing your actual function.

Regards,
Enrico

-- 
Enrico Schumann
Lucerne, Switzerland
http://enricoschumann.net

__
R-help@r-project.org 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.