Skip to content

TerminalSim is a high-performance C++ simulation server for basic modeling, optimizing, and analyzing container terminal operations and multimodal transport networks.

License

Notifications You must be signed in to change notification settings

VTTI-CSM/TerminalSim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TerminalSim
TerminalSim [Terminal Simulator]

License: GNU GPL v3 GitHub tag (latest by date) GitHub All Releases CLA Required CLA assistant

Download TerminalSim | Documentation

For questions or feedback, contact Ahmed Aredah or Prof. Hesham Rakha

TerminalSim is a server-side tool without a GUI, designed to operate in conjunction with CargoNetSim.

Overview

TerminalSim is a comprehensive C++ library for modeling and simulating container terminals and transportation networks. The project provides tools for researchers, logistics professionals, and developers to create realistic terminal models, optimize routing, and analyze container handling operations.

Key features include:

  • Terminal modeling with customizable parameters for capacity, dwell time, customs operations, and costs
  • Multi-modal transportation network modeling (truck, train, ship)
  • Path-finding algorithms for optimal container routing
  • Statistical distributions for realistic container dwell time simulation
  • RabbitMQ integration for microservices communication
  • Thread-safe operations for high-performance simulations

Table of Contents

Prerequisites

Before building TerminalSim, ensure you have the following installed:

  • C++17 compatible compiler (GCC 7+, Clang 5+, MSVC 2019+)
  • CMake 3.16 or higher
  • Qt 6.0 or higher
  • RabbitMQ-C library
  • Container library (see below)

Container Library

TerminalSim depends on the Container library, which you can download and install from: https://github.com/AhmedAredah/container

Follow the installation instructions in the Container repository before proceeding with TerminalSim.

Building from Source

Linux

# Clone the repository
git clone https://github.com/AhmedAredah/TerminalSim.git
cd TerminalSim

# Create build directory
mkdir build && cd build

# Configure with CMake
cmake .. -DCMAKE_BUILD_TYPE=Release

# Build
make -j$(nproc)

# Run tests (optional)
ctest

# Install
sudo make install

macOS

# Clone the repository
git clone https://github.com/AhmedAredah/TerminalSim.git
cd TerminalSim

# Create build directory
mkdir build && cd build

# Configure with CMake
cmake .. -DCMAKE_BUILD_TYPE=Release

# Build
make -j$(sysctl -n hw.ncpu)

# Run tests (optional)
ctest

# Install
sudo make install

Windows

Using PowerShell or Command Prompt with Visual Studio:

# Clone the repository
git clone https://github.com/AhmedAredah/TerminalSim.git
cd TerminalSim

# Create build directory
mkdir build
cd build

# Configure with CMake
cmake .. -G "Visual Studio 17 2022" -A x64

# Build
cmake --build . --config Release

# Run tests (optional)
ctest -C Release

# Install
cmake --install . --config Release

Using Windows with MinGW:

# Clone the repository
git clone https://github.com/AhmedAredah/TerminalSim.git
cd TerminalSim

# Create build directory
mkdir build
cd build

# Configure with CMake
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release

# Build
mingw32-make -j4

# Run tests (optional)
ctest

# Install
mingw32-make install

Installation

TerminalSim is designed to run as a background server process. After building, you can execute it to begin handling simulation commands sent by CargoNetSim.

Project Structure

terminalSim/
├── CMakeLists.txt                  # Main CMake file
├── src/                            # Source code directory
│   ├── common/                     # Common definitions and utilities
│   ├── dwell_time/                 # Container dwell time distributions
│   ├── terminal/                   # Terminal and graph implementation
│   ├── server/                     # RabbitMQ server integration
│   └── main.cpp                    # Application entry point
├── tests/                          # Test directory
├── examples/                       # Example applications
└── docs/                           # Documentation

Dependencies

  • Qt 6: Core, Concurrent, and Test modules
  • RabbitMQ-C: C client library for RabbitMQ
  • Container: Container management library (GitHub)

Future Development

This project provides a basic terminal representation framework. Future development aims to model the entire process of container terminals, including:

  • Advanced scheduling algorithms
  • Machine learning integration for predictive terminal operations
  • Visualization tools for terminal simulation
  • Real-time analytics and performance metrics

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.


© 2025 TerminalSim Project Contributors

About

TerminalSim is a high-performance C++ simulation server for basic modeling, optimizing, and analyzing container terminal operations and multimodal transport networks.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.5%
  • CMake 3.5%