Title: RePast Tutorial V
1RePast Tutorial V
2Invitation
- Einführungsvorlesung
- Agent-Based Models of Geopolitical Processes
- Thursday, June 10, 2004, 1715
- ETH Zentrum, HG, Auditorium maximum
- Apéro follows
3Todays 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
4Probes
- 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)
5How 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
6How to create property descriptors (cont.)
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
7How to create property descriptors (cont.)
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
8How 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
9How 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)
10Failed invasion of TFT in ALLD-World
ALLD
ALLD
ALLD
ALLD
4448 4
5.0
3
4
3
3
4
8
ALLD
TFT
ALLD
TFT
3
4
3333 4
3.0
ALLD
ALLD
ALLD
11Successful invasion of two TFT players in
ALLD-World
ALLD
ALLD
ALLD
ALLD
ALLD
4448 4
5.0
ALLD
TFT
TFT
ALLD
TFT
33312 4
5.25
ALLD
ALLD
ALLD
ALLD
12Further spread of TFT players in ALLD-World
ALLD
TFT
TFT
ALLD
TFT
TFT
TFT
TFT
ALLD
TFT
TFT
ALLD
13Separating GUI and batch modes
Model extends SimpleModel
ExperIPD
GraphIPD,GridIPD
ModelGUI extends Model
ModelBatch extends Model
14Working in batch mode
Batch Model
Parameter File
Data File
Replication Runs
Statistics Package
- Batch mode allows the user to rerun the model
without using the GUI
15Subclassing a batch model
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)
class Model extends SimpleModel model
variables setup() buildModel() step()
main()
Batch mode
Parameter file
16How 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"
17How 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
18How 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
19How to use parameter files (cont.)
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
20How to use parameter files (cont.)
- Additional keywords
- setdefines a single numerical value as a
constant for the entire collection of batch runs. - set_booleandefines a boolean value (true /
false). - set_stringdefines 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.
21How 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)
22How to collect data (contd)
- 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,compu
teX) - The output can be formatted with x number of
digits before the decimal point, and y after - createNumericaDataSource(X,this,computeX,x,y
) -
23How to collect data (contd)
- 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( )
24Typical output file
- Timestamp May 31, 2004 60901 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
25Replication results (N 200)
Number of TFT-dominated runs
Initial number of TFT players