The SimulationConfig dataclass (backend/src/simulation/domain/simulation_config.py:6) defines all configurable parameters:
@dataclassclass SimulationConfig: num_tellers: int = 3 # Number of teller windows arrival_config: Dict[str, Any] = field(default_factory=lambda: { "arrival_rate": 1.0, # λ (lambda): customers per second "arrival_dist": "exponential", # Distribution type "priority_weights": [0.1, 0.3, 0.6] # [HIGH, MEDIUM, LOW] probabilities }) service_config: Dict[str, Any] = field(default_factory=lambda: { "service_mean": 5.0, # μ (mu): average service time (seconds) "service_dist": "exponential", # Distribution type "service_stddev": 1.0 # Only used for normal distribution }) max_simulation_time: float = 8.0 * 3600 # 8 hours in seconds max_queue_capacity: int = 100 # Maximum waiting queue size
SimulationBank requires Python 3.7+. Check your version:
python3 --version
If you have multiple Python versions, use:
python3.9 -m venv venv # Use specific version
pip install fails with permission error
Use a virtual environment (recommended) or install with --user:
pip install --user -r requirements.txt
npm install fails with EACCES
Fix npm permissions:
# Option 1: Use nvm (recommended)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bashnvm install node# Option 2: Fix global directorymkdir ~/.npm-globalnpm config set prefix '~/.npm-global'export PATH=~/.npm-global/bin:$PATH
Port 5000 already in use
macOS Monterey and later uses port 5000 for AirPlay. Either:Option 1: Disable AirPlay Receiver in System PreferencesOption 2: Change Flask port in app.py:
if __name__ == '__main__': app.run(debug=True, port=5001) # Use different port
CORS errors in browser console
Ensure flask-cors is installed:
pip install flask-cors
Verify it’s initialized in app.py:
from flask_cors import CORSapp = Flask(__name__)CORS(app) # Enable CORS for all routes
Module import errors in backend
Ensure you’re in the correct directory and virtual environment:
cd backendsource venv/bin/activatepython -c "import src.simulation.domain.simulation"
If imports fail, check that src/ is in your Python path.