Skip to contents

R6 Object for simulating a population of whales.

Format

R6Class object.

Value

Object of R6Class with methods for simulation.

Author

Homer White homerhanumat@gmail.com

Public fields

dimensions

A vector of length two giving the dimensions of the ocean.

males

A list of R6 objects of class Male containing the current population of male whales.

females

A list of R6 objects of class Female containing the current population of female whales.

malePop

Current number of males in the population.

femalePop

Current number of females in the population.

starveParameter

Helps determine probability for each whale to die by starvation in the current generation.

Methods


Method distance()

Compute distance between two whales.

Usage

Ocean$distance(a, b)

Arguments

a

one whale

b

another whale

Returns

A number


Method new()

Create a new Ocean object.

Usage

Ocean$new(dims = c(100, 100), males = 10, females = 10, starve = 5)

Arguments

dims

numerical vector of length 2 giving the dimensions of the ocean

males

either a numeric vector of length 1 giving the initial number of male whales, or a list of R6 objects of class Male inheriting from Whale. If the former, then the specified number of whales of class Male are instantiated, with certain default characteristics. If the latter, then the given whales are cloned.

females

either a numeric vector of length 1 giving the initial number of female whales, or a list of R6 objects of class Female inheriting from Whale. If the former, then the specified number of whales of class Female are instantiated, with certain default characteristics. If the latter, then the given whales are cloned.

starve

the starvation parameter

Returns

A new `Ocean` object.


Method starvationProbability()

Compute the starvation probability.

Usage

Ocean$starvationProbability(popDensity)

Arguments

popDensity

population density

Returns

a number.


Method advance()

advance the `Ocean` one step.

Usage

Ocean$advance()

Returns

the `Ocean` object.


Method plot()

plot the `Ocean`.

Usage

Ocean$plot()

Returns

side effect


Method clone()

The objects of this class are cloneable with this method.

Usage

Ocean$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

if (FALSE) { # \dontrun{
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(seed = 5050)
} # }