System dynamics¶
6 of the bundled models. The numbers are from a run made when this page was generated: see how.
Bass diffusion¶
Frank Bass's new-product adoption model: one stock (cumulative Adopters) and one flow, (p + q*Adopters/m) * (m - Adopters) -- innovators (rate p) plus imitators (rate q, proportional to the fraction already adopted). Needs simulation.sd (Run > Run experiment (SD step and method)).
naga run sd_bass_diffusion
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/bass_diffusion_1/SD Adopters/Average |
834 |
Inventory with lead time¶
A stock replenished through a lead time: orders are placed at the (constant) demand rate, arrive DELAY3(demand_rate, lead_time) later (a third-order material delay -- an S-shaped, not instant, response), and are consumed at the demand rate. "SD On Order" is the pipeline itself (orders placed but not yet arrived); by Little's law it settles at demand_rate x lead_time. Needs simulation.sd.
naga run sd_inventory_delay3
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/inventory_delay3_1/SD Inventory/Average |
101 | |
level/inventory_delay3_1/SD On Order/Average |
49.2 |
Population (logistic)¶
The textbook logistic-growth stock and flow: one level (Population) fed by one flow whose rate reads the level itself, r * P * (1 - P/K), so growth slows as the population nears its carrying capacity. Needs the system-dynamics grid (simulation.sd) to integrate -- placing this asset does not set it for you (Run > Run experiment (SD step and method)), because a model may mix this with entities that need no grid at all.
naga run sd_population
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/population_1/SD Population/Average |
540 |
SIR epidemic¶
The classic Susceptible-Infected-Recovered compartmental model as three stocks and two flows: infection moves people from Susceptible to Infected at betaSI/population, recovery moves them from Infected to Recovered at gamma*I. Needs simulation.sd (Run > Run experiment (SD step and method)): the infection rate reads both stocks it moves between, so it must be re-integrated on the grid.
naga run sd_sir
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/sir_1/SD Infected/Average |
122 | |
level/sir_1/SD Susceptible/Average |
304 | |
level/sir_1/SD Recovered/Average |
575 |
Training pipeline with attrition¶
A Stella conveyor as a hiring pipeline: Applicants are admitted into a 12-week Training conveyor, capped by the school's own capacity and by a goal-seeking hiring rule ((staff_goal - in-pipeline headcount) / adj_time); about 15% leak out as dropouts along the way (linear leakage), the rest graduate onto Staff, which loses a small fraction to attrition every week. Needs simulation.sd on method "euler" (Stella's slat model moves one slat per DT). In the results, read Staff, Training against Staff over time and cumulative dropouts; "Hiring target (staff goal)" can be changed during a run.
naga run sd_training_pipeline
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/Applicants/Average |
187 | |
level/Training/Average |
27.9 | |
level/Staff/Average |
75.6 |
Workforce (goal-seeking)¶
Headcount that hires (or attrits) toward a target at a fixed adjustment rate -- the textbook first-order goal-seeking structure, (target - Workforce) / adjustment_time -- an exact exponential approach to the target. "SD Reported Workforce" is a DELAY1-smoothed reading of the headcount (a reported figure that lags the real one, e.g. because payroll reports it monthly); it does not feed back into hiring. Needs simulation.sd.
naga run sd_workforce_delay1
1 replication, seed 0:
| KPI | Mean | 95% half-width |
|---|---|---|
level/workforce_delay1_1/SD Workforce/Average |
80.4 |