RePast Tutorial IV Prof. Lars-Erik Cederman Center for Comparative - - PowerPoint PPT Presentation

repast tutorial iv
SMART_READER_LITE
LIVE PREVIEW

RePast Tutorial IV Prof. Lars-Erik Cederman Center for Comparative - - PowerPoint PPT Presentation

Introduction to Computational Modeling of Social Systems RePast Tutorial IV Prof. Lars-Erik Cederman Center for Comparative and International Studies (CIS) Seilergraben 49, Room G.2, lcederman@ethz.ch Nils Weidmann, CIS Room E.3,


slide-1
SLIDE 1

Introduction to Computational Modeling of Social Systems

  • Prof. Lars-Erik Cederman

Center for Comparative and International Studies (CIS) Seilergraben 49, Room G.2, lcederman@ethz.ch Nils Weidmann, CIS Room E.3, weidmann@icr.gess.ethz.ch http://www.icr.ethz.ch/teaching/compmodels Lecture, January 11, 2005

RePast Tutorial IV

slide-2
SLIDE 2

2

Today’s agenda

  • More on the GUI mode…

– Probes – How to create property descriptors – How to create custom actions

  • Introducing the batch mode

– How to use parameters and parameter files – How to collect data

  • ExperIPD
slide-3
SLIDE 3

3

Probes

  • Probes allow the user to

view and manipulate single agents

  • Require the display surface

to be “probeable”

  • Variables become available

through introspection using the get-set-methods (with set-methods necessary for changes)

slide-4
SLIDE 4

4

How to create property descriptors

  • To adjust parameters at

startup or when the simulation is paused

  • Can be applied to both

models and agents

  • Setup through the pre-

defined descriptors variable of SimpleModel

slide-5
SLIDE 5

5

How to create property descriptors (cont.)

  • Drop-down list:

public void setup() { super.setup(); Hashtable h1 = new Hashtable(); h1.put(new Integer(0), "Von Neumann"); h1.put(new Integer(1), "Moore"); ListPropertyDescriptor pd = new ListPropertyDescriptor("Type", h1); descriptors.put("Type", pd); } public void setType(int type) { this.type = type; }

slide-6
SLIDE 6

6

How to create property descriptors (cont.)

  • Numerical slider:

public void setup() { super.setup(); RangePropertyDescriptor d = new RangePropertyDescriptor("NumAgents", 10, 100, 20); descriptors.put("NumAgents", d); } public void setNumAgents(int numAgents) { this.numAgents = numAgents; }

slide-7
SLIDE 7

7

How to create custom actions

  • Modify the simulation

while it is running

  • Setup through

modelManipulator

variable of SimpleModel

  • Works for buttons, check

boxes, sliders, and arbitrary Java components

slide-8
SLIDE 8

8

How to create custom actions (cont.)

  • modelManipulator.addButton("Clear Space",

new ActionListener() { public void actionPerformed(ActionEvent e){ space.clear(); } });

  • modelManipulator.addSlider("Slider",

0, 100, 10, new SliderListener());

  • modelManipulator.addCheckBox("Show/Hide",

new CheckBoxListener(), false);

  • modelManipulator.addComponent(Component c);
slide-9
SLIDE 9

9

Failed invasion of TFT in ALLD-World

ALLD:

ALLD ALLD ALLD ALLD ALLD TFT ALLD ALLD ALLD

3 3 3 8 4 4

4+4+4+8 4 = 5.0 TFT:

3 4

3+3+3+3 4 = 3.0

slide-10
SLIDE 10

10

Successful invasion of two TFT players in ALLD-World

ALLD:

ALLD ALLD ALLD ALLD

4+4+4+8 4 = 5.0

ALLD TFT ALLD ALLD TFT ALLD ALLD ALLD

3 3 3 12 12 3 3 3 8 4 4 4

TFT: 3+3+3+12 4 = 5.25

slide-11
SLIDE 11

11

Further spread of TFT players in ALLD- World

ALLD TFT TFT ALLD TFT TFT TFT TFT ALLD TFT TFT ALLD

slide-12
SLIDE 12

12

Separating GUI and batch modes

Model extends SimpleModel

ExperIPD GraphIPD,GridIPD

ModelGUI extends Model ModelBatch extends Model

slide-13
SLIDE 13

13

Subclassing a batch model

class Model extends SimpleModel { model variables setup() buildModel() step() main() } class ModelBatch extends Model{ Batch variables (data recorder) setup() { super.setup(); params = ... } buildModel() { super.buildModel(); create data recorder } step() { super.step(); record data } main() { init.loadModel(m, "params.txt", true); } }

Parameter file Batch mode

slide-14
SLIDE 14

14

How to use parameters

  • Different purpose depending on context:

– Batch mode: allow variables to be changed through parameter files – GUI mode: show the variables in the control panel

public void setup() { super.setup(); params = {"NumPlayers", "PALLC", "PTFT", "PATFT", "PALLD", "PAdapt"}; }

slide-15
SLIDE 15

15

How to use parameters (cont.)

  • Requires accessor methods:

public void setup() { super.setup(); params = {"Variable", ...} } public double getVariable() { return value; } public void setVariable(double value) { this.value = value; } Setters only required to allow modification

slide-16
SLIDE 16

16

How to use parameter files

  • Different effects depending on context:

– GUI mode: set initial values – Batch mode: allow to run sweeps

  • Usually defined in a file named params.txt
  • Runs the simulation with values of 10, 20,

and 30:

runs: 1 Variable { start: 10 end: 30 incr: 10 }

slide-17
SLIDE 17

17

How to use parameter files (cont.)

  • Multiple parameters:
  • Nesting

runs: 1 Food { start: 10 end: 30 incr: 10 { runs: 10 MaxAge { start: 0 end: 40 incr: 1 } } } runs: 10 Food { start: 10 end: 30 incr: 10 } MaxAge { start: 10 end: 30 incr: 10 }

slide-18
SLIDE 18

18

How to use parameter files (cont.)

  • Additional keywords:

– set

defines a single numerical value as a constant for the entire collection of batch runs.

– set_boolean

defines a boolean value (true / false).

– set_string

defines a string value (without any white space).

– set_list,set_boolean_list, set_string_list

define a space-separated list of values. A batch simulation will iterate through the list.

slide-19
SLIDE 19

19

How to collect data

  • Recording of simulation states to:

– archive simulation runs – further process the data into third-party packages (e.g. Excel, Stata, SPSS, SAS, ...)

  • Output format: Text files (comma, space or

tab delimited)

slide-20
SLIDE 20

20

How to collect data (cont’d)

  • Prepare for the measurements in buildModel()
  • Determine the duration of the simulations:

setStoppingTime(n);

  • Create the data recorder with output to file

data.txt:

recorder = new DataRecorder(“./data.txt”,this);

  • Add numeric streams using introspection:

recorder.createNumericaDataSource(“X”,this,”computeX”);

  • The output can be formatted with x number of

digits before the decimal point, and y after

…createNumericaDataSource(“X”,this,”computeX”,x,y);

slide-21
SLIDE 21

21

How to collect data (cont’d)

  • Using introspection requires a method delivering

the values

  • It is also possible to use inner classes (see the

Repast How-To Documentation)

  • The data recorder has to be told to record and to

write the data to file:

recorder.record(); recorder.writeToFile();

  • The user can change the data delimiter:

recorder.setDelimiter(“ “);

slide-22
SLIDE 22

22

Typical output file

Timestamp: May 31, 2004 6:09:01 PM Neighborhood: 0 NumOfTimeSteps: 200 PALLC: 0.25 PALLD: 0.25 PATFT: 0.25 PAdapt: 0.2 PTFT: 0.25 WorldSize: 16 "run" "tick" "Topology" "RngSeed" "ALLC" "TFT" "ATFT" "ALLD" "Payoff" 1 200.0 0 1 0.0 256.0 0.0 0.0 3.0000 2 200.0 0 2 0.0 256.0 0.0 0.0 3.0000 3 200.0 0 3 0.0 256.0 0.0 0.0 3.0000 4 200.0 0 4 0.0 256.0 0.0 0.0 3.0000 … 59 200.0 2 19 0.0 0.0 0.0 256.0 1.0000 60 200.0 2 20 0.0 0.0 0.0 256.0 1.0000 End Time: May 31, 2004 6:09:16 PM

slide-23
SLIDE 23

23

Replication results (N = 200)

60 20 40

Number of TFT-dominated runs Initial number

  • f TFT players