Attention

HELP WANTED
Please start by reading the guide to contributing to the Brightway documentation.

Warning

NEEDS WORK
It is either a rough draft or has been copied over from the legacy documentation.

# Stochastic LCA#

The various stochastic Monte Carlo LCA classes function almost the same as the static LCA, and reuse most of the code. The only change is that instead of building matrices once, random number generators from stats_arrays are instantiated directly from each parameter array. For each Monte Carlo iteration, the amount column is then overwritten with the output from the random number generator, and the system solved as normal. The code to do a new Monte Carlo iteration is quite succinct:

def next(self):
self.rebuild_technosphere_matrix(self.tech_rng.next())
self.rebuild_biosphere_matrix(self.bio_rng.next())
if self.lcia:
self.rebuild_characterization_matrix(self.cf_rng.next())

self.lci_calculation()

if self.lcia:
self.lcia_calculation()
return self.score
else:
return self.supply_array


This design is one of the most elegant parts of Brightway2.

Because there is a common procedure to build static and stochastic matrices, any matrix can easily support uncertainty, e.g. not just LCIA characterization factors, but also weighting, normalization, and anything else you can think of; see Defining a new Matrix - example of Weighting and Normalization matrices.