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.
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
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)
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.
# 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
# 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
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
TerminalSim is designed to run as a background server process. After building, you can execute it to begin handling simulation commands sent by CargoNetSim.
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
- Qt 6: Core, Concurrent, and Test modules
- RabbitMQ-C: C client library for RabbitMQ
- Container: Container management library (GitHub)
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
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
© 2025 TerminalSim Project Contributors