Whale: Whales in an Ocean

WhaleR Documentation

Whales in an Ocean

Description

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.

Format

R6Class object.

Value

Object of R6Class with methods for simulation.

Methods

  • new: Instantiates an Whale object. Parameters are:

    • position: A numeric vector of length 2 giving the initial position. (Make sure that it's within the dimensions of the ocean.)

    • age: Initial age of the whale.

    • lifespan: Lifespan of the whale.

    • range: Distance at which a female can detect an eligible male.

    • maturity: Age of whale at which reproduction is possible.

    • stepSize: Number of units the whale move sin each gneration.

Methods

Public methods


Method new()

Usage
Whale$new(
  position = NA,
  age = 3,
  lifespan = 40,
  range = 5,
  maturity = 10,
  stepSize = 5
)

Method move()

Usage
Whale$move(dims, r = self$stepSize)

Method clone()

The objects of this class are cloneable with this method.

Usage
Whale$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Super class

bcscr::Whale -> Male

Methods

Public methods

Inherited methods

Method clone()

The objects of this class are cloneable with this method.

Usage
Male$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Super class

bcscr::Whale -> Female

Methods

Public methods

Inherited methods

Method maleNear()

Usage
Female$maleNear(males, dist)

Method mate()

Usage
Female$mate()

Method clone()

The objects of this class are cloneable with this method.

Usage
Female$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Author(s)

Homer White homerhanumat@gmail.com

Examples

## 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 ( animate ) ocean$plot()
    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)

homerhanumat/bcscr documentation built on Jan. 14, 2023, 4 a.m.