Welcome to the Mercado Libre First Optimization Challenge repository! This challenge is part of the LVII Brazilian Symposium on Operations Research (SBPO 2025). For further details, please read the post on Medium (Portuguese version; Spanish version). In this repository, you will find the base code for the framework, documentation, and other resources related to the challenge.
- 17-01-2025: Base framework code, documentation and dataset
A
.
Spanish and Portuguese versions of the challenge rules and problem description can be found in the docs
directory:
-
Spanish:
-
Portuguese:
src/main/java/org/sbpo2025/challenge
Challenge.java
⟶ Main Java class for reading an input, solving the challenge, and writing the output.ChallengeSolver.java
⟶ Java class responsible for solving the wave order picking problem. Most of the solving logic should be implemented here.ChallengeSolution.java
⟶ Java class representing the solution to the wave order picking problem.
datasets/
⟶ Directory containing input instance files.run_challenge.py
⟶ Python script to compile code, run benchmarks, and evaluate solutions.checker.py
⟶ Python script for evaluating the feasibility and objective value of solutions.
- Java 11
- Maven
- Python 3.8 or higher
- CPLEX 22.11 (optional)
- OR-Tools 4.11 (optional)
- Clone the repository:
git clone https://github.com/mercadolibre/challenge-sbpo-2025
- Set the paths to CPLEX and OR-Tools libraries in
run_challenge.py
if needed, e.g.:cplex_path = "$HOME/CPLEX_Studio2211/opl/bin/arm64_osx/" or_tools_path = "$HOME/Documents/or-tools/build/lib/"
To compile the code and run benchmarks, use the following command:
python run_challenge.py <source_folder> <input_folder> <output_folder>
Where <source_folder>
is the path to the Java source code, more specifically, where the pom.xml
file is located.
In order to run this script you will need the timeout
(or gtimeout
on macOS) command installed. You can install it using apt-get install coreutils
(or equivalent) on Linux or brew install coreutils
on macOS.
To check the feasibility and objective value of a solution, use the following command:
python checker.py <input_file> <solution_file>
-
Compile and run benchmarks:
python run_challenge.py src/main/java/org/sbpo2025/challenge src/main/resources/instances output
-
Check solution viability:
python checker.py src/main/resources/instances/instance_001.txt output/instance_001.txt