ADSLD: A General Framework for Solving Large-Scale Linear Programming Problems in Multi-Order Fulfillment Scenarios
Welcome to the ADSLD repository! This project introduces a groundbreaking framework for efficiently solving large-scale linear programming problems in multi-order fulfillment scenarios, leveraging Lagrangian Relaxation, duality principles, and arbitrary decomposition.
This repository provides an implementation of the Arbitrary Decomposition Supergradient Method Based on Lagrangian Relaxation and Duality (ADSLD). With the rapid growth of e-commerce, businesses face unprecedented challenges in processing millions of orders daily while managing fulfillment for diverse products efficiently.
ADSLD Framework Highlights:
- Decomposes complex optimization problems into manageable subproblems.
- Efficiently utilizes computational resources through decomposition and duality.
- Scales seamlessly to meet the demands of large-scale operations.
- Generalizes existing methods (e.g., CDSL), enabling enhanced performance.
The framework is specifically designed to overcome the limitations of traditional optimization methods in dynamic, large-scale fulfillment scenarios by:
- Reducing computational complexity.
- Dynamically adapting to real-world constraints.
- Supporting batch processing for efficient parallelization.
-
Lagrangian Relaxation
Simplifies constraints with Lagrangian multipliers to transform complex optimization into smaller subproblems. -
Duality Principles
Leverages dual optimization for improved computational efficiency. -
Arbitrary Decomposition
Enables custom decomposition strategies to balance trade-offs between time and space. -
Scalable Design
Supports real-world fulfillment scenarios involving millions of variables and constraints.
- Batch Processing: Processes subproblems in manageable batches, reducing memory overhead.
- Iterative Refinement: Improves solution quality through supergradient-based Lagrangian multiplier updates.
- Versatile Applications: Applicable across industries requiring large-scale linear programming, such as logistics, supply chain, and e-commerce.
The code implementation is modular, making it easy to adapt or extend. Below are the primary components:
Simulates realistic fulfillment scenarios with:
- Randomized cost vectors, constraints, and matrices.
- Flexible configurations for problem scale (number of items, methods, facilities, etc.).
Uses the CPLEX solver and Pulp library for linear programming:
- Models the primary objective function (e.g., minimizing costs).
- Defines constraints (e.g., inventory, order fulfillment).
Iteratively updates Lagrangian multipliers to:
- Handle relaxed constraints.
- Improve solution feasibility and quality.
Assesses:
- Convergence behavior.
- Solution quality (objective value).
- Scalability (execution time and resource usage).
Before running the framework, ensure the following:
- Python: Version 3.8 or later.
- CPLEX Solver: For high-performance optimization.
- Pulp Library: For modeling LP problems.
# Clone the repository
git clone https://github.com/your-username/adsld-framework.git
cd adsld-framework
# Install dependencies
pip install -r requirements.txtRun the main solver:
python adsld_solver.py --mode originalFor batch-based optimization:
python adsld_solver.py --mode batch --batch_size <batch_size>- Input: Simulated multi-order data (in JSON/CSV).
- Output: Optimal or near-optimal solutions stored as
.csv.
The core problem is modeled as a linear program: [ \text{Minimize: } \langle C, X \rangle ] Subject to:
- Order Constraints: ( A'X = b' )
- Inventory Constraints: ( E'X \leq d )
- Feasibility: ( 0 \leq X \leq 1 )
- Time Complexity:
( O(J \cdot |Q| \cdot (|M|)^{3.5} \cdot L) ) - Space Complexity:
( O(N + |A| + |E| + |b| + |d|) )
- Convergence: Achieved through iterative multiplier updates.
- Scalability: Designed to handle up to tens of millions of variables efficiently.
- Optimal Value: Measures cost efficiency.
- Constraint Satisfaction: Evaluates adherence to constraints.
- Execution Time: Assesses computational efficiency.
- Scalability: Demonstrated efficient handling of large-scale datasets.
- Convergence: Achieves near-optimal solutions within acceptable iterations.
- Flexibility: Adapts to varying problem scales and computational resources.
We welcome all contributions! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature-name
- Commit and push changes:
git commit -m "Add feature" git push origin feature-name - Submit a pull request on GitHub.
For questions, feedback, or support:
- Yinsheng Song: yson6207@uni.sydney.edu.au
- IBM CPLEX Optimizer: Documentation
- Pulp Library: GitHub