Experiment
- class ambr.experiment.Experiment(model_type: Type[Model], sample: Sample, iterations: int = 1, record: bool = True)[source]
Bases:
objectContainer for running multiple model simulations.
- class ambr.experiment.IntRange(start: int, end: int)[source]
Bases:
objectRange of integer values for parameter sampling.
Semantics follow Python’s
range():startis inclusive,endis exclusive (i.e.IntRange(1, 10)yields values1..9).
- class ambr.experiment.Sample(parameters: Dict[str, Any], n: int)[source]
Bases:
objectContainer for parameter combinations.
The experiment module provides tools for running multiple model configurations and parameter sweeps.
Experiment Class
- class ambr.Experiment(model_type: Type[Model], sample: Sample, iterations: int = 1, record: bool = True)[source]
Bases:
objectContainer for running multiple model simulations.
Run multiple model configurations:
from ambr import Experiment, Sample, IntRange
# Define parameter variations
params = Sample({
'n_agents': IntRange(50, 200),
'steps': 100,
'seed': [1, 2, 3, 4, 5] # Multiple seeds for robustness
})
# Create and run experiment
experiment = Experiment(
model_class=MyModel,
parameters=params,
iterations=20 # Number of parameter combinations
)
results = experiment.run()
Sample Class
- class ambr.Sample(parameters: Dict[str, Any], n: int)[source]
Bases:
objectContainer for parameter combinations.
Parameter sampling for experiments:
# Sample with ranges and fixed values
sample = Sample({
'population': IntRange(100, 1000),
'mutation_rate': [0.01, 0.05, 0.1],
'selection_pressure': 0.8, # Fixed value
})
# Generate parameter combinations
for params in sample.generate(n=50):
model = MyModel(params)
results = model.run()
IntRange Class
- class ambr.IntRange(start: int, end: int)[source]
Bases:
objectRange of integer values for parameter sampling.
Semantics follow Python’s
range():startis inclusive,endis exclusive (i.e.IntRange(1, 10)yields values1..9).
Integer range specification:
# Define integer ranges
population_range = IntRange(50, 500) # 50 to 500 inclusive
# Use in parameter definitions
params = {
'n_agents': population_range,
'max_steps': IntRange(100, 1000)
}