Probabilistic modeling and extreme-value analysis of traffic-induced bending moments in reinforced concrete culverts using Monte Carlo simulation and statistical tail fitting.
This project demonstrates how structural engineering problems can be solved using computational modeling, statistical inference, and scientific programming in Python.
The repository combines civil infrastructure reliability analysis with data-driven statistical modeling techniques.
Infrastructure such as culverts and bridges is subjected to highly variable traffic loads. While most vehicles produce moderate loads, rare heavy axle loads control structural safety.
This project models random axle loads from traffic data and estimates the mean maximum bending moment over a multi-year period using extreme-value theory.
The workflow includes:
- Modeling axle load distributions
- Generating bending-moment samples via Monte Carlo simulation
- Constructing a load spectrum using a normal probability plot
- Fitting the upper tail of the distribution
- Projecting extreme load effects over a long reference period
The analysis estimates the mean maximum bending moment over 5 years, assuming an average daily truck traffic (ADTT) of 5000.
The final estimate obtained from the provided dataset is approximately:
Mean maximum bending moment over 5 years ≈ 16.18 kip-ft
The load spectrum is a normal probability plot of the bending-moment samples. The upper 5% of the data is fitted with a straight line in normal-probability space; this linear fit is what drives the extreme-value projection. The fit is excellent (r² ≈ 0.996), reproducing Figure 1 of the problem statement.
traffic-load-extreme-value-analysis/
├── main.ipynb # Main notebook: load simulation (a) and extreme-value projection (b)
├── moment_samples.npz # Provided bending-moment samples (key: "moment_smps", 10,000 values)
├── ProblemStatement.pdf # Original problem statement and background
├── figures/ # Figures generated by the notebook
├── requirements.txt # Python dependencies
├── CITATION.cff # Citation metadata
├── LICENSE # MIT License
└── README.md # Project documentation
- Python 3.9+
- NumPy, SciPy, Matplotlib, Jupyter
git clone https://github.com/samirhosein/traffic-load-extreme-value-analysis.git
cd traffic-load-extreme-value-analysis
pip install -r requirements.txtjupyter notebook main.ipynbRun the cells from top to bottom. In part (a) the notebook prompts you to choose the
axle-load distribution model (lognormal, truncated lognormal, or Weibull); part (b) then
loads the provided samples in moment_samples.npz and performs the extreme-value projection.
Three probability models are tested for axle loads:
- Lognormal distribution
- Truncated lognormal distribution (limited by the legal axle-load limit)
- Weibull distribution
The Weibull distribution is estimated by solving for its shape and scale parameters using numerical root finding (scipy.optimize.brentq) so that the generated samples match the observed mean and standard deviation.
Random axle loads are generated according to the selected probability model, split between single and tandem axles by their observed frequencies. Loads are converted to bending moments using the design-axle scaling factors from the influence-line analysis (single axle: 32 kips → 8.5142 kip-ft; tandem: 50 kips → 10.4275 kip-ft). The resulting bending moments are combined into a simulated load spectrum.
The bending moments are used to build:
- a histogram of load effects,
- an empirical cumulative distribution function (CDF),
- a normal probability plot (the load spectrum).
The upper 5% of the data is extracted and fitted with linear regression in normal-probability space. This provides estimates of the event-level mean and standard deviation of the extreme load effects.
Using extreme-value theory (Gumbel approximation), the maximum load effect over a multi-year reference period is estimated. The number of loading events is:
N = ADTT × 365 × years
| Quantity | Value |
|---|---|
| Provided bending-moment samples | 10,000 |
| Upper-5% tail linear fit | r² ≈ 0.996 |
| Event-level mean, μ | 5.15 kip-ft |
| Event-level standard deviation, σ | 2.08 kip-ft |
| Number of events over 5 years (ADTT = 5000) | 9,125,000 |
| Gumbel mode, u_N | 15.97 kip-ft |
| Gumbel scale, α_N | 2.72 |
| Mean maximum bending moment over 5 years | 16.18 kip-ft |
- FHWA, 2003. Normal Probability Paper — Simple Methods for Evaluating the Normality of a Set of Data. Federal Highway Administration. Link
- Sivakumar, B., Ghosn, M., Moses, F., 2011. NCHRP Report 683 (Project 12-76): Protocols for Collecting and Using Traffic Data in Bridge Design. National Cooperative Highway Research Program, Washington, DC. (Statistical projection: pp. 23–24.)
If you use this project or its results, please cite it using the metadata in
CITATION.cff, or:
Moayyedi, A. Extreme Load Effect Projection for Culvert Structures. https://github.com/samirhosein/traffic-load-extreme-value-analysis
This project is licensed under the MIT License — see the LICENSE file for details.



