biogeme.draws.factory module¶
Factory tools for managing random draw generation in Biogeme.
This module defines classes for encapsulating and orchestrating the creation of random draws used in simulation-based estimation.
It distinguishes between native and user-defined draw generators, validates inputs, and constructs a final tensor of draws with shape:
(sample_size, number_of_draws, number_of_variables)
Michel Bierlaire Wed Mar 26 19:30:36 2025
- class biogeme.draws.factory.DrawFactory(user_generators)[source]¶
Bases:
objectManages native and user-defined random draw generators and builds draw specifications and arrays for multiple variables.
This class is useful for transforming a mapping of variable names and draw types into a single array of random numbers ready for use in simulation-based estimation.
- Parameters:
user_generators (dict[str, RandomNumberGeneratorTuple] | None)
- generate_draws(draw_types, variable_names, sample_size, number_of_draws)[source]¶
Generates a 3D NumPy array of draws for all specified variables.
- Parameters:
draw_types (
dict[str,str]) – Mapping from variable name to draw type.variable_names (
list[str]) – Ordered list of variable names.sample_size (
int) – Number of observations in the sample.number_of_draws (
int) – Number of Monte Carlo draws per observation.
- Return type:
ndarray- Returns:
A NumPy array of shape (sample_size, number_of_draws, len(variable_names)).
- Raises:
BiogemeError – if any generator returns a mis-shaped array.
- get_generator(draw_type, name)[source]¶
Retrieves a draw generator function based on the requested type.
- Parameters:
draw_type (
str) – Type identifier of the draw (e.g., ‘UNIFORM’, ‘HALTON’).name (
str) – Variable name (used for error context).
- Return type:
Callable[[int,int],ndarray]- Returns:
A function that generates a NumPy array of draws.
- Raises:
BiogemeError – if the draw type is not recognized.
- make_draw_specs(draw_types, variable_names)[source]¶
Generates a list of DrawSpec objects for each variable.
- Parameters:
draw_types (
dict[str,str]) – Mapping from variable name to draw type.variable_names (
list[str]) – List of variable names requiring simulated draws.
- Return type:
list[DrawSpec]- Returns:
List of fully constructed DrawSpec objects.
- class biogeme.draws.factory.DrawSpec(name, draw_type, generator)[source]¶
Bases:
objectEncapsulates the configuration for generating draws for a specific variable.
- Parameters:
name (
str) – Name of the variable that requires simulated draws.draw_type (
str) – Identifier for the type of draw (native or user-defined).generator (
Callable[[int,int],ndarray]) – A callable that takes (sample_size, number_of_draws) and returns a NumPy array of draws.
-
draw_type:
str¶
-
generator:
Callable[[int,int],ndarray]¶
-
name:
str¶