The Event Pump: An Agent Based approach to Microsimulation



Similar documents
dream long-term Economic Projection for 2011 Pdf version

Outline. Rules for researchers access to micro data. Data available for researcher. Main task for research service unit

Object Oriented Programming. Risk Management

University of California Transportation Center University of California

Curriculum Map. Discipline: Computer Science Course: C++

Assessing and Forecasting Population Health

Java Application Developer Certificate Program Competencies

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers

: provid.ir

Insulin Pump System Design

Follow your family using census records

White Paper. How Streaming Data Analytics Enables Real-Time Decisions

Long Run Growth and Redistribution in the Italian Social Security System

Topographic Change Detection Using CloudCompare Version 1.0

SYSM 6304: Risk and Decision Analysis Lecture 5: Methods of Risk Analysis

Japan Communication India Skill Development Center

Redistributional impact of the National Health Insurance System

Course Title: Software Development

Java the UML Way: Integrating Object-Oriented Design and Programming

Applying Data Science to Sales Pipelines for Fun and Profit

An Introduction to MIDAS_BE: the dynamic microsimulation model for Belgium

Japan Communication India Skill Development Center

Microsoft Windows PowerShell v2 For Administrators

How To Model The Cost Of A Loan

Detecting false users in Online Rating system & Securing Reputation

Assessing and Forecasting Population Health

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS

W3C USING OPEN DATA WORKSHOP VISUAL ANALYTICS FOR POLICY-MAKING OPPORTUNITIES AND RESEARCH CHALLENGES Francesco Mureddu, Tech4i2.

Some programming experience in a high-level structured programming language is recommended.

Forecasting China's Medical Insurance Policy for Urban Employees Using a Microsimulation Model

Agent Based Decision Support System for Identifying the Spread of Nosocomial Infections in a Rural Hospital

Fundamentals of Java Programming

Aras Corporation Aras Corporation. All rights reserved. Notice of Rights. Notice of Liability

Learning outcomes. Knowledge and understanding. Competence and skills

Java SE 8 Programming

WINDOWS PROCESSES AND SERVICES

AES Queensland Branch Seminar 22 October Ellen Vasiliauskas Director d-sipher pty ltd. ph:

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science

Uploading Ad Cost, Clicks and Impressions to Google Analytics

IBM Business Process Manager Version 8 Release 5. Hiring Tutorial IBM

Debugging Multi-threaded Applications in Windows

An Introduction to OSVR

Patterns in Software Engineering

A Real Time, Object Oriented Fieldbus Management System

Medicare for Women and Men

Social Health and Cancer - An Academic Analysis

Workshop: Predictive Analytics to Understand and Control Flight Risk

How To Teach Social Science To A Class

Improving Demand Forecasting

ARMS Counterparty Credit Risk

Python Lists and Loops

GEM90 TrackMe GPS Tracking Application

Scicos is a Scilab toolbox included in the Scilab package. The Scicos editor can be opened by the scicos command

NEURAL NETWORKS IN DATA MINING

BANKING ON CUSTOMER BEHAVIOR

Game Design From Concepts To Implementation

Laboratory work in AI: First steps in Poker Playing Agents and Opponent Modeling

Business Intelligence and Big Data Analytics: Speeding the Cycle from Insights to Action Four Steps to More Profitable Customer Engagement

Project Management through

What is Prospect Analytics?

The Phases of an Object-Oriented Application

INSTRUCTOR WORKBOOK Quanser Robotics Package for Education for MATLAB /Simulink Users

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Tangible and Rapid Adoption of Cloud Technologies

Page 1. Lecture 1: Introduction to. Introduction to Computer Networks Security. Input file DES DES DES DES. Output file

Performance Analysis of Naive Bayes and J48 Classification Algorithm for Data Classification

Getting Started With SPSS

Data Mining Algorithms Part 1. Dejan Sarka

Case Studies of Excellence through Management by Process

Facilitating On-Demand Risk and Actuarial Analysis in MATLAB. Timo Salminen, CFA, FRM Model IT

Data Mining is the process of knowledge discovery involving finding

isppac-powr1220at8 I 2 C Hardware Verification Utility User s Guide

[Refer Slide Time: 05:10]

Microsoft Axapta Inventory Closing White Paper

Software Documentation Guidelines

Product data model for PLM system

A generic framework for game development

How s Life in Denmark?

Texas Essential Knowledge and Skills Correlation to Video Game Design Foundations 2011 N Video Game Design

Instructional Design Framework CSE: Unit 1 Lesson 1

Test Data Management Best Practice

Clustering through Decision Tree Construction in Geology

KEYWORDS. Control Systems, Urban Affairs, Transportation, Telecommunications, Distributed Processors. ABSTRACT

Japan Communication India Skill Development Center

Banking at the speed of your life. Online. Mobile. Superior. Safe.

DIPLOMADO DE JAVA - OCA

Realizing the Benefits of Vulnerability Management in the Cloud

OPTIMIZING YOUR MARKETING STRATEGY THROUGH MODELED TARGETING

Web Analytics Understand your web visitors without web logs or page tags and keep all your data inside your firewall.

Axiomatic design of software systems

Run your own Oracle Database Benchmarks with Hammerora

USING STARLOGO TO INTRODUCE DIFFERENTIAL EQUATIONS

A Comparison of Period and Cohort Life Tables Accepted for Publication in Journal of Legal Economics, 2011, Vol. 17(2), pp

Reliance Bank Switch Kit

Human-Readable BPMN Diagrams

Monitor the Cisco Unified Computing System

Modeling the Relation Between Driving Behavior and Fuel Consumption

Exclaimer Mail Archiver User Manual

Prospective Life Tables

Transcription:

5th World Congress of the International Microsimulation Association (IMA) Luxembourg, 2-4 September 2015 The Event Pump: An Agent Based approach to Microsimulation Peter Stephensen DREAM Abstract Events are a basic element in most dynamic microsimulation models. Events are what people do: birth, death, moving etc. According to the Event-Pump Architecture, the core driver of the model is a loop called the event pump. This loop controls when and where things happen in the model. The feature is inspired by the message pump, which is a central element in how Windows is programmed (Petzold, 1998). The method is used in the microsimulation model SMILE-DK (Stephensen, 2013), in the official Danish population forecast (Hansen & Stephensen, 2014) and in a forthcoming agent-based analysis of the Danish housing marked. Keywords: population projections, education, household projections, housing demand, microsimulation

Page 2 of 8 The Event Pump: An Agent Based approach to Microsimulation 1. Introduction In the Danish microsimulation model SMILE a novel approach is used, called the Event- Pump Architecture. As in most other dynamic microsimulation models a basic element of the model is events. Events are what people do: birth, death, moving etc. The core driver of the model is a loop called the event pump. This loop controls when and where things happen in the model. The feature is inspired by the message pump, which is a central element in how Windows is programmed (Petzold, 1998). 2. The SMILE model The SMILE 1 model is a Danish, dynamic, data-driven microsimulation model. The current version 3 forecasts demography, education level, socioeconomic characteristics, housing demand, income, taxation, public benefits and labor market pensions for the period 2014-2050. The SMILE model is dynamic in the sense that an initial population (the entire Danish population of approximately 5.5 million persons) is forecasted into the future. Demographic events such as death, birth, immigration, emigration etc. are modelled. Projections of death probabilities are based on the Lee-Carter econometric method (Lee & Carter, 1992). The model is subdivided in 98 regions and a matching algorithm called SBAM (Stephensen & Markeprand, 2013) is used. The modelling of education decisions is based on a regionally subdivided transition probabilities calculated from Danish register data and it thus forecasts education levels by employing historical educational behavior. The modelling of income and labor market dynamics is based on (Bækgaard, 2013). The moving probability is divided by background characteristics of the household and by characteristics of the household's current dwelling. Together this results in a lot of explaining variables why the moving probability is calculated as a CTREE (Rasmussen, 2013). The SMILE model is a data-driven model, based on rich Danish register data. The data cover the entire Danish population on annual basis in the period between 1986 and 2013. On each individual our dataset contains information about the person himself (gender, age, educational background, labor market participation, income etc.), the person s family situation (single/couple, number of children living at home etc.) and information about the dwelling that the person s household lives in (location, owner/rental status, dwelling type and size etc.). We derive data from seven different 1 Simulation Model for Individual Lifecycle Evaluation.

Page 3 of 8 sources made available through Statistics Denmark. The main data sources are the Danish Civil Registration System (CPR-registret), the Housing Register (Bygnings- og Boligregistret, BBR), the education register (Uddannelsesregistret) and the labor force statistics (Registerbaseret Arbejdsstyrkestatistik, RAS). 3. Basic concepts The basic concepts in the development strategy have been object orientation and agent based modelling. The model is programmed in an object orientated programming language (C#). The advantages of object orientation are often described by the words encapsulation and separation. By encapsulation you mean that a lot of functionality can be hidden inside an object. That makes it easier for others to use it. This is best demonstrated by an example. Figure 1 shows the Agent Tree. This is basically the model. The Simulation object at the top level controls the simulation. The left branch contains the actual agents of the system: the households and the persons. The right branch contains different kinds of functionality. The Demographics object contains information on the behavior of the households and persons, and the Statistics object gathers information (output data). The Demographics object contains all the transition probabilities and (importantly) how to use them. All this functionality is encapsulated in the object. When programming the left branch you can use the Demographics object without actually knowing/understanding what s inside it. You could now replace the Demographics object with a Swedish version (ie. with Swedish transition probabilities) and you would have a Swedish instead of a Danish model. This example also demonstrates the related concept separation. It is considered as good programming practice to separate various tasks. This makes it easier to maintain code and to find errors. The structure of the model naturally separates these tasks. In the last 10 to 15 years Agent Based Modelling has been more and more common. The basic idea is that modelling should be done at the individual level, and that interaction is important. Microsimulation and agent based modelling is related traditions but never the less different. Both traditions work at the individual level. But when it comes to interaction among the agents there are differences. The most important example of interaction in microsimulation models is the formation of couples. In many microsimulation models (also in SMILE) this problem is solved with a top-down approach. In an agent based model the approach should always be bottom-up. Agent based models are more principled, use more theory and less data. Microsimulation models are data-driven and more pragmatic. Despite these differences SMILE is basically build as an agent based model. It is probably fair to say that microsimulation models is a pragmatic subset of agent based models. The basic argument for using an agent based modelling strategy is therefore generality. Using this approach opens up for a lot of future possibilities of interaction between the agents. The decision to follow an agent based path let to the idea of a basic Agent object. This object is the Lego block from which the model is build. An Agent is a thing that 1) Potentially has children 2) Potentially do stuff. By having children we mean pointing to other Agents. It is this property that makes it possible to build an Agent Tree like the one

Page 4 of 8 shown in Figure 1. By do stuff we mean having a generic method/function that defines what to do under different circumstances. This method (a function is called a method in C#) is called EventProc(idEvent). The input idevent is an event ID that defines the current event. The generic behavior (the so called base implementation) of EventProc is to do nothing and just send idevent to all its children Agents (if any). If you therefore sends an idevent to the EventProc of the top Simulation object in Figure 1, the event will automatically be send down the tree an eventually reach all Agents. If you want your EventProc to do something (a Person to die or a Household to move), you just program this behavior before you send the event to the children Agents. Or if you know the event is of no interest for the Agents further down the tree, you can chose to stop the event. This can be a source of speed gains. Figure 1 The Agent Tree Having constructed the Agent tree from our Agent Lego blocks, we just need to send sequences of events down the tree to make the model run. This is done by the Event Pump. The Event Pump is a loop located in the top Simulation objects EventProc. It sends events down the tree in the correct order. Typically it repeats the same sequence of events every period.

Page 5 of 8 The Event Pump got its name from the so called Windows Message Pump that is a fundamental concept in the original programming of Windows (the Win32 API, see Petzold 1998). In Windows every window is controlled by a callback function called WinProc. The input to this function is (among other) a parameter imsg. This is a message ID that defines which message the window receives (pressing a button, moving the mouse over the window etc.). The Message Pump controls the order of these imsg s. The parallel to our approach is obvious. The Event Pump Architecture has proven itself very useful and flexible. It is easy to make changes to the model and we have yet to face microsimulation/agent-based issues that do not have an Event Pump implementation. 4. Events The Event Pump pumps events into the Agent tree. In the simplest version of the SMILE model, five events are defined: Event.System.Start Event.System.End Event.System.YearStart Event.System.YearEnd Event.Behavior.Update The four system events are used to control the flow of the model. The last update-event is used to trigger the actual behavior of the agents. In more elaborated versions, the update-event will typically be split up in more events (death, birth, move etc.). In code example 1 a simplified version of the C# implementation of the EventProc in the top Simulation object is given. The basic structure of the EventProc-method is a so called switch that provides a differentiated response on the various events. The model starts by sending an Event.System.Start event to the Simulation objects EventProc. This initiates the Event-Pump. A time object _time controls the length of the simulation. The method _time.nextyear() returns True every year until the end of the simulation. Hereafter it returns False, such that the Event Pump ends. In a given year, the Event Pump sends the 3 events Event.System.YearStart, Event.Behavior.Update and Event.System.YearEnd to the Simulation objects EventProc (recursive calls as the Event Pump is itself part of this method; This explains the this ). In code example 1 the implementation of Event.System.YearStart and Event.System.End is showed. The YearStart-event writes the current year to the console, and sends the event down the Agent tree to its children with the method base.eventproc(idevent). This is the so called base implementation of the EventProc in

Page 6 of 8 all Agent objects. All it does is sending the event to its children (if any). System.Stop event just sends the event down to its children. The Code example 1 The EventProc in the Simulation object Every year all agents in figure 1 receive the events Event.System.YearStart, Event.Behavior.Update and Event.System.YearEnd. The role of the Statistics object is to collect output data from the simulation. This object will use Event.System.YearStart to reset all its counters to zero and it can use Event.System.YearEnd to write output data to file. It uses Event.System.Stop to close the output files. The agents that react on Event.Behavior.Update will typically only be the agents in the left household branch in figure 1. When a Person object receives the update-event, it will serially make all its decisions (death, birth, education, move etc.). The decisions are made by asking the Demography object. The

Page 7 of 8 Demography object looks at the asking agent, and gives an answer given its data (transitions probabilities, estimated models etc.) and one or more draws from the random generator. When there is only one update event we call it a Serial approach, as opposed to the Parallel approach when we have multiple update events. 5. Alignment by slicing Alignment plays an important role in microsimulation. Alignment basically works by manipulating the probabilities of the model, aiming to do model calibration, comparative analysis (static or dynamic) and/or to eliminate Monte-Carlo noise. In SMILE we use the alignment method described in (Stephensen, 2014). If the model is build, following the serial approach (only one update event) it is hard to do alignment. Under this approach, all calculations in a given year are done first for agent 1, then for agent 2 etc. Alignment is typically done by gathering all individual transition probabilities and then manipulate these such that a given aggregated target is reached. This is done much easier under the parallel approach: by slicing the update event. For the sake of argument, assume we model death, birth, education, income and tax, and that we only want to align education to given national levels. Under the serial approach we would have only one update event, in which death, birth, education, income and tax would be calculated one agent a time. To do alignment we would slice the update event in four: Event.Behavior.Update1 Event.Behavior.EducationeAlignInit Event.Behavior.Education Event.Behavior.Update2 Death, birth Probability gathering Education Income, tax Under Event.Behavior.Update1 and Event.Behavior.Update2 death, birth, income and tax is modelled without alignment. Under the event Event.Behavior.EducationeAlignInit all education probabilities are gathered and handed to an Aligment object together with the aggregated targets. This object do the actual alignment calculations. Under the event Event.Behavior.Education education behavior is modelled with the manipulated probabilities.

Page 8 of 8 6. References Bækgaard, H. (2013): A Bayesian approach to labour market modeling in dynamic microsimulation, DREAM Conference Paper, December 2013. The paper can be downloaded from www.dreammodel.dk/smile Hansen, J. Z., Stephensen, P. & Kristensen, J. B. (2013): Household Formation and Housing Demand Forecasts, DREAM Report, December 2013. The report can be downloaded from www.dreammodel.dk/smile Hansen, J. Z. (2013): Modeling Household Formation and Housing Demand in Denmark using the Dynamic Microsimulation Model SMILE, DREAM Conference Paper, December 2013. The paper can be downloaded from www.dreammodel.dk/smile Lee, Ronald D. & Carter, Lawrence R. (1992): Modeling and Forecasting U.S. Mortality, Journal of the American Statistical Association, Vol. 87, No. 419, 659-671. Rasmussen, N. E. (2013): Conditional inference trees in dynamic microsimulation - modelling transition probabilities in the SMILE model, DREAM Conference Paper, December 2013. The paper can be downloaded from www.dreammodel.dk/smile Petzold, Charles (1998): Programming Windows. 5 th edition. Microsoft Press. 1479 pages.