Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(villager)
library(leaflet)
## -----------------------------------------------------------------------------
gps_agent <- R6::R6Class("agent",
inherit = villager::agent,
public = list(
age = NULL,
alive = NULL,
children = NULL,
father_id = NULL,
first_name = NULL,
gender = NULL,
health = NULL,
identifier = NULL,
last_name = NULL,
mother_id = NULL,
partner = NULL,
profession = NULL,
latitude = NULL,
longitude = NULL,
initialize = function(identifier = NA,
first_name = NA,
last_name = NA,
age = 0,
mother_id = NA,
father_id = NA,
partner = NA,
children = vector(mode = "character"),
gender = NA,
profession = NA,
alive = TRUE,
health = 100,
latitude = 0,
longitude = 0) {
super$initialize(identifier,
first_name,
last_name,
age,
mother_id,
father_id,
partner,
children,
gender,
profession,
alive,
health)
self$latitude <- latitude
self$longitude <- longitude
},
as_table = function() {
agent_table <- data.frame(
age = self$age,
alive = self$alive,
father_id = self$father_id,
first_name = self$first_name,
gender = self$gender,
health = self$health,
identifier = self$identifier,
last_name = self$last_name,
mother_id = self$mother_id,
partner = self$partner,
profession = self$profession,
latitude = self$latitude,
longitude = self$longitude
)
return(agent_table)
}
)
)
## -----------------------------------------------------------------------------
initial_condition <- function(current_state, model_data, agent_mgr, resource_mgr) {
# Create the initial villagers
test_agent <- gps_agent$new(first_name="Lewis", last_name="Taylor", age=9125, latitude=33.8785486, longitude=-118.0434921)
agent_mgr$add_agent(test_agent)
}
## -----------------------------------------------------------------------------
test_model <- function(current_state, previous_state, model_data, agent_mgr, resource_mgr) {
# Loop over all the agents (just one at the moment)
for (agent in agent_mgr$get_living_agents()) {
# Generate new coordinates
latitude <- agent$latitude + runif(1, 0.01, 0.03)
longitude <- agent$longitude + runif(1, 0.01, 0.03)
agent$latitude <- latitude
agent$longitude <- longitude
}
}
## -----------------------------------------------------------------------------
los_angeles <- village$new("Test_Village", initial_condition, test_model, gps_agent)
simulator <- simulation$new(10, list(los_angeles))
simulator$run_model()
## -----------------------------------------------------------------------------
# Load in data
agent_data <- readr::read_csv("results/Test_Village/agents.csv")
# Grab just the location data
agent_location <- data.frame(latitude = agent_data$latitude, longitude = agent_data$longitude)
# create a map
leaflet::leaflet() %>%
leaflet::addTiles() %>% # Add default OpenStreetMap map tiles
leaflet::addMarkers (data = agent_location) # Add agent locations
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.