CargoOptix: Automated Ship Load Balancing System by JAYESH NIKAMCargoOptix: Automated Ship Load Balancing System by JAYESH NIKAM

CargoOptix: Automated Ship Load Balancing System

JAYESH NIKAM

JAYESH NIKAM

๐Ÿšข CargoOptix

Automated Ship Load Balancing System
AI-Driven Maritime Container Optimization with Real-Time Stability Validation

๐Ÿง  Tech Stack: Python โ€ข NumPy โ€ข Pandas โ€ข Matplotlib โ€ข Py3DBC (Custom Library) โ€ข Constraint Optimization โ€ข Maritime Physics

๐Ÿ“‹ Overview

CargoOptix is an intelligent cargo placement system designed to optimize container loading on feeder ships while ensuring maritime safety compliance. The system combines constraint-based optimization with naval architecture physics to generate safe, efficient loading plans that maximize space utilization while maintaining ship stability.

The Problem We Solve

Traditional maritime cargo operations face critical challenges:
โŒ Manual planning takes 2-3 hours per ship
โŒ Suboptimal space utilization (60-70%)
โŒ Risk of stability violations and capsizing
โŒ No real-time constraint validation
โŒ Human error in hazmat separation and weight distribution

Our Solution

โœ… 91% placement success rate with automated optimization
โœ… 84% slot utilization - significantly higher than manual methods
โœ… Real-time stability validation ensuring GM > safety threshold
โœ… Constraint enforcement for hazmat, reefer, and weight limits
โœ… Minutes instead of hours for complete loading plans

โœจ Features

๐ŸŽฏ Core Capabilities

Feature
Description
๐Ÿงฎ Physics-Based Validation
Real-time metacentric height (GM) calculations ensuring ship stability
โš ๏ธ Hazmat Separation
Enforces minimum 3-position distance between dangerous goods
โ„๏ธ Reefer Management
Allocates refrigerated containers to powered slots only
โš–๏ธ Weight Distribution
Tier-based weight limits with heavy containers in lower positions
๐Ÿ“Š Multi-Strategy Optimization
Heavy-first, priority-based, and hazmat-first placement strategies
๐Ÿ“ˆ Performance Analytics
Detailed metrics on utilization, stability margins, and constraint satisfaction

๐Ÿ”ฌ Technical Innovation

py3dbc Library - Our contribution to open-source maritime logistics:
Extends py3dbp with maritime domain expertise
First library combining 3D bin packing with ship stability physics
Discrete bay/row/tier slot structure matching real ship geometry
Constraint validation framework for maritime regulations

๐ŸŽฌ Demo

Input

Container Manifest (CSV): - 632 containers (general, reefer, hazmat) - Varied weights (4-30 tonnes) - Mixed sizes (20ft, 40ft) Ship Specifications: - 7 bays ร— 14 rows ร— 7 tiers = 686 slots - Deadweight: 13,500 tonnes - GM minimum: 0.3m

Output

โœ… Placement Performance: - 576/632 containers placed (91.14%) - 762 TEU loaded - 83.97% slot utilization โœ… Stability Analysis: - GM: 1.273m (4.2ร— minimum requirement) - KG: 7.427m - Status: STABLE โœ“ - Margin: 0.973m above threshold โœ… Constraints Satisfied: - All hazmat separated by 3+ positions - 41 reefers in powered slots - Weight limits enforced per tier

๐Ÿš€ Installation

Prerequisites

# Python 3.8 or higher required python --version # Required packages pip install pandas numpy py3dbp

Clone Repository

git clone https://github.com/SarthSatpute/cargooptix.git cd cargooptix pip install -r requirements.txt

Project Structure

cargooptix/ โ”œโ”€โ”€ py3dbc/ # Maritime optimization library โ”‚ โ”œโ”€โ”€ maritime/ โ”‚ โ”‚ โ”œโ”€โ”€ container.py # Container classes with cargo types โ”‚ โ”‚ โ”œโ”€โ”€ ship.py # Ship structure and slot management โ”‚ โ”‚ โ”œโ”€โ”€ constraints.py # Maritime rule enforcement โ”‚ โ”‚ โ””โ”€โ”€ packer.py # Optimization algorithm โ”‚ โ””โ”€โ”€ physics/ โ”‚ โ””โ”€โ”€ stability.py # GM/KG calculations โ”œโ”€โ”€ data/ โ”‚ โ”œโ”€โ”€ generate_datasets.py # Synthetic data generation โ”‚ โ””โ”€โ”€ *.csv # Generated scenarios โ”œโ”€โ”€ load_scenario.py # Run optimization on CSV data โ”œโ”€โ”€ example_py3dbc.py # Usage examples โ””โ”€โ”€ README.md

๐Ÿ’ป Usage

Basic Example

from py3dbc.maritime.container import MaritimeContainer from py3dbc.maritime.ship import ContainerShip from py3dbc.maritime.packer import MaritimePacker # Initialize ship stability_params = { 'kg_lightship': 6.5, 'lightship_weight': 3500, 'kb': 4.2, 'bm': 4.5, 'gm_min': 0.3 } ship = ContainerShip( ship_name='FEEDER_01', dimensions=(130, 20, 18), bays=7, rows=14, tiers=7, stability_params=stability_params, max_weight=13500 ) # Create containers containers = [\ MaritimeContainer('GEN001', '20ft', 'general', 22.5, (6.06, 2.44, 2.59)),\ MaritimeContainer('REF001', '20ft', 'reefer', 18.0, (6.06, 2.44, 2.59)),\ MaritimeContainer('HAZ001', '20ft', 'hazmat', 14.5, (6.06, 2.44, 2.59))\ ] # Optimize packer = MaritimePacker(ship, gm_threshold=0.3, hazmat_separation=3) result = packer.pack(containers, strategy='heavy_first') print(f"Success: {result['success']}") print(f"Placement rate: {result['metrics']['placement_rate']}%") print(f"GM: {result['metrics']['gm']}m")

Load from CSV

from load_scenario import optimize_scenario # Run optimization on scenario from generated data result = optimize_scenario(scenario_id=1)

Generate Synthetic Data

python data/generate_datasets.py
Generates:
ship_specifications.csv - Ship parameters
container_manifests.csv - 20 scenarios with 600+ containers each
scenario_metadata.csv - Scenario requirements

๐Ÿ—๏ธ Architecture

System Design

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Input: Container Manifest โ”‚ โ”‚ (CSV with dimensions, weights, cargo types) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ MaritimePacker (Optimizer) โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 1. Sort containers (heavy_first) โ”‚ โ”‚ โ”‚ โ”‚ 2. For each container: โ”‚ โ”‚ โ”‚ โ”‚ - Find available slots โ”‚ โ”‚ โ”‚ โ”‚ - Check constraints โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ - Simulate stability โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ - Score valid slots โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ - Place in best slot โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Constraint โ”‚ โ”‚ Stability โ”‚ โ”‚ Checker โ”‚ โ”‚ Calculator โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Weight โ”‚ โ”‚ โ€ข KG = ฮฃ(wร—h)/ฮฃw โ”‚ โ”‚ โ€ข Hazmat โ”‚ โ”‚ โ€ข GM = KB+BM-KG โ”‚ โ”‚ โ€ข Reefer โ”‚ โ”‚ โ€ข Check GMโ‰ฅmin โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Output: Optimized Loading Plan โ”‚ โ”‚ โ€ข Container-to-slot assignments โ”‚ โ”‚ โ€ข Stability metrics (GM, KG) โ”‚ โ”‚ โ€ข Utilization statistics โ”‚ โ”‚ โ€ข Constraint violations (if any) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Algorithms

Greedy Placement with Constraint Validation:
Sort containers by strategy (weight/priority/hazmat)
For each container, evaluate all available slots
Filter slots that satisfy constraints (weight, reefer, hazmat)
Simulate stability for each valid slot
Score slots based on tier preference, stability margin, centerline proximity
Place container in highest-scoring valid slot
Update ship state and continue
Stability Calculation:
KG = (lightship_weight ร— kg_lightship + ฮฃ(container_weight ร— z_position)) / total_weight GM = KB + BM - KG Where: - KB: Center of buoyancy (4.2m) - BM: Metacentric radius (4.5m) - KG: Center of gravity (calculated)

๐Ÿ“Š Results

Performance Metrics

Metric
Value
Industry Standard
Placement Success Rate
91.14%
85-90%
Slot Utilization
83.97%
60-75%
Stability Margin
+0.973m
+0.1 to +0.3m
Processing Time
<2 minutes
2-3 hours (manual)

Scenario Analysis (20 Test Cases)

Average placement rate: 91.2%
All scenarios maintained GM > 0.3m (100% stability success)
Reefer constraints: Primary cause of failed placements (powered slot shortage)
Hazmat separation: Successfully enforced in all cases

Why 9% Fail?

Failed placements occur due to:
Reefer power shortage - Only 14% of slots have power
Hazmat separation conflicts - 3-position minimum distance
High utilization - Limited valid slots at 80%+ capacity
This is realistic and matches commercial system performance.

๐Ÿ› ๏ธ Technologies Used

Category
Technologies
Core
Python 3.8+, NumPy, Pandas
Optimization
py3dbp (extended), Custom constraint solver
Physics
Naval architecture formulas (GM calculations)
Data Generation
Synthetic scenario generator with realistic distributions
Version Control
Git, GitHub

Learning Outcomes

Applied constraint satisfaction in real-world optimization
Integrated domain-specific physics (naval architecture)
Extended open-source library with specialized features
Developed end-to-end system from data generation to optimization
Demonstrated software engineering practices (OOP, modular design)

๐Ÿ“š Documentation

API Reference - Complete function documentation
Algorithm Details - Mathematical formulations
Constraint Specifications - Maritime rules
Examples - Usage tutorials and test cases

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Areas for enhancement:
Genetic algorithm implementation for comparison
Multi-port discharge sequence optimization
Crane scheduling integration
Real-time visualization (3D rendering)
Machine learning for slot prediction

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Built on py3dbp by jerry800416
Naval architecture formulas from standard maritime engineering texts
Inspired by real-world port operation challenges

โญ Star this repository if you find it useful!

Like this project

Posted May 28, 2026

AI-driven maritime container optimization system for ship load balancing