Skip to content

a-porche/binarybaddies

Repository files navigation

README Autonomous Rail Logistics System

A C++ command-line simulation of an autonomous train network for package delivery across Texas, featuring intelligent pathfinding, collision avoidance, and real-time logistics optimization. Overview This system simulates a fully automated rail network that operates 24/7 without human operators. It demonstrates how autonomous trains can efficiently deliver packages across a major Texas rail network while avoiding collisions and optimizing routes. Key Features Core Systems

  • Graph-based Rail Network: Models the Texas rail infrastructure with 10 major stations, 15 tracks, and 5 switches.
  • A Pathfinding Algorithm: Calculates optimal routes between any two stations using distance and speed heuristics
  • Multi-Train State Management: Tracks GPS position, status, cargo, and destination for each train in real-time
  • Collision Detection & Avoidance: Uses time-space conflict resolution to prevent collisions and dynamically reroute trains
  • Package Routing System: Intelligently assigns packages to trains and handles transfers when necessary
  • Switch Control with Manual Override: Automated switch management with ability to manually intervene Simulation Capabilities
  • Real-time text-based visualization of train movements
  • Performance metrics tracking (collision rate, delivery efficiency, runtime)
  • Multiple simulation modes (Quick Test, Standard Run, Heavy Load, Custom)
  • Autonomous operation with minimal human intervention Texas Rail Network The simulation includes these major Texas cities:
  • Houston Central
  • Dallas Fort Worth
  • San Antonio
  • Austin
  • El Paso
  • Corpus Christi
  • Fort Worth
  • Lubbock
  • Amarillo
  • Beaumont

Connected by 15 tracks with varying distances and speed limits. Menu Options

  1. Quick Test: 5 trains, 20 packages, 10 minutes - Quick demonstration
  2. Standard Run: 10 trains, 50 packages, 30 minutes - Typical workload
  3. Heavy Load: 20 trains, 100 packages, 60 minutes - Stress test
  4. Custom Simulation: Define your own parameters
  5. Exit: Close the simulation Output Information During simulation, you'll see:
  • Time: Current simulation time in minutes
  • Active Trains: Number of trains and their status (Moving, Idle, Loading, Waiting)
  • Packages in Transit: Total packages currently on trains
  • Packages Delivered: Delivery progress (delivered/total created)
  • Average Delivery Time: Mean time from package creation to delivery
  • Collision Rate: Number of collisions (should be 0)
  • Reroutes: Number of times trains were dynamically rerouted to avoid conflicts Success Criteria Based on the project requirements:
  • 0% Collision Rate: Collision avoidance system prevents all conflicts
  • High Delivery Efficiency: Optimized routing ensures efficient package delivery
  • 1200+ Minute Runtime: Supports extended simulation periods
  • Edge Case Handling: Manages track deactivation, rerouting, and capacity constraints Architecture Core Components
  • RailNetwork: Graph representation of stations, tracks, and switches
  • PathFinder: A* algorithm implementation for optimal route calculation
  • Train: State machine managing train movement, cargo, and status
  • Package: Package lifecycle management from origin to destination
  • CollisionAvoidance: Time-space reservation system preventing conflicts
  • Simulation: Main simulation engine coordinating all components Design Principles
  • Layered architecture separating concerns
  • Object-oriented design with clear interfaces
  • Efficient graph algorithms for pathfinding
  • Real-time conflict resolution
  • Scalable to handle multiple trains and packages Technical Details
  • Language: C++17 Future Enhancements
  • Weather disruption simulation
  • Priority-based package routing
  • Detailed logging with replay capability
  • Configurable network loader for different rail maps
  • Multi-objective optimization (speed, fuel, capacity)

About

Fall 25 CSCE 120.200 Project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages