Skip to content

About

Monte Carlo simulator for a 19-cell hexagonal cellular network: frequency reuse, fractional power control, and uplink SIR/throughput analysis.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Cellular Network Monte Carlo Simulator

A Monte Carlo simulator of a 19-cell hexagonal cellular network, built to study how frequency reuse and fractional power control affect uplink Signal-to-Interference Ratio (SIR) and, ultimately, user throughput.

Final project for a Wireless Communications course.

What it does

The simulator models a classic 19-cell / 3-sector hexagonal grid (57 sectors) and estimates SIR distributions by running thousands of random snapshots.

For each snapshot:

  1. One user is placed uniformly at random within each of the 57 sectors.
  2. A path loss + log-normal shadow fading channel model computes the link gain between users and base stations.
  3. Directional (120°) sector antennas are modeled with an ideal gain pattern.
  4. Co-channel interferers are looked up from a precomputed reuse-pattern table.
  5. Uplink SIR is computed as desired signal power over the summed co-channel interference, optionally with fractional power control applied.

Project structure

src/                          # Reusable simulator components
├── cellular_layout.py        # Hexagonal grid geometry, BS placement, user placement
├── channel_model.py          # Path loss + log-normal shadow fading
├── frequency_reuse.py        # Reuse-pattern assignment (K=1/3/9) and co-channel tables
├── sir_calculator.py         # Directional antenna gain, power control, uplink SIR
└── statistics_display.py     # Aggregate statistics and CDF plotting

experiments/                  # One script per exercise
├── ex1_sir_by_reuse.py            # SIR vs. reuse factor
├── ex2_fractional_power_control.py # Optimizing the FPC exponent
├── ex3_pathloss_sensitivity.py     # Does optimal FPC depend on the environment?
└── ex4_throughput.py               # SIR -> spectral efficiency -> throughput

Running it

pip install -r requirements.txt
python experiments/ex1_sir_by_reuse.py

Each experiment is standalone. Note that Ex2 and Ex3 run 50,000 snapshots per beta value (Ex3 across three propagation environments as well), so they take considerably longer than Ex1 and Ex4.

Model parameters

Parameter Value Description
Path loss exponent (v) 3.8 (3.0 / 4.5 in Ex3) Typical for urban/suburban
Shadow fading std dev 8 dB Log-normal shadowing
Sector beamwidth 120° Ideal (rectangular) antenna pattern
Cells 19 1 center + 6 inner ring + 12 outer ring
Sectors per cell 3 57 sectors total
System bandwidth 100 MHz Split by reuse factor in Ex4
SNR gap 4 dB Implementation gap from Shannon capacity

Results

Ex1 — SIR by reuse factor (10,000 snapshots)

K 3rd %ile 20th %ile Median 80th %ile
1 -17.52 dB -6.46 dB 2.46 dB 12.51 dB
3 -7.91 dB 3.28 dB 12.60 dB 23.02 dB
9 2.98 dB 14.15 dB 24.21 dB 35.34 dB

Looser reuse buys a dramatically better SIR distribution — roughly 10 dB per step — at the cost of spectral efficiency.

Ex2 — Optimal fractional power control (K=3, 50,000 snapshots)

The optimal FPC exponent is beta = 0.525, achieving 96.58% of users at SIR >= -5 dB. Partial path loss compensation beats both extremes: too little and cell-edge users are starved, too much and they drown their neighbours in interference.

Ex3 — Sensitivity to the propagation environment

Re-optimizing beta independently for v = 3.0, 3.8, and 4.5 shows how the optimal power control setting shifts with the propagation environment. Run the script to reproduce the overlaid CDFs.

Ex4 — Throughput (10,000 snapshots)

K Mean throughput 97%-likely throughput
1 175.77 Mbit/s 1.03 Mbit/s
3 127.08 Mbit/s 3.02 Mbit/s
9 80.01 Mbit/s 8.96 Mbit/s

This inverts the Ex1 story. K=1 wins on mean throughput because every sector gets the full 100 MHz — but its 97%-likely throughput collapses to about 1 Mbit/s, meaning the worst-served users get almost nothing. K=9 sacrifices more than half the mean to give those same users nearly 9x better service. The "best" reuse factor therefore depends entirely on whether the operator is optimizing for average capacity or for cell-edge fairness.

(Values vary run to run due to random Monte Carlo sampling.)

About

Monte Carlo simulator for a 19-cell hexagonal cellular network: frequency reuse, fractional power control, and uplink SIR/throughput analysis.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages