biogeme.draws.native_draws module

Provides a suite of native random number generators for use in simulation-based estimation. Includes uniform, Halton, Latin Hypercube, and normal draws, with optional antithetic and symmetric variants.

Michel Bierlaire Thu Mar 27 09:46:17 2025

biogeme.draws.native_draws.MLHS_anti(sample_size, number_of_draws)[source]

Generate antithetic Modified Latin Hypercube Sampling draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

class biogeme.draws.native_draws.RandomNumberGeneratorTuple(generator, description)[source]

Bases: NamedTuple

Parameters:
  • generator (Callable[[int, int], ndarray])

  • description (str)

description: str

Alias for field number 1

classmethod from_tuple(the_tuple)[source]

Create a RandomNumberGeneratorTuple from a legacy tuple.

Parameters:

the_tuple (tuple[Callable[[int, int], ndarray], str]) – A tuple of (generator function, description).

Return type:

RandomNumberGeneratorTuple

Returns:

A RandomNumberGeneratorTuple instance.

generator: Callable[[int, int], ndarray]

Alias for field number 0

biogeme.draws.native_draws.convert_random_generator_tuple(the_tuple)[source]

Convert a random generator specification to a RandomNumberGeneratorTuple.

Parameters:

the_tuple (RandomNumberGeneratorTuple | tuple[Callable[[int, int], ndarray], str]) – Either an instance of RandomNumberGeneratorTuple or a legacy tuple.

Return type:

RandomNumberGeneratorTuple

Returns:

A properly typed RandomNumberGeneratorTuple.

biogeme.draws.native_draws.description_of_native_draws()[source]

Provides a dictionary of all native draw types and their descriptions.

Return type:

dict[str, str]

Returns:

Dictionary where keys are generator names and values are human-readable descriptions.

biogeme.draws.native_draws.halton2(sample_size, number_of_draws)[source]

Generate Halton draws with base 2.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.halton3(sample_size, number_of_draws)[source]

Generate Halton draws with base 3.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.halton5(sample_size, number_of_draws)[source]

Generate Halton draws with base 5.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_MLHS(sample_size, number_of_draws)[source]

Generate normal draws from Modified Latin Hypercube Sampling.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_MLHS_anti(sample_size, number_of_draws)[source]

Generate antithetic normal draws from Modified Latin Hypercube Sampling.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_antithetic(sample_size, number_of_draws)[source]

Generate antithetic normal random draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_halton2(sample_size, number_of_draws)[source]

Generate normal draws from Halton base 2 sequence.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_halton3(sample_size, number_of_draws)[source]

Generate normal draws from Halton base 3 sequence.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.normal_halton5(sample_size, number_of_draws)[source]

Generate normal draws from Halton base 5 sequence.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_MLHS(sample_size, number_of_draws)[source]

Generate symmetric Modified Latin Hypercube Sampling draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_MLHS_anti(sample_size, number_of_draws)[source]

Generate antithetic symmetric Modified Latin Hypercube Sampling draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_halton2(sample_size, number_of_draws)[source]

Generate symmetric Halton draws with base 2.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_halton3(sample_size, number_of_draws)[source]

Generate symmetric Halton draws with base 3.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_halton5(sample_size, number_of_draws)[source]

Generate symmetric Halton draws with base 5.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_uniform(sample_size, number_of_draws)[source]

Generate symmetric uniform random draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.symm_uniform_antithetic(sample_size, number_of_draws)[source]

Generate antithetic symmetric uniform random draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).

biogeme.draws.native_draws.uniform_antithetic(sample_size, number_of_draws)[source]

Generate antithetic uniform random draws.

Parameters:
  • sample_size (int) – Number of individuals or observations.

  • number_of_draws (int) – Number of draws per observation.

Return type:

ndarray

Returns:

A NumPy array of shape (sample_size, number_of_draws).