Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Christophe toch _toch

Slide 3

Slide 3 text

Benjamin Lehman, ©2011

Slide 4

Slide 4 text

Benjamin Lehman, ©2011 Prepare yourself against Zombie epidemic

Slide 5

Slide 5 text

Agent Based Model

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Agent Based Model

Slide 12

Slide 12 text

Map National Geographics, ©2011

Slide 13

Slide 13 text

map = Map.new(4, 4)

Slide 14

Slide 14 text

point = Point.new point_north = Point.new point.neighborhood[:north] = point_north point_north.neighborhood[:south] = point # ...

Slide 15

Slide 15 text

John DellAngelo, ©2013 Agent

Slide 16

Slide 16 text

agent = Agent.new(age, start_point, stm)

Slide 17

Slide 17 text

agent.perceive # => {}

Slide 18

Slide 18 text

agent.act # => :walk agent.walk(:east)

Slide 19

Slide 19 text

agent.age # => 1

Slide 20

Slide 20 text

agent.commit # => #

Slide 21

Slide 21 text

State

Slide 22

Slide 22 text

state = State.new(:susceptible) state.define_possible_actions( ->(agent) { [:walk, :stay, :fight].sample } )

Slide 23

Slide 23 text

state.decide_action_for(agent) # => :walk

Slide 24

Slide 24 text

infected = State.new(:susceptible) state.add_transition( infected, ->(state, agent) { true } )

Slide 25

Slide 25 text

state.trigger_transition(agent) # => #

Slide 26

Slide 26 text

State Transition Machine

Slide 27

Slide 27 text

stm = StateTransitionMachine.new # create states: # - susceptible # - infected # - zombie # - dead # create transitions # set default initial state

Slide 28

Slide 28 text

Simulation Loop

Slide 29

Slide 29 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 30

Slide 30 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 31

Slide 31 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 32

Slide 32 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 33

Slide 33 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 34

Slide 34 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 35

Slide 35 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 36

Slide 36 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 37

Slide 37 text

steps = 100 agents = create_the_agents steps.times do agents.each do |agent| agent.act; agent.age end agents.each { |agent| agent.commit } remove_the_deads(agents) end

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Validation & Calibration

Slide 40

Slide 40 text

# validation == integration test # # check: # - obvious case # - against theoretical model # - against real data

Slide 41

Slide 41 text

# not everything known # so calibration: # # varying a few parameters # to get what you want

Slide 42

Slide 42 text

Simulate & Prepare yourself

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Outro

Slide 45

Slide 45 text

? toch _toch toch/zombie_epidemic