Skip to main content

Welcome to SimulationBank

SimulationBank is a comprehensive discrete event simulation (DES) platform designed to model and analyze bank queue operations. Built with Python (Flask) on the backend and React on the frontend, it provides real-time visualization and analytics for understanding customer flow, resource utilization, and service efficiency in banking environments.

What is SimulationBank?

SimulationBank simulates the dynamics of a bank branch where:
  • Customers arrive following a Poisson process with configurable arrival rates
  • Priority queuing ensures high-priority customers (elderly, pregnant) are served first
  • Tellers act as finite resources that serve customers with varying service times
  • Events drive the simulation: arrivals, service starts, and service completions
The simulation engine processes events chronologically, advancing a virtual clock and maintaining system state including queue contents, teller availability, and customer statuses.

Key Features

Discrete Event Simulation

Event-driven architecture using a priority queue (heap) for chronological event processing

Priority Queuing System

Three-tier priority system (High/Medium/Low) with FIFO within each priority level

Poisson Arrivals

Realistic customer generation using exponential inter-arrival times

Real-time Visualization

Live queue display showing customer priorities and teller states

Metrics Dashboard

Comprehensive analytics: wait times, throughput, saturation, queue length

Configurable Parameters

Tune arrival rates, service times, teller count, and priority distributions

Who is SimulationBank For?

Model queueing systems, validate theoretical models (M/M/c queues), and optimize resource allocation strategies.
Understand staffing requirements during peak hours, analyze the impact of priority service policies, and forecast service levels.
Learn discrete event simulation concepts, queueing theory, and stochastic processes through interactive visualization.
Explore event-driven architecture, domain-driven design patterns, and real-time data visualization techniques.

Use Cases

Capacity Planning

Determine the optimal number of tellers needed to maintain acceptable wait times during different times of day or seasonal peaks.

Policy Analysis

Evaluate the impact of priority queuing policies on overall customer satisfaction and wait time distributions across customer segments.

Performance Benchmarking

Establish baseline performance metrics and identify bottlenecks in customer service workflows.

What-If Scenarios

Simulate high-load conditions, teller breakdowns, or changes in customer arrival patterns to assess system resilience.

Architecture Overview

┌─────────────────────────────────────────────┐
│           Frontend (React + Vite)           │
│  ┌─────────────────┐  ┌─────────────────┐  │
│  │ Queue Visualizer│  │Metrics Dashboard│  │
│  └─────────────────┘  └─────────────────┘  │
└─────────────────┬───────────────────────────┘
                  │ REST API
┌─────────────────▼───────────────────────────┐
│          Backend (Flask + Python)           │
│  ┌──────────────────────────────────────┐  │
│  │  DiscreteEventSimulation Engine      │  │
│  │  - Event Queue (heapq)               │  │
│  │  - Teller Management                 │  │
│  │  - Priority Queue Sorting            │  │
│  │  - Poisson Customer Generator        │  │
│  └──────────────────────────────────────┘  │
└─────────────────────────────────────────────┘

Technology Stack

Backend:
  • Python 3.x
  • Flask (REST API)
  • flask-cors (cross-origin support)
  • heapq (priority queue implementation)
Frontend:
  • React 19.2.0
  • Vite 7.3.1 (build tool)
  • React Hooks (state management)
  • Real-time API polling

Core Concepts

Before diving in, familiarize yourself with these foundational concepts:

Getting Started

1

Install Dependencies

Set up both backend (Python/Flask) and frontend (Node.js/React) environments.See Installation Guide
2

Quick Start

Run your first simulation in under 5 minutes.See Quickstart Guide
3

Explore Features

Learn about the simulation engine, visualization, and metrics.Browse Features Documentation
SimulationBank uses a virtual clock that advances in discrete jumps between events. One second of real time does not equal one second of simulation time.

Next Steps

Quickstart

Run your first simulation

Installation

Detailed setup instructions

Concepts

Learn the fundamentals

Guides

Step-by-step tutorials

Build docs developers (and LLMs) love