| Whale | R Documentation |
R6 Objects for modelling a whale. Female and Male inherit from whale. Use Female and Male if you want to provide custom lists of male and female whales when you instantiate an ocean.
R6Class object.
Object of R6Class with methods for simulation.
Boolean
sex of the resulting baby
positionA numeric vector of length 2 giving the initial position. (Make sure that it's within the dimensions of the ocean.)
ageinitial age of the whale
lifespanlifespan of the whale
rangeDistance at which a female can detect an eligible male.
maturityAge of whale at which reproduction is possible.
stepSizeNumber of units the whale moves in each generation.
new()initialize a 'Whale'.
Whale$new( position = NA, age = 3, lifespan = 40, range = 5, maturity = 10, stepSize = 5 )
positionposition of whale
ageage of whale
lifespanlifespan of whale
rangerange of whale
maturityhow old whale must be in order to mate
stepSizehow far whale moves in one step
a new 'Whale' object
move()move a whale
Whale$move(dims, r = self$stepSize)
dimsdimensions of the ocean
rhow far the whale wants to move
clone()The objects of this class are cloneable with this method.
Whale$clone(deep = FALSE)
deepWhether to make a deep clone.
bcscr::Whale -> Male
sexsex of the whale
clone()The objects of this class are cloneable with this method.
Male$clone(deep = FALSE)
deepWhether to make a deep clone.
bcscr::Whale -> Female
sexsex of the whale
timeToFertilityhow long until whale can breed
infertilityPeriodnumber of steps until a female can breed again after having borne a child
maleNear()determine whether a male is near
Female$maleNear(males, dist)
malesthe males in the ocean
distthe distance-fidning function
mate()make female whale mate
Female$mate()
clone()The objects of this class are cloneable with this method.
Female$clone(deep = FALSE)
deepWhether to make a deep clone.
Homer White homerhanumat@gmail.com
## Not run:
initialMales <- vector(mode = "list", length = 10)
ages <- c(rep(3, 5), c(rep(10, 5)))
for (i in 1:10) {
initialMales[[i]] <- Male$new(
position = runif(2, min = 0, max = 100),
age = ages[i],
lifespan = 40,
range = 12,
maturity = 10,
stepSize = 7
)
}
initialFemales <- vector(mode = "list", length = 10)
for (i in 1:10) {
initialFemales[[i]] <- Female$new(
position = runif(2, min = 0, max = 100),
age = ages[i],
lifespan = 40,
maturity = 10,
range = 12,
stepSize = 3
)
}
library(ggplot2)
oceanSim <- function(
steps = 100,
males = 10,
females = 10,
starve = 5,
animate = FALSE,
seed = NULL
) {
if ( !is.null(seed) ) {
set.seed(seed)
}
ocean <- Ocean$new(
dims = c(100, 100),
males = males,
females = females,
starve = starve
)
population <-numeric(steps)
for (i in 1:steps) {
population[i] <- ocean$malePop + ocean$femalePop
if (population[i] == 0) break
ocean$advance()
if (animate) {
ocean$plot()
Sys.sleep(0.5)
}
}
pop <- population[1:i]
df <- data.frame(
time = 1:length(pop),
pop
)
ggplot(df, aes(x = time, y = pop)) +
geom_line() +
labs(x = "Time", y = "Whale Population")
}
oceanSim(males = initialMales, females = initialFemales, seed = 5050)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.