Repast tutorial iv
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

RePast Tutorial IV PowerPoint PPT Presentation


  • 75 Views
  • Uploaded on
  • Presentation posted in: General

RePast Tutorial IV. 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. Probes.

Download Presentation

RePast Tutorial IV

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Repast tutorial iv

RePast Tutorial IV


Today s agenda

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


Probes

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)


How to create property descriptors

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


How to create property descriptors cont

How to create property descriptors (cont.)

  • Drop-down list:

publicvoid 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);

}

publicvoid setType(int type) {

this.type = type;

}


How to create property descriptors cont1

How to create property descriptors (cont.)

  • Numerical slider:

publicvoid setup() {

super.setup();

RangePropertyDescriptor d =

new RangePropertyDescriptor("NumAgents", 10, 100, 20);

descriptors.put("NumAgents", d);

}

publicvoid setNumAgents(int numAgents) {

this.numAgents = numAgents;

}


How to create custom actions

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


How to create custom actions cont

How to create custom actions (cont.)

  • modelManipulator.addButton("Clear Space",new ActionListener() {publicvoid actionPerformed(ActionEvent e){ space.clear(); }});

  • modelManipulator.addSlider("Slider", 0, 100, 10, new SliderListener());

  • modelManipulator.addCheckBox("Show/Hide",new CheckBoxListener(), false);

  • modelManipulator.addComponent(Component c);


Failed invasion of tft in alld world

Failed invasion of TFT in ALLD-World

ALLD:

ALLD

ALLD

ALLD

4+4+4+8

4

= 5.0

3

4

3

4

3

8

ALLD

TFT

ALLD

TFT:

3

4

3+3+3+3

4

= 3.0

ALLD

ALLD

ALLD


Successful invasion of two tft players in alld world

3

3

4

3

3

4

12

12

8

3

3

4

Successful invasion of two TFT players in ALLD-World

ALLD:

ALLD

ALLD

ALLD

ALLD

4+4+4+8

4

= 5.0

ALLD

TFT

TFT

ALLD

TFT:

3+3+3+12

4

= 5.25

ALLD

ALLD

ALLD

ALLD


Further spread of tft players in alld world

Further spread of TFT players in ALLD-World

ALLD

TFT

TFT

ALLD

TFT

TFT

TFT

TFT

ALLD

TFT

TFT

ALLD


Separating gui and batch modes

Separating GUI and batch modes

Model

extends

SimpleModel

GraphIPD,GridIPD

ExperIPD

ModelGUI

extends

Model

ModelBatch

extends

Model


Subclassing a batch model

Subclassing a batch model

class ModelBatchextends 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


How to use parameters

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

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


How to use parameters cont

How to use parameters (cont.)

  • Requires accessor methods:

publicvoid setup() {super.setup(); params = {"Variable", ...}}publicdouble getVariable() {returnvalue;}

publicvoid setVariable(doublevalue) {this.value = value;}

Setters only required to allow modification


How to use parameter files

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: 30incr: 10

}


How to use parameter files cont

Multiple parameters:

Nesting

How 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

}


How to use parameter files cont1

How 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_listdefine a space-separated list of values. A batch simulation will iterate through the list.


How to collect data

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)


How to collect data cont d

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);


How to collect data cont d1

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(“ “);


Typical output file

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


Replication results n 200

Replication results (N = 200)

Number of

TFT-dominated

runs

Initial number

of TFT players


  • Login