[R] optimize integer function parameters
Christof Kluß
ckluss at email.uni-kiel.de
Tue Jul 23 16:03:59 CEST 2013
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ß <ckluss at 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?
>
>
More information about the R-help
mailing list