Bernd
2015-Jul-21 19:28 UTC
[R] problems with rgp, examples from documentation won't produce expected results
I am currently playing with the rgp package, trying to find out how the symbolic regression works but I am having trouble getting any reasonable results. I have found this pdf: https://cran.r-project.org/web/packages/rgp/vignettes/rgp_introduction.pdf and am currently trying to follow the pendulum example in chapter 4.3 (after I failed to make *any* of my own experiments produce any results at all).>From the PDF in chapter 4.3 I have copy-pasted the relevant codesnippets into one file, now I have the following: # -----8<-----8<-----8<---- cut here library("rgp") set.seed(1) makeDampedPendulum <- function(A0 = 1, g = 9.81, l = 0.1, phi = pi, gamma = 0.5) { omega <- sqrt(g/l) function(t) A0 * exp(-gamma * t) * cos(omega * t + phi) } pendulum1 <- makeDampedPendulum(l = 0.5) xs1 <- seq(from = 1, to = 10, length.out = 512) pendulum1Data <- data.frame(time = xs1, deflection = pendulum1(xs1) + rnorm(length(xs1), sd = 0.01)) modelSet1 <- symbolicRegression(deflection ~ time, data = pendulum1Data, stopCondition = makeStepsStopCondition(8000)) bestModel1 <- modelSet1$population[[which.min(modelSet1$fitnessValues)]] plot(y = bestModel1(xs1), x = xs1, type = "l", lty = 1, xlab = "x", ylab = "y") lines(y = pendulum1(xs1), x = xs1, lty = 2) # -----8<-----8<-----8<---- cut here In the PDF it says it would produce a function (even after only 2 minutes), that fits to the data like the one depicted in fig. 1 on page 3 but all I get is:> bestModel1function (time) -2.97507503535599/(exp(time)/(0.280210268683732/time)) Sometimes it even produces just a constant term and no dependency on time at all! What am I missing here, what needs to be done to make it try more complicated expressions, to make the example in the PDF work as described? TIA, Bernd