MOP-ND ๐ด
๐ด Overview
MOP-ND is a university data analytics and optimization project where I implemented a Multi-commodity Orienteering Problem with Network Design (MOP_ND) model for the "Data Analytics and Data Driven Decision" course at the University of L'Aquila.
The project studies how to design high-quality origin-destination itineraries for different classes of cycle-tourists, inspired by the paper "Designing single origin-destination itineraries for several classes of cycle-tourists".
๐ฆพ Repository
Code and notebooks: github.com/gianlucarea/mop-nd
Why this project matters
Route planning in cycling tourism is a multi-objective problem: distance, attractiveness, and user preferences often pull in different directions. The goal of this project was to model that tradeoff and compute practical itineraries for multiple user groups in a shared network.
In practice, the work focuses on:
- โDesigning routes for multiple tourist classes
- โOptimizing network design decisions for cycling scenarios
- โBalancing route quality, travel constraints, and preferences
- โMaximizing overall satisfaction across itineraries
๐ ๏ธ Tech Stack
- โPython for model implementation and experimentation
- โJupyter Notebooks for interactive analysis
- โGurobi as the mathematical optimization solver
- โNumPy for numerical operations
- โNetworkX for graph and network modeling
- โMatplotlib for visualizing outputs and comparisons
- โItertools for combinatorial utilities
Modeling workflow
The project is organized as an experimentation workflow in notebooks:
- โDefine the network and candidate routes.
- โEncode constraints and objective terms for each tourist class.
- โRun optimization with Gurobi.
- โCompare candidate solutions and interpret tradeoffs.
- โVisualize resulting itineraries and key metrics.
๐งช Getting Started
Requirements:
- โGurobi (optimization solver)
- โNumPy
- โNetworkX
- โMatplotlib
- โItertools
- โJupyter
The repository is notebook-driven and aimed at reproducible analysis. After installing dependencies (and a valid Gurobi setup), open the notebooks and execute cells in order to reproduce model runs and charts.
๐ Learn More
For additional context on the optimization formulation, refer to the linked paper and the implementation notebooks in the repository.
What I learned
- โHow to translate research-style formulations into executable optimization models
- โHow to reason about tradeoffs between competing objectives in network design
- โHow to structure notebook experiments so results are easier to compare and explain
๐ค Contributing
Contributions are welcome. If you want to improve the formulation, datasets, or notebook clarity, feel free to open a pull request.
- โFork the repository
- โCreate a feature branch:
git checkout -b feature-name - โCommit your changes:
git commit -m 'Add new feature' - โPush to the branch:
git push origin feature-name - โOpen a Pull Request
Please ensure your code follows the existing style and includes appropriate documentation.
๐ง Contact
For questions, feedback, or collaboration opportunities, feel free to reach out:
- โLinkedIn: Gianluca Rea
- โEmail: gianlucarea.work@gmail.com
This project reflects my interest in optimization, applied data science, and decision-support systems for real-world mobility problems.