|
1 | 1 | # The SimPathsModel Class |
2 | 2 |
|
3 | | -``_Under Construction_`` |
4 | | - |
5 | | -This page complements [4.05 - The Model and the Schedule] by explaining how SimPaths instantiates the generic JAS-mine scheduling framework in practice. It documents current SimPaths practice, not theory or design justification. It is not a complete specification of the model's behaviour, and should be read together with the codebase and validation documentation. |
| 3 | +This page complements **[4.05 - The Model and the Schedule]** by explaining how SimPaths instantiates the generic JAS-mine scheduling framework in practice. It documents current SimPaths practice, not theory or design justification. It is not a complete specification of the model's behaviour, and should be read together with the codebase and validation documentation. |
6 | 4 |
|
7 | 5 | ## 1. The SimPaths model manager |
8 | 6 |
|
9 | 7 | The core simulation logic in SimPaths is implemented in a model manager class that extends _AbstractSimulationManager_ and implements EventListener. |
10 | 8 |
|
11 | 9 | The SimPaths model class functions primarily as a coordinator of simulation structure. Its primary responsibilities are to initialise the population and global data structures, define the temporal structure of the simulation via schedules, and respond to aggregate-level events. |
12 | 10 |
|
13 | | -### **Model construction**: |
| 11 | +### Model construction |
14 | 12 |
|
15 | 13 | The **buildObjects()** method defines the initial simulation state before any time evolution takes place. |
| 14 | + |
16 | 15 | In SimPaths, this phase typically includes: |
17 | | -* Initialising random number generators, including the creation of separate random streams for different modules (e.g. matching, alignment, initialisation), to reduce unintended coupling between processes. |
18 | | -* Loading global parameters and projections for the simulation horizon. |
19 | | -* Preparing auxiliary infrastructures, such as indices for tax-benefit donor data. |
20 | | -* Creating the initial population by loading or constructing Person, BenefitUnit, and Household objects, including any required population expansion or preprocessing. |
21 | | -* Initialising internal state variables (e.g. the simulation year counter). |
22 | 16 |
|
23 | | -### Simulation execution schedule |
| 17 | +- Initialising random number generators, including the creation of separate random streams for different modules (e.g. matching, alignment, initialisation), to reduce unintended coupling between processes. |
| 18 | +- Loading global parameters and projections for the simulation horizon. |
| 19 | +- Preparing auxiliary infrastructures, such as indices for tax-benefit donor data. |
| 20 | +- Creating the initial population by loading or constructing `Person`, `BenefitUnit`, and `Household` objects, including any required population expansion or preprocessing. |
| 21 | +- Initialising internal state variables, such as the simulation year counter. |
| 22 | + |
| 23 | + |
| 24 | +### Simulation execution schedule: |
24 | 25 |
|
25 | 26 | The temporal structure of the simulation is defined in the **buildSchedule()** method. This method specifies the sequence of events that govern the evolution of the simulated population and determines how processes are executed over time. All model dynamics are implemented as events managed by the JAS-mine discrete-event simulation engine. |
26 | 27 |
|
|
0 commit comments